单位文秘网 2022-03-01 08:11:04 点击: 次
摘 要: 深入探讨SDRAM的工作原理和工作时序,通过SDRAM三种常用寻址方式的对比,设计一种基于FPGA的页快速命中寻址的16位SDRAM控制器。软件仿真、硬件测试及实物调试结果表明:该控制器能极大地缩短寻址时间,并具有良好的实时性、高效性和模块重用性;同时也节省了FPGA的内部资源,缩短了研发周期。
关键词: 页快速命中; FPGA; SDRAM控制器; 寻址方式
中图分类号: TN919.3⁃34 文献标识码: A 文章编号: 1004⁃373X(2015)13⁃0063⁃04
Abstract: In this paper, working principle and time sequence analysis of SDRAM are discussed deeply. By comparing three common addressing modes, a 16⁃bit SDRAM controller of page fast hitting based on FPGA was designed. Results of software simulation, hardware test and practical debug show that the controller can shorten addressing time greatly. The controller has good real⁃time performance, high efficiency and module reusability. It also can save internal resources in FPGA and reduce development cycle.
Keywords: page fast hitting; FPGA; SDRAM controller; addressing mode
0 引 言
随着现代通信及实时图像处理的发展,大容量、高速度的储存器越来越显得重要。SDRAM即同步动态随机存贮器[1],由于价格低廉及储存量大的优点,被广泛地应用于高速数据采集、处理的领域。但本身也具备一定缺点,如控制复杂,对时序要求高,无一不对应用推广有着反效果。FPGA即现场可编程门阵列,以并行运算为主,在速度和性能上是MCU无法比拟的。本文针对其复杂的逻辑控制、严格的时序要求,利用页快速命中寻址方式,设计出一种能有效消除行寻址到列寻址之间间隔([tRCD])所带来延迟的通用SDRAM控制器,并利用ALTERA公司的FPGA芯片EP2C35F484C8N[2]和三星公司的SDRAM芯片K4S641632K[3]作为硬件平台,对该SDRAM控制器进行了实物调试与验证。
1 SDRAM的工作方式和时序分析
1.1 SDRAM的内部结构
SDRAM的内部是一个存储阵列。阵列就像一个表格,检索方式与表格一样,首先指定一个行,然后再指定一个列,就能精确地找到指定的单元格,这就是内存芯片寻址的基本原理[4]。对于内存、单元格就是列存储单元,也是SDRAM的基本存储单元,则这个表格就是逻辑Bank(Logical Bank,L_Bank)。相应地,指定行的操作就是行寻址或行有效;指定列的操作是列寻址,列寻址时都伴随着读或写命令,故又称为列读取或列写入操作。
1.2 SDRAM的工作时序分析
SDRAM的效率体现在内存寻址的速度;而SDRAM的基本工作是写入和读取数据,但在执行这些工作时,并不是每一时刻都处于数据传输状态。由于非数据传输时产生了各种延迟与潜伏期,导致SDRAM的效率没有达到百分之百。以读取操作为例,主要影响SDRAM工作效率的参数[5]有:行有效命令与列读/写命令的间隔([tRCD]);列读取命令发出到第一批数据输出的间隔([tCL]);预充电有效周期([tRP])。
图1为典型的SDRAM读取操作时序,通过行有效来打开相应的工作行,之后发送列读取命令在已打开的行中选择某一列进行读取。经过[tCL]延迟后,依次读取选中的对应突发长度[6]的列单元数据,最后依靠预充电来关闭工作行。在关闭工作行的同时,其对应行的列单元数据将被锁存起来。
当反复进行读取操作时,从上一次数据读取的结束到本次数据读取的开始,其间历经了预充电、行有效和列读取命令三个执行流程,总耗费时间为:
[T=tRCD+tCL+tRP] (1)
因此,根据SDRAM的读取时间和寻址方式的不同,SDRAM的寻址方式可分为以下三种方式:
1.2.1 页命中寻址方式[7]
页命中的工作行和L_Bank是空闲的,也就是说该 L_Bank 的所有行是关闭的,此时可直接发送行有效命令。页命中寻址方式的时间为:
[T1=tRCD+tCL] (2)
1.2.2 页错失寻址方式[7]
页错失寻址方式即上一次工作行没有关闭,并且本次读取的工作行需要换行。这种现象也称为寻址冲突,需要通过预充电来关闭上一次的工作行,再执行新一行的行有效命令,因此这种寻址方式所用的时间为:
[T2=tRCD+tCL+tRP] (3)
1.2.3 页快速命中寻址方式[7]
页快速命中亦称为背靠背(Back To Back)寻址,即要寻址的行正好是前一个操作的工作行,此时可直接发送列读/写命令。这种寻址方式的时间仅为:
[T3=tCL] (4)
可见,三种寻址方式中寻址时间最短的是页快速命中寻址方式。为了提高SDRAM的工作效率,本文设计一种基于FPGA的页快速命中SDRAM控制器,使SDRAM的寻址方式始终为页快速命中寻址方式。
2 基于FPGA的页快速命中SDRAM控制器的
设计
2.1 SDRAM控制器在FPGA上的具体方案
SDRAM控制器的RTL层视图如图2所示,其主要分为3个模块:锁相环模块(PLL),初始化模块(sdram_Init)和数据读/写模块(sdram_wr_data)。3个模块共同组成SDRAM控制器的底层驱动,相应的输入/输出端口主要分为两类:一类是FPGA内部控制接口,包括控制类型的复位信号(areset),SDRAM使能信号(sd_active)与读/写控制信号(rw),数据通信类型的地址信号(address),写入数据信号(indata)和读取数据信号(outdata);另一类是SDRAM控制接口,与外部SDRAM芯片K4S641632K引脚相连,包括了起数据通信作用的双向通信数据口(SDRAM_DATA)和SDRAM命令输出的信号行有效(RAS_N)、列有效(CAS_N)等。
2.1.1 PLL模块
系统的输入时钟为50 MHz,而SDRAM芯片和SDRAM控制器的工作时钟频率设定为100 MHz。需要通过调用FPGA的内部IP核[8]锁相环模块(PLL)来实现SDRAM和SDRAM控制器的工作频率和时钟相移。
2.1.2 sdram_init模块
初始化模块(sdram_init)的作用是实现SDRAM芯片的初始化和SDRAM控制指令输出。主要由两个有限状态机[9]实现,一个是初始化状态机,另一个是工作状态机。初始化状态机属于摩尔型状态机,即输出的SDRAM控制命令信号仅随着状态的更改而变化。当完成初始化后,SDRAM控制器进入工作状态;工作状态机根据页快速命中的工作方式,在输入地址和当前工作状态的共同作用下,输出SDRAM的控制命令和地址。上电复位后,两个状态机同时进入复位状态,直至PLL输出时钟稳定为止。当PLL稳定后,sdram_init模块首先进入初始化状态机,状态机如图3所示。初始化时先后经历了200 μs的稳定期,所有L⁃Bank的预充电, 8个周期自动刷新,模式寄存器的设置(MRS)。当初始化进入结束状态时,初始化状态机结束,模块进入工作状态机。
工作状态机主要由空闲、行有效、读取、写入和自动刷新5个状态组成。默认状态为空闲,优先判断是否需要进入自动刷新状态。通过判断SDRAM使能信号(sd_active)决定是否需要进入行有效状态,读/写控制信号(rw)选择进入读取还是写入状态。K4S641632K需要在64 ms内完成8 192个自动刷新周期,即每7.8 μs进入自动刷新状态1次。
2.1.3 sdram_wr_data模块
数据读/写模块(sdram_wr_data)负责SDRAM控制器的16位数据传输。主要端口有写入数据信号(indata)、读取数据信号(outdata)、SDRAM双向通信数据口(SDRAM_DATA)、读取有效信号(read_valid)和写入有效信号(write_valid)。其中indata和outdata属于SDRAM控制器FPGA内部使用接口,与SDRAM上层驱动连接;read_valid和write_valid属于数据传输辅助端口,与内部模块sdram_init相连;Sdram_Data是SDRAM控制器的底层双通道数据接口,直接与外部的SDRAM芯片的数据端口相连。
2.2 SDRAM控制器的Modelsim仿真
本设计是基于Quartusii 9.1环境下通过编写Verilog语言的testbench文件,并利用第三方软件modelsim协助下的波形仿真。如图4所示,SDRAM控制器处于连续写工作状态,每个列写入命令都伴随着4个16位位宽的数据。由于仿真的目的在于验证输出命令与数据的正确性,故写入数据信号(data)采用每工作周期自增1的连续数据。在突发长度期间,输出命令主要为空命令(NOP),即行有效(RAS)、列有效(CAS)、地址线(A)和L_Bank地址线(BA)都输出高;空命令实际就是无操作,等待下一次操作命令的到来,仿真时序处于行有效范围内且尚未自动刷新,故无需发送行有效命令。
2.3 SDRAM控制器的硬件测试与验证
为了进一步验证SDRAM控制器的实用性和准确性,实物验证时添加了通信模块uart,并且把FPGA与PC机相连,通过软件串口调试助手进行收发验证。由于SDRAM工作时,输入与输出部分的工作时钟一般与SDRAM异步。故此,在输入与输出部分需要设置16位异步FIFO[10]作为输入和输出缓存器。SDRAM控制器的实物验证方案图如图5所示,主要包括输入缓存器FIFOin,SDRAM控制器SDRAM_CONTROLLER,SDRAM逻辑控制器SDRAM_LOGIC,输出缓存器FIFOout和串口通信模块UART。
逻辑控制器SDRAM_LOGIC实现了SDRAM工作时的逻辑状态跳转。如图6所示,SDRAM_LOGIC默认状态为逻辑空闲,当输入FIFOin写满或写入结束时,逻辑状态由逻辑空闲状态跳转到逻辑写状态。在所有数据写入SDRAM后,逻辑状态将从逻辑写状态跳转到逻辑读状态,相应地读出数据,并与原来写入的数据比较来验证SDRAM控制器的正确性。
图7为串口调试助手的验证图,通过串口调试助手发送一连串的数据到FPGA开发板上,uart模块把接收的数据传输到SDRAM控制模块上,控制模块通过页快速命中寻址方式把数据依次写入到SDRAM芯片上。写入结束后,SDRAM控制器又把数据从 SDRAM芯片上依次读取并传输到UART模块,并通过UART把数据发送回串口调试助手。最后对比串口调试助手的写入数据与读出数据可知SDRAM控制器能精准地完成数据在SDRAM芯片上的写入与读出。
3 结 论
本文采用FPGA芯片EP2C35F484C8N实现了基于页快速命中的SDRAM控制器,并利用串口通信验证了该控制器的可靠性。双端口输入/输出缓存器FIFO使其适应于异步时钟下的数据交换。相对于页命中和页错失寻址,页快速命中更加合理、有效、快速地实现了SDRAM的写入和读取操作。同时结合了FPGA的高速、并行等优势,使SDRAM控制器具有良好的实时性、高效率和模块重用性。
参考文献
[1] 张林,何春.高速SDRAM控制器设计的FPGA实现[J].电子科技大学学报,2008,37(z1):109⁃112.
[2] Altera Corporation. EP2C35F484C8 datasheet [EB/OL]. [2008⁃02⁃18]. http://.cn/literature/hb/cyc2/cyc2_cii5v1_01.pdf.
[3] Samsung Electronics. K4S641632K specification [R]. [S.l.]: Samsung Electronics, 2006.
[4] 杨映辉.基于FPGA的SDRAM控制器设计及应用[D].兰州:兰州大学,2007.
[5] 武文杰,刘浩.基于FPGA的SDRAM控制器设计[J].电子工程师,2005,30(10):23⁃27.
[6] 程方敏,黄启俊.基于FPGA的高速SDRAM控制器的视频应用[J].电子技术,2009,36(7):22⁃24.
[7] 赵效民.高手进阶:终极内存技术指南[EB/OL].[2002⁃12⁃17].http://wenku.baidu.com/link?url=HukJk977h3XyB3gRcKe8JxTPFva2PjYQ3z2_Y0d15npo_3SaKiV_bB3TwQ49FaKN2Y3HdpE⁃
4mqBbg49CbuTs89nt7gCWqKVfv0F05VqHohe.
[8] 夏宇闻.Verilog数字系统设计教程[M].北京:北京航空航天大学出版社,2008.
[9] MINNS P, ELLIOTT I. FSM⁃based digital design using verilog HDL [M]. New York: Wiley Blackwell, 2008.
[10] 于海,樊晓桠.基于FPGA异步FIFO的研究与实现[J].微电子学与计算机,2007,24(3):210⁃216.
(责任编辑:单位文秘网) )地址:https://www.kgf8887.com/show-112-102286-1.html
版权声明:
本站由单位文秘网原创策划制作,欢迎订阅或转载,但请注明出处。违者必究。单位文秘网独家运营 版权所有 未经许可不得转载使用