首页 技术文章

DDR2的读写测试实验中的部分问题

2015-04-13 20:38:00 坤驰

在高速数据采集卡的设计过程中要涉及到对DDR2、DDR3的读写测试问题,在文即对测试过程做个小小的总线。

首先对生成的MIGDDR2的example中的源代码进行详细的阅读,结合对sim文件中的sim.do进行仿真,从而能够得到DDR2的时序控制。项目中的DDR2调用的是IP核,在手册中给出了DDR2IP核的用户的端口。这些端口是用来进行控制的,从而避免了关注DDR2的内部结构,这将大大简化对DDR2的控制难度。

在编写DDR2的读写测试代码中,遇到了一个问题:

在仿真中发现app_af_addr端口给出的地址不能和写地址使能信号app_af_wren相匹配,在后的仿真中看到第8位传输地址只能传输一半,这就造成了读写地址混乱的情况。

起初的代码如下:

always@(posedgeclk0)begin

if(!rst0)

begin

addr_cnt<=35'd0;

endelseif(addr_cnt==35'd7)

addr_cnt<=35'd0;

elseif(wr_addr_en)

addr_cnt<=addr_cnt+1'b1;

End

对于这个问题考虑的角度是第8位地址数据在addr_cnt在系统时钟clk0的上升沿到来之后,就会立刻将addr_cnt赋值为0,并没有等待wr_addr_en是否结束。从而造成了后面地址混乱。解决的方法如下所示:

always@(posedgeclk0)begin

if(!rst0)

begin

addr_cnt<=35'd0;

endelseif(addr_cnt==35'd7&&wr_addr_en==1)

addr_cnt<=35'd0;

elseif(wr_addr_en)

addr_cnt<=addr_cnt+1'b1;

End

这样就可以将addr_cnt和地址写使能wr_addr_en相匹配,终得到正确的时序关系。

造成这种问题的原因:

在编程过程中对时钟信号的整体把握有欠缺,应该对整体的时序有清楚的把握。

为了我们共同的目标“做专业的高速数据采集厂商”而共同努力!

关于坤驰科技:

坤驰科技是专注于高速数据采集与信号处理高速数据存储与记录的高科技公司。坤驰科技为用户提供成熟的标准高速数据采集产品与技术,也可为用户提供定制化的高速信号采集解决方案。目前坤驰科技服务过的研究所、科研单位已达近百家。高速数据采集产品线涵盖PCIExpress、cPCI、PXIe、VPX、USB等总线,包含高速AD、DA平台、FPGA、DSP处理平台,SATA/SSD、Flash存储平台等。

全国咨询电话:400-000-4026
公司官方网站:http://www.queentest.cn
官方微博:http://e.weibo.com/queentest
官方微信:queentest或扫描:

网友热评