VHDL的可綜合性_第1頁
VHDL的可綜合性_第2頁
VHDL的可綜合性_第3頁
VHDL的可綜合性_第4頁
VHDL的可綜合性_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第六講 VHDL的可綜合性 6.1 VHDL語言結(jié)構(gòu)向硬件的映射語言結(jié)構(gòu)向硬件的映射 ?EDA工業(yè)界普遍認為,有效的VHDL建模風格是控制綜合結(jié)果最為有力的手段。 ?為了建立有效的VHDL代碼,設(shè)計師應(yīng)了解VHDL語言結(jié)構(gòu)與綜合結(jié)果的關(guān)系。 ?應(yīng)該指出的是,由于綜合算法的不同,對于同樣的硬件描述,不同的CAD綜合工具可能會得到不同的綜合結(jié)果。 VHDLVHDL語言在創(chuàng)立時,主要是為了滿足仿真的需要。自從語言在創(chuàng)立時,主要是為了滿足仿真的需要。自從VHDLVHDL被用于綜合以來,被用于綜合以來,都是對都是對VHDLVHDL的子集進行處理,這就是所謂的可綜合的的子集進行處理,這就是所謂的可綜合的V

2、HDLVHDL子集。不同綜合工具子集。不同綜合工具支持的可綜合子集不盡相同,通常有如下要求:支持的可綜合子集不盡相同,通常有如下要求: (1)延時描述延時描述(after語句、語句、wait for語句語句)等被忽略等被忽略。 仿真時,為了具備一定精度,往往在源代碼中含有延時語句。這些延時語仿真時,為了具備一定精度,往往在源代碼中含有延時語句。這些延時語句信況比較復(fù)雜,有時是最大延時約束,有時是典型經(jīng)驗值,還有些是人句信況比較復(fù)雜,有時是最大延時約束,有時是典型經(jīng)驗值,還有些是人為加入的,所以現(xiàn)在所有的綜合工具都忽略源代碼中的延時語句。有些工為加入的,所以現(xiàn)在所有的綜合工具都忽略源代碼中的延時

3、語句。有些工具干脆把這些語句處理為語法錯誤。大部分工具忽略延時語句后,給出警具干脆把這些語句處理為語法錯誤。大部分工具忽略延時語句后,給出警告提示。而綜合時間約束則在綜合過程中通過綜合命令輸入。告提示。而綜合時間約束則在綜合過程中通過綜合命令輸入。 (2)支持有限類型。支持有限類型。 VHDL具有豐富的類型定義,但是有些類型不具備硬件對應(yīng)物。不可能被綜合,如文件類型。通??删C合類型包括枚舉類型(包括自定義狀態(tài)、預(yù)定義Bit類型和IEEE 9值邏輯類型等)、整數(shù)、數(shù)組等。其余像浮點數(shù)類型、記錄類型等只得到有限支持而時間類型等完全不能被綜合。 (3)進程的書寫要服從一定的限制。進程的書寫要服從一定

4、的限制。 在仿真時,VHDL進程可以任意書寫。而在綜合時,通常要求一個進程內(nèi)只能有一個有效時鐘,有的工具還有進一步的限制。 (4)可綜合代碼應(yīng)該是同步式的設(shè)計??删C合代碼應(yīng)該是同步式的設(shè)計。 現(xiàn)在的EDA綜合工具普遍推薦使用同步式設(shè)計風格,即整個芯片電路的狀態(tài)只能在時鐘信號有效時發(fā)生改變,也就是說,電路狀態(tài)不會在僅有數(shù)據(jù)信號變化而時鐘處于無效狀態(tài)時改變,并且電路中的時鐘信號應(yīng)該都是從同一主時鐘經(jīng)過分頻或其他運算得到。當然設(shè)計師也可以嘗試其它風格的設(shè)計,如異步式電路,但這時綜合工具產(chǎn)生的結(jié)果往往還需要設(shè)計師的進一步優(yōu)化或調(diào)整 一、 VHDL類型類型 VHDLVHDL語言中的對象有常量語言中的對象

