《基于FPGA的現(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)》課件第4章_第1頁
《基于FPGA的現(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)》課件第4章_第2頁
《基于FPGA的現(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)》課件第4章_第3頁
《基于FPGA的現(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)》課件第4章_第4頁
《基于FPGA的現(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)》課件第4章_第5頁
已閱讀5頁,還剩109頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第4章基于IPCore的設(shè)計(jì)4.1IP模塊的種類與應(yīng)用4.2IPCore的選擇與復(fù)用4.3IPCore生成工具簡介4.4常用IPCore的設(shè)計(jì)小結(jié)習(xí)題實(shí)驗(yàn)項(xiàng)目4.1IP模塊的種類與應(yīng)用

1.硬核(HardCore)經(jīng)驗(yàn)證的具有特定電路功能的集成電路版圖稱為硬核。硬核已完成對(duì)性能、尺寸和功耗的優(yōu)化,并對(duì)一個(gè)特定的工藝技術(shù)進(jìn)行映射,具有可保證的性能。因此,在系統(tǒng)設(shè)計(jì)時(shí),硬核只能在整個(gè)設(shè)計(jì)周期中被當(dāng)成一個(gè)完整的庫單元處理。硬IPCore可以再使用,且由于它已處于設(shè)計(jì)表示的最底層,因而最容易集成,容易成功流片。硬IPCore最大的優(yōu)點(diǎn)是確保性能,如速度、功耗等,但硬核一般不允許更改,硬IPCore難以轉(zhuǎn)移到新工藝或集成到新結(jié)構(gòu)中,它是不可重配置的。

2.固核(FirmCore)

帶有平面規(guī)劃信息的網(wǎng)表稱為固核。固核也是可重用的IP模塊,這些模塊已經(jīng)在結(jié)構(gòu)上和拓?fù)渖蠈?duì)性能和面積通過平面布圖和布局進(jìn)行了優(yōu)化,可以在一定的工藝技術(shù)范圍內(nèi)使用,作為可綜合的寄存器傳輸級(jí)(RTL)代碼或作為通用庫元件的網(wǎng)表文件提供,系統(tǒng)設(shè)計(jì)者可以根據(jù)特殊需要對(duì)固核的IP模塊進(jìn)行改動(dòng)。

3.軟核(SoftCore)

軟核是以可綜合的寄存器傳輸級(jí)(RTL)描述或通用庫元件的網(wǎng)表形式提供的可重用的IP模塊,這意味著軟核的使用者要負(fù)責(zé)實(shí)際的實(shí)現(xiàn)和布圖軟核,它的優(yōu)勢(shì)是對(duì)工藝技術(shù)的適應(yīng)性很強(qiáng),應(yīng)用新的加工工藝或改變芯片加工廠家的時(shí)候很少需要對(duì)軟核進(jìn)行改動(dòng),原來設(shè)計(jì)好的芯片可以方便地移植到新的工藝中。由于軟核設(shè)計(jì)以高層次表示,因而軟IPCore易于重定目標(biāo)和重配置,然而預(yù)測(cè)軟IPCore的時(shí)序、面積與功率諸方面的性能較困難。

從完成IPCore設(shè)計(jì)所花費(fèi)的代價(jià)來講,硬件宏單元代價(jià)最高,從IPCore的使用靈活性來講,軟件宏單元的可重復(fù)使用性最高。一個(gè)IPCore的價(jià)值不單與模塊本身的用途和設(shè)計(jì)復(fù)雜性有關(guān),而且與其可重復(fù)使用性程度和設(shè)計(jì)完成的程度有關(guān)。將IPCore完成至物理設(shè)計(jì),其設(shè)計(jì)復(fù)雜性增加了,但是其可重復(fù)使用性卻降低了。

IPCore除提供形式方面的分類外,還有功能方面的劃分。一般IPCore可以分為兩大類,即嵌入式IPCore與通用IP模塊。嵌入式IPCore指可編程IP模塊,主要是CPU與DSP。通用IP模塊則包括存儲(chǔ)器、存儲(chǔ)控制器、通用接口電路、通用功能模塊等。IP模塊的這種劃分通常是基于商業(yè)方面的考慮,按業(yè)界的一般觀點(diǎn),提供嵌入式IPCore的供應(yīng)商有比較大的利潤空間,而且生存環(huán)境較好。嵌入式IPCore除IPCore本身的設(shè)計(jì)外,還需要有良好的開發(fā)環(huán)境、軟件支持及完善的服務(wù)體系,因此其技術(shù)門檻相對(duì)較高,競爭不是非常激烈。通用IP模塊由于開發(fā)技術(shù)相對(duì)比較簡單,面臨的競爭也比較激烈。通用IP模塊的價(jià)值依賴于IPCore的技術(shù)含量、IPCore的品質(zhì)和供應(yīng)商的信譽(yù),基于較新工藝的通用IPCore或包含有專利內(nèi)容的通用IPCore將有較好的發(fā)展前景。對(duì)技術(shù)要求較高的IPCore,如高速接口、高速鎖相環(huán)等模塊,也將有較強(qiáng)的生命力。

存儲(chǔ)器IPCore與其它IPCore稍有不同。通常存儲(chǔ)器的設(shè)計(jì)嚴(yán)重依賴于芯片的加工工藝,同時(shí)存儲(chǔ)器是SOC芯片上最重要的部件,大多數(shù)SOC芯片上的存儲(chǔ)器會(huì)占整個(gè)芯片面積的70%,甚至更多,而且芯片的性能將主要由存儲(chǔ)器的存取時(shí)間決定。存儲(chǔ)器IPCore通常由芯片加工廠家提供,而且都以硬IPCore的方式提供,部分廠家還依據(jù)特殊工藝提供DRAMIPCore。 4.2IPCore的選擇與復(fù)用

4.2.1IPCore的選擇

一個(gè)完整的系統(tǒng)設(shè)計(jì)主要由兩部分組成,一部分是核,如MCU、RAM,另一部分是用戶自己定義的邏輯電路。按系統(tǒng)設(shè)計(jì)的要求將這些功能模塊連接在一起就完成了芯片的設(shè)計(jì),因此,首先是選擇合適的核,這主要從核的功能、性能可靠性和實(shí)現(xiàn)技術(shù)幾方面來考慮。硬IPCore與軟IPCore在實(shí)際應(yīng)用中各有其優(yōu)點(diǎn)與缺陷。軟IPCore設(shè)計(jì)比較靈活,可以根據(jù)具體的需要對(duì)軟IPCore的代碼進(jìn)行改動(dòng),或軟IPCore本身提供許多可以設(shè)置的參數(shù),在應(yīng)用時(shí)比較方便。應(yīng)用軟IPCore的缺陷是軟核的關(guān)鍵路徑的時(shí)序性能無保證,最終性能主要取決于使用者采用的綜合、布局布線和實(shí)現(xiàn)技術(shù),設(shè)計(jì)完成后需要重新對(duì)完成設(shè)計(jì)的芯片進(jìn)行功能與時(shí)序驗(yàn)證。軟IPCore的設(shè)計(jì)工作量較大,而且設(shè)計(jì)時(shí)間較長。如何選擇軟IPCore也需要做較多的工作,需要向供應(yīng)商索取關(guān)于IPCore功能驗(yàn)證方面的資料,詢問IPCore的應(yīng)用范圍,另外還需要考慮供應(yīng)商的聲譽(yù)。應(yīng)用軟IPCore也需要IPCore供應(yīng)商提供更多的服務(wù)。硬IPCore的實(shí)現(xiàn)較簡單,類似于PCB設(shè)計(jì)中IC芯片的使用。硬IPCore的優(yōu)勢(shì)是IPCore的設(shè)計(jì)在布局布線后經(jīng)過了詳細(xì)的功能優(yōu)化驗(yàn)證與測(cè)試過程,部分IPCore還經(jīng)過了投片驗(yàn)證與測(cè)試,時(shí)序性能穩(wěn)定,所以硬核的功能有非??煽康谋WC。一般在設(shè)計(jì)芯片時(shí),70%?的時(shí)間都是花費(fèi)在芯片設(shè)計(jì)的功能與時(shí)序驗(yàn)證上,所以應(yīng)用硬IPCore進(jìn)行設(shè)計(jì)可以顯著地節(jié)省設(shè)計(jì)時(shí)間。應(yīng)用硬IPCore進(jìn)行設(shè)計(jì)的缺陷是它具有不能修改的結(jié)構(gòu)和布局布線,硬核不能按設(shè)計(jì)需要修改和調(diào)整時(shí)序,缺少使用的靈活性。硬核的設(shè)計(jì)嚴(yán)重依賴于設(shè)計(jì)時(shí)所參照的加工工藝,所以當(dāng)設(shè)計(jì)工藝改變的時(shí)候硬核的適應(yīng)性非常差。另外,在應(yīng)用硬核設(shè)計(jì)時(shí),通常芯片的面積會(huì)較大,因?yàn)橛埠说陌鎴D必須作為模塊直接安放在芯片版圖中,而基于模塊的設(shè)計(jì)所得到的芯片面積通常比將模塊功能分散后進(jìn)行布局布線得到的芯片面積大。硬核的設(shè)計(jì)是完全無法更改的,因此其應(yīng)用范圍也受到了一定的限制。軟IPCore與硬IPCore并非對(duì)立關(guān)系,通常供應(yīng)商會(huì)同時(shí)提供完成同一種功能的軟IPCore和硬IPCore,而后由客戶按自己的需要進(jìn)行選擇。在有些情況軟IPCore與硬IPCore會(huì)結(jié)合在一起,例如在一個(gè)完整的功能模塊中,可能同時(shí)存在軟IPCore部分與硬IPCore部分,軟的部分提供某種程度的可調(diào)整性與適應(yīng)性,而硬的部分可以不用重新驗(yàn)證,可以節(jié)省芯片設(shè)計(jì)時(shí)間,避免了軟IPCore的某些缺陷。通常在SOC芯片設(shè)計(jì)中,微處理器與存儲(chǔ)器會(huì)使用硬IPCore。微處理器的設(shè)計(jì)比較復(fù)雜,對(duì)時(shí)序的要求比較嚴(yán)格,應(yīng)用硬IPCore可以排除許多時(shí)序錯(cuò)誤,同時(shí)可以保證處理器的性能。存儲(chǔ)器是對(duì)芯片性能影響最大的部件,而且其設(shè)計(jì)嚴(yán)重依賴于設(shè)計(jì)工藝,所以存儲(chǔ)器IPCore通常也作為硬IPCore出現(xiàn)在芯片中。典型SOC芯片中硬IPCore與軟IPCore的使用如圖4.1所示。圖4.1典型SOC芯片中硬IPCore與軟IPCore的使用在芯片的設(shè)計(jì)與生產(chǎn)過程中,IPCore的應(yīng)用及IPCore的供應(yīng)方式也并非一成不變。通常在芯片設(shè)計(jì)的初期,除存儲(chǔ)器模塊為硬IPCore外,大部分的模塊可能都是軟IPCore。當(dāng)芯片完成設(shè)計(jì),經(jīng)過功能驗(yàn)證、時(shí)序驗(yàn)證與投片測(cè)試后,可能有部分IPCore被固化為硬IPCore并被加入到IP庫中,然后隨著芯片設(shè)計(jì)的不斷改進(jìn),被固化的IPCore會(huì)越來越多,到芯片大規(guī)模生產(chǎn)的時(shí)候,可能85%的芯片面積都由硬IPCore占據(jù)。當(dāng)新的加工工藝出現(xiàn),需要將芯片移植到新的工藝中時(shí),就會(huì)出現(xiàn)下一個(gè)循環(huán),芯片的設(shè)計(jì)流程重新開始,大部分的模塊為軟IPCore,并需要重新進(jìn)行芯片的各種驗(yàn)證工作。通常在設(shè)計(jì)芯片時(shí)需要考慮工藝的成熟程度,如果加工工藝非常成熟,通常會(huì)存在大量的基于此種工藝的硬IPCore資源,而且大部分供應(yīng)商的產(chǎn)品都已經(jīng)經(jīng)過了各種驗(yàn)證,應(yīng)用硬IPCore設(shè)計(jì)會(huì)節(jié)省大量的設(shè)計(jì)時(shí)間,芯片的性能與品質(zhì)也可以得到很好的保證。根據(jù)IPCore使用的方式不同,IPCore設(shè)計(jì)者還可以按下列三種形式設(shè)計(jì)供集成選擇的IPCore:可再用、可重定目標(biāo)以及可配置??稍儆肐PCore是著眼于按各種再使用標(biāo)準(zhǔn)定義的格式和快速集成的要求而建立的,便于移植,更重要的是有效集成;可重定目標(biāo)IPCore是在充分高的抽象級(jí)上設(shè)計(jì)的,因而可以方便地在各種工藝與結(jié)構(gòu)之間轉(zhuǎn)移;可配置IPCore是參數(shù)化后的可重定目標(biāo)IPCore,其優(yōu)點(diǎn)是可以對(duì)功能加以裁剪以符合特定的應(yīng)用,這些參數(shù)包括總線寬度、存儲(chǔ)器容量、使能或禁止功能塊。4.2.2IPCore的復(fù)用

