代写毕业论文
代写论文网专业团队为广大毕业生朋友们提供代写毕业论文服务,让你不再为复杂的毕业论文而烦恼,保证你顺利地通过毕业论文。在代写毕业论文之外,我们还会给您的代写毕业论文做出详细的说明,我们用热情的服务来得到您100%满意。
代写毕业论文
毕业论文世界专业提供代写毕业论文,发表论文服务。
晶振,故将输入时钟频率设置为25MHz。
(2) 设计中所需要的时钟信号不需要进行任何相移,故时钟移相设置为“NONE”。
(3) 由于输入时钟不是由FPGA内部提供,故输入野外来源选取“External”,这样DCM设置向导会自动插入一个球形缓冲器(BUFG);若选择“Internal”则输入源信号在生成的HDL文件中作为一个顶层输入。
(4) 设置DCM的反馈路径,若只用CLKFX或CLKFX180就选取“None”;若存在反馈且来自FPGA内部故选取“Internal”,反之选取“External”。在此选取“Internal”。
(5) 除数设置为2.5,反馈倍数设置为1X。选中“Use Duty Cycle Correction”即可使输出时钟CLK0、CLK90、CLK180和CLK270的占空比均为50%。
(6) 按设计所需选取CLK0、CLKFX、CLKDV、LOCKED。
(7) 点击“Advanced”可进行高级设置——DCM歪斜调节,这个设置会影响DCM输出时钟和FPGA输入时钟之间的延迟线。在此不用设置及其默认值即可。
(8) 再点击“下一步”进行时钟缓冲设置,且所有输出时钟选取BUFG(Global Buffer)。
(9) 接下来设置频率合成器,做如图所示的设置,即可得到SDRAM控制逻辑和数据读写模块所需要的时钟。
图3-13 频率合成器设置
(10) 在查看完设置总概后,确认无识即可点击“Finish”完成整个DCM的配置,并生成HDL输出了。
至此,完成了本设计所需要时钟的生成与配置。如此,数据读写状态机、SDRAM控制状态机、输入FIFO的读时钟以及输出FIFO的写时钟可获得100 MHz的时钟;地址数据生成模块、输入FIFO的写时钟、输出FIFO的读时钟获得25MHz或10MHz的时钟,分别用于单路和多路数据输入的测试。
3.7 FIFO设计
由于 SDRAM经过一系列操作后才开始读写数据,而且其读写数据是分开进行的,只能读数据或只能写数据,为了避免数据丢失,故使用 FIFO进行缓冲。
3.7.1 数据缓存需求分析
为了验证SDRAM控制状态机和数据读写控制状态机设计的正确性,分别采用输入单路和四路数据进行测试。由于数据本身的速率与SDRAM的读写速率不相同,所以暂存数据的输入输出FIFO都必须采用异步FIFO[16],即数据写入与读出FIFO的速率不同(读时钟与写时钟是异步的)。
1、单路输入数据
设计中所用SDRAM的工作时钟频率为100MHz、读写数据位完也为16bit,且工作在FULL-PAGE模式下,每次连续读写数据512列块。由于SDRAM在进行读操作时输入数据不能同时写入其中,为保证数据不丢失,需要将输入频率为40MHz、位宽为16bit的数据写入输入FIFO中进行缓存,等到数据读写控制器给出的读使能时暂存的数据即可以100MHz的频率写入SDRAM中;SDRAM的读数据频率也是100MHz,为了得到与输入频率一致的数据还需要将从SDRAM中读出的数据缓存在输出FIFO中,供外界以40MHz的频率读出数据,以验证设计的正确性。经过综合分析,设置两个深度为1024、字长为16bit的FIFO即可满足要求。
2、多路输入数据
数据输入为多路时其读写原理及流程与单路数据是一样的,只是各路数据需要各自对应的输入输出FIFO。以四路输入数据为例,在读写第一路数据时,其它三路输入数据就存入相应的FIFO中等待读取,第一路数据读写完成之后依次进行第二路数据读写,如此按顺序依次循环读写四路输入数据。因此多路输入数据的读写过程较单路复杂,数据暂存的时间也较长,因此在设置FIFO深度和宽度的设置要根据输入数据路数及其频率进行灵活设置。基本要求是保证输入数据经SDRAM读写延迟之后仍是完整未丢失的。
3.7.2 FIFO设计与实现
在本设计使用ISE开发环境,故可以调用Core Generator来构造FIFO,根据设计测试时使用的输入数据路数据的不同,需要设置适当的参数以保证设计的较高性能,本小将给出其基本原理及构造过程。在此首先将FIFO的工作原理做一个简要的介绍:
图3-14 异步FIFO功能框图
如图3-14是FIFO16的功能执行描述框图,它包括层叠的FIFO16 Primitives和握手逻辑。其中FIFO16 Primitives的层叠数量取决于用户的设置要求——体现在深度和宽度上。从上图中我们可以看到,FIFO的读写时钟是独立且互不干涉;而各自的输入输出也和各自的时钟同步:受写时钟WR_CLK控制的输出标志信号有满(FULL)、可编程满信号(PROG_FULL)、写正确应答信号(WR_ACK)、溢出(OVERFLOW);受读时钟控制的输出标志信号有空(EMPTY)、可编程空信号(PROG_ EMPTY)、下溢信号(UNDERFLOW)、读有效信号(VALID)和数据输出(DOUT)[17]。
FIFO先进先出的存储原理给各种需要进行数据的缓存的设计提供了方便,当FIFO已满或已空就会给出相应的信号,便于综合利用于其它设计。在ISE开发环境,可以调用Core Generator来构造FIFO,对相应的参数进行设置即可构成可用的FIFO。因为设计要求保证SDRAM工作在100MHz以上,综合考虑到测试时数据输入的频率为25MHz导致FIFO的读出与写出的速度不同,以及设计数据读写状态机需要FIFO的空满标志等,在利用FIFO生成向导时对FIFO做如下的参数设置:
1.由于FIFO的读写速度不同,故在读写时钟管理中选择“Independent Clocks”即读、写时钟是异步。
2.其深度为1024字,宽度为16bit。
3.选择可编程满(Programmable Full)信号作为标志,且设置其类型为“Programmable Full”且预值为1/2_FULL即512,即当FIFO中读入的数据已满一半时,“PROG_FULL”输出有效。
4.DOUT的复位后值为0。
而其余的参数,如半空全空、上溢、下溢、WR_ACK、VALID等标志信号,设计中不需要就有用对其进行特别的设置。对于设计中的输入输出FIFO是构成设置如上所述,对开各自的读写时钟的输入在前文中的时钟设计部分已作了详细说明,在此不再重复;而各自的读写使能信号则由读写数据状态机发出;复位信号则是和其它模块的复位信号是一致的,以保证整个SDRAM控制器中各模块工作的一致性。
3.8 多路读写SDRAM整体设计
图3-15所示为SDRAM多路读写控制器设计整体架构图。它主要由地址产生模块、时钟产生模块、多路读写状态机、SDRAM控制状态机几在模
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>