5、有常量 (constant)(constant)、信號、信號(signal)(signal)和變量和變量(variable)(variable)三種三種,它們都必須定義為如下某種類型。類型定義說明了對象可以使用的數(shù)值,并隱,它們都必須定義為如下某種類型。類型定義說明了對象可以使用的數(shù)值,并隱含表示了可以對其進行的操作。含表示了可以對其進行的操作。 1.1.可綜合類型可綜合類型 面向綜合的建摸都支持這樣一些類型:枚舉類型、整數(shù)、一維數(shù)組枚舉類型、整數(shù)、一維數(shù)組。比較先進的綜合工具現(xiàn)在一般也可以處理二維數(shù)組和簡單的記錄類型。 (1)核舉類型核舉類型 枚舉類型通過列出所有可能的取值來定義,例如: 以

6、上Std_ulogic的定義實際是對01 等字符進行了重載(overload),由于這個定義已經(jīng)成為IEEE標淮,并且描述的是電路連線的狀態(tài),因此綜合時并不會產(chǎn)生額外硬件。而對于抽象層次更高的BOOLEAN和State-type,則需要進行狀態(tài)編碼,這也是枚舉類型在綜合時最主要的問題,現(xiàn)在還沒有統(tǒng)一的方法解決。一般來說,狀態(tài)編碼是把狀態(tài)值編碼為位矢量位矢量(bit-Vector,Std-ulogic-Vector或Std-logic-vector),矢量長度是能夠表示所有狀態(tài)的最短位寬。例如,State-type的4個狀態(tài)值可以分別校編碼為“00” ,“01“ ,”10“ 和”11” ,Boo

7、lean類型編碼辦 0和 1。 (2)整數(shù)類型 可綜合的整數(shù)類型定義總是有界的總是有界的,例如: 對整數(shù)類型進行綜合時,綜合工具首先將其翻譯為位矢量,矢量長度仍取能夠滿足需要的最短位寬。如果使用默認的整數(shù)類型,大部分綜合工具按32位處理,因此,建議使用于類型定義(subtype)明確指出整數(shù)的范圍,以便于綜合工具進行優(yōu)化。如果是負整數(shù),通常編碼為正數(shù)的補碼。綜合后的電路中,整數(shù)以矢量形式出現(xiàn),但通常只能以整個矢量為單位訪問,即不能單獨訪問每一位。 (3)數(shù)組數(shù)組 現(xiàn)在綜合工具都能夠處理一維數(shù)組,例如 對于word類型,綜合工具通常將其綜合為總線。 MyRAM類型實際是二維的,這種用兩個一維數(shù)組

8、代替一個兩維數(shù)組是常用的綜合建模技巧?,F(xiàn)在先進的綜合工具如synospys DC可以將其綜合為RAM,一般綜合工具至少可以把它綜合為寄存器。 (4)記錄類型記錄類型 記錄類型在定義復(fù)雜數(shù)據(jù)類型時非常方便,能夠把不同數(shù)據(jù)類型的數(shù)據(jù)組織在一起統(tǒng)一訪問。但是,EDA工業(yè)界對綜合工具是否應(yīng)該支持記錄類型還沒有統(tǒng)一意見,因此大多數(shù)綜合工具不提供這種能力或只能把組合了簡單數(shù)據(jù)類型的記錄進行綜合。 2.可綜合子集可綜合子集 VHDLVHDL在在19891989年首次公布時,就提供了兩個程序包年首次公布時,就提供了兩個程序包 (package)(package):StandardStandard和和TextI

9、()TextI(),其中定義了各種預(yù)定義數(shù)據(jù)類型。這些預(yù)定義數(shù)據(jù)類型中,類,其中定義了各種預(yù)定義數(shù)據(jù)類型。這些預(yù)定義數(shù)據(jù)類型中,類型型IntegerInteger,BitBit,Bit-VectorBit-Vector,BooleanBoolean,CharacterCharacter和子類型和子類型NaturalNatural,PositivePositive是可綜合的。類型是可綜合的。類型FileFile,AccessAccess和和RealReal則不可被綜合。則不可被綜合。 1992年,IEEE頒布了標準程序包Std_logic_1164,其中定義了9值數(shù)據(jù)類型Std_ulogic,即

