vhdl數(shù)據(jù)類型_第1頁
vhdl數(shù)據(jù)類型_第2頁
vhdl數(shù)據(jù)類型_第3頁
vhdl數(shù)據(jù)類型_第4頁
vhdl數(shù)據(jù)類型_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、一、一、VHDLVHDL語言的基本語法語言的基本語法1 1、VHDLVHDL語言的標識符語言的標識符VHDL中的標識符可以是常數(shù)、變量、信號、端口、子程序或參中的標識符可以是常數(shù)、變量、信號、端口、子程序或參數(shù)的名字。使用標識符要遵守如下規(guī)則:數(shù)的名字。使用標識符要遵守如下規(guī)則:標識符由字母(標識符由字母(AZ,az)、)、數(shù)字和下劃線字符組成數(shù)字和下劃線字符組成;任何標識符必須以英文字母開頭任何標識符必須以英文字母開頭;末字符不能為下劃線末字符不能為下劃線;不允許出現(xiàn)兩個連續(xù)下劃線不允許出現(xiàn)兩個連續(xù)下劃線;標識符中不區(qū)分大小寫字母標識符中不區(qū)分大小寫字母;VHDL定義的保留字或稱關鍵字,不能

2、用作標識符定義的保留字或稱關鍵字,不能用作標識符;VHDL中的注釋由兩個連續(xù)的虛線(中的注釋由兩個連續(xù)的虛線(-)開始,直到行尾)開始,直到行尾;例例_Decoder_1-起始為非英文字母起始為非英文字母3DOP-起始為數(shù)字起始為數(shù)字Large # number-“#”不能成為標識符的構成符號不能成為標識符的構成符號Date_ _bus-不能有雙下劃線不能有雙下劃線Copper_-最后字符不能為下劃線最后字符不能為下劃線on-關鍵字關鍵字2 2、VHDLVHDL語言的數(shù)字語言的數(shù)字2.1 數(shù)字型文字的值有多種表達方式,現(xiàn)列舉如下:數(shù)字型文字的值有多種表達方式,現(xiàn)列舉如下:(1) 整數(shù)文字:整數(shù)

3、文字:整數(shù)文字都是十進制的數(shù),如:整數(shù)文字都是十進制的數(shù),如: 5,678,0,156E2(=15600), 45_234_287(=45234287)(2) 實數(shù)文字:實數(shù)文字:實數(shù)文字也都是十進制的數(shù),但必實數(shù)文字也都是十進制的數(shù),但必須帶有小數(shù)點,如:須帶有小數(shù)點,如: 188.993, 88_670_551.453_909(=88670551.453909), 1.0,44.99E-2(=0.4499),1.335,0.0數(shù)字前可加數(shù)字前可加0 0,數(shù)字中間不能有空格,數(shù)字中間不能有空格2.2 以數(shù)制基數(shù)表示的文字:以數(shù)制基數(shù)表示的文字: 數(shù)制數(shù)制# #基數(shù)基數(shù)# #指數(shù)指數(shù)數(shù)制和指數(shù)

4、部分是用十進制數(shù)表示的數(shù)。指數(shù)部分數(shù)制和指數(shù)部分是用十進制數(shù)表示的數(shù)。指數(shù)部分的數(shù)如果是的數(shù)如果是0可以省去不寫?,F(xiàn)舉例如下:可以省去不寫?,F(xiàn)舉例如下:l10#170# -(十進制數(shù)表示,等于十進制數(shù)表示,等于170)l2#1111_1110# -(二進制數(shù)表示,等于二進制數(shù)表示,等于254)l16#E#E1 -(十六進制數(shù)表示,等于十六進制數(shù)表示,等于2#11100000#,等于,等于224)l16#F.01#E+2 -(十六進制數(shù)表示,等于十六進制數(shù)表示,等于3841.00)l8#377# l -(與(與16#FF#,016#0FF#,2#11111111都為都為255)3 3、字符串型文

5、字、字符串型文字 字符是用字符是用單引號單引號引起來的引起來的ASCII字符,可字符,可以是數(shù)值,也可以是符號或字母,如:以是數(shù)值,也可以是符號或字母,如:R,A,*,Z。 而字符串則是一維的字符數(shù)組,須放在而字符串則是一維的字符數(shù)組,須放在雙雙引號引號中。中。VHDL中有兩種類型的字符串:文字中有兩種類型的字符串:文字字符串和數(shù)位字符串。字符串和數(shù)位字符串。文字字符串是用雙引號引起來的一串文字,文字字符串是用雙引號引起來的一串文字,如:如: “ERROR”,“BOTH S AND Q EQUA TO L”,“X”,“BB$CC”進制基數(shù)符號進制基數(shù)符號“數(shù)位字符串數(shù)位字符串”(1)文字字符串

