vhdl代碼風(fēng)格_第1頁
已閱讀1頁,還剩111頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、何賓2008.09,E - mail: hebin@mail.buct.edu.cn,,EDA原理及應(yīng)用,本章首先介紹基于Xilinx芯片的HDL高級設(shè)計技術(shù)。在高級設(shè)計技術(shù)中主要對提高HDL性能的一些設(shè)計方法進行了比較詳細的介紹,其中包括邏輯復(fù)制和復(fù)用技術(shù)、并行和流水技術(shù)、系統(tǒng)同步和異步單元、邏輯結(jié)構(gòu)的設(shè)計方法和模塊的劃分原則。 本章也對IP核技術(shù)進行了比較詳細的說明和介紹,其中包括IP核分類、IP核優(yōu)化、IP

2、核生成和IP應(yīng)用技術(shù)。 這部分雖然在本書中的篇幅不是很多,但是內(nèi)容非常重要,讀者在學(xué)習(xí)該部分內(nèi)容時要仔細的領(lǐng)會。,第五章,VHDL高級設(shè)計技術(shù)-主要內(nèi)容,第 5章,,● VHDL代碼風(fēng)格是指兩個方面的內(nèi)容: 一方面是VHDL語言描述規(guī)范,即在使用VHDL語言描述邏輯行為時必須遵守VHDL語言的詞法和句法規(guī)范,該描述風(fēng)格不依賴于EDA軟件工具和可編程邏輯器件PLD類型,僅僅是從VHDL語言出發(fā)的代碼風(fēng)

3、格; 另一方面則是VHDL語言對于一特定邏輯單元的描述,即用VHDL語言的哪一種描述風(fēng)格進行邏輯行為描述,才能使電路描述得更準(zhǔn)確,布局布線后產(chǎn)生的電路設(shè)計最優(yōu),該描述風(fēng)格不僅需要關(guān)注EDA軟件在語法細節(jié)上的差異,還要緊密依賴于固有的硬件結(jié)構(gòu)。,,VHDL高級設(shè)計技術(shù)-VHDL代碼風(fēng)格,●,第五章,VHDL高級設(shè)計技術(shù)-VHDL代碼風(fēng)格,從本質(zhì)上講,使用哪種描述風(fēng)格描述電路的邏輯行為,主要取決于兩個關(guān)鍵問題:

4、 1、速度和面積問題; 2、功耗問題;,,●,第五章,VHDL高級設(shè)計技術(shù)-VHDL代碼風(fēng)格,首先,先說明速度和面積問題。 這里的“面積”主要是指設(shè)計所占用的FPGA邏輯資源數(shù)目,即所消耗的觸發(fā)器和查找表數(shù)目。 “速度”是指在芯片上穩(wěn)定運行時所能夠達到的最高頻率。 面積和速度這兩個指標(biāo)始終貫穿著PLD的設(shè)計,是評價設(shè)計性能的最主要標(biāo)準(zhǔn)。,●,,第五章,VHDL高級設(shè)計技術(shù)-VHDL代碼風(fēng)格,面積和速

5、度呈反比關(guān)系。 如果要提高速度,就需要消耗更多的資源,即需要更大的面積; 如果減少了面積,就會使系統(tǒng)的處理速度降低。 所以在設(shè)計中不可能同時實現(xiàn)既顯著提高PLD工作頻率,又顯著減少所占用PLD的邏輯資源的數(shù)目。,●,,第五章,VHDL高級設(shè)計技術(shù)-VHDL代碼風(fēng)格,在實際設(shè)計時,需要在速度和面積之間進行權(quán)衡,使得設(shè)計達到面積和速度的最佳結(jié)合點。 本章介紹通過采用邏輯復(fù)制和復(fù)用技術(shù)

6、、并行和流水線技術(shù)、同步和異步電路處理技術(shù)、邏輯結(jié)構(gòu)處理技術(shù)等方法,在速度和面積之間進行權(quán)衡,達到最佳的性能和資源要求。,●,,第五章,VHDL高級設(shè)計技術(shù)-VHDL代碼風(fēng)格,其次,說明功耗問題。 隨著PLD工作頻率的顯著提高,功耗成為一個引起EDA設(shè)計人員密切關(guān)注的問題。 由于PLD工作頻率的提高,邏輯單元的切換頻率也相應(yīng)提高,相應(yīng)的會引起PLD功耗增大。 這樣就存在著頻率和功耗之間的矛

7、盾,因此必須在邏輯單元的切換速度和功耗之間進行權(quán)衡,通過合理的設(shè)計,減少邏輯單元不必要的切換,這樣可以在一定程度上降低功耗。,●,,第五章,VHDL高級設(shè)計技術(shù)-扇出,扇出是指某一器件的輸出驅(qū)動與之相連的后續(xù)器件的能力。眾所周知,一個器件的扇出數(shù)是有限制的。扇出數(shù)目越多,所要求的驅(qū)動能力越高。在PLD芯片內(nèi),如果一個邏輯單元的扇出數(shù)過多的話,會降低其工作速度,并且會對布線造成困難。因此,在PLD邏輯資源允許的情況下,要盡量降低扇出數(shù)。,

