在工程路径下的文件夹“ ipcore_dir ”下,生成两个重要文件: rom_16x8.v : ip...
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 PresentationTRANSCRIPT
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 系统设计 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 系统设计 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 系统设计 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 系统设计 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 系统设计 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