第5章VHDL高級設計技術_第1頁
第5章VHDL高級設計技術_第2頁
第5章VHDL高級設計技術_第3頁
第5章VHDL高級設計技術_第4頁
第5章VHDL高級設計技術_第5頁
已閱讀5頁,還剩98頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第5章VHDL高級設計技術第一頁,共103頁。VHDL高級設計技術-本章概要

本章首先介紹基于Xilinx芯片的HDL高級設計技術。在高級設計技術中主要對提高HDL性能的一些設計方法進行了比較詳細的介紹,其中包括邏輯復制和復用技術、并行和流水技術、系統(tǒng)同步和異步單元、邏輯結構的設計方法和模塊的劃分原則。本章也對IP核技術進行了比較詳細的說明和介紹,其中包括IP核分類、IP核優(yōu)化、IP核生成和IP應用技術。這部分雖然在本書中的篇幅不是很多,但是內(nèi)容非常重要,讀者在學習該部分內(nèi)容時要仔細的領會。第二頁,共103頁。VHDL高級設計技術-VHDL代碼風格

VHDL代碼風格是指兩個方面的內(nèi)容:

一方面是VHDL語言描述規(guī)范,即在使用VHDL語言描述邏輯行為時必須遵守VHDL語言的詞法和句法規(guī)范,該描述風格不依賴于EDA軟件工具和可編程邏輯器件PLD類型,僅僅是從VHDL語言出發(fā)的代碼風格;另一方面則是VHDL語言對于一特定邏輯單元的描述,即用VHDL語言的哪一種描述風格進行邏輯行為描述,才能使電路描述得更準確,布局布線后產(chǎn)生的電路設計最優(yōu),該描述風格不僅需要關注EDA軟件在語法細節(jié)上的差異,還要緊密依賴于固有的硬件結構。第三頁,共103頁。VHDL高級設計技術-VHDL代碼風格

從本質上講,使用哪種描述風格描述電路的邏輯行為,主要取決于兩個關鍵問題:

1、速度和面積問題;

2、功耗問題;第四頁,共103頁。VHDL高級設計技術-VHDL代碼風格

首先,先說明速度和面積問題。這里的“面積”主要是指設計所占用的FPGA邏輯資源數(shù)目,即所消耗的觸發(fā)器和查找表數(shù)目。“速度”是指在芯片上穩(wěn)定運行時所能夠達到的最高頻率。面積和速度這兩個指標始終貫穿著PLD的設計,是評價設計性能的最主要標準。

第五頁,共103頁。VHDL高級設計技術-VHDL代碼風格

面積和速度呈反比關系。如果要提高速度,就需要消耗更多的資源,即需要更大的面積;如果減少了面積,就會使系統(tǒng)的處理速度降低。所以在設計中不可能同時實現(xiàn)既顯著提高PLD工作頻率,又顯著減少所占用PLD的邏輯資源的數(shù)目。第六頁,共103頁。VHDL高級設計技術-VHDL代碼風格

在實際設計時,需要在速度和面積之間進行權衡,使得設計達到面積和速度的最佳結合點。本章介紹通過采用邏輯復制和復用技術、并行和流水線技術、同步和異步電路處理技術、邏輯結構處理技術等方法,在速度和面積之間進行權衡,達到最佳的性能和資源要求。第七頁,共103頁。VHDL高級設計技術-VHDL代碼風格

其次,說明功耗問題。隨著PLD工作頻率的顯著提高,功耗成為一個引起EDA設計人員密切關注的問題。由于PLD工作頻率的提高,邏輯單元的切換頻率也相應提高,相應的會引起PLD功耗增大。這樣就存在著頻率和功耗之間的矛盾,因此必須在邏輯單元的切換速度和功耗之間進行權衡,通過合理的設計,減少邏輯單元不必要的切換,這樣可以在一定程度上降低功耗。

第八頁,共103頁。VHDL高級設計技術-扇出

扇出是指某一器件的輸出驅動與之相連的后續(xù)器件的能力。眾所周知,一個器件的扇出數(shù)是有限制的。扇出數(shù)目越多,所要求的驅動能力越高。在PLD芯片內(nèi),如果一個邏輯單元的扇出數(shù)過多的話,會降低其工作速度,并且會對布線造成困難。因此,在PLD邏輯資源允許的情況下,要盡量降低扇出數(shù)。第九頁,共103頁。VHDL高級設計技術-邏輯復制

邏輯復制是通過增加面積而改善設計時序的優(yōu)化方法,經(jīng)常用于調整信號的扇出。如果信號具有高的扇出,則要添加緩存器來增強驅動能力,但這會增大信號的時延。通過邏輯復制,使用多個相同的信號來分擔驅動任務。這樣,每路信號的扇出就會變低,就不需要額外的緩沖器來增強驅動,即可減少信號的路徑延遲。

第十頁,共103頁。VHDL高級設計技術-邏輯復制

通過邏輯單元的復制,減少扇出數(shù),可以解決下面兩個方面的問題:減少網(wǎng)絡延遲;多個器件分布在不同的區(qū)域,這樣可以大大降低布線阻塞情況的發(fā)生。在使用增加器件減少扇出數(shù)目的時候,必須要注意的是,如果是異步單元的話,必須對該單元進行同步處理。第十一頁,共103頁。VHDL高級設計技術-邏輯復制DQfn1DQfn1DQfn1第十二頁,共103頁。VHDL高級設計技術-邏輯復用技術

邏輯復用是指在完成相同的功能下,盡量減少所使用的邏輯單元的數(shù)目。這樣在不影響設計性能的情況下,可以降低資源的使用。下面通過一個共享加法器的例子來說明這個問題。第十三頁,共103頁。VHDL高級設計技術-邏輯復用技術第十四頁,共103頁。VHDL高級設計技術-邏輯復用技術第十五頁,共103頁。VHDL高級設計技術-邏輯復用技術