8、●,,第五章,VHDL高級設(shè)計技術(shù)-邏輯復(fù)制,邏輯復(fù)制是通過增加面積而改善設(shè)計時序的優(yōu)化方法,經(jīng)常用于調(diào)整信號的扇出。如果信號具有高的扇出,則要添加緩存器來增強驅(qū)動能力,但這會增大信號的時延。 通過邏輯復(fù)制,使用多個相同的信號來分擔(dān)驅(qū)動任務(wù)。這樣,每路信號的扇出就會變低,就不需要額外的緩沖器來增強驅(qū)動,即可減少信號的路徑延遲。,●,,第五章,,,VHDL高級設(shè)計技術(shù)-邏輯復(fù)制,通過邏輯單元的復(fù)制,減少扇出數(shù),可以解

9、決下面兩個方面的問題:減少網(wǎng)絡(luò)延遲;多個器件分布在不同的區(qū)域,這樣可以大大降低布線阻塞情況的發(fā)生。 在使用增加器件減少扇出數(shù)目的時候,必須要注意的是,如果是異步單元的話,必須對該單元進行同步處理。,●,,第五章,,,VHDL高級設(shè)計技術(shù)-邏輯復(fù)制,●,,第五章,VHDL高級設(shè)計技術(shù)-邏輯復(fù)用技術(shù),邏輯復(fù)用是指在完成相同的功能下,盡量減少所使用的邏輯單元的數(shù)目。這樣在不影響設(shè)計性能的情況下,可以降低資源的使用。下面通

10、過一個乘法器的例子來說明這個問題。,●,,第五章,,VHDL高級設(shè)計技術(shù)-邏輯復(fù)用技術(shù),●,,第五章,VHDL高級設(shè)計技術(shù)-邏輯復(fù)用技術(shù),先選擇后乘法的結(jié)構(gòu),在實現(xiàn)這樣一個功能時需要使用兩個乘法器和一個選擇器,對該結(jié)構(gòu)進行觀察可以發(fā)現(xiàn),在該設(shè)計中被乘數(shù)都是B,只有乘數(shù)是不一樣的,那么可以在不影響該設(shè)計實現(xiàn)的功能的前提下,可以考慮將系統(tǒng)改為先選擇后相乘的結(jié)構(gòu)采用該結(jié)構(gòu),在實現(xiàn)相同功能的前提下,所使用的乘法器數(shù)目由2個減少為1個。

11、 從該設(shè)計可以看出,在進行設(shè)計時,如果對設(shè)計進行優(yōu)化,很多的功能都可以通過邏輯復(fù)用技術(shù),提高設(shè)計效率和減少邏輯資源消耗量。,●,,第五章,,,VHDL高級設(shè)計技術(shù)-并行處理技術(shù),串行設(shè)計是最常見的一種設(shè)計。當(dāng)一個功能模塊對輸入的處理是分步驟進行的,而且后一步驟只依賴于前一步驟的結(jié)果時,功能模塊的設(shè)計就需要采用串行設(shè)計的思想。 并行處理就是采用幾個處理流程同時處理到達的負(fù)載,提高處理的效率。并行處理

