日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Xilinx DDR控制器使用中的一些問題 | 電子創(chuàng)新網(wǎng)賽靈思中文社區(qū)

 mzsm 2014-09-15
XILINX 公司在最新的Spartan6中集成了MCB硬核,它可以支持到DDR3-800,而且對(duì)于大多數(shù)廠家的存儲(chǔ)芯片都支持(Micron、Elpida、Hynix.....)。對(duì)于工程來(lái)講,其MCB硬核優(yōu)秀的誤碼校驗(yàn)和偏移時(shí)鐘校驗(yàn),以及PLL_ADV工作時(shí)的穩(wěn)定、高精度都大大保證了研發(fā)產(chǎn)品的質(zhì)量。而對(duì)于用戶控制接口又是以通用FIFO的讀寫方式,代替復(fù)雜的DDR/DDR2/DDR3讀寫邏輯。以SRAM的地址映射方式代替復(fù)雜的行列地址選擇??梢妔partan6—MCB硬核控制器的誕生是值得大家推崇的。一,             在工程中添加IP1、  打開工程,添加新的源文件,2、   選擇版本,這里以3.6為例(盡量選擇最新版本),進(jìn)入Xilinx Memory Interface Generator界面,單擊Next,進(jìn)入下一步;3、  選擇輸出項(xiàng),輸入自定義模塊名;單擊Next,注意:如果你是修改一個(gè)核而不是第一次生成核,會(huì)出現(xiàn)如下對(duì)話框,單擊Yes,這時(shí)會(huì)覆蓋掉一些文件,因此無(wú)論你在接下來(lái)的步驟中有沒有對(duì)核的選項(xiàng)進(jìn)行修改,最后必須點(diǎn)擊Generator;4、   單擊Next,選擇Memory Type;注意到圖中有個(gè)C1、C3,這是因?yàn)閄ilinx的MCB有部分是屬于硬核,引腳是固定的,分別存在于FPGA芯片的BANK1和BANK3,在代碼中將看到很多的信號(hào)名是以C1_XXX和C3_XXX開頭的,這很容易區(qū)分是哪個(gè)DDR芯片對(duì)應(yīng)的信號(hào)名,注意與后面的端口(Port)混淆;5、   單擊Next,進(jìn)入DDR2芯片選項(xiàng)模塊,先選擇存儲(chǔ)器,再輸入時(shí)鐘;這里的Memory Part 選擇的是自定義的芯片,單擊,輸入一個(gè)自定義的DDR2芯片名,盡量輸入芯片的實(shí)名而不是自定義名,這樣有利于重復(fù)使用,不至于將來(lái)使用時(shí)不知所云,下面的參數(shù)可以在你所選的DDR2芯片DATASHEET中找到,輸入?yún)?shù)值,保存,這樣就可以在找到自定義的存儲(chǔ)器了,單擊Next;6、   選擇同上,單擊Next;7、   設(shè)置端口的一些參數(shù),主要是根據(jù)自己板子的實(shí)際情況稍微做一些修改即可。8、   進(jìn)入端口配置,(1)選擇配置模式,單向與雙向的意思是指端口是可讀、可寫,還是既可讀又可寫, 將端口配置成一個(gè)讀一個(gè)寫,其他不用;(2)選擇存儲(chǔ)器的地址映射方式,可根據(jù)自己程序設(shè)計(jì)方便選擇,這里默認(rèn); 9、   Next;接著10、進(jìn)入FPGA選項(xiàng),這里注意系統(tǒng)時(shí)鐘的方式,根據(jù)實(shí)際情況選擇單端還是差分,這里選擇單端。還有就是要注意下這里debug選項(xiàng),建議選擇”Disable”.其他默認(rèn);11、Next,同上;12、Next;13、選擇  Next;14、Next;二,IP中的文件打開生成的文件夾(一般在工程的ipcore_dir目錄下),四個(gè)文件夾分別是參數(shù)配置、RTL代碼、仿真庫(kù)和綜合腳本。 其中RTL文件夾內(nèi)的文件是我們主要關(guān)注的。這里的DDR667(建立IP時(shí)取的名字)是頂層文件,另外兩個(gè)分別是“管理時(shí)鐘”和“管理端口”的描述文件。  打開“管理時(shí)鐘”的infrastrcture.v,需要注意的幾點(diǎn)(1)       如果MCB的輸入時(shí)鐘是經(jīng)過(guò)IBFG處理的,那么這里的IBFG就需要注釋掉,IBFG是全局輸入時(shí)鐘的緩沖,一個(gè)工程中有一個(gè)即可。 (2)u_pll_adv模塊就是Xilinx的PLL核,并沒有什么特殊之處,而MCB只用了其中的4個(gè)時(shí)鐘輸出,其中一個(gè)還是提供給用戶邏輯使用,因此完全可以對(duì)該P(yáng)LL的3個(gè)時(shí)鐘輸出做自定義,這樣可以減少系統(tǒng)所用PLL個(gè)數(shù)。 對(duì)于自定義的PLL輸出根據(jù)需要最好加上BUFG, 然后將這些時(shí)鐘添加到模塊輸出項(xiàng),經(jīng)頂層模塊輸出。(3) 對(duì)于BUFPLL_MCB的詳細(xì)解釋,讀者可參見ug382手冊(cè).輸出文件和對(duì)應(yīng)的關(guān)系圖如下:   打開作為頂層文件的DDR667,可以看到在IP設(shè)置時(shí)所選擇的參數(shù)都在這里了,如果需要做改動(dòng),可以在這里的parameter下修改。這里的參數(shù)有最高的權(quán)限,會(huì)覆蓋所調(diào)用模塊的默認(rèn)值。 三, IP的使用(1)在par文件夾下面有系統(tǒng)默認(rèn)的UCF(約束文件),默認(rèn)情況下會(huì)使用該UCF文件。 筆者在使用中發(fā)現(xiàn)一個(gè)奇怪的問題,就是在自己重新定義UCF,且確認(rèn)所有的管腳都映射正確后,在MAP階段一直報(bào)錯(cuò),主要是報(bào)DQS、UDQS、DQS_N、UDQS_N這四個(gè)pin腳的分布有問題,嘗試了很多辦法都無(wú)效。 最終的解決辦法是從工程中移除頂層的DDR2_test.XCO文件(備注:這里DDR2_test是筆者為IP所取的名字),手動(dòng)添加所有的RTL源文件,編譯后順利通過(guò)map,不知道是bug還是其他的什么原因。(2) 由于spartan6系統(tǒng)是最新的FPGA,xilinx官方一直在更新ISE軟件,F(xiàn)PGA的內(nèi)核也會(huì)有所變動(dòng),在期間選型時(shí)需要留意DS162文件中不同器件所需要的軟件版本。 同時(shí),對(duì)于使用-2速度的朋友需要注意下在XCN10024中XILINX隊(duì)MCB的性能做了一些小小的修正,在內(nèi)核電壓較低(1.14~1.26)的情況下,速度由原來(lái)的667降低至625.  (3)由于系統(tǒng)默認(rèn)是將整個(gè)DDR按8bit來(lái)重新對(duì)地址編碼,這樣對(duì)于X16、X8和X4就需要根據(jù)下圖經(jīng)行重新的映射,具體可以參看UG388 (4)在設(shè)置FIFO的位寬時(shí),需要注意幾個(gè)速度問題。比如DDR3-800,如果器件是X8模式的,那么每個(gè)時(shí)鐘可以觸發(fā)16bit數(shù)據(jù)(DDR是雙沿觸發(fā)),假設(shè)FIFO是64bit,那么系統(tǒng)時(shí)鐘至少需要(16/64)*400=100MHZ才能跟上DDR的速度,同理如果是32bit的FIFO,那么至少需要200MHZ的系統(tǒng)時(shí)鐘,這個(gè)在系統(tǒng)規(guī)劃時(shí)需要注意。另外FIFO最多可以到64級(jí),每一級(jí)大小等于位寬。 (5)由于整個(gè)IP中定義的參數(shù)和系統(tǒng)調(diào)用模塊比較多,為了防止軟件將一些信號(hào)優(yōu)化掉,需要設(shè)置Hierarchy為soft (6)如果系統(tǒng)中不止一個(gè)DDR,可以參考XAPP496中相關(guān)設(shè)計(jì)思路。作者:夏日可樂87   

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多