zoukankan      html  css  js  c++  java
  • 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)页突发读写习惯时序图

      

      

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

  • 相关阅读:
    git 一般的使用操作
    php 导出excel,csv
    安装sublime_text_3
    安装mongodb记录,mongo基本命令记录
    redis 安装记录
    YII2 activeform样式修改
    go 安装下载
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hbsjz/com.hbsjz.BaseMapActivity}:
    SQLServer创建触发器,更新表
    SQL Server触发器创建、删除、修改、查看示例步骤
  • 原文地址:https://www.cnblogs.com/loadomain/p/3298335.html
Copyright © 2011-2022 走看看