如圖5.3所示的先加法后選擇的結構,在實現(xiàn)這樣一個功能時需要使用兩個加法器和一個選擇器.

對該結構進行優(yōu)化設計,如圖5.3所示,A1和C1加數(shù)通過一個選擇器送到加法器的一個輸入端,B1和D1被加數(shù)通過另一個選擇器送到加法器的另一個輸入端,然后進行加法運算,這樣設計可以節(jié)省一個加法器資源,在FPGA內(nèi)選擇器的資源遠遠多于加法器資源。第十六頁,共103頁。VHDL高級設計技術-邏輯復用技術共享加法器資源的VHDL描述libraryIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_unsigned.all;useIEEE.std_logic_arith.all;entityres_sharingisport(A1,B1,C1,D1:inSTD_LOGIC_VECTOR(7downto0);COND_1:inSTD_LOGIC;Z1:outSTD_LOGIC_VECTOR(7downto0));endres_sharing;architectureBEHAVofres_sharingisbeginP1:process(A1,B1,C1,D1,COND_1)beginif(COND_1=’1’)then

Z1<=A1+B1;

else

Z1<=C1+D1;endif;endprocess;--endP1endBEHAV;第十七頁,共103頁。

VHDL高級設計技術-并行處理技術

串行設計是最常見的一種設計。當一個功能模塊對輸入的處理是分步驟進行的,而且后一步驟只依賴于前一步驟的結果時,功能模塊的設計就需要采用串行設計的思想。并行處理就是采用幾個處理流程同時處理到達的負載,提高處理的效率。并行處理要求這些處理任務之間是不相關的,彼此之間是不互相依賴的,如果存在相互依賴就很難用并行處理的方法。第十八頁,共103頁。

VHDL高級設計技術-并行處理技術模塊1模塊2模塊3模塊4模塊1模塊1模塊1模塊1第十九頁,共103頁。

VHDL高級設計技術-并行處理技術