10、相應(yīng)的決斷類型Std_logic。在第4章也已經(jīng)介紹了這個程序包,這里從綜合的角度予以討論。9值數(shù)據(jù)類型定義如下: Type std_ulogic is( U,X,0,1,Z,W,L,H,- );0,1,Z,- 在仿真和綜合時的處理方式是一致的。 U和W在仿真是是未初始化狀態(tài),綜合時通常不必考慮?,F(xiàn)在”H和 L 在綜合時沒有統(tǒng)一的方法。仿真時,X表示未知態(tài);綜合時,X一般當作無關(guān)態(tài)處理,即等價于。 2004年,IEEE批準了一種修訂標準IEEE 1076.6-2004,該標準提供了VHDL RTL綜合子集的重要擴展。新改進版包括VHDL幾乎每一個特性,能被用于在RTL級進行建模并綜合。此外還包

11、括觸發(fā)器和鎖存器建模的擴展語義導(dǎo)引。用戶將能夠以多種不同風格編寫一個RTL模型,每一種都符合標準。此外,這項標準提供了極為重要的保證,即保證模型在眾多接受RTL輸入的不同工具之間的便攜性?!边@項標準化將最終幫助RTL確認。 主要支持以下類型綜合: a) BIT, BOOLEAN, BIT_VECTOR a) BIT, BOOLEAN, BIT_VECTOR b) CHARACTER and STRING b) CHARACTER and STRING c) INTEGER c) INTEGER d) STD_ULOGIC, STD_ULOGIC_VECTOR, STD_LOGIC, and S

12、TD_LOGIC_VECTOR d) STD_ULOGIC, STD_ULOGIC_VECTOR, STD_LOGIC, and STD_LOGIC_VECTOR e) SIGNED and UNSIGNED e) SIGNED and UNSIGNED 二二.VHDL.VHDL對象對象 VHDL語言中有三類對象,常量(常量(constantconstant),變量(),變量(VariableVariable),信號),信號(Signal)(Signal),它們是VHDL程序中的數(shù)據(jù)的載體。 1.常量 常量僅被計算一次。在很多情況下,可以通過使用常量引導(dǎo)綜合器獲得優(yōu)化的結(jié)果在綜合過程中,常量被

13、處理的方式很多,主要有下述情況。 a)當常量被用來描述真值表 、ROM等,或被用于信號賦值,常量在綜合時會形成對應(yīng)的硬件。 b)在常量作為算術(shù)運算的一個操作數(shù)出現(xiàn)時,綜合工具常會對這一算術(shù)運算實施特定的優(yōu)化措施。當然,這樣一來常量與綜合結(jié)果中的硬件就不是一一對應(yīng)了。例如,優(yōu)化綜合工具用左移一位實現(xiàn)乘 2操作,用右移一位實現(xiàn)除法操作。 c)常量在作為條件表達式的一部分(例如下面的代碼)時綜合工具會對整個語法結(jié)構(gòu)進行布爾優(yōu)化。 d)常量傳播。在下面的VHDL代碼中,由于數(shù)組ROM和ROM(5)的索引都是常數(shù),因此WORD4實際上也成為常數(shù),在進一步的優(yōu)化中,WORD4將作為常量被處理。這就是常量傳

14、播。 2.2.變量和信號變量和信號 變量和信號有著不同的仿真行為,同樣在綜合過程中,它們也會產(chǎn)生不同的結(jié)果。一般說來,盡量使用變量能夠獲得比較好的綜合結(jié)果,因為這樣做使得優(yōu)化的余地較大。但是,并不是所有的綜合工具都支持變量的綜合,這是需要特別注意的。同時,使用信號可以較好地保持綜合前后在 IO上的一致性(這里把進程內(nèi)對信號的讀寫統(tǒng)稱為 IO),而且在需要鎖存中間結(jié)果的時候,經(jīng)常有必要使用信號。 下面用一個例子來說明變量與信號的不同綜合結(jié)果,其源代碼如下。圖514分別是結(jié)構(gòu)體A和B對應(yīng)的綜合結(jié)果。 三、初值三、初值 VHDL中有三種初值;由類型或子類型定義可以得到的默認初值,定義對象時明確指定的

