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是用于模块除了上电状态以外的空闲指令。

    SDRAM控制器的Verilog建模之一

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

    SDRAM控制器的Verilog建模之一

  (c)时序参数图略,基本化简时序图就靠它了

  (d)页突发读写习惯时序图

  SDRAM控制器的Verilog建模之一

  SDRAM控制器的Verilog建模之一

注:测试和仿真会在后续编写。以及最重要的在过程中遇到的问题和相应解决会标注在下一篇探讨。

上一篇:SSH/SSL 源码编译安装简易操作说明


下一篇:我与solr(二)--导入mysql数据库