6、)文字字符串(2)數(shù)位字符串)數(shù)位字符串也稱數(shù)值字符串、位矢量,是預定義的數(shù)據(jù)也稱數(shù)值字符串、位矢量,是預定義的數(shù)據(jù)類型類型BIT的一維數(shù)組,它們所代表的是二進制、的一維數(shù)組,它們所代表的是二進制、八進制或十六進制的數(shù)組,其位矢量的長度八進制或十六進制的數(shù)組,其位矢量的長度即為等值的二進制數(shù)的位數(shù)。即為等值的二進制數(shù)的位數(shù)。 例如:例如:B“1_1101_1110” B“1_1101_1110” - -二進制數(shù)數(shù)組,位矢數(shù)組長度是二進制數(shù)數(shù)組,位矢數(shù)組長度是9 9 X“AD0” X“AD0” - -十六進制數(shù)數(shù)組,位矢數(shù)組長度是十六進制數(shù)數(shù)組,位矢數(shù)組長度是1212B B:二進制基數(shù)符號,表示

7、二進制數(shù)位二進制基數(shù)符號,表示二進制數(shù)位0 0或或1 1。O O:八進制基數(shù)符號。八進制基數(shù)符號。X X:十六進制基數(shù)符號十六進制基數(shù)符號(0(0F) F) 。4 4、下標名及下標段名、下標名及下標段名 下標名下標名用于指示數(shù)組型變量或信號的某一用于指示數(shù)組型變量或信號的某一元素,如:元素,如:a(2) , b(n) 下標段名下標段名則用于指示數(shù)組型變量或信號的則用于指示數(shù)組型變量或信號的某一段元素,其語句格式如下:某一段元素,其語句格式如下: 數(shù)組類型信號名或變量名數(shù)組類型信號名或變量名(表達式表達式1 TO/DOWNTO 表達式表達式2);SIGNAL A,B,C:BIT_VECTOR(0

8、 TO 7);SIGNAL M:INTEGER RANGE 0 TO 3;SIGNAL Y,Z :BIT;Y=A(M); -M是不可計算型下標表示是不可計算型下標表示Z=B(3); -3是可計算型下標表示是可計算型下標表示C (0 TO 3)=A (4 TO 7); -以段的方式進行賦值以段的方式進行賦值C (4 TO 7)=A (0 TO 3); -以段的方式進行賦值以段的方式進行賦值如下是下標名及下標段名使用示例:如下是下標名及下標段名使用示例:1 1、常數(shù)(、常數(shù)(ConstantConstant) 常數(shù)是一個固定的值,主要是為了使設計實體中的常數(shù)更容常數(shù)是一個固定的值,主要是為了使設計

9、實體中的常數(shù)更容易閱讀和修改。常數(shù)一旦被賦值就不能再改變。一般格式:易閱讀和修改。常數(shù)一旦被賦值就不能再改變。一般格式:CONSTANT 常數(shù)名:數(shù)據(jù)類型:常數(shù)名:數(shù)據(jù)類型:= 表達式;表達式;例例 : CONSTANT fbus: BIT_VECTOR: = “01011001”; -總線上數(shù)總線上數(shù)據(jù)設備向量據(jù)設備向量CONSTANT dely: TIME: =25 ns; -輸入輸入/輸出的延遲時間輸出的延遲時間 常數(shù)所賦的值應與定義的數(shù)據(jù)類型一致。常數(shù)所賦的值應與定義的數(shù)據(jù)類型一致。二、二、VHDLVHDL語言的數(shù)據(jù)對象語言的數(shù)據(jù)對象常量的使用范圍取決于它被定義的位置常量的使用范圍取決

10、于它被定義的位置:(1)程序包中定義的常量具有最大的全局化特性,可以用在調程序包中定義的常量具有最大的全局化特性,可以用在調用此程序包的所有設計實體中;用此程序包的所有設計實體中;(2)設計實體中定義的常量,其有效范圍為這個實體定義的所設計實體中定義的常量,其有效范圍為這個實體定義的所有的結構體;有的結構體;(3)設計實體中某一結構體中定義的常量只能用于此結構體;設計實體中某一結構體中定義的常量只能用于此結構體;(4)結構體中某一單元定義的常量,如一個進程中,這個常量結構體中某一單元定義的常量,如一個進程中,這個常量只能用在這一進程中。只能用在這一進程中。2 2、變量、變量( ( Variab

11、le )Variable ) 變量是一個局部變量,它只能在進程語句、函數(shù)語句和過程變量是一個局部變量,它只能在進程語句、函數(shù)語句和過程語句結構中使用,用作局部數(shù)據(jù)存儲。變量常用在實現(xiàn)某種算語句結構中使用,用作局部數(shù)據(jù)存儲。變量常用在實現(xiàn)某種算法的賦值語句中。法的賦值語句中。VARIABLE 變量名:數(shù)據(jù)類型變量名:數(shù)據(jù)類型 約束條件:約束條件:= 表達式;表達式;例例:VARIABLE x, y: INTEGER; -定義定義x,y為整數(shù)變量為整數(shù)變量VARIABLE count: INTEGER RANGE 0 TO 255:=10; -定義計數(shù)變量范圍定義計數(shù)變量范圍一般格式:一般格式:變

12、量賦值語句的語法格式如下:變量賦值語句的語法格式如下:目標變量:目標變量:=表達式;表達式;(1) 賦值語句右方的表達式必須是一個與目標變量有相同賦值語句右方的表達式必須是一個與目標變量有相同數(shù)據(jù)類型的數(shù)值。數(shù)據(jù)類型的數(shù)值。(4) 若將變量用于進程之外,必須將該值賦給一個相同的若將變量用于進程之外,必須將該值賦給一個相同的類型的信號,即進程之間傳遞數(shù)據(jù)靠的是信號。類型的信號,即進程之間傳遞數(shù)據(jù)靠的是信號。(2) 變量不能用于硬件連線和存儲元件。變量不能用于硬件連線和存儲元件。(3) 變量的適用范圍僅限于定義了變量的進程或子程序中。變量的適用范圍僅限于定義了變量的進程或子程序中。例例VARIAB

13、LE x, y :REAL;VARIABLE a, b: BIT_VECTOR(0 TO 7);x:=100.0; -實數(shù)賦值,實數(shù)賦值,x是實數(shù)變量是實數(shù)變量y:=1.5+x; -運算表達式賦值,運算表達式賦值,y也是實數(shù)變量也是實數(shù)變量a:=b;a:=”1010101”; -位矢量賦值,位矢量賦值,a的數(shù)據(jù)類型是位矢量的數(shù)據(jù)類型是位矢量a(3 TO 6):=(1,1,0,1); -段賦值段賦值a(0 TO 5):=b(2 TO 7);a(7):=0; -位賦值位賦值3 3、信號(、信號(SignalSignal) 信號是描述硬件系統(tǒng)的基本數(shù)據(jù)對象,它類似于連接線。它信號是描述硬件系統(tǒng)的基本

14、數(shù)據(jù)對象,它類似于連接線。它除了沒有數(shù)據(jù)流動方向說明以外,其他性質與實體的端口(除了沒有數(shù)據(jù)流動方向說明以外,其他性質與實體的端口(Port)概念一致。概念一致。信號說明格式為:信號說明格式為: SIGNAL 信號名:數(shù)據(jù)類型信號名:數(shù)據(jù)類型 約束條件:約束條件:= 初始值;初始值; 信號初始值的設置不是必需的,而且初始值僅在信號初始值的設置不是必需的,而且初始值僅在VHDL的行的行為仿真中有效。為仿真中有效。例例:SIGNAL temp: STD_LOGIC:=0;SIGNAL flaga, flagb: BIT;SIGNAL date: STD_LOGIC_VECTOR (15 DOWNT

15、O 0);信號的使用和定義范圍是實體、結構體和程序包信號的使用和定義范圍是實體、結構體和程序包.在程序中在程序中: (1) 信號值的代入采用信號值的代入采用“=”代入符,而且信號代入符,而且信號代入時可以附加延時。代入時可以附加延時。 (2) 變量賦值時用變量賦值時用“:=”,不可附加延時。,不可附加延時。 (3) 信號的初始賦值符號仍是信號的初始賦值符號仍是“:=”。例:例: X=Y AFTER 10 ns; -X,Y都是信號,且都是信號,且Y的值經(jīng)過的值經(jīng)過10ns延延時以后才被代入時以后才被代入X。信號是一個全局量,它可以用來進行進程之間的通信。信號是一個全局量,它可以用來進行進程之間的

16、通信。例例 進程進程1:PROCESS(A,B,C,D)BEGIN D=A; X=B+D; D=C; Y=B+D;END PROCESS; D中最初代入的值是中最初代入的值是A,接接著又代入著又代入C值。盡管值。盡管D中先代中先代入入A值,后代入值,后代入C值,在時間值,在時間上有一個的延時,但是,在上有一個的延時,但是,在代入時由于不進行處理,因此代入時由于不進行處理,因此仿真時認為是時間仿真時認為是時間0值延時。值延時。所以所以D的最終值應為的最終值應為C,這樣這樣執(zhí)行的結果:執(zhí)行的結果:X,Y的內容都的內容都為為B+C。進程進程2:PROCESS(A,B,C)VARIABLE D:STD

17、_LOGIC_VECTOR(3 DOWNTO 0);BEGIN D:=A; X=B+D; D:=C; Y=B+D;END PROCESS; 在執(zhí)行在執(zhí)行“D:=A;”語句后,語句后,A的值就被的值就被賦給賦給D,所以所以X為為B+A。此后又執(zhí)行此后又執(zhí)行“D:=C;”,從而使從而使Y為為B+C。由此可看出,信由此可看出,信號的值將進程語句最后所代入的值作為最終號的值將進程語句最后所代入的值作為最終代入值。而變量的值一經(jīng)賦值就變成新的值。代入值。而變量的值一經(jīng)賦值就變成新的值。 在仿真過程中,信號到了規(guī)定的仿真時間才進行賦值,變量在仿真過程中,信號到了規(guī)定的仿真時間才進行賦值,變量的賦值是立即生

18、效的。的賦值是立即生效的。(2)賦值符不同)賦值符不同信號信號 signal count : std_logic_vector(7 downto 0); 變量變量 variable tema:std_logic_vector(3 downto 0); 信號在結構體中聲明;變量在進程中聲明信號在結構體中聲明;變量在進程中聲明(1)聲明的形式與位置不同)聲明的形式與位置不同count=“00000000”, count=“ZZZZZZZZ”count=tema;tema:=0000; (3)賦值生效的時間不同)賦值生效的時間不同信號:進程結束時信號:進程結束時變量:立即生效變量:立即生效(4)進程