15、初值和進程入口處顯示地賦予對象的初值。 以上三種初值的前兩種只在仿真時有意義,在綜合時將被忽略。第三種形式將被綜合器處理,形成對應(yīng)電路。在集成電路設(shè)計中,復(fù)位時賦予各個信號初值是很有必要的,否則很有可能出現(xiàn)不定態(tài)。因此無論在仿真還是在綜合時,都建議使用系統(tǒng)化的方式給信號和變量賦初值,即上述的第三種形式。 四、運算符四、運算符 1.1.邏輯運算符邏輯運算符 邏輯運算符包括表54中的not和二元邏輯運算符,其操作數(shù)可以是bit和Std_logic等類型的標量或同長度的矢量對象,也可以是Boolean類型的對象。這些算符的綜合是直截了當?shù)?,直接調(diào)用邏輯門單元實現(xiàn)即可,但經(jīng)過優(yōu)化后,這些算符可能被合并

16、或改變。圖515是對下達VHDL代碼中邏輯運算符綜合的結(jié)果。 2.關(guān)系運算符 關(guān)系算符的綜合沒有統(tǒng)一的方法,綜合工具常利用被比較數(shù)的特點作特定的優(yōu)化。圖516是對”運算符綜合的例子。 3一元算術(shù)運算符 一元算術(shù)運算符有三個,即十,一和abs(取絕對值)。對前兩個算符,綜合工具大都可以用組合邏輯線路實現(xiàn),如圖517的例子。abs算符的處理比較復(fù)雜,大部分綜合工具尚不能提供支持。 4.二元算術(shù)運算符 現(xiàn)在的綜合工具,特別是高層次綜合工具,都能夠直接把十,一,運算綜合為相應(yīng)的運算線路,部分工具也支持除法運算。mod和rem算符通常不被綜合工具支持。如果使用IEEE頒布的標準算術(shù)運算程序包Std-lo

17、gic-arith,那么還可以直接描述對Bit或Std-logic類型的標量和矢量對象進行算術(shù)運算的電路,并進行綜合。通常在綜合過程中,綜合器先把運算符映射為相應(yīng)的加法器等綜合庫提供的專用運算部件,然后進行優(yōu)化,如果某些運算可以用簡單線路實現(xiàn),綜合器則用簡單線路取代專用運算部件。 5.運算符運算符 運算行為連接運算,通散用于把一組對象捆綁在一起。由于直到1992年VHDL才引入移位算符,所以也常用連接運算實現(xiàn)移位運算。綜合時,一般是在信號之間提供額外的連線實現(xiàn)這一運算。 6.移位運算 移位運算符是1992年VHDL再次修訂后引入的特征,在綜合時有兩種處理方式。對于經(jīng)過鎖存的矢量對象,可以在鎖存

18、器之間引入附加的數(shù)據(jù)通路來實現(xiàn);對于不需要鎖存的矢量對象,處理方式與運算符相同。 五、順序語句五、順序語句 順序語句只能在進程中出現(xiàn),而且其出現(xiàn)順序直接影響到硬件行為。VHDL能夠描述非常復(fù)雜的數(shù)字電路,很大程度上是由于具有豐富的順序語句。 1變量賦值 變量的引入使得VHDL具備了極強的造型能力,能夠以類似軟件編程的方式描述硬件,特別是在行為綜合時,如果沒有變量,則描述復(fù)雜的ASIC行為幾乎是不可能的。 變量在綜合時要根據(jù)整體代碼決定其處理方式,主要有以下幾種方式:用寄存器鎖存變量,也就是說,變量經(jīng)過綜合后形成了寄存器,但是生命期不重疊的變量可以共享一個硬件寄存器;在邏輯優(yōu)化過程中被消去,即沒

19、有硬件對應(yīng)物;作為一根硬件連線出現(xiàn)(由組合邏輯輸出)。 2.2.信號賦值信號賦值 信號只能在同步語句(顯式或隱含的wait語句)之后改變狀態(tài)。通常,綜合后的信號賦值語句會被化簡為最簡形式。綜合工具處理信號的方式類似于變量,但有以下區(qū)別:如果信號需要寄存器鎖存,那么被鎖存的信號能與其他信號共享硬件寄存器;比較先進的綜合工具可以按照設(shè)計師的要求,決定是否保持綜合前后信號的一致性;出現(xiàn)在形如if CLK 1and CLK Event和thenend if之間或wait until CLK0and CLKEvent這樣的時鐘沿同步語句之后的信號都要被鎖存,而變量則不一定被鎖存。 3.if語句語句 if