12、要求這些處理任務(wù)之間是不相關(guān)的,彼此之間是不互相依賴的,如果存在相互依賴就很難用并行處理的方法。,●,,第五章,,,VHDL高級設(shè)計技術(shù)-并行處理技術(shù),,,●,,第五章,VHDL高級設(shè)計技術(shù)-并行處理技術(shù),下面以一個復(fù)雜的乘法運算為例,說明并行處理技術(shù)的使用。 首先給出該運算的數(shù)學(xué)表達式 , 下圖給出了實現(xiàn)該功能的并行結(jié)構(gòu)(該結(jié)構(gòu)由XST綜合工具給出。通過使用多個乘法器,使得四個乘法運算可以

13、同時進行,但是需要注意的,這種速度的提高是以面積為代價的。,,●,,第五章,,,,VHDL高級設(shè)計技術(shù)-并行處理技術(shù),●,,第五章,VHDL高級設(shè)計技術(shù)- 并行乘法加法的HDL描述,[例5-2]乘法加法運算的實現(xiàn)則用VHDL語言描述如下:Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Use ieee.std_logic_arit

14、h.all;Entity mult_add is Port( clk : in std_logic; a0,a1,a2,a3 : in std_logic_vector(7 downto 0); b0,b1,b2,b3 : in std_logic_vector(7 downto 0); y : out std

15、_logic_vector(15 downto 0));end multadd;,●,,第五章,VHDL高級設(shè)計技術(shù)- 并行乘法加法的HDL描述,architecture behav of mult_add isbegin process(clk) begin if rising_edge(clk) then y<=((a0*b0)+(a1*b1)+(a2*b2)+(a3*b3)); e

16、nd if; end process;end behav;,●,,第五章,VHDL高級設(shè)計技術(shù)-流水線設(shè)計技術(shù)的使用,采用這樣的流水線設(shè)計從宏觀上來看平均每一個事件的處理時間為一個單位時間。流水線的設(shè)計要求事件所分成的這n個步驟的處理時間是相同的,以保證流水線不會因為處理時間的不同而發(fā)生阻塞,見圖5.2.2.3。,●,,第五章,,VHDL高級設(shè)計技術(shù)-流水線設(shè)計技術(shù)的使用,采用流水線設(shè)計的好處實在不提高系統(tǒng)運行頻率的情況

17、下,能夠獲得更好的處理效率。受制造工藝的影響,提高系統(tǒng)頻率將會增加后端制造的難度。同時由于需要使用更先進的制造工藝,以及產(chǎn)品頻率的下降,將會帶來產(chǎn)品成本的提高。,●,,第五章,,VHDL高級設(shè)計技術(shù)-流水線設(shè)計技術(shù)的使用,如果假設(shè)在串行設(shè)計中系統(tǒng)處理效能正比于系統(tǒng)運行的頻率,那么對于流水線設(shè)計,在不提高系統(tǒng)運行頻率的情況下,n級流水線的處理效能可以用下面公式來描述: 處理效能=系統(tǒng)運行頻率×流水線級數(shù),●,

18、,第五章,,VHDL高級設(shè)計技術(shù)-流水線設(shè)計技術(shù)的使用,由此可見,在不提高系統(tǒng)運行頻率的情況下,提高流水線的級數(shù)將成倍地提高系統(tǒng)處理的效能。但是流水線的設(shè)計也是有一定的限制的: (1)只有對那些能分成n個步驟完成,并且對每個步驟都需要固定相同處理時間的操作來說才能采用流水線設(shè)計;,●,,第五章,,VHDL高級設(shè)計技術(shù)-流水線設(shè)計技術(shù)的使用(約束),(2)受硬件資源的限制,流水線的級數(shù)是有限制的; (3)對于

19、存在處理分支預(yù)測流水線的設(shè)計(廣泛應(yīng)用于微處理器的設(shè)計中),流水線的處理效能還要取決于分支預(yù)測算法的設(shè)計。,●,,第五章,VHDL高級設(shè)計技術(shù)-流水線設(shè)計技術(shù)的使用,流水線能動態(tài)地提升器件性能,它的基本思想是對經(jīng)過多級邏輯的長數(shù)據(jù)通路進行重新構(gòu)造,把原來必須在一個時鐘周期內(nèi)完成的操作分成在多個周期內(nèi)完成。,●,,第五章,,VHDL高級設(shè)計技術(shù)-流水線設(shè)計技術(shù)的使用,這種方法允許更高的工作頻率,因而提高了數(shù)據(jù)吞吐量。

20、 因為PLD的寄存器資源非常豐富,所以對PLD設(shè)計而言,流水線是一種先進的而又不耗費過多器件資源的結(jié)構(gòu)。 但是采用流水線后,數(shù)據(jù)通道將會變成多時鐘周期,所以要特別考慮設(shè)計的其余部分,解決增加通路帶來的延遲。,●,,第五章,,,,VHDL高級設(shè)計技術(shù)-流水線設(shè)計技術(shù)的使用(特點),流水線的基本結(jié)構(gòu)是將適當(dāng)劃分的N個操作步驟串連起來。流水線操作的最大特點是數(shù)據(jù)流在各個步驟的處理,從時間上看是連續(xù)的;

21、 其操作的關(guān)鍵在于時序設(shè)計的合理安排、前后級接口間數(shù)據(jù)的匹配。如果前級操作的時間等于后級操作的時間,直接輸入即可; 如果前級操作時間小于后級操作時間,則需要對前級數(shù)據(jù)進行緩存,才能輸入到后級;如果前級操作時間大于后者,則需要串并轉(zhuǎn)換等方法進行數(shù)據(jù)分流,然后再輸入到下一級。,●,,第五章,,,,VHDL高級設(shè)計技術(shù)-流水線乘法器的VHDL描述,首先給出流水線乘法器的結(jié)構(gòu)圖。從圖中可以看出,該流水線乘法器,在

22、每個時鐘節(jié)拍下,均可以得到一個乘法結(jié)果的輸出,乘法器的效率大大增加。,●,,第五章,,VHDL高級設(shè)計技術(shù)-流水線乘法器的VHDL描述,library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;entity multipliers_2 isgeneric(A_port_size : integer := 18; B_port_s

23、ize : integer := 18); port(clk : in std_logic; A : in unsigned (A_port_size-1 downto 0); B : in unsigned (B_port_size-1 downto 0); MULT : out unsigned ( (A_port_size+B_port_size-1) downto 0));

24、 attribute mult_style: string; attribute mult_style of multipliers_2: entity is "pipe_lut"; end multipliers_2;,●,,第五章,VHDL高級設(shè)計技術(shù)-流水線乘法器的VHDL描述,architecture beh of multipliers_2 is signal a_in

25、, b_in : unsigned (A_port_size-1 downto 0); signal mult_res : unsigned ( (A_port_size+B_port_size-1) downto 0); signal pipe_1,pipe_2,pipe_3 : unsigned ((A_port_size+B_port_size-1) downto 0); begin mul

26、t_res <= a_in * b_in;,●,,第五章,VHDL高級設(shè)計技術(shù)-流水線乘法器的VHDL描述,process (clk)begin if (clk'event and clk='1') then a_in <= A; b_in <= B; pipe_1 <= mult_res;

27、pipe_2 <= pipe_1; pipe_3 <= pipe_2; MULT <= pipe_3; end if;end process;end beh;,●,,第五章,VHDL高級設(shè)計技術(shù)-系統(tǒng)同步單元,PLD內(nèi)部由大量的電路單元組成,但是這些單元通常都是由有限的幾種不同的邏輯單元或是邏輯門構(gòu)成的。每一種邏輯單元包含輸入信號以及輸出信號,輸出信號又作為其他邏

28、輯單元的輸入信號。 從邏輯層面的抽象來看,一個PLD器件看成數(shù)量眾多的邏輯門構(gòu)成的網(wǎng)絡(luò),這些邏輯門的輸入和輸出通過金屬導(dǎo)線相連構(gòu)成了完成特定邏輯功能或是算法的網(wǎng)絡(luò)。在PLD芯片內(nèi)部,成百上千萬的邏輯門之間的信號傳遞決定了邏輯門的時延以及系統(tǒng)最后的運行速度。,●,,第五章,,,VHDL高級設(shè)計技術(shù)-系統(tǒng)同步單元,集成電路系統(tǒng)中有些信號的傳遞可以同時進行,但是有的信號的傳遞必須遵循嚴(yán)格的先后關(guān)系,這

29、樣才能保證系統(tǒng)運行結(jié)果的正確性(也就是說系統(tǒng)運行的結(jié)果是可以被重復(fù)的,系統(tǒng)在確定條件下運行的結(jié)果是確定的,而不是隨機的)。這就需要同步(Synchronization)來保證電路的各個部分的邏輯處理按照特定的順序進行。,●,,第五章,,VHDL高級設(shè)計技術(shù)-系統(tǒng)同步單元,同步電路和異步電路的區(qū)別在于電路觸發(fā)是否與驅(qū)動時鐘同步,從行為上講,就是所有電路是否在同一時鐘沿的觸發(fā)下同步地處理數(shù)據(jù)。 常用于區(qū)分二者的典型電路

30、就是同步復(fù)位和異步復(fù)位電路。同步復(fù)位的代碼中只有時鐘沿一個觸發(fā)條件,但是異步復(fù)位代碼中語句有復(fù)位和時鐘沿兩個觸發(fā)條件。,●,,第五章,,,VHDL高級設(shè)計技術(shù)-系統(tǒng)同步單元,通常情況下,同步電路采用的都是全同步,圖5.1.1(a)就是一個全同步的例子, 第一部分是由邏輯門組成的組合邏輯部分; 第二部分稱為時鐘驅(qū)動存儲單元;簡單的說就是寄存器,用于存儲組合邏輯的輸出結(jié)果;

31、 第三部分是時鐘分配網(wǎng)絡(luò),這一部分特殊的電路不參與實際的運算,而是產(chǎn)生并分配參考時鐘,這一部分電路關(guān)心的是如何產(chǎn)生控制整個同步電路的時鐘并將時鐘正確地分配到每一個寄存器。,●,,第五章,,,,,VHDL高級設(shè)計技術(shù)-系統(tǒng)同步單元,同樣以圖5.1.1(a)為例,同步系統(tǒng)中包括由組合邏輯部分完成的邏輯運算以及由存儲單元對于邏輯運算結(jié)果的存儲: 實際的存儲過程由時鐘信號控制,并發(fā)生在信號從邏輯門的輸出端輸出穩(wěn)定后。該模

32、型中在每個時鐘周期的開始時,輸入信號以及存儲單元存儲的數(shù)據(jù)輸入組合邏輯,經(jīng)過一定邏輯門以及傳輸?shù)臅r延后,組合邏輯產(chǎn)生結(jié)果輸出并保持穩(wěn)定,在這個時鐘周期的末尾將輸出組合邏輯的結(jié)果并存入存儲單元,并在下一個時鐘周期重新參加組合邏輯的操作。,●,,第五章,,,VHDL高級設(shè)計技術(shù)-系統(tǒng)同步單元,●,,第五章,VHDL高級設(shè)計技術(shù)-系統(tǒng)同步單元,因此,數(shù)字系統(tǒng)可以看成是由一系列同時執(zhí)行的由組合邏輯構(gòu)成的計算單元組成的。如圖5.1.1(b)所示的

33、本地數(shù)據(jù)通路就是對這種概念的抽象。從圖中可以看出,組合邏輯的時延被限制在一個時鐘周期內(nèi)。在此本地數(shù)據(jù)通路起始端,寄存器Ri是存儲單元,用于在時鐘周期開始的時候給組合邏輯提供部分或是全部的輸入信號,同時在本地數(shù)據(jù)通路的末端,組合邏輯的結(jié)果在時鐘周期的末尾被正確地鎖存于寄存器Rf中。在本地數(shù)據(jù)通路中,每一個寄存器既是組合邏輯的輸入端—數(shù)據(jù)的提供源,也是組合邏輯的輸出端—輸出數(shù)據(jù)的接收者,這取決于系統(tǒng)處于運行的哪個階段。,●,,第五章,,VH

34、DL高級設(shè)計技術(shù)-系統(tǒng)同步單元,同步系統(tǒng)具有很好的可控性,這是因為系統(tǒng)時鐘提供了一種時間窗的機制保證可有足夠的時間讓信號在邏輯門以及邏輯門之間的連線上傳播,并最后成功鎖存于寄存器。 在設(shè)計系統(tǒng)和選擇正確的時鐘周期時,要滿足以下這兩個矛盾的需求: 1、希望系統(tǒng)的時鐘周期盡可能短,這樣在固定的時間內(nèi)運算邏輯電路可以進行更多次的運算; 2、需要保證時鐘定義的時間窗足夠長以保證組合邏輯

35、的輸出信號都能在當(dāng)前時鐘周期結(jié)束前以及下一個時鐘周期開始前到達目標(biāo)寄存器。,●,,第五章,,,,,VHDL高級設(shè)計技術(shù)-系統(tǒng)同步單元,同步系統(tǒng)具有以下的優(yōu)點使得它成為數(shù)字集成電路系統(tǒng)的首選: (1)同步系統(tǒng)易于理解,并且同步系統(tǒng)中的各個參數(shù)以及變量都十分的明確,例如對于不同運算單元的執(zhí)行的先后順序是確定的; (2)同步系統(tǒng)可以減少非確定因素諸如組合邏輯的時延(受系統(tǒng)運行的環(huán)境、負(fù)載以及輸入信號的向量組合等

36、的影響)對系統(tǒng)的影響,這就保證了系統(tǒng)按照確定的行為運行,并且保證系統(tǒng)正確執(zhí)行了設(shè)計的算法;,●,,第五章,,,,VHDL高級設(shè)計技術(shù)-系統(tǒng)同步單元,(3)同步系統(tǒng)中不需要關(guān)心組合邏輯的輸出毛刺,因為寄存器只有在時鐘的有效沿上才對組合邏輯的輸出進行采樣,而同步系統(tǒng)可以確保這時組合邏輯的輸出已經(jīng)沒有毛刺。 (4)同步系統(tǒng)的狀態(tài)完全由存儲單元中所存儲的數(shù)據(jù)所決定,這大大簡化了系統(tǒng)的設(shè)計、調(diào)試以及測試。,●,,第五章,,,VHD

37、L高級設(shè)計技術(shù)-系統(tǒng)同步單元,當(dāng)然,同步系統(tǒng)也存在著下面一些缺點使得今天的同步大規(guī)模集成電路設(shè)計變得更加富有挑戰(zhàn)性: (1)同步系統(tǒng)要求系統(tǒng)中的所有電路通路以其中最慢的一條寄存器到寄存器通路的標(biāo)準(zhǔn)來工作(這也就是說,同步系統(tǒng)中系統(tǒng)工作的速度取決于這些通路上具有最大時延的組合邏輯,包含這樣組合邏輯的通路稱為最壞情況下的關(guān)鍵路徑。,●,,第五章,,,VHDL高級設(shè)計技術(shù)-系統(tǒng)同步單元,在通常的大規(guī)模集成電路系統(tǒng)中,大多數(shù)的

38、路徑都具有更小的時延,也就是可以采用更小的時鐘周期。但是那些具有最大時延的路徑限制了系統(tǒng)時鐘周期的長短,同時也引入了對于整個系統(tǒng)速度的限制。有時候這種通路上時延的非對稱性是如此的富有戲劇性,以致于整個系統(tǒng)的速度僅僅取決于少數(shù)幾條速度非常慢的路徑)。,●,,第五章,,VHDL高級設(shè)計技術(shù)-系統(tǒng)同步單元,(2)同步系統(tǒng)中,時鐘信號需要被分配到數(shù)以萬計的分布于系統(tǒng)各個地方的存儲寄存器中,因此系統(tǒng)中很大一部分的面積以及耗散的電能都被用于時鐘分配

39、網(wǎng)絡(luò)—并不參與實際的計算功能的電路。 (3)同步系統(tǒng)的可靠性依賴于對于系統(tǒng)時延要求(包括組合邏輯以及由電路互聯(lián)線產(chǎn)生)的正確估計,如果系統(tǒng)不能滿足時延要求,將造成系統(tǒng)的不穩(wěn)定甚至是不可用。,●,,第五章,,,VHDL高級設(shè)計技術(shù)-系統(tǒng)同步單元,綜上所述,因此同步電路的設(shè)計應(yīng)遵循以下準(zhǔn)則: 1)盡量在設(shè)計中使用單時鐘,且走全局時鐘網(wǎng)絡(luò)。 在單時鐘設(shè)計中,很容易就將整個設(shè)計同步于驅(qū)動時鐘,使設(shè)計得到簡化

40、。全局時鐘網(wǎng)絡(luò)的時鐘是性能最優(yōu),最便于預(yù)測的時鐘,具有最強的驅(qū)動能力,不僅能保證驅(qū)動每個寄存器,且時鐘漂移可以忽略。在多時鐘應(yīng)用中,要做到局部時鐘同步。,●,,第五章,,VHDL高級設(shè)計技術(shù)-系統(tǒng)同步單元,在實際工程中,應(yīng)將時鐘信號和復(fù)位信號通過FPGA芯片的專用全局時鐘引腳送入,以獲得更高質(zhì)量的時鐘信號。 2)盡量避免使用混合時鐘沿來采樣數(shù)據(jù)或驅(qū)動電路。 使用混合時鐘沿將會使靜態(tài)時序分析復(fù)雜,并導(dǎo)致電路工作頻

41、率降低。,●,,第五章,VHDL高級設(shè)計技術(shù)-系統(tǒng)同步單元,3)避免使用門控時鐘。 如果一個時鐘節(jié)點由組合邏輯驅(qū)動,那么就形成了門控時鐘,門控時鐘常用來減少功耗,但其相關(guān)的邏輯不是同步電路,即可能帶有毛刺,而任何的一點點小毛刺都可以造成D觸發(fā)器誤翻轉(zhuǎn);此外,門控邏輯會污染時鐘質(zhì)量,產(chǎn)生毛刺,并惡化偏移和抖動等指標(biāo)。所以門控時鐘對設(shè)計可靠性有很大影響,應(yīng)盡可能避免。 4)盡量不要在模塊內(nèi)部使用計數(shù)器分頻產(chǎn)生所需時鐘。,

42、●,,第五章,VHDL高級設(shè)計技術(shù)-異步單元,但是在實際的設(shè)計過程中,不可避免的要接觸到異步單元,比如在設(shè)計模塊與外圍芯片的通信中,跨時鐘域的情況經(jīng)常不可避免。 異步時序單元指的是在設(shè)計中有兩個或兩個以上的時鐘,且時鐘之間是不同頻率或同頻不同相的關(guān)系。而異步時序設(shè)計的關(guān)鍵就是把數(shù)據(jù)或控制信號正確地進行跨時鐘域傳輸。 每一個觸發(fā)器都有其規(guī)定的建立(setup)和保持(hold)時間參數(shù)。在這個時間

43、參數(shù)內(nèi),輸入信號在時鐘的上升沿是不允許發(fā)生變化的。如果信號的建立時間中對其進行采樣,得到的結(jié)果將是不可預(yù)知的,即亞穩(wěn)態(tài)。,●,,第五章,,,,VHDL高級設(shè)計技術(shù)-異步單元,●,,第五章,VHDL高級設(shè)計技術(shù)-異步單元,常用的同步策略,如雙鎖存器法、結(jié)繩法等,而作為異步時序設(shè)計中的重點—異步FIFO設(shè)計。 為了避免亞穩(wěn)態(tài)問題,通常采用的方法是雙鎖存器法,即在一個信號進入另一個時鐘域之前,將該信號用兩個鎖存器連續(xù)鎖存兩

44、次,最后得到的采樣結(jié)果就可以消除亞穩(wěn)態(tài)問題。>>b_clka_clkdata_datb_dat11b_dat2>b_dat1數(shù)據(jù)變化靜態(tài)同步a_datb_dat2,●,,第五章,,,VHDL高級設(shè)計技術(shù)-邏輯結(jié)構(gòu)的設(shè)計方法,邏輯結(jié)構(gòu)主要分為鏈狀結(jié)構(gòu)(Chain Architecture)和樹狀結(jié)構(gòu)(Tree Architecture)。一般來講,鏈狀結(jié)構(gòu)具有較大的時延,后者具有較小的時延。所謂的鏈狀結(jié)構(gòu)主要指程

45、序是串行執(zhí)行的,樹狀結(jié)構(gòu)是串并結(jié)合的模式,具體如例3-7所示。表3-3給出具有鏈狀結(jié)構(gòu)和樹狀結(jié)構(gòu)的4輸入加法器的實現(xiàn)實例。,●,,第五章,,VHDL高級設(shè)計技術(shù)-邏輯結(jié)構(gòu)的設(shè)計方法,●,,第五章,VHDL高級設(shè)計技術(shù)-邏輯結(jié)構(gòu)的設(shè)計方法,從上例可以明顯看出樹狀結(jié)構(gòu)的優(yōu)勢,它能夠在同等資源的情況下,縮減運算時延,從而提高電路吞吐量以節(jié)省面積。在書寫代碼時,要盡量采用樹狀結(jié)構(gòu),以減少時間延遲。,●,,第五章,,VHDL高級設(shè)計技術(shù)-i

46、f和case語句的使用,if語句指定了一個有優(yōu)先級的編碼邏輯,而case語句生成的邏輯是并行的,不具有優(yōu)先級。 if語句可以包含一系列不同的表達式,而case語句比較的是一個公共的控制表達式。 if-else結(jié)構(gòu)速度較慢,但占用的面積小,如果對速度沒有特殊要求而對面積有較高要求,則可用if -else語句完成編解碼。 case結(jié)構(gòu)速度較快,但占用面積較大,所以用case語句實現(xiàn)對速度要求較高

47、的編解碼電路。,●,,第五章,VHDL高級設(shè)計技術(shù)-if和case語句的使用,嵌套的if語句如果使用不當(dāng),就會導(dǎo)致設(shè)計的更大延時,為了避免較大的路徑延時,最好不要使用特別長的嵌套if結(jié)構(gòu)。如想利用if語句來實現(xiàn)那些對延時要求苛刻的路徑時,應(yīng)將最高優(yōu)先級給最遲到達的關(guān)鍵信號。 有時為了兼顧面積和速度,可以將if和case語句合用。,●,,第五章,VHDL高級設(shè)計技術(shù)-關(guān)鍵路徑信號處理,在VHDL設(shè)計中,經(jīng)常會遇到由于信號