19、對信號敏感,對變量不敏感)進程對信號敏感,對變量不敏感(5)作用域不同)作用域不同信號可以是多個進程的全局信號,信號可以是多個進程的全局信號,變量只在定義后的順序域可見變量只在定義后的順序域可見三、三、VHDLVHDL語言的數(shù)據(jù)類型語言的數(shù)據(jù)類型標量型標量型(Scalar Type)復合類型復合類型( (Composite Type)Composite Type)存取類型存取類型(Access Type)文件類型文件類型(Files Type)lVHDL中的數(shù)據(jù)類型可以分成四大類。中的數(shù)據(jù)類型可以分成四大類。 標量型標量型(SCALAR TYPE):屬單元素的最基本的數(shù)據(jù)屬單元素的最基本的數(shù)據(jù)

20、類型,通常用于描述一個單值數(shù)據(jù)對象,它包括實類型,通常用于描述一個單值數(shù)據(jù)對象,它包括實數(shù)類型、整數(shù)類型、枚舉類型和時間類型。數(shù)類型、整數(shù)類型、枚舉類型和時間類型。復合類型復合類型(COMPOSITE TYPE):可以由細小的數(shù)據(jù)可以由細小的數(shù)據(jù)類型復合而成,如可由標量復合而成。復合類型主類型復合而成,如可由標量復合而成。復合類型主要有數(shù)組型要有數(shù)組型(ARRAY)和記錄型和記錄型(RECORD)。存取類型存取類型(ACCESS TYPE):為給定的數(shù)據(jù)類型的數(shù)為給定的數(shù)據(jù)類型的數(shù)據(jù)對象提供存取方式。據(jù)對象提供存取方式。文件類型文件類型(FILES TYPE):用于提供多值存取類型。用于提供多

