DDR2程序设计方案解读.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DDR2程序设计方案解读

DDR2程序设计方案 程序设计目标 实现DDR2的读写功能,并且读写正常。 程序设计思路 考虑到直接写DDR2读写时序有困难,所以使用DDR2 IP核。 调用DDR2 IP核,并且为DDR2 IP核生成相应的时钟,根据模块化思想,将读写操作进行封装成模块,在顶层模块为读写模块提供地址与数据。 程序具体设计 根据以上思路需要做到以下几点: 生成DDR2 IP核 基于DDR核的读写模块 顶层模块设计 使用PLL生成时钟 DDR2 IP核的生成过程 打开核生成器 创建一个新的工程 根据工程需要指定工程路径,并且给工程取名。 点击Part选择芯片型号,点击Generation选择语言,点击ok。 找到mig核,并双击,进入DDR2核生成过程。 进入DDR2 IP核的配置界面,核对建立工程时的信息,点击下一步 重新定义”Component Part”,点击下一步 点击下一步 选择DDR2_SDRAM,点击下一步 设置时钟为200M,数据位宽为16 点击此页的”Creat Custom Part”,设置器件名称为k4t1g164qf,此名称可以自由定义并作为DDR2芯片名,在最下方根据芯片手册选择相应的列地址,行地址以及BANK地址,点击保存,回到之前的页面,点击下一步 选择”Burst Length”为4,点击下一步 “System Clock”选择”Single-Ended”,单端时钟比较好操作,点击下一步。 接下来是DDR2引脚的配置,此时的配置需要明确DDR2在FPGA上的引脚,同时这一步也是检验DDR2引脚在FPGA上分配是否正确的方法。选择”Fixed Pin Out:...”这一选项,点击下一步 将FPGA的引脚标识添加到对应DDR2信号名称的引脚上。多余引脚,先找一些无用的引脚填上,之后再修改ucf文件即可。如果ucf已经存在,也可以使用”ReadUCF”来进行加载,如果引脚有不正确的分配,进行”Valide”时会提示错误。如果无错误,点击下一步 点击下一步 选择”Accept”,点击下一步,之后一直点击下一步,直到最后点击”Generate”,生成DDR2 IP核。 到此DDR2 IP核生成完成。 打开DDR2 IP核所在文件,ucf文件在par目录下,下图是路径,此ucf文件中有之前配置的引脚,其中一些引脚需要修改或删除。 基于DDR2核的读写模块设计 DDR2 IP核信号介绍 DDR2读写需要操作的信号如下: 信号 位宽 定义 phy_init_done 1 此信号为DDR2初始化信号,此信号为高有效 rst0_tb 1 DDR2操作时的复位信号,此信号高电平有效 clk0_tb 1 DDR2操作时的时钟信号 app_wdf_afull 1 写数据时FIFO满标志,为1时表示满 app_af_afull 1 写地址时FIFO满标志,为1时表示满 rd_data_valid 1 读数据时,数据输出有效标志 app_wdf_wren 1 写数据使能 app_af_wren 1 写地址使能 app_af_addr 31 地址线,无效的位写1(建议) app_af_cmd 3 命令信号,000为写数据,001为读数据 rd_data_fifo_out 32 数据输出端口 app_wdf_data 32 写数据时的数据输入线 app_wdf_mask_data 4 写入数据时的数据屏蔽信号 DDR2 IP核读写时序分析 写时序分析 此图中的写数据是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为基数不断累加输入的。 顶层模块设

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档