20、語句是最頻繁出現(xiàn)的條件語句。在綜合時,if的處理分三種情況,下面分別討論。 (1)if語句(包括elseif, else)包含了條件所有可能的取值,稱之為完全if語句。這時綜合器用多路選擇器或基本邏輯門的組合來實現(xiàn)電路,如圖520和圖521所示,它們分別是下述進程P1和P2綜合得到的結(jié)果。用多路選擇器實現(xiàn)電路時,ifelseif.else中隱含的優(yōu)先關(guān)系會被消去,這是設(shè)計師應(yīng)該注意的。 (2)若if語句的條件末包含所有可能出現(xiàn)的情況,有效條件是對某信號的跳變進行檢測,并且在條件滿足時是對信號進行賦值操作,那么會生成觸發(fā)器。一般把如果賦值號右邊為一復(fù)雜表達式,則綜合器先用組合邏輯電路計算表達式,

21、計算結(jié)果送入觸發(fā)器的數(shù)據(jù)輸入。圖5.22是對下述進程FF進行寄存器推斷的例子。 觸發(fā)器和電平鎖存器通稱為寄存器,因此這實際上是所謂寄存器推斷的一種形式。(3)第三種情況與第二種類似。也屬于于不完全if語句,但有效條件只對信號值進行檢測,這時綜合器的處理方式也是類似的,只是換為用電平鎖存器實現(xiàn)寄存器。 4Case語句語句 case語句與多路選擇器電路的對應(yīng)關(guān)系是顯而易見的,但是,建摸時要注意合圖5.23是綜合下述VHDL代碼中case語句的一個例子,注意電路中CODE倍號已被編碼為矢量。 理使用無關(guān)態(tài)和others語句,否則會造成電路的復(fù)雜化,甚至導(dǎo)致形成時序電路。5循環(huán)語句循環(huán)語句 VHDL的

22、循環(huán)語句有三種:for循環(huán)、while循環(huán)和無限循環(huán)loop end loop,實際循環(huán)語句的處理是極其復(fù)雜的,第3章對此已作了介紹,這里從寄存器傳輸級的上,1oopend loop可以看作是循環(huán)條件永遠為真的while循環(huán)。在行為綜合中,角度加以討論。 在寄存器級進行綜合,要求for循環(huán)的上下界必須是靜態(tài)已知。例如下面給出了反之,第二段代碼則可以被綜合工具接受。這段代碼通過使用next語句,形成了一個選擇性的連線網(wǎng)絡(luò),如圖524所示。 兩段VHDL代碼,第一段代碼中,由于循環(huán)上界RG是動態(tài)對象,所以是不可綜合的。 VHDL定義了next和exit語句來中斷循環(huán)的正常執(zhí)行,現(xiàn)在的綜合工具都可以

23、處理這兩種語言結(jié)構(gòu)。固525是對下述VHDL代碼中的循環(huán)綜合的例子,這個電路對信號中的 1進行計數(shù),代碼中使用了exit語句。 6.子程序的調(diào)用子程序的調(diào)用 VHDL的子程序調(diào)用有函數(shù)和過程兩種形式。綜合時,比較先進的綜合工具允許設(shè)計師控制子程序展開子程序展開或是作為單獨模塊處理 。只有描述硬件行為的子。只有描述硬件行為的子程序才是可綜合的程序才是可綜合的,完成效據(jù)轉(zhuǎn)換的子程序和決斷函數(shù)將被綜合工具忽略。函數(shù)通常被綜合為組合邏輯電路,如果過程同時具備輸入和輸出參數(shù),并且內(nèi)部沒有wait語句,則綜合后形成組合邏輯電路,否則形成時序邏輯。 六、并行語句 VHDL的并行語句出現(xiàn)在結(jié)構(gòu)體內(nèi),可綜合的并