21、值存取類型。1 1VHDLVHDL的預定義數(shù)據(jù)類型的預定義數(shù)據(jù)類型 VHDL的預定義數(shù)據(jù)類型都是在的預定義數(shù)據(jù)類型都是在VHDL標準程序標準程序包包STANDARD中定義的,在實際使用中,已自動包中定義的,在實際使用中,已自動包含進含進VHDL的源文件中,因而不必通過的源文件中,因而不必通過USE語句以顯語句以顯式調用。式調用。1). 1). 布爾布爾( (BOOLEAN)BOOLEAN)數(shù)據(jù)類型數(shù)據(jù)類型2). 2). 位位( (BIT)BIT)數(shù)據(jù)類型數(shù)據(jù)類型3). 3). 位矢量位矢量( (BIT_VECTOR)BIT_VECTOR)數(shù)據(jù)類型數(shù)據(jù)類型4). 4). 字符字符( (CHARA

22、CTER)CHARACTER)數(shù)據(jù)類型數(shù)據(jù)類型5). 5). 整數(shù)整數(shù)( (INTEGER)INTEGER)數(shù)據(jù)類型數(shù)據(jù)類型6). 6). 實數(shù)實數(shù)( (REAL)REAL)數(shù)據(jù)類型數(shù)據(jù)類型7). 7). 字符串字符串( (STRING)STRING)數(shù)據(jù)類型數(shù)據(jù)類型8). 8). 時間時間( (TIME)TIME)數(shù)據(jù)類型數(shù)據(jù)類型9). 9). 錯誤等級錯誤等級( (SEVERITY_LEVEL)SEVERITY_LEVEL)1) 布爾布爾(BOOLEAN)數(shù)據(jù)類型數(shù)據(jù)類型 程序包程序包STANDARD中定義布爾數(shù)據(jù)類型中定義布爾數(shù)據(jù)類型的源代碼如下:的源代碼如下: TYPE BOOLEAN

23、 IS(FALSE,TRUE); 布爾數(shù)據(jù)類型實際上是一個二值枚舉型布爾數(shù)據(jù)類型實際上是一個二值枚舉型數(shù)據(jù)類型,它的取值有數(shù)據(jù)類型,它的取值有FALSE和和TRUE兩種。兩種。 位數(shù)據(jù)類型也屬于枚舉型,取值只能是位數(shù)據(jù)類型也屬于枚舉型,取值只能是1或或0。位數(shù)據(jù)類型的數(shù)據(jù)對象,如變量、。位數(shù)據(jù)類型的數(shù)據(jù)對象,如變量、信號等,可以參與邏輯運算,運算結果仍信號等,可以參與邏輯運算,運算結果仍是位的數(shù)據(jù)類型。是位的數(shù)據(jù)類型。VHDL綜合器用一個二綜合器用一個二進制位表示進制位表示BIT。在程序包在程序包STANDARD中中定義的源代碼是:定義的源代碼是: TYPE BIT IS (0,1);2) 位

24、位(BIT)數(shù)據(jù)類型數(shù)據(jù)類型 位矢量只是基于位矢量只是基于BIT數(shù)據(jù)類型的數(shù)組,數(shù)據(jù)類型的數(shù)組,在程序包在程序包STANDARD中定義的源代碼是:中定義的源代碼是: TYPE BIT _VECTOR IS ARRAY(NATURAL RANGE)OF BIT;3) 位矢量位矢量(BIT_VECTOR)數(shù)據(jù)類型數(shù)據(jù)類型4) 字符字符(CHARACTER)數(shù)據(jù)類型數(shù)據(jù)類型 字符類型通常用單引號引起來,如字符類型通常用單引號引起來,如A。字符類型區(qū)分大小寫,如字符類型區(qū)分大小寫,如B不同于不同于b。字符類型已在字符類型已在STANDARD程序包中作程序包中作了定義。了定義。 整數(shù)類型的數(shù)代表正整數(shù)、

25、負整數(shù)和零。整數(shù)類型的數(shù)代表正整數(shù)、負整數(shù)和零。5) 整數(shù)整數(shù)(INTEGER)數(shù)據(jù)類型數(shù)據(jù)類型l常用整數(shù)常量的書寫方式示例如下:常用整數(shù)常量的書寫方式示例如下:l2 -十進制整數(shù)十進制整數(shù)l10E4 -十進制整數(shù)十進制整數(shù)l16#D2# -十六進制整數(shù)十六進制整數(shù)l2#11011010# -二進制整數(shù)二進制整數(shù) 自然數(shù)和正整數(shù)是整數(shù)的一個子類型。自然數(shù)和正整數(shù)是整數(shù)的一個子類型。 在在STANDARD程序包中定義的源代碼如下:程序包中定義的源代碼如下: SUBTYPE NATURAL IS INTEGER RANGE 0 TO INTEGER HIGH; SUBTYPE POSITIVE I

26、S INTEGER RANGE 1 TO INTEGER HIGH;自然數(shù)自然數(shù)(NATURAL)和正整數(shù)和正整數(shù)(POSITIVE)數(shù)據(jù)類型數(shù)據(jù)類型l實數(shù)常量的書寫方式舉例如下:實數(shù)常量的書寫方式舉例如下:l65971.333333 -十進制浮點數(shù)十進制浮點數(shù)l8#43.6#E+4 -八進制浮點數(shù)八進制浮點數(shù)l43.6E-4 -十進制浮點數(shù)十進制浮點數(shù)6) 實數(shù)實數(shù)(REAL)數(shù)據(jù)類型數(shù)據(jù)類型 VHDL的實數(shù)類型類似于數(shù)學上的實數(shù),或稱浮的實數(shù)類型類似于數(shù)學上的實數(shù),或稱浮點數(shù)。實數(shù)的取值范圍為點數(shù)。實數(shù)的取值范圍為-1.0E38+1.0E38。通常情通常情況下,實數(shù)類型僅能在況下,實數(shù)類型

27、僅能在VHDL仿真器中使用,仿真器中使用,VHDL綜合器不支持實數(shù),因為實數(shù)類型的實現(xiàn)相當復雜,綜合器不支持實數(shù),因為實數(shù)類型的實現(xiàn)相當復雜,目前在電路規(guī)模上難以承受。目前在電路規(guī)模上難以承受。 字符串數(shù)據(jù)類型是字符數(shù)據(jù)類型的一字符串數(shù)據(jù)類型是字符數(shù)據(jù)類型的一個非約束型數(shù)組,或稱為字符串數(shù)組。字個非約束型數(shù)組,或稱為字符串數(shù)組。字符串必須用雙引號標明。如:符串必須用雙引號標明。如:7) 字符串字符串(STRING)數(shù)據(jù)類型數(shù)據(jù)類型VARIABLE string_var : STRING (1 TO 7 ) ;string_var := a b c d ; VHDL中唯一的預定義物理類型是時間。

