版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、DDR2 程序設計方案實現(xiàn) DDR2 的讀寫功能,并且讀寫正常??紤]到直接寫 DDR2讀寫時序有困難,所以使用 DDR2 IP核。調用 DDR2 IP 核,并且為 DDR2 IP 核生成相應的時鐘,根據(jù)模塊化思想,將讀寫操作進行封裝成模塊,在頂層模塊為讀寫模塊提供地址與數(shù)據(jù)。根據(jù)以上思路需要做到以下幾點:1) 生成 DDR2 IP核2) 基于 DDR 核的讀寫模塊3) 頂層模塊設計4) 使用 PLL生成時鐘DDR2 IP核的生成過程打開核生成器創(chuàng)建一個新的工程根據(jù)工程需要指定工程路徑,并且給工程取名。點擊 Part 選擇芯片型號,點擊 Generation 選擇語言,點擊 ok。找到mig核,
2、并雙擊,進入DDR2核生成過程。進入DDR2 IP核的配置界面,核對建立工程時的信息,點擊下一步重新定義”Component Part”,點擊下一步點擊下一步選擇 DDR2_SDRAM,點擊下一步設置時鐘為200M,數(shù)據(jù)位寬為16點擊此頁的”Creat Custom k4t1g164qf,此名稱可以自由定義并作為DDR2芯片名,在最下方根據(jù)芯片手冊選擇相應的列地址,行地址以及BANK地址,點擊保存,回到之前的頁面,點擊下一步選擇”Burst Length”為4,點擊下一步“System Clock”選擇”Single-Ended”,單端時鐘比較好操作,點擊下一步。接下來是DDR2引腳的配置,此
3、時的配置需要明確DDR2在FPGA上的引腳,同時這一步也是檢驗 DDR2 引腳在 FPGA 上分配是否正確的方法。選擇”FixedPinOut:.”這一選項,點擊下一步將 FPGA 的引腳標識添加到對應 DDR2 用的引腳填上,之后再修改 ucf 文件即可。如果 ucf 已經存在,也可以使用”ReadUCF”來進行加載,如果引腳有不正確的分配,進行”Valide”時會提示錯誤。如果無錯誤,點擊下一步點擊下一步生成DDR2 IP核。到此DDR2 IP核生成完成。打開DDR2IP核所在文件,ucf文件在par目錄下,下圖是路徑,此ucf文件中有之前配置的引腳,其中一些引腳需要修改或刪除?;贒DR
4、2核的讀寫模塊設計DDR2 IP核信號介紹DDR2讀寫需要操作的信號如下:phy_init_donerst0_tb11111此信號為DDR2初始化信號,此信號為高有效DDR2操作時的復位信號,此信號高電平有效DDR2操作時的時鐘信號app_wdf_afullapp_af_afull寫數(shù)據(jù)時FIFO滿標志,為1時表示滿寫地址時FIFO滿標志,為1時表示滿rd_data_validapp_wdf_wrenapp_af_wren讀數(shù)據(jù)時,數(shù)據(jù)輸出有效標志寫數(shù)據(jù)使能app_af_addr地址線,無效的位寫1(建議)命令信號,000為寫數(shù)據(jù),001為讀數(shù)據(jù)數(shù)據(jù)輸出端口rd_data_fifo_outap
5、p_wdf_dataapp_wdf_mask_data32324寫數(shù)據(jù)時的數(shù)據(jù)輸入線寫入數(shù)據(jù)時的數(shù)據(jù)屏蔽信號DDR2 IP核讀寫時序分析寫時序分析此圖中的寫數(shù)據(jù)是4突發(fā)連續(xù)寫圖中reset_tb為復位信號,本次生成核的復位信號為rst0_tb,此信號為1表為DDR2DDR2核未完成初始化,此時DDR2核無法工作。在復位無效并且phy_init_done為高的情況下,進行突發(fā)寫數(shù)據(jù)。這里突發(fā)長度為 4 個 16 的位寬為 32 以需要寫兩次數(shù)據(jù),即圖中所示的D1D0,D3D2。地址是4 的倍數(shù),如第一個地址為 0,第二個地址便為 4,之后就是 8,12.讀時序分析在不斷寫入地址的過程中,數(shù)據(jù)會在
6、 rd_data_valid 拉高的時候通過rd_data_fifo_out 輸出。不斷寫入地址,等待 rd_data_valid 拉高,讀 rd_data_fifo_out 中的數(shù)據(jù)。讀數(shù)據(jù)也一樣,地址是以 4 為基數(shù)不斷累加輸入的。頂層模塊設計 DDR2 PLL 生成 DDR2 核所需時鐘,為讀寫模塊提供數(shù)據(jù)與地址。DDR2 核模塊需要兩個時鐘信號,一個是sys_clk,一個是 idly_clk_200,這兩上時鐘都為 200M,使用鎖相環(huán)生。DDR2 核所需要時鐘的生成與 DDR2 核的修改在 DDR2 如果頂層模塊的時鐘直接引入到 DDR2 核中,會產生一系列的問題,修改如下:將下圖中
7、的兩個 IBUFG 名修改為 BUFG。最開始程序按照讀寫時序圖寫入四個地址,8 個 32 位的固定數(shù)據(jù)。結果發(fā)現(xiàn)在 rd_data_valid 為 1 clk0_tb 為低電平的時候數(shù)據(jù)是寫入的數(shù)據(jù),即數(shù)據(jù)分成了 16 個小段,在 clk0_tb 高電平時的數(shù)據(jù)不穩(wěn)定,在低電平時,數(shù)據(jù)穩(wěn)定下來。結果如下圖所示:改進 1:在clk0_tb 的上升沿或下降沿去獲取數(shù)據(jù),查看數(shù)據(jù)的穩(wěn)定性。在查一些資料顯示,地址不使用的高位需要置 1,改進程序中結果如下圖所示:圖中,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ù)在頂層進行。同時,為了方便操作,讀寫模塊寫數(shù)據(jù)部分只寫一次突發(fā)的數(shù)據(jù),即64 位的數(shù)據(jù)。為了使讀取的數(shù)據(jù)更加穩(wěn)定,數(shù)據(jù)進行兩次處理:第一次,在時鐘下降沿獲取rd_data_fifo_out中的值,名稱為data_fifo_out_n,第二次,在時鐘上升沿獲取 data_fifo_n 的值,取名為 data_fifo_p_ff1,data_fifo_p_ff1為最終獲取的穩(wěn)定數(shù)據(jù)。結果如
9、下圖所示:測試過程中出現(xiàn)問題及分析問題1:編譯失敗,鎖相環(huán)出現(xiàn)問題。原因:頂層模塊調用了鎖相環(huán),DDR2 IP核內部也使用了鎖相環(huán),兩個鎖相環(huán)之間的時鐘連接有問題。解決辦法:將DDR2 IP核內部鎖相環(huán)的時鐘輸入處的IBUFG修改為BUFG.結果:可以編譯通過。問題2:phy_init_done未變高。原因:在分配UCF引腳過程中dm引腳分配出錯。解決辦法:查看原理圖,修改引腳分配。結果:phy_init_done拉高。心得與體會地址:DDR2 的芯片引腳中,數(shù)據(jù)線是 16 位,地址線是 13 位,bank 地址是 3 位。在核中有列地址(10 位),行地址(13 位)與 bank 地址(3
10、位)。在 DDR2 的芯片手冊中,提到行地址與列地址是重合的。在對 DDR2 芯片操作過程中,發(fā)現(xiàn)在地址超過 16 位時,讀回的數(shù)據(jù)將會從 0地址重新開始讀。從這里可以看出,DDR2 的有效地址只有 16 位,但是如果將 app_af_addr 的16 位之后的地址拉高,會出現(xiàn) pyh_init_done 不拉高情況。app_af_addr 是無效位是列地址+行地址+bank 地址之后的位無效。數(shù)據(jù):DDR2 芯片引腳中數(shù)據(jù)線是 16 位,而核中數(shù)據(jù)線是 32 位。在向 DDR2 中寫入數(shù)據(jù)時,在時鐘的上升沿與下降沿都會寫入數(shù)據(jù)。因為突發(fā)長度為 4,所有需要連續(xù)寫入 2 個 32 的數(shù)據(jù),才會
11、是 4 個 16 位的數(shù)據(jù)。讀數(shù)據(jù):在讀數(shù)據(jù)之前,需要寫入地址與命令。之后只需要等待 rd_data_valid 變?yōu)楦撸缓髲?rd_data_fifo_out 中讀取數(shù)據(jù)即可。讀到的數(shù)據(jù)可能不穩(wěn)定,此時需要做一些處理。在時鐘的上升沿與下降沿讀數(shù)據(jù)時,下降沿讀到的數(shù)據(jù)比較穩(wěn)定。使用時鐘的上升沿再去讀下降沿時讀到的數(shù)據(jù),數(shù)據(jù)是最穩(wěn)定的。DDR2 所有空間讀寫正確性驗證第1就是查看chipscope chipscope的觸發(fā)器,查看一定范圍的數(shù)據(jù),結果數(shù)據(jù)正常。以上的驗證手段不能夠完全證明數(shù)據(jù)是正常的。第 2 32 16 位與低 16 位相差為 1,如果高 16 位與低 16 位的數(shù)據(jù)相減如果為 1,說明高 16 位與低 16 位組成的數(shù)據(jù)是正常的。接下來需要將前一個數(shù)據(jù)與后一個數(shù)據(jù)相減,如果結果為 20002h,那么就可以證明讀回的數(shù)據(jù)是連續(xù)的。這樣的話就可以證明讀回的數(shù)據(jù)是正常的。第 3 就是將讀出的數(shù)據(jù),從串口發(fā)出,通過串口將數(shù)據(jù)進行比對。這種驗證方法,如果串口是完全正常的,可以驗證 DDR2 的所有空間讀寫是否正常。出現(xiàn)問題:使用第二種方法進行驗證的過程中,使用減法運算
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貨物陸運合同范文范本模板
- 物業(yè)管理的噪音與污染管理
- 我國自動駕駛車路協(xié)同發(fā)展現(xiàn)狀分析
- 人臍帶間充質干細胞通過抑制NLRP3介導的滑膜細胞焦亡減輕膝骨關節(jié)炎
- 擴張法與Nagata法治療小耳畸形的療效對比分析
- 2025年岳麓版選擇性必修2歷史上冊階段測試試卷含答案
- 智能家居產品銷售代理合同(2篇)
- 2025年外研銜接版九年級歷史下冊月考試卷含答案
- 服裝購買合同協(xié)議書范本(2篇)
- 2025年外研版三年級起點選擇性必修1歷史上冊階段測試試卷
- 中小商業(yè)銀行數(shù)字化轉型現(xiàn)狀及對策研究
- 親子非暴力溝通培訓講座
- 保險投訴處理流程培訓
- JJG 707-2014扭矩扳子行業(yè)標準
- 2025財年美國國防預算概覽-美國國防部(英)
- 2024年江西省南昌市中考一模數(shù)學試題(含答案)
- 《采暖空調節(jié)能技術》課件
- CONSORT2010流程圖(FlowDiagram)【模板】文檔
- 游戲綜合YY頻道設計模板
- 中興ZCTP 5GC高級工程師認證考試題庫匯總(含答案)
- 大學生創(chuàng)新創(chuàng)業(yè)教程PPT全套完整教學課件
評論
0/150
提交評論