在工程路径下的文件夹“ ipcore_dir ”下,生成两个重要文件: rom_16x8.v : ip...

30
22/3/11 VLSI 系 系系 1 系系系系系系系系系系“ ipcore_dir” 系 系系系系系系系系系 ,: - rom_16x8.v IP 系系系系系 系系系系系系 - rom_16x8.ngc IP 系系系系系系系系系 Xilinx 系系系系系系 系系系系系系系 ,, 系系系系 §Xilinx IP Core — — 基基基 RAM 基基基 ROM

Upload: hope-combs

Post on 02-Jan-2016

246 views

Category:

Documents


8 download

DESCRIPTION

§Xilinx IP Core — — 基于块 RAM 的单口 ROM. 在工程路径下的文件夹“ ipcore_dir ”下,生成两个重要文件: rom_16x8.v : IP 的行为模型,用于功能仿真 rom_16x8.ngc : IP 综合产生的网表文件,是 Xilinx 自有文件格式,为二进制文件,且被加密. §Xilinx IP Core — — 基于块 RAM 的单口 ROM. clkdiv :时钟分频( 95HZ ) debounce :去抖电路 clock_pulse :单脉冲发生器 counter :地址计数器. - PowerPoint PPT Presentation

TRANSCRIPT

23/4/20 VLSI 系统设计 1

在工程路径下的文件夹“ ipcore_dir” 下,生成两个重要文件:

- rom_16x8.v : IP 的行为模型,用于功能仿真

- rom_16x8.ngc : IP 综合产生的网表文件,是 Xilinx 自有文件格式,为二进制文件,且被加密

§Xilinx IP Core — — 基于块 RAM 的单口ROM

23/4/20 VLSI 系统设计 2

clkdiv :时钟分频( 95HZ )

debounce :去抖电路

clock_pulse :单脉冲发生器

counter :地址计数器

§Xilinx IP Core — — 基于块 RAM 的单口ROM

23/4/20 VLSI 系统设计 3

§Nexys3TM 主要模块的设计( 1 )— — 按键

按下任何按钮,在稳定之前都会有几毫秒得轻微抖动,导致输入在 0 和 1 之间变 化,而时钟沿到来时发生这种抖动,将导致将错误的值所存到寄存器中。

上图为基于移位寄存器的去抖电路,时钟信号 clk 必须足够低,这样开关都动在 3 个时钟周期前即可结束。

只有输入信号在连续 3 个时钟周期都为 1 时,输出才为 1 ,从而去除抖动。

按键去抖电路

23/4/20 VLSI 系统设计 4

§Nexys3TM 主要模块的设计( 1 )— — 按键

单脉冲生成器

23/4/20 VLSI 系统设计 5

基于块 RAM 的单口 ROM :

- 利用 CORE Generator 创建一个大小为 16×8bit 的基于块 RAM 的单口 RAM 。

- 分别用按钮 btn[0] 和 btn[1] 控制写 RAM 和读 RAM 。每按一次 btn[0] ,将写入地 址 +1 ,并在写使能的控制下,将 8 个 slide switch 表示的 8 位数据写入的RAM 相 应地址;每按一次 btn[1] ,将读取地址 +1 ,从 RAM 相应地址读取一个 8 位数据, 用 7 段数码管显示。此外,用 LED 灯显示写地址和读地址。

- Tips :每当使用一个新 IP 的时候,需要仔细阅读 Data Sheet ,保证配置和使 用的正确性、高效性。

§Xilinx IP Core — — 基于块 RAM 的单口RAM

23/4/20 VLSI 系统设计 6

§Xilinx IP Core — — 基于块 RAM 的单口RAM clkdiv :时钟分频( 95HZ )

debounce :去抖电路

clock_pulse :单脉冲发生器

counter :读 / 写地址计数器

sel_addr : RAM 地址生成器

binbcd8 : 8 位二进制转 BCD

23/4/20 VLSI 系统设计 7

存储器类型

时钟设置(双端口 RAM/ROM )

同步时钟 / 异步时钟

字节写使能

RAM/ROM 构造算法

§Xilinx IP Core — — 基于块 RAM 的单口RAM