28、完整中唯一的預定義物理類型是時間。完整的時間類型包括整數(shù)和物理量單位兩部分,整數(shù)的時間類型包括整數(shù)和物理量單位兩部分,整數(shù)和單位之間至少留一個空格,如和單位之間至少留一個空格,如55 ms,20 ns。8) 時間時間(TIME)數(shù)據(jù)類型數(shù)據(jù)類型TYPE time IS RANGE 2147483647 TO 2147483647 units fs ; - 飛秒,飛秒,VHDL中的最小時間單位中的最小時間單位 ps = 1000 fs ; - 皮秒皮秒 ns = 1000 ps ; - 納秒納秒 us = 1000 ns ; - 微秒微秒 ms = 1000 us ; - 毫秒毫秒 sec =

29、1000 ms ; - 秒秒 min = 60 sec ; - 分分 hr = 60 min ; - 時時end units ;STANDARD 程序包中定義時間如下:程序包中定義時間如下: 在在VHDL仿真器中,錯誤等級用來指示設計仿真器中,錯誤等級用來指示設計系統(tǒng)的工作狀態(tài),共有四種可能的狀態(tài)值:系統(tǒng)的工作狀態(tài),共有四種可能的狀態(tài)值: NOTE(注意注意)、WARNING(警告警告)、 ERROR(出錯出錯)、FAILURE(失敗失敗)。 在仿真過程中,可輸出這四種值來提示被仿在仿真過程中,可輸出這四種值來提示被仿真系統(tǒng)當前的工作情況。真系統(tǒng)當前的工作情況。 STANDARD 程序包中程序

30、包中定義如下:定義如下: TYPE SEVERITY_LEVEL IS (NOTE,WARNING,ERROR,F(xiàn)AILURE);9) 錯誤等級錯誤等級(SEVERITY_LEVEL) 在在IEEE庫的程序包庫的程序包STD_LOGIC_1164中,定中,定義了兩個非常重要的數(shù)據(jù)類型,即義了兩個非常重要的數(shù)據(jù)類型,即: 標準邏輯位標準邏輯位STD_LOGIC 標準邏輯矢量標準邏輯矢量STD_LOGIC_VECTOR1) 標準邏輯位標準邏輯位STD_LOGIC數(shù)據(jù)類型數(shù)據(jù)類型2. 2. IEEEIEEE預定義標準邏輯位與矢量預定義標準邏輯位與矢量TYPE STD_LOGIC IS (U,X,0,

31、1,Z,W,L,H,-); 在在IEEE庫程序包庫程序包STD_LOGIC_1164中的數(shù)據(jù)類中的數(shù)據(jù)類型型STD_LOGIC的定義如下所示:的定義如下所示:“U” 未初始化未初始化 “X” 強不定強不定“0” 0 “1” 1“Z” 高阻高阻 “W” 弱信號不弱信號不定定“L” 弱信號弱信號0 “H” 弱信號弱信號1“_” 忽略忽略(或不可能情況或不可能情況) 注意在使用該類型數(shù)據(jù)時,在程序中必須寫出庫說注意在使用該類型數(shù)據(jù)時,在程序中必須寫出庫說明語句和使用包集合的說明語句。明語句和使用包集合的說明語句。lLIBRARY IEEE;lUSE IEEE.STD_LOGIC_1164.ALL;S

32、TD_LOGIC_VECTOR類型定義如下:類型定義如下:TYPE STD_LOGIC_VECTOR IS ARRAY (NATURAL RANGE) OF STD_LOGIC;2) 標準邏輯矢量標準邏輯矢量(STD_LOGIC_VECTOR) VHDL綜合工具配帶的擴展程序包中,定義了綜合工具配帶的擴展程序包中,定義了一些有用的類型。如一些有用的類型。如Synopsys公司在公司在IEEE庫中加庫中加入的程序包入的程序包STD_LOGIC_ARITH中定義了如下的中定義了如下的數(shù)據(jù)類型:數(shù)據(jù)類型: 無符號型無符號型(UNSIGNED) 有符號型有符號型(SIGNED) 小整型小整型(SMAL

33、L_INT)3. 3. 其他預定義標準數(shù)據(jù)類型其他預定義標準數(shù)據(jù)類型TYPE UNSIGNED IS ARRAY (NATURAL RANGE ) OF STD_LOGIC;TYPE SIGNED IS ARRAY (NATURAL RANGE) OF STD_LOGIC;SUBTYPE SMALL_INT IS INTEGER RANGE 0 TO 1; 如果將信號或變量定義為這幾個數(shù)據(jù)類型,就可如果將信號或變量定義為這幾個數(shù)據(jù)類型,就可以使用本程序包中定義的運算符。在使用之前,請以使用本程序包中定義的運算符。在使用之前,請注意必須加入下面的語句:注意必須加入下面的語句: 在程序包在程序包S

