在高速數(shù)據(jù)采集卡的設(shè)計(jì)過程中要涉及到對DDR2,、DDR3的讀寫測試問題,,在文即對測試過程做個(gè)小小的總線。
首先對生成的MIGDDR2的example中的源代碼進(jìn)行詳細(xì)的閱讀,,結(jié)合對sim文件中的sim.do進(jìn)行仿真,,從而能夠得到DDR2的時(shí)序控制,。項(xiàng)目中的DDR2調(diào)用的是IP核,在手冊中給出了DDR2IP核的用戶的端口,。這些端口是用來進(jìn)行控制的,,從而避免了關(guān)注DDR2的內(nèi)部結(jié)構(gòu),這將大大簡化對DDR2的控制難度,。
在編寫DDR2的讀寫測試代碼中,,遇到了一個(gè)問題:
在仿真中發(fā)現(xiàn)app_af_addr端口給出的地址不能和寫地址使能信號app_af_wren相匹配,在后的仿真中看到第8位傳輸?shù)刂分荒軅鬏斠话?,這就造成了讀寫地址混亂的情況,。
起初的代碼如下:
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
對于這個(gè)問題考慮的角度是第8位地址數(shù)據(jù)在addr_cnt在系統(tǒng)時(shí)鐘clk0的上升沿到來之后,就會立刻將addr_cnt賦值為0,,并沒有等待wr_addr_en是否結(jié)束,。從而造成了后面地址混亂。解決的方法如下所示:
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相匹配,,終得到正確的時(shí)序關(guān)系,。
造成這種問題的原因:
在編程過程中對時(shí)鐘信號的整體把握有欠缺,應(yīng)該對整體的時(shí)序有清楚的把握,。
為了我們共同的目標(biāo)“做專業(yè)的高速數(shù)據(jù)采集廠商”而共同努力,!
關(guān)于坤馳科技:
坤馳科技是專注于高速數(shù)據(jù)采集與信號處理、高速數(shù)據(jù)存儲與記錄的高科技公司,。坤馳科技為用戶提供成熟的標(biāo)準(zhǔn)高速數(shù)據(jù)采集產(chǎn)品與技術(shù),,也可為用戶提供定制化的高速信號采集解決方案。目前坤馳科技服務(wù)過的研究所,、科研單位已達(dá)近百家,。高速數(shù)據(jù)采集產(chǎn)品線涵蓋PCIExpress、cPCI,、PXIe,、VPX、USB等總線,,包含高速AD,、DA平臺,、FPGA、DSP處理平臺,,SATA/SSD,、Flash存儲平臺等。
全國咨詢電話:400-000-4026
公司官方網(wǎng)站:http://www.jtyykv.cn
官方微博:http://e.weibo.com/queentest
官方微信:queentest或掃描: