设为首页 加入收藏

TOP

关于SDRAM存储器在工程中的应用详解
2017-10-10 12:30:31 】 浏览:1673
Tags:关于 SDRAM 存储器 工程 应用 详解

    从开始应用SDRAM到工程中已经有两个月了,这两个月一直在仿真调试SDRAM在压缩工程中的读写操作。

  LPAQ压缩算法的硬件化实现很重要一点在于压缩过程中产生的大量HASH预测值,如何存储这些HASH值,以及快速的对这些数据进行读写操作,是整个压缩项目硬件化的性能关键点。

  好了,话不多说,先介绍官方文档上关于SDRAM的读写操作:

    1.SDRAM初始化除了开始的预充电操作,最重要的就是模式寄存器的设置。这个应该大部分可以在SDRAM控制器中进行修改:

   模式寄存器主要是用来设置突发长度,还有操作模式:是否进行突发读写操作。这个当然是根据工程的实际需要进行设置,一般都默认突发读写。

   2.读写操作

   首先要

   写操作,主要分为一个BANK连续写和多个BANK交替写两种情况。

   突发写,一次个地址连续写入BL个数据:

   连续写,不同的地址连续写数据:

   上面都是连续写的情况,当然如果只是一个地址写入数据,然后地址加一,在写入数据,这种连续的写操作不如使用DDR会得到更快的速度。

    如果是BANK地址交替的写操作,控制时序应该如下图所示:

   按照上图中操作的时候,还应该在SDRAM控制器中设置读写操作时 Addr[10] = 1,打开自动预充电操作。不然等到实际操作时会发现可能上一个BANK a, COL b中写入的

数据,在BANK a, COL c中读出来,原因就在于没有启动自动预充电,每次写入数据时,BANK激活后没有进行关闭操作,在下一次对该BANK进行读操作时,就会直接把打开的BANK

中寄存在S-AMP中的数据读取出来,造成错误的读操作。(为了调试这个问题,博主可是花了半个月时间...)。

    写入数据后进行预充电的时序图应该如下:

      上图中,tRP是预充电操作到下一次ACTIVE操作所需要的时间,具体时间需要查看所用SDRAM的手册上。在操作过程中,如果选择自动预充电模式,在读操作或者写操作完成后,必须留够大于等于tRP的时间,来保证读写操作完后,该BANK成功关闭,不然还是会出现读数据错误的情况。

      除了上面关于读写操作的时序需要遵守,在实际操作中,由于各个SDRAM控制器不同,需要注意控制器也许会产生操作命令的延时。就以博主使用的控制器举例来说,每次想控制器发送命令后,需要经过1clk后,控制器才把指令传给SDRAM。关于这一点最重要的体现就是在写入数据时,数据不是在发出write命令时写入,而是在发出write命令后一个CLK写入,必须仔细注意这一点,不然就会出错哦。下面贴一张我单独仿真SDRAM控制器的时序图吧:

     上图是我在仿真时测试出来的正确写操作时序:在发送ACTIVE(sdram_command = 7)时,必须保证地址已出现一个CLK。给出ACTIVE信号后,必须等待1个CLK( tRCD = 20ns),然后才能发出写信号。在写信号给出后1clk后给出需要写入的数据。上图的时序是对地址25'h13bfc60的写操作,SDRAM0写入的数据是16’h0300,而不是16‘h0030。这一点在实际工程中需要非常注意。

      然后是接下来的读数据测试。之前提过,如果需要BANK交替的读写操作,必须在控制器中设置自动预充电,在上图中可以看出在写命令,sdram_command = 1时,地址的第十位Addr[10] = 1,这样表示写完数据后会进行自动预充电操作。读数据也是一样的:

      在进行读操作时,也是先给ACTIVE命令,然后等待tRCD,然后给出读命令,然后经过tCL时间后,数据就会出现在数据总线上。需要注意的地方是:在发出读命令后,数据其实就出现在S-AMP上,只是需要等待tCL后数据信号才会经过放大出现在总线上。所以预充电操作时在读命令结束后立刻开始的,在读完后留出tRP(20ns)时间进行预充电操作。而读者会发现在上图中我留出了30ns进行预充电,这是因为控制器产生了10ns的延时,导致预充电实际上是在读命令结束后10ns才开始的。

      这篇博客写到这里差不多就该结束了,掌握了SDRAM读写自动预充电的操作,对SDRAM的读写操作基本就不存在问题。当然在实际工程中,SDRAM的读写速度真的算是很慢的,因为存在每次读写后的预充电操作,而DDR在操作时,由于BANK数据达到8个,BANK之间交替进行操作可以掩盖单个BANK的预充电时间。DRAM存储器在操作中都存在预充电操作,而SRAM是不存在预充电操作的,博主的下一步是研究cypress的QDR II + SRAM存储器,看看能否获得更高的读写速度。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇数据接口的同步方法 下一篇关于SDRAM存储器在工程中的应用详..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

最新文章

热门文章

C 语言

C++基础

windows编程基础

linux编程基础

C/C++面试题目