24、行語言結(jié)構(gòu)包括進程、并行賦值語句、塊語句、生成語句等。 1.進程進程 進程是VHDL中描述硬件行為最有力的方式。進程內(nèi)的語句屬于順序語句,而進程本身則屬于并行語句。進程的綜合是比較復(fù)雜的,主要有這祥一些問題:綜合后的進程是用組合邏輯還是時序邏輯電路實現(xiàn)?進程中的對象是否有必要用存儲器部件(主要指寄存器、觸發(fā)器、電平鎖存器或RAM)實現(xiàn)? 進程語句結(jié)構(gòu)需要至少一個同步控制點,否則除了初始化階段,永遠不會再次被激活。同步控制點表現(xiàn)在代碼中就是同步語句,同步語句可以是wait on(包括以敏感信號列表出現(xiàn)的隱含式wait on語句)或wait until。一般說來,只有一個同步點的進程,或者是具有多

25、個同步點、但是都使用完全相同的同步控制信號,當進程不帶要“記憶”在哪一個同步點上被掛起時,不會形成存儲器。例如下面的代碼所示。 進程中會形成存儲器的結(jié)構(gòu)還可能來自變量。有些變量純粹是運算的中間結(jié)果,即所謂工作變量。例如下述的代碼中的進程P1,不需要為變量配置寄存器或其他類型的存儲器,此時同步語句隱臺在進程兩次被激活的過程中。概括起來,如果兩個同步語句之間的某變量總是在被讀之前作為賦值的對象。則不會形成對應(yīng)的硬件。如果變量需要在進程掛起到下次被激活的過程中存儲數(shù)據(jù),則顯然需要形成硬件存儲器,例如下述代碼中的進程P2,這種情況可以概括為,在進程的兩個同步語句之間,如果至少有一個變量在作為賦值對象之

26、前被讀訪問至少一次,那么該變量需要硬件存儲器。 信號同樣可能在綜合后形成硬件。例如下面的代碼,綜合結(jié)果通常為一觸發(fā)器,這是因為雖然進程內(nèi)只有一個同步點,但是在進程兩次被激活的過程中,Q必須保持原來狀態(tài),即使D的狀態(tài)已經(jīng)發(fā)生改變。 如果進程綜合后的電路含有寄存器,那么自然就是時序電路。此外還有什么依據(jù)可以判定進程被綜合為時序電路呢? 概括地說,在以下兩種情況下,進程被綜合為時序電路: 進程中所有被讀訪問的信號不在敏感信號列表之內(nèi),如下面代碼的進程P1; 進程中至少有一個信號不是if或case中每種可能的分支上的賦值對象,如下面代碼中的進程P2的信號。 總結(jié)以上內(nèi)容,在下述條件同時滿足的情況下,進

27、程會被綜合為組合邏輯電路: (1)(1)進程有顯示定義的敏感信號列表或進程只有單一的同步控制點。進程有顯示定義的敏感信號列表或進程只有單一的同步控制點。 (2)(2)進程中不含有任何變量,或者有變量,但變量出現(xiàn)在讀操作之前進程中不含有任何變量,或者有變量,但變量出現(xiàn)在讀操作之前( (出現(xiàn)在出現(xiàn)在賦值號賦值號* *的左邊的左邊) );所有被讀訪問的信號都出現(xiàn)于敏感信號列表中;所有被讀訪問的信號都出現(xiàn)于敏感信號列表中; (3)3)進程中輸出的信號在進程中輸出的信號在“條件條件”的各種可能情況下都被賦值,且賦值號右邊的各種可能情況下都被賦值,且賦值號右邊不出現(xiàn)該信號不出現(xiàn)該信號。 2信號賦值語句 信

28、號賦值語句的處理是直截了當?shù)?,下面的語句(a)被綜合成一根硬連線;對于語句(b),R將被當作常數(shù)處理;語句(c)被綜合為組合邏輯電路。當然,語句(a)(c)經(jīng)過邏輯優(yōu)化后,可能改變形式或者被消去。 和3條件和選擇賦值語句條件和選擇賦值語句 VHDL的并行語句有兩種方式進行有條件的賦值,即條件賦值whenwhenelseelse和選擇賦值withwithselectselect.when.when。實際上這兩種語法結(jié)構(gòu)都可以改寫為等價的順序語句。例如下面的并行條件賦值(a)和進程P1內(nèi)的代碼是完全等價的。同時,可以看到進程也滿足用組合邏輯電路實現(xiàn)的特點,因此這段代碼在綜合后會用多選一網(wǎng)絡(luò)實現(xiàn),如

