sdram fpga驱动电路
- 格式:docx
- 大小:652.82 KB
- 文档页数:3
基于FPGA的SDRAM存储器接口实现摘要随着信息科学的飞速发展,人们面临的信号处理任务越来越繁重,对数据采集处理系统的要求也越来越高。
单片机、DSP等微处理器内部RAM 有限,这就需要在微处理器的外部扩展存储器。
同步动态随机访问存储器具有价格低廉、密度高、数据读写速度快的优点,从而成为数据缓存的首选存储介质,在数据采集系统和图像处理系统等方面中有着重要和广泛的应用。
SDRAM 的读写逻辑复杂,最高时钟频率达100MHz 以上,普通单片机无法实现复杂的SDRAM 控制操作。
复杂可编程逻辑器件CPLD具有编程方便,集成度高,速度快,价格低等优点。
因此选用CPLD 设计SDRAM 接口控制模块, 简化主机对SDRAM 的读写控制。
通过设计基于CPLD 的SDRAM 控制器接口,可以在STM系列、ARM系列、STC系列等单片机和DSP等微处理器的外部连接SDRAM,增加系统的存储空间。
论文开始介绍了SDRAM接口设计研究的背景和研究的目的及意义,引出对SDRAM的研究,详细介绍了SDRAM的基本原理、内部结构、基本操作和工作时序,以及设计的重点及难点。
在这些理论基础上对SDRAM 接口进行模块化设计,了解设计中所使用的硬件和软件。
最后用Verilog语言在软件QuartusⅡ设计CPLD芯片,通过在硬件和软件上的调试基本实现了SDRAM接口的设计。
关键词SDRAM;接口;Verilog;CPLDThe Implementation of SDRAM MemoryInterface Based on the EPM570AbstractWith the rapid development of information science, people face more and more onerous task of signal processing, the requirements of data acquisition and processing system are getting higher and higher. Microprocessor such as single-chip microprocessor, DSP etc, their RAM is limited, which requires external expansion in the microprocessor memory. Synchronous Dynamic Random Access Memory has a low cost, high density, fast read and write data on the merits, thereby becoming the first choice for data cache storage medium, which paly an important role and widely used in the data acquisition system and image processing systems.SDRAM read and write logic is complex, the maximum clock frequency reaches above 100MHz, the ordinary microcontroller can not achieve complex SDRAM control operation. Complex programmable logic device has advantages such as programming convenience, high integrity, high speed and low cost etc. Therefore select CPLD to design control module of SDRAM interface , to simplify the host to read and write control of the SDRAM. Through the design of SDRAM controller interface based on CPLD, you can connect SDRAM in the external of STM series, ARM series, STC series single chip microprocessor and the DSP, increase system storage space.At the beginning of paper introduces the research background, research purpose and significance of the study of SDRAM interface design, leads to the study of SDRAM, detailed introduces information of SDRAM about the basic principles, the internal structure, the basic operation and timing of work, and the design emphasis and difficulty. Based on these theories, modularing the designof SDRAM interface, understanding hardware and software used in the design. Finally, it uses Verilog language in Quartus Ⅱsoftware to design CPLD chip, Through the hardware and the software realization SDRAM the commissioning of the basic design of the interface.Keywords SDRAM; Interface; Verilog; CPLD目录摘要 (I)Abstract (II)第1章绪论 (1)1.1 课题背景 (1)1.2 课题研究的目的及意义 (1)1.3 同步动态随机存储器简介 (2)1.4 论文的结构和框架 (3)第2章SDRAM的工作原理 (4)2.1 存储器的概述 (4)2.1.1 存储器的分类 (4)2.1.2 存储器的技术指标 (5)2.1.3 存储器的比较 (5)2.2 SDRAM的工作原理 (6)2.2.1 SDRAM存储的基本原理 (6)2.2.2 SDRAM的内部结构 (7)2.3 本章小结 (8)第3章SDRAM的基本操作 (9)3.1 SDRAM的基本操作 (9)3.1.1 芯片初始化 (9)3.1.2 行有效 (9)3.1.3 列读写 (10)3.1.4 读操作 (11)3.1.5 写操作 (12)3.2 SDRAM的工作特性 (13)3.2.1 模式寄存器的设置 (13)3.2.2 预充电 (14)3.2.3 刷新 (15)3.3 SDRAM接口设计的要求 (16)3.3.1 存储器接口解决数据存取的难点 (17)3.3.2 存储器接口在工作方式上的初步优化 (17)3.4 本章小结 (18)第4章系统结构及硬件设计 (19)4.1 SDRAM接口设计的整体结构 (19)4.1.1 控制接口模块 (19)4.1.2 CAS延迟模块 (20)4.1.3 突发长度模块 (22)4.1.4 地址转换模块 (22)4.2 EPM570芯片简介 (23)4.2.1 MAXⅡ系列芯片功能简介 (24)4.2.2 逻辑阵列 (25)4.2.3 全局时钟 (25)4.2.4 I/O端口结构 (26)4.3 MT48LC系列芯片简介 (26)4.4 本章小结 (28)第5章软件设计与实现 (30)5.1 利用QuartusⅡ进行设计的流程 (30)5.2 软件的设计 (31)5.2.1 Verilog语言的特点 (31)5.2.2 采用Verilog设计综合的过程 (32)5.2.3 SDRAM接口设计的仿真 (34)5.3 本章小结 (36)结论 (37)致谢 (38)参考文献 (39)附录A (41)附录B (46)附录C (51)第1章绪论1.1课题背景数据采集处理技术是现代信号处理的基础,广泛应用于雷达、声纳、软件无线电、瞬态信号测试等领域。
关于SDRAM,SRAM,FLASH,EPCS在FPGA开发板上除了内部onchip memory,都有几种不同的存储器,比如SDRAM,SRAM,FLASH,EPCS。
1.EPCSFPGA只是一个装载软核配置信息的一个工具,它是基于SRAM的查找表,上电的时候需要重新配置,因此一定需要一个配置芯片。
一般来说Altera公司Cyclone或者CycloneII系列FPGA相应的配置器件会选择EPCS系列串行FLASH。
一般使用AS模式下载EPCS系列器件。
但有时候可能遇到AS模式不能成功下载的案例,原理图以及PCB板都是按照推荐电路设计,这时候我们可以通过Flash Loader检验EPCS器件是否良好。
即通过JTAG方式下载EPCS系列器件。
如果这种方式还是不能进行正确的AS模式的下载的话,可能EPCS器件本身已经不能正常工作了,此时可以建议更换配置芯片了。
在AS模式下,由目标FPGA来主动输出控制和同步信号(包括配置始终)给Altera专用的串行配置芯片EPCS*。
2.FLASH属于EEPROM(电擦除可编程只读存储器),一种不挥发性(Non-Volatile )内存,在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘,这项特性正是闪存得以成为各类便携型数字设备的存储介质的基础。
在FPGA开发板中一般用来存储应用程序(C程序等)。
用户可以将程序或用户数据烧写入Flash,可以通过NiosII IDE中提供的工具“Flash Programmer”来实现,非常方便,当然也可以自己写代码来将数据烧写入Flash。
3.SDRAMSDRAM是多Bank结构,例如在一个具有两个Bank的SDRAM的模组中,其中一个Bank 在进行预充电期间,另一个Bank却马上可以被读取,这样当进行一次读取后,又马上去读取已经预充电Bank的数据时,就无需等待而是可以直接读取了。
这也就大大提高了存储器的访问速度。
SDRAM布线规则SDRAM接口电路和PCB布线很多人对内存布线感到迷茫,找不到切入点,不知如何下手,其实高速硬件设计的主要任务就是与干扰做斗争,内存布线也不例外。
可以这样考虑:内存是做什么用的呢?是用来存储数据的,写入1读出1,写入0读出0,即保证数据访问正确。
那么,在什么情况会导致数据访问错误呢?1、判决错误,0判成1,1判成0。
可能参考电平不准(为什么不准?信号线内阻造成的压降),也可能是加性干扰,或者阻抗不匹配引起信号畸变。
2、时序错误,不满足建立/保持时间,或者采样点相位错误,不在有效信号位置上。
触发器需要维持一段时间的能量供给才能正常工作,这个时间就是建立/保持时间。
那么只要解决好这两个问题,保证内存正确访问,你的内存电路就设计成功了。
有了这个指导思想,内存布线就可以按部就班地完成。
不过,不同的RAM类型,虽然目标都是避免判决和时序错误,但实现方法因工作模式不同而有较大差异。
高速系统一般采用低压信号,电压低,摆幅小,容易提高速度,降低功耗,但这给布线带来了困难,因为低压信号功率受信号线内阻影响大,是电压平方关系,所以要尽量减少内阻,比如使用电平面,多打孔,缩短走线距离,高压传输在终点用电阻分压出较低电压的信号等。
SDRAM、DDR-I、DDR-II、DDR-III信号电压一个比一个低,越来越不容易做稳定。
电源供给也要注意,如果能量供给不足,内存不会稳定工作。
下面先介绍一下时钟同步电路的类型,然后分析具体芯片的类型。
源同步就是指时钟选通信号clk伴随发送数据一起由驱动芯片发送。
公共时钟同步是指在数据的传输过程中,总线上的驱动端和接收端共享同一个时钟源,在同一个时钟缓冲器(clock buffer)发出同相时钟的作用下,完成数据的发送和接收。
公共时钟同步,将同一个时钟信号用时钟分配器分成2路,一路接发送器,一路接接收器。
在时钟上升沿发送数据,在下一个周期的上升沿采样接收。
速率在200-300MHZ以下。
基于FPGA的DDR2SDRAM控制器设计钱素琴,刘晶华(东华大学信息科学与技术学院,上海,201600)摘要:基于高速数据传输与存储的数据釆集记录仪对缓存模块高性能的需求,选择了读写速度快、低成本、大容量、运行稳定的DDR2SDRAM作为本地存储器,在其存储寻址原理和IP核的读写控制逻辑的基础上,借助硬件描述语言设计了一个DDR2存储控制器方案。
在Intel的FPGA Cyclone IV系列开发板上进行了整体方案的功能验证,完成了用户接口和控制器之间的多数据宽度、多突发长度的高效数据传输和读写操作,在166.7MHz时钟频率下实现了稳定读写的目标。
关键词:FPGA;DDR2SDRAM;IP核Design of DDR2SDRAM controller based on FPGAQian Suqin,Liu Jinghua(College of information science and technology,Donghua University,Shanghai,201600) Abstract;Based on the requirement of high-speed data transmission and storage data acquisition recorder for high performance of cache module,DDR2SDRAM with high read-write speed,low cost, large capacity and stable operation is selected as the local memory.Based on its storage addressing principle and the read-write control logic of IP core,a DDR2storage controller scheme is designed with the help of hardware description language.The functional verifiestion of the overall scheme is carried out on the FPGA cyclone IV series development board of Intel.The efficient datQ transmission and read-write operation of multipie data widths and burst lengths between the user interface and the cont r oller are comple t ed.The st a ble read-wr ite t a rge t is achieved a/t166.7MHz clock frequency. Keywords:FPGA;DDR2SDRAM;IP coreo引言随着数据采集系统的发展,应用于图像采集和数据传输等领域的产品对存储器的速度要求越来越高。
【⿊⾦原创教程】【FPGA那些事⼉-驱动篇I】实验⼆⼗⼆:SDRAM模块⑤—FIFO读写经过漫长的战⽃以后,我们终于来到最后。
对于普通⼈⽽⾔,页读写就是⼀名战⼠的墓碑(最终战役) ... 然⽽,怕死的笔者想透过这个实验告诉读者,旅程的终点就是旅程的起点。
⼀直以来,笔者都在烦恼“SDRAM是否应该成为储存类?”SDRAM作为⼀介储存资源(储存器),它的好处就是⼤容量空间,坏处则就是⿇烦的控制规则,还有中规中矩的沟通速率。
相⽐之下,⽚上内存⽆论是控制的难度,还是沟通的速率,它都远远领先SDRAM。
俗语常说,愈是强⼒的资源愈是珍贵 ... 对此,⽚上内容的容量可谓是稀罕的程度。
实验⼆⼗⼆的要求⾮常单纯:”请问如何建⽴基于SDRAM储存资源的FIFO存储模块呢?“,笔者问道。
图22.1 SDRAM基础模块。
图22.1是基于实验⼗⼋修改⽽成的SDRAM基础模块,修改对象除了SDRAM控制模块以外,SDRAM功能模块保持实验⼗⼋的状态,即单字读写。
SDRAM控制模块,除了多出Tag以外,Addr的驱动也由该模块负责。
具体的内容,让我们来看代码吧:1. module sdram_ctrlmod2. (3. input CLOCK,4. input RESET,5. input [1:0]iCall, // [1]Write, [0]Read6. output [1:0]oDone,7. output [3:0]oCall,8. input iDone,9. output [23:0]oAddr,10. output [1:0]oTag11. );12. parameter WRITE = 4'd1, READ = 4'd4, REFRESH = 4'd7, INITIAL = 4'd8;13. parameter TREF = 11'd1040;14.以上内容为相关的出⼊端声明以及常量。
基于FPGA的DDR3控制器设计焦淑红;程仁涛【摘要】存介绍了DDR3 SDRAM的技术特点、工作原理,以及控制器的构成.利用Xilinx公司的MIG软件工具在Virtex-6系列FPGA芯片上,实现了控制器的设计方法,并给出了ISim仿真验证结果,验证了该设计方案的可行性.【期刊名称】《电子科技》【年(卷),期】2015(028)007【总页数】3页(P41-43)【关键词】FPGA;DDR3 SDRAM控制器;MIG;ISim【作者】焦淑红;程仁涛【作者单位】哈尔滨工程大学信息与通信工程学院,黑龙江哈尔滨150001;哈尔滨工程大学信息与通信工程学院,黑龙江哈尔滨150001【正文语种】中文【中图分类】TN79;TP391DDR3 SDRAM是第三代双倍数据速率动态同步随机存储器的简称。
是SDRAM 内存产品家族中的一员。
DDR3内存模组是采用多颗DDR3 SDRAM,并根据JEDEC的相关内存模组设计标准而制作[1]。
DDR3 SDRAM有如下技术特点:(1)DDR3新增了重置(RESET)功能,并为此新功能设置了管脚,当RESET命令有效时,DDR3将终止所有操作,此时处于活动量最少的状态,以降低功耗。
(2)DDR3新增ZQ校准功能,ZQ也是一个新的管脚,这个引脚通过一个命令集及片上校准引擎(On-Die Calibration Engine,ODCE)自动校验数据输出驱动器导通电阻与ODT的终结电阻值。
(3)在DDR3系统中,将参考电压分成两个:一个是为地址和控制总线提供服务的VREFC,另一个是为数据总线提供服务的VREFDQ,两个不同的参考电压为DDR3提供更好的抗噪能力。
(4)在DDR3系统中,控制器和存储器是一一对应的,由此便可大幅减轻地址、控制、数据信号的总线负担,提供了信号的完整性。
这是DDR3和DDR2的一个关键区别。
对单个Rank的模组,控制器和内存是点对点(Point to Point)的连接关系,对双 Rank的模组,控制器和内存是点对双点(Point to 2Points)的连接关系。
毕业设计学生姓名:洪雷学号: 09xxxxxxxx 专业:电子科学与技术题目:基于FPGA的DDR2存储器控制器设计指导教师:安国臣(讲师评阅教师:武瑞红(副教授2013年6月毕业设计中文摘要随着消费电类电子产品以及便携式通讯产品向多功能、高性能和低功耗方向的飞快发展,而随之带来的是对大量的数据处理,而产品的系统对其主要的存储设备的要求也越来越高。
目前,DDR2凭着其及其高的数据传输速率和低廉的成本则越来越多的被用到一些高档类的消费类电子和便携式产品中。
对DDR2 SDRAM的控制器处理的设计变得也就非常有必要。
使用FPGA技术设计数字电路,不仅可以简化设计过程,而且还可以减低整个系统的体积和成本,增加系统的可靠性。
本次设计则使用Altear公司的Cyclone V 代器件,经行开发的最小系统。
本次设计使用的是Mircon公司的MT47系列的芯片,借助Altera公司提供的IP 核所自动生成PHY接口。
由于DDR2的读写驱动的要求,多次设计了电压的要求。
本文对DDR2 SDRAM基本结构和原理进行了简单的介绍。
并且阐述基于FIFO和PHY接口的DDR2设计方法。
关键词DDR2 FPGA 存储器控制器 FIFO毕业设计外文摘要Title DDR2 Memory Controller Design based on FPGAAbstractAs consumer electric class electronic products and portable communication products to multi-functional, high performance and low power consumption direction of rapid development, and then brings about a lot of data processing, the product of the system to the main storage device requirements more and more higher. At present, the DDR2 with its and high data transfer rate and low cost are more and more used in some high-end consumer electronics and portable products. Processing of DDR2 SDRAM controller design becomes and is very necessary.Digital circuit design using FPGA technology, not only can simplify the design process, but also can reduce the size and cost of the whole system, increase the reliability of the system. This design USES Altear company Cyclone V generation device, the smallest system development. This design USES the Mircon MT47 series chips, and IP core provided by Altera corporation how can automatically generate the PHY interface. Driven requirements due to DDR2, speaking, reading and writing, and design the voltage requirements for many times.in this paper, the basic structure and principle of DDR2 SDRAM has carried on the simple introduction. And in this paper, the DDR2 design method based on FIFO and PHY interfaceKey Words DDR2 FPGA memory controlle FIFO目录1 绪论 (12 动态随机存储器 (32.1 同步动态随机存储器原理与结构 (32.2 双倍动态随机存储器原理与特点 (32.3 DDR2随机存储器的简介 (43 可编程逻辑器件原理 (73.1 FPGA原理 (73.2 FPGA结构 (73.3 FPGA器件开发的优点 (94 外围电路设计 (114.1芯片的选择和介绍 (114.2 FPGA电源设计 (154.3 FPGA时钟和复位设计 (164.4 FPGA的配置设计 (175 软件设计与仿真 (185.1 FPGA的设计开发流程 (18 5.2 系统设计软件介绍 (195.3 VHDL语言的介绍 (195.4 系统设计 (20结论 (29致谢 (30参考文献 (311 绪论随着大规模、甚大规模的集成电路的设计技术的飞速发展,科技的日益更新,跟随而来的是各种的芯片的弄能不段的变复杂,而同时,数字产品例如掌上电脑、网络设备、音频设备、高清电视等,对高性能的内存的需求也越来越高。
fpga sdram 相位相位是电路中非常重要的概念之一,特别是在FPGA(可编程逻辑器件)的SDRAM(同步动态随机存取存储器)接口设计中起着关键作用。
本文将详细介绍FPGASDRAM相位的概念及其在设计中的应用。
1、相位的概念相位是指振荡波的状态相对于某个参考点的位置。
在FPGA设计中,特别是在SDRAM接口设计中,相位的调整非常重要。
正确的相位调整可以提高时序的可靠性,降低数据传输错误率。
2、相位调整方法在FPGA设计中,常用的相位调整方法主要有以下几种:(1)时钟相位调整:通过调整时钟信号的相位,来控制数据的传输时机。
具体的方法可以是通过锁相环(PLL)来实现。
(2)数据相位调整:通过调整数据信号的相位,来确保信号在时钟的上升沿和下降沿之间采样。
常用的方法有延迟锁定环(DLL)和数据瞬态优化器(DQSI)等。
(3)控制相位调整:通过调整控制信号的相位,来控制存储器的读写时机。
这种相位调整主要适用于SDRAM接口设计中。
FPGA与SDRAM之间的接口设计中,相位的调整是非常重要的。
正确的相位调整可以提高数据传输的可靠性和稳定性,减少数据传输错误率。
(1)时钟相位应用:通过调整时钟信号的相位,可以确保时序的准确性。
在FPGA与SDRAM的接口设计中,时钟的相位调整可以通过PLL来实现,以保证时钟与SDRAM的时钟信号同步。
(2)数据相位应用:通过调整数据信号的相位,可以使得数据信号在时钟的上升沿和下降沿之间稳定地采样。
常用的方法有DLL和DQSI等,它们可以根据实际情况调整数据信号的延迟,以适应不同的时钟频率和数据传输速度。
(3)控制相位应用:在SDRAM接口设计中,还需要考虑控制信号的相位调整。
通过控制信号的相位调整,可以确保存储器的读写时机与时钟信号的上升沿和下降沿同步,以实现可靠的数据传输。
在FPGA设计中,特别是在SDRAM接口设计中,相位的调整是非常重要的。
正确的相位调整可以确保数据的可靠传输,降低数据传输错误率。
第37卷增刊电子科技大学学报Vol.37suppl 2008年6月Journal of University of Electronic Science and Technology of China Jun.2008高速SDRAM 控制器设计的FPGA 实现张林,何春(电子科技大学电子科学技术研究院成都610054)【摘要】同步动态存储器(SDRAM)控制器通常用有限状态机实现,对于一般的设计方法,由于状态数量多,状态转换通常伴随大的组合逻辑而影响运行速度,因此,SDRAM 控制器的速度限制了SDRAM 存储器的访问速度。
该文从结构优化入手来优化方法,利用状态机分解的思想将大型SDRAM 控制状态机用若干小的子状态机实现,达到简化逻辑的目的,不仅提高了速度还节省了资源,对该类大型SDRAM 控制器的实现有一定参考意义。
关键词现场可编程门阵列;高速状态机;SDRAM 控制器状态机分解中图分类号TN402文献标识码AFPGA Implementation of High Speed SDRAM ControllerZHANG Lin and HE Chun(Research Insti tut e of El ectronic Science and Technology,University of Electronic of Science and Technology of china Chengdu610054)Abstr act Synchronous dynamic random access memory (SDRAM)is widely used in nowadays digital systems for its large capacity and low price.The SDRAM controller is commonly implemented in finite state machine (FSM),which can not achieve high performance with complicated logic.As a result,the access speed is restricted.Taking advantages of the ideology of state machine decomposition,the SDRAM controller is implemented by several subordinate FSMs.This implementation can improve the speed and performance of the systems effectively.The method given is significative for the related design.Key wor ds field programmable gate array;high-speed FSM;SDRAM controller;state machine decomposition收稿日期:20080304作者简介:张林(),男,硕士生,主要从事集成电路设计、VLSI 计算结构等方面的研究SDRAM 在高带宽应用场合中,为了保持系统数据的高吞吐率,通用的SDRAM 控制器不能满足要求,需要进行专门设计[1-2]。
FPGA系统中DRAM,SRAM,SDRAM,FLASH区别(转)⼀般来说这⼏种存储器是⼀个nios系统都具有的,sram的好处是接⼝简单,速度快容易操作,⽤资源也⽐较少;sdram的最⼤好处是容量⼤,当然速度也⽐较快,但是接⼝复杂些,也耗逻辑资源多些;flash是⾮易失性存储器,速度慢。
SRAM、SDRAM都⽤于程序⼯作时保存临时数据和程序,因为在系统调电后,保存在其中的数据都会丢失。
FLASH⽤于系统中保存长期的数据,如:配置信息,程序等。
由于SRAM接⼝电路简单,在⼩系统中常⽤,SDRAM的接⼝相对复杂,需要相应的控制器⽀持,但由于容量⼤、价格便宜、访问速度快,所以常⽤在对内存容量和处理速度要求⾼的应⽤场合,在这种场合中,相应的处理器(CPU)都⾃带有SDRAM控制器。
DRAM是动态存储器(Dynamic RAM)的缩写SDRAM是英⽂SynchronousDRAM的缩写,译成中⽂就是同步动态存储器的意思。
从技术⾓度上讲,同步动态存储器(SDRAM)是在现有的标准动态存储器中加⼊同步控制逻辑(⼀个状态机),利⽤⼀个单⼀的系统时钟同步所有的地址数据和控制信号。
使⽤SDRAM不但能提⾼系统表现,还能简化设计、提供⾼速的数据传输。
在功能上,它类似常规的DRAM,且也需时钟进⾏刷新。
可以说,SDRAM是⼀种改善了结构的增强型DRAM。
⽬前的SDRAM有10ns和8ns什么是DRAM?DRAM(Dynamic RAM): 动态随机存储器。
什么是SDRAM?SDRAM(Synchronous DRAM): 同步动态随机存储器。
⽬前的168线64bit带宽内存基本上都采⽤SDRAM芯⽚,⼯作电压3.3V电压,存取速度⾼达7.5ns,⽽EDO内存最快为15ns。
并将RAM与CPU以相同时钟频率控制,使RAM与CPU外频同步,取消等待时间。
所以其传输速率⽐EDO DRAM更快。
什么是DDR SDRAM?DDR(Double Data Rate)SDRAM。
信息科学科技创新导报 Science and Technology Innovation Herald134DOI:10.16660/ki.1674-098X.2020.11.134基于FPGA SDRAM的AXIS_SDRAM接口设计与实现李浩 申伟(中国航天科工重庆金美通信 重庆 400000)摘 要:由于FPGA片内存储资源有限,扩展外部存储空间是必要的,然而众多存储芯片总线结构复杂,控制繁琐。
为此,本文以赛灵思的FPGA为平台,设计一种以常用而快捷的axi_stream的形式访问SDRAM的接口。
关键词:FPGA SDRAM AXIS FIFO BRAM 中图分类号:TP334 文献标识码:A 文章编号:1674-098X(2020)04(b)-0134-02随着芯片的不断更新换代,集成ARM核的FPGA芯片得到了广泛的应用[1]。
axi的总线协议在FPGA里面应用也越来越广。
axi_stream协议为axi的一种总线标准。
本文将采用axi_stream的时序以fifo与bram的形式访问SDRAM的设计与实现方法。
1 axis_sdram接口本文将axis_sdram接口分为两种,不带地址的axis_fifo_sdram (下文简称axis_fifo )和带地址的axis_bram_sdram (下文简称axis_bram)接口。
两种接口均采用axis_stream的时序。
axis_bram接口为一个地址对应一帧数据,可重复读取数据。
与axis_fifo的区别在于axis_bram写指定存储空间,当用户需要读写数据时,需要同时给出读写地址总线地址数据。
axis_fifo和bram接口的读写数据共同点在于,当ready 与valid两根信号线同时有效(高电平)时,数据总线上的数据才有效。
此外,axis_bram中,当用户写完一帧数据后,等待监测m_axis_tlast3信号线拉高,可以开始写第二帧数据,具体时序见图 1。
计算机测量与控制!"#"$!$%!%#"!!"#$%&'()'*+%('#',&-!",&(".!!#&'!#收稿日期 "#"$#$#&$!修回日期 "#"$#(%"%作者简介 谢树平!%)*&"&男&硕士&工程师%引用格式 谢树平&毛源豪!基于+,-.的//01/0.2测试平台设计'3(!计算机测量与控制&"#"$&$%!%#")&''4!文章编号 %&'%(4)* "#"$ %###&'#)!!/56 %#!%&4"& 7!89:;!%%<('&" =>!"#"$!%#!#%%!!中图分类号 ?,"'(!!文献标识码 .基于/012的3345342)测试平台设计谢树平 毛源豪!湖南艾科诺维科技有限公司&长沙!(%####"摘要 //01/0.2是+,-.板卡中的重要组成部分&其可靠性与带宽决定了设备能否正常工作$为了测试//01/0.2的性能是否符合预期&开发了一种基于+,-.的//01/0.2测试平台&平台包含一个基于//01/0.2控制器的测试器6,核&具有数据校验*带宽测量的功能$编写了控制测试器6,核的?@A脚本&用于配置测试参数*控制测试流程与读取测试结果$在,B=C D9语言下使用,B E=4开发库设计了图形界面程序&能够根据用户操作生成并执行对应的?@A脚本$最终实现了一个操作简单*测试流程可配置*自动输出测试结果的//01/0.2测试平台$测试结果表明&测试平台能够正确地进行//0 1/0.2测试并输出统计结果$对比26-的示例工程&测试平台额外增加了带宽测试*结果统计*循环测试等功能&且使用的+,-.资源下降了$#F&测试用时缩短了'#F以上%关键词 //01/0.2$+,-.$?@A脚本$测试平台$,B E=43'+67,"83345342)9'+&0.*&8"(#:*+';",/012G6H1C I>;9J&2.5K I L9C L D!M I9L9.8N9D O L?P8C9D Q D J B@D R&A=S R&@C L9J T C L!(%####&@C;9L"2<+&(*=&)//01/0.2;T L9;U>D V=L9=8D U>D9P9=D W+,-.X D L V S T&L9S;=T V P Q;L X;Q;=B L9S X L9S Y;S=C S P=P V U;9PY C P=C P V=C P S P Z O;8P8L9W I98=;D9>V D>P V Q B R?DO P V;W B=C L==C P>P V W D V U L98PD W=C P//01/0.2U P P=TP[>P8=L=;D9T&L//01/0.2=P T=>Q L=W D V U X L T P SD9+,-.;T S P O P Q D>P S R?C P>Q L=W D V U;98D V>D V L=P T L=P T=P V6,8D V P&Y C;8C;T X L T P S D9L//01/0.28D9=V D Q Q P V L9SC L T=C P8L Z >L X;Q;=B=DO P V;W B S L=L L9SU P L T I V PX L9S Y;S=C R?@AT8V;>=T L V PI T P S=D8D9=V D Q=C P=P T=P V6,8D V P&;98Q I S;9J T P==;9J=P T=>L V L U P=P V T& U L9L J;9J=P T=>V D8P T T P T&L9S V P=V;P O;9J=P T=V P T I Q=T R.S S;=;D9L Q Q B&L J V L>C;8L Q;9=P V W L8P>V D J V L U;T S P T;J9P SI T;9J=C P,B E=4S P O P Q D>Z U P9=Q;X V L V B;9,B=C D9&Y C;8C J P9P V L=P T L9SP[P8I=P T8D V V P T>D9S;9J?@AT8V;>=TX L T P SD9I T P V;9>I=R.T L V P T I Q=&L//01/0.2 =P T=;9J>Q L=W D V U;T;U>Q P U P9=P S=C L=;T X D=CI T P V Z W V;P9S Q B L9S W Q P[;X Q P;9=P V U T D W=C P=P T=;9J>V D8P T T&Y C;Q P L Q T D>V D O;S;9J L I=D U L=;8 V P T I Q=T D I=>I=R?P T=V P T I Q=T S P U D9T=V L=P=C L==C P>Q L=W D V UL88I V L=P Q B=P T=T//01/0.2L9SD I=>I=T T=L=;T=;8L Q V P T I Q=T R2D V P D O P V& 8D U>L V P S=D=C P P[L U>Q P S P T;J9D W26-&=C P=P T=;9J>Q L=W D V U;98Q I S P T X L9S Y;S=C=P T=;9J&V P T I Q=T=L=;T=;8T&L9S L I=D U L=;88D9=V D Q W I98Z =;D9T&I Q=;U L=P Q B V P S I8;9J+,-.V P T D I V8PI T L J PX B$#F L9S8I==;9J=P T==;U PX B U D V P=C L9'#F R>'@"(;+)//01/0.2$+,-.$?@AT8V;>=$=P T=>Q L=W D V U$,B E=4A!引言现场可编程逻辑门阵列!+,-.&W;P Q S>V D J V L U U L X Q PJ L=P L V V L B"是一种半定制芯片&因其独特的电路可编程特性区别于其他器件%随着近年+,-.芯片的快速发展&其内部的资源数量与丰富度显著提升'%(%+,-.在通信*图像处理'"(*深度学习'$(*人工智能'((与数据中心'4(等领域发挥着重要的作用%双倍数据传输速率同步动态随机存储器!//01/0.2&S D I X Q P S L=L V L=P T B98C V D9D I TS B9L U;8V L9ZS D UL88P T TU P U D V B"是+,-.板卡中最常用的高速缓存解决方案%//01/0.2的工作情况直接影响到整个设备能否正常运作&所以//01/0.2测试也是+,-.板卡测试中最重要的测试项目之一%此前对//01/0.2的测试主要通过//01/0.2控制器的调试端口进行%然而这种测试方案存在操作人员学习门槛高*测试流程不灵活*无法自动生成测试报告等缺点%操作人员在测试前需要充分了解调试端口中约"##个信号的定义*各控制信号间的逻辑关系以及操作//01/0.2的相关知识%此类方案在生成比特流后测试内容相对固定&可在线配置的测试参数有限&无法设置测试队列并自动完成%且没有生成测试报告的功能&相关数据需要操作人员手动记录%降低了工作效率&增加了出错风险%在+,-.与//01/0.2的数据交互设计中&设计者通常使用+,-.厂家提供的//01/0.2控制器%比如G;Q;9[公司为旗下的+,-.提供了成熟的存储器接口生成器!26-&U P U D V B;9=P V W L8P J P9P V L=D V"%26-内包含控制器和物理层&设计者可以通过用户接口或先进可扩展接口!.G6&L S O L98P S P G=P9T;X Q P;9=P V W L8P"访问//01/0.2%文献'&(提出了一种基于26-用户接口的应用&在26-用户接口的基础上设计了先入先出!+6+5&W;V T=;9W;V T=D I="接口&使其既拥有+6+5缓存简单易用的特点&又有//01/0.2存储空间大的优势%文献''(在数据+6+5!投稿网址 Y Y Y!7T78Q B:\!8D UCopyright©博看网. All Rights Reserved.!!计算机测量与控制!第$%""""""""""""""""""""""""""""""""""""""""""""""""""""卷#&*!#接口的基础上增设了一个命令+地址+6+5&实现了随机读写功能%在//01/0.2控制器的测试技术中&通常使用的方案是向//01/0.2写入特定的>L ==P V 9&然后读取数据并校验数据一致性%文献'*(提出了一种包含内部自测!]61?&X I ;Q =Z ;9T P Q W Z =P T ="模块的//01/0.2控制器%该模块将来自随机数发生器的数据写入//01/0.2中&并将读出的数据与写入的数据在数据比较器中进行对比&从而实现自监测的功能%文献')(提出了一种基于在线逻辑分析仪!6A .&;9=P J V L =P SQ D J ;8L 9L Q B \P V "知识产权!6,&;9=P Q Q P 8=I L Q >V D >P V =B "核验证//01/0.2控制器的方法%使用.G 6?V L W W ;8J P 96,核产生.G 6总线的读写事务&并用6A .抓取.G 6总线上的信号&分析其时序与数据正确性%实际应用中&通常使用标准3?.-接口实现,@上位机与+,-.之间的通信%文献'%#(设计了一种基于+,-.的//01/0.2通用测试电路%该设计使用3?.-接口启动测试电路&电路自动完成整个测试过程并将测试结果从3?.-接口传回,@上位机%文献'%%(提出了一种使用工具命令语言!@A &=D D Q 8D U U L 9S Q L 9J I L J P "脚本语言测试数字电路的方法%该方法通过在^;O L S D 软件中执行?@A 脚本实现自动对调试核虚拟输入输出!^65&O ;V =I L Q ;9>I =D I =>I ="的修改与读取&从而达成高效率的测试%文献'%"(提出了一种基于A L X ^6H _软件调用?@A 脚本的测试方法&将^;O L S D 软件的启动与执行?@A 脚本的命令封装为批处理文件&实现了自动化测试与生成报表%文献'%$(提出了一种+,-.的.G 6总线接口调试方法&通过使用3?.-=D.G 66,核&允许用户通过执行?@A 脚本来对.G 6总线上的从设备进行访问%为了解决当前+,-.板卡中//01/0.2测试工作复杂及效率低下的问题&本设计做了如下工作)%"设计了//01/0.2控制器的测试器6,核26-P T =P V %该6,核具有生成读写事务*校验数据*记录数据读写用时等功能%同时26-?P T =P V 支持对数据位宽*>L =Z =P V 9类型*起始地址*测试地址范围*突发长度等参数的在线配置&具有高度的灵活性%""设计了?@A 脚本%用于控制^65*6A .*3?.-=D .G 6等6,核&从而实现对整个测试流程的控制以及测试结果信息的读取%$"设计了上位机图形界面程序%将测试流程中各个阶段需要执行的@A 脚本封装%通过文本框打印测试信息&同时自动生成测试报告&便于操作人员使用%B !测试平台架构及原理测试平台架构主要由两个部分构成)+,-.板卡与,@上位机%+,-.板卡内包含+,-.与//01/0.2&二者通过板卡上的//01/0.2接口相连接%,@上位机与+,Z -.通过3?.-接口实现通讯%用户在,@上位机操作图形界面程序&完成测试流程与输出测试结果'%(%4(%所述架构如图%所示%图%!测试平台架构框图//01/0.2是待测的目标器件&由+,-.中的26-控制%在对//01/0.2的测试中&重点关注的是//01/0.2的读写正确性与带宽两项性能'%&(%+,-.与//01/0.2通过//01/0.2接口相连接&+,-.内例化的26-控制//01/0.2的初始化与数据读写%26-?P T =P V 可以通过26-的.G 6T Q L O P 接口对//01/0.2进行数据读写%26-?P T =P V 的功能是测试读写正确性与带宽%26-?P T =P V 有两个主要接口)一个是.G 6T Q L O P 接口&作为控制接口与3?.-=D.G 6相连&?@A 脚本控制3?.-=D.G 6来与26-?P T =P V 进行通信&控制测试流程与读回测试结果$另一个是.G 6U L T =P V 接口&作为数据读写接口与26-相连&测试过程中对26-的数据传输均由此接口实现%此外26-?P T =P V 还有一个块随机存取存储器!]0.2&X Q D 8:V L 9S D UL 88P T TU P U D V B "主接口&用于向]0.2写入错误数据对应的地址信息&便于后续对错误数据的溯源分析%+,-.内例化的^65*3?.-=D.G 6和6A .调试核互相配合下起到控制26-初始化*控制26-P T =P V *抓取.G 6总线信号的作用&这些调试核均受,@上位机控制'%'%*(%,@上位机通过3?.-接口与+,-.进行通信%通过在,@上位机的^;O L S D ?8Q 1C P Q Q 程序中执行?@A 脚本&可以对+,-.中调试核的信息读取与控制%图形界面程序将^;O L S D ?8Q 1C P Q Q 作为子进程运行&并将测试相关的?@A 脚本封装为对应的按钮%操作人员可以通过图形界面程序便捷地控制整个测试流程&提高了测试效率&降低了学习门槛'%)"#(%C !/012工程设计测试板卡使用的+,-.产自G ;Q ;9[公司&型号为[8':$"4=W W J)##Z "&使用的//01/0.2型号为2?*3?+"Z 4&&(M `Z %-&2%%C D B !/012工程主要模块工程主要包含3?.-=D.G 6*26-?P T =P V *.G 61U L V =Z!投稿网址 Y Y Y!7T 78Q B:\!8D U Copyright ©博看网. All Rights Reserved.第%#期谢树平&等)基于+,-.的//01/0.2""""""""""""""""""""""""""""""""""""""""""""""""""""测试平台设计#&)!#@D 99P 8=*26-*.G 6]V L U @D 9=V D Q Q P V 等6,%模块之间主要通过.G 6总线进行连接&所有.G 6总线通过.G 61U L V =Z @D 99P 8=互联6,连接在一起%地址空间分配中&26-基地址被设为#[*#######&可被26-?P T =P V 和3?.-=D.G 6访问%26-?P T =P V 基地址设为#[((.#####&.G 6]0.2@D 9=V D Q Q P V 基地址设为#[########&两者都只能被3?.-=D .G 6访问%]0.2的类型为真双口]0.2&其中一个接口受.G 6]0.2@D 9=V D Q Q P V 控制&另一个接口供26-?P T =P V的]0.2主接口写入数据'"%""(%C D C !)'#"(E,&'(8*='1','(*&"(26-是由G ;Q ;9[官方提供的存储器接口成熟的解决方案&是可靠的//01/0.2控制器%26-由一个控制器与//0物理层接口组成%26-将复杂的//0物理接口封装为被广泛使用的.G 6接口&简化了用户的设计%在+,-.工程设计中&26-的.G 6T Q L O P 接口与26-?P T =P V 的.G 6U L T =P V 接口相连接&在测试过程中完成数据传输%26-的复位信号控制着26-初始化的开始&由^65驱动%26-的初始化完成信号是高电平时表示26-完成了初始化&由^65监听%根据//01/0.2型号与具体电路&对26-进行了如下配置)使能.G 6接口&并设置数据位宽为4%"&以适配26-?P T =P V 的.G 6主接口$工作时钟频率设为*##2M \&参考时钟输入设为"##2M \&以适配板卡上的参考时钟晶振%C D F !)'#"(E,&'(8*='1','(*&"(9'+&'(26-?P T =P V 是自主设计的26-专用测试6,核&主要包含以下模块).G 6T Q L O P 接口*控制器*写数据生成器*.G 6U L T =P V 接口*数据校验器*预期数据生成器*错误计数器*计时器与]0.2主接口%26-?P T =P V 的框架如图"所示%图"!26-?P T =P V 框架图.G 6T Q L O P 接口是控制接口&通过.G 6T Q L O P 接口可以读写控制器中寄存器的值&各寄存器与地址的映射关系与详细描述如表%所示%.G 6T Q L O P 接口的寄存器位宽均为$"位%其中偏移为#[#!#[%*的寄存器是可读可写的&主要包括可配置的测试参数与测试控制%偏移为#["#!#[$(的寄存器是只读的&主要包括测试结果以及固定测试参数%表%!.G 6T Q L O P 接口寄存器地址映射关系寄存器名偏移描述]L T P .S S V P T T #[#测试起始地址]I V T =A P 9J =C #[(读写突发长度]I V T =a I U X P V #[*单次测试突发数量?P T =@D 9=V D Q #[@启动测试与清除中断P T =1=L =I T #[%#26-?P T =P V 状态,L ==P V 91Y ;=8C#[%(固定,L ==P V 9功能开关,L ==P V 9#[%*,L ==P V 9设定0P T P V O P #[%@保留_V ;=P @B 8Q P #["#写数据所用时钟周期数0P L S @B 8Q P #["(读数据所用时钟周期数H V V D V a I U X P V #["*读写数据校验错误数0P T P V O P #["@保留/L =L _;S =C #[$#26-数据位宽+V P N I P 98B#[$(计时时钟频率写数据生成器在控制器的控制下&生成所设地址范围与所设>L ==P V 9的写数据事务%//01/0.2测试的地址范围由测试起始地址*读写突发长度*单次测试突发数量与26-数据位宽(个参数共同确定%公式如下)!=P T ="#S L =L $%X I V T =$&X I V T =*!%"'C ;JC "'X L T P (!=P T =!""式中&!=P T =是测试地址范围大小&'C ;JC 是测试终止地址&'X L T =是测试起始地址&#S L =L 是数据位宽&%X I V T =是突发长度&&X I V T =是突发数量%测试中写入//01/0.2的数据默认是*X ;=长的递增数>L ==P V 9&当固定>L ==P V 9开关被使能后&//01/0.2写入的>L ==P V 9将和#[%*地址寄存器内的数据保持一致%.G 6U L T =P V 接口是数据传输接口&与26-的.G 6T Q L O P 接口相连接%写数据生成器生成的写数据事务和数据校验器生成的读数据事务均由此接口完成具体的数据传输%数据校验器用于校验读回的数据与预期数据的一致性%当两者数据不相符时&错误标志信号P V V D V ,W Q L J 置-%.&使错误计数器计数加一&并将错误数据对应的地址写入]0.2%错误计数器接收数据校验器的错误标志信号进行计数%在完成测试后把错误计数写入H V V D V a I U X P V 寄存器%每次开始测试时错误计数器清零%计时器用于计算.G 6总线读写数据所用时钟周期%在完成测试过程后计时器会将读写数据用时分别写入0P L S @B Z 8Q P 寄存器与_V ;=P @B8Q P 寄存器%根据这两项测试结果以及计时时钟频率得出读写数据用时以及平均带宽%公式如下))Y V ;=P "*Y V ;=P+=;U P V!$",Y V ;=P "!=P T =)Y V ;=P!("式中&)Y V ;=P 是写数据实际所用时长&*Y V ;=P 是从寄存器中读取的写数据所用时钟周期数&+=;U P V 是计时器频率&,Y V ;=P 是写数!投稿网址 Y Y Y!7T 78Q B:\!8D U Copyright ©博看网. All Rights Reserved.!!计算机测量与控制!第$%""""""""""""""""""""""""""""""""""""""""""""""""""""卷#'#!#据平均带宽%读数据所用时间和平均带宽的计算方式类似&不再赘述%图$为26-?P T =P V 控制器的状态机示意图%当P T =@D 9=V D Q 寄存器的启动位被写入-%.时&处于空闲状态下的控制器进入写数据状态%.G 6U L T =P V 接口开始对指定地址范围写入所设>L ==P V 9%在完成指定地址范围的数据写入后&控制器进入读数据与数据校验状态%.G 6U L T =P V 接口读取指定地址范围的数据并校验%在完成指定范围数据的读取与比较后&进入测试完成状态&测试结果被写入.G 6T Q L O P 接口的测试结果寄存器中&同时完成中断信号置-%.%测试结果写入完成后&控制器回到空闲状态%图$!控制器状态机C D G !:."=H )'#"(?1','(*&"(]Q D 8:2P U D V B -P 9P V L =D V 可以使用+,-.内的]0.2资源生成性能优秀的存储器&这类存储器一般就被称为]0.2%在设计中]0.2被设置为真双口模式&用于存储读写校验发生错误的错误数据对应的地址信息%C D I !2J E:42)!",&("..'(.G 6]0.2@D 9=V D Q Q P V 提供了可供访问本地]0.2的.G 6T Q L O P 接口&支持突发事务&性能优秀%在设计中.G 6]0.2@D 9=V D Q Q P V 控制真双口]0.2的其中一个端口%3?.-=D.G 6可以通过此6,读取]0.2中的数据%C D K !L 6(&%*.E ,$%&M %&$%&^65用于在线监测或驱动+,-.内部的信号%本设计中主要使用^65驱动26-的复位信号&以及监测26-的初始化完成信号%^65由,@上位机通过3?.-接口控制%C D N !2J E &"O 921.G 6=D 3?.-用于生成.G 6接口事务%本设计中主要使用.G 6=D3?.-控制26-?P T =P V &并读回测试结果%.G 6=D 3?.-由,@上位机通过3?.-接口控制%C D P !E ,&'7(*&';Q "76=2,*.?R '(6A .用于捕获+,-.内部信号%本设计中主要使用6A .捕获读写数据校验错误时26-的.G 6接口的数据&并通过@A 命令将数据保存至,@上位机%6A .由,@上位机通过3?.-接口控制%C D S !2J E 5#*(&!",,'=&.G 61U L V =@D 99P 8=是由G ;Q ;9[官方提供的.G 6总线互联6,&可以将一个或多个.G 6内存映射主设备连接到一个或多个.G 6内存映射从设备%本设计中主要使用.G 61U L V =@D 99P 8=将各.G 6设备互联%F !0!上位机软件设计,@上位机软件的设计主要包括?@A 脚本设计与图形界面程序设计两个部分%F D B !9!Q 脚本设计@A 作为一门具有简明高效*便于移植的脚本语言&应用于众多H /.软件%^;O L S D 软件在?@A 语言的基础上增添了许多命令&以帮助开发者提高生产力%在本设计中&通过@A 脚本编程控制+,-.中的$个调试6,&配合完成初始化测试与读写测试两种测试功能%$R %R %!^65控制脚本通过在^;O L S D 软件中执行?@A 脚本&,@上位机可以控制^65的驱动值或读取^65探针的电平%需要修改^65输出探针驱动值时&使用T P =,>V D >P V =B 命令修改对应探针的5b ?,b ?,^.A b H 值&之后使用8D U U ;=,C Y ,O ;D 命令执行驱动值的修改%需要读取^65输入探针电平时&使用V P W V P T C ,C Y ,O ;D 命令刷新^65输入探针的电平&然后使用J P =,>V D >P V =B 命令获取对应探针的6a ,b ?,^.A b H 数值%$R %R "!.G 6=D 3?.-控制脚本,@上位机可以通过执行?@A 脚本来控制.G 6=D3?.-发起.G 6总线读写事务&从而访问目标设备%当需要对.G 6设备进行读操作时&使用8V P L =P ,C Y ,L [;,=[9命令创建读数据事务&执行V I 9,C Y ,L [;命令运行该事务%随后使用V P >D V =,C Y ,L [;,=[9命令报告读取数据%在完成传输数据事务后&使用S P Q P =P ,C Y ,L [;,=[9命令删除该事务%写.G 6设备数据的过程与读数据过程类似&区别在于生成写事务时需要指定事务类型为写&并增加一个写入数据作为参数%$R %R $!6A .控制脚本?@A 脚本可以控制6A .执行信号抓取任务&并将抓取的数据展示或保存下来%需要通过6A .抓取特定信号时&首先使用T P =,>V D >P V =B 命令修改需要抓取的信号以及触发方式&然后使用V I 9,C Y ,;Q L 命令开始执行抓取信号%抓取到信号后&使用I >Q D L S ,C Y ,;Q L ,S L =L 命令更新数据&并用Y V ;=P ,C Y ,;Q L ,S L =L 命令将抓取到的信号数据保存为;Q L 文件和8T O 文件&便于后续进行分析%$R %R (!初始化测试脚本初始化测试的原理是&对26-重复进行复位与初始化&记录该过程中26-是否能在限定时间内完成初始化%?@A 脚本编程的//01/0.2初始化测试流程如图(所示%在开始//01/0.2初始化测试后&首先控制^65驱动26-复位信号U ;J ,V T =,9为#&以确保26-处于复位状态%之后控制^65驱动26-复位信号U ;J ,V T =,9为%&26-开始一次初始化过程%之后^65监测的;9;=,8D U Z >Q P =P 信号的值&如果在指定时间内检测到高电平&则视为初始化成功&反之则视为初始化失败%完成测试结果记录后&判断已测试次数是否已达到指定的测试次数&如果已满足则输出测试结果&反之则返回第一步继续进行测试%!投稿网址 Y Y Y!7T 78Q B:\!8D U Copyright ©博看网. All Rights Reserved.第%#期谢树平&等)基于+,-.的//01/0.2""""""""""""""""""""""""""""""""""""""""""""""""""""测试平台设计#'%!#图(!初始化测试流程图$R %R 4!读写测试脚本读写测试的原理是&将测试参数写入26-?P T =P V&控制26-?P T =P V 开始读写测试&并将每次测试结果进行记录与统计%@A 脚本控制的读写测试流程如图4所示%首先控制3?.-=D.G 6向26-?P T =P V 写入读写测试的起止地址*写操作的>L ==P V 9与读写的突发数等测试参数%随后设置6A .的触发信号为错误标志信号P V V D V ,W Q L J 信号的高电平%写P T =@D 9=V D Q 寄存器启动26-?P T =P V %通过^65监控测试完成信号;9=V ,S D 9P 直到它变为高电平%至此一次测试完成&由3?.-=D.G 6读出测试结果并保存%随后判断测试次数是否以达到目标&若已达到则统计所有测试结果并输出&反之则再次启动测试%图4!读写测试流程图F D C !图形界面程序设计图形界面程序在,B E =4框架下进行开发%,B E =4衍生自@cc 的E ?库&具有能够跨平台兼容多种环境&功能强大&开源免费等优势%图形界面程序通过创建子进程的方式运行命令行程序&并在命令行程序中打开@A 模式的^;O L S D %点击程序中的功能按钮即可执行对应的^;O L S D 指令或者@A 脚本%图形界面程序的界面如图&所示&主要功能包括)%"人机交互)操作人员可以根据测试需求&在图形界面程序中调整测试参数*执行测试任务和读取测试信息%""器件控制)程序可以通过3?.-接口完成连接+,Z -.器件*状态检测*下载比特流*控制调试核等操作%$"统计结果)程序自动重复并统计测试结果&在测试循环完成后输出测试统计报告并保存为日志文件%图&!应用程序界面程序界面主要分为(个区域%区域%主要包括连接器件以及下载比特流文件功能%区域"包括初始化测试的参数设置与执行%区域$包括读写测试的参数设置与执行%区域(是一个文本框&输出文本信息%首先需要在区域%中完成器件的连接与比特流文件的下载%程序启动后将自动运行^;O L S D 子进程&并在文本框处提示-^;O L S D 启动中.%待^;O L S D 启动完成&文本框处打印-启动完成.信息&-连接器件.按钮变为可用%点击-连接器件.&^;O L S D 进程将打开硬件管理器&并尝试连接+,-.器件%如果未检测到+,-.器件&则打印-连接失败.信息&如果检测到+,-.器件&则在-当前器件.标签处显示检测到的器件型号*连接状态与编程状态%-器件型号.下拉选项和-比特流选择.下拉选项会自动筛选出符合当前器件的选项%用户需要在这一步自行选择适用的比特流文件并点击-下载比特流.按钮%等待文本框提示-比特流下载完成.&即可在区域"或区域$中执行后续测试%!投稿网址 Y Y Y!7T 78Q B:\!8D U Copyright ©博看网. All Rights Reserved.!!计算机测量与控制!第$%""""""""""""""""""""""""""""""""""""""""""""""""""""卷#'"!#区域"中&初始化时间限制即是?@A 脚本中判定初始化是否成功的界限&初始化测试次数是本次执行初始化测试的总测试数%执行测试后&测试结果打印在文本框中&并在完成一轮测试后生成日志文件%日志文件内容如图'所示&日志内容包括)测试日期*测试项目名*测试序号*初始化测试结果以及完成本轮次的测试后的统计数据%图'!初始化测试结果输出区域$中&软件将根据设置的起始地址*结束地址以及.G 6总线突发数量等参数&计算出对应的配置参数&并写入到26-?P T =P V 的配置寄存器中%可以勾选下方的测试>L ==P V 9复选框来选定本次测试需要测试的>L ==P V 9%勾选了自定义>L ==P V 9的情况下需要将自定义的>L ==P V 9填入后方的文本框内%设置好>L ==P V 9测试次数后点击-执行读写测试.按钮&软件将依次执行每个选定>L ==P V 9的测试%测试结果将打印在下方的文本框中&并在一轮测试完成后将生成日志文件%日志文件内容如图*所示&输出的内容包括)测试日期*测试项目名*测试序号*读写平均带宽*错误数据数量以及本轮次的测试的统计数据%图*!读写测试结果输出如果在读写测试过程中发生了读数据与预期数据不符的情况&6A .将抓取错误发生时.G 6总线上的信号并保存到硬盘上%在需要分析信号时&可以在^;O L S D 程序中使用V P L S ,C Y ,;Q L ,S L =L 命令读取数据&并用S ;T >Q L B ,CY ,;Q L ,S L =L 命令绘制信号波形图%如图)所示&图中标记的部分P V V D V ,W Q L J 信号为-%.&表示该位置出现了读写错误%图)!数据错误发生时的信号波形图同时]0.2接口写使能&将错误数据对应的地址信息写入]0.2中%程序可以通过3?.-=D.G 6访问26-中这些地址并读回数据&从而生成错误数据列表%如图%#所示&L S S V 是错误数据对应的地址%P [,S L =L 是期望数据&也就是读写功能正常情况下应读回的数据%V S ,S L =L 则是实际读回的数据%操作人员可以根据该报告分析可能存在的问题%图%#!错误数据记录文件G !实验结果与分析G D B !)E 19'+&'(功能验证使用^;O L S D 软件的仿真功能对26-?P T =P V 进行功能验证%配置.G 6^P V ;W ;8L =;D 96,为从模式&连接至26-?P T =P V 的.G 6U L T =P V 接口&在仿真中关注.G 6总线的读写事务以及相关信号的变化%在单次读写测试中&.G 6总线上先后发生的写事务与读事务%为了缩短仿真时间&测试的地址范围设置为#[#!#[&$+++%在通过控制接口启动测试后&26-?P T =P V 先对整个测试地址范围顺序写入一次>L ==P V 9&然后进入读取数据状态&并将读取的数据与预期数据进行校验%完成整个过程后&完成中断信号将被置-%.%在.G 6总线的写通道中&写地址L Y L S S V 在每次握手写!投稿网址 Y Y Y!7T 78Q B:\!8D U Copyright ©博看网. All Rights Reserved.第%#期谢树平&等)基于+,-.的//01/0.2""""""""""""""""""""""""""""""""""""""""""""""""""""测试平台设计#'$!#入后增加突发传输所占的地址大小&实现对测试地址范围内所有地址的写入%当设置的>L ==P V 9是递增数时&写数据Y S L =L 每写入一次数据后递增%%写突发结束计数器Y Q L T =,8D I 9=P V 在Y Q L T =信号置位时计数加一&用于控制数据的突发传输%Y V ;=P ,=;U P V 信号是写状态计时器&从测试进入写>L ==P V 9过程开始计时&直到进入读数据状态停止计时%在.G 6总线的读通道中&读地址L V L S S V 在每次握手写入后增加突发传输所占的地址大小&实现对测试地址范围内所有地址的读取%读数据V S L =L 是读回的数据%当设置的>L ==P V 9是递增数&预期数据P [>P 8=P S ,S L =L 每写入一次数据后发生递增%错误标志信号P V V D V ,W Q L J 的特征是在预期数据与读取数据V S L =L 不同时置%&由于读取过程中预期数据与读取数据相符&所以错误标志保持为#%读突发结束计数器V Q L T =,8D 9=P V 在每次V Q L T =信号置位时计数加一&用于控制状态机的转换%V P L S ,=;U P V 是读状态计时器&从状态机进入读数据状态开始计时&直到进入测试完成状态停止计时%然后人为插入错误数据验证数据校验模块功能是否正常%插入错误数据的方式如下)选择>L ==P V 9为递增数&并且当写入数据为.4时&将其替换为4.%在读数据时&读回数据V S L =L 为4.&与其对应的预期数据.4不符合&所以错误标志信号P V V D V ,W Q L J 置-%.&且错误计数器加一%证明数据校验功能正常%经过上述功能验证&可以确认测试6,核26-?P T =P V 逻辑功能符合预期&可以将其用于//01/0.2的测试%G D C !/012资源使用对比+,-.测试平台工程设计完毕后&在软件^;O L Z S D "#"#R "默认设置下执行生成比特文件%作为对比&打开26-的示例工程并生成比特文件%26-的示例工程常作为//01/0.2的测试调试工程使用%对比测试平台工程与示例工程的资源使用数量&结果如表"所示%测试平台工程资源使用量对比示例工程显著减少%其中作为+,-.主要资源的查找表!A b ?&Q D D :Z I >Z =L X Q P "的使用减少了$$R ""F &触发器!++&+Q ;>+Q D >"的使用减少了$*R (#F %表"!+,-.资源使用数量对比+,-.资源名测试平台工程示例工程A b ?%'(%4"&#*%A b ?0.2$)"&("%#++"#$'%$$#'#]0.2$)(*R 4G D F !/012板卡测试测试板卡使用的+,-.产自G ;Q ;9[公司&型号为[8':$"4=W W J )##Z "&使用的//01/0.2型号为2?*3?+"Z 4&&(M `Z %-&2%%(R $R %!测试流程//01/0.2测试基本流程如下)%"设计+,-.工程&生成比特流文件与Q =[文件!调试核信息文件"&并拷贝到图形界面程序目录下的X ;=T =V P L U 文件夹中%""使用仿真器将+,-.板卡连接至,@上位机并上电%打开图形界面程序&待启动完成后点击-连接器件.&等待连接完成&标签栏处出现+,-.器件名称与状态%$"选择与+,-.对应的比特流&点击-下载比特流.&等待比特流下载完成&标签栏处显示-已连接&已编程.%("在文本框中设置测试参数&根据测试需求执行相应的测试%在测试完成后&将在程序目录下生成测试结果报告%(R $R "!初始化测试根据赛灵思官方手册提供的数据&设置初始化时间限制为%###U T %执行%##次初始化测试%初始化测试结果如表$所示%在%##次初始化测试中&//01/0.2的初始化均在%###U T 以内完成%结果说明&测试板卡中的//01/0.2能够正常初始化%表$!初始化测试结果总初始化次数超时次数成功次数%###%##(R $R $!读写测试设置读写测试起始地址为#&结束地址为#['++++Z +++&即测试整个"-]的地址空间%设置.G 6总线突发数为&(&测试,L ==P V 9栏目中勾选递增数##*++*44*..&每个>L ==P V 9测试%##次%数据读写测试测试结果如表(所示%写平均带宽和读平均带宽分别达到了理论带宽的*$R )F 和**R %F &且没有出现过读写数据校验错误%证明了在测试环境下//01/0.2读写数据功能正常&带宽性能良好%表(!数据读写测试结果-]+T ,L ==P V 9写平均带宽读平均带宽理论带宽校验错误数递增数)R ))'%#R 4#"%%R )"%###)R ))'%#R 4#"%%R )"%#++)R ))'%#R 4#"%%R )"%#44)R ))'%#R 4#"%%R )"%#..)R ))'%#R 4#"%%R )"%#平均值)R ))'%#R 4#"%%R )"%#(R $R (!测试时长对比表4是两类测试的测试平均时长对比%对于初始化测试&示例工程的测试方法如下)操作人员使用^;O L S D 软件的硬件管理器控制^65输出的复位信号失效&之后通过^65观察26-输出的初始化完成信号是否置-%.&据此判断26-是否完成了初始化%在此过程中&操作人员需要不断重复上述过程%一方面存在操作人员操作或记录失误的可能性$另一方面手动操作效率低下&且无法准确判断初始化所用时长%对于读写测试&选用测试##*++*44*..与递增数物种>L ==P V 9的情况进行对比%示例工程的测试方!投稿网址 Y Y Y!7T 78Q B:\!8D U Copyright ©博看网. All Rights Reserved.。
基于FPGA的SDRAM控制器的设计与实现1.设计SDRAM控制器的功能:SDRAM控制器的主要功能是控制SDRAM的读写操作,包括地址、数据和控制信号的生成以及时序管理。
其次,还需要实现初始化、写入数据、读取数据等相关功能。
2.确定SDRAM的总线类型:SDRAM控制器需要根据不同的SDRAM接口类型进行设计,例如,DDR、SDR、LPDDR等。
不同的接口类型有不同的时序和数据传输方式,因此根据使用的SDRAM类型确定总线宽度、传输速率和时序约束等。
3.确定FPGA型号和资源:根据SDRAM控制器的设计规模和FPGA的资源情况选择合适的FPGA型号。
资源包括逻辑门、存储器单元、DSP片等,选择合适的型号可以满足设计要求并提高系统性能。
4.设计时序控制电路:根据SDRAM的时序要求,设计时序控制电路来实现SDRAM读写操作的同步和序列控制。
时序控制电路通常包括时钟分频模块、时钟同步模块、读写状态机和地址计数器等功能模块。
5.实现控制信号与FPGA引脚的映射:将SDRAM控制器内部产生的控制信号映射到FPGA引脚上,以便与SDRAM进行数据的传输和时钟同步。
通过FPGA引脚的选择和约束来满足SDRAM接口要求。
6.进行功能仿真和时序分析:在FPGA设计工具中进行功能仿真和时序分析,验证SDRAM控制器的设计是否满足功能要求,并检查时序约束是否满足。
7.进行硬件布局和布线:根据FPGA设计工具生成的后端文件,进行硬件布局和布线,将逻辑电路映射到FPGA芯片上,并考虑时序约束和引脚约束等因素,以满足设计要求。
8.进行SDRAM控制器的验证和调试:通过连接SDRAM和FPGA开发板,验证SDRAM控制器的读写操作是否正常,检查数据的正确性和时序的准确性。
9.进行性能优化和资源利用:根据实际需求,考虑对SDRAM控制器进行性能优化,例如增加缓存、提高数据通路宽度等。
同时,优化资源利用,减小逻辑门延迟和功耗等。
目前,在很多通信芯片及系统的开发中,常常需要用到存储容量大、读写速度高的存储器。
在各种随机存储器件中,SDRAM 的价格低、体积小、速度快、容量大,是比较理想的器件。
但是,与SRAM相比较,SDRAM的控制逻辑复杂,使用很不方便。
为了解决这个矛盾,需要设计专用的SDRAM控制器,使系统用户象使用SRAM一样方便的使用SDRAM是十分必要的。
本文介绍了SDRAM控制器的Verilog设计,并给出了实现结果。
一、 Sdram简介1、 Sdram的接口信号2、 Sdram启动和初始化系统商上电后,Sdram 必须经过初始化才能使用,初始化过程必须经过以下几个步骤:(1)发出NOP指令,等待1ms(2)执行PreChargeAll命令(3)执行8次AutoRefresh命令(4)设置模式寄存器(Mode Register)(5)等待Tmrd时钟,Sdram就可以正常读写了。
3、 Sdram的模式寄存器Mode Register 用于定义Sdram的运行模式。
在PC133规范中,Mode Register中包括了突发长度(Burst Length)、突发类型(Burst Type)和CASs延迟(CAS Latency)。
用过Mode Register Set 命令进行编程,这组信息将会保存知道Sdram掉电为止(具体的Mode Register定义和SDRAM的命令看对应Sdram的数据手册)。
二、 Sdram的命令解析1、 Bank Active 命令在进行任何的Read和Write 命令之前,Sdram首先要选择进行操作的Bank,并且还要打开这个Bank中相应的行,这个通过Bank Active 命令来实现,Bank Active打开BA指定的Bank,同时锁存行地址信号。
每个Bank 最长激活时间位 Tras,当Bank Active命令执行完毕以后,需要进行操作的的Bank中的行就会被打开,经过Trcd的延时之后,才可以进行Read或Write命令。
SDRAM硬件设计
SDRAM的硬件设计包括SDRAM芯片的电路设计以及在QuartusII顶层文件中SDRAM 控制器的引脚连接,下面以我前段时间做的FPGA开发板上的SDRAM电路为例来说明,板子已经顺利调通,证明电路没有问题。
一、SDRAM电路设计
上面为板子上SDRAM部分的电路(省略了一些电源去耦电容)。
芯片为三星的K4S641632H,4M*16位。
介绍一些主要引脚的作用:
CKE: 时钟使能
A:地址线
BA:bank地址选择信号
RAS:行选择信号
CAS:列选择信号
WE:写使能信号
DQM:数据掩码
DQ:数据线
二、基于SDRAM的最小系统
在CPU的属性中设置如下:
三、SDRAM控制器的引脚连线
Nios II中没有优化的程序非常耗内存,FPGA自带的RAM(我用的是EP2C8)很难满足要求,因此在Nios II开发板上SDRAM基本是必须的,SDRAM能够提供大容量的内存。
调通SDRAM后基本就解决了内存紧张的情况。