DDR2程序设计方案_第1页
DDR2程序设计方案_第2页
DDR2程序设计方案_第3页
DDR2程序设计方案_第4页
DDR2程序设计方案_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DDR2程序设计方案程序设计目标实现DDR2的读写功能,并且读写正常。程序设计思路考虑到干脆写DDR2读写时序有困难,所以运用DDR2IP核。调用DDR2IP核,并且为DDR2IP核生成相应的时钟,依据模块化思想,将读写操作进行封装成模块,在顶层模块为读写模块供应地址与数据。程序详细设计依据以上思路须要做到以下几点:生成DDR2IP核基于DDR核的读写模块顶层模块设计运用PLL生成时钟DDR2IP核的生成过程打开核生成器创建一个新的工程依据工程须要指定工程路径,并且给工程取名。点击Part选择芯片型号,点击Generation选择语言,点击ok。找到mig核,并双击,进入DDR2核生成过程。进入DDR2IP核的配置界面,核对建立工程时的信息,点击下一步重新定义”ComponentPart”,点击下一步点击下一步选择DDR2_SDRAM,点击下一步设置时钟为200M,数据位宽为16点击此页的”CreatCustomPart”,设置器件名称为k4t1g164qf,此名称可以自由定义并作为DDR2芯片名,在最下方依据芯片手册选择相应的列地址,行地址以及BANK地址,点击保存,回到之前的页面,点击下一步选择”BurstLength”为4,点击下一步“SystemClock”选择”Single-Ended”,单端时钟比较好操作,点击下一步。接下来是DDR2引脚的配置,此时的配置须要明确DDR2在FPGA上的引脚,同时这一步也是检验DDR2引脚在FPGA上安排是否正确的方法。选择”FixedPinOut:...”这一选项,点击下一步将FPGA的引脚标识添加到对应DDR2信号名称的引脚上。多余引脚,先找一些无用的引脚填上,之后再修改ucf文件即可。假如ucf已经存在,也可以运用”ReadUCF”来进行加载,假如引脚有不正确的安排,进行”Valide”时会提示错误。假如无错误,点击下一步点击下一步选择”Accept”,点击下一步,之后始终点击下一步,直到最终点击”Generate”,生成DDR2IP核。到此DDR2IP核生成完成。打开DDR2IP核所在文件,ucf文件在par书目下,下图是路径,此ucf文件中有之前配置的引脚,其中一些引脚须要修改或删除。基于DDR2核的读写模块设计DDR2IP核信号介绍DDR2读写须要操作的信号如下:信号位宽定义phy_init_done1此信号为DDR2初始化信号,此信号为高有效rst0_tb1DDR2操作时的复位信号,此信号高电平有效clk0_tb1DDR2操作时的时钟信号app_wdf_afull1写数据时FIFO满标记,为1时表示满app_af_afull1写地址时FIFO满标记,为1时表示满rd_data_valid1读数据时,数据输出有效标记app_wdf_wren1写数据使能app_af_wren1写地址使能app_af_addr31地址线,无效的位写1(建议)app_af_cmd3吩咐信号,000为写数据,001为读数据rd_data_fifo_out32数据输出端口app_wdf_data32写数据时的数据输入线app_wdf_mask_data4写入数据时的数据屏蔽信号DDR2IP核读写时序分析写时序分析此图中的写数据是4突发连续写图中reset_tb为复位信号,本次生成核的复位信号为rst0_tb,此信号为1表示复位。phy_init_done为DDR2初始化完成信号,假如此信号不为高,表示DDR2核未完成初始化,此时DDR2核无法工作。在复位无效并且phy_init_done为高的状况下,进行突发写数据。这里突发长度为4个数据,4个16位的数据,app_wdf_data的位宽为32位,所以须要写两次数据,即图中所示的D1D0,D3D2。地址是4的倍数,如第一个地址为0,其次个地址便为4,之后就是8,12...读时序分析在不断写入地址的过程中,数据会在rd_data_valid拉高的时候通过rd_data_fifo_out输出。不断写入地址,等待rd_data_valid拉高,读rd_data_fifo_out中的数据。读数据也一样,地址是以4为基数不断累加输入的。顶层模块设计顶层模块须要主要完成三个工作:调用DDR2核,运用PLL生成DDR2核所需时钟,为读写模块供应数据与地址。DDR2核模块须要两个时钟信号,一个是sys_clk,一个是idly_clk_200,这两上时钟都为200M,运用锁相环生。DDR2核所须要时钟的生成与DDR2核的修改在DDR2核的内部也调用了一个锁相环,这个文件名为:ddr2_infrastructure.v假如顶层模块的时钟干脆引入到DDR2核中,会产生一系列的问题,修改如下:将下图中的两个IBUFG名修改为BUFG。程序测试及程序改进方案最起先程序依据读写时序图写入四个地址,8个32位的固定数据。结果发觉在rd_data_valid为1的状况下,只有在clk0_tb为低电平的时候数据是写入的数据,即数据分成了16个小段,在clk0_tb高电平常的数据不稳定,在低电平常,数据稳定下来。结果如下图所示:改进1:在clk0_tb的上升沿或下降沿去获得数据,查看数据的稳定性。在查一些资料显示,地址不运用的高位须要置1,改进程序中结果如下图所示:图中,data_fifo_out_p是在clk0_tb上升沿获得数据,data_fifo_out_n是在clk0_tb下降沿获得数据。如上图所示,在下降沿获得的数据比较稳定。获得的数据过程中是先写地址,数据是随着rd_data_valid变为高后,数据从rd_data_fifo_out中输出,所以将读写模块中读部分只是写入地址,读数据在顶层进行。同时,为了便利操作,读写模块写数据部分只写一次突发的数据,即64位的数据。为了使读取的数据更加稳定,数据进行两次处理:第一次,在时钟下降沿获得rd_data_fifo_out中的值,名称为data_fifo_out_n,其次次,在时钟上升沿获得data_fifo_n的值,取名为data_fifo_p_ff1,data_fifo_p_ff1为最终获得的稳定数据。结果如下图所示:测试过程中出现问题及分析 问题1:编译失败,锁相环出现问题。 缘由:顶层模块调用了锁相环,DDR2IP核内部也运用了锁相环,两个锁相环之间的时钟连接有问题。 解决方法:将DDR2IP核内部锁相环的时钟输入处的IBUFG修改为BUFG. 结果:可以编译通过。 问题2:phy_init_done未变高。 缘由:在安排UCF引脚过程中dm引脚安排出错。 解决方法:查看原理图,修改引脚安排。 结果:phy_init_done拉高。心得与体会 地址: DDR2的芯片引脚中,数据线是16位,地址线是13位,bank地址是3位。在核中有列地址(10位),行地址(13位)与bank地址(3位)。 在DDR2的芯片手册中,提到行地址与列地址是重合的。 在对DDR2芯片操作过程中,发觉在地址超过16位时,读回的数据将会从0地址重新起先读。 从这里可以看出,DDR2的有效地址只有16位,但是假如将app_af_addr的16位之后的地址拉高,会出现pyh_init_done不拉高状况。 app_af_addr是无效位是列地址+行地址+bank地址之后的位无效。 数据: DDR2芯片引脚中数据线是16位,而核中数据线是32位。 在向DDR2中写入数据时,在时钟的上升沿与下降沿都会写入数据。 因为突发长度为4,全部须要连续写入2个32的数据,才会是4个16位的数据。 读数据: 在读数据之前,须要写入地址与吩咐。 之后只须要等待rd_data_valid变为高,然后从rd_data_fifo_out中读取数据即可。 读到的数据可能不稳定,此时须要做一些处理。 在时钟的上升沿与下降沿读数据时,下降沿读到的数据比较稳定。 运用时钟的上升沿再去读下降沿时读到的数据,数据是最稳定的。DDR2全部空间读写正确性验证第1就是查看chipscope,从chipscope查看数据,数据比较稳定,运用chipscope的触发器,查看肯定范围的数据,结果数据正常。以上的验证手段不能够完全证明数据是正常的。第2写入的数据是依次递增的,从数据线上出来的数据是32位数据,高16位与低16位相差为1,假如高16位与低16位的数据相减假如为1,说明高16位与低16位组成的数据是正常的。接下来须要将前一个数据与后一个数据相减,假如结果为20002h,那么就可以证明读回的数据是连续的。这样的话就可以证明读回的数据是正常的。第3就是将读出的数据,从串口发出,通过串口将数据进行比对。这种验证方法,假如串口是完全正常的,可以验证DDR2的全部空间读写是否正常。出现问题:运用其次种方法进行验证的过程中,运用减法运算会使数据变得不稳定。修改方法:将减法运算

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论