FPGA学习笔记——SDRAM初始化与自刷新模块

SDRAM——初始化与自刷新模块

SDRAM常用引脚

在这里插入图片描述我用的sdram芯片是IS42S16400F,它的每个bank有4096行,每行有256列,数据位宽为16,也就是每个bank有4096✖256✖16=16Mb的容量。
上面是它的管脚图,关于sdram的原理网上有很多,主要要记住和理解几个重要的管脚:(1)SDRAM的CLK时钟信号,对于SDRAM芯片而言,它内部需要一个时钟,这个时钟是我们FPGA给它的,而这个时钟应该正好与FPGA内部逻辑的时钟反相,这样的好处是当我们在一个上升沿输出一个命令给SDRAM,过了半个时钟周期,它会在它的上升沿检测到这个命令并去执行,从而确保了信号的保持时间。还要注意的是从SDRAM中读数据的时候,数据也是从SDRAM内部时钟的上升沿给出的(2)CKE信号,即时钟使能信号,一般拉高即可;(3)LDQM和UDQM信号,用于数据的掩码,可以控制该信号去覆盖一些不想要的数据,但是不常用;(4)BA0、BA1,组成[1:0]的BANK信号,用于选择读写哪个BANK,可以想象成一个个分区,想读写哪片SDRAM就选择哪个BANK即可;(5)A0-A11,组成一个12位的ADDR信号,刚好可以表示4096行,其中A10还有一个重要的作用就是在给出预充电Precharge命令的时候拉高,即可对所有的BANK执行该操作。还有就是在初始化配置模式寄存器的时候需要用到ADDR去配置,其他时候ADDR就用于表示行列地址;(6)CS、RAS、CAS、WE信号,这四个信号就用于组成各种命令给SDRAM;(7)位宽为16的DQ信号,是一个双向的inout信号,用于数据的写入和读出。

SDRAM命令

在这里插入图片描述常用的命令从上图都可以找到。

SDRAM常用延迟时间

在这里插入图片描述在这里插入图片描述当我们给出一个命令时,我们需要给SDRAM一些时间去响应,所以需要等待一些延迟时间。上面高亮的是我比较常用的延迟时间:(1)TRC是给出ref自刷新命令后需要等待的最小时间;(2)TRP是给出precharge预充电命令后需要等待的最小时间;(3)TRCD是给出读写active激活命令后需要等待的最小时间;(4)TMRD是配置模式寄存器所需要的最小时间。有三列的时间,它们对应于不同的速度等级,我们直接取最大的即可。

模式寄存器配置

在这里插入图片描述A11、A10填1即可;A9表示读写模式,有单独写和burst突发读写两种,一般选用burst突发读写;A8、A7填0即可;A4-A6代表了sdram读的时候数据的延时,有两拍和三拍两种选择;A3表示突发读写是连续的还是间断的,一般填0,选择连续突发读写;A0-A2就表示突发读写的长度是多少,有1、2、4、8和全页的选择
我配置的时候一般会选择全页连续突发读写,输出延时选择2个时钟周期,即配置12’b00_0_00_010_0_111。

初始化模块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值