下面以一個復雜的乘法運算為例,說明并行處理技術的使用。首先給出該運算的數(shù)學表達式,下圖給出了實現(xiàn)該功能的并行結構(該結構由XST綜合工具給出。通過使用多個乘法器,使得四個乘法運算可以同時進行,但是需要注意的,這種速度的提高是以面積為代價的。第二十頁,共103頁。VHDL高級設計技術-并行處理技術XXXX+++a0b0a1b1a2b2a3b3第二十一頁,共103頁。VHDL高級設計技術-并行乘法加法描述[例]乘法加法運算的實現(xiàn)則用VHDL語言描述如下:Libraryieee;Useieee.std_logic_1164.all;Useieee.std_logic_unsigned.all;Useieee.std_logic_arith.all;Entitymult_addisPort(clk:instd_logic;a0,a1,a2,a3:instd_logic_vector(7downto0);b0,b1,b2,b3:instd_logic_vector(7downto0);y:outstd_logic_vector(15downto0));endmultadd;architecturebehavofmult_addisbeginprocess(clk)beginifrising_edge(clk)theny<=((a0*b0)+(a1*b1)+(a2*b2)+(a3*b3));endif;endprocess;endbehav;第二十二頁,共103頁。VHDL高級設計技術-流水線設計技術

采用這樣的流水線設計從宏觀上來看平均每一個事件的處理時間為一個單位時間。流水線的設計要求事件所分成的這n個步驟的處理時間是相同的,以保證流水線不會因為處理時間的不同而發(fā)生阻塞,見圖5.2.2.3。第二十三頁,共103頁。VHDL高級設計技術-流水線設計技術

采用流水線設計的好處實在不提高系統(tǒng)運行頻率的情況下,能夠獲得更好的處理效率。受制造工藝的影響,提高系統(tǒng)頻率將會增加后端制造的難度。同時由于需要使用更先進的制造工藝,以及產(chǎn)品頻率的下降,將會帶來產(chǎn)品成本的提高。第二十四頁,共103頁。VHDL高級設計技術-流水線設計技術

如果假設在串行設計中系統(tǒng)處理效能正比于系統(tǒng)運行的頻率,那么對于流水線設計,在不提高系統(tǒng)運行頻率的情況下,n級流水線的處理效能可以用下面公式來描述:處理效能=系統(tǒng)運行頻率×流水線級數(shù)

第二十五頁,共103頁。VHDL高級設計技術-流水線設計技術

由此可見,在不提高系統(tǒng)運行頻率的情況下,提高流水線的級數(shù)將成倍地提高系統(tǒng)處理的效能。但是流水線的設計也是有一定的限制的:(1)只有對那些能分成n個步驟完成,并且對每個步驟都需要固定相同處理時間的操作來說才能采用流水線設計;

第二十六頁,共103頁。VHDL高級設計技術-流水線設計技術

(2)受硬件資源的限制,流水線的級數(shù)是有限制的;(3)對于存在處理分支預測流水線的設計(廣泛應用于微處理器的設計中),流水線的處理效能還要取決于分支預測算法的設計。第二十七頁,共103頁。VHDL高級設計技術-流水線設計技術

流水線能動態(tài)地提升器件性能,它的基本思想是對經(jīng)過多級邏輯的長數(shù)據(jù)通路進行重新構造,把原來必須在一個時鐘周期內(nèi)完成的操作分成在多個周期內(nèi)完成。

第二十八頁,共103頁。VHDL高級設計技術-流水線設計技術

這種方法允許更高的工作頻率,因而提高了數(shù)據(jù)吞吐量。因為PLD的寄存器資源非常豐富,所以對PLD設計而言,流水線是一種先進的而又不耗費過多器件資源的結構。但是采用流水線后,數(shù)據(jù)通道將會變成多時鐘周期,所以要特別考慮設計的其余部分,解決增加通路帶來的延遲。第二十九頁,共103頁。VHDL高級設計技術-流水線設計技術

流水線的基本結構是將適當劃分的N個操作步驟串連起來。流水線操作的最大特點是數(shù)據(jù)流在各個步驟的處理,從時間上看是連續(xù)的;其操作的關鍵在于時序設計的合理安排、前后級接口間數(shù)據(jù)的匹配。如果前級操作的時間等于后級操作的時間,直接輸入即可;如果前級操作時間小于后級操作時間,則需要對前級數(shù)據(jù)進行緩存,才能輸入到后級;如果前級操作時間大于后者,則需要串并轉換等方法進行數(shù)據(jù)分流,然后再輸入到下一級。第三十頁,共103頁。VHDL高級設計技術-流水線乘法器

首先給出流水線乘法器的結構圖。從圖中可以看出,該流水線乘法器,在每個時鐘節(jié)拍下,均可以得到一個乘法結果的輸出,乘法器的效率大大增加。AB×Mult第三十一頁,共103頁。VHDL高級設計技術-流水線乘法器libraryieee;useieee.std_logic_1164.all;useieee.numeric_std.all;entitymultipliers_2isgeneric(A_port_size:integer:=18;B_port_size:integer:=18);port(clk:instd_logic;A:inunsigned(A_port_size-1downto0);B:inunsigned(B_port_size-1downto0);MULT:outunsigned((A_port_size+B_port_size-1)downto0));attributemult_style:string;attributemult_styleofmultipliers_2:entityis"pipe_lut";endmultipliers_2;architecturebehofmultipliers_2issignala_in,b_in:unsigned(A_port_size-1downto0);signalmult_res:unsigned((A_port_size+B_port_size-1)downto0);signalpipe_1,pipe_2,pipe_3:unsigned((A_port_size+B_port_size-1)downto0);beginmult_res<=a_in*b_in;第三十二頁,共103頁。VHDL高級設計技術-流水線乘法器process(clk)beginif(clk'eventandclk='1')thena_in<=A;b_in<=B;pipe_1<=mult_res;pipe_2<=pipe_1;pipe_3<=pipe_2;MULT<=pipe_3;endif;endprocess;endbeh;第三十三頁,共103頁。VHDL高級設計技術-系統(tǒng)同步單元

PLD內(nèi)部由大量的電路單元組成,但是這些單元通常都是由有限的幾種不同的邏輯單元或是邏輯門構成的。每一種邏輯單元包含輸入信號以及輸出信號,輸出信號又作為其他邏輯單元的輸入信號。

從邏輯層面的抽象來看,一個PLD器件看成數(shù)量眾多的邏輯門構成的網(wǎng)絡,這些邏輯門的輸入和輸出通過金屬導線相連構成了完成特定邏輯功能或是算法的網(wǎng)絡。在PLD芯片內(nèi)部,成百上千萬的邏輯門之間的信號傳遞決定了邏輯門的時延以及系統(tǒng)最后的運行速度。

第三十四頁,共103頁。VHDL高級設計技術-系統(tǒng)同步單元

集成電路系統(tǒng)中有些信號的傳遞可以同時進行,但是有的信號的傳遞必須遵循嚴格的先后關系,這樣才能保證系統(tǒng)運行結果的正確性(也就是說系統(tǒng)運行的結果是可以被重復的,系統(tǒng)在確定條件下運行的結果是確定的,而不是隨機的)。這就需要同步(Synchronization)來保證電路的各個部分的邏輯處理按照特定的順序進行第三十五頁,共103頁。VHDL高級設計技術-系統(tǒng)同步單元

同步電路和異步電路的區(qū)別在于電路觸發(fā)是否與驅動時鐘同步,從行為上講,就是所有電路是否在同一時鐘沿的觸發(fā)下同步地處理數(shù)據(jù)。常用于區(qū)分二者的典型電路就是同步復位和異步復位電路。同步復位的代碼中只有時鐘沿一個觸發(fā)條件,但是異步復位代碼中語句有復位和時鐘沿兩個觸發(fā)條件。第三十六頁,共103頁。VHDL高級設計技術-系統(tǒng)同步單元

通常情況下,同步電路采用的都是全同步,圖5.1.1(a)就是一個全同步的例子,第一部分是由邏輯門組成的組合邏輯部分;第二部分稱為時鐘驅動存儲單元;簡單的說就是寄存器,用于存儲組合邏輯的輸出結果;第三部分是時鐘分配網(wǎng)絡,這一部分特殊的電路不參與實際的運算,而是產(chǎn)生并分配參考時鐘,這一部分電路關心的是如何產(chǎn)生控制整個同步電路的時鐘并將時鐘正確地分配到每一個寄存器。

第三十七頁,共103頁。VHDL高級設計技術-系統(tǒng)同步單元

同樣以圖5.1.1(a)為例,同步系統(tǒng)中包括由組合邏輯部分完成的邏輯運算以及由存儲單元對于邏輯運算結果的存儲:實際的存儲過程由時鐘信號控制,并發(fā)生在信號從邏輯門的輸出端輸出穩(wěn)定后。該模型中在每個時鐘周期的開始時,輸入信號以及存儲單元存儲的數(shù)據(jù)輸入組合邏輯,經(jīng)過一定邏輯門以及傳輸?shù)臅r延后,組合邏輯產(chǎn)生結果輸出并保持穩(wěn)定,在這個時鐘周期的末尾將輸出組合邏輯的結果并存入存儲單元,并在下一個時鐘周期重新參加組合邏輯的操作。第三十八頁,共103頁。VHDL高級設計技術-系統(tǒng)同步單元時鐘驅動存儲單元時鐘分配網(wǎng)絡計算單元輸入數(shù)據(jù)端組合邏輯輸出數(shù)據(jù)端時鐘信號同步單元(a)同步系統(tǒng)的狀態(tài)機模型Ri數(shù)據(jù)時鐘周期開始時信號有效組合邏輯時鐘信號(b)本地數(shù)據(jù)通路Rf數(shù)據(jù)時鐘信號時鐘周期結束時信號有效第三十九頁,共103頁。VHDL高級設計技術-系統(tǒng)同步單元

因此,數(shù)字系統(tǒng)可以看成是由一系列同時執(zhí)行的由組合邏輯構成的計算單元組成的。如圖5.1.1(b)所示的本地數(shù)據(jù)通路就是對這種概念的抽象。從圖中可以看出,組合邏輯的時延被限制在一個時鐘周期內(nèi)。在此本地數(shù)據(jù)通路餓始端,寄存器Ri是存儲單元,用于在時鐘周期開始的時候給組合邏輯提供部分或是全部的輸入信號,同時在本地數(shù)據(jù)通路的末端,組合邏輯的結果在時鐘周期的末尾被正確地鎖存于寄存器Rf中。在本地數(shù)據(jù)通路中,每一個寄存器既是組合邏輯的輸入端—數(shù)據(jù)的提供源,也是組合邏輯的輸出端—輸出數(shù)據(jù)的接收者,這取決于系統(tǒng)處于運行的哪個階段。第四十頁,共103頁。VHDL高級設計技術-系統(tǒng)同步單元

同步系統(tǒng)具有很好的可控性,這是因為系統(tǒng)時鐘提供了一種時間窗的機制保證可有足夠的時間讓信號在邏輯門以及邏輯門之間的連線上傳播,并最后成功鎖存于寄存器。在設計系統(tǒng)和選擇正確的時鐘周期時,要滿足以下這兩個矛盾的需求

1、希望系統(tǒng)的時鐘周期盡可能短,這樣在固定的時間內(nèi)運算邏輯電路可以進行更多次的運算;2、需要保證時鐘定義的時間窗足夠長以保證組合邏輯的輸出信號都能在當前時鐘周期結束前以及下一個時鐘周期開始前到達目標寄存器。第四十一頁,共103頁。VHDL高級設計技術-系統(tǒng)同步單元

同步系統(tǒng)具有以下的優(yōu)點使得它成為數(shù)字集成電路系統(tǒng)的首選:(1)同步系統(tǒng)易于理解,并且同步系統(tǒng)中的各個參數(shù)以及變量都十分的明確,例如對于不同運算單元的執(zhí)行的先后順序是確定的;(2)同步系統(tǒng)可以減少非確定因素諸如組合邏輯的時延(受系統(tǒng)運行的環(huán)境、負載以及輸入信號的向量組合等的影響)對系統(tǒng)的影響,這就保證了系統(tǒng)按照確定的行為運行,并且保證系統(tǒng)正確執(zhí)行了設計的算法;第四十二頁,共103頁。VHDL高級設計技術-系統(tǒng)同步單元(3)同步系統(tǒng)中不需要關心組合邏輯的輸出毛刺,因為寄存器只有在時鐘的有效沿上才對組合邏輯的輸出進行采樣,而同步系統(tǒng)可以確保這時組合邏輯的輸出已經(jīng)沒有毛刺。(4)同步系統(tǒng)的狀態(tài)完全由存儲單元中所存儲的數(shù)據(jù)所決定,這大大簡化了系統(tǒng)的設計、調試以及測試。第四十三頁,共103頁。VHDL高級設計技術-系統(tǒng)同步單元當然,同步系統(tǒng)也存在著下面一些缺點使得今天的同步大規(guī)模集成電路設計變得更加富有挑戰(zhàn)性:(1)同步系統(tǒng)要求系統(tǒng)中的所有電路通路以其中最慢的一條寄存器到寄存器通路的標準來工作(這也就是說,同步系統(tǒng)中系統(tǒng)工作的速度取決于這些通路上具有最大時延的組合邏輯,包含這樣組合邏輯的通路稱為最壞情況下的關鍵路徑。第四十四頁,共103頁。VHDL高級設計技術-系統(tǒng)同步單元

在通常的大規(guī)模集成電路系統(tǒng)中,大多數(shù)的路徑都具有更小的時延,也就是可以采用更小的時鐘周期。但是那些具有最大時延的路徑限制了系統(tǒng)時鐘周期的長短,同時也引入了對于整個系統(tǒng)速度的限制。有時候這種通路上時延的非對稱性是如此的富有戲劇性,以致于整個系統(tǒng)的速度僅僅取決于少數(shù)幾條速度非常慢的路徑)。第四十五頁,共103頁。VHDL高級設計技術-系統(tǒng)同步單元

(2)同步系統(tǒng)中,時鐘信號需要被分配到數(shù)以萬計的分布于系統(tǒng)各個地方的存儲寄存器中,因此系統(tǒng)中很大一部分的面積以及耗散的電能都被用于時鐘分配網(wǎng)絡—并不參與實際的計算功能的電路。(3)同步系統(tǒng)的可靠性依賴于對于系統(tǒng)時延要求(包括組合邏輯以及由電路互聯(lián)線產(chǎn)生)的正確估計,如果系統(tǒng)不能滿足時延要求,將造成系統(tǒng)的不穩(wěn)定甚至是不可用。第四十六頁,共103頁。VHDL高級設計技術-系統(tǒng)同步單元

綜上所述,因此同步電路的設計應遵循以下準則:

1)盡量在設計中使用單時鐘,且走全局時鐘網(wǎng)絡。在單時鐘設計中,很容易就將整個設計同步于驅動時鐘,使設計得到簡化。全局時鐘網(wǎng)絡的時鐘是性能最優(yōu),最便于預測的時鐘,具有最強的驅動能力,不僅能保證驅動每個寄存器,且時鐘漂移可以忽略。在多時鐘應用中,要做到局部時鐘同步。

第四十七頁,共103頁。VHDL高級設計技術-系統(tǒng)同步單元

在實際工程中,應將時鐘信號和復位信號通過FPGA芯片的專用全局時鐘引腳送入,以獲得更高質量的時鐘信號。

2)盡量避免使用混合時鐘沿來采樣數(shù)據(jù)或驅動電路。使用混合時鐘沿將會使靜態(tài)時序分析復雜,并導致電路工作頻率降低。第四十八頁,共103頁。VHDL高級設計技術-系統(tǒng)同步單元3)避免使用門控時鐘。

如果一個時鐘節(jié)點由組合邏輯驅動,那么就形成了門控時鐘,門控時鐘常用來減少功耗,但其相關的邏輯不是同步電路,即可能帶有毛刺,而任何的一點點小毛刺都可以造成D觸發(fā)器誤翻轉;此外,門控邏輯會污染時鐘質量,產(chǎn)生毛刺,并惡化偏移和抖動等指標。所以門控時鐘對設計可靠性有很大影響,應盡可能避免。

4)盡量不要在模塊內(nèi)部使用計數(shù)器分頻產(chǎn)生所需時鐘。第四十九頁,共103頁。

VHDL高級設計技術-異步單元

但是在實際的設計過程中,不可避免的要接觸到異步單元,比如在設計模塊與外圍芯片的通信中,跨時鐘域的情況經(jīng)常不可避免。異步時序單元指的是在設計中有兩個或兩個以上的時鐘,且時鐘之間是不同頻率或同頻不同相的關系。而異步時序設計的關鍵就是把數(shù)據(jù)或控制信號正確地進行跨時鐘域傳輸。每一個觸發(fā)器都有其規(guī)定的建立(setup)和保持(hold)時間參數(shù)。在這個時間參數(shù)內(nèi),輸入信號在時鐘的上升沿是不允許發(fā)生變化的。如果信號的建立時間中對其進行采樣,得到的結果將是不可預知的,即亞穩(wěn)態(tài)。第五十頁,共103頁。VHDL高級設計技術-異步單元

>

>b_clka_clkdata_datb_data_datb_dat數(shù)據(jù)變化亞穩(wěn)態(tài)第五十一頁,共103頁。VHDL高級設計技術-異步單元

常用的同步策略,如雙鎖存器法、結繩法等,而作為異步時序設計中的重點—異步FIFO設計。為了避免亞穩(wěn)態(tài)問題,通常采用的方法是雙鎖存器法,即在一個信號進入另一個時鐘域之前,將該信號用兩個鎖存器連續(xù)鎖存兩次,最后得到的采樣結果就可以消除亞穩(wěn)態(tài)問題。

>

>b_clka_clkdata_datb_dat11b_dat2

>b_dat1數(shù)據(jù)變化靜態(tài)同步a_datb_dat2第五十二頁,共103頁。VHDL高級設計技術-邏輯結構的設計方法

邏輯結構主要分為鏈狀結構(ChainArchitecture)和樹狀結構(TreeArchitecture)。一般來講,鏈狀結構具有較大的時延,后者具有較小的時延。所謂的鏈狀結構主要指程序是串行執(zhí)行的,樹狀結構是串并結合的模式,具體如例3-7所示。表3-3給出具有鏈狀結構和樹狀結構的4輸入加法器的實現(xiàn)實例。第五十三頁,共103頁。VHDL高級設計技術-邏輯結構的設計方法+++ABCDZ+AB+CD+Z圖5.12鏈狀結構圖圖5.13樹狀結構圖第五十四頁,共103頁。VHDL高級設計技術-邏輯結構的設計方法

從上例可以明顯看出樹狀結構的優(yōu)勢,它能夠在同等資源的情況下,縮減運算時延,從而提高電路吞吐量以節(jié)省面積。在書寫代碼時,要盡量采用樹狀結構,以減少時間延遲。第五十五頁,共103頁。VHDL高級設計技術-if和case語句的使用

if語句指定了一個有優(yōu)先級的編碼邏輯,而case語句生成的邏輯是并行的,不具有優(yōu)先級。

if語句可以包含一系列不同的表達式,而case語句比較的是一個公共的控制表達式。

if-else結構速度較慢,但占用的面積小,如果對速度沒有特殊要求而對面積有較高要求,則可用if-else語句完成編解碼。

case結構速度較快,但占用面積較大,所以用case語句實現(xiàn)對速度要求較高的編解碼電路。第五十六頁,共103頁。VHDL高級設計技術-if和case語句的使用

嵌套的if語句如果使用不當,就會導致設計的更大延時,為了避免較大的路徑延時,最好不要使用特別長的嵌套if結構。如想利用if語句來實現(xiàn)那些對延時要求苛刻的路徑時,應將最高優(yōu)先級給最遲到達的關鍵信號。有時為了兼顧面積和速度,可以將if和case語句合用。

第五十七頁,共103頁。VHDL高級設計技術-if和case語句的使用【例】給出使用if語句,但缺乏else分支而造成鎖存器的情況。

Process(a,data)BeginIf(a=1)thendata_out<=data_in;endif;Endprocess;第五十八頁,共103頁。VHDL高級設計技術-if和case語句的使用【例】給出了使用if語句,不缺少else分支而不會造成鎖存器的情況。Process(a,data)BeginIf(a=1)thendata_out<=data_in;elsedata_out<=’0’;endif;Endprocess;第五十九頁,共103頁。VHDL高級設計技術-if和case語句的使用第六十頁,共103頁。VHDL高級設計技術-if和case語句的使用【例】給出了在process塊中使用case語句,由于缺乏others分支的VHDL描述。Process(a,data_in1,data_in2)begincaseaiswhen“00”=>data_out<=data_in1;when“01”=>data_out<=data_in2;whenothers=>;endcase;endprocess;第六十一頁,共103頁。VHDL高級設計技術-if和case語句的使用【例3-13】給出了在process塊中使用case語句,加入others分支的VHDL描述。Process(a,data_in1,data_in2)begincaseaiswhen“00”=>data_out<=data_in1;when“01”=>data_out<=data_in2;whenothers=>data_out<=’0’;endcase;endprocess;第六十二頁,共103頁。VHDL高級設計技術-if和case語句的使用第六十三頁,共103頁。VHDL高級設計技術-IP核技術

現(xiàn)在的FPGA設計,規(guī)模巨大而且功能復雜,設計人員不可能從頭開始進行設計?,F(xiàn)在采用的方式是,在設計中盡可能使用現(xiàn)有的功能模塊,除非沒有現(xiàn)成的模塊可以使用時,設計人員才需要自己花時間和精力設計新的模塊。這些現(xiàn)有的功能模塊,EDA設計人員把他們通常稱為IP(intellectualProperty)核。IP核來源主要有三個方面:(1)前一個設計創(chuàng)建的模塊;(2)FPGA生產(chǎn)廠商的提供;(3)第三方IP廠商的提供。第六十四頁,共103頁。VHDL高級設計技術-IP核的分類

IP(IntelligentProperty)核是具有知識產(chǎn)權核的集成電路芯核總稱,是經(jīng)過反復驗證過的、具有特定功能的宏模塊,與芯片制造工藝無關,可以移植到不同的半導體工藝中。到了SOC階段,IP核設計已成為ASIC電路設計公司和FPGA提供商的重要任務,也是其實力體現(xiàn)。對于FPGA開發(fā)軟件,其提供的IP核越豐富,用戶的設計就越方便,其市場占用率就越高。目前,IP核已經(jīng)變成系統(tǒng)設計的基本單元,并作為獨立設計成果被交換、轉讓和銷售。第六十五頁,共103頁。VHDL高級設計技術-IP核的分類

從IP核的提供方式上,通常將其分為軟核、硬核和固核這3類。從完成IP核所花費的成本來講,硬核代價最大;從使用靈活性來講,軟核的可復用使用性最高。第六十六頁,共103頁。VHDL高級設計技術-IP核的分類(軟核)

軟核在EDA設計領域指的是綜合之前的寄存器傳輸級(RTL)模型;具體在FPGA設計中指的是對電路的硬件語言描述,包括邏輯描述、網(wǎng)表和幫助文檔等。軟核只經(jīng)過功能仿真,需要經(jīng)過綜合以及布局布線才能使用。其優(yōu)點是靈活性高、可移植性強,允許用戶自配置;缺點是對模塊的預測性較低,在后續(xù)設計中存在發(fā)生錯誤的可能性,有一定的設計風險。軟核是IP核應用最廣泛的形式。第六十七頁,共103頁。VHDL高級設計技術-IP核的分類(固核)

固核在EDA設計領域指的是帶有平面規(guī)劃信息的網(wǎng)表;具體在FPGA設計中可以看做帶有布局規(guī)劃的軟核,通常以RTL代碼和對應具體工藝網(wǎng)表的混合形式提供。將RTL描述結合具體標準單元庫進行綜合優(yōu)化設計,形成門級網(wǎng)表,再通過布局布線工具即可使用。和軟核相比,固核的設計靈活性稍差,但在可靠性上有較大提高。目前,固核也是IP核的主流形式之一。第六十八頁,共103頁。VHDL高級設計技術-IP核的分類(硬核)

硬核在EDA設計領域指經(jīng)過驗證的設計版圖;具體在FPGA設計中指布局和工藝固定、經(jīng)過前端和后端驗證的設計,設計人員不能對其修改。不能修改的原因有兩個:首先是系統(tǒng)設計對各個模塊的時序要求很嚴格,不允許打亂已有的物理版圖;其次是保護知識產(chǎn)權的要求,不允許設計人員對其有任何改動。

IP硬核的不許修改特點使其復用有一定的困難,因此只能用于某些特定應用,使用范圍較窄。第六十九頁,共103頁。VHDL高級設計技術-IP核的優(yōu)化

最長見到的情況就是IP核的廠商從RTL級開始對IP進行人工的優(yōu)化。EDA的設計用戶可以通過下面的幾種途徑購買和使用IP模塊:(1)IP模塊的RTL代碼;(2)未布局布線的網(wǎng)表級IP核;(3)布局布線后的網(wǎng)表級IP核。第七十頁,共103頁。VHDL高級設計技術-未加密的RTL級IP

在很少的情況下,EDA設計人員可以購買未加密的源代碼RTL級的IP模塊,然后將這些IP模塊集成到設計的RTL級代碼中。這些IP核已經(jīng)經(jīng)過了仿真、綜合和驗證。但一般情況下,EDA設計人員很難得到復雜的IP核RTL級的描述,如果EDA人員想這樣做的話,必須和IP核的提供廠商簽訂一個叫NDA(nondisclosureagreements)的協(xié)議。在這一級上的IP核,EDA人員很容易的根據(jù)自己的需要修改代碼,滿足自己的設計要求。但是與后面優(yōu)化后的網(wǎng)表IP相比,資源需求和性能方面的效率會比較低。第七十一頁,共103頁。VHDL高級設計技術--加密的RTL級IPAltera和Xilinx這樣的公司開發(fā)了自己的加密算法和工具,這樣只有自己的FPGA廠商的工具加密后的RTL代碼只能由自己的綜合工具進行處理。第七十二頁,共103頁。VHDL高級設計技術-未布局布線的網(wǎng)表IP