IPCore的復(fù)用是設(shè)計(jì)人員贏得迅速上市時(shí)間的主要策略。系統(tǒng)設(shè)計(jì)者的主要任務(wù)是在規(guī)定的周期時(shí)間內(nèi)研發(fā)出復(fù)雜的設(shè)計(jì),IPCore的復(fù)用已經(jīng)成為系統(tǒng)設(shè)計(jì)方法的關(guān)鍵所在?!皬?fù)用”(re-use)指的是在設(shè)計(jì)新產(chǎn)品時(shí)采用已有的各種功能模塊,即使進(jìn)行修改也是非常有限的,這樣可以減少設(shè)計(jì)的人力和風(fēng)險(xiǎn),縮短設(shè)計(jì)周期,確保優(yōu)良品質(zhì)。但伴隨著IPCore的推廣和使用,也出現(xiàn)了一系列亟須解決的問題。對(duì)于每個(gè)集成電路設(shè)計(jì)師來說,每天所能處理的工作量卻無法有很大的提高,如果按每天處理100門電路來計(jì)算,一個(gè)人設(shè)計(jì)百萬門的電路將耗費(fèi)掉數(shù)百年的時(shí)間。而且隨著芯片集成度的提高,芯片的復(fù)雜程度也相應(yīng)地提高,在單芯片上可能需要集成各種不同功能的電路,如圖像處理、加密電路、接口電路、模擬電路等。設(shè)計(jì)芯片所需要的技術(shù)種類比較繁雜,而且必須適用于各種嚴(yán)格的工業(yè)標(biāo)準(zhǔn)。對(duì)于單個(gè)的設(shè)計(jì)公司來說,掌握這些不同領(lǐng)域的技術(shù)很困難。因此,首先IPCore供應(yīng)商需要提供怎樣的文件,才能使IPCore用戶能夠方便、準(zhǔn)確地進(jìn)行IPCore選擇;其次是IPCore的使用者并不熟悉IPCore結(jié)構(gòu),如何才能快速對(duì)其進(jìn)行修改以適應(yīng)設(shè)計(jì)者的需要(對(duì)軟IPCore);第三,由于SOC各模塊間的通訊并沒有一個(gè)統(tǒng)一的標(biāo)準(zhǔn),造成IPCore集成的困難,如何解決IPCore的接口標(biāo)準(zhǔn)問題。另外,需要研究如何重復(fù)使用過去的設(shè)計(jì)模塊,如何使新的設(shè)計(jì)能夠具有可重復(fù)使用性、可重復(fù)綜合性、可重復(fù)集成性以及如何進(jìn)行系統(tǒng)級(jí)驗(yàn)證;第四,IPCore種類很多,如何建立一個(gè)相對(duì)客觀的IPCore評(píng)價(jià)體系,實(shí)現(xiàn)對(duì)IPCore質(zhì)量的評(píng)估;第五,如何進(jìn)行IPCore的驗(yàn)證;第六,IPCore使用的最大障礙之一是IPCore的知識(shí)產(chǎn)權(quán)保護(hù),如何有效地建立起IPCore的保護(hù)體系。這一系列問題的出現(xiàn),最終導(dǎo)致了IPCore標(biāo)準(zhǔn)的產(chǎn)生及相關(guān)國際組織的出現(xiàn)。由于IPCore已成為芯片設(shè)計(jì)的一項(xiàng)重要內(nèi)容,因此業(yè)界成立了不同的組織以推動(dòng)設(shè)計(jì)復(fù)用標(biāo)準(zhǔn)的發(fā)展,他們的目標(biāo)是開發(fā)一套業(yè)界標(biāo)準(zhǔn),促進(jìn)IPCore的使用并簡化外部IPCore與內(nèi)部設(shè)計(jì)之間的接口。1996年9月虛擬接口聯(lián)盟(VSIA)成立,該聯(lián)盟的成立是為了推動(dòng)多個(gè)來源IP內(nèi)核之間的“混合搭配”而制訂開放標(biāo)準(zhǔn),從而加速SOC開發(fā)。該聯(lián)盟的會(huì)員由業(yè)界各系統(tǒng)公司、半導(dǎo)體公司、IPCore公司和EDA公司組成。Synopsys公司和MentorGraphics公司合作開展了著名的OpenMORE(OpenMeasureofReuseExcellence)計(jì)劃,這是建立在兩家公司共同發(fā)起的“復(fù)用方法指南”基礎(chǔ)上的一項(xiàng)評(píng)估計(jì)劃。一些開發(fā)和銷售IPCore的公司于1996年成立了可復(fù)用特定應(yīng)用知識(shí)產(chǎn)權(quán)開發(fā)協(xié)會(huì)(RAPID)。國際上為IP/SOC制定標(biāo)準(zhǔn)的主要組織/聯(lián)盟有IEEE國際標(biāo)準(zhǔn)化組織VSIA、OCP-IP和SPIRIT,專門從事核或稱IPCore模塊的互連標(biāo)準(zhǔn)研究,使核的使用就像在印制板上使用集成電路塊一樣方便。這三個(gè)聯(lián)盟的目的都是要使設(shè)計(jì)人員更容易地進(jìn)行IPCore的集成,但他們的工作并不重疊,而是高度互補(bǔ)的。VSIA為IPCore的交付、轉(zhuǎn)讓、質(zhì)量評(píng)估以及保護(hù)制定了較全面的標(biāo)準(zhǔn),起到不可替代的作用;OCP-IP致力于IPCore接口及片上互連標(biāo)準(zhǔn)的開發(fā),為IPCore的即插即用作出了貢獻(xiàn);SPIRIT致力于IPCore集成的自動(dòng)化。 4.3IPCore生成工具簡介

CoreGenerator是基于XilinxFPGA的IPCore開發(fā)工具,是XilinxFPGA設(shè)計(jì)ISE開發(fā)軟件中的一個(gè)重要的設(shè)計(jì)輸入工具,它提供了大量成熟、高效的IPCore為用戶所用。

CoreGenerator可生成的IPCore大致分為十大功能模塊:基本模塊、通信與網(wǎng)絡(luò)模塊、數(shù)字信號(hào)處理模塊、存儲(chǔ)器模塊、微處理器模塊、控制器與外設(shè)模塊、標(biāo)準(zhǔn)與協(xié)議模塊、語音處理模塊、標(biāo)準(zhǔn)總線模塊、視頻與圖像處理模塊等,這些功能涵蓋了從基本設(shè)計(jì)單元到復(fù)雜功能樣機(jī)的眾多成熟設(shè)計(jì),而且每次ISE的升級(jí)補(bǔ)丁中都會(huì)有IPCore的升級(jí),另外用戶可以通過Xilinx的IPCore中心查詢更多的IPCore信息。

如果用戶設(shè)計(jì)只是針對(duì)FPGA應(yīng)用的,使用IPCore能避免重復(fù)設(shè)計(jì),縮短工程時(shí)間,提高工作效率。CoreGenerator是根據(jù)Xilinx的FPGA器件特點(diǎn)和結(jié)構(gòu)而設(shè)計(jì)的,直接用XilinxFPGA底層硬件語言描述,充分發(fā)揮了FPGA的功能,其實(shí)現(xiàn)結(jié)果在面積和速度上都令人滿意。圖4.2所示為CoreGenerator的操作界面。圖4.2CoreGenerator的操作界面

1.菜單欄

菜單欄由一系列下拉菜單組成,這些菜單涵蓋了IPCore生成器的所有命令,下面介紹三個(gè)常用菜單。

(1)【File】菜單:包括新建工程(NewProject)、打開工程(OpenProject)、關(guān)閉工程(CloseProject)、保存工程(SaveProject)、導(dǎo)入XCO文件(ImportXCOFile)等命令。另外用戶可以用【Preferences】命令指定PDF瀏覽器與網(wǎng)絡(luò)瀏覽器的位置,并設(shè)置代理服務(wù)器等互聯(lián)方式。

(2)【Tools】菜單:包括存儲(chǔ)編輯器(MemoryEditor)和查找IP索引表(SearchIPList)。其中,存儲(chǔ)編輯器是設(shè)計(jì)存儲(chǔ)器的初始化文件(擴(kuò)展名為?.coe),查找IP索引表是通過鍵入IPCore的名字查找相應(yīng)的IPCore。

(3)【Help】菜單:包含的命令有CoreGenerator幫助(CoreGeneratorHelp)、網(wǎng)絡(luò)幫助(XilinxontheWeb)和軟件手冊(cè)(SoftwareManuuals)等。

3.IPCore的顯示

IPCore有三種顯示方式:

(1)按功能查看IPCore:在這種模式下,按照功能顯示CoreGenerator的模塊。

(2)按名字查看IPCore:在這種模式下,IPCore按照字母排列的順序顯示所有的IPCore。在查詢欄里輸入用戶所需IPCore的名稱,則對(duì)應(yīng)的IPCore就被找出。

(3)查看已經(jīng)生成的IPCore:在這種模式下,IPCore分類目錄欄顯示了當(dāng)前工程已生成的IPCore的基本信息,包括IPCore模塊名稱、IPCore名稱、版本號(hào)、器件族供應(yīng)商和生成日期。

4.操作信息顯示欄

該欄顯示了IPCore生成器和用戶之間的交互信息,如工程的報(bào)警、錯(cuò)誤等基本信息。

5.所選IPCore信息欄

該欄顯示了所選IPCore的一些基本信息,包括該IPCore的簡介和其所支持的器件族等。

6.IPCore分類目錄欄

該欄根據(jù)IPCore的三種顯示方式完成對(duì)應(yīng)的IPCore顯示。 4.4常用IPCore的設(shè)計(jì)

4.4.1可逆計(jì)數(shù)器的設(shè)計(jì)

計(jì)數(shù)器在FPGA的設(shè)計(jì)中用得十分廣泛,這里以四位可逆二進(jìn)制計(jì)數(shù)器為例對(duì)其IPCore設(shè)計(jì)予以介紹。

1.基于CoreGenerator的工程的創(chuàng)建與管理

IPCore生成器的啟動(dòng)方法有兩種,一種是在【ProjcetNavigator】中新建CoregenIP類型的資源(請(qǐng)參考第2章中工程的建立與管理);另一種是直接在Windows界面下運(yùn)行【開始】→【程序】→【XilinxISEDesignSuit10.1】→【ISE】→【Accessories】→【COREGenerator】命令。這里采用第二種方式,選擇的器件族為Spartan-3E,器件為XC3S500E,封裝類型為4FG320C(后面的IP所選的器件與此相同),然后打開如圖4.3所示窗口。圖4.3選擇IPCore源文件向?qū)?/p>

2.?IPCore的參數(shù)設(shè)計(jì)與生成

正確設(shè)置工程的屬性后就可以根據(jù)需要選擇合適的IPCore。在圖4.3的功能欄中,選擇【BasicElements】→【Counters】→【BinaryCounterv8.0】,右鍵單擊【BinaryCounterv8.0】或者在右邊的信息欄中選擇例化該IPCore(Customize)選項(xiàng)。單擊【Customize】或者雙擊【BinaryCounterv8.0】,打開該IPCore的參數(shù)設(shè)置窗口的第1頁,如圖4.4所示。這里需要從以下幾個(gè)方面對(duì)該IPCore進(jìn)行設(shè)置。

(1)?IPCore的名字(ComponentName):每個(gè)IPCore都必須給其定義一個(gè)名字。

(2)輸出數(shù)據(jù)寬度選擇(WidthOptions):可選寬度為2~30位。

(3)計(jì)數(shù)限制選擇(CountRestrictions):可分為計(jì)數(shù)步長選擇和計(jì)數(shù)終值選擇。

①計(jì)數(shù)步長選擇(StepValue):可選步長為1~2數(shù)據(jù)寬度-1。

②計(jì)數(shù)終值選擇(FinalCountValue):可選范圍為0~2數(shù)據(jù)寬度-2。

(4)計(jì)數(shù)模式選擇(CountMode):這里有加計(jì)數(shù)(UP)、減計(jì)數(shù)(DOWN)和可逆計(jì)數(shù)(UP/DOWN)三種方式。圖4.4四位可逆二進(jìn)制計(jì)數(shù)器IPCore的參數(shù)設(shè)置頁面1單擊按鈕,進(jìn)入第2頁的參數(shù)設(shè)置,如圖4.5所示,其中全部為寄存器的設(shè)置:

(1)異步設(shè)置(AsynchronousSettings):包括異步置位(Set)、異步清零(Clear)以及初始化設(shè)置(Init),通過初始化可以異步地設(shè)置寄存器的初始值。

(2)同步設(shè)置(SynchronousSettings):與異步設(shè)置類似。

(3)時(shí)鐘使能(ClockEnable):在使能信號(hào)為高電平時(shí)輸入的時(shí)鐘信號(hào)才是有效的。圖4.5四位可逆二進(jìn)制計(jì)數(shù)器IPCore的參數(shù)設(shè)置頁面2單擊按鈕,進(jìn)入第3頁的參數(shù)設(shè)置,如圖4.6所示。

(1)置數(shù)可選項(xiàng)(LoadOptions):可以通過輸入端口置入計(jì)算的初始值。

(2)門檻可選項(xiàng)(ThresholdOptions):包括異步門檻值設(shè)置(AsynchronousThresholdOutput)、同步門檻值設(shè)置(SynchronousThresholdOutput)和時(shí)鐘初期門檻設(shè)置(CycleEarlyThresholdOutput)。當(dāng)計(jì)數(shù)值與所設(shè)門檻值相等時(shí),其輸出為高電平。

此例中參數(shù)按圖4.4、圖4.5和圖4.6界面進(jìn)行設(shè)置,參數(shù)設(shè)置完成后,單擊按鈕,就生成了按照所設(shè)參數(shù)要求的IPCore。圖4.6四位可逆二進(jìn)制計(jì)數(shù)器IPCore的參數(shù)設(shè)置頁面3

3.?IPCore的仿真

在【ProjectNavigator】里,打開該IPCore。如果是初次使用,還需要對(duì)ISE所帶的庫文件進(jìn)行編譯。編譯成功后,選擇【Project】→【Newsource】→【Schemtic】,在原理圖中就可以用原理圖方式調(diào)用該IPCore,完成該IPCore的端口設(shè)置,產(chǎn)生后綴名為?.sch的頭文件。

加入波形測(cè)試向量。選擇【Project】→【NewSource】→【TestBenchWaveform】,在接下來的選項(xiàng)中,將該波形測(cè)試文件與后綴名為?.sch的頭文件相映射,就產(chǎn)生了波形測(cè)試向量。然后調(diào)用仿真軟件ModelSim對(duì)其進(jìn)行仿真,其仿真波形及關(guān)鍵信號(hào)的說明如圖4.7所示。圖4.7四位可逆二進(jìn)制計(jì)數(shù)器IPCore的仿真波形與關(guān)鍵信號(hào)的說明4.4.2存儲(chǔ)器的設(shè)計(jì)

1.雙口RAM的設(shè)計(jì)

RAM有三種模式,分別是單端口RAM、簡單雙端口RAM以及真正雙端口RAM。這里以真正雙端口RAM為例介紹RAM模式。

雙端口RAM模型如圖4.8所示,圖中上邊的端口A和下邊的端口B都支持讀寫操作,WEA、WEB信號(hào)為高電平時(shí)進(jìn)行寫操作,低電平為讀操作。同時(shí)它支持兩個(gè)端口讀、寫操作的任何組合:兩個(gè)端口同時(shí)讀操作、兩個(gè)端口同時(shí)寫操作或者在兩個(gè)不同的時(shí)鐘下一個(gè)端口執(zhí)行寫操作,另一個(gè)端口執(zhí)行讀操作。兩個(gè)端口的寬度可以有多種定義,可以是同寬度,也可以是不同寬度的,這樣的結(jié)構(gòu)給設(shè)計(jì)者帶來了方便。雙端口RAM的引出端定義如表4.1所示。圖4.8雙端口RAM的模型

下面詳細(xì)介紹雙口RAM的IPCore的設(shè)計(jì)以及仿真。

1)?IPCore的參數(shù)設(shè)計(jì)與生成

在XilinxCoreGenerator中,選擇【MEMORIES&StorageElements】→【RAMs&ROMs】,可看到五個(gè)存儲(chǔ)模塊,其中灰色的項(xiàng)目表示由于所選器件族不支持此IPCore,所以該IPCore在當(dāng)前工程不可用。這里選擇在Spartan-3E器件族可以使用的【DualPortBlockMemory6.3】。

雙擊【DualPortBlockMemory6.3】,打開該IPCore的參數(shù)設(shè)置窗口的第1頁,如圖4.9所示,需要對(duì)該IPCore的名字以及端口A、B等基本參數(shù)進(jìn)行設(shè)置。圖4.9雙口RAM的參數(shù)設(shè)置頁面1

(1)存儲(chǔ)容量(MemorySize):包括端口A和端口B。

①端口A包括:

●?數(shù)據(jù)端口深度(Width):可以選擇數(shù)據(jù)端口A的寬度,寬度范圍為1~256位。

●?地址端口A深度(Depth):可以選擇存儲(chǔ)器的字節(jié)數(shù),由于存儲(chǔ)容量為4MB,故數(shù)據(jù)寬度為3位,則存儲(chǔ)器的字節(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定義的存儲(chǔ)器的大小必須相等可以計(jì)算出端口B的深度。

(2)端口A/B可選項(xiàng)(PortA/BOptions)包括:

①配置選項(xiàng)(Configuration):可以選擇的有讀寫(ReadandWrite)、只寫(WriteOnly)以及只讀(ReadOnly)模式。

②寫模式(Writemode):可以選擇的有讀后寫(ReadAfterWrite)、讀前寫(ReadBeforeWrite)以及只寫不讀(NOReadOnWrite)模式。

●?ReadAfterWrite模式:在該模式下,同時(shí)讀寫B(tài)lockRAM的同一地址,讀出的數(shù)據(jù)與當(dāng)前寫入的數(shù)據(jù)相同,其時(shí)序如圖4.10所示。圖4.10ReadAfterWrite模式時(shí)序●?ReadBeforeWrite模式:在該模式下,存儲(chǔ)器中當(dāng)前地址上的數(shù)據(jù)被傳送到輸出端口,其時(shí)序如圖4.11所示。

●?NOReadOnWrite模式:在該模式下,同時(shí)讀寫B(tài)lockRAM的同一地址時(shí),讀出的數(shù)據(jù)將在數(shù)據(jù)寫入時(shí)保持不變。圖4.11ReadBeforeWrite模式時(shí)序

(3)端口A、B設(shè)計(jì)可選項(xiàng)(PortA/BDesignOptions)包括:

①引腳可選項(xiàng)(OptionsPins):

●?引腳使能端(EnabledPin):含義如表4.1所示。

●?握手信號(hào)引腳端(HandshakingPins):包括ND、RFD、RDY信號(hào),它們的含義如表4.1所示。圖4.12雙口RAM的參數(shù)設(shè)置頁面2②輸入寄存器可選項(xiàng)(RegisterInputs):可以為輸入端口DIN、ADDR和WE添加輸入寄存器,若添加了寄存器,則數(shù)據(jù)在這些端口的第2個(gè)時(shí)鐘的上升沿輸入到該模塊內(nèi)部。

③輸出寄存器可選項(xiàng)(OutputRegisterOptions):包括以下兩個(gè)選項(xiàng):

●?附加的輸出流水階段(AdditionalOutputPipeStages):選擇“1”可以為輸出端口再增加一級(jí)寄存器,選擇“0”不加寄存器。

●?初始化(SINITPin),其含義如表4.1所示。

④引腳極性(PinPolarity):使用者可以為引出端進(jìn)行極性配置,包括時(shí)鐘選擇上升沿還是下降沿、高電平還是低電平使能。

單擊按鈕,進(jìn)入第4頁的參數(shù)設(shè)置界面,如圖4.13所示。圖4.13雙口RAM的其它參數(shù)設(shè)置頁面4

(4)仿真模式可選項(xiàng)(SimulationModelOptions):對(duì)警告信息的使能選擇。

(5)初始化設(shè)置(InitialContents):可以設(shè)置配置后存儲(chǔ)器中的初始值。

①全局初始化值(GlobalInitValue):定義了配置后存儲(chǔ)器中的初始值,缺省值為“0”。

②加載初始化文件(LoadInitFile):存儲(chǔ)器中的初始值可以保存在一個(gè)?.coe的文件中,加載這個(gè)文件可以使存儲(chǔ)器在配置后,各個(gè)單元的初始值為文件中所列出的值。對(duì)于?.coe的文件,可以通過MemoryEditor生成,下面為其生成方法:

打開XilinxCoreGenerator,選擇【Tools】→【MemoryEditor】,進(jìn)入MemoryEditor編輯界面,如圖4.14所示。圖4.14MemoryEditor編輯界面單擊按鈕,然后鍵入“d_ram”,設(shè)置好雙端口RAM的各個(gè)參數(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è)計(jì)

FPGA中的塊RAM(BlockRAM)也可以配置成ROM。使用存儲(chǔ)器初始化文件(?.coe)對(duì)ROM進(jìn)行初始化,在加電后使其內(nèi)部的內(nèi)容保持不變,即實(shí)現(xiàn)了ROM功能。

ROM的設(shè)計(jì)主要是生成相應(yīng)的?.coe文件,.coe文件的產(chǎn)生可以用MemoryEditor直接輸入相應(yīng)的數(shù)據(jù)(見雙端口BlockRAM中的相關(guān)說明),也可以用MATLAB/C++?中的函數(shù)方便地生成數(shù)據(jù)。這里以一個(gè)正弦信號(hào)為例介紹如何借助MATLAB生成ROM的?.coe文件。

(1)用MATLAB計(jì)算出正弦波形的浮點(diǎn)值,并量化8比特的定點(diǎn)波形數(shù)值。

打開MATLAB,編寫如下程序:

①在0~2π內(nèi)等間隔取256個(gè)點(diǎn):x=linspace(0,6.28,256);

②計(jì)算幅度為1的采樣點(diǎn)的正弦函數(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,打開文件,并在最后一行添加一個(gè)分號(hào)“;”,然后在文件的最開始添加下面兩行:

memory_initialization_radix=10;

memory_initialization_vector=……

上面兩行是對(duì)所存貯數(shù)據(jù)的進(jìn)制以及相關(guān)初始值的說明,然后保存文件退出。

(3)將?.coe文件加載到所生成的ROM中。

①單擊【Memories&StorageElements】→【RAMs&ROMS】→【BlockMemoryGeneratorv2.7】,新建一個(gè)BlockRAM的IPCore。

②IPCore的參數(shù)設(shè)置。打開該IPCore的參數(shù)設(shè)置界面,單擊??按鈕翻頁,在第1頁選擇單口ROM(SinglePortRom),在第2頁選擇數(shù)據(jù)位寬為8,數(shù)據(jù)深度為256,在第3頁載入初始化的?.coe文件,如圖4.17所示。圖4.17ROM初始化文件的載入在存儲(chǔ)器初始化(MemoryInitialization)欄中的載入初始化文件(LoadInitFile)單選框中打“√”,然后單擊按鈕,找到存儲(chǔ)初始化文件的路徑,選擇初始化文件完成載入。

3.FIFO的設(shè)計(jì)

FIFO即數(shù)據(jù)先入先出。在FIFOIPCore的具體實(shí)現(xiàn)中,數(shù)據(jù)存儲(chǔ)的部分是采用簡單雙端口模式操作的,一個(gè)端口只寫數(shù)據(jù)而另一個(gè)端口只讀數(shù)據(jù),另外在RAM(塊RAM和分布式RAM)周圍加一些控制電路來輸出指示信息。FIFOIPCore常用引出端的定義如表4.2所示。

下面是FIFO的IPCore設(shè)計(jì)。先選擇IPCore的類型以及型號(hào),選擇【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)包括以下兩種模式:

①標(biāo)準(zhǔn)模式(StandardFIFO):在該模式下,F(xiàn)IFO復(fù)位后,寫入的第一個(gè)數(shù)據(jù)會(huì)進(jìn)入存儲(chǔ)單元中,但輸出緩沖器為空。只有進(jìn)行第二次讀操作時(shí),才會(huì)讀取有效數(shù)據(jù)。

②首字直接傳送模式(Fist-WordFall-Through):該模式在復(fù)位后第一次寫操作時(shí),寫入的數(shù)據(jù)會(huì)同時(shí)送往內(nèi)部存儲(chǔ)單元和輸出緩沖區(qū)。當(dāng)執(zhí)行讀操作時(shí),讀取的數(shù)據(jù)就是有效

數(shù)據(jù)。

(3)嵌入式FIFO可選項(xiàng)(Built-inFIFOOptions)包括以下兩個(gè)設(shè)置項(xiàng):

①讀時(shí)鐘頻率設(shè)置(ReadClockFrequency):可設(shè)置范圍為1MHz~1000MHz。

②寫時(shí)鐘頻率設(shè)置(WriteClockFrequency):可設(shè)置范圍為1MHz~1000MHz。

(4)數(shù)據(jù)端口參數(shù)(DataPortParameters)包括以下四個(gè)設(shè)置項(xiàng):

①數(shù)據(jù)寫入寬度(WriteWidth):可設(shè)置范圍為1~256位。

②數(shù)據(jù)寫入深度(WriteDepth),可設(shè)置范圍為24~222。

數(shù)據(jù)讀出寬度、深度的設(shè)置范圍與寫入的相同。

(5)實(shí)現(xiàn)可選項(xiàng)(ImplemetationOptions)包括以下兩個(gè)選項(xiàng):

①ECC使能(EnableECC):只有Virtex-5系列的公共及獨(dú)立時(shí)鐘的RAM與嵌入式FIFO支持該選項(xiàng)。

②在BRAM或FIFO中使用嵌入式寄存器。

點(diǎn)擊按鈕,進(jìn)入?yún)?shù)設(shè)置頁面3,如圖4.20所示。圖4.20FIFO的參數(shù)設(shè)置頁面3

(6)標(biāo)志位可選項(xiàng)(OptionalFlags)包括以下兩個(gè)選項(xiàng):

①幾乎滿標(biāo)志(AlmostFullFlag):只差一個(gè)數(shù)據(jù)就寫滿的標(biāo)志。

②幾乎空標(biāo)志(AlmostEmptyFlag):只差一個(gè)數(shù)據(jù)就讀空的標(biāo)志。

(7)握手可選項(xiàng)(HandshakingOptions)包括以下兩種設(shè)置:

①寫端口握手可選項(xiàng)(WriteAcknowledge):包括寫握手標(biāo)志與溢出標(biāo)志。其中寫握手標(biāo)志表示當(dāng)前數(shù)據(jù)成功地寫入了存儲(chǔ)單元;溢出標(biāo)志表示寫入了超過存儲(chǔ)容量的數(shù)據(jù),該數(shù)據(jù)溢出,該端口可以設(shè)置為高電平或者低電平輸出。

②讀端口握手可選項(xiàng)(ReadAcknowledge):與寫端口相似,包括讀握手標(biāo)志和下溢標(biāo)志。

點(diǎn)擊按鈕,進(jìn)入?yún)?shù)設(shè)置頁面4,如圖4.21所示。圖4.21FIFO的參數(shù)設(shè)置頁面4

(8)初始化設(shè)置(Initiazation)。

①復(fù)位引腳(ResetPin):包括同步和異步復(fù)位設(shè)置,可以設(shè)置為高電平或者低電平有效。

②使用輸出復(fù)位值(UseDoutReset)。

(9)可編程標(biāo)志(ProgrammableFlags)包括以下幾個(gè)設(shè)置:

①可編程的滿類型(ProgrammableFullType)包括以下幾個(gè)選項(xiàng):

●無可編程的滿閾值(NoProgrammableFullThreshold):不能設(shè)置滿標(biāo)志。

●單路的可編程滿握手常數(shù)(SingleProgrammableFullThresholdConstant):編程設(shè)置滿標(biāo)志的數(shù)值,當(dāng)?shù)搅嗽摂?shù)值時(shí),對(duì)應(yīng)的端口輸出為1?!穸嗦返目删幊虧M握手常數(shù)(MultipleProgrammableFullThresholdConstants):分別可以設(shè)置正值與負(fù)值。

●單路的可編程滿握手輸入端口(SingleProgrammableFullThresholdinputport):從外部端口輸入“滿”標(biāo)志的數(shù)值。

●多路的可編程滿握手輸入端口(MultipleProgrammableFullThresholdInputPorts):與前類似。

②滿握手正值設(shè)置(FullThresholdAssertValue):當(dāng)FIFO成功寫入的數(shù)據(jù)大于或等于所設(shè)置值時(shí),輸出高電平。

③滿握手負(fù)值設(shè)置(FullThresholdNegateValue):當(dāng)FIFO中所存數(shù)據(jù)小于或等于所設(shè)置值時(shí),輸出低電平??删幊痰摹翱铡睒?biāo)志以及相關(guān)設(shè)置與“滿”標(biāo)志類似。

點(diǎn)擊按鈕,依次進(jìn)入FIFO的參數(shù)設(shè)置頁面5和頁面6。參數(shù)設(shè)置頁面5為FIFO的數(shù)據(jù)個(gè)數(shù)設(shè)置選項(xiàng),通過該輸出端口,設(shè)計(jì)者可知道存儲(chǔ)單元存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)。參數(shù)設(shè)置頁面6是對(duì)該IPCore的選擇情況的一個(gè)說明。IPCore參數(shù)的設(shè)置如圖4.18~圖4.21所示,仿真波形圖和說明如圖4.22所示。圖4.22FIFO的仿真波形和說明4.4.3時(shí)鐘的設(shè)計(jì)

1.全局時(shí)鐘網(wǎng)絡(luò)

在FPGA設(shè)計(jì)中,時(shí)鐘的設(shè)計(jì)和使用至關(guān)重要。在Xilinx系列FPGA產(chǎn)品中,全局時(shí)鐘網(wǎng)絡(luò)是一種全局布線資源,它可以保證時(shí)鐘信號(hào)到達(dá)各個(gè)目標(biāo)邏輯單元的時(shí)延基本相同。針對(duì)不同類型的器件,Xilinx公司提供的全局時(shí)鐘網(wǎng)絡(luò)在數(shù)量、性能等方面都有區(qū)別,這里以Spartan-3E系列器件為例,介紹全局時(shí)鐘網(wǎng)絡(luò)的特性和用法。圖4.23所示為Spartan-3E系列器件全局時(shí)鐘網(wǎng)絡(luò)分布示意圖,其中16個(gè)全局時(shí)鐘輸入位于芯片的上部與下部,8個(gè)右半平面時(shí)鐘輸入位于芯片的右側(cè),8個(gè)左半平面時(shí)鐘輸入位于芯片的左側(cè)。時(shí)鐘選擇器的輸出可以連到同一側(cè)垂直連線上,還可以連到同一側(cè)任何一個(gè)數(shù)字時(shí)鐘管理器DCM(DigitalClockManager)模塊的輸入上。DCM當(dāng)中包含一個(gè)延遲鎖定電路DLL(Delay-LockedLoop),可以提供對(duì)時(shí)鐘信號(hào)的二倍頻和分頻功能,并且能夠維持各輸出時(shí)鐘之間的相位關(guān)系,即零時(shí)鐘偏差。圖4.23Spartan-3E系列器件全局時(shí)鐘網(wǎng)絡(luò)分布示意圖全局時(shí)鐘通過將時(shí)鐘選擇器或者全局時(shí)鐘緩沖器放置在設(shè)計(jì)中以減少動(dòng)態(tài)功耗,Xilinx的軟件自動(dòng)禁用那些沒有用到的時(shí)鐘線。其中時(shí)鐘緩沖多路選擇器不僅驅(qū)動(dòng)輸入時(shí)鐘信號(hào)直接到達(dá)內(nèi)部緩沖器,而且提供了轉(zhuǎn)換兩個(gè)互不相關(guān)時(shí)鐘信號(hào)的多路選擇器。

在Spartan-3E系列器件中,全局時(shí)鐘網(wǎng)絡(luò)最簡單的用法是將時(shí)鐘信號(hào)與全局時(shí)鐘網(wǎng)絡(luò)直接相連,從而保證時(shí)鐘信號(hào)到達(dá)各邏輯單元的時(shí)延基本相同,如圖4.24所示。

在圖4.24(a)中,全局時(shí)鐘信號(hào)(GCLK)通過時(shí)鐘輸入引腳端(PAD)輸入,經(jīng)過輸入緩沖器IBUFG和內(nèi)部緩沖器BUFG到達(dá)時(shí)鐘分布網(wǎng)絡(luò),保證有足夠的驅(qū)動(dòng)能力。在圖4.24(b)中,差分全局時(shí)鐘信號(hào)(GCLKS和GCLKP)通過差分時(shí)鐘輸入端輸入,經(jīng)過輸入緩沖器(IBUFGDS)和內(nèi)部緩沖器(BUFG)到達(dá)時(shí)鐘分布網(wǎng)絡(luò)。

在圖4.24(c)中,全局時(shí)鐘信號(hào)(GCLK)通過時(shí)鐘輸入引腳端(PAD)輸入,經(jīng)過輸入緩沖器(IBUFG)和數(shù)字時(shí)鐘管理器(DCM),DCM作處理提供統(tǒng)一的同步時(shí)鐘,通過內(nèi)部緩沖器(BUFG)到達(dá)時(shí)鐘分布網(wǎng)絡(luò)。圖4.24Spartan-3E系列器件中全局時(shí)鐘網(wǎng)絡(luò)應(yīng)用示意圖(a)單端輸入(b)差分輸入(c)經(jīng)DCM輸出

2.數(shù)字時(shí)鐘管理器(DCM)

DCM是Xilinx公司在其產(chǎn)品中采用的時(shí)鐘管理機(jī)制。DCM的主要功能包括消除時(shí)鐘時(shí)延、頻率綜合和時(shí)鐘相位調(diào)整。在Spartan-3E系列器件中,DCM可以工作在高頻或低頻模式,其關(guān)鍵參數(shù)包括輸入時(shí)鐘頻率范圍、輸出時(shí)鐘頻率范圍、輸入時(shí)鐘允許抖動(dòng)范圍、輸出時(shí)鐘允許抖動(dòng)范圍等。

圖4.25所示為Spartan-3E系列器件DCM的引出端,其定義如表4.4所示。圖4.25DCM的引出端

下面介紹DCM的IPCore設(shè)計(jì)。先選擇IPCore的類型以及型號(hào),選擇【FPGAFeaturesandDesign】→【Clocking】→【Spartan-3E】→【ChooseWizardbyConponent】→【DCMADVv9.1li】,然后雙擊【DCMADVv9.1li】,打開該IPCore的參數(shù)設(shè)置窗口的第1頁,如圖4.26所示。圖4.26DCM的參數(shù)設(shè)置頁面1在DCM模塊的輸出端口中,ISE選中CLK0和LOCKED這兩個(gè)信號(hào),其余的輸出信號(hào)自己添加。

(1)輸入時(shí)鐘頻率(InputClockFrequency):可在輸入時(shí)鐘頻率欄中鍵入輸入時(shí)鐘的頻率或周期,單位分別是MHz和ns。

(2)相移(PhaseShift):包括類型(Type)和值(Value)。不同的相移類型對(duì)應(yīng)不同的值:

●類型為無(NONE):沒有相移,則對(duì)應(yīng)的值value不能設(shè)置。

●類型為固定(FIXED):通過設(shè)置值value改變相應(yīng)的輸出信號(hào)的相移,值的范圍為-255~255。

●類型為可變(VARIABLE):通過PSEN、PSINCDEC和PSCLK等三個(gè)輸入信號(hào)動(dòng)態(tài)地調(diào)整輸出信號(hào)的相移,值的范圍為-102~102。

(3)輸入時(shí)鐘信號(hào)源(CLKINSource):包括外部的時(shí)鐘信號(hào)源和內(nèi)部的時(shí)鐘信號(hào)源兩個(gè)選項(xiàng)。

●外部的(External):通過輸入全局緩沖器連接輸入時(shí)鐘信號(hào)源。輸入時(shí)鐘信號(hào)源可以選擇單個(gè)(Single)或者差分(Differential)輸入。

●內(nèi)部的(Internal):內(nèi)部時(shí)鐘信號(hào)源連接輸入時(shí)鐘信號(hào)源。

(4)反饋信號(hào)源(FeedbackSource)有以下三個(gè)選項(xiàng):

●無(None):無反饋。

●外部的(External):通過輸入引腳反饋。

●內(nèi)部的(Internal):通過內(nèi)部緩沖器反饋。

(5)反饋值(FeedbackValue):與反饋信號(hào)源的選項(xiàng)對(duì)應(yīng),只有在選擇外部的(External)選項(xiàng)時(shí),反饋值有單個(gè)(Single)或者差分(Differential)兩種輸入。而在選擇無(None)和內(nèi)部的(Internal)時(shí),反饋值不可選。

(6)分頻系數(shù)(DivideByValue):只有在選擇端口“CLKDV”時(shí),才可以設(shè)置對(duì)應(yīng)的分頻系數(shù)。

(7)占空比校正(UseDutyCycleCorrection):當(dāng)選擇此項(xiàng)時(shí),輸出CLK0、CLK90、CLK180和CLK270信號(hào)的占空比為50%。

單擊按鈕,進(jìn)入?yún)?shù)設(shè)置頁面2,如圖4.27所示。圖4.27DCM的參數(shù)設(shè)置頁面2

(8)時(shí)鐘緩沖器的設(shè)置包括以下兩個(gè)選項(xiàng):

①對(duì)全部選擇的時(shí)鐘輸出使用全局緩沖器(UseGlobalBuffersforallselectedclockoutputs):此選項(xiàng)是默認(rèn)選項(xiàng),將全部選擇的DCM時(shí)鐘輸出都使用全局緩沖器。

②定制緩沖器(Customizebuffers):此選項(xiàng)可以為每一個(gè)輸出時(shí)鐘定制緩沖器,每一個(gè)輸出時(shí)鐘有幾種設(shè)置。以CLK90輸出為例,單擊CLK90所對(duì)應(yīng)的全局緩沖器按鈕,產(chǎn)生如圖4.28所示頁面。圖4.28選擇CLK90的輸出緩沖器

(9)速度為?-5的有效范圍(ValidRangeforSpeedGrade-5):表示在當(dāng)前所選擇的速度等級(jí)下有效的輸入/輸出時(shí)鐘范圍。

(10)抖動(dòng)計(jì)算器的輸入值(InputsofJitterCalculations)有以下兩個(gè)選項(xiàng):

①使用設(shè)置輸出頻率(UseOuputfrequency):鍵入需要輸出的頻率值。

②使用乘(M)和除(D)值(UseMultiply(M)andDivide(D)Values):鍵入需要的“M”和“N”乘除系數(shù)值。

(11)產(chǎn)生的輸出(GeneratedOutput):在給定的輸入/輸出(或者乘除系數(shù))值下,對(duì)應(yīng)于圖中“M”、“D”、輸出頻率(OutputFreq)和抖動(dòng)周期(PeriedJitter)等參數(shù)。圖4.29DCM的參數(shù)設(shè)置頁面3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論