48、路徑過長或信號來的比較晚,從而造成建立時間不夠的情況。這種引起電路建立時間不夠的信號路徑就稱為關(guān)鍵路徑。在復(fù)雜電路設(shè)計必須有效地處理關(guān)鍵信號,盡量減少其時延,提高電路的工作頻率。,●,,第五章,VHDL高級設(shè)計技術(shù)-簡單組合電路關(guān)鍵路徑的提取方法,簡單組合電路的關(guān)鍵路徑提取方法就是拆分邏輯,將復(fù)雜邏輯變成多個簡單組合電路的進一步組合,縮減關(guān)鍵信號的邏輯級數(shù),如例3-10所示。例3-10 簡單關(guān)鍵電路的提取實例。對于語句:

49、 y <= a and b and c or d and e and b; 從中可以看出,信號b為關(guān)鍵信號?,F(xiàn)將其簡單路徑計算,再經(jīng)過關(guān)鍵路徑邏輯。 temp<= a and b and c and d; y = b and temp; 通過關(guān)鍵路徑提取,將信號b的路徑由2級變成1級。拆分邏輯可通過復(fù)制邏輯,縮短那些組合路徑長的關(guān)鍵信號的路徑延遲,從

50、而提高工作頻率。,●,,第五章,VHDL高級設(shè)計技術(shù)-復(fù)雜觸發(fā)塊中關(guān)鍵路徑的提取方法,對于觸發(fā)模塊中時間要求非常緊的信號,需要通過分布提取方法,讓關(guān)鍵路徑先行,保證改寫后的描述與原觸發(fā)塊邏輯等效。例3-11給出了提取并改善always模塊中關(guān)鍵信號的實例。,●,,第五章,VHDL高級設(shè)計技術(shù)-復(fù)雜觸發(fā)塊中關(guān)鍵路徑的提取方法,Process(w,x,y,z,in1,in2) Begin if(w=’0’) then

51、 if(x and (not(y and z))) then out<=in1; else out<=in2; end if; elsif(y and z) then out<=in1; else out<=’0’; end if; end process;,

52、●,,第五章,VHDL高級設(shè)計技術(shù)-復(fù)雜觸發(fā)塊中關(guān)鍵路徑的提取方法,其中,若z=0,則原代碼等效于if (!w) out <= in1; else out< =’0’;。若z=1,則源代碼等效于if (!w && x && !y ) out<= in1; else if(!w && x && y) out<= in2; else out<=

53、out;。對于信號y也有類似的分析結(jié)果,因此y、z都是關(guān)鍵信號。因此通過優(yōu)先首先計算關(guān)鍵路徑,改寫為:,●,,第五章,VHDL高級設(shè)計技術(shù)-復(fù)雜觸發(fā)塊中關(guān)鍵路徑的提取方法,emp = y and z; Process(w,x,y,z,in1,in2) Begin if(temp=’0’) then if(x and (not w)) then Out<=in1; else Out<=in2;

54、 end if; elsif(temp=’1’) then out<=in1; else out<=’0’; end process;,●,,第五章,VHDL高級設(shè)計技術(shù)-由if語句造成的意外的鎖存器,【例3-12】給出使用if語句,但缺乏else分支而造成鎖存器的情況。 Process(a,data) Begin If(a=1) then data_out<=data

55、_in; end if;End process;,●,,第五章,VHDL高級設(shè)計技術(shù)-由if語句造成的意外的鎖存器,【例3-12】給出了使用if語句,不缺少else分支而不會造成鎖存器的情況。Process(a,data) Begin If(a=1) then data_out<=data_in; else data_out<=’0’; end if;End pro

56、cess;,●,,第五章,VHDL高級設(shè)計技術(shù)-由case語句造成的鎖存器,【例3-13】給出了在process塊中使用case語句,由于缺乏others分支的VHDL描述。 Process(a,data_in1,data_in2)begin case a is when “00”=> data_out data_out; end case;end process;,●,,第五章,VHDL高級設(shè)計技術(shù)-

57、由case語句造成的鎖存器,【例3-13】給出了在process塊中使用case語句,加入others分支的VHDL描述。 Process(a,data_in1,data_in2)begin case a is when “00”=> data_out data_outdata_out<=’0’; end case;end process;,●,,第五章,VHDL高級設(shè)計技術(shù)-模塊劃分的設(shè)計原則,自頂

58、向下的層次化設(shè)計方法中最關(guān)鍵的工作就是模塊劃分,將一個很大的工程合理地劃分為一系列功能獨立的部分,且具備良好的協(xié)同設(shè)計能力,以便快速地實現(xiàn)整個設(shè)計。 此外,模塊劃分直接影響到所需的邏輯資源、時序要求以及實現(xiàn)效率。其基本的原則如下所示:,●,,第五章,VHDL高級設(shè)計技術(shù)-模塊劃分的設(shè)計原則,1、信息隱蔽、抽象原則 上一層模塊只負(fù)責(zé)為下一層模塊的工作提供原則和依據(jù),并不規(guī)定下層模塊的具體行為,以保證各

59、個模塊的相對獨立性和內(nèi)部結(jié)構(gòu)的合理性,使得模塊之間層次分明,易于理解、實施和維護。 2、明確性原則 每個模塊必須功能明確,接口明確消除多重功能和無用接口,整個設(shè)計過程中應(yīng)具有統(tǒng)一的命名規(guī)范。,●,,第五章,VHDL高級設(shè)計技術(shù)-模塊劃分的設(shè)計原則,3、模塊時鐘域區(qū)分原則 在設(shè)計中,經(jīng)常采用多時鐘設(shè)計,必然存在亞穩(wěn)態(tài),如果處理不當(dāng),將會給設(shè)計的可靠性帶來極大的隱患。這里需要通過

