在高速数据采集卡的设计过程中要涉及到对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或扫描: