EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
SDRAM有一个同步接口,在响应控制输入前会等待一个时钟信号,这样就能和计算机的系统总线同步。时钟被用来驱动一个有限状态机,对进入的指令进行管线(Pipeline)操作。这使得SDRAM与没有同步接口的异步DRAM相比,可以有一个更复杂的操作模式。
9 o; s. H! I8 w, t管线 意味着芯片可以在处理完之前的指令前,接受一个新的指令 。在一个写入的管线 中,写入命令在另一个指令执行完之后可以立刻执行,而不需要等待数据写入存储队列的时间。在一个读取的流水线中,需要的数据 在读取指令发出之后固定数量的时钟频率后到达,而这个等待的过程可以发出其它附加指令。这种延迟被称为等待时间(Latency),在为计算机购买内存时是一个很重要的参数。
B0 r4 \) |" s$ s& M2 l$ o; U% ]0 R; s' o3 ?
SDRAM在计算机中被广泛使用,从起初的SDRAM到之后一代的DDR(或称DDR1),然后是DDR2 和DDR3 进入大众市场,2015年开始DDR4进入消费市场。如UMI型号 UD408G5S1AF的一款8Gb 32位 DDR4 SDRAM,是一款支持使用在英特尔Arria 10 SoC FPGA以及Kintex Ultrascale FPGA中的存储器。32位 DDR4 SDRAM非常适合边缘类计算,或对PCB面积有紧凑要求的深度学习计算设备。英尚微支持32位DDR4 SDRAM送样及测试.
( F2 N* M, i# L% T1 q4 u3 N
4 b9 _6 ]' Q# v为什么要使用内存控制器?动态内存的驱动比静态内存的驱动更加复杂...我们需要行,列和存储体以及刷新周期来处理。但是由于SDRAM的高速性和低单位成本使其引人注目。
9 s! {2 ]( G- T. q# t) v& i
) u0 W9 z- d5 M/ T" E% f4 c3 K G- @因此我们需要的是一种访问SDRAM的方法,但是要易于使用静态内存。这就是创建内存控制器的原因。它们充当转换层:一方面,它们为用户提供了易于使用的内存接口,然后进行了繁琐的工作来驱动真实的SDRAM信号。/ ~8 t- |1 i+ h D0 L7 O0 h
& \3 m3 f) w0 a5 R; t8 [6 v! ^SDRAM引脚如果我们看一下SDRAM的引脚,那么会有一些新来者。5 D/ E- N/ d" {7 H- X! K5 @, X ?
9 C/ b; m4 K `, E4 V% Y! h9 C/ I! ~
7 N" Z3 V1 U& J! K; |( i. D* r3 q
地址和数据总线仍然存在,但是地址总线只有11位(用于提供要打开的行,然后提供列地址)。BA引脚指定了存储区(由于在我们的示例中只有2个存储区,因此我们仅需要一个引脚)。WE,CAS和RAS一起用作命令引脚,因此我们可以向SDRAM发送8个不同的命令(命令包括“打开行”,“读取”,“写入”和“关闭行”)。使用了其他一些引脚(但未在图片上显示),例如时钟,片选,字节使能...
1 R( V- }" V* t* Y" X
" E9 A' b" M7 e, M9 s请注意,在动态内存中,“打开行”称为激活,“关闭行”称为预充电。
7 T6 e# G+ T: c: w3 \0 P8 w. p* H, {+ F) l" d0 V7 V% a
刷新SDRAM是动态存储器:由于每个存储器位值(0或1)都保存在一个微小的电容器中,电荷随时间衰减,因此需要定期刷新其内容。但是衰减率足够低,只要定期对其进行读取和重新写入(“刷新”),制造商就可以保证不会丢失任何数据。* Q t1 N- M/ m" f
2 P; S7 v8 N5 Q. O% f
有两种刷新机制
+ J6 ~2 ]1 n2 C4 h8 T$ G( U· FPGA将“自动刷新”命令发送到SDRAM。! X7 H) j, A3 j: C1 d; y @/ |
只要确保它定期完成(SDRAM数据表会告诉您最小刷新频率)。3 d( R2 u, ~2 F& g- W2 m
" C7 }# |7 _# g1 p6 `$ \5 ?( [ A· FPGA“经常”访问每一行。1 y) ?0 S- U3 b8 T, I) F+ M6 V
打开一行会导致SDRAM中的“感测放大器”获得该行所有电容器电荷的副本。然后,当该行关闭时,较早检测到的值将被复制回电容器中,从而刷新过程中的数据。
/ u3 a4 N( x; [ |