zoukankan      html  css  js  c++  java
  • SDRAM(4):写操作

    一、SDRAM 写状态

    1、SDRAM 内部状态机

      粗线表示自动跳转,细线表示满足条件才跳转。经过前面的设计我们此时来到了 IDLE 状态,要完成写模块设计就要考虑两个问题:

    (1)IDLE 状态到 WRITE 状态

      ① 在 IDLE 状态需要先给 ACT 命令激活某一行,此时处于 Row Active 状态。

      ② 在 Row Active 状态之后,给 Write 命令则会进入 WRITE 状态。

      ③ 在 WRITE 状态后,再给一次 Write 命令,就可以继续写入数据。

    (2)WRITE状态到 IDLE 状态 (经常需要进行刷新操作,必须从 IDLE 状态进入)

      ① 在 WRITE 状态给 PRE 命令,则 SDRAM 将跳出 WRITE 状态进入 Precharge 状态;
      ② 在 Precharge 状态后,会自动进入 IDLE 状态。
     
      注:WRITEA 状态不使用,因为当处于 WRITEA 状态时,它会自动的进入到 Precharge 状态。想要继续进行写操作就要先再次激活行,也就是说 WRITEA 比在 WRITE 状态的工作效率要低很多。
     
    2、退出 WRITE情况
      在 WRITE 状态时,有 3 种情况是我们必须要退出 WRITE 状态的。
    (1)本次设计已经完全被写完。都写完了肯定得退出 WRITE 状态啊,还折腾啥呢。
    (2)SDRAM 需要进行自刷新操作。64ms内至少4096次的刷新操作是必须的,要刷新了就麻利的退出 WRITE 状态去刷新。
    (3)数据未写完,但已经填满了 SDRAM 的一行,需要激活下一行。因为每次激活都是激活的一行,所以要换行时得退出 WRITE 进行下一行的激活。
     
    二、写操作设计时序分析
    1、WRITE 命令时序图
      由写命令时序图中我们可以得到如下信息:
    ① 其命令为 {CS_n,RAS_n,CAS_n,WE_n} = {4‘b0100}。
    ② A0-A9 提供 cow 列地址;
    ③ A11和A12不用管;
    ④ A10控制是否在突发写完成之后立即执行预充电,即关闭当前行操作。为0时不关闭当行,使其仍处于激活状态,方便紧接着对该行进行新的读写操作。为1时就是进入了 WRITEA 状态,会立即执行预充电即关闭当前行,导致下次进行写又得重新激活该行。本次设计我们 A10 为 0。
    ⑤ BA0-BA1 提供 Bank 地址。
       (这里没有提及 row 地址,是因为在 WRITE 前是 ROW ACTIVE,这就已经激活了行,因此不用再次激活。)
     
    2、WRITE 总时序图
    ① 给出一个 ACT 命令,同时指明 Bank 和 row。然后等待时间 tRCD。
    ② tRCD 时间后,给出一个 WRITE 命令,同时指明 Bank 和 col,A10为低电平,然后等待4个时钟周期(突发长度为4)。
    ③ 不想写了就给一个 PRECHARGE 命令,跳出写状态。如果需要重新写,则要给一个 ACT 命令。
     
    三、设计写模块
    1、写模块状态转移
      本次设计在 SDRAM 内写入两行数据,方面查看换行等操作的变化。其内部状态机如下所示:
    2、写模块时序设计
      本次设计的写模块时序图如下所示:
      具体代码就不贴了。
     
    四、仿真验证
      本次仿真只需要在 testbench 中设计一个 wr_trig 信号触发一下写即可,写数据则直接在写模块内部手动赋值,看看有没有错即可。
     

    参考资料:[1]威三学院FPGA教程

            [2]开源骚客FPGA教程

  • 相关阅读:
    Linux安装oracle 10g常见问题之——ORA-01078,LRM-00109,ORA-01102
    Linux安装oracle 10g常见问题之——OUI-25031
    C#中static静态变量的用法
    让DIV中的内容水平和垂直居中
    json对象与json字符串互换
    AJAX请求 $.post方法的使用
    .NET(c#)new关键字的三种用法
    创建数据库和表的SQL语句
    SQL、LINQ、Lambda 三种用法(转)
    AJAX中UPDATEPANEL配合TIMER控件实现局部无刷新
  • 原文地址:https://www.cnblogs.com/xianyufpga/p/12237443.html
Copyright © 2011-2022 走看看