




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、DDR2 程序設(shè)計(jì)方案實(shí)現(xiàn) DDR2 的讀寫功能,并且讀寫正常??紤]到直接寫 DDR2讀寫時(shí)序有困難,所以使用 DDR2 IP核。調(diào)用 DDR2 IP 核,并且為 DDR2 IP 核生成相應(yīng)的時(shí)鐘,根據(jù)模塊化思想,將讀寫操作進(jìn)行封裝成模塊,在頂層模塊為讀寫模塊提供地址與數(shù)據(jù)。根據(jù)以上思路需要做到以下幾點(diǎn):1) 生成 DDR2 IP核2) 基于 DDR 核的讀寫模塊3) 頂層模塊設(shè)計(jì)4) 使用 PLL生成時(shí)鐘DDR2 IP核的生成過程打開核生成器創(chuàng)建一個(gè)新的工程根據(jù)工程需要指定工程路徑,并且給工程取名。點(diǎn)擊 Part 選擇芯片型號(hào),點(diǎn)擊 Generation 選擇語(yǔ)言,點(diǎn)擊 ok。找到mig核,
2、并雙擊,進(jìn)入DDR2核生成過程。進(jìn)入DDR2 IP核的配置界面,核對(duì)建立工程時(shí)的信息,點(diǎn)擊下一步重新定義”Component Part”,點(diǎn)擊下一步點(diǎn)擊下一步選擇 DDR2_SDRAM,點(diǎn)擊下一步設(shè)置時(shí)鐘為200M,數(shù)據(jù)位寬為16點(diǎn)擊此頁(yè)的”Creat Custom k4t1g164qf,此名稱可以自由定義并作為DDR2芯片名,在最下方根據(jù)芯片手冊(cè)選擇相應(yīng)的列地址,行地址以及BANK地址,點(diǎn)擊保存,回到之前的頁(yè)面,點(diǎn)擊下一步選擇”Burst Length”為4,點(diǎn)擊下一步“System Clock”選擇”Single-Ended”,單端時(shí)鐘比較好操作,點(diǎn)擊下一步。接下來(lái)是DDR2引腳的配置,此
3、時(shí)的配置需要明確DDR2在FPGA上的引腳,同時(shí)這一步也是檢驗(yàn) DDR2 引腳在 FPGA 上分配是否正確的方法。選擇”FixedPinOut:.”這一選項(xiàng),點(diǎn)擊下一步將 FPGA 的引腳標(biāo)識(shí)添加到對(duì)應(yīng) DDR2 用的引腳填上,之后再修改 ucf 文件即可。如果 ucf 已經(jīng)存在,也可以使用”ReadUCF”來(lái)進(jìn)行加載,如果引腳有不正確的分配,進(jìn)行”Valide”時(shí)會(huì)提示錯(cuò)誤。如果無(wú)錯(cuò)誤,點(diǎn)擊下一步點(diǎn)擊下一步生成DDR2 IP核。到此DDR2 IP核生成完成。打開DDR2IP核所在文件,ucf文件在par目錄下,下圖是路徑,此ucf文件中有之前配置的引腳,其中一些引腳需要修改或刪除?;贒DR
4、2核的讀寫模塊設(shè)計(jì)DDR2 IP核信號(hào)介紹DDR2讀寫需要操作的信號(hào)如下:phy_init_donerst0_tb11111此信號(hào)為DDR2初始化信號(hào),此信號(hào)為高有效DDR2操作時(shí)的復(fù)位信號(hào),此信號(hào)高電平有效DDR2操作時(shí)的時(shí)鐘信號(hào)app_wdf_afullapp_af_afull寫數(shù)據(jù)時(shí)FIFO滿標(biāo)志,為1時(shí)表示滿寫地址時(shí)FIFO滿標(biāo)志,為1時(shí)表示滿rd_data_validapp_wdf_wrenapp_af_wren讀數(shù)據(jù)時(shí),數(shù)據(jù)輸出有效標(biāo)志寫數(shù)據(jù)使能app_af_addr地址線,無(wú)效的位寫1(建議)命令信號(hào),000為寫數(shù)據(jù),001為讀數(shù)據(jù)數(shù)據(jù)輸出端口rd_data_fifo_outap
5、p_wdf_dataapp_wdf_mask_data32324寫數(shù)據(jù)時(shí)的數(shù)據(jù)輸入線寫入數(shù)據(jù)時(shí)的數(shù)據(jù)屏蔽信號(hào)DDR2 IP核讀寫時(shí)序分析寫時(shí)序分析此圖中的寫數(shù)據(jù)是4突發(fā)連續(xù)寫圖中reset_tb為復(fù)位信號(hào),本次生成核的復(fù)位信號(hào)為rst0_tb,此信號(hào)為1表為DDR2DDR2核未完成初始化,此時(shí)DDR2核無(wú)法工作。在復(fù)位無(wú)效并且phy_init_done為高的情況下,進(jìn)行突發(fā)寫數(shù)據(jù)。這里突發(fā)長(zhǎng)度為 4 個(gè) 16 的位寬為 32 以需要寫兩次數(shù)據(jù),即圖中所示的D1D0,D3D2。地址是4 的倍數(shù),如第一個(gè)地址為 0,第二個(gè)地址便為 4,之后就是 8,12.讀時(shí)序分析在不斷寫入地址的過程中,數(shù)據(jù)會(huì)在
6、 rd_data_valid 拉高的時(shí)候通過rd_data_fifo_out 輸出。不斷寫入地址,等待 rd_data_valid 拉高,讀 rd_data_fifo_out 中的數(shù)據(jù)。讀數(shù)據(jù)也一樣,地址是以 4 為基數(shù)不斷累加輸入的。頂層模塊設(shè)計(jì) DDR2 PLL 生成 DDR2 核所需時(shí)鐘,為讀寫模塊提供數(shù)據(jù)與地址。DDR2 核模塊需要兩個(gè)時(shí)鐘信號(hào),一個(gè)是sys_clk,一個(gè)是 idly_clk_200,這兩上時(shí)鐘都為 200M,使用鎖相環(huán)生。DDR2 核所需要時(shí)鐘的生成與 DDR2 核的修改在 DDR2 如果頂層模塊的時(shí)鐘直接引入到 DDR2 核中,會(huì)產(chǎn)生一系列的問題,修改如下:將下圖中
7、的兩個(gè) IBUFG 名修改為 BUFG。最開始程序按照讀寫時(shí)序圖寫入四個(gè)地址,8 個(gè) 32 位的固定數(shù)據(jù)。結(jié)果發(fā)現(xiàn)在 rd_data_valid 為 1 clk0_tb 為低電平的時(shí)候數(shù)據(jù)是寫入的數(shù)據(jù),即數(shù)據(jù)分成了 16 個(gè)小段,在 clk0_tb 高電平時(shí)的數(shù)據(jù)不穩(wěn)定,在低電平時(shí),數(shù)據(jù)穩(wěn)定下來(lái)。結(jié)果如下圖所示:改進(jìn) 1:在clk0_tb 的上升沿或下降沿去獲取數(shù)據(jù),查看數(shù)據(jù)的穩(wěn)定性。在查一些資料顯示,地址不使用的高位需要置 1,改進(jìn)程序中結(jié)果如下圖所示:圖中,data_fifo_out_p 是在 clk0_tb 上升沿獲取數(shù)據(jù),data_fifo_out_n 是在clk0_tb 下降沿獲取數(shù)
8、據(jù)。如上圖所示,在下降沿獲取的數(shù)據(jù)比較穩(wěn)定。獲取的數(shù)據(jù)過程中是先寫地址,數(shù)據(jù)是隨著 rd_data_valid 變?yōu)楦吆?,?shù)據(jù)從rd_data_fifo_out 中輸出,所以將讀寫模塊中讀部分只是寫入地址,讀數(shù)據(jù)在頂層進(jìn)行。同時(shí),為了方便操作,讀寫模塊寫數(shù)據(jù)部分只寫一次突發(fā)的數(shù)據(jù),即64 位的數(shù)據(jù)。為了使讀取的數(shù)據(jù)更加穩(wěn)定,數(shù)據(jù)進(jìn)行兩次處理:第一次,在時(shí)鐘下降沿獲取rd_data_fifo_out中的值,名稱為data_fifo_out_n,第二次,在時(shí)鐘上升沿獲取 data_fifo_n 的值,取名為 data_fifo_p_ff1,data_fifo_p_ff1為最終獲取的穩(wěn)定數(shù)據(jù)。結(jié)果如
9、下圖所示:測(cè)試過程中出現(xiàn)問題及分析問題1:編譯失敗,鎖相環(huán)出現(xiàn)問題。原因:頂層模塊調(diào)用了鎖相環(huán),DDR2 IP核內(nèi)部也使用了鎖相環(huán),兩個(gè)鎖相環(huán)之間的時(shí)鐘連接有問題。解決辦法:將DDR2 IP核內(nèi)部鎖相環(huán)的時(shí)鐘輸入處的IBUFG修改為BUFG.結(jié)果:可以編譯通過。問題2:phy_init_done未變高。原因:在分配UCF引腳過程中dm引腳分配出錯(cuò)。解決辦法:查看原理圖,修改引腳分配。結(jié)果:phy_init_done拉高。心得與體會(huì)地址:DDR2 的芯片引腳中,數(shù)據(jù)線是 16 位,地址線是 13 位,bank 地址是 3 位。在核中有列地址(10 位),行地址(13 位)與 bank 地址(3
10、位)。在 DDR2 的芯片手冊(cè)中,提到行地址與列地址是重合的。在對(duì) DDR2 芯片操作過程中,發(fā)現(xiàn)在地址超過 16 位時(shí),讀回的數(shù)據(jù)將會(huì)從 0地址重新開始讀。從這里可以看出,DDR2 的有效地址只有 16 位,但是如果將 app_af_addr 的16 位之后的地址拉高,會(huì)出現(xiàn) pyh_init_done 不拉高情況。app_af_addr 是無(wú)效位是列地址+行地址+bank 地址之后的位無(wú)效。數(shù)據(jù):DDR2 芯片引腳中數(shù)據(jù)線是 16 位,而核中數(shù)據(jù)線是 32 位。在向 DDR2 中寫入數(shù)據(jù)時(shí),在時(shí)鐘的上升沿與下降沿都會(huì)寫入數(shù)據(jù)。因?yàn)橥话l(fā)長(zhǎng)度為 4,所有需要連續(xù)寫入 2 個(gè) 32 的數(shù)據(jù),才會(huì)
11、是 4 個(gè) 16 位的數(shù)據(jù)。讀數(shù)據(jù):在讀數(shù)據(jù)之前,需要寫入地址與命令。之后只需要等待 rd_data_valid 變?yōu)楦?,然后?rd_data_fifo_out 中讀取數(shù)據(jù)即可。讀到的數(shù)據(jù)可能不穩(wěn)定,此時(shí)需要做一些處理。在時(shí)鐘的上升沿與下降沿讀數(shù)據(jù)時(shí),下降沿讀到的數(shù)據(jù)比較穩(wěn)定。使用時(shí)鐘的上升沿再去讀下降沿時(shí)讀到的數(shù)據(jù),數(shù)據(jù)是最穩(wěn)定的。DDR2 所有空間讀寫正確性驗(yàn)證第1就是查看chipscope chipscope的觸發(fā)器,查看一定范圍的數(shù)據(jù),結(jié)果數(shù)據(jù)正常。以上的驗(yàn)證手段不能夠完全證明數(shù)據(jù)是正常的。第 2 32 16 位與低 16 位相差為 1,如果高 16 位與低 16 位的數(shù)據(jù)相減如果為 1,說(shuō)明高 16 位與低 16 位組成的數(shù)據(jù)是正常的。接下來(lái)需要將前一個(gè)數(shù)據(jù)與后一個(gè)數(shù)據(jù)相減,如果結(jié)果為 20002h,那么就可以證明讀回的數(shù)據(jù)是連續(xù)的。這樣的話就可以證明讀回的數(shù)據(jù)是正常的。第 3 就是將讀出的數(shù)據(jù),從串口發(fā)出,通過串口將數(shù)據(jù)進(jìn)行比對(duì)。這種驗(yàn)證方法,如果串口是完全正常的,可以驗(yàn)證 DDR2 的所有空間讀寫是否正常。出現(xiàn)問題:使用第二種方法進(jìn)行驗(yàn)證的過程中,使用減法運(yùn)算
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人家服務(wù)合同范本
- 中班社會(huì)領(lǐng)域活動(dòng)方案
- 房屋雙方買賣合同
- 車輛掛靠經(jīng)營(yíng)協(xié)議書
- 交通物流配送優(yōu)化方案
- 班車租賃合同集錦
- 智能制造模具研發(fā)投資合同
- 工程機(jī)械施工協(xié)議書
- 新能源材料研發(fā)投資合同
- Unit 3 Amazing animals第4課時(shí)(教學(xué)設(shè)計(jì))-2024-2025學(xué)年人教PEP版(2024)英語(yǔ)三年級(jí)上冊(cè)
- JBT 7946.3-2017 鑄造鋁合金金相 第3部分:鑄造鋁合金針孔
- 2024年燃?xì)廨啓C(jī)值班員技能鑒定理論知識(shí)考試題庫(kù)-上(單選題)
- 中學(xué)校園安保服務(wù)投標(biāo)方案
- 義務(wù)教育“雙減”作業(yè)設(shè)計(jì)初中生物作業(yè)設(shè)計(jì)案例共三篇
- 2024-2030年中國(guó)車載冰箱行業(yè)市場(chǎng)發(fā)展調(diào)研及投資戰(zhàn)略分析報(bào)告
- 數(shù)字全息顯微成像的理論和實(shí)驗(yàn)研究
- 科技引領(lǐng)全景式景區(qū)
- 單個(gè)軍人隊(duì)列動(dòng)作教學(xué)法教案全(新條令)
- 職業(yè)素養(yǎng)提升第2版(大學(xué)生職業(yè)素養(yǎng)指導(dǎo)課程)全套教學(xué)課件
- 第16講 電氣絕緣節(jié)工作原理講解
- 《行政倫理學(xué)教程(第四版)》課件 第3、4章?行政理性與行政價(jià)值、行政倫理規(guī)范
評(píng)論
0/150
提交評(píng)論