60、異步FIFO以及雙口RAM來建立接口,盡量避免讓信號直接跨越不同時鐘域。此外,由于時鐘頻率不同,其時序約束需求也不同,可以將低頻率時鐘域劃分到同一模塊,如多時鐘路徑等,則可以讓綜合器盡量節(jié)約面積。,●,,第五章,VHDL高級設(shè)計技術(shù)-模塊劃分的設(shè)計原則,4、資源復(fù)用原則 在HDL設(shè)計中,要將可以復(fù)用的邏輯或者相關(guān)邏輯盡量放在同一模塊,不僅可以節(jié)省硬件資源,還有利于優(yōu)化關(guān)鍵路徑。但在實際中,不能為了資源復(fù)用而將

61、存儲器邏輯混用。因為FPGA芯片生產(chǎn)商提供了各類存儲器的硬件原語,使設(shè)計所需資源最小化。從概念上講,模塊越大越利于資源共享和復(fù)用,但龐大的模塊在仿真驗證時需要較長的時間和較高的PC機配置,不利于修改,無法使用增量設(shè)計模式。,●,,第五章,VHDL高級設(shè)計技術(shù)-模塊劃分的設(shè)計原則,5、同步時序模塊的寄存器劃分原則 即在設(shè)計時,盡量將模塊中的同步時序邏輯輸出信號以寄存器的形式送出,便于綜合工具區(qū)分時序和組合邏輯;

62、并且時序輸出打寄存器符合流水線設(shè)計思想,能工作在更高的頻率,極大地提高模塊吞吐量。,●,,第五章,VHDL高級設(shè)計技術(shù)-IP核技術(shù),現(xiàn)在的FPGA設(shè)計,規(guī)模巨大而且功能復(fù)雜,設(shè)計人員不可能從頭開始進行設(shè)計?,F(xiàn)在采用的方式是,在設(shè)計中盡可能使用現(xiàn)有的功能模塊,除非沒有現(xiàn)成的模塊可以使用時,設(shè)計人員才需要自己花時間和精力設(shè)計新的模塊。 這些現(xiàn)有的功能模塊,EDA設(shè)計人員把他們通常稱為IP(intellectual Proper

63、ty)核。IP核來源主要有三個方面: (1)前一個設(shè)計創(chuàng)建的模塊; (2)FPGA生產(chǎn)廠商的提供; (3)第三方IP廠商的提供。,●,,第五章,VHDL高級設(shè)計技術(shù)-IP核的分類,IP(Intelligent Property)核是具有知識產(chǎn)權(quán)核的集成電路芯核總稱,是經(jīng)過反復(fù)驗證過的、具有特定功能的宏模塊,與芯片制造工藝無關(guān),可以移植到不同的半導(dǎo)體工藝中。到了SOC階段,IP核設(shè)計已成為ASIC電路設(shè)

64、計公司和FPGA提供商的重要任務(wù),也是其實力體現(xiàn)。 對于FPGA開發(fā)軟件,其提供的IP核越豐富,用戶的設(shè)計就越方便,其市場占用率就越高。目前,IP核已經(jīng)變成系統(tǒng)設(shè)計的基本單元,并作為獨立設(shè)計成果被交換、轉(zhuǎn)讓和銷售。,●,,第五章,VHDL高級設(shè)計技術(shù)-IP核的分類,從IP核的提供方式上,通常將其分為軟核、硬核和固核這3類。從完成IP核所花費的成本來講,硬核代價最大;從使用靈活性來講,軟核的可復(fù)用使用性最高。,●,,第五章

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

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

67、域指經(jīng)過驗證的設(shè)計版圖;具體在FPGA設(shè)計中指布局和工藝固定、經(jīng)過前端和后端驗證的設(shè)計,設(shè)計人員不能對其修改。不能修改的原因有兩個: 首先是系統(tǒng)設(shè)計對各個模塊的時序要求很嚴(yán)格,不允許打亂已有的物理版圖; 其次是保護知識產(chǎn)權(quán)的要求,不允許設(shè)計人員對其有任何改動。 IP硬核的不許修改特點使其復(fù)用有一定的困難,因此只能用于某些特定應(yīng)用,使用范圍較窄。,●,,第五章,VHDL高級設(shè)計技術(shù)-IP核的

68、優(yōu)化,最常見到的情況就是IP核的廠商從RTL級開始對IP進行人工的優(yōu)化。EDA的設(shè)計用戶可以通過下面的幾種途徑購買和使用IP模塊: (1)IP模塊的RTL代碼; (2)未布局布線的網(wǎng)表級IP核; (3)布局布線后的網(wǎng)表級IP核。,●,,第五章,VHDL高級設(shè)計技術(shù)-未加密的RTL級IP,在很少的情況下,EDA設(shè)計人員可以購買未加密的源代碼RTL級的IP模塊,然后將這些IP模塊集成到設(shè)計的RTL級代碼中。這些

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論