版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第六講 VHDL的可綜合性 6.1 VHDL語(yǔ)言結(jié)構(gòu)向硬件的映射語(yǔ)言結(jié)構(gòu)向硬件的映射 ?EDA工業(yè)界普遍認(rèn)為,有效的VHDL建模風(fēng)格是控制綜合結(jié)果最為有力的手段。 ?為了建立有效的VHDL代碼,設(shè)計(jì)師應(yīng)了解VHDL語(yǔ)言結(jié)構(gòu)與綜合結(jié)果的關(guān)系。 ?應(yīng)該指出的是,由于綜合算法的不同,對(duì)于同樣的硬件描述,不同的CAD綜合工具可能會(huì)得到不同的綜合結(jié)果。 VHDLVHDL語(yǔ)言在創(chuàng)立時(shí),主要是為了滿(mǎn)足仿真的需要。自從語(yǔ)言在創(chuàng)立時(shí),主要是為了滿(mǎn)足仿真的需要。自從VHDLVHDL被用于綜合以來(lái),被用于綜合以來(lái),都是對(duì)都是對(duì)VHDLVHDL的子集進(jìn)行處理,這就是所謂的可綜合的的子集進(jìn)行處理,這就是所謂的可綜合的V
2、HDLVHDL子集。不同綜合工具子集。不同綜合工具支持的可綜合子集不盡相同,通常有如下要求:支持的可綜合子集不盡相同,通常有如下要求: (1)延時(shí)描述延時(shí)描述(after語(yǔ)句、語(yǔ)句、wait for語(yǔ)句語(yǔ)句)等被忽略等被忽略。 仿真時(shí),為了具備一定精度,往往在源代碼中含有延時(shí)語(yǔ)句。這些延時(shí)語(yǔ)仿真時(shí),為了具備一定精度,往往在源代碼中含有延時(shí)語(yǔ)句。這些延時(shí)語(yǔ)句信況比較復(fù)雜,有時(shí)是最大延時(shí)約束,有時(shí)是典型經(jīng)驗(yàn)值,還有些是人句信況比較復(fù)雜,有時(shí)是最大延時(shí)約束,有時(shí)是典型經(jīng)驗(yàn)值,還有些是人為加入的,所以現(xiàn)在所有的綜合工具都忽略源代碼中的延時(shí)語(yǔ)句。有些工為加入的,所以現(xiàn)在所有的綜合工具都忽略源代碼中的延時(shí)
3、語(yǔ)句。有些工具干脆把這些語(yǔ)句處理為語(yǔ)法錯(cuò)誤。大部分工具忽略延時(shí)語(yǔ)句后,給出警具干脆把這些語(yǔ)句處理為語(yǔ)法錯(cuò)誤。大部分工具忽略延時(shí)語(yǔ)句后,給出警告提示。而綜合時(shí)間約束則在綜合過(guò)程中通過(guò)綜合命令輸入。告提示。而綜合時(shí)間約束則在綜合過(guò)程中通過(guò)綜合命令輸入。 (2)支持有限類(lèi)型。支持有限類(lèi)型。 VHDL具有豐富的類(lèi)型定義,但是有些類(lèi)型不具備硬件對(duì)應(yīng)物。不可能被綜合,如文件類(lèi)型。通??删C合類(lèi)型包括枚舉類(lèi)型(包括自定義狀態(tài)、預(yù)定義Bit類(lèi)型和IEEE 9值邏輯類(lèi)型等)、整數(shù)、數(shù)組等。其余像浮點(diǎn)數(shù)類(lèi)型、記錄類(lèi)型等只得到有限支持而時(shí)間類(lèi)型等完全不能被綜合。 (3)進(jìn)程的書(shū)寫(xiě)要服從一定的限制。進(jìn)程的書(shū)寫(xiě)要服從一定
4、的限制。 在仿真時(shí),VHDL進(jìn)程可以任意書(shū)寫(xiě)。而在綜合時(shí),通常要求一個(gè)進(jìn)程內(nèi)只能有一個(gè)有效時(shí)鐘,有的工具還有進(jìn)一步的限制。 (4)可綜合代碼應(yīng)該是同步式的設(shè)計(jì)??删C合代碼應(yīng)該是同步式的設(shè)計(jì)。 現(xiàn)在的EDA綜合工具普遍推薦使用同步式設(shè)計(jì)風(fēng)格,即整個(gè)芯片電路的狀態(tài)只能在時(shí)鐘信號(hào)有效時(shí)發(fā)生改變,也就是說(shuō),電路狀態(tài)不會(huì)在僅有數(shù)據(jù)信號(hào)變化而時(shí)鐘處于無(wú)效狀態(tài)時(shí)改變,并且電路中的時(shí)鐘信號(hào)應(yīng)該都是從同一主時(shí)鐘經(jīng)過(guò)分頻或其他運(yùn)算得到。當(dāng)然設(shè)計(jì)師也可以嘗試其它風(fēng)格的設(shè)計(jì),如異步式電路,但這時(shí)綜合工具產(chǎn)生的結(jié)果往往還需要設(shè)計(jì)師的進(jìn)一步優(yōu)化或調(diào)整 一、 VHDL類(lèi)型類(lèi)型 VHDLVHDL語(yǔ)言中的對(duì)象有常量語(yǔ)言中的對(duì)象
5、有常量 (constant)(constant)、信號(hào)、信號(hào)(signal)(signal)和變量和變量(variable)(variable)三種三種,它們都必須定義為如下某種類(lèi)型。類(lèi)型定義說(shuō)明了對(duì)象可以使用的數(shù)值,并隱,它們都必須定義為如下某種類(lèi)型。類(lèi)型定義說(shuō)明了對(duì)象可以使用的數(shù)值,并隱含表示了可以對(duì)其進(jìn)行的操作。含表示了可以對(duì)其進(jìn)行的操作。 1.1.可綜合類(lèi)型可綜合類(lèi)型 面向綜合的建摸都支持這樣一些類(lèi)型:枚舉類(lèi)型、整數(shù)、一維數(shù)組枚舉類(lèi)型、整數(shù)、一維數(shù)組。比較先進(jìn)的綜合工具現(xiàn)在一般也可以處理二維數(shù)組和簡(jiǎn)單的記錄類(lèi)型。 (1)核舉類(lèi)型核舉類(lèi)型 枚舉類(lèi)型通過(guò)列出所有可能的取值來(lái)定義,例如: 以
6、上Std_ulogic的定義實(shí)際是對(duì)01 等字符進(jìn)行了重載(overload),由于這個(gè)定義已經(jīng)成為IEEE標(biāo)淮,并且描述的是電路連線(xiàn)的狀態(tài),因此綜合時(shí)并不會(huì)產(chǎn)生額外硬件。而對(duì)于抽象層次更高的BOOLEAN和State-type,則需要進(jìn)行狀態(tài)編碼,這也是枚舉類(lèi)型在綜合時(shí)最主要的問(wèn)題,現(xiàn)在還沒(méi)有統(tǒng)一的方法解決。一般來(lái)說(shuō),狀態(tài)編碼是把狀態(tài)值編碼為位矢量位矢量(bit-Vector,Std-ulogic-Vector或Std-logic-vector),矢量長(zhǎng)度是能夠表示所有狀態(tài)的最短位寬。例如,State-type的4個(gè)狀態(tài)值可以分別校編碼為“00” ,“01“ ,”10“ 和”11” ,Boo
7、lean類(lèi)型編碼辦 0和 1。 (2)整數(shù)類(lèi)型 可綜合的整數(shù)類(lèi)型定義總是有界的總是有界的,例如: 對(duì)整數(shù)類(lèi)型進(jìn)行綜合時(shí),綜合工具首先將其翻譯為位矢量,矢量長(zhǎng)度仍取能夠滿(mǎn)足需要的最短位寬。如果使用默認(rèn)的整數(shù)類(lèi)型,大部分綜合工具按32位處理,因此,建議使用于類(lèi)型定義(subtype)明確指出整數(shù)的范圍,以便于綜合工具進(jìn)行優(yōu)化。如果是負(fù)整數(shù),通常編碼為正數(shù)的補(bǔ)碼。綜合后的電路中,整數(shù)以矢量形式出現(xiàn),但通常只能以整個(gè)矢量為單位訪(fǎng)問(wèn),即不能單獨(dú)訪(fǎng)問(wèn)每一位。 (3)數(shù)組數(shù)組 現(xiàn)在綜合工具都能夠處理一維數(shù)組,例如 對(duì)于word類(lèi)型,綜合工具通常將其綜合為總線(xiàn)。 MyRAM類(lèi)型實(shí)際是二維的,這種用兩個(gè)一維數(shù)組
8、代替一個(gè)兩維數(shù)組是常用的綜合建模技巧?,F(xiàn)在先進(jìn)的綜合工具如synospys DC可以將其綜合為RAM,一般綜合工具至少可以把它綜合為寄存器。 (4)記錄類(lèi)型記錄類(lèi)型 記錄類(lèi)型在定義復(fù)雜數(shù)據(jù)類(lèi)型時(shí)非常方便,能夠把不同數(shù)據(jù)類(lèi)型的數(shù)據(jù)組織在一起統(tǒng)一訪(fǎng)問(wèn)。但是,EDA工業(yè)界對(duì)綜合工具是否應(yīng)該支持記錄類(lèi)型還沒(méi)有統(tǒng)一意見(jiàn),因此大多數(shù)綜合工具不提供這種能力或只能把組合了簡(jiǎn)單數(shù)據(jù)類(lèi)型的記錄進(jìn)行綜合。 2.可綜合子集可綜合子集 VHDLVHDL在在19891989年首次公布時(shí),就提供了兩個(gè)程序包年首次公布時(shí),就提供了兩個(gè)程序包 (package)(package):StandardStandard和和TextI
9、()TextI(),其中定義了各種預(yù)定義數(shù)據(jù)類(lèi)型。這些預(yù)定義數(shù)據(jù)類(lèi)型中,類(lèi),其中定義了各種預(yù)定義數(shù)據(jù)類(lèi)型。這些預(yù)定義數(shù)據(jù)類(lèi)型中,類(lèi)型型IntegerInteger,BitBit,Bit-VectorBit-Vector,BooleanBoolean,CharacterCharacter和子類(lèi)型和子類(lèi)型NaturalNatural,PositivePositive是可綜合的。類(lèi)型是可綜合的。類(lèi)型FileFile,AccessAccess和和RealReal則不可被綜合。則不可被綜合。 1992年,IEEE頒布了標(biāo)準(zhǔn)程序包Std_logic_1164,其中定義了9值數(shù)據(jù)類(lèi)型Std_ulogic,即
10、相應(yīng)的決斷類(lèi)型Std_logic。在第4章也已經(jīng)介紹了這個(gè)程序包,這里從綜合的角度予以討論。9值數(shù)據(jù)類(lèi)型定義如下: Type std_ulogic is( U,X,0,1,Z,W,L,H,- );0,1,Z,- 在仿真和綜合時(shí)的處理方式是一致的。 U和W在仿真是是未初始化狀態(tài),綜合時(shí)通常不必考慮。現(xiàn)在”H和 L 在綜合時(shí)沒(méi)有統(tǒng)一的方法。仿真時(shí),X表示未知態(tài);綜合時(shí),X一般當(dāng)作無(wú)關(guān)態(tài)處理,即等價(jià)于。 2004年,IEEE批準(zhǔn)了一種修訂標(biāo)準(zhǔn)IEEE 1076.6-2004,該標(biāo)準(zhǔn)提供了VHDL RTL綜合子集的重要擴(kuò)展。新改進(jìn)版包括VHDL幾乎每一個(gè)特性,能被用于在RTL級(jí)進(jìn)行建模并綜合。此外還包
11、括觸發(fā)器和鎖存器建模的擴(kuò)展語(yǔ)義導(dǎo)引。用戶(hù)將能夠以多種不同風(fēng)格編寫(xiě)一個(gè)RTL模型,每一種都符合標(biāo)準(zhǔn)。此外,這項(xiàng)標(biāo)準(zhǔn)提供了極為重要的保證,即保證模型在眾多接受RTL輸入的不同工具之間的便攜性?!边@項(xiàng)標(biāo)準(zhǔn)化將最終幫助RTL確認(rèn)。 主要支持以下類(lèi)型綜合: 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對(duì)象對(duì)象 VHDL語(yǔ)言中有三類(lèi)對(duì)象,常量(常量(constantconstant),變量(),變量(VariableVariable),信號(hào)),信號(hào)(Signal)(Signal),它們是VHDL程序中的數(shù)據(jù)的載體。 1.常量 常量?jī)H被計(jì)算一次。在很多情況下,可以通過(guò)使用常量引導(dǎo)綜合器獲得優(yōu)化的結(jié)果在綜合過(guò)程中,常量被
13、處理的方式很多,主要有下述情況。 a)當(dāng)常量被用來(lái)描述真值表 、ROM等,或被用于信號(hào)賦值,常量在綜合時(shí)會(huì)形成對(duì)應(yīng)的硬件。 b)在常量作為算術(shù)運(yùn)算的一個(gè)操作數(shù)出現(xiàn)時(shí),綜合工具常會(huì)對(duì)這一算術(shù)運(yùn)算實(shí)施特定的優(yōu)化措施。當(dāng)然,這樣一來(lái)常量與綜合結(jié)果中的硬件就不是一一對(duì)應(yīng)了。例如,優(yōu)化綜合工具用左移一位實(shí)現(xiàn)乘 2操作,用右移一位實(shí)現(xiàn)除法操作。 c)常量在作為條件表達(dá)式的一部分(例如下面的代碼)時(shí)綜合工具會(huì)對(duì)整個(gè)語(yǔ)法結(jié)構(gòu)進(jìn)行布爾優(yōu)化。 d)常量傳播。在下面的VHDL代碼中,由于數(shù)組ROM和ROM(5)的索引都是常數(shù),因此WORD4實(shí)際上也成為常數(shù),在進(jìn)一步的優(yōu)化中,WORD4將作為常量被處理。這就是常量傳
14、播。 2.2.變量和信號(hào)變量和信號(hào) 變量和信號(hào)有著不同的仿真行為,同樣在綜合過(guò)程中,它們也會(huì)產(chǎn)生不同的結(jié)果。一般說(shuō)來(lái),盡量使用變量能夠獲得比較好的綜合結(jié)果,因?yàn)檫@樣做使得優(yōu)化的余地較大。但是,并不是所有的綜合工具都支持變量的綜合,這是需要特別注意的。同時(shí),使用信號(hào)可以較好地保持綜合前后在 IO上的一致性(這里把進(jìn)程內(nèi)對(duì)信號(hào)的讀寫(xiě)統(tǒng)稱(chēng)為 IO),而且在需要鎖存中間結(jié)果的時(shí)候,經(jīng)常有必要使用信號(hào)。 下面用一個(gè)例子來(lái)說(shuō)明變量與信號(hào)的不同綜合結(jié)果,其源代碼如下。圖514分別是結(jié)構(gòu)體A和B對(duì)應(yīng)的綜合結(jié)果。 三、初值三、初值 VHDL中有三種初值;由類(lèi)型或子類(lèi)型定義可以得到的默認(rèn)初值,定義對(duì)象時(shí)明確指定的
15、初值和進(jìn)程入口處顯示地賦予對(duì)象的初值。 以上三種初值的前兩種只在仿真時(shí)有意義,在綜合時(shí)將被忽略。第三種形式將被綜合器處理,形成對(duì)應(yīng)電路。在集成電路設(shè)計(jì)中,復(fù)位時(shí)賦予各個(gè)信號(hào)初值是很有必要的,否則很有可能出現(xiàn)不定態(tài)。因此無(wú)論在仿真還是在綜合時(shí),都建議使用系統(tǒng)化的方式給信號(hào)和變量賦初值,即上述的第三種形式。 四、運(yùn)算符四、運(yùn)算符 1.1.邏輯運(yùn)算符邏輯運(yùn)算符 邏輯運(yùn)算符包括表54中的not和二元邏輯運(yùn)算符,其操作數(shù)可以是bit和Std_logic等類(lèi)型的標(biāo)量或同長(zhǎng)度的矢量對(duì)象,也可以是Boolean類(lèi)型的對(duì)象。這些算符的綜合是直截了當(dāng)?shù)?,直接調(diào)用邏輯門(mén)單元實(shí)現(xiàn)即可,但經(jīng)過(guò)優(yōu)化后,這些算符可能被合并
16、或改變。圖515是對(duì)下達(dá)VHDL代碼中邏輯運(yùn)算符綜合的結(jié)果。 2.關(guān)系運(yùn)算符 關(guān)系算符的綜合沒(méi)有統(tǒng)一的方法,綜合工具常利用被比較數(shù)的特點(diǎn)作特定的優(yōu)化。圖516是對(duì)”運(yùn)算符綜合的例子。 3一元算術(shù)運(yùn)算符 一元算術(shù)運(yùn)算符有三個(gè),即十,一和abs(取絕對(duì)值)。對(duì)前兩個(gè)算符,綜合工具大都可以用組合邏輯線(xiàn)路實(shí)現(xiàn),如圖517的例子。abs算符的處理比較復(fù)雜,大部分綜合工具尚不能提供支持。 4.二元算術(shù)運(yùn)算符 現(xiàn)在的綜合工具,特別是高層次綜合工具,都能夠直接把十,一,運(yùn)算綜合為相應(yīng)的運(yùn)算線(xiàn)路,部分工具也支持除法運(yùn)算。mod和rem算符通常不被綜合工具支持。如果使用IEEE頒布的標(biāo)準(zhǔn)算術(shù)運(yùn)算程序包Std-lo
17、gic-arith,那么還可以直接描述對(duì)Bit或Std-logic類(lèi)型的標(biāo)量和矢量對(duì)象進(jìn)行算術(shù)運(yùn)算的電路,并進(jìn)行綜合。通常在綜合過(guò)程中,綜合器先把運(yùn)算符映射為相應(yīng)的加法器等綜合庫(kù)提供的專(zhuān)用運(yùn)算部件,然后進(jìn)行優(yōu)化,如果某些運(yùn)算可以用簡(jiǎn)單線(xiàn)路實(shí)現(xiàn),綜合器則用簡(jiǎn)單線(xiàn)路取代專(zhuān)用運(yùn)算部件。 5.運(yùn)算符運(yùn)算符 運(yùn)算行為連接運(yùn)算,通散用于把一組對(duì)象捆綁在一起。由于直到1992年VHDL才引入移位算符,所以也常用連接運(yùn)算實(shí)現(xiàn)移位運(yùn)算。綜合時(shí),一般是在信號(hào)之間提供額外的連線(xiàn)實(shí)現(xiàn)這一運(yùn)算。 6.移位運(yùn)算 移位運(yùn)算符是1992年VHDL再次修訂后引入的特征,在綜合時(shí)有兩種處理方式。對(duì)于經(jīng)過(guò)鎖存的矢量對(duì)象,可以在鎖存
18、器之間引入附加的數(shù)據(jù)通路來(lái)實(shí)現(xiàn);對(duì)于不需要鎖存的矢量對(duì)象,處理方式與運(yùn)算符相同。 五、順序語(yǔ)句五、順序語(yǔ)句 順序語(yǔ)句只能在進(jìn)程中出現(xiàn),而且其出現(xiàn)順序直接影響到硬件行為。VHDL能夠描述非常復(fù)雜的數(shù)字電路,很大程度上是由于具有豐富的順序語(yǔ)句。 1變量賦值 變量的引入使得VHDL具備了極強(qiáng)的造型能力,能夠以類(lèi)似軟件編程的方式描述硬件,特別是在行為綜合時(shí),如果沒(méi)有變量,則描述復(fù)雜的ASIC行為幾乎是不可能的。 變量在綜合時(shí)要根據(jù)整體代碼決定其處理方式,主要有以下幾種方式:用寄存器鎖存變量,也就是說(shuō),變量經(jīng)過(guò)綜合后形成了寄存器,但是生命期不重疊的變量可以共享一個(gè)硬件寄存器;在邏輯優(yōu)化過(guò)程中被消去,即沒(méi)
19、有硬件對(duì)應(yīng)物;作為一根硬件連線(xiàn)出現(xiàn)(由組合邏輯輸出)。 2.2.信號(hào)賦值信號(hào)賦值 信號(hào)只能在同步語(yǔ)句(顯式或隱含的wait語(yǔ)句)之后改變狀態(tài)。通常,綜合后的信號(hào)賦值語(yǔ)句會(huì)被化簡(jiǎn)為最簡(jiǎn)形式。綜合工具處理信號(hào)的方式類(lèi)似于變量,但有以下區(qū)別:如果信號(hào)需要寄存器鎖存,那么被鎖存的信號(hào)能與其他信號(hào)共享硬件寄存器;比較先進(jìn)的綜合工具可以按照設(shè)計(jì)師的要求,決定是否保持綜合前后信號(hào)的一致性;出現(xiàn)在形如if CLK 1and CLK Event和thenend if之間或wait until CLK0and CLKEvent這樣的時(shí)鐘沿同步語(yǔ)句之后的信號(hào)都要被鎖存,而變量則不一定被鎖存。 3.if語(yǔ)句語(yǔ)句 if
20、語(yǔ)句是最頻繁出現(xiàn)的條件語(yǔ)句。在綜合時(shí),if的處理分三種情況,下面分別討論。 (1)if語(yǔ)句(包括elseif, else)包含了條件所有可能的取值,稱(chēng)之為完全if語(yǔ)句。這時(shí)綜合器用多路選擇器或基本邏輯門(mén)的組合來(lái)實(shí)現(xiàn)電路,如圖520和圖521所示,它們分別是下述進(jìn)程P1和P2綜合得到的結(jié)果。用多路選擇器實(shí)現(xiàn)電路時(shí),ifelseif.else中隱含的優(yōu)先關(guān)系會(huì)被消去,這是設(shè)計(jì)師應(yīng)該注意的。 (2)若if語(yǔ)句的條件末包含所有可能出現(xiàn)的情況,有效條件是對(duì)某信號(hào)的跳變進(jìn)行檢測(cè),并且在條件滿(mǎn)足時(shí)是對(duì)信號(hào)進(jìn)行賦值操作,那么會(huì)生成觸發(fā)器。一般把如果賦值號(hào)右邊為一復(fù)雜表達(dá)式,則綜合器先用組合邏輯電路計(jì)算表達(dá)式,
21、計(jì)算結(jié)果送入觸發(fā)器的數(shù)據(jù)輸入。圖5.22是對(duì)下述進(jìn)程FF進(jìn)行寄存器推斷的例子。 觸發(fā)器和電平鎖存器通稱(chēng)為寄存器,因此這實(shí)際上是所謂寄存器推斷的一種形式。(3)第三種情況與第二種類(lèi)似。也屬于于不完全if語(yǔ)句,但有效條件只對(duì)信號(hào)值進(jìn)行檢測(cè),這時(shí)綜合器的處理方式也是類(lèi)似的,只是換為用電平鎖存器實(shí)現(xiàn)寄存器。 4Case語(yǔ)句語(yǔ)句 case語(yǔ)句與多路選擇器電路的對(duì)應(yīng)關(guān)系是顯而易見(jiàn)的,但是,建摸時(shí)要注意合圖5.23是綜合下述VHDL代碼中case語(yǔ)句的一個(gè)例子,注意電路中CODE倍號(hào)已被編碼為矢量。 理使用無(wú)關(guān)態(tài)和others語(yǔ)句,否則會(huì)造成電路的復(fù)雜化,甚至導(dǎo)致形成時(shí)序電路。5循環(huán)語(yǔ)句循環(huán)語(yǔ)句 VHDL的
22、循環(huán)語(yǔ)句有三種:for循環(huán)、while循環(huán)和無(wú)限循環(huán)loop end loop,實(shí)際循環(huán)語(yǔ)句的處理是極其復(fù)雜的,第3章對(duì)此已作了介紹,這里從寄存器傳輸級(jí)的上,1oopend loop可以看作是循環(huán)條件永遠(yuǎn)為真的while循環(huán)。在行為綜合中,角度加以討論。 在寄存器級(jí)進(jìn)行綜合,要求for循環(huán)的上下界必須是靜態(tài)已知。例如下面給出了反之,第二段代碼則可以被綜合工具接受。這段代碼通過(guò)使用next語(yǔ)句,形成了一個(gè)選擇性的連線(xiàn)網(wǎng)絡(luò),如圖524所示。 兩段VHDL代碼,第一段代碼中,由于循環(huán)上界RG是動(dòng)態(tài)對(duì)象,所以是不可綜合的。 VHDL定義了next和exit語(yǔ)句來(lái)中斷循環(huán)的正常執(zhí)行,現(xiàn)在的綜合工具都可以
23、處理這兩種語(yǔ)言結(jié)構(gòu)。固525是對(duì)下述VHDL代碼中的循環(huán)綜合的例子,這個(gè)電路對(duì)信號(hào)中的 1進(jìn)行計(jì)數(shù),代碼中使用了exit語(yǔ)句。 6.子程序的調(diào)用子程序的調(diào)用 VHDL的子程序調(diào)用有函數(shù)和過(guò)程兩種形式。綜合時(shí),比較先進(jìn)的綜合工具允許設(shè)計(jì)師控制子程序展開(kāi)子程序展開(kāi)或是作為單獨(dú)模塊處理 。只有描述硬件行為的子。只有描述硬件行為的子程序才是可綜合的程序才是可綜合的,完成效據(jù)轉(zhuǎn)換的子程序和決斷函數(shù)將被綜合工具忽略。函數(shù)通常被綜合為組合邏輯電路,如果過(guò)程同時(shí)具備輸入和輸出參數(shù),并且內(nèi)部沒(méi)有wait語(yǔ)句,則綜合后形成組合邏輯電路,否則形成時(shí)序邏輯。 六、并行語(yǔ)句 VHDL的并行語(yǔ)句出現(xiàn)在結(jié)構(gòu)體內(nèi),可綜合的并
24、行語(yǔ)言結(jié)構(gòu)包括進(jìn)程、并行賦值語(yǔ)句、塊語(yǔ)句、生成語(yǔ)句等。 1.進(jìn)程進(jìn)程 進(jìn)程是VHDL中描述硬件行為最有力的方式。進(jìn)程內(nèi)的語(yǔ)句屬于順序語(yǔ)句,而進(jìn)程本身則屬于并行語(yǔ)句。進(jìn)程的綜合是比較復(fù)雜的,主要有這祥一些問(wèn)題:綜合后的進(jìn)程是用組合邏輯還是時(shí)序邏輯電路實(shí)現(xiàn)?進(jìn)程中的對(duì)象是否有必要用存儲(chǔ)器部件(主要指寄存器、觸發(fā)器、電平鎖存器或RAM)實(shí)現(xiàn)? 進(jìn)程語(yǔ)句結(jié)構(gòu)需要至少一個(gè)同步控制點(diǎn),否則除了初始化階段,永遠(yuǎn)不會(huì)再次被激活。同步控制點(diǎn)表現(xiàn)在代碼中就是同步語(yǔ)句,同步語(yǔ)句可以是wait on(包括以敏感信號(hào)列表出現(xiàn)的隱含式wait on語(yǔ)句)或wait until。一般說(shuō)來(lái),只有一個(gè)同步點(diǎn)的進(jìn)程,或者是具有多
25、個(gè)同步點(diǎn)、但是都使用完全相同的同步控制信號(hào),當(dāng)進(jìn)程不帶要“記憶”在哪一個(gè)同步點(diǎn)上被掛起時(shí),不會(huì)形成存儲(chǔ)器。例如下面的代碼所示。 進(jìn)程中會(huì)形成存儲(chǔ)器的結(jié)構(gòu)還可能來(lái)自變量。有些變量純粹是運(yùn)算的中間結(jié)果,即所謂工作變量。例如下述的代碼中的進(jìn)程P1,不需要為變量配置寄存器或其他類(lèi)型的存儲(chǔ)器,此時(shí)同步語(yǔ)句隱臺(tái)在進(jìn)程兩次被激活的過(guò)程中。概括起來(lái),如果兩個(gè)同步語(yǔ)句之間的某變量總是在被讀之前作為賦值的對(duì)象。則不會(huì)形成對(duì)應(yīng)的硬件。如果變量需要在進(jìn)程掛起到下次被激活的過(guò)程中存儲(chǔ)數(shù)據(jù),則顯然需要形成硬件存儲(chǔ)器,例如下述代碼中的進(jìn)程P2,這種情況可以概括為,在進(jìn)程的兩個(gè)同步語(yǔ)句之間,如果至少有一個(gè)變量在作為賦值對(duì)象之
26、前被讀訪(fǎng)問(wèn)至少一次,那么該變量需要硬件存儲(chǔ)器。 信號(hào)同樣可能在綜合后形成硬件。例如下面的代碼,綜合結(jié)果通常為一觸發(fā)器,這是因?yàn)殡m然進(jìn)程內(nèi)只有一個(gè)同步點(diǎn),但是在進(jìn)程兩次被激活的過(guò)程中,Q必須保持原來(lái)狀態(tài),即使D的狀態(tài)已經(jīng)發(fā)生改變。 如果進(jìn)程綜合后的電路含有寄存器,那么自然就是時(shí)序電路。此外還有什么依據(jù)可以判定進(jìn)程被綜合為時(shí)序電路呢? 概括地說(shuō),在以下兩種情況下,進(jìn)程被綜合為時(shí)序電路: 進(jìn)程中所有被讀訪(fǎng)問(wèn)的信號(hào)不在敏感信號(hào)列表之內(nèi),如下面代碼的進(jìn)程P1; 進(jìn)程中至少有一個(gè)信號(hào)不是if或case中每種可能的分支上的賦值對(duì)象,如下面代碼中的進(jìn)程P2的信號(hào)。 總結(jié)以上內(nèi)容,在下述條件同時(shí)滿(mǎn)足的情況下,進(jìn)
27、程會(huì)被綜合為組合邏輯電路: (1)(1)進(jìn)程有顯示定義的敏感信號(hào)列表或進(jìn)程只有單一的同步控制點(diǎn)。進(jìn)程有顯示定義的敏感信號(hào)列表或進(jìn)程只有單一的同步控制點(diǎn)。 (2)(2)進(jìn)程中不含有任何變量,或者有變量,但變量出現(xiàn)在讀操作之前進(jìn)程中不含有任何變量,或者有變量,但變量出現(xiàn)在讀操作之前( (出現(xiàn)在出現(xiàn)在賦值號(hào)賦值號(hào)* *的左邊的左邊) );所有被讀訪(fǎng)問(wèn)的信號(hào)都出現(xiàn)于敏感信號(hào)列表中;所有被讀訪(fǎng)問(wèn)的信號(hào)都出現(xiàn)于敏感信號(hào)列表中; (3)3)進(jìn)程中輸出的信號(hào)在進(jìn)程中輸出的信號(hào)在“條件條件”的各種可能情況下都被賦值,且賦值號(hào)右邊的各種可能情況下都被賦值,且賦值號(hào)右邊不出現(xiàn)該信號(hào)不出現(xiàn)該信號(hào)。 2信號(hào)賦值語(yǔ)句 信
28、號(hào)賦值語(yǔ)句的處理是直截了當(dāng)?shù)模旅娴恼Z(yǔ)句(a)被綜合成一根硬連線(xiàn);對(duì)于語(yǔ)句(b),R將被當(dāng)作常數(shù)處理;語(yǔ)句(c)被綜合為組合邏輯電路。當(dāng)然,語(yǔ)句(a)(c)經(jīng)過(guò)邏輯優(yōu)化后,可能改變形式或者被消去。 和3條件和選擇賦值語(yǔ)句條件和選擇賦值語(yǔ)句 VHDL的并行語(yǔ)句有兩種方式進(jìn)行有條件的賦值,即條件賦值whenwhenelseelse和選擇賦值withwithselectselect.when.when。實(shí)際上這兩種語(yǔ)法結(jié)構(gòu)都可以改寫(xiě)為等價(jià)的順序語(yǔ)句。例如下面的并行條件賦值(a)和進(jìn)程P1內(nèi)的代碼是完全等價(jià)的。同時(shí),可以看到進(jìn)程也滿(mǎn)足用組合邏輯電路實(shí)現(xiàn)的特點(diǎn),因此這段代碼在綜合后會(huì)用多選一網(wǎng)絡(luò)實(shí)現(xiàn),如
29、圖526所示。 4.元件例化語(yǔ)句元件例化語(yǔ)句 元件例化語(yǔ)句提供了使用以前建立的模塊的手段。在綜合過(guò)程中,提供綜合命令的控制。例化語(yǔ)句調(diào)用的元件可以用如下一些方式處理: (1)展平,即取消層次展平,即取消層次。把元件本身的描述代入上一級(jí)描述,然后整體進(jìn)行綜合和優(yōu)化; (2)只把被例化元件綜合一次只把被例化元件綜合一次,然后遇到例化這一元件的語(yǔ)句均使用這一綜合結(jié)果,也就是說(shuō)每遇到這個(gè)元件的例化語(yǔ)句均在綜合結(jié)果中加人一個(gè)相同模塊; (3)只把被例化元件綜合一次只把被例化元件綜合一次,但是在每次處理例化元件語(yǔ)句時(shí),根據(jù)上下文的代碼對(duì)元件的接口邏輯重新綜合。 元件例化語(yǔ)句常與配置語(yǔ)句聯(lián)合使用,可以通過(guò)配
30、置語(yǔ)句引導(dǎo)綜合工具選繹適當(dāng)?shù)脑O(shè)計(jì)版本。 5塊語(yǔ)句塊語(yǔ)句 塊語(yǔ)句有把一些相關(guān)并行語(yǔ)句組織到一起和進(jìn)行保護(hù)賦值兩種作用。第一種塊語(yǔ)句在綜合處理上與一般的并行語(yǔ)句沒(méi)有區(qū)別只是有些綜合工具可以把一個(gè)塊結(jié)構(gòu)當(dāng)作模塊來(lái)處理、也就是提供了一種層次化的手段,第二種塊語(yǔ)句一般用來(lái)描述寄存器(觸發(fā)器或電平鎖存器)和三態(tài)器件。下面的代碼描述了一個(gè)下降沿激活的觸發(fā)器和三態(tài)總線(xiàn)連接,圖529是三態(tài)總線(xiàn)描述的綜合后結(jié)果。由于DATA是Std_ulogic_vector類(lèi)型,所以在賦值時(shí)進(jìn)行了類(lèi)型轉(zhuǎn)換。 6并行過(guò)程并行過(guò)程 并行過(guò)程在綜合處理上類(lèi)似于元件例化語(yǔ)句,但是更加靈活。在參數(shù)不同時(shí),同一過(guò)程可能得到不同的綜合結(jié)果。
31、并行過(guò)程一股在保持層次的條件下單獨(dú)被綜合,并且在同一過(guò)程被多次調(diào)用時(shí),默認(rèn)的處理方式是共享這一過(guò)程對(duì)應(yīng)的硬件。 7生成語(yǔ)句生成語(yǔ)句 生成語(yǔ)句實(shí)際上是系統(tǒng)化地例化元件的方式,在綜合時(shí)與硬件的對(duì)應(yīng)關(guān)系是很明顯的 七、綜合約束七、綜合約束 綜合時(shí),除了通過(guò)編程來(lái)控制綜合結(jié)果之外,一般要設(shè)置綜合約束來(lái)引導(dǎo)綜合工具達(dá)到需要的綜合目的。綜合約束的種類(lèi)很多,例如,對(duì)最大最小延時(shí)的約束、建立保持時(shí)間約束、最大扇出約束等等,但對(duì)綜合產(chǎn)生最重要影響的是優(yōu)化目標(biāo),常見(jiàn)的優(yōu)化目標(biāo)是最快運(yùn)算速度最快運(yùn)算速度或最小面積最小面積,現(xiàn)在比較先進(jìn)的工具開(kāi)始支持面向功耗的優(yōu)化。通常,綜合工具以面積為默認(rèn)優(yōu)化目標(biāo)。因此,即使代碼完全相同,如果優(yōu)化目標(biāo)不同,仍有可能產(chǎn)生完全不同的綜合結(jié)果。 6.2 RTL設(shè)計(jì)設(shè)計(jì) 現(xiàn)在進(jìn)入詳細(xì)設(shè)計(jì)階段。前一階段是結(jié)構(gòu)設(shè)計(jì)階段,它通過(guò)把定義分解到易于管理的子系統(tǒng)來(lái)產(chǎn)生結(jié)構(gòu)模型?,F(xiàn)在需要詳細(xì)設(shè)計(jì)出層次分解的底層部件。達(dá)到門(mén)級(jí)設(shè)計(jì)的最直接的方法是首先產(chǎn)生一個(gè)寄存器傳輸級(jí)(RTL)模型,然后使用綜合工具將其轉(zhuǎn)換為門(mén)級(jí)電路。本節(jié)詳細(xì)討論獲得RTL模型的方法以及RTL模型建模。 一、RTL設(shè)計(jì) 同它的名字一樣,RTL模型描述了不同寄存器之間的數(shù)據(jù)傳輸。對(duì)數(shù)據(jù)的基本操作包括了算術(shù)操
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024中外合資企業(yè)教育培訓(xùn)與經(jīng)營(yíng)合同書(shū)
- 2024廣州市房地產(chǎn)中介服務(wù)合同(賣(mài)方出租方使用)
- 2024個(gè)人民間借款合同范例
- 2024年信息安全保密協(xié)議
- 2024年合伙人分伙協(xié)議書(shū)
- 2024果樹(shù)苗木定購(gòu)合同范本
- 跨境電商商品銷(xiāo)售合同
- 承包商土地使用權(quán)贈(zèng)與合同模板
- 精裝修室內(nèi)工程合同
- 2024英文合同范本
- 新型建筑材料結(jié)業(yè)論文
- 學(xué)生一幫一結(jié)對(duì)子登記表
- 簡(jiǎn)易送貨單EXCEL打印模板
- TZZB2483-2021食品包裝用耐蒸煮、高阻隔塑料復(fù)合膜、袋
- 國(guó)旗護(hù)衛(wèi)隊(duì)訓(xùn)練計(jì)劃
- 關(guān)于建立處罰裁量基準(zhǔn)制度規(guī)范自由裁量權(quán)的調(diào)研報(bào)告
- 農(nóng)村土地承包法解說(shuō)PPT課件
- CTD格式內(nèi)容詳解
- 海航集團(tuán)空中乘務(wù)員招聘報(bào)名表
- 胃癌臨床路徑(2021年版)
- 人教中職數(shù)學(xué)球PPT學(xué)習(xí)教案
評(píng)論
0/150
提交評(píng)論