版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
普通本科毕业设计题目:基于FPGA的DDRSDRAM控制器的设计摘要随着半导体技术的开展,A/D采样的速率越来越高,相应需要越来越大容量的存储器。存储器是目前数字系统中的关键部件之一,DDRSDRAMDoubleDataRateSDRAM,双倍数据率同步动态随机存储器以其大容量、高速率和良好的兼容性以及低本钱在计算机、消费类电子、通信等领域得到了相当广泛的应用。DDR控制器实际上就是用户端与DDR存储器之间进行数据传输的一个桥梁,通过DDR控制器,用户端命令被转化成DDR存储器所支持的命令格式,从而实现用户端对DDR的访问。本文对DDRSDRAM及其控制器的结构、接口和时序进行了深入研究与分析,得出一些DDRSDRAM控制器的关键技术特性,然后基于Altera公司CycloneII系列的FPGA芯片EP2C8Q208C8平台,利用Verilog硬件描述语言设计实现了DDRSDRAM存储控制器。编写自动生成自加数据的模块,将自加数据写入到SDRAM中,再从SDRAM中读回,从UART发送出去并在串口调试工具上显示。【关键词】可编程逻辑门阵列DDRSDRAM存储控制器通用异步收发器
AbstractAlongwiththedevelopmentofsemiconductortechnology,A/Dsamplingrateishigherandhigher,requiringmorecapacityofcorresponding.Storageofmemoryisoneofthecrucialdevicesinthedigitalsystematpresent,theDDRDoubleDataRateSDRAMhasmanyadvantagesforit'slargecapacity,highspeedandthelowcost,ithasbeenusedinquiteanumberoffields,suchastheServer,theWorkStation,thePersonalcomputerandtheconsumerelectronics,thecommunicationandotherareas.DDRcontrolleractuallyisabridgebetweenclientandDDRmemoryfordatatransmission,throughtheDDRcontroller,clientcommandwasconvertedintotheDDRmemorywhichsupportcommandformat,soastorealizethevisitofDDRclients.ThepivotaltechnologiesofDDRSDRAMandmemorycontroller,suchasStructure,InterfaceandTimingareexploredinthisarticle,afteraresearchonthemainfeatureinsidetheDDRcontroller,severalfunctionalmodulesofthecontrolleraredesignedout,andthenbasedonFPGAchipCycloneIIAlteracompanyEP2C8Q208C8platformseriesusedVeriloghardwaredescriptionlanguage.Writeautomaticgenerationandadddatamodules,withdatafromthedatawrittentoaddSDRAM,andagainreadbackfromSDRAM,senditoutfromUARTanddisplayonserialportdebuggingtools.【Keywords】FPGA;DDRSDRAM;MemoryController;UART
目录1绪论 21.1DDRSDRAM的现状及开展趋势 2DDR内存的现状 2DDR内存的开展趋势 31.2课题研究的意义 31.3课题研究的要求 21.4本文的安排 22DDRSDRAM技术介绍 42.1DDRSDRAM的分类 42.2DDRSDRAM的根本概念 4DRAM存储原理 5DDRSDRAM的逻辑BANK与芯片位宽 5DDRSDRAM芯片容量 5DDRSDRAM内存刷新 62.3DDRSDRAM的命令 6初始化 6DDRSDRAM指令 72.4DDRSDRAM读写操作时序 8读操作时序 8写操作时序 83FPGA和QuartusII简介 103.1FPGA技术简介 10FPGA根本结构 10FPGA的根本特点 10FPGA芯片的选择 113.2QuartusⅡ简介 113.3QuartusII的设计流程 114系统硬件设计 134.1系统整体框架 134.2自动累加数据产生模块 134.3DDRSDRAM控制器模块 14DDRSDRAM控制器整体状态分析 14DDRSDRAM控制器总体架构 15输入/输出FIFO模块 16控制接口模块设计 17控制接口模块设计 19数据通路模块设计 214.4串口读数据模块 235系统控制器的功能验证 265.1系统控制器的功能仿真 26系统控制器Testbench设计 26系统控制器Testbench总体架构 26DDRSDRAMControllerTestbench顶层模块设计 26DDRSDRAMControllerTestbench仿真波形 275.2串口读取数据验证 286总结 29参考文献 30致谢 311绪论1.1DDRSDRAM的现状及开展趋势DDR内存的现状目前DDR内存市场占有量非常大,尤其是近些年随着市场需求的高速增长使得参加该行业和研究该技术的人员也越来越多,DDR控制技术处于高速开展阶段。和显卡、主板等差异化较大的市场相比,内存市场由于有着强大的JDEDC把持,并且产品本身形态较为单一,因此各家产品性能和设计差距都不太大,同质化现象较严重。不过,同质化并不意味着开展速度慢,相反,也正是由于有了统一的JEDEC标准,内存一直按部就班地开展着。对于DDR系统来说,DDR控制器的研究是其关键核心,该局部要完成读写控制、地址控制等功能。DDR内存的开展趋势第一代DDR200标准并没有得到普及,第二代PC266DDRSDRAM〔133MHz时钟×2倍数据传输=266MHz带宽〕是由PC133SDRAM内存所衍生出的,它将DDR内存带向第一个高潮,其后来的DDR333内存也属于一种过度,而DDR400内存成为目前的主流平台选配,双通道DDR400内存已经成为800FSB处理器搭配的根本标准,随后的DDR533标准那么成为超频用户的选择对象。现在DDR2/3都在扩大产量,DDR3量产后,供给将大增,而本钱将会降低,所以DDR3将会降价,这样也能促进普及,而普及又会促使厂商增加产量,产量增加又会进一步摊薄本钱降低价格。随着人们要求的变高,速率更快容量更大的内存不断会涌现出来。1.2课题研究的意义DDR内存遍布于各种电子产品,正渐渐成为现代社会中不可或缺的信息存储载体。存储器对现在的数字化系统性能至关重要,是决定系统性能的关键设备之一。面对越来越多样化的应用需求,存储技术开展得相当迅速,其中DDRSDRAM作为一种在性能与本钱之间折中的解决方案,以其高速、大容量、运行稳定与高性价比等优点已经成为目前存储器的主流。
随着电子技术在工业、医疗、商业等领域的开展,人们对数据传输率的要求越来越高,传统的单片机早已不能满足这种高速数据传输的要求。与此同时,可编程逻辑器件FPGA以其强大的功能,开发过程投资小、周期短,可反复编程修改,开发工具智能化等特点,成为当今硬件设计的潮流;它的集成度高,可完成极其复杂的时序与组合逻辑电路功能,更适用于高速、高密度的高端数字逻辑电路设计领域。本设计采用FPGA来进行系统设计。采用传统的单片机编程实现算法的方法虽灵活性较高,但是执行复杂工作时处理速度远远不能满足要求,而且单片机的时序性较差。要改善这个问题,FPGA是很好的选择之一,它有足够大的逻辑阵列密度百万门级以上,比拟高的速度400MHZ以上。由此可见,采用FPGA完成DDRSDRAM控制器的设计可以使内存上升到一个新级别。因此对DDR存储控制器的设计研究具有重要意义。1.3课题研究的要求本课题要求完成基于FPGA的DDRSDRAM〔此SDRAM为公司的K4S6432H芯片〕控制器的设计,实现以下功能要求:〔1〕初始化DDRSDRAM;〔2〕简化DDRSDRAM的读写时序;〔3〕将DDRSDRAM接口的双时钟沿数据转换为单时钟沿数据,使得对DDRSDRAM的操作类似于普通RAM;〔4〕控制器还要产生周期性的刷新命令来维持DDRSDRAM内的数据而不丧失。1.4本文的安排本文对DDRSDRAM控制器从整体设计到各局部细化设计展开讨论,对系统涉及的各模块的设计进行详细描述,最后对系统功能仿真以及读写数据验证。全文的内容安排如下:第一局部为绪论。简单介绍了内存的现状与开展趋势,对本课题的研究意义及其要求做了简单论述。第二局部,介绍了DDRSDRAM相关技术,首先对DDR的存储原理、逻辑BANK、位宽等根本概念进行了大致介绍,然后对其命令进行简单介绍,最后对其读写时序做了详细分析。第三局部,介绍了FPGA相关知识并对此系统开发平台QuartusII也进行了简单介绍,接着描绘了此系统在开发平台上的设计流程。第四局部,详细介绍了系统的整体架构包括自数据生成模块、控制器模块、串口读模块,并分别重点构成控制器的主要模块:输入/输出FIFO模块、数据接口模块、命令模块、数据通路模块。第五局部,主要是对控制系统的功能进行验证。将编写好的测试文件在Modelsim平台上完成功能仿真,并对系统的读写功能进行了串口输出验证。最后,总结
2DDRSDRAM技术介绍2.1DDRSDRAM的分类DDR的频率可以用工作频率和等效频率两种方式表示,工作频率是内存颗粒实际的工作频率,但是由于DDR内存可以在脉冲的上升和下降沿都传输数据,因此传输数据的等效频率是工作频率的两倍。按DDR的频率可分为以下几类,如表2.1所示。表2.1DDR内存分类DDR规格 传输标准 实际频率 等效传输频率 数据传输率 DDR200 PC1600 100MHz 200MHz 1600MB/s DDR266 PC2100 133MHz 266MHz 2100MB/s DDR333 PC2700 166MHz 333MHz 2700MB/s DDR400 PC3200 200MHz 400MHz 3200MB/s DDR433 PC3500 216MHz 433MHz 3500MB/s DDR533 PC4300 266MHz 533MHz 4300MB/s 2.2DDRSDRAM的根本概念DDRSDRAM是DoubleDataRateSDRAM的缩写,是双倍速率同步动态随机存储器的意思。DDR存储器的核心建立在SDRAM的根底上,但在速度和容量上有了提高。首先,它使用了更多、更先进的同步电路,使用了差分时钟输入;其次,DDR使用了和数据选通滤波信号DataStrobesignal,当数据有效时,存储控制器可使用这个数据选通滤波信号来精确定位数据,每8位数据对应输出一次数据选通滤波信号,并且同步来自不同的双存储器模块的数据。DDR存储器本质上不需要提高时钟频率就能加倍提高SDRAM的速度,它允许在时钟脉冲的上升治和下降沿读出数据,因而其速度是标准SDRAM的两倍。至于地址与控制信号那么与传统SDRAM相同,仍在时钟上升沿进行传输。DDR存储器的设计可让存储控制器每一组DQ/DQS/DM与DIMMDualIn-lineMemoryModule,双列直插式存储器模块上的颗粒相接时,维持相同的负载,减少对主板的影响。在存储器架构上,传统SDRAM属于8组式,即存储器核心中的I/O存放器有8位数据I/O,但对于8组的DDRSDRAM而言,存储器核心中的I/O存放器却是16位的,即在时钟信号上升沿时输出8位数据,下降沿再输出8位数据,一个时钟周期总共可传输16位数据。DDR芯片内部除了四个存储矩阵四个逻辑BANK之外,就是一些控制逻辑、行列缓冲与解码、I/O存放器或缓冲,使用双向的DQS信号进行源同步计时定位读/写的数据信号。DDR存储器可以在不用大量增加管脚的情况下,大幅度提高数据传输的带宽〔提高了一倍〕,并且目前价格也非常廉价,性价比很高,足以满足一般的存储设计需求。DRAM存储原理DRAM利用MOS管的栅电容上的电荷来存储信息,一个DRAM的存储单元存储的是0还是1取决于电容是否有电荷,有电荷代表1,无电荷代表0。但时间一长,由于栅极漏电,代表1的电容会放电,代表0的电容会吸收电荷,这样会造成数据丧失,因此需要一个外设电路进行内存刷新操作。刷新操作定期对电容进行检查,假设电量大于满电量的1/2,那么认为其代表1,并把电容充满电;假设电量小于1/2,那么认为其代表0,并把电容放电,藉此来保持数据的连续性。DDRSDRAM的逻辑BANK与芯片位宽DDRSDRAM是一种高速CMOS动态随机访问存储器,它在内部被配制成4个BANK的DRAM,外部数据具有4位、8位、16位三种宽度。DDRSDRAM中每一个BANK中的存储单元被组织成正方阵列,由假设干行和假设干列组成,这些存储单元通过行和列的地址译码器来寻址。对于任何一个单元的读操作,整个行均被读出,然后重新写回〔刷新〕。对于任何一个单元的写操作,整个行均被读出,然后改变其中一个单元的值,最后将整个行写回。阵列就如同表格一样,将数据填进去,可以把它想象成一张表格。和表格的检索原理一样,先指定一个行〔Row〕,再指定一个列〔Column〕,我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的根本原理。对于内存,这个单元格可称为存储单元。DDRSDRAM芯片容量内存芯片的容量就是所有L-BANK中的存储单元的容量总和,计算有多少个存储单元和计算表格中的单元数量方法一样:芯片容量存储单元数量位宽〔行数列数L-BANK数量〕位宽DDR?SDRAM具有如下的容量:〔1〕64Mb〔即67,108,864位〕:16M×4〔4M×4×4banks〕、8M×8〔2M×8×4banks〕、4M×16〔1M×16×4banks〕;〔2〕128Mb〔即134,217,728位〕:32M×4〔4M×4×4banks〕、16M×8〔2M×8×4banks〕、8M×16〔1M×16×4banks〕;〔3〕256Mb〔即268,435,456位〕:64M×4〔4M×4×4banks〕、32M×8〔2M×8×4banks〕、16M×16〔1M×16×4banks〕;〔4〕512Mb〔即536,870,912位〕:128M×4〔4M×4×4banks〕、64M×8〔2M×8×4banks〕、32M×16〔1M×16×4banks〕;〔5〕1Gb〔即1,073,741,824位〕:256M×4〔4M×4×4banks〕、128M×8〔2M×8×4banks〕、64M×16〔1M×16×4banks〕可以发现由于位宽的变化引起了存储单元的数量变化,也就是说在相同的总容量下,可以采用多种不同的位宽设计。DDRSDRAM内存刷新内存条应该叫做动态DRAM,其中的数据是靠电容特性存储的。由于电容会放电,要维持数据,就要不断的给它充电。给动态DRAM定期充电的机制就叫做数据刷新时钟电路,即内存刷新电路。一般情况下,内存刷新电路必须在数毫秒之内对DRAM刷新一次,否那么数据就会丧失。很像是一个流沙漏斗,一旦不加沙就会完全漏光。刷新频率由芯片的工作频率以及每个BANK包含的行数决定。2.3DDRSDRAM的命令初始化DDRSDRAM是一种易失性存储器器件,也就是说,当器件掉电后,存储在DDRSDRAM中的所有内容及其配置信息将会丧失。DDRSDRAM每次上电后,必须按一定的顺序来初始化其内部状态机并配置用户定义的操作参数,否那么会引起不可预料的操作结果。DDRSDRAM指令DDRSDRAM支持的指令与SDRSDRAM根本一致,本将其根本指令,表2.2中的操作主要由CSn,RASn,CASn,WEn这四个信号来控制〔CKE在这些操作下为高电平〕,需要由CKE来控制的信号放在了表2.3中,即对DDRSDRAM工作状态的配置必须配合CKE信号来完成。表2.2DDR根本指令真值表命令 符号 CSn RASn CASn WEn 无操作 NOP L X X 读 READ L H L H 写 WRIT L H L L 行激活 ACT L L H H 自动刷新 REF L L L H 预充电 PRE L L H L 写模式存放器 MRS L L L L 注:L代表低电平,H代表高电平,代表高电平或低电平操作 符号 CKEn-1 CKE 命令 进入自动刷新 SELF H L REF 退出自动刷新 SRE× H H DSEL/NOP 进入低功耗 PWDN H L DSEL/NOP 退出低功耗 PDE× H H DSEL/NOP 表2.3DDR根本指令真值表注:CKEn是CKE信号在第n个clock上升沿的逻辑状态,CKEn-1是CKE信号在第n-1个clock上升沿的状态。2.4DDRSDRAM读写操读操作时序读操作的时序图如2-1所示:图2-1DDRSDRAM读操作时序图上图的信号:CK和/CK是一组差分时钟,CK的上升沿对准COMMAND〔命令〕和ADDRESS〔地址〕的中央,一般叫做center-align〔中间对齐〕。ADDRESS只是一个columnaddress〔列地址,行地址已经在前面用ACTIVE命令翻开了。DQ即数据总线,具有双向性,在空闲时为高阻。DQS可以理解为数据使能信号,和数据同步,在空闲时也为高阻。DQ和DQS都是和时钟边沿对齐,叫做edge-align〔边沿对齐〕。另外上面有一个CL=2.5的标识,CL即CASLatency。CL是指内存在收到列地址信号〔ColumnAddressStrobe〕后,要等待多少个系统时钟周期后才进行读取的动作。注意到上图中在列地址被采样2.5个时钟周期后,数据总线上出现了有效的读数据。写操作时序100MHz的时钟从缓存中读走宽度为16位的数据,当缓存内部的读计数器计数到达设定值时,FULL信号置低,控制器的读操作停止。在DDR控制接口模块产生的时序配合下以双倍速率完成一次突发写。和读操作不同是发出写命令〔write〕后,需要等待DQS时间才能送出写数据〔DQ〕和DQS。tDQS参数是指DQS的第一个跳变沿相对于写命令的延时时间,tDQS有最大值和最小值,就是说在最大最小值之间将DQ/DQS送出来,DDRSDRAM都能够正常接收。写操作时序图如2-2图2-2DDRSDRAM写操作时序图
3FPGA和QuartusII简介本次设计就是以EDA技术为根底,使用基于FPGA技术,利用Altera公司开发的功能强大的QuartusII9.1开发软件来完成相关的设计。3.1FPGA技术简介FPGA根本结构FPGA的结构一般分为三局部:可编程输入/输出模块、可编程逻辑单元〔LE〕、可编程内部互连资源〔IR〕。LE是FPGA芯片实现逻辑的根本结构,LE之间可以灵活地互相连接。LE的功能很强,不仅能够实现逻辑函数,还可以配置成RAM等复杂的形式。FPGA采用SRAM进行功能配置,可重复编程,但系统掉电后,SRAM中的数据丧失。因此需在FPGA外加EPROM或FLASH,将配置数据写入其中,系统每次上电自动将数据加载到SRAM中。装载的过程是在FPGA内部的一个时序电路的控制下自动进行的,所以在为FPGA设计电路时,一定要给它配备一个专用的配置芯片。除了上述构成FPGA根本结构的三种资源以外,随着工艺的进步和应用系统需求的开展,一般在FPGA中还可能包含以下可选资源:存储器资源〔块RAM、分布式RAM〕;数字时钟管理单元〔分频/倍频、数字延迟、时钟锁定〕;算数运算单元〔高速硬件乘法器、乘加器〕;多电平标准兼容的I/O接口;高速串行I/O接口;特殊功能模块〔以太网MAC等硬IP核〕;微处理器〔PowerPC405等硬处理器口核〕。FPGA的根本特点FPGA有以下特点:采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片;FPGA可做其它全定制或半定制ASIC电路的中试样片;FPGA内部有丰富的触发器和I/O引脚;FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一;FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。随着微电子技术、EDA技术、以及应用系统需求的开展,可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最正确选择之一。FPGA正在逐渐成为数字系统开发的平台,并将在以下方面继续完善和提高:〔1〕高集成度,大容量、低本钱、低电压,低功耗;〔2〕资源多样化;〔3〕适用于片上系统:处理器、高速串行I/O、DSP等等;〔4〕深亚微米工艺的使用。目前基于90nm工艺的FPGA已经商用,正在向65nm挺进;〔5〕各种软硬IP库的开展和完善;〔6〕动态可重构技术实用化。FPGA芯片的选择根据系统的功能要求,本设计使用的FPGA是Altera公司的CycloneII系列的EP2C8Q208C8,CycloneIIFPGA是Altera公司推出的低本钱FPGA。CycloneII系列的FPGA有专门的DDRSDRAM接口电路,可以方便地实现FPGA与DDRSDRAM的连接。在整个逻辑设计中,利用Altera公司的PLL锁相环Megafuntion产生所需要的时钟,采用AlteraLPM宏功能模块中的异步FIFO,DD控制器接口采用AlteraLPM宏功能模块中的DDRMEMORY接口。采用现成的IP核,方便了我们的设计,不仅在设计效率上得到了提高,而且在可靠性方面也得到了一定程度的保证。DDRSDRAM系统中数据通路设计以及控制时序是本系统设计的核心,在构建系统之前,基于以下因素选择了CycloneII系列的EP2C8芯片:〔1〕高达400MHz的工作频率可以满足高速数据处理以及传输的要求;〔2〕Altera公司研发的QuartusII软件拥有更直观的开发界面,为整个系统的扩展和开发提供了很大的便捷。3.2QuartusⅡ简介QuartusII是Altera开发的CPLD/FPGA应用软件工具,QuartusII提供了完善的集成而且与电路构造不关联的设计环境,拥有数字逻辑设计的全部特性。此外,QuartusII软件为设计流程的每个阶段提供QuartusII图形用户界面、EDA工具界面和命令行界面。设计流程包括以下几个步骤:设计输入;综合;仿真;器件编程与配置。其中器件编程与配置包括以下四种编程模式:被动串行模式、JTAG模式、插座内编程模式和主动串行模式。3.3QuartusII的设计流程建立工程是每个开发过程的开始,当工程建立好后,要适中选择设计的输入方式,设计输入就是完成电路设计。QuartusII提供原理图输入方式、文本输入方式和内存编辑输入方式。大多数工程设计时,都会用到LPM功能模块和宏功能模块来加速设计输入。当编译成功后,进行功能仿真验证电路功能是否正确。通过功能仿真能及时发现设计中的错误,加快设计速度,提高设计的可靠性。综合优化是指将HDL语言、原理图等设计输入翻译成由与、或、非门,RAM,触发器等根本逻辑单元组成的逻辑连接。综合优化完成后需要检查综合结果是否与原设计一致,做综合后仿真。在仿真时,把综合优化生成的标准延时文件反标注到综合仿真模型中去,可估计门延时带来的影响.综合后仿真虽然比功能仿真准确一些,但是只能估计门延时,不能估计线延时。这些都通过后,进行程序下载和功能确认。满足设计要求,设计完成,否那么继续上述工作。设计流程如图3-1所示图3-1QuartusII设计流程图4系统硬件设计4.1系统整体框架系统主要由三大块组成,分别是自加数据产生模块、DDRSDRAM控制器模块、串口读数据模块。其中DDRSDRAM控制器模块是本设计的重点,它又由命令模块、控制器接口模块、数据通路模块相互协作来完成数据的读写操作。系统的整体框架如图4-1所示。图4-1系统整体框图4.2自加数据产生模块为了验证DDRSDRAM控制器的功能,在FPGA内部设计了一个自数据产生器供给SDRAM的写入数据局部。自加数据产生模块的原理图如图4-2所示图4-2自加数据产生模块自加数据产生模块局部代码如下:always@posedgeclkornegedgerst_nif!rst_nwrf_dinr16'd0;wrf_dinrwrf_dinr+1'b1; //写入数据递增ssignwrf_wrreqwrf_wrreqr;assignwrf_dinwrf_dinr;endmodule4.3DDRSDRAM控制器模块控制器整体状态分析状态转换图如图4-3所示。图4-3DDRSDRAM控制器状态机控制器总体架构控制器包括输入输出FIFO、控制接口模块、CMD命令模块、数据通路模块。其中控制接口模块包括命令接口模块和刷新控制模块,用于接收系统的控制信号,进而产生不同的CMD命令模块用于接收CMD命令并解码成操作指令并产生SDRAM的操作动作,包括仲裁和命令产生模块;数据通路模块那么用于控制数据的有效输入和输出。大致框架如图4-4所示图4-4DDRSDRAM控制器框图输入/输出FIFO模块FIFO模块的顶层原理图文件如图4-5所示。图4-5输入输出FIFO模块FIFO模块局部代码如下://例化SDRAM写入数据缓存FIFO模块Wrfifouut_wrfifodatawrf_din,rdclkclk_100m,rdreqsdram_wr_ack,wrclkclk_25m,wrreqwrf_wrreq,qsys_data_in,wrusedwwrf_use;//例化SDRAM读出数据缓存FIFO模块Rdfifouut_rdfifodatasys_data_out,rdclkclk_25m,rdreqrdf_rdreq,wrclkclk_100m,wrreq/*rdf_wrreq*/sdram_rd_ack,qrdf_dout,wrusedwrdf_use;endmodule控制接口模块设计系统控制接口模块包括命令接口和刷新控制两个模块,该模块内含了初始化机制和系统指令分析机制。将CMD[2:0]翻译成接口指令和对刷新计数器的控制。首先通过状态机完成对CMD[2:0]的翻译,根据CMD[2:0]输入来决定状态的转移,完成CMD[2:0]的解码,系统控制接口模块如图4-6所示。SDRAM需要周期性刷新来保持数据的不丧失,芯片数据手册中通常会给出在一定时间T内至少刷新次,如果用户使用的频率为FMHz的时钟,那么刷新周期Tf可以通过Tf〔T*Fr〕/计算得到。刷新控制在程序中通过一个计数器来完成,当到达规定的计数周期,就向SDRAM发出REFREQ刷新请求,知道SDRAM完成刷新操作,发出REFACK刷新应答信号,计数器才重新赋值开始下一次的计数。上述初始化过程结束后,系统指令分析机制才可接收并分析系统的读写信号和地址信息,以及从下个模块反应回来的CMDACK信号,并产生对应的CMD命令和SADDR地址信息给CMD命令解析模块。通过程序设置,实现了根据初始化配置的参数来确定在读写到特定时刻发出recharge或者Refresh的CMD指令,从而简化了系统的控制。而每当收到CMDACK为1时,表示CMD指令已经发出并有效,此时就要发出NOP命令。要说明的是,SADDR是分时复用的,在初始化载入模式时,SADDR用以传输用户自己定义的模式字内容;而在正常的读写期间,SADDR作为地址线传输SDRAM所需的行、列和块地址。此外,系统指令分析机制会根据控制器对SDRAM的操作处于什么样的状态,而反应SDRAM_FREE和FDATA_ENABLE信号给系统用户。图4-6系统控制接口模块ddr_control_interface模块局部代码:always@posedgeCLKornegedgeRESET_NbeginifRESET_N0beginNOP0;READA0;WRITEA0;REFRESH0;PRECHARGE0;LOAD_MODE0;LOAD_REG20;LOAD_REG10;SADDR0;end//Thisalwaysblockimplementstherefreshtimer刷新计时器〔16bit〕执行逻辑always@posedgeCLKornegedgeRESET_NbeginifRESET_N0begintimer0;timer_zero0;REF_REQ0;endendmodule控制接口模块设计此模块由两个子模块组成:命令仲裁子模块和命令产生子模块。命令仲裁子模块主要用来对主机总线命令和由控制器产生的刷新命令进行决断。该模块对CMD指令进行判断,其结果就是输出相应的操作指令信号给命令响应模块。例如,CMD为001时,那么会输出do_read信号为1,CMD为010时,那么会输出do_write信号为1,在同一时刻,只会输出一种有效的的操作指令。此外,该模块内含用以预设某些模式参数的模式存放器,主要包括三类:第一类是SDRAM模式控制存放器,在LOAD_MODE指令时,将该存放器的值送入SDRAM的模式存放器中,以控制SDRAM的工作模式第二类是SDRAM控制器的参数存放器LOAD_REG1,使得SDRAM控制器的工作方式与外部的SDRAM器件的工作方式匹配第三类是SDRAM的刷新周期控制存放器,该存放器预设用户定义的自动刷新计数值,用于SDRAM的刷新周期预设。上述三类存放器的预设值都是系统控制接口模块在初始化时通过SADDR传送给来的。assignraddrADDR[ROWSTART+ROWSIZE-1:ROWSTART]//raddr为行地址assigncaddrADDR[COLSTART+COLSIZE-1:COLSTART]//caddr为列地址assignbaddrADDR[BANKSTART+`BANKSIZE-1:BANKSTART]//baddr为BANK地址ROWSTART、COLSTART、BANKSTART分别为行、列、块在ADDR中的起始位在程序中,WRITEA和READA的CMD指令实际隐含了ACTIVE命令,所以该模块在收到do_write或do_read指令后,会先进行激活动作,经过初始化配置规定的CAS延迟时间之后再进行读写动作。例如初始化时,模式字规定CAS=2,BURSTLENGTHPAGE,那么从命令接口模块收到do_write1后,会先做出激活动作并给出行地址发出RAS_N0,CAS_N1,WE_N1,SAraddr,过2个时钟延迟后,再做出写动作并给出列地址发出RAS_N1,CAS_N0,WE_N0,SAcaddr。此外,收到各类操作指令后,该模块会反应给CMD命令解析模块cmdack信号为1,并最终反应到系统控制接口模块的CMDACK信号为1,如果没有收到任何操作指令,那么cmdack0,CMDACK信号为。系统控制命令模块如图4-7所示图4-7命令模块ddr_command局部代码如下://address,cs,cke,andcommandsignalsras,cas,wen产生逻辑always@posedgeCLKbeginifRESET_N0beginSA0;BA0;CS_N1;RAS_N1;CAS_N1;WE_N1;CKE0;end elsebeginCKE1;endmodule数据通路模块设计数据通路模块主要是在writea和reada命令期间处理数据的通路操作,是对时序要求最为严格的局部,也是最关键的局部。由于在上升沿和下降沿都需要处理数据,所以需要采用一些其他资源来保证时序的精确性。DQ是双向数据线,用来传输从SDRAM读出数据和向SDRAM写入的数据。无论是数据在读出还是写入时,都是在OE有效,即OE为高电平时才能进行传输。DM是由主机输入的数据掩码,通过DQM输出到SDRAM的LDQM和UDQM管脚,进而控制SDRAMI/O缓冲的低字节和高字节。该模块受OE信号的控制,使数据的进出和相应的操作指令在时序上同步,如图4-8所示。根据系统设计对SDRAM读写要求的不同,对控制器进行简单的参数修改〔主要是初始化时模块内容字的设置〕,即可使对SDRAM的控制符合自己的要求。该控制器使得系统对SDRAM的操作非常简单。以写操作为例,初始化结束后,只要SDRAM空闲,系统就会收到SDRAM-FREE有效信号,此时可以发出FPGA-WR指令,同时给出ADDR地址信息,在收到反应的FDATA-ENABLE有效后,系统将数据通过DATAIN写到SDRAM中去,即完成写操作,系统无需关心SDRAM的刷新和预充。图4-8数据通路模块ddr_data_path局部代码如下://采集来自SDRAM的读数据,产生DQS信号always@negedgeCLK200ornegedgeRESET_NbeginifRESET_N0begindqs1a0;dqs2a0;dqs1b0;dqs2b0;delayed_OE0;din2x_10;din2x_20;dqs_oea0;dqs_oeb0;end……assignDQOUTdq2;assignDQOEioen;assignDQS[0]dqs_oea?dqs2a:1'bz;assignDQS[1]dqs_oeb?dqs2b:1'bz;endmodule4.4串口读数据模块为了实现读出数据的可视化显示效果,设计在电脑上显示出来。串口显示模块的顶层原理图文件如图4-9所示。图4-9串口读数据模块uart_ctrl模块的局部代码如下:moduleuart_ctrlclk,rst_n,tx_data,tx_start,fifo232_rdreq,rs232_tx;inputclk;//25MHz主时钟inputrst_n;//低电平复位信号input[7:0]t_data;//待发送数据inputt_start;//串口发送数据启动标志位,高有效outputfifo232_rdreq;//FIFO读请求信号,高有效outputrs232_t;//RS232发送数据信号////串口发送底层模块和串口波特率选择模块接口wireclk_bps;//发送数据标志位,高有效wirebps_start;//波特率时钟计数器启动信号,高有效////例化串口数据发送底层模块uart_tuut_txclkclk,rst_nrst_n,tx_datatx_data,tx_starttx_start,clk_bpsclk_bps,rs232_txrs232_tx,bps_startbps_start,fifo232_rdreqfifo232_rdreq;//例化串口数据发送波特率控制模块uart_speed_selectuut_ssclkclk,rst_nrst_n,bps_startbps_start,clk_bpsclk_bps;endmodule
5系统控制器的验证5.1控制器的功能仿真控制器Testbench设计在完成一个设计后,需要进行测试以确认设计的正确性和完整性。而要进行测试,就需要编写测试鼓励和结果检查程序,即测试平台〔testbench〕。本设计的控制器功能仿真通过利用Verilog语言写testbench的方法,以Mentor公司的Modelsim作为仿真工具,通过检查波形来完成。Testbench不仅要产生鼓励〔即输入〕,还要验证响应〔即输出〕。控制器Testbench总体架构图5-1DDRSDRAMControllerTestbench总体架构DDRSDRAMControllerTestbench顶层模块设计DDRSDRAMControllerTestbench局部程序代码如下:$display"Writingpattern0fffffff0,0xfffffff1,0xfffffff2,0xfffffff3,0xfffffff4,0xfffffff5,0xfffffff6,0xfffffff7";$display"withDMsetto0xf";burst_write0,32'hfffffff0,16'hffff,3,4;$display"Readingandverifingthatthepatternatsdramaddress0x0is";$display"still0,1,2,3,4,5,6,7";burst_read0,0,3,3,4;DDRSDRAMControllerTestbench仿真波形DDRSDRAMControllerTestbench对SDRAM写仿真波形,如图5-2所示。图5-2Testbench对SDRAM写仿真波形DDRSDRAMControllerTestbench对SDRAM读、校验仿真波形,如图5-3所示。5-3Testbench对SDRAM读、校验仿真波形5.2串口读取数据验证DDRSDRAM控制器的读信号进行了实时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中语文教资面试2026强化训练题库及解析
- 高中数学2026教资面试全真模拟题库及解析
- 初中英语2026教资面试历年真题题库及解析
- 初中数学教资面试2026易错题答辩
- 脓毒症休克的护理查房
- 大学语文课件 第七单元 洞明世事1.涉务(北齐 颜之推)
- 房地产模板课件
- 康复中心护士工作总结
- 发电车操作课件
- 孤独症康复指南科室的医生要点总结2026
- 中质协六西格玛绿带考试练习题库(含答案解析)
- 2026年南昌市洪都中医院招聘劳务派遣制人员26人笔试备考试题及答案解析
- 安防监控录像存储留存规范
- 2026海淀区中小学天文知识竞赛试题及答案
- DBJ-T15-295-2026 高处作业吊篮安装检验评定标准
- 《南泥湾》教案2026-2027学年湘艺版六年级上册音乐
- AI眼镜硬件拆解及BOM成本报告:逸文Even G2 AR眼镜
- 煤矿主通风机投运方案及安全技术措施培训
- 建筑工程管理副高答辩问题及答案
- 雨课堂学堂在线学堂云《人工智能与创新(南开)》单元测试考核答案
- 光学惯性测量装置课件
评论
0/150
提交评论