23/4/20 VLSI 系统设计 8

单端口 ROM 单端口 RAM单端口 RAM

简单双端口RAM

双端口RAM

一个读端口( A )一个写端口( B )

两套完全独立的读写端口

Memory Type 配置§Xilinx IP Core — — 基于块 RAM 的单口RAM

23/4/20 VLSI 系统设计 9

Write Enable 配置

Write Enable: ( 写字节使能位 ) 允许将向地址指定的 RAM 单元内,写入特定字节

- 8bit 宽度:每个字节不带奇偶校验位,存储单元宽度必须是 8 的整倍数。- 9bit 宽度:每个字节带 1 位奇偶校验位,存储单元宽度必须是 9 的整倍数。

WE[N-1:0] : N 是写入数据的字节数,写操作过程中,输入数据对应为“ 1” 的字 节被写入存储器。

§Xilinx IP Core — — 基于块 RAM 的单口RAM

23/4/20 VLSI 系统设计 10

Memory Algorithm 配置

最小面积算法:使用最少数目的块 RAM 基元,同时减少输出端多路分支数目。

最低功耗算法:减少读写期间被访问的块 RAM 的数目。

固定基元( primitives )算法:允许设计者选定块 RAM 基元类型。

§Xilinx IP Core — — 基于块 RAM 的单口RAM

23/4/20 VLSI 系统设计 11

设置存储器宽度( width )

设置存储器深度( depth )

表示端口读 / 写操作的关系- Write First- Read First- No Change

对于双端口 RAM ,当发生地址 冲突时,要特别注意该项配置

§Xilinx IP Core — — 基于块 RAM 的单口RAM

23/4/20 VLSI 系统设计 12

Operating Mode 配置

Write First Mode

§Xilinx IP Core — — 基于块 RAM 的单口RAM

23/4/20 VLSI 系统设计 13

Operating Mode 配置

Read First Mode

§Xilinx IP Core — — 基于块 RAM 的单口RAM

23/4/20 VLSI 系统设计 14

Operating Mode 配置

No Change Mode

§Xilinx IP Core — — 基于块 RAM 的单口RAM

23/4/20 VLSI 系统设计 15

设置输出端口寄存器

存储器初始化

§Xilinx IP Core — — 基于块 RAM 的单口RAM

23/4/20 VLSI 系统设计 16

Optional Output Registers 配置

为块 RAM/ROM 的输出端口设置寄存器,以提升其性能(工作频率)

- block ram primitive 的输出端设置寄存器- 整个 memory 的输出端设置寄存器

配置寄存器将使 RAM/ROM 的读操作延长 1 个时钟周期

减少 block ram 基元 clock-to-out 延迟对性能的影响

分离多路选择器延迟对性能的影响

§Xilinx IP Core — — 基于块 RAM 的单口RAM

23/4/20 VLSI 系统设计 17

设置复位 / 置位端

§Xilinx IP Core — — 基于块 RAM 的单口RAM

23/4/20 VLSI 系统设计 18

仿真时,发生读 / 写,写 / 写冲突时产生警

§Xilinx IP Core — — 基于块 RAM 的单口RAM

23/4/20 VLSI 系统设计 19

使用双端口 RAM 的问题 — — 冲突

对于双端口 RAM 而言,两个端口是相互独立并且等价的,但两个端口上的地址相同时(访问同一存储单元)就会发生数据冲突

采用异步时钟:当一个端口在写数据时,另一个端口不可能同时触发写 / 读数据

采用同步时钟:- 写写冲突:发生在两个端口同时向同一个存储单元写数据,造成存储单元 中的数据不确定;当设置了写字节使能后,向同一个存储字不同的字节单 元同时写数据,不发生写写冲突。

- 读写冲突:发生在两个端口同时向同一个存储单元发出读 / 写请求,这时存 储单元的内容会被写端口更新,但会造成输出数据的不确定,取决于 operating mode 的设置

READ_FIRST MODE :读端口数据会被正确读出。 WRITE_FIRST/NO CHANGE MODE :读端口数据不会被正确读出, 为不确定值,并且对于写字节使能,被更新的字节不会被正确读出。

§Xilinx IP Core — — 基于块 RAM 的单口RAM

