1.实例的主要内容
本节旨在通过分析SDRAM控制器,介绍了SDRAM的基本工作模式。最后使用Modelsim对读写控制器进行仿真,帮助读者进一步了解一个真实的器件模块是如何进行Modelsim仿真的。· 可独立使用Modelsim仿真新工程。
SDRAM简介
在高速实时或者非实时信号处理系统当中,常常使用大容量存储器实现数据缓存。而大容量存储器的控制与使用是整个系统实现过程中的重点和难点之一。
SDRAM(同步动态随即访问存储器)具有价格低廉、精密度高、读写速度快等优点,从而成为数据缓存器的首选存储介质。但是SDRAM的结构与SRAM有很大的差异,其控制时序和机制也比较复杂,这就限制了SDRAM的使用范围。
下面我们首先对SDRAM进行简单介绍。
1.SDRAM信号
SDRAM器件的信号可以分为控制、地址和数据信号3类,具体定义如下表所示。
SDRAM信号
在上图中,控制器右端接口信号均为直接与SDRAM 对应管脚相连的信号
控制器左端的接口信号为与FPGA 相连的系统控制接口信号,定义如下。
· CLK:系统时钟信号。
· ADDR:系统给出的SDRAM 地址信号。
· DATAIN:系统用于写入SDRAM 的数据信号。
· DATAOUT:系统用于从SDRAM读出的数据信号。
· CMD[1:0]、CMDACK:系统和控制器的命令交互信号,参见表7.3。
· DM:数据Mask信号。
一般来说,SDRAM的读写控制时序可以分为初始化、写寄存器、自动刷新、突发模式读、突发模式写、整页读以及整页写等主要操作。具体的时序图可以查阅相关的器件数据手册,这里不再列出。
SDRAM的读写控制也可以由如图7.34所示的读写状态机表示。
在FPGA中,实现如下图所示的状态机,再利用已有的SDR SDRAM控制器即可实现对SDRAM器件的控制。
SDRAM控制器的Modelsim仿真
(1)打开ModelSim软件。
(2)创建工程。
如下图所示,在Modelsim中创建新工程,并设置工程的相关属性。
(3)添加设计输入。
若要创建新的文件就选择【Create New File】图标,若要添加已经存在的文件就选择【Add Existing File】图标,如图7.36所示。本实例中使用已经存在的SDRAM控制器源文件作为设计输入,添加后,在Workspace浏览器中可以看到如下图的设计输入列表。
(4)编译设计输入。
如下图所示,在任意一个源文件上单击右键,选择“Compile”/“Compile All”,对所有的源文件进行编译。
编译后,若有错误,Modelsim会在信息栏中显示出来。这时只要双击该错误,ModelSim就会自动打开该错误所在的文件,并定位到出现错误所在的位置附近。若编译正确通过,源文件后面的蓝色问号就替换成为绿色的对号,如上图所示。
(5)仿真。
在Workspace浏览器中选择“Library”复选页,单击Work左边的小加号。在弹出的子菜单里面找到仿真模块“sdram_test_tb”。双击或右键选择“Simulate”选项,ModelSim就会自动运行仿真,如下图所示。
(6)观察波形。
在Workspace浏览器中选择“Sim”复选页,可以看到仿真模块的实例列表,如下图所示。
如下图所示,右键单击顶层测试模块,选择“Add”/“Add to Wave”选项,将该仿真模块的所有实例添加至波形观察器中。
添加后,ModelSim将会自动打开一个波形观察器,并将顶层测试模块的所有寄存器和接口添加进去。回到ModelSim的界面,在命令输入窗口中键入“run 20us”,开始执行仿真,如下图所示。
执行仿真后,经过相应的仿真时间,就可以在波形观察器中看见如图7.44所示的仿真结果。这个就是通过利用已有的SDRAM控制器及SDRAM器件模型,由用户编写对SDRAM控制器的状态机控制后得到的仿真结果。
小结
本节对数字系统中常用的存储器SDRAM做了初步的介绍,并在Modelsim中实现了对SDRAM控制器的仿真。通过这个实例,读者能够掌握分立器件是如何与FPGA逻辑实现Modelsim联合仿真的。
在大型的系统设计中,在系统硬件实现前对系统进行仿真是非常必要的。而这个仿真又不仅仅局限在FPGA等可编程逻辑器件内部,与之相关的分立器件也是系统仿真的重要组成部分。因此掌握分立器件的联合仿真是一个非常重要的技能。
温馨提示:明德扬2023推出了全新课程——逻辑设计基本功修炼课,降低学习FPGA门槛的同时,增加了学习的趣味性
http://old.mdy-edu.com/chanpinzhongxin/peixunkecheng/2023/0215/1889.html
需要了解相关信息可以联系:吴老师18022857217(微信同步)