34、TD_LOGIC_ARITH中的類型定義如下:中的類型定義如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_ARITH.ALL;1) 無符號數(shù)據(jù)類型無符號數(shù)據(jù)類型(UNSIGNED TYPE) UNSIGNED數(shù)據(jù)類型代表一個無符號的數(shù)據(jù)類型代表一個無符號的數(shù)值,在綜合器中,這個數(shù)值被解釋為一個二數(shù)值,在綜合器中,這個數(shù)值被解釋為一個二進制數(shù),這個二進制數(shù)的最左位是其最高位。進制數(shù),這個二進制數(shù)的最左位是其最高位。 2) 有符號數(shù)據(jù)類型有符號數(shù)據(jù)類型(SIGNED TYPE) SIGNED數(shù)據(jù)類型表示一個有符號的數(shù)值,數(shù)據(jù)類型表示一個有符號的數(shù)值,綜合器將其解釋為補碼,此數(shù)

35、的最高位是符號綜合器將其解釋為補碼,此數(shù)的最高位是符號位,例如:位,例如:SIGNED(“0101”) 代表代表+5,5;SIGNED(“1101”) 代表代表-5。 VHDL允許用戶自行定義新的數(shù)據(jù)類型,允許用戶自行定義新的數(shù)據(jù)類型,它們可以有多種,如它們可以有多種,如: 4. 4. 用戶自定義數(shù)據(jù)類型方式用戶自定義數(shù)據(jù)類型方式可由用戶定義的數(shù)據(jù)類型常見的有可由用戶定義的數(shù)據(jù)類型常見的有8種:種: 枚舉(枚舉(Enumerated)類型;類型; 整數(shù)(整數(shù)(Integer)類型類型 實數(shù)(實數(shù)(Real),),浮點數(shù)(浮點數(shù)(Floating)類型;類型; 數(shù)組(數(shù)組(Array)類型;類型

36、; 存?。ù嫒。ˋccess)類型;類型; 文件(文件(File)類型;類型; 記錄(記錄(Recode)類型;類型; 時間(時間(Time)類型。類型。語法結構如下:語法結構如下:1) TYPE語句用法語句用法TYPE 數(shù)據(jù)類型名數(shù)據(jù)類型名 IS 數(shù)據(jù)類型定義數(shù)據(jù)類型定義 OF 基本數(shù)據(jù)類型基本數(shù)據(jù)類型;TYPE 數(shù)據(jù)類型名數(shù)據(jù)類型名 IS 數(shù)據(jù)類型定義數(shù)據(jù)類型定義 OF 基本數(shù)據(jù)類型基本數(shù)據(jù)類型 約束范圍約束范圍;TYPE current IS REAL RANGE -1E4 TO 1E4;TYPE digit IS INTEGER ;TYPE digit1 IS INTEGER RANG

37、E 0 TO 9;例如:例如:數(shù)據(jù)類型如果沒有被指定,則默認為整數(shù)類型。數(shù)據(jù)類型如果沒有被指定,則默認為整數(shù)類型。 子類型子類型SUBTYPE只是由只是由TYPE所定義所定義的原數(shù)據(jù)類型的一個子集。的原數(shù)據(jù)類型的一個子集。 子類型子類型SUBTYPE的語句格式如下:的語句格式如下:2) SUBTYPE語句用法語句用法SUBTYPE 子類型名子類型名 IS 基本數(shù)據(jù)類型基本數(shù)據(jù)類型 RANGE 約束范圍;約束范圍;SUBTYPE N1 IS INTEGER RANGE 10 TO 100; 例如:例如: VHDL中的枚舉數(shù)據(jù)類型是用文字符號中的枚舉數(shù)據(jù)類型是用文字符號來表示一組實際的二進制數(shù)的類

38、型來表示一組實際的二進制數(shù)的類型(若直接若直接用數(shù)值來定義,則必須使用單引號用數(shù)值來定義,則必須使用單引號)。【例】【例】TYPE M_STATE IS( STATE1,STATE2,STATE3,STATE4,STATE5);3) 枚舉類型4) 數(shù)組類型數(shù)組類型 數(shù)組類型屬復合類型,它是將一組具有相數(shù)組類型屬復合類型,它是將一組具有相同數(shù)據(jù)類型的元素集合在一起,作為一個數(shù)同數(shù)據(jù)類型的元素集合在一起,作為一個數(shù)據(jù)對象來處理的數(shù)據(jù)類型。數(shù)組可以是一維據(jù)對象來處理的數(shù)據(jù)類型。數(shù)組可以是一維(每個元素只有一個下標每個元素只有一個下標)數(shù)組或多維數(shù)組數(shù)組或多維數(shù)組(每每個元素有多個下標個元素有多個下標

39、)。VHDL仿真器支持多維仿真器支持多維數(shù)組,但數(shù)組,但VHDL綜合器只支持一維數(shù)組。綜合器只支持一維數(shù)組。 數(shù)組的元素可以是任何一種數(shù)據(jù)類型,用數(shù)組的元素可以是任何一種數(shù)據(jù)類型,用以定義數(shù)組元素的下標范圍子句決定了數(shù)組以定義數(shù)組元素的下標范圍子句決定了數(shù)組中元素的個數(shù)以及元素的排序方向,即下標中元素的個數(shù)以及元素的排序方向,即下標數(shù)是由低到高,或是由高到低。數(shù)是由低到高,或是由高到低。限定性數(shù)組限定性數(shù)組定義語句格式如下:定義語句格式如下: TYPE 數(shù)組名數(shù)組名 IS ARRAY (數(shù)組范圍數(shù)組范圍) OF 數(shù)據(jù)類型;數(shù)據(jù)類型; 【例】【例】TYPE STB IS ARRAY(7 DOWN

40、TO 0) OF STD_LOGIC;【例】【例】TYPE X IS (LOW,HIGH);TYPE DATA_BUS IS ARRAY (0 TO 7,X) OF BIT; 首先定義首先定義X為兩元素的枚舉數(shù)據(jù)類型,然后將為兩元素的枚舉數(shù)據(jù)類型,然后將DATA_BUS定義為一個數(shù)組類型,其中每一元素的數(shù)據(jù)類型是定義為一個數(shù)組類型,其中每一元素的數(shù)據(jù)類型是BIT。非限制性數(shù)組非限制性數(shù)組的定義語句格式如下:的定義語句格式如下: TYPE 數(shù)組名數(shù)組名 IS ARRAY (數(shù)組下標名數(shù)組下標名 RANGE) OF 數(shù)據(jù)類型;數(shù)據(jù)類型; 其中,數(shù)組名是定義的非限制性數(shù)組其中,數(shù)組名是定義的非限制性

41、數(shù)組類型的取名;數(shù)組下標名是以整數(shù)類型設類型的取名;數(shù)組下標名是以整數(shù)類型設定的一個數(shù)組下標名稱;符號定的一個數(shù)組下標名稱;符號“”是下是下標范圍待定符號,用到該數(shù)組類型時,再標范圍待定符號,用到該數(shù)組類型時,再填入具體的數(shù)值范圍;數(shù)據(jù)類型是數(shù)組中填入具體的數(shù)值范圍;數(shù)據(jù)類型是數(shù)組中每一元素的數(shù)據(jù)類型。每一元素的數(shù)據(jù)類型?!纠俊纠縏YPE BIT_VECTOR IS ARRAY(NATURAL RANE) OF BIT;VARIABLE VA:BIT_VECTOR(1 TO 6); -將數(shù)組取值范圍定在將數(shù)組取值范圍定在16【例】【例】 TYPE LOGIC_VECTOR IS ARRAY

42、(NATURAL RANGE,POSITIVE RANGE) OF LOGIC; VARIABLE L16_OBJECT:LOGIC_VECTOR(0 TO 7,1 TO 2); -限定范圍限定范圍 由已定義的、數(shù)據(jù)類型不同的對象元素由已定義的、數(shù)據(jù)類型不同的對象元素構成的數(shù)組稱為記錄類型的對象。定義記錄構成的數(shù)組稱為記錄類型的對象。定義記錄類型的語句格式如下:類型的語句格式如下: TYPE 記錄類型名記錄類型名 IS RECORD 元素名元素名 : 元素數(shù)據(jù)類型;元素數(shù)據(jù)類型; 元素名元素名 : 元素數(shù)據(jù)類型;元素數(shù)據(jù)類型; END RECORD 記錄類型名記錄類型名;5) 記錄類型記錄類型

43、【例】【例】TYPE RECDATA IS RECORD element1 TIME; element2 TIME; element3 STD_LOGIC; END RECORD RECDATA;【例】【例】 利用記錄類型定義的一個微處理器命令信息表。利用記錄類型定義的一個微處理器命令信息表。TYPE REGNAME IS (AX,BX,CX,DX);TYPE OPERATION IS RECORD OPSTRSTRING(1 TO 10); OPCODEBIT_VECTOR(3 DOWNTO 0); OP1,OP2,RES:REGNAME;END RECORD OPERATION; 由于由于VHDL是一種強類型語言,這就意味著即是一種強類型語言,這就意味著即使

溫馨提示

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

評論

0/150

提交評論