23/4/20 VLSI 系统设计 20

使用双端口 RAM 的问题 — — 冲突

写写冲突

读写冲突

§Xilinx IP Core — — 基于块 RAM 的单口RAM

ADDRA = ADDRB=0 并且 B 是读端口

ADDRA = ADDRB=0

23/4/20 VLSI 系统设计 21

§Xilinx IP Core — — Clock Wizard (分频电路) Spartan 6 中主要包含三类时钟资源

DCM ( Digital Clock Management ) PLL ( Phase locked loop ) 各类 Buffer

DCM 是基于 DLL ( Delay locked loop )的时钟管理和控制模块,可实现时 钟的延时、频率的合成、时钟相位调整等工作。

PLL 可以产生不同频率、不同相位的高质量信号。

DLL 和 PLL 的差别 DLL主要是用于产生一个精准的时间延迟,优势在于抑制 skew PLL 优势在于抑制 clock jitter DLL 是数字电路; PLL 是模拟电路

对于大多数 FPGA 设计两者区别不大,可利用 clock wizard实现自动化选择

23/4/20 VLSI 系统设计 22

§Xilinx IP Core — — Clock Wizard (分频电路)

23/4/20 VLSI 系统设计 23

§Xilinx IP Core — — Clock Wizard (分频电路)

设置输入时钟频率

允许的时钟范围

23/4/20 VLSI 系统设计 24

§Xilinx IP Core — — Clock Wizard (分频电路)

设置分频 / 倍频时钟

23/4/20 VLSI 系统设计 25

§Nexys3TM 主要模块的设计 (2) — Cellular RAM

Cellular RAM : MICRON公司出品的 PSRAM 。

PSRAM : pseudo-static RAM ,伪静态随机存储器 内部的内存颗粒(一个单晶体管的 DRAM 储存格)跟 SDRAM 的颗粒相似, 但外部的接口跟 SRAM 的接口是一样的,不需要 SDRAM那样复杂的控制 器和刷新机制。

主要应用于手机,电子词典,掌上电脑等消费类电子产品,其体积小,功 耗低,价格只比相同容量的 SDRAM稍贵一点点,比 SRAM便宜很多,智 能手机基本采用 256MB 以上的 PSRAM ,很多采用 512MB 。

支持异步、同步、 burst (突发)三种工作模式。

Nexys 3TM板上的 Cellar RAM : 容量 16Mbytes , 23 位地址线, 16 位数据线,支持 8/16 位两种数据访问。

异步工作模式下,读 / 写周期为 70ns ;同步工作模式下,主频为 80MHZ 。

23/4/20 VLSI 系统设计 26

§Nexys3TM 主要模块的设计 (2) — Cellular RAM

output enablewrite enableclockaddress validwait

chip enablelower byte enable

upper byte enable

control register enable

DATA 为双向端口,控制时要特别注意

23/4/20 VLSI 系统设计 27

§Nexys3TM 主要模块的设计 (2) — Cellular RAM

23/4/20 VLSI 系统设计 28

§Nexys3TM 主要模块的设计 (2) — Cellular RAM异步工作模式:

异步读时序 异步写时序最少 70ns

23/4/20 VLSI 系统设计 29

§Nexys3TM 主要模块的设计 (2) — Cellular RAM双向端口的控制:是通过控制三态门来实现的

dinout

z

FPGA 内部 FPGA 外部 当 z=1 时,上面的通道导通,数 据从 FPGA 内部向外部器件输出。

当 z=0 时,上面的管子被置为高 阻态,数据不能从上面的管子输 出,此时数据只可以从下面的通 道由 FPGA 外部期间向 FPGA内 部输入。

inout dinout // 双向端口只能声明为 wire 类型 assign dinout = (z)? a : 1’bz

a

23/4/20 逻辑设计基础 30

§Nexys3TM 主要模块的设计 (2) — Cellular RAM 设计一个 Cellular RAM 控制器;

以 80ns 的速度向 Cellular RAM 写入数据; 以 1s左右的速度从 Cellular RAM 中读出数据,并在 7 段数码管上进行显示。

采用 UltraEdit参看所生成的二进制文件