300 likes | 401 Views
§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 :地址计数器.
E N D
§Xilinx IP Core — — 基于块RAM的单口ROM • 在工程路径下的文件夹“ipcore_dir”下,生成两个重要文件: • rom_16x8.v:IP的行为模型,用于功能仿真 • rom_16x8.ngc:IP综合产生的网表文件,是Xilinx自有文件格式,为二进制文件,且被加密 VLSI系统设计
§Xilinx IP Core — — 基于块RAM的单口ROM • clkdiv:时钟分频(95HZ) • debounce:去抖电路 • clock_pulse:单脉冲发生器 • counter:地址计数器 VLSI系统设计
§Nexys3TM主要模块的设计(1)— — 按键 按键去抖电路 • 按下任何按钮,在稳定之前都会有几毫秒得轻微抖动,导致输入在0和1之间变 • 化,而时钟沿到来时发生这种抖动,将导致将错误的值所存到寄存器中。 • 上图为基于移位寄存器的去抖电路,时钟信号clk必须足够低,这样开关都动在 • 3个时钟周期前即可结束。 • 只有输入信号在连续3个时钟周期都为1时,输出才为1,从而去除抖动。 VLSI系统设计
§Nexys3TM主要模块的设计(1)— — 按键 单脉冲生成器 VLSI系统设计
§Xilinx IP Core — — 基于块RAM的单口RAM • 基于块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,保证配置和使 • 用的正确性、高效性。 VLSI系统设计
§Xilinx IP Core — — 基于块RAM的单口RAM • clkdiv:时钟分频(95HZ) • debounce:去抖电路 • clock_pulse:单脉冲发生器 • counter:读/写地址计数器 • sel_addr:RAM地址生成器 • binbcd8:8位二进制转BCD VLSI系统设计
§Xilinx IP Core — — 基于块RAM的单口RAM 存储器类型 时钟设置(双端口RAM/ROM) 同步时钟/异步时钟 字节写使能 RAM/ROM构造算法 VLSI系统设计
§Xilinx IP Core — — 基于块RAM的单口RAM Memory Type配置 单端口ROM 单端口RAM 单端口RAM 双端口 RAM 简单双端口 RAM 一个读端口(A) 一个写端口(B) 两套完全独立的读写端口 VLSI系统设计
§Xilinx IP Core — — 基于块RAM的单口RAM WriteEnable配置 • WriteEnable: (写字节使能位)允许将向地址指定的RAM单元内,写入特定字节 • 8bit宽度:每个字节不带奇偶校验位,存储单元宽度必须是8的整倍数。 • 9bit宽度:每个字节带1位奇偶校验位,存储单元宽度必须是9的整倍数。 • WE[N-1:0]:N是写入数据的字节数,写操作过程中,输入数据对应为“1”的字 • 节被写入存储器。 VLSI系统设计
§Xilinx IP Core — — 基于块RAM的单口RAM Memory Algorithm配置 最小面积算法:使用最少数目的块RAM基元,同时减少输出端多路分支数目。 最低功耗算法:减少读写期间被访问的块RAM的数目。 固定基元(primitives)算法:允许设计者选定块RAM基元类型。 VLSI系统设计
§Xilinx IP Core — — 基于块RAM的单口RAM • 表示端口读/写操作的关系 • -WriteFirst • -ReadFirst • NoChange • 对于双端口RAM,当发生地址 • 冲突时,要特别注意该项配置 • 设置存储器宽度(width) • 设置存储器深度(depth) VLSI系统设计
§Xilinx IP Core — — 基于块RAM的单口RAM OperatingMode配置 WriteFirstMode VLSI系统设计
§Xilinx IP Core — — 基于块RAM的单口RAM OperatingMode配置 ReadFirstMode VLSI系统设计
§Xilinx IP Core — — 基于块RAM的单口RAM OperatingMode配置 NoChangeMode VLSI系统设计
§Xilinx IP Core — — 基于块RAM的单口RAM 设置输出端口寄存器 存储器初始化 VLSI系统设计
§Xilinx IP Core — — 基于块RAM的单口RAM OptionalOutputRegisters配置 • 为块RAM/ROM的输出端口设置寄存器,以提升其性能(工作频率) • -blockramprimitive的输出端设置寄存器 • 整个memory的输出端设置寄存器 • 配置寄存器将使RAM/ROM的读操作延长1个时钟周期 分离多路选择器延迟对性能的影响 减少blockram基元clock-to-out延迟对性能的影响 VLSI系统设计
§Xilinx IP Core — — 基于块RAM的单口RAM 设置复位/置位端 VLSI系统设计
§Xilinx IP Core — — 基于块RAM的单口RAM 仿真时,发生读/写,写/写冲突时产生警告 VLSI系统设计
§Xilinx IP Core — — 基于块RAM的单口RAM 使用双端口RAM的问题 —— 冲突 • 对于双端口RAM而言,两个端口是相互独立并且等价的,但两个端口上的地址相同时(访问同一存储单元)就会发生数据冲突 • 采用异步时钟:当一个端口在写数据时,另一个端口不可能同时触发写/读数据 • 采用同步时钟: • 写写冲突:发生在两个端口同时向同一个存储单元写数据,造成存储单元 • 中的数据不确定;当设置了写字节使能后,向同一个存储字不同的字节单 • 元同时写数据,不发生写写冲突。 • 读写冲突:发生在两个端口同时向同一个存储单元发出读/写请求,这时存 • 储单元的内容会被写端口更新,但会造成输出数据的不确定,取决于 • operatingmode的设置 • READ_FIRST MODE:读端口数据会被正确读出。 • WRITE_FIRST/NOCHANGEMODE:读端口数据不会被正确读出, • 为不确定值,并且对于写字节使能,被更新的字节不会被正确读出。 VLSI系统设计
§Xilinx IP Core — — 基于块RAM的单口RAM 使用双端口RAM的问题 —— 冲突 ADDRA = ADDRB=0 写写冲突 ADDRA = ADDRB=0并且B是读端口 读写冲突 VLSI系统设计
§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实现自动化选择 VLSI系统设计
§Xilinx IP Core — — Clock Wizard(分频电路) 设置输入时钟频率 允许的时钟范围 VLSI系统设计
§Xilinx IP Core — — Clock Wizard(分频电路) 设置分频/倍频时钟 VLSI系统设计
§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。 VLSI系统设计
§Nexys3TM主要模块的设计 (2) — Cellular RAM DATA为双向端口,控制时要特别注意 output enable write enable clock address valid wait chip enable lower byte enable upper byte enable control register enable VLSI系统设计
§Nexys3TM主要模块的设计 (2) — Cellular RAM VLSI系统设计
§Nexys3TM主要模块的设计 (2) — Cellular RAM 异步工作模式: 最少70ns 异步读时序 异步写时序 VLSI系统设计
§Nexys3TM主要模块的设计 (2) — Cellular RAM 双向端口的控制:是通过控制三态门来实现的 FPGA外部 FPGA内部 z • 当z=1时,上面的通道导通,数 • 据从 FPGA内部向外部器件输出。 • 当z=0时,上面的管子被置为高 • 阻态,数据不能从上面的管子输 • 出,此时数据只可以从下面的通 • 道由FPGA外部期间向FPGA内 • 部输入。 • inout dinout • //双向端口只能声明为wire类型 • assign dinout = (z)? a : 1’bz a dinout VLSI系统设计
§Nexys3TM主要模块的设计 (2) — Cellular RAM • 设计一个Cellular RAM控制器; • 以80ns的速度向Cellular RAM写入数据; • 以1s左右的速度从Cellular RAM中读出数据,并在7段数码管上进行显示。 采用UltraEdit参看所生成的二进制文件 逻辑设计基础