当前位置:   article > 正文

Xilinx FPGA平台DDR3设计详解(二):DDR SDRAM组成与工作过程_fpga ddr3电路

fpga ddr3电路

本文主要介绍一下DDR SDRAM的基本组成以及工作过程,方便大家更好的理解和掌握DDR的控制与读写。

一、DDR SDRAM的基本组成

1、SDRAM的基本单元

SDRAM的基本单元是一个CMOS晶体管和一个电容组成的电路。

晶体管最上面的一端,称作栅极,通过加上电压或取消电压,可以控制CMOS晶体管的开和关,进而控制流入小电容的电流。

小电容可以存储电荷,有电荷时表示存储1bit的1,无电荷时表示存储1bit的0。

当要写入存储1bit的1时,在R/W端加上高电压,并在栅极端加高电压保持一段时间后断开,即可写入。

当要写入存储1bit的1时,在R/W端接地,并在栅极端加高电压保持一段时间后断开,即可写入。

2、存储阵列

为了存储大量信息,需要将基本单元构成存储阵列,如下图所示:

word line表示字线,对应行,连接是每个单元的栅极。

bit line表示位线,对应列,连接的是每个单元的R/W端。

存储阵列读写数据时,当某一行的字线上通电后,这一行就打开了,通过控制位线上的电压变化,就能读取存储信息或写入数据。

读取数据时由于电容很小,所以读取数据时,产生的电压波动也很小,要经过sense amplifier进行放大,另外在读取位线上的数据后,小电容上的电荷会发生了改变,这会丢失原本的信息,是一种破坏性读出。

3、SDRAM动态刷新

为什么SDRAM要做动态刷新?

SDRAM基本单元的小电容的电容值很小,存储电荷不多,而CMOS晶体管有“电流泄漏”问题,即使字线不打开,小电容也会缓慢损失电荷,慢慢的信息就丢失了。

这就需要定时将电容的旧值重新向小电容写入数据,也就是动态刷新电容。

动态刷新电容如何实现的?

这里简单介绍一下,存储阵列中放大器可以暂存信息。

每个单元行,每隔一段时间,放大器暂存好信息后,就立刻将信息写回电容。

二、SDRAM读写过程

1、SDRAM读数据

  • 激活命令:在向SDRAM发送读命令之前,必须先打开指定块中的指定行,并将其复制到行缓冲器中。这个操作由激活命令(ACTIVE)完成,激活命令通过片选信号(CS)、块地址信号(BA)和行地址信号(A)来确定要激活的块和行。激活命令还需要一个行地址选通信号(RAS),用来选通行地址。

  • 读命令:在激活命令之后,需要等待一定的时间间隔(tRCD),才能发送读命令(READ)。读命令通过列地址信号(A)来确定要读取的列,并通过列地址选通信号(CAS)来选通列地址。读命令还需要一个写使能信号(WE),用来指示读操作。

  • 数据输出:在读命令之后,还需要等待一定的时间间隔(tCL),才能从数据总线上获取数据。这个时间间隔被称为CAS等待时间或读取潜伏期,是指提供一个列地址与接收到相关数据之间的间隔。数据输出可以是单个或突发的,突发长度由模式寄存器设置。

  • 预充电命令:在读操作完成后,需要对打开的行进行预充电操作,以恢复其电荷状态。这个操作由预充电命令(PRECHARGE)完成,预充电命令通过片选信号(CS)、块地址信号(BA)和预充电信号(A10)来确定要预充电的块和行。预充电命令还需要一个行地址选通信号(RAS)和一个列地址选通信号(CAS),用来指示预充电操作。

2、SDRAM读数据

  • 激活命令:在向SDRAM发送写命令之前,必须先打开指定块中的指定行,并将其复制到行缓冲器中。这个操作由激活命令(ACTIVE)完成,激活命令通过片选信号(CS)、块地址信号(BA)和行地址信号(A)来确定要激活的块和行。激活命令还需要一个行地址选通信号(RAS),用来选通行地址。

  • 写命令:在激活命令之后,需要等待一定的时间间隔(tRCD),才能发送写命令(WRITE)。写命令通过列地址信号(A)来确定要写入的列,并通过列地址选通信号(CAS)来选通列地址。写命令还需要一个写使能信号(WE),用来指示写操作。

  • 数据输入:在写命令之后,可以立即从数据总线上输入数据。数据输入可以是单个或突发的,突发长度由模式寄存器设置。

  • 预充电命令:在写操作完成后,需要对打开的行进行预充电操作,以恢复其电荷状态。这个操作由预充电命令(PRECHARGE)完成,预充电命令通过片选信号(CS)、块地址信号(BA)和预充电信号(A10)来确定要预充电的块和行。预充电命令还需要一个行地址选通信号(RAS)和一个列地址选通信号(CAS),用来指示预充电操作。

3、突发读写模式

SDRAM的burst突发模式是指当SDRAM接收到一个读或写命令后,不需要再次寻址,而是按照预设的长度和顺序连续地传输数据。这样可以节省寻址时间,提高数据传输效率。

突发长度(burst length)和突发类型(burst type)可以通过模式寄存器(mode register)来设置。突发长度(burst length)是指每次突发传输的数据量,一般有1、2、4、8和全页(fullpage)五种选择。全页指的是打开行中剩余的所有列地址。突发长度越大,传输速度越快,但也会占用总线时间越长,影响其他设备的访问。突发类型(burst type)是指每次突发传输的数据顺序,一般有顺序(sequential)和交替(interleave)两种选择。

顺序指的是按照列地址从低到高或从高到低的顺序传输数据,速度较快。

交替指的是按照列地址以某种规律跳跃地传输数据,速度较慢。

不同的突发类型对应不同的应用场景,一般来说,顺序适合于连续访问相邻地址的情况,交替适合于随机访问不连续地址的情况。

4、bank并行和内存交错

让一个 chip 内的不同 bank 并行工作,提升读写效率。

连续向不同的 bank 发送读取指令,同一时间内很多 bank 都在并行工作,比如第一个 bank 可能在输出,第二个 bank 可能在放大电压,第三个 bank 可能在开启单元行。这样当第一个 bank 突发输出完毕,第二个 bank 刚好可以输出,当第二个 bank 猝发输出完毕,第三个 bank 刚好可以输出。

这种通过“ bank 间并行”实现“连续泵出数据”的方法,就是所谓的“内存交错”。

本文将不断定期更新中,码字不易,点⭐️赞,收⭐️藏一下,不走丢哦

本文由FPGA入门到精通原创,有任何问题,都可以在评论区和我交流哦

您的支持是我持续创作的最大动力!如果本文对您有帮助,请给一个鼓励,谢谢。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/673987
推荐阅读
相关标签
  

闽ICP备14008679号