29、圖526所示。 4.元件例化語句元件例化語句 元件例化語句提供了使用以前建立的模塊的手段。在綜合過程中,提供綜合命令的控制。例化語句調(diào)用的元件可以用如下一些方式處理: (1)展平,即取消層次展平,即取消層次。把元件本身的描述代入上一級描述,然后整體進行綜合和優(yōu)化; (2)只把被例化元件綜合一次只把被例化元件綜合一次,然后遇到例化這一元件的語句均使用這一綜合結(jié)果,也就是說每遇到這個元件的例化語句均在綜合結(jié)果中加人一個相同模塊; (3)只把被例化元件綜合一次只把被例化元件綜合一次,但是在每次處理例化元件語句時,根據(jù)上下文的代碼對元件的接口邏輯重新綜合。 元件例化語句常與配置語句聯(lián)合使用,可以通過配

30、置語句引導(dǎo)綜合工具選繹適當?shù)脑O(shè)計版本。 5塊語句塊語句 塊語句有把一些相關(guān)并行語句組織到一起和進行保護賦值兩種作用。第一種塊語句在綜合處理上與一般的并行語句沒有區(qū)別只是有些綜合工具可以把一個塊結(jié)構(gòu)當作模塊來處理、也就是提供了一種層次化的手段,第二種塊語句一般用來描述寄存器(觸發(fā)器或電平鎖存器)和三態(tài)器件。下面的代碼描述了一個下降沿激活的觸發(fā)器和三態(tài)總線連接,圖529是三態(tài)總線描述的綜合后結(jié)果。由于DATA是Std_ulogic_vector類型,所以在賦值時進行了類型轉(zhuǎn)換。 6并行過程并行過程 并行過程在綜合處理上類似于元件例化語句,但是更加靈活。在參數(shù)不同時,同一過程可能得到不同的綜合結(jié)果。

31、并行過程一股在保持層次的條件下單獨被綜合,并且在同一過程被多次調(diào)用時,默認的處理方式是共享這一過程對應(yīng)的硬件。 7生成語句生成語句 生成語句實際上是系統(tǒng)化地例化元件的方式,在綜合時與硬件的對應(yīng)關(guān)系是很明顯的 七、綜合約束七、綜合約束 綜合時,除了通過編程來控制綜合結(jié)果之外,一般要設(shè)置綜合約束來引導(dǎo)綜合工具達到需要的綜合目的。綜合約束的種類很多,例如,對最大最小延時的約束、建立保持時間約束、最大扇出約束等等,但對綜合產(chǎn)生最重要影響的是優(yōu)化目標,常見的優(yōu)化目標是最快運算速度最快運算速度或最小面積最小面積,現(xiàn)在比較先進的工具開始支持面向功耗的優(yōu)化。通常,綜合工具以面積為默認優(yōu)化目標。因此,即使代碼完全相同,如果優(yōu)化目標不同,仍有可能產(chǎn)生完全不同的綜合結(jié)果。 6.2 RTL設(shè)計設(shè)計 現(xiàn)在進入詳細設(shè)計階段。前一階段是結(jié)構(gòu)設(shè)計階段,它通過把定義分解到易于管理的子系統(tǒng)來產(chǎn)生結(jié)構(gòu)模型。現(xiàn)在需要詳細設(shè)計出層次分解的底層部件。達到門級設(shè)計的最直接的方法是首先產(chǎn)生一個寄存器傳輸級(RTL)模型,然后使用綜合工具將其轉(zhuǎn)換為門級電路。本節(jié)詳細討論獲得RTL模型的方法以及RTL模型建模。 一、RTL設(shè)計 同它的名字一樣,RTL模型描述了不同寄存器之間的數(shù)據(jù)傳輸。對數(shù)據(jù)的基本操作包括了算術(shù)操

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論