xilinx--V6-DDR3调试成功经验分享.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

DDR3调试

DDR3配置:时钟输入400M,芯片V6lx240t-2ff1156,突发模式为BL=8,长度为64。

仿真:新建工程,添加用xilinx生成DDR3核的sim_tb_top等文件。进行仿真。

traffic_gen是xilinx自带的一个测试DDR的模块随机的读写DDR,然后校验读取和写入的数值是不是一样。如果有错,会拉高tg_compare_error来报警。而我们要做的就是自己看懂traffic_gen向DDR模块发送的时序,然后去重新编写一个模块来代替traffic_gen。

traffic_gen写数据时序图:

traffic_gen读数据时序图:

设计读写模块:

由于需要代替traffic_gen模块,所以需要设计数据发送模块〔cad_gen_1〕,命令时序模块〔cad_gen_2〕和数据校验模块〔data_compare〕,另外增加异步读写FIFO来保证读写稳定不出错。系统模块间信号连接图如下:

子模块功能

cad_gen_1模块负责产要写入DDR3的数据。先将数据存入写FIFO中。

cad_gen_2模块负责产生命令〔app_com〕,地址〔app_addr〕,控制器写数据有效使能〔app_en〕,写数据使能〔app_wdf_wren〕,写数据结束信号〔app_wdf_end〕。

data_compare模块负责将从的DDR3核中读出的数据与写入的数据相比拟。从而得出误码率。

子模块接口

Cad_gen_1模块

信号

位宽

方向

描述

Clk

1

Input

外部时钟

rst

1

input

复位信号

app_rdy

1

Input

由DDR3核输出的核ready信号

app_wdf_rdy

1

Input

由DDR3核输出的接收数据ready信号

phy_init_done

1

Input

核初始化成功时置1,只有初始化完成以后才能进行相应的读写操作。

fifo_wr_data

256

Output

写入DDR的数据,当FIFO的使能wr_fifo_wren为高时+1计数

wr_fifo_wren

1

Output

数据存入fifo的使能,每次拉高两个时钟周期。

Cad_gen_2模块

信号

位宽

方向

描述

clk

1

Input

与DDR核的时钟一直

rst

1

Input

复位

app_rdy

1

Input

由DDR3核输出的核ready信号

phy_init_done

1

Input

核初始化成功时置1,只有初始化完成以后才能进行相应的读写操作。

app_wdf_rdy

1

Input

由DDR3核输出的接收数据ready信号

app_cmd

3

Output

读写命令信号,1为读,0为写

app_en

1

Output

操作地址app_addr的是能,只又它拉高的时候,命令和地址才有效。〔注意,当写入时,如果app_en为高,且app_rdy为低,那么app_en保持高直到app_rdy为高时,app_en拉低〕

app_wdf_wren

1

Output

写数据使能,拉高时,写入数据有效。在app_en有效的下一个时钟上升沿,数据使能拉高保持两个时钟周期后,拉低。〔准确的说,只能每个地址写入数据时,此信号要在app_en拉高后也拉高,持续两个时钟周期〕

app_addr

28

Output

读写的地址〔注意:因为突发长度为8,所以地址应该以8递增。〕

app_wdf_end

1

output

写结束接口,在写使能有效的下一个时钟上升沿拉高,持续一个时钟周期。

Data_conpare模块

信号

位宽

方向

描述

Clk

1

Input

时钟,与核一致

Rst

1

Input

复位

Data

256

Input

DDR3核中读出的数据

Rd_en

1

Input

读数据时,DDR3核反应的读数据有效信号,拉高,那么数据有效。

Error

1

Output

数据错误

Error_cnt

32

Output

错误计数

读写时序图

写入数据时序:

写数据时序图

在保证app_wdf_rdy和app_rdy为高的情况下,写数据时,写命令app_cmd为3’b000,地址每次计数+8。当地址变化时,将app_en置高一个时钟周期就置0,如果app_en置高时,app_rdy为低,那么app_en要保持拉高到app_rdy置1后一个周期拉低,在此期间地址数据使能都不变。在app_en拉高的一个周期后,将app_wdf_wren拉高2个时钟周期,并对应发送两个256位的数据,发送第二个数据时,拉高app_wdf_end信号,说明,当前地址要发送的数据传输完成。app_rdy在app_rdy为高的情况下,拉高一个周期说明当前地址数据有效。否那么数据地址均无效。

读出数据时序:

文档评论(0)

147****4268 + 关注
实名认证
文档贡献者

认真 负责 是我的态度

1亿VIP精品文档

相关文档