zl程序教程

您现在的位置是:首页 >  其他

当前栏目

FPGA-SDRAM设计学习(一)简单概念和操作介绍

概念学习 操作 简单 介绍 设计 FPGA
2023-09-14 09:13:03 时间

之前学过DDR然后断更了,现在买了个明德扬的视频课来重新学习下,付费就是赚便宜,开源骚客的也挺好,大家自己看着选择吧,个人听明德扬比较习惯(没收广告费哈哈哈) 

SDRAM理解:

下图可以帮助大家理解SDRAM是原理,个人理解很像程序语言的数组的概念,其实就是把一个存储器分成了几个bank,一个bank里面可以存储一些数据,这里对每个bank的读写存储是给出了行列地址进行索引。

 

 几个基本的概念:

 

1、容量

存储单元的数量:行数X列数(得到一个L-BANK的存储单元的数量)X L-BANK的数量

产品文档中会用M X W的方式来表示芯片的容量

M是芯片中的存储单元的总数

W是每个存储单元的容量

2、初始化

SDRAM 上电后要第一步要初始化。

3、突发burst

突发读写

      突发burst是指的是同一行中相邻的存储单元连续进行数据传输的方式,只需要给出读写命令和开始地址,就就开始读/写一定长度的数据,地址自动递增。

突发读操作时序

 

突发长度

      连续传送石所涉及到的存储单元列的数量就是突发长度(Burst Lengths)简称BL,常见的突发长度为1、2、4、8和全页(一行)。

4、刷新refresh

      存储阵列是需要不断刷新来保证存储的数据不会丢失,由于SDRAM是电容存储数据,时间一长就会漏电丢失。

刷新可以认为是:将一行的数据读出来再存进去

  • 储存时间

公认的标准:电容存储数据的时间是64ms,也就是每隔64ms,所有的单元都要刷新一遍 。

  • 刷新命令

 

  • 刷新周期

      刷新周期:64ms/BANK行数,例如,1个bank的行数为4096,那么至少每隔64ms/4096=15.625us就要刷新一次。

  • 刷新时间

     给出刷新命令,SDRAM就进行刷新操作,一般需要9个时钟周期时间(具体参看datasheet)。此时不能对SDRAM进行任何操作。

  • 自动刷新(auto refresh)AR

     正常工作状态下的刷新

  • 自刷新(self refresh)SR

      休眠状态下的刷新

5、预充电precharge

     由于SDRAM的寻址的独特性,所以在进行完读写操作后,如果要对同一L-Bank的另一行进行寻址,就要将原来有效(工作)的行进行关闭,重新发送行/列地址。L-BANK关闭现有的工作行,准备打开新行的操作就是预充电。

      可以设置让芯片每次进行读写操作后,自动进行预充电,这样设计时,只需要进行等待几个时钟周期即可

6、模式寄存器

      SDRAM支持多个工作模式,突发相关的有:是否突发读写,突发长度,突发类型等,还可以配置延时(latency)

7、SDRAM命令

通过CKE、CS、RAS、CAS、WE等信号的组合,就可以产生下面命令:

  • NOP:空指令
  • ACTIVE:读写操作之前的激活操作
  • READ:读
  • WRITE:写
  • BURST TERMINATE:突发读写结束命令
  • PRECHARGE:预充电命令
  • AUTO REFRESH:自动刷新
  • SELFREFRESH:自刷新
  • LOAD MODE REGISTER:修改模式寄存器