- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章SDRC_Lite内存控制器的仿真综合与硬件测试
第四章 SDRC_Lite内存控制器的仿真、综合与硬件测试
在第三章中讲述了SDRC_Lite内存控制器的实现原理与设计概要。本章将讲述它的Verilog实现,RTL仿真,FPGA综合以及FPGA硬件验证。
1 SDRC_Lite的Verilog实现
SDRC_Lite设计使用Verilog语言描述,兼容IEEE Std 1364-2001给出的verilog-2001标准。用于综合的RTL级设计文件中,只涉及assign、always、if、case四种语句;状态机的设计风格使用的是Altera推荐的风格;用于仿真的行为级测试文件中,使用了task语句,使测试更加面向任务;复杂且反复用到的逻辑编写为function,以增加代码的可读性;所有基本参数和导出参数放在独立文件中,其他设计或仿真文件使用include调用它,从而实现“全局参数”。
SDRC_Lite的设计概要已在第三章明确,Verilog语言描述完全以设计概要为基础。
2 SDRC_Lite的RTL仿真
本次仿真使用ModelSIM 6.5进行,dump出来的波形使用Debussy 5.4v9观察。
SDRC_Lite的大部分子模块都有单独的Testbench,经过了单独测试,此处不再赘述。这里,主要讨论SDRC_Lite的整体仿真。
2.1 仿真模型与参数设置
SDRC_Lite的整体仿真中,用到了Micron公司提供的SDRAM模型,以便模拟与SDRAM器件的交互:比如Mode Register设置、读出先前写入的数据等等。
该Micron SDRAM模型,对应型号为mt48lc4m16a2-7E的SDRAM芯片。它是一款64Mbit的SDRAM,其中与SDRC_Lite设计相关的参数值如下表:
SDRC_Lite参数名 含义 mt48lc4m16a2-7E的参数值 SDR_A_W SDRAM地址位宽 12 SDR_B_W SDRAM Bank地址位宽 2 SDR_R_W SDRAM 行地址位宽 12 SDR_C_W SDRAM 列地址位宽 8 SDR_D_W SDRAM数据位宽 16 SDR_M_W SDRAM数据Mask位宽 2 tRP 预充电延时(ns) 15 tRFC 刷新延时(ns) 66 tRCD ACT到列读写的延时(ns) 15 仿真的最小时间单位1ns,为精度为100ps。系统时钟定为100MHz,即周期为10ns,这个数值与实际应用的频率接近,也便于仿真。
为了保证指令和数据被SDRAM有效接收,一般要求SDRAM时钟相对于系统时钟有3ns的滞后。在Testbench中,此延时用延时赋值语句实现;FPGA验证中,用PLL核实现。
2.2 包含Micron Model的Testbench与仿真波形
Testbench包括读写控制单元(SDRC_MCB_TOP_TST_TRX16)、SDRC_Lite(MCB_TOP)、Micron Model三个部分。读写控制单元,使用readmemb语句从位流文件中载入位流,写入通过SDRC_Lite写入SDRAM,再回读出来。
整个过程中,SDRAM自动完成初始化的波形如下:
观察图中sdr_cs_n、sdr_ras_n、sdr_cas_n、sdr_we_n四个信号,可知SDRC_Lite依次向SDRAM发送了如下指令:PREA、8次REF、LMR。之后mcb_i_ready变为1,表示初始化完成。指令的间隔也没有问题,初始化完成前dqm为1,整个过程符合设计要求。
整个过程中,SDRAM读写的波形如下:
如上图,每当SDRC_Lite的mcb_busy为0时,读写控制单元通过mcb_bb发起突发传送开始信号。图中mcb_bl为2b01表示突发传送长度为8,读写操作的指令依次为:ACT、WR、WRA、ACT、WR、WRA、ACT、RD、RDA、ACT、RD、RDA,可见从系统端看来:发生了两次突发传送长度为8的读和两次突发传送长度为8写。指令的间隔也没有问题,指令序列输出符合指令状态机的设计意图。可以观察到写入的数据与读出的数据一致,限于篇幅此处不再贴放大的波形。
2.3 其他仿真测试
在另一个SDRC_Lite的testbench中,对长为4的读、长为8的读、长为4的写、长为8的写这四种请求进行了排列组合,观察了状态机的状态跳转。同时,还观察了刷新操作对系统端连续读写请求的影响。所有行为与设计要求符合,限于篇幅此处不再贴该Testbench的波形。
3 SDRC_Lite的FPGA综合
本次FPGA综合使用的是Quartus 10.1sp1,目标器件是Cyclone II ep2c8pq208c8。
综合时开启的优化选项包括:寄存器延时平衡(register
文档评论(0)