SDRAM控制器的Verilog建模之一
前言:作为经典存储器的三剑客中的flash和sram已经建模测试过了,虽然现在都已经ddr2,ddr3,667MHZ、1333MHZ的天下了,但是接下这周来准备写一下sdram的controller。虽然本科生的时候很早就接触过flash,sram也听过sdram,但是flash和sram一般是作为单片机的一部分集成在内部,因此他们的总线基本被优化成指令,再者sdram的时钟一般100MHZ,用低速的微控制器驱动着实让sdram深受委屈。
这次要驱动的sdram芯片是ISSI的IS42S16400D-7TL。刚刚接触sdram也是一头雾水,厚厚的手册,满满的英文。不过还好看了网上一片解读sdram比较透彻的文章,没有名字,最后作者打了个sdram和仓库的比喻比较生动。基本看完“《sdram和仓库》”这篇解析sdram的文章之后看手册就不会太陌生,因为毕竟对于第一接触sdram的人来说,一下子看到precharge,write_recovery,refresh等词语会比较陌生。基本的概念不做解释,所以读本文的前提是对sdram有了较深的理解。
设计思路:手册阅读的技巧已经在前一篇norflash控制器建模中有详细解释,这一次无非就是sdram状态机制会比norflash或者sram更复杂一点。复杂的技术难点主要有2处:第一sdram是高速存储读取数据的芯片,操作时序更快于sdram或者flash,因此如何安排控制手册里的时序参数(Trcd,Twr)等比较复杂;另外一点就是sdram是需要定时刷新,如何设计一个合适的刷新机制也是一个技术点。只要相信并且看懂按照手册,就可以正确操作三总线得到好的结果。
手册关键参数图表摘要:
(a)指令真值表,其中2个nop区别在于,第一个nop指令用于器件上电电压稳定之前控制总线命令,后一个nop是用于模块除了上电状态以外的空闲指令。

(b)sdram读写模式配置,由于工程需要本人配置成为顺序的页读写突发模式。其中页突发的输出有顺序和交织,可根据实际需要,比如摄像头采集的数据高位在后低位在前的或者其他big-endian和little-endian的应用,另外之前用fft的ip核求解快速傅里叶变换时也有过使用交织的输出。

(c)时序参数图略,基本化简时序图就靠它了
(d)页突发读写习惯时序图


注:测试和仿真会在后续编写。以及最重要的在过程中遇到的问题和相应解决会标注在下一篇探讨。
SDRAM控制器的Verilog建模之一的更多相关文章
- Norflash控制器的Verilog建模之一
摘要:今天驱动一款SPANSION公司生产的norflash——S29AL032D70,没有别的参考资料,大致了解一下norflash的内部cmos电路架构以及其用途之后,直接看手册吧. 如何看手册: ...
- I2C控制器的Verilog建模之一
前言:之前申请了ADI公司的一款ADV7181CBSTZ的视频解码芯片,正好原装DE2板子安的是同系列的ADV7181BBSTZ.虽然都是ADV7181的宗出,但是寄存器配置等等还是有些诧异,引脚也不 ...
- SDRAM驱动篇之简易SDRAM控制器的verilog代码实现
在Kevin写的上一篇博文<SDRAM理论篇之基础知识及操作时序>中,已经把SDRAM工作的基本原理和SDRAM初始化.读.写及自动刷新操作的时序讲清楚了,在这一片博文中,Kevin来根据 ...
- Norflash控制器的Verilog建模之二(仿真)
前言:经过几天修改,norflash控制器基本已经完成,通过仿真.完整的norflash包含2个模块:直接操作硬件的norflash_ctrl.v与控制ctrl模块的驱动norflash_driver ...
- 异步SRAM控制器的Verilog建模
前言:sram顾名思义静态随机存储器,分为asram异步型和ssram同步型.这里驱动DE2上一块ISSI公司的512KB的asram. 设计思路:因为实际应用中单字节读写效率不高,所以本设计中仿照s ...
- I2C控制器的Verilog建模之三(完结版)
前言:终于到了测试篇,不过悲剧了一下.按照之前<二>里面的思路,在顶层用一个复用器驱动读写独立模块的I2C总线确实失败.虽然综合过去了,不过警告里已经说明:底层的2个原本是inout三态口 ...
- Norflash控制器的Verilog建模之三(測試)
前言:回校了,辦好手續就著手寫測試篇.初步的norflash控制器已經完成,通過硬件測試.目前的norflash完成扇区块擦除.单字节写.单字节读3个功能.博文最后附上源码. 总结:和之前的博文一样, ...
- VGA逐行扫描控制器的Verilog建模
前言:因为VGA是一种模拟图像传输数据接口,所要将数字信号用DAC转换成模拟量.本文用的一款ADI公司高精度的视频IC,实则一款高带宽的视频DAC.因为VGA时序较为简单,并且网上的VGA驱动基本大同 ...
- I2C控制器的Verilog建模之二
前言:接着上一篇的I2C写操作,今天要实现一个I2C的读操作.虽然在ADV7181B配置内部寄存器时没有必要使用到读操作,但是为了进一步确认寄存器是否在I2C写模块下被正确配置,这一步是必不可少的. ...
随机推荐
- 新建STM32工程
1) 2)保存 3)选择公司和芯片的型号,STM32F103C8T6,64kB Flash, 20kB SRAM. 4)手动添加启动代码 5)新建如下文件夹 6)回到工程,选中target,右键Add ...
- http权威指南
我的plan :one day two hour,one week done!!!争取不超过2周看完
- 通过js的console优雅的将php调试信息输出
function consoleLog($val){ $debug = debug_backtrace(); unset($debug[0]['args']); echo '<script> ...
- nodejs--模块
在客户端可以将所有的javascript代码分割成几个JS文件,然后在浏览器中将这些JS文件合并.但是在nodejs中是通过以模块为单位来划分所有功能的.每一个模块为一个JS文件,每一个模块中定义的全 ...
- 2016HUAS_ACM暑假集训4A - 递推
利用组合公式C(n,m)=C(n-1,m)+C(n-1,m-1).也就是从n个数里面选择m个数.按递增方式放在每一层循环. 杨辉三角+二项式定理,还真是挺有“意思”的一道题.说实话,非原创.见谅... ...
- DBC表名说明
http://www.afkwower.com/forum.php?mod=viewthread&tid=1277&extra=page%3D2由天堂大神提供Achievement.d ...
- 怎样用vs 2008 编译C程序
在大学里都习惯了vc6.0,但是它的集成度并不好,刚试着用vs2008,简单说一下用vs2008编译c的方法吧 首先,在file中新建工程project ,确定之后,会出现新工程(new projec ...
- 用帝国CMS时遇到的问题
今天用帝国CMS时出现了如下提示: Table 'tuanwei.phome_ecms_twnews_index' doesn't exist delete from ***_ecms_t 删除栏目时 ...
- rhel 5.8 and 6.4 yum配置
rhel 5.8 and 6.4 yum配置 6.4 [Packages]name=Packagesenabled=1gpgcheck=0baseurl=file:///iso 5.8 [Packag ...
- tomcat集群
apache整合tomcat部署集群 http://www.cnblogs.com/God-froest/p/apache_tomcat.html 今天看到"基于apache的tomcat负 ...