對于EDA設計人員最普遍的方式就是使用未經(jīng)加密布局布線的LUT/CLB網(wǎng)表IP。這種網(wǎng)表進行了加密處理,以EDIF格式或者PLD廠商自己的專用格式。廠商已經(jīng)對IP進行了人工的優(yōu)化,使得在資源利用和性能方面達到最優(yōu)。但是EDA設計人員不能根據(jù)自己設計要求對核進行適當?shù)牟脺p,并且IP模塊同某一特定的PLD廠商和具體的器件聯(lián)系。

第七十三頁,共103頁。VHDL高級設計技術-布局布線后的網(wǎng)表級IP

在一些情況下,EDA人員可能需要購買和使用布局布線后和加密的LUT/CLB網(wǎng)表級IP。布局布線后的網(wǎng)表級IP可以達到最佳的性能。在一些情況下,LUT、CLB和其它構成IP核的部分,它們內(nèi)部的位置時相對固定的,但是它作為一個整體可以放在PLD的任意部分,并且它們有I/O引腳的位置限制。在這種情況下,用戶只能對其進行調用,不得對其進行任何的修改。第七十四頁,共103頁。VHDL高級設計技術-IP核的生成

很多FPGA廠商提供了一個專門的IP核生成工具,有時候EDA廠商、IP廠商和一些獨立的設計小組也提供了IP核生成工具。這些核生成軟件是參數(shù)化的,由用戶指定總線和功能單元的寬度和深度等參數(shù)。當使用IP核生成器時,從IP模塊/核列表中選擇自己需要的一個IP核,然后設置相應得參數(shù)。然后,對一些IP核,生成器要求用戶從功能列表張選擇是否包含某些功能。比如,F(xiàn)IFO模塊,需要用戶選擇是否進行滿空的計數(shù)。通過這種設置方式,IP核生成器可以生成在資源需求和性能方面效率最高的IP核/模塊。根據(jù)生成器軟件的代碼源和NDA的要求不同,核生成器輸出可能是加密或未加密的RTL級源代碼,也可能是未經(jīng)布局布線的網(wǎng)表或布局布線的網(wǎng)表文件。第七十五頁,共103頁。VHDL高級設計技術-IP核生成器第七十六頁,共103頁。VHDL高級設計技術-IP核的應用(DCM)

數(shù)字時鐘管理模塊(DigitalClockManager,DCM)是基于Xilinx的其他系列器件所采用的數(shù)字延遲鎖相環(huán)(DLL,DelayLockedLoop)模塊。在時鐘的管理與控制方面,DCM與DLL相比,功能更強大,使用更靈活。

DCM的功能包括消除時鐘的延時、頻率的合成、時鐘相位的調整等系統(tǒng)方面的需求。DCM的主要優(yōu)點在于:①實現(xiàn)零時鐘偏移(Skew),消除時鐘分配延遲,并實現(xiàn)時鐘閉環(huán)控制;②時鐘可以映射到PCB上用于同步外部芯片,這樣就減少了對外部芯片的要求,將芯片內(nèi)外的時鐘控制一體化,以利于系統(tǒng)設計。對于DCM模塊來說,其關鍵參數(shù)為輸入時鐘頻率范圍、輸出時鐘頻率范圍、輸入/輸出時鐘允許抖動范圍等。第七十七頁,共103頁。VHDL高級設計技術-IP核的應用-DCM符號第七十八頁,共103頁。VHDL高級設計技術-IP核的應用-信號說明

在Xilinx芯片中,典型的DLL標準原型如圖4-111所示,其管腳分別說明如下:

CLKIN(源時鐘輸入):DLL輸入時鐘信號,通常來自IBUFG或BUFG。

CLKFB(反饋時鐘輸入):DLL時鐘反饋信號,該反饋信號必須源自CLK0CLK2X,并通過IBUFG或BUFG相連。

RST(復位):控制DLL的初始化,通常接地。

CLK0(同頻信號輸出):與CLKIN無相位偏移;CLK90與CLKIN有90度相位偏移;CLK180與CLKIN有180度相位偏移;第七十九頁,共103頁。VHDL高級設計技術-IP核的應用-信號說明CLK270與CLKIN有270度相位偏移。

CLKDV(分頻輸出):DLL輸出時鐘信號,是CLKIN的分頻時鐘信號。DLL支持的分頻系數(shù)為1.5,2,2.5,3,4,5,8和16。

CLK2X(兩倍信號輸出):CLKIN的2倍頻時鐘信號。

LOCKED(輸出鎖存):為了完成鎖存,DLL可能要檢測上千個時鐘周期。當DLL完成鎖存之后,LOCKED有效。

第八十頁,共103頁。VHDL高級設計技術-IP核的應用-DCM

DCM共由四部分組成,如圖M所示。

DLL模塊;數(shù)字頻率合成器(DFS,DigitalFrequencySynthesizer);數(shù)字移相器(DPS,DigitalPhaseShifter);數(shù)字頻譜擴展器(DSS,DigitalSpreadSpectrum)。第八十一頁,共103頁。VHDL高級設計技術--DLL模塊DLL主要由一個延時線和控制邏輯組成。延時線對時鐘輸入端CLKIN產(chǎn)生一個延時,時鐘分布網(wǎng)線將該時鐘分配到器件內(nèi)的各個寄存器和時鐘反饋端CLKFB;控制邏輯在反饋時鐘到達時采樣輸入時鐘以調整二者之間的偏差,實現(xiàn)輸入和輸出的零延時,具體工作原理是:控制邏輯在比較輸入時鐘和反饋時鐘的偏差后,調整延時線參數(shù),在輸入時鐘后不停地插入延時,直到輸入時鐘和反饋時鐘的上升沿同步,鎖定環(huán)路進入“鎖定”狀態(tài),只要輸入時鐘不發(fā)生變化,輸入時鐘和反饋時鐘就保持同步。DLL可以被用來實現(xiàn)一些電路以完善和簡化系統(tǒng)級設計,如提供零傳播延遲,低時鐘相位差和高級時鐘區(qū)域控制等。第八十二頁,共103頁。VHDL高級設計技術-DFS-數(shù)字頻率合成器

DFS可以為系統(tǒng)產(chǎn)生豐富的頻率合成時鐘信號,輸出信號為CLKFB和CLKFX180,可提供輸入時鐘頻率分數(shù)倍或整數(shù)倍的時鐘輸出頻率方案,輸出頻率范圍為1.5~320MHz(不同芯片的輸出頻率范圍是不同的)。這些頻率基于用戶自定義的兩個整數(shù)比值,一個是乘因子(CLKFX_MULTIPLY),另外一個是除因子(CLKFX_DIVIDE),輸入頻率和輸出頻率之間的關系為:比如取CLKFX_MULTIPLY=3,CLKFX_DIVIDE=1,PCB上源時鐘為100MHz,通過DCM3倍頻后,就能驅動時鐘頻率在300MHz的FPGA,從而減少了板上的時鐘路徑,簡化板子的設計,提供更好的信號完整性。第八十三頁,共103頁。VHDL高級設計技術-數(shù)字移相器

DCM具有移動時鐘信號相位的能力,因此能夠調整I/O信號的建立和保持時間,能支持對其輸出時鐘進行0度、90度、180度、270度的相移粗調和相移細調。其中,相移細調對相位的控制可以達到1%輸入時鐘周期的精度(或者50ps),并且具有補償電壓和溫度漂移的動態(tài)相位調節(jié)能力。對DCM輸出時鐘的相位調整需要通過屬性控制PHASE_SHIFT來設置。PS設置范圍為-255到+255,比如輸入時鐘為200MHz,需要將輸出時鐘調整+0.9ns的話,PS=(0.9ns/5ns)×256=46。如果PHASE_SHIFT值是一個負數(shù),則表示時鐘輸出應該相對于CLKIN向后進行相位移動;如果PHASE_SHIFT是一個正值,則表示時鐘輸出應該相對于CLKIN向前進行相位移動。第八十四頁,共103頁。VHDL高級設計技術-數(shù)字頻譜合成器

Xilinx公司第一個提出利用創(chuàng)新的擴頻時鐘技術來減少電磁干擾(EMI)噪聲輻射的可編程解決方案。最先在FPGA中實現(xiàn)電磁兼容的EMIControl技術,是利用數(shù)字擴頻技術(DSS)通過擴展輸出時鐘頻率的頻譜來降低電磁干擾,減少用戶在電磁屏蔽上的投資。數(shù)字擴頻(DSS)技術通過展寬輸出時鐘的頻譜,來減少EMI和達到FCC要求。這一特點使設計者可極大地降低系統(tǒng)成本,使電路板重新設計的可能性降到最小,并不再需要昂貴的屏蔽,從而縮短了設計周期。

第八十五頁,共103頁。VHDL高級設計技術-塊RAM存儲器

Xilinx公司提供了大量的存儲器資源,包括了內(nèi)嵌的塊存儲器、分布式存儲器以及16位的移位寄存器。利用這些資源可以生成深度、位寬可配置的RAM、ROM、FIFO以及移位寄存器等存儲邏輯。其中,塊存儲器是硬件存儲器,不占用任何邏輯資源,其余兩類都是Xilinx專有的存儲結構,由FPGA芯片的查找表和觸發(fā)器資源構建的,每個查找表可構成16*1位的分布式存儲器或移位寄存器。一般來講,塊存儲器是寶貴的資源,通常用于大數(shù)據(jù)量的應用場合,而其余兩類用于小數(shù)據(jù)量環(huán)境。

第八十六頁,共103頁。IP核的應用-塊RAM存儲器組成和功能介紹

在XilinxFPGA中,塊RAM是按照列來排列的,這樣保證了每個CLB單元周圍都有比較接近的塊RAM用于存儲和交換數(shù)據(jù)。與塊RAM接近的是硬核乘加單元,這樣不僅有利于提高乘法的運算速度,還能形成微處理器的雛形,在數(shù)字信號處理領域非常實用。例如,在Spartan3E系列芯片中,塊RAM分布于整個芯片的邊緣,其外部一般有兩列CLB,如圖4-120所示,可直接對輸入數(shù)據(jù)進行大規(guī)模緩存以及數(shù)據(jù)同步操作,便于實現(xiàn)各種邏輯操作。第八十七頁,共103頁。

IP核的應用-塊RAM存儲器組成和功能介紹第八十八頁,共103頁。

IP核的應用-塊RAM存儲器組成和功能介紹

塊RAM幾乎是FPGA器件中除了邏輯資源之外用得最多的功能塊,Xilinx的主流FPGA芯片內(nèi)部都集成了數(shù)量不等的塊RAM硬核資源,速度可以達到數(shù)百兆赫茲,不會占用額外的CLB資源,而且可以在ISE環(huán)境的IP核生成器中靈活地對RAM進行配置,構成單端口RAM、簡單雙口RAM、真正雙口RAM、ROM(在RAM中存入初值)和FIFO等應用模式,如圖4-121所示。同時,還可以將多個塊RAM通過同步端口連接起來構成容量更大的塊RAM。

第八十九頁,共103頁。

IP核的應用-單端口RAM模式

單端口RAM的模型如圖4-122所示,只有一個時鐘源CLK,WE為寫使能信號,EN為單口RAM使能信號,SSR為清零信號,ADDR為地址信號,DI和DO分別為寫和讀出數(shù)據(jù)信號。

第九十頁,共103頁。

IP核的應用-單端口RAM模式第九十一頁,共103頁。

IP核的應用-單端口RAM模式

單端口RAM模式支持非同時的讀寫操作。同時每個塊RAM可以被分為兩部分,分別實現(xiàn)兩個獨立的單端口RAM。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論