版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第4章基于IPCore的設(shè)計4.1IP模塊的種類與應(yīng)用4.2IPCore的選擇與復(fù)用4.3IPCore生成工具簡介4.4常用IPCore的設(shè)計小結(jié)習(xí)題實驗項目4.1IP模塊的種類與應(yīng)用
1.硬核(HardCore)經(jīng)驗證的具有特定電路功能的集成電路版圖稱為硬核。硬核已完成對性能、尺寸和功耗的優(yōu)化,并對一個特定的工藝技術(shù)進行映射,具有可保證的性能。因此,在系統(tǒng)設(shè)計時,硬核只能在整個設(shè)計周期中被當(dāng)成一個完整的庫單元處理。硬IPCore可以再使用,且由于它已處于設(shè)計表示的最底層,因而最容易集成,容易成功流片。硬IPCore最大的優(yōu)點是確保性能,如速度、功耗等,但硬核一般不允許更改,硬IPCore難以轉(zhuǎn)移到新工藝或集成到新結(jié)構(gòu)中,它是不可重配置的。
2.固核(FirmCore)
帶有平面規(guī)劃信息的網(wǎng)表稱為固核。固核也是可重用的IP模塊,這些模塊已經(jīng)在結(jié)構(gòu)上和拓撲上對性能和面積通過平面布圖和布局進行了優(yōu)化,可以在一定的工藝技術(shù)范圍內(nèi)使用,作為可綜合的寄存器傳輸級(RTL)代碼或作為通用庫元件的網(wǎng)表文件提供,系統(tǒng)設(shè)計者可以根據(jù)特殊需要對固核的IP模塊進行改動。
3.軟核(SoftCore)
軟核是以可綜合的寄存器傳輸級(RTL)描述或通用庫元件的網(wǎng)表形式提供的可重用的IP模塊,這意味著軟核的使用者要負責(zé)實際的實現(xiàn)和布圖軟核,它的優(yōu)勢是對工藝技術(shù)的適應(yīng)性很強,應(yīng)用新的加工工藝或改變芯片加工廠家的時候很少需要對軟核進行改動,原來設(shè)計好的芯片可以方便地移植到新的工藝中。由于軟核設(shè)計以高層次表示,因而軟IPCore易于重定目標和重配置,然而預(yù)測軟IPCore的時序、面積與功率諸方面的性能較困難。
從完成IPCore設(shè)計所花費的代價來講,硬件宏單元代價最高,從IPCore的使用靈活性來講,軟件宏單元的可重復(fù)使用性最高。一個IPCore的價值不單與模塊本身的用途和設(shè)計復(fù)雜性有關(guān),而且與其可重復(fù)使用性程度和設(shè)計完成的程度有關(guān)。將IPCore完成至物理設(shè)計,其設(shè)計復(fù)雜性增加了,但是其可重復(fù)使用性卻降低了。
IPCore除提供形式方面的分類外,還有功能方面的劃分。一般IPCore可以分為兩大類,即嵌入式IPCore與通用IP模塊。嵌入式IPCore指可編程IP模塊,主要是CPU與DSP。通用IP模塊則包括存儲器、存儲控制器、通用接口電路、通用功能模塊等。IP模塊的這種劃分通常是基于商業(yè)方面的考慮,按業(yè)界的一般觀點,提供嵌入式IPCore的供應(yīng)商有比較大的利潤空間,而且生存環(huán)境較好。嵌入式IPCore除IPCore本身的設(shè)計外,還需要有良好的開發(fā)環(huán)境、軟件支持及完善的服務(wù)體系,因此其技術(shù)門檻相對較高,競爭不是非常激烈。通用IP模塊由于開發(fā)技術(shù)相對比較簡單,面臨的競爭也比較激烈。通用IP模塊的價值依賴于IPCore的技術(shù)含量、IPCore的品質(zhì)和供應(yīng)商的信譽,基于較新工藝的通用IPCore或包含有專利內(nèi)容的通用IPCore將有較好的發(fā)展前景。對技術(shù)要求較高的IPCore,如高速接口、高速鎖相環(huán)等模塊,也將有較強的生命力。
存儲器IPCore與其它IPCore稍有不同。通常存儲器的設(shè)計嚴重依賴于芯片的加工工藝,同時存儲器是SOC芯片上最重要的部件,大多數(shù)SOC芯片上的存儲器會占整個芯片面積的70%,甚至更多,而且芯片的性能將主要由存儲器的存取時間決定。存儲器IPCore通常由芯片加工廠家提供,而且都以硬IPCore的方式提供,部分廠家還依據(jù)特殊工藝提供DRAMIPCore。 4.2IPCore的選擇與復(fù)用
4.2.1IPCore的選擇
一個完整的系統(tǒng)設(shè)計主要由兩部分組成,一部分是核,如MCU、RAM,另一部分是用戶自己定義的邏輯電路。按系統(tǒng)設(shè)計的要求將這些功能模塊連接在一起就完成了芯片的設(shè)計,因此,首先是選擇合適的核,這主要從核的功能、性能可靠性和實現(xiàn)技術(shù)幾方面來考慮。硬IPCore與軟IPCore在實際應(yīng)用中各有其優(yōu)點與缺陷。軟IPCore設(shè)計比較靈活,可以根據(jù)具體的需要對軟IPCore的代碼進行改動,或軟IPCore本身提供許多可以設(shè)置的參數(shù),在應(yīng)用時比較方便。應(yīng)用軟IPCore的缺陷是軟核的關(guān)鍵路徑的時序性能無保證,最終性能主要取決于使用者采用的綜合、布局布線和實現(xiàn)技術(shù),設(shè)計完成后需要重新對完成設(shè)計的芯片進行功能與時序驗證。軟IPCore的設(shè)計工作量較大,而且設(shè)計時間較長。如何選擇軟IPCore也需要做較多的工作,需要向供應(yīng)商索取關(guān)于IPCore功能驗證方面的資料,詢問IPCore的應(yīng)用范圍,另外還需要考慮供應(yīng)商的聲譽。應(yīng)用軟IPCore也需要IPCore供應(yīng)商提供更多的服務(wù)。硬IPCore的實現(xiàn)較簡單,類似于PCB設(shè)計中IC芯片的使用。硬IPCore的優(yōu)勢是IPCore的設(shè)計在布局布線后經(jīng)過了詳細的功能優(yōu)化驗證與測試過程,部分IPCore還經(jīng)過了投片驗證與測試,時序性能穩(wěn)定,所以硬核的功能有非??煽康谋WC。一般在設(shè)計芯片時,70%?的時間都是花費在芯片設(shè)計的功能與時序驗證上,所以應(yīng)用硬IPCore進行設(shè)計可以顯著地節(jié)省設(shè)計時間。應(yīng)用硬IPCore進行設(shè)計的缺陷是它具有不能修改的結(jié)構(gòu)和布局布線,硬核不能按設(shè)計需要修改和調(diào)整時序,缺少使用的靈活性。硬核的設(shè)計嚴重依賴于設(shè)計時所參照的加工工藝,所以當(dāng)設(shè)計工藝改變的時候硬核的適應(yīng)性非常差。另外,在應(yīng)用硬核設(shè)計時,通常芯片的面積會較大,因為硬核的版圖必須作為模塊直接安放在芯片版圖中,而基于模塊的設(shè)計所得到的芯片面積通常比將模塊功能分散后進行布局布線得到的芯片面積大。硬核的設(shè)計是完全無法更改的,因此其應(yīng)用范圍也受到了一定的限制。軟IPCore與硬IPCore并非對立關(guān)系,通常供應(yīng)商會同時提供完成同一種功能的軟IPCore和硬IPCore,而后由客戶按自己的需要進行選擇。在有些情況軟IPCore與硬IPCore會結(jié)合在一起,例如在一個完整的功能模塊中,可能同時存在軟IPCore部分與硬IPCore部分,軟的部分提供某種程度的可調(diào)整性與適應(yīng)性,而硬的部分可以不用重新驗證,可以節(jié)省芯片設(shè)計時間,避免了軟IPCore的某些缺陷。通常在SOC芯片設(shè)計中,微處理器與存儲器會使用硬IPCore。微處理器的設(shè)計比較復(fù)雜,對時序的要求比較嚴格,應(yīng)用硬IPCore可以排除許多時序錯誤,同時可以保證處理器的性能。存儲器是對芯片性能影響最大的部件,而且其設(shè)計嚴重依賴于設(shè)計工藝,所以存儲器IPCore通常也作為硬IPCore出現(xiàn)在芯片中。典型SOC芯片中硬IPCore與軟IPCore的使用如圖4.1所示。圖4.1典型SOC芯片中硬IPCore與軟IPCore的使用在芯片的設(shè)計與生產(chǎn)過程中,IPCore的應(yīng)用及IPCore的供應(yīng)方式也并非一成不變。通常在芯片設(shè)計的初期,除存儲器模塊為硬IPCore外,大部分的模塊可能都是軟IPCore。當(dāng)芯片完成設(shè)計,經(jīng)過功能驗證、時序驗證與投片測試后,可能有部分IPCore被固化為硬IPCore并被加入到IP庫中,然后隨著芯片設(shè)計的不斷改進,被固化的IPCore會越來越多,到芯片大規(guī)模生產(chǎn)的時候,可能85%的芯片面積都由硬IPCore占據(jù)。當(dāng)新的加工工藝出現(xiàn),需要將芯片移植到新的工藝中時,就會出現(xiàn)下一個循環(huán),芯片的設(shè)計流程重新開始,大部分的模塊為軟IPCore,并需要重新進行芯片的各種驗證工作。通常在設(shè)計芯片時需要考慮工藝的成熟程度,如果加工工藝非常成熟,通常會存在大量的基于此種工藝的硬IPCore資源,而且大部分供應(yīng)商的產(chǎn)品都已經(jīng)經(jīng)過了各種驗證,應(yīng)用硬IPCore設(shè)計會節(jié)省大量的設(shè)計時間,芯片的性能與品質(zhì)也可以得到很好的保證。根據(jù)IPCore使用的方式不同,IPCore設(shè)計者還可以按下列三種形式設(shè)計供集成選擇的IPCore:可再用、可重定目標以及可配置??稍儆肐PCore是著眼于按各種再使用標準定義的格式和快速集成的要求而建立的,便于移植,更重要的是有效集成;可重定目標IPCore是在充分高的抽象級上設(shè)計的,因而可以方便地在各種工藝與結(jié)構(gòu)之間轉(zhuǎn)移;可配置IPCore是參數(shù)化后的可重定目標IPCore,其優(yōu)點是可以對功能加以裁剪以符合特定的應(yīng)用,這些參數(shù)包括總線寬度、存儲器容量、使能或禁止功能塊。4.2.2IPCore的復(fù)用
IPCore的復(fù)用是設(shè)計人員贏得迅速上市時間的主要策略。系統(tǒng)設(shè)計者的主要任務(wù)是在規(guī)定的周期時間內(nèi)研發(fā)出復(fù)雜的設(shè)計,IPCore的復(fù)用已經(jīng)成為系統(tǒng)設(shè)計方法的關(guān)鍵所在?!皬?fù)用”(re-use)指的是在設(shè)計新產(chǎn)品時采用已有的各種功能模塊,即使進行修改也是非常有限的,這樣可以減少設(shè)計的人力和風(fēng)險,縮短設(shè)計周期,確保優(yōu)良品質(zhì)。但伴隨著IPCore的推廣和使用,也出現(xiàn)了一系列亟須解決的問題。對于每個集成電路設(shè)計師來說,每天所能處理的工作量卻無法有很大的提高,如果按每天處理100門電路來計算,一個人設(shè)計百萬門的電路將耗費掉數(shù)百年的時間。而且隨著芯片集成度的提高,芯片的復(fù)雜程度也相應(yīng)地提高,在單芯片上可能需要集成各種不同功能的電路,如圖像處理、加密電路、接口電路、模擬電路等。設(shè)計芯片所需要的技術(shù)種類比較繁雜,而且必須適用于各種嚴格的工業(yè)標準。對于單個的設(shè)計公司來說,掌握這些不同領(lǐng)域的技術(shù)很困難。因此,首先IPCore供應(yīng)商需要提供怎樣的文件,才能使IPCore用戶能夠方便、準確地進行IPCore選擇;其次是IPCore的使用者并不熟悉IPCore結(jié)構(gòu),如何才能快速對其進行修改以適應(yīng)設(shè)計者的需要(對軟IPCore);第三,由于SOC各模塊間的通訊并沒有一個統(tǒng)一的標準,造成IPCore集成的困難,如何解決IPCore的接口標準問題。另外,需要研究如何重復(fù)使用過去的設(shè)計模塊,如何使新的設(shè)計能夠具有可重復(fù)使用性、可重復(fù)綜合性、可重復(fù)集成性以及如何進行系統(tǒng)級驗證;第四,IPCore種類很多,如何建立一個相對客觀的IPCore評價體系,實現(xiàn)對IPCore質(zhì)量的評估;第五,如何進行IPCore的驗證;第六,IPCore使用的最大障礙之一是IPCore的知識產(chǎn)權(quán)保護,如何有效地建立起IPCore的保護體系。這一系列問題的出現(xiàn),最終導(dǎo)致了IPCore標準的產(chǎn)生及相關(guān)國際組織的出現(xiàn)。由于IPCore已成為芯片設(shè)計的一項重要內(nèi)容,因此業(yè)界成立了不同的組織以推動設(shè)計復(fù)用標準的發(fā)展,他們的目標是開發(fā)一套業(yè)界標準,促進IPCore的使用并簡化外部IPCore與內(nèi)部設(shè)計之間的接口。1996年9月虛擬接口聯(lián)盟(VSIA)成立,該聯(lián)盟的成立是為了推動多個來源IP內(nèi)核之間的“混合搭配”而制訂開放標準,從而加速SOC開發(fā)。該聯(lián)盟的會員由業(yè)界各系統(tǒng)公司、半導(dǎo)體公司、IPCore公司和EDA公司組成。Synopsys公司和MentorGraphics公司合作開展了著名的OpenMORE(OpenMeasureofReuseExcellence)計劃,這是建立在兩家公司共同發(fā)起的“復(fù)用方法指南”基礎(chǔ)上的一項評估計劃。一些開發(fā)和銷售IPCore的公司于1996年成立了可復(fù)用特定應(yīng)用知識產(chǎn)權(quán)開發(fā)協(xié)會(RAPID)。國際上為IP/SOC制定標準的主要組織/聯(lián)盟有IEEE國際標準化組織VSIA、OCP-IP和SPIRIT,專門從事核或稱IPCore模塊的互連標準研究,使核的使用就像在印制板上使用集成電路塊一樣方便。這三個聯(lián)盟的目的都是要使設(shè)計人員更容易地進行IPCore的集成,但他們的工作并不重疊,而是高度互補的。VSIA為IPCore的交付、轉(zhuǎn)讓、質(zhì)量評估以及保護制定了較全面的標準,起到不可替代的作用;OCP-IP致力于IPCore接口及片上互連標準的開發(fā),為IPCore的即插即用作出了貢獻;SPIRIT致力于IPCore集成的自動化。 4.3IPCore生成工具簡介
CoreGenerator是基于XilinxFPGA的IPCore開發(fā)工具,是XilinxFPGA設(shè)計ISE開發(fā)軟件中的一個重要的設(shè)計輸入工具,它提供了大量成熟、高效的IPCore為用戶所用。
CoreGenerator可生成的IPCore大致分為十大功能模塊:基本模塊、通信與網(wǎng)絡(luò)模塊、數(shù)字信號處理模塊、存儲器模塊、微處理器模塊、控制器與外設(shè)模塊、標準與協(xié)議模塊、語音處理模塊、標準總線模塊、視頻與圖像處理模塊等,這些功能涵蓋了從基本設(shè)計單元到復(fù)雜功能樣機的眾多成熟設(shè)計,而且每次ISE的升級補丁中都會有IPCore的升級,另外用戶可以通過Xilinx的IPCore中心查詢更多的IPCore信息。
如果用戶設(shè)計只是針對FPGA應(yīng)用的,使用IPCore能避免重復(fù)設(shè)計,縮短工程時間,提高工作效率。CoreGenerator是根據(jù)Xilinx的FPGA器件特點和結(jié)構(gòu)而設(shè)計的,直接用XilinxFPGA底層硬件語言描述,充分發(fā)揮了FPGA的功能,其實現(xiàn)結(jié)果在面積和速度上都令人滿意。圖4.2所示為CoreGenerator的操作界面。圖4.2CoreGenerator的操作界面
1.菜單欄
菜單欄由一系列下拉菜單組成,這些菜單涵蓋了IPCore生成器的所有命令,下面介紹三個常用菜單。
(1)【File】菜單:包括新建工程(NewProject)、打開工程(OpenProject)、關(guān)閉工程(CloseProject)、保存工程(SaveProject)、導(dǎo)入XCO文件(ImportXCOFile)等命令。另外用戶可以用【Preferences】命令指定PDF瀏覽器與網(wǎng)絡(luò)瀏覽器的位置,并設(shè)置代理服務(wù)器等互聯(lián)方式。
(2)【Tools】菜單:包括存儲編輯器(MemoryEditor)和查找IP索引表(SearchIPList)。其中,存儲編輯器是設(shè)計存儲器的初始化文件(擴展名為?.coe),查找IP索引表是通過鍵入IPCore的名字查找相應(yīng)的IPCore。
(3)【Help】菜單:包含的命令有CoreGenerator幫助(CoreGeneratorHelp)、網(wǎng)絡(luò)幫助(XilinxontheWeb)和軟件手冊(SoftwareManuuals)等。
3.IPCore的顯示
IPCore有三種顯示方式:
(1)按功能查看IPCore:在這種模式下,按照功能顯示CoreGenerator的模塊。
(2)按名字查看IPCore:在這種模式下,IPCore按照字母排列的順序顯示所有的IPCore。在查詢欄里輸入用戶所需IPCore的名稱,則對應(yīng)的IPCore就被找出。
(3)查看已經(jīng)生成的IPCore:在這種模式下,IPCore分類目錄欄顯示了當(dāng)前工程已生成的IPCore的基本信息,包括IPCore模塊名稱、IPCore名稱、版本號、器件族供應(yīng)商和生成日期。
4.操作信息顯示欄
該欄顯示了IPCore生成器和用戶之間的交互信息,如工程的報警、錯誤等基本信息。
5.所選IPCore信息欄
該欄顯示了所選IPCore的一些基本信息,包括該IPCore的簡介和其所支持的器件族等。
6.IPCore分類目錄欄
該欄根據(jù)IPCore的三種顯示方式完成對應(yīng)的IPCore顯示。 4.4常用IPCore的設(shè)計
4.4.1可逆計數(shù)器的設(shè)計
計數(shù)器在FPGA的設(shè)計中用得十分廣泛,這里以四位可逆二進制計數(shù)器為例對其IPCore設(shè)計予以介紹。
1.基于CoreGenerator的工程的創(chuàng)建與管理
IPCore生成器的啟動方法有兩種,一種是在【ProjcetNavigator】中新建CoregenIP類型的資源(請參考第2章中工程的建立與管理);另一種是直接在Windows界面下運行【開始】→【程序】→【XilinxISEDesignSuit10.1】→【ISE】→【Accessories】→【COREGenerator】命令。這里采用第二種方式,選擇的器件族為Spartan-3E,器件為XC3S500E,封裝類型為4FG320C(后面的IP所選的器件與此相同),然后打開如圖4.3所示窗口。圖4.3選擇IPCore源文件向?qū)?/p>
2.?IPCore的參數(shù)設(shè)計與生成
正確設(shè)置工程的屬性后就可以根據(jù)需要選擇合適的IPCore。在圖4.3的功能欄中,選擇【BasicElements】→【Counters】→【BinaryCounterv8.0】,右鍵單擊【BinaryCounterv8.0】或者在右邊的信息欄中選擇例化該IPCore(Customize)選項。單擊【Customize】或者雙擊【BinaryCounterv8.0】,打開該IPCore的參數(shù)設(shè)置窗口的第1頁,如圖4.4所示。這里需要從以下幾個方面對該IPCore進行設(shè)置。
(1)?IPCore的名字(ComponentName):每個IPCore都必須給其定義一個名字。
(2)輸出數(shù)據(jù)寬度選擇(WidthOptions):可選寬度為2~30位。
(3)計數(shù)限制選擇(CountRestrictions):可分為計數(shù)步長選擇和計數(shù)終值選擇。
①計數(shù)步長選擇(StepValue):可選步長為1~2數(shù)據(jù)寬度-1。
②計數(shù)終值選擇(FinalCountValue):可選范圍為0~2數(shù)據(jù)寬度-2。
(4)計數(shù)模式選擇(CountMode):這里有加計數(shù)(UP)、減計數(shù)(DOWN)和可逆計數(shù)(UP/DOWN)三種方式。圖4.4四位可逆二進制計數(shù)器IPCore的參數(shù)設(shè)置頁面1單擊按鈕,進入第2頁的參數(shù)設(shè)置,如圖4.5所示,其中全部為寄存器的設(shè)置:
(1)異步設(shè)置(AsynchronousSettings):包括異步置位(Set)、異步清零(Clear)以及初始化設(shè)置(Init),通過初始化可以異步地設(shè)置寄存器的初始值。
(2)同步設(shè)置(SynchronousSettings):與異步設(shè)置類似。
(3)時鐘使能(ClockEnable):在使能信號為高電平時輸入的時鐘信號才是有效的。圖4.5四位可逆二進制計數(shù)器IPCore的參數(shù)設(shè)置頁面2單擊按鈕,進入第3頁的參數(shù)設(shè)置,如圖4.6所示。
(1)置數(shù)可選項(LoadOptions):可以通過輸入端口置入計算的初始值。
(2)門檻可選項(ThresholdOptions):包括異步門檻值設(shè)置(AsynchronousThresholdOutput)、同步門檻值設(shè)置(SynchronousThresholdOutput)和時鐘初期門檻設(shè)置(CycleEarlyThresholdOutput)。當(dāng)計數(shù)值與所設(shè)門檻值相等時,其輸出為高電平。
此例中參數(shù)按圖4.4、圖4.5和圖4.6界面進行設(shè)置,參數(shù)設(shè)置完成后,單擊按鈕,就生成了按照所設(shè)參數(shù)要求的IPCore。圖4.6四位可逆二進制計數(shù)器IPCore的參數(shù)設(shè)置頁面3
3.?IPCore的仿真
在【ProjectNavigator】里,打開該IPCore。如果是初次使用,還需要對ISE所帶的庫文件進行編譯。編譯成功后,選擇【Project】→【Newsource】→【Schemtic】,在原理圖中就可以用原理圖方式調(diào)用該IPCore,完成該IPCore的端口設(shè)置,產(chǎn)生后綴名為?.sch的頭文件。
加入波形測試向量。選擇【Project】→【NewSource】→【TestBenchWaveform】,在接下來的選項中,將該波形測試文件與后綴名為?.sch的頭文件相映射,就產(chǎn)生了波形測試向量。然后調(diào)用仿真軟件ModelSim對其進行仿真,其仿真波形及關(guān)鍵信號的說明如圖4.7所示。圖4.7四位可逆二進制計數(shù)器IPCore的仿真波形與關(guān)鍵信號的說明4.4.2存儲器的設(shè)計
1.雙口RAM的設(shè)計
RAM有三種模式,分別是單端口RAM、簡單雙端口RAM以及真正雙端口RAM。這里以真正雙端口RAM為例介紹RAM模式。
雙端口RAM模型如圖4.8所示,圖中上邊的端口A和下邊的端口B都支持讀寫操作,WEA、WEB信號為高電平時進行寫操作,低電平為讀操作。同時它支持兩個端口讀、寫操作的任何組合:兩個端口同時讀操作、兩個端口同時寫操作或者在兩個不同的時鐘下一個端口執(zhí)行寫操作,另一個端口執(zhí)行讀操作。兩個端口的寬度可以有多種定義,可以是同寬度,也可以是不同寬度的,這樣的結(jié)構(gòu)給設(shè)計者帶來了方便。雙端口RAM的引出端定義如表4.1所示。圖4.8雙端口RAM的模型
下面詳細介紹雙口RAM的IPCore的設(shè)計以及仿真。
1)?IPCore的參數(shù)設(shè)計與生成
在XilinxCoreGenerator中,選擇【MEMORIES&StorageElements】→【RAMs&ROMs】,可看到五個存儲模塊,其中灰色的項目表示由于所選器件族不支持此IPCore,所以該IPCore在當(dāng)前工程不可用。這里選擇在Spartan-3E器件族可以使用的【DualPortBlockMemory6.3】。
雙擊【DualPortBlockMemory6.3】,打開該IPCore的參數(shù)設(shè)置窗口的第1頁,如圖4.9所示,需要對該IPCore的名字以及端口A、B等基本參數(shù)進行設(shè)置。圖4.9雙口RAM的參數(shù)設(shè)置頁面1
(1)存儲容量(MemorySize):包括端口A和端口B。
①端口A包括:
●?數(shù)據(jù)端口深度(Width):可以選擇數(shù)據(jù)端口A的寬度,寬度范圍為1~256位。
●?地址端口A深度(Depth):可以選擇存儲器的字節(jié)數(shù),由于存儲容量為4MB,故數(shù)據(jù)寬度為3位,則存儲器的字節(jié)數(shù)范圍為2B~1MB。
②端口B包括:
●?數(shù)據(jù)端口深度(Width):可以選擇數(shù)據(jù)端口B的寬度,其寬度取決于定義的數(shù)據(jù)端口A的寬度。不同的器件系列其寬度不同,這里為數(shù)據(jù)端口A的寬度的1、2、4倍。
●?地址端口B深度(Depth):定義了端口A寬度、深度以及端口B寬度后,端口B的深度值將為定值。根據(jù)端口A和B定義的存儲器的大小必須相等可以計算出端口B的深度。
(2)端口A/B可選項(PortA/BOptions)包括:
①配置選項(Configuration):可以選擇的有讀寫(ReadandWrite)、只寫(WriteOnly)以及只讀(ReadOnly)模式。
②寫模式(Writemode):可以選擇的有讀后寫(ReadAfterWrite)、讀前寫(ReadBeforeWrite)以及只寫不讀(NOReadOnWrite)模式。
●?ReadAfterWrite模式:在該模式下,同時讀寫B(tài)lockRAM的同一地址,讀出的數(shù)據(jù)與當(dāng)前寫入的數(shù)據(jù)相同,其時序如圖4.10所示。圖4.10ReadAfterWrite模式時序●?ReadBeforeWrite模式:在該模式下,存儲器中當(dāng)前地址上的數(shù)據(jù)被傳送到輸出端口,其時序如圖4.11所示。
●?NOReadOnWrite模式:在該模式下,同時讀寫B(tài)lockRAM的同一地址時,讀出的數(shù)據(jù)將在數(shù)據(jù)寫入時保持不變。圖4.11ReadBeforeWrite模式時序
(3)端口A、B設(shè)計可選項(PortA/BDesignOptions)包括:
①引腳可選項(OptionsPins):
●?引腳使能端(EnabledPin):含義如表4.1所示。
●?握手信號引腳端(HandshakingPins):包括ND、RFD、RDY信號,它們的含義如表4.1所示。圖4.12雙口RAM的參數(shù)設(shè)置頁面2②輸入寄存器可選項(RegisterInputs):可以為輸入端口DIN、ADDR和WE添加輸入寄存器,若添加了寄存器,則數(shù)據(jù)在這些端口的第2個時鐘的上升沿輸入到該模塊內(nèi)部。
③輸出寄存器可選項(OutputRegisterOptions):包括以下兩個選項:
●?附加的輸出流水階段(AdditionalOutputPipeStages):選擇“1”可以為輸出端口再增加一級寄存器,選擇“0”不加寄存器。
●?初始化(SINITPin),其含義如表4.1所示。
④引腳極性(PinPolarity):使用者可以為引出端進行極性配置,包括時鐘選擇上升沿還是下降沿、高電平還是低電平使能。
單擊按鈕,進入第4頁的參數(shù)設(shè)置界面,如圖4.13所示。圖4.13雙口RAM的其它參數(shù)設(shè)置頁面4
(4)仿真模式可選項(SimulationModelOptions):對警告信息的使能選擇。
(5)初始化設(shè)置(InitialContents):可以設(shè)置配置后存儲器中的初始值。
①全局初始化值(GlobalInitValue):定義了配置后存儲器中的初始值,缺省值為“0”。
②加載初始化文件(LoadInitFile):存儲器中的初始值可以保存在一個?.coe的文件中,加載這個文件可以使存儲器在配置后,各個單元的初始值為文件中所列出的值。對于?.coe的文件,可以通過MemoryEditor生成,下面為其生成方法:
打開XilinxCoreGenerator,選擇【Tools】→【MemoryEditor】,進入MemoryEditor編輯界面,如圖4.14所示。圖4.14MemoryEditor編輯界面單擊按鈕,然后鍵入“d_ram”,設(shè)置好雙端口RAM的各個參數(shù),并且在初始值輸入?yún)^(qū)(MemoryContents)寫入相關(guān)數(shù)據(jù)。選擇【File】→【Generate】,生成?.coe文件,如圖4.15所示。圖4.15.coe文件的生成
2)?IPCore的仿真
雙口RAM的參數(shù)設(shè)置分別如圖4.9、圖4.12、圖4.13所示,其仿真波形與說明如圖4.16所示。圖4.16雙端口RAM的仿真波形與說明
2.ROM的設(shè)計
FPGA中的塊RAM(BlockRAM)也可以配置成ROM。使用存儲器初始化文件(?.coe)對ROM進行初始化,在加電后使其內(nèi)部的內(nèi)容保持不變,即實現(xiàn)了ROM功能。
ROM的設(shè)計主要是生成相應(yīng)的?.coe文件,.coe文件的產(chǎn)生可以用MemoryEditor直接輸入相應(yīng)的數(shù)據(jù)(見雙端口BlockRAM中的相關(guān)說明),也可以用MATLAB/C++?中的函數(shù)方便地生成數(shù)據(jù)。這里以一個正弦信號為例介紹如何借助MATLAB生成ROM的?.coe文件。
(1)用MATLAB計算出正弦波形的浮點值,并量化8比特的定點波形數(shù)值。
打開MATLAB,編寫如下程序:
①在0~2π內(nèi)等間隔取256個點:x=linspace(0,6.28,256);
②計算幅度為1的采樣點的正弦函數(shù)的正弦值:y?=?sin(x);
③由于數(shù)值為8bit,需要將數(shù)據(jù)放大然后取整:y?=?y*256;
④將文件存盤,并量化成8bit:
f=fopen('f:/sin.txt','wt');
fprintf(f,'%8.0f\n',y);
fclose(f)
(2)生成?.coe文件。
在F盤根目錄下,將sin.txt的后綴改成?.coe,打開文件,并在最后一行添加一個分號“;”,然后在文件的最開始添加下面兩行:
memory_initialization_radix=10;
memory_initialization_vector=……
上面兩行是對所存貯數(shù)據(jù)的進制以及相關(guān)初始值的說明,然后保存文件退出。
(3)將?.coe文件加載到所生成的ROM中。
①單擊【Memories&StorageElements】→【RAMs&ROMS】→【BlockMemoryGeneratorv2.7】,新建一個BlockRAM的IPCore。
②IPCore的參數(shù)設(shè)置。打開該IPCore的參數(shù)設(shè)置界面,單擊??按鈕翻頁,在第1頁選擇單口ROM(SinglePortRom),在第2頁選擇數(shù)據(jù)位寬為8,數(shù)據(jù)深度為256,在第3頁載入初始化的?.coe文件,如圖4.17所示。圖4.17ROM初始化文件的載入在存儲器初始化(MemoryInitialization)欄中的載入初始化文件(LoadInitFile)單選框中打“√”,然后單擊按鈕,找到存儲初始化文件的路徑,選擇初始化文件完成載入。
3.FIFO的設(shè)計
FIFO即數(shù)據(jù)先入先出。在FIFOIPCore的具體實現(xiàn)中,數(shù)據(jù)存儲的部分是采用簡單雙端口模式操作的,一個端口只寫數(shù)據(jù)而另一個端口只讀數(shù)據(jù),另外在RAM(塊RAM和分布式RAM)周圍加一些控制電路來輸出指示信息。FIFOIPCore常用引出端的定義如表4.2所示。
下面是FIFO的IPCore設(shè)計。先選擇IPCore的類型以及型號,選擇【Memories&StorageElements】→【FIFOs】→【FifoGeneratorv4.3】,打開FIFO的參數(shù)設(shè)置頁面,如圖4.18所示。圖4.18FIFO的參數(shù)設(shè)置頁面1
(1)?FIFO的參數(shù)設(shè)置。圖4.19FIFO的參數(shù)設(shè)置頁面2
(2)讀模式(ReadMode)包括以下兩種模式:
①標準模式(StandardFIFO):在該模式下,F(xiàn)IFO復(fù)位后,寫入的第一個數(shù)據(jù)會進入存儲單元中,但輸出緩沖器為空。只有進行第二次讀操作時,才會讀取有效數(shù)據(jù)。
②首字直接傳送模式(Fist-WordFall-Through):該模式在復(fù)位后第一次寫操作時,寫入的數(shù)據(jù)會同時送往內(nèi)部存儲單元和輸出緩沖區(qū)。當(dāng)執(zhí)行讀操作時,讀取的數(shù)據(jù)就是有效
數(shù)據(jù)。
(3)嵌入式FIFO可選項(Built-inFIFOOptions)包括以下兩個設(shè)置項:
①讀時鐘頻率設(shè)置(ReadClockFrequency):可設(shè)置范圍為1MHz~1000MHz。
②寫時鐘頻率設(shè)置(WriteClockFrequency):可設(shè)置范圍為1MHz~1000MHz。
(4)數(shù)據(jù)端口參數(shù)(DataPortParameters)包括以下四個設(shè)置項:
①數(shù)據(jù)寫入寬度(WriteWidth):可設(shè)置范圍為1~256位。
②數(shù)據(jù)寫入深度(WriteDepth),可設(shè)置范圍為24~222。
數(shù)據(jù)讀出寬度、深度的設(shè)置范圍與寫入的相同。
(5)實現(xiàn)可選項(ImplemetationOptions)包括以下兩個選項:
①ECC使能(EnableECC):只有Virtex-5系列的公共及獨立時鐘的RAM與嵌入式FIFO支持該選項。
②在BRAM或FIFO中使用嵌入式寄存器。
點擊按鈕,進入?yún)?shù)設(shè)置頁面3,如圖4.20所示。圖4.20FIFO的參數(shù)設(shè)置頁面3
(6)標志位可選項(OptionalFlags)包括以下兩個選項:
①幾乎滿標志(AlmostFullFlag):只差一個數(shù)據(jù)就寫滿的標志。
②幾乎空標志(AlmostEmptyFlag):只差一個數(shù)據(jù)就讀空的標志。
(7)握手可選項(HandshakingOptions)包括以下兩種設(shè)置:
①寫端口握手可選項(WriteAcknowledge):包括寫握手標志與溢出標志。其中寫握手標志表示當(dāng)前數(shù)據(jù)成功地寫入了存儲單元;溢出標志表示寫入了超過存儲容量的數(shù)據(jù),該數(shù)據(jù)溢出,該端口可以設(shè)置為高電平或者低電平輸出。
②讀端口握手可選項(ReadAcknowledge):與寫端口相似,包括讀握手標志和下溢標志。
點擊按鈕,進入?yún)?shù)設(shè)置頁面4,如圖4.21所示。圖4.21FIFO的參數(shù)設(shè)置頁面4
(8)初始化設(shè)置(Initiazation)。
①復(fù)位引腳(ResetPin):包括同步和異步復(fù)位設(shè)置,可以設(shè)置為高電平或者低電平有效。
②使用輸出復(fù)位值(UseDoutReset)。
(9)可編程標志(ProgrammableFlags)包括以下幾個設(shè)置:
①可編程的滿類型(ProgrammableFullType)包括以下幾個選項:
●無可編程的滿閾值(NoProgrammableFullThreshold):不能設(shè)置滿標志。
●單路的可編程滿握手常數(shù)(SingleProgrammableFullThresholdConstant):編程設(shè)置滿標志的數(shù)值,當(dāng)?shù)搅嗽摂?shù)值時,對應(yīng)的端口輸出為1?!穸嗦返目删幊虧M握手常數(shù)(MultipleProgrammableFullThresholdConstants):分別可以設(shè)置正值與負值。
●單路的可編程滿握手輸入端口(SingleProgrammableFullThresholdinputport):從外部端口輸入“滿”標志的數(shù)值。
●多路的可編程滿握手輸入端口(MultipleProgrammableFullThresholdInputPorts):與前類似。
②滿握手正值設(shè)置(FullThresholdAssertValue):當(dāng)FIFO成功寫入的數(shù)據(jù)大于或等于所設(shè)置值時,輸出高電平。
③滿握手負值設(shè)置(FullThresholdNegateValue):當(dāng)FIFO中所存數(shù)據(jù)小于或等于所設(shè)置值時,輸出低電平??删幊痰摹翱铡睒酥疽约跋嚓P(guān)設(shè)置與“滿”標志類似。
點擊按鈕,依次進入FIFO的參數(shù)設(shè)置頁面5和頁面6。參數(shù)設(shè)置頁面5為FIFO的數(shù)據(jù)個數(shù)設(shè)置選項,通過該輸出端口,設(shè)計者可知道存儲單元存儲的數(shù)據(jù)個數(shù)。參數(shù)設(shè)置頁面6是對該IPCore的選擇情況的一個說明。IPCore參數(shù)的設(shè)置如圖4.18~圖4.21所示,仿真波形圖和說明如圖4.22所示。圖4.22FIFO的仿真波形和說明4.4.3時鐘的設(shè)計
1.全局時鐘網(wǎng)絡(luò)
在FPGA設(shè)計中,時鐘的設(shè)計和使用至關(guān)重要。在Xilinx系列FPGA產(chǎn)品中,全局時鐘網(wǎng)絡(luò)是一種全局布線資源,它可以保證時鐘信號到達各個目標邏輯單元的時延基本相同。針對不同類型的器件,Xilinx公司提供的全局時鐘網(wǎng)絡(luò)在數(shù)量、性能等方面都有區(qū)別,這里以Spartan-3E系列器件為例,介紹全局時鐘網(wǎng)絡(luò)的特性和用法。圖4.23所示為Spartan-3E系列器件全局時鐘網(wǎng)絡(luò)分布示意圖,其中16個全局時鐘輸入位于芯片的上部與下部,8個右半平面時鐘輸入位于芯片的右側(cè),8個左半平面時鐘輸入位于芯片的左側(cè)。時鐘選擇器的輸出可以連到同一側(cè)垂直連線上,還可以連到同一側(cè)任何一個數(shù)字時鐘管理器DCM(DigitalClockManager)模塊的輸入上。DCM當(dāng)中包含一個延遲鎖定電路DLL(Delay-LockedLoop),可以提供對時鐘信號的二倍頻和分頻功能,并且能夠維持各輸出時鐘之間的相位關(guān)系,即零時鐘偏差。圖4.23Spartan-3E系列器件全局時鐘網(wǎng)絡(luò)分布示意圖全局時鐘通過將時鐘選擇器或者全局時鐘緩沖器放置在設(shè)計中以減少動態(tài)功耗,Xilinx的軟件自動禁用那些沒有用到的時鐘線。其中時鐘緩沖多路選擇器不僅驅(qū)動輸入時鐘信號直接到達內(nèi)部緩沖器,而且提供了轉(zhuǎn)換兩個互不相關(guān)時鐘信號的多路選擇器。
在Spartan-3E系列器件中,全局時鐘網(wǎng)絡(luò)最簡單的用法是將時鐘信號與全局時鐘網(wǎng)絡(luò)直接相連,從而保證時鐘信號到達各邏輯單元的時延基本相同,如圖4.24所示。
在圖4.24(a)中,全局時鐘信號(GCLK)通過時鐘輸入引腳端(PAD)輸入,經(jīng)過輸入緩沖器IBUFG和內(nèi)部緩沖器BUFG到達時鐘分布網(wǎng)絡(luò),保證有足夠的驅(qū)動能力。在圖4.24(b)中,差分全局時鐘信號(GCLKS和GCLKP)通過差分時鐘輸入端輸入,經(jīng)過輸入緩沖器(IBUFGDS)和內(nèi)部緩沖器(BUFG)到達時鐘分布網(wǎng)絡(luò)。
在圖4.24(c)中,全局時鐘信號(GCLK)通過時鐘輸入引腳端(PAD)輸入,經(jīng)過輸入緩沖器(IBUFG)和數(shù)字時鐘管理器(DCM),DCM作處理提供統(tǒng)一的同步時鐘,通過內(nèi)部緩沖器(BUFG)到達時鐘分布網(wǎng)絡(luò)。圖4.24Spartan-3E系列器件中全局時鐘網(wǎng)絡(luò)應(yīng)用示意圖(a)單端輸入(b)差分輸入(c)經(jīng)DCM輸出
2.數(shù)字時鐘管理器(DCM)
DCM是Xilinx公司在其產(chǎn)品中采用的時鐘管理機制。DCM的主要功能包括消除時鐘時延、頻率綜合和時鐘相位調(diào)整。在Spartan-3E系列器件中,DCM可以工作在高頻或低頻模式,其關(guān)鍵參數(shù)包括輸入時鐘頻率范圍、輸出時鐘頻率范圍、輸入時鐘允許抖動范圍、輸出時鐘允許抖動范圍等。
圖4.25所示為Spartan-3E系列器件DCM的引出端,其定義如表4.4所示。圖4.25DCM的引出端
下面介紹DCM的IPCore設(shè)計。先選擇IPCore的類型以及型號,選擇【FPGAFeaturesandDesign】→【Clocking】→【Spartan-3E】→【ChooseWizardbyConponent】→【DCMADVv9.1li】,然后雙擊【DCMADVv9.1li】,打開該IPCore的參數(shù)設(shè)置窗口的第1頁,如圖4.26所示。圖4.26DCM的參數(shù)設(shè)置頁面1在DCM模塊的輸出端口中,ISE選中CLK0和LOCKED這兩個信號,其余的輸出信號自己添加。
(1)輸入時鐘頻率(InputClockFrequency):可在輸入時鐘頻率欄中鍵入輸入時鐘的頻率或周期,單位分別是MHz和ns。
(2)相移(PhaseShift):包括類型(Type)和值(Value)。不同的相移類型對應(yīng)不同的值:
●類型為無(NONE):沒有相移,則對應(yīng)的值value不能設(shè)置。
●類型為固定(FIXED):通過設(shè)置值value改變相應(yīng)的輸出信號的相移,值的范圍為-255~255。
●類型為可變(VARIABLE):通過PSEN、PSINCDEC和PSCLK等三個輸入信號動態(tài)地調(diào)整輸出信號的相移,值的范圍為-102~102。
(3)輸入時鐘信號源(CLKINSource):包括外部的時鐘信號源和內(nèi)部的時鐘信號源兩個選項。
●外部的(External):通過輸入全局緩沖器連接輸入時鐘信號源。輸入時鐘信號源可以選擇單個(Single)或者差分(Differential)輸入。
●內(nèi)部的(Internal):內(nèi)部時鐘信號源連接輸入時鐘信號源。
(4)反饋信號源(FeedbackSource)有以下三個選項:
●無(None):無反饋。
●外部的(External):通過輸入引腳反饋。
●內(nèi)部的(Internal):通過內(nèi)部緩沖器反饋。
(5)反饋值(FeedbackValue):與反饋信號源的選項對應(yīng),只有在選擇外部的(External)選項時,反饋值有單個(Single)或者差分(Differential)兩種輸入。而在選擇無(None)和內(nèi)部的(Internal)時,反饋值不可選。
(6)分頻系數(shù)(DivideByValue):只有在選擇端口“CLKDV”時,才可以設(shè)置對應(yīng)的分頻系數(shù)。
(7)占空比校正(UseDutyCycleCorrection):當(dāng)選擇此項時,輸出CLK0、CLK90、CLK180和CLK270信號的占空比為50%。
單擊按鈕,進入?yún)?shù)設(shè)置頁面2,如圖4.27所示。圖4.27DCM的參數(shù)設(shè)置頁面2
(8)時鐘緩沖器的設(shè)置包括以下兩個選項:
①對全部選擇的時鐘輸出使用全局緩沖器(UseGlobalBuffersforallselectedclockoutputs):此選項是默認選項,將全部選擇的DCM時鐘輸出都使用全局緩沖器。
②定制緩沖器(Customizebuffers):此選項可以為每一個輸出時鐘定制緩沖器,每一個輸出時鐘有幾種設(shè)置。以CLK90輸出為例,單擊CLK90所對應(yīng)的全局緩沖器按鈕,產(chǎn)生如圖4.28所示頁面。圖4.28選擇CLK90的輸出緩沖器
(9)速度為?-5的有效范圍(ValidRangeforSpeedGrade-5):表示在當(dāng)前所選擇的速度等級下有效的輸入/輸出時鐘范圍。
(10)抖動計算器的輸入值(InputsofJitterCalculations)有以下兩個選項:
①使用設(shè)置輸出頻率(UseOuputfrequency):鍵入需要輸出的頻率值。
②使用乘(M)和除(D)值(UseMultiply(M)andDivide(D)Values):鍵入需要的“M”和“N”乘除系數(shù)值。
(11)產(chǎn)生的輸出(GeneratedOutput):在給定的輸入/輸出(或者乘除系數(shù))值下,對應(yīng)于圖中“M”、“D”、輸出頻率(OutputFreq)和抖動周期(PeriedJitter)等參數(shù)。圖4.29DCM的參數(shù)設(shè)置頁面3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度餐飲行業(yè)廚具維修及保養(yǎng)服務(wù)合同樣本3篇
- 2025年浙科版八年級生物上冊階段測試試卷
- 2025年北師大新版第二冊地理下冊階段測試試卷
- 二零二五年度金融機構(gòu)個人消費貸款合同范本8篇
- 2025年人教新起點八年級物理下冊階段測試試卷含答案
- 2025年浙教版九年級化學(xué)下冊月考試卷
- 2025年度食堂餐飲服務(wù)評估合同3篇
- 2025年滬教版九年級生物下冊月考試卷含答案
- 二零二五年度建筑工程項目管理協(xié)議范本3篇
- 2024版實習(xí)生保密協(xié)議范本
- 英語-山東省淄博市2024-2025學(xué)年第一學(xué)期高三期末摸底質(zhì)量檢測試題和答案
- 2023年全國統(tǒng)一高考數(shù)學(xué)甲卷【文科+理科】試題及答案解析
- 億歐智庫-2024中國智能駕駛城區(qū)NOA功能測評報告
- 甘肅2024年甘肅培黎職業(yè)學(xué)院引進高層次人才歷年參考題庫(頻考版)含答案解析
- 水利水電工程安全管理制度例文(三篇)
- GA/T 1280-2024銀行自助設(shè)備安全性規(guī)范
- 2025年超星爾雅學(xué)習(xí)通《勞動通論》章節(jié)測試題庫及參考答案(培優(yōu))
- 數(shù)據(jù)標注基地項目實施方案
- 2024預(yù)防流感課件完整版
- 新疆烏魯木齊市(2024年-2025年小學(xué)六年級語文)統(tǒng)編版質(zhì)量測試(上學(xué)期)試卷及答案
- 人教版2024-2025學(xué)年第一學(xué)期八年級物理期末綜合復(fù)習(xí)練習(xí)卷(含答案)
評論
0/150
提交評論