哈工大CPLD教程-VHDL語言元素_第1頁
哈工大CPLD教程-VHDL語言元素_第2頁
哈工大CPLD教程-VHDL語言元素_第3頁
哈工大CPLD教程-VHDL語言元素_第4頁
哈工大CPLD教程-VHDL語言元素_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 第二章第二章 VHDLVHDL語言元素語言元素 2.1 VHDL語言的客體語言的客體2.2 VHDL語言的數(shù)據(jù)類型語言的數(shù)據(jù)類型 2.3 VHDL數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換 2.4 VHDL詞法規(guī)則與標(biāo)識符詞法規(guī)則與標(biāo)識符 2.1 VHDL2.1 VHDL語言的客體語言的客體 VHDL語言中,可以賦予一個質(zhì)的對象就稱為客體。客語言中,可以賦予一個質(zhì)的對象就稱為客體。客體主要包括以下三種:變量(體主要包括以下三種:變量(VARIABLE)、常量)、常量(CONSTANT)、信號()、信號(SIGNAL)。)。 (常數(shù)常數(shù))定義一個常數(shù)主要是為了使設(shè)計實體中的某些量易定義一個常數(shù)主要是為了使設(shè)計實

2、體中的某些量易于閱讀和修改。常數(shù)說明就是對某一常數(shù)名賦予一于閱讀和修改。常數(shù)說明就是對某一常數(shù)名賦予一個固定的值。通常在程序開始前進(jìn)行賦值,該值的個固定的值。通常在程序開始前進(jìn)行賦值,該值的數(shù)據(jù)類型在說明語句中說明。數(shù)據(jù)類型在說明語句中說明。常數(shù)說明語句格式為:常數(shù)說明語句格式為:CONSTANT 常數(shù)名常數(shù)名:數(shù)據(jù)類型:數(shù)據(jù)類型 := 表達(dá)式;表達(dá)式; 例如:例如:CONSTANT Vcc : REAL := 5.0;CONSTANT Fbus : BIT_VECTOR := “1011”; CONSTANT Delay : TIME := 10ns; 注注:常量是一個恒定不變的值,一旦做了

3、數(shù)據(jù)類型和常量是一個恒定不變的值,一旦做了數(shù)據(jù)類型和賦值定義,它在程序中就不能再改變。賦值定義,它在程序中就不能再改變。 變量只能在進(jìn)程和子程序中用,是一個局部量,不能將信變量只能在進(jìn)程和子程序中用,是一個局部量,不能將信息帶出對它做出定義的當(dāng)前設(shè)計單元。與信號不同,變量息帶出對它做出定義的當(dāng)前設(shè)計單元。與信號不同,變量的賦值是理想化數(shù)據(jù)傳輸,其賦值是立即生效的,不存在的賦值是理想化數(shù)據(jù)傳輸,其賦值是立即生效的,不存在任何的延時行為。任何的延時行為。變量定義語句的格式為:變量定義語句的格式為:VARIABLE 變量名變量名 : 數(shù)據(jù)類型數(shù)據(jù)類型 : 約束條件約束條件 := 初始值;初始值;例如

4、:例如:VARIABLE n: INTEGER RANGE 0 TO 15 := 2;VARIABLE a: INTEGER; 變量賦值語句的格式為:變量賦值語句的格式為:目標(biāo)變量名目標(biāo)變量名 := 表達(dá)式;表達(dá)式;賦值語句賦值語句 “:=” 右邊的表達(dá)式必須與目標(biāo)變量具有相同右邊的表達(dá)式必須與目標(biāo)變量具有相同的數(shù)據(jù)類型,這個表達(dá)式可以是一個運算表達(dá)式也可以的數(shù)據(jù)類型,這個表達(dá)式可以是一個運算表達(dá)式也可以是一個數(shù)值。變量賦值語句左邊的目標(biāo)變量可以是單值是一個數(shù)值。變量賦值語句左邊的目標(biāo)變量可以是單值變量,也可以是變量的集合。變量,也可以是變量的集合。例如定義變量:例如定義變量:VARIABLE

5、 a,b := REAL; VARIABLE x,y := BIT_VECTOR(0 TO 7);); 信號是電子電路內(nèi)部硬件連接的抽象。它可以作為設(shè)計實信號是電子電路內(nèi)部硬件連接的抽象。它可以作為設(shè)計實體中的并行語句模塊間交流信息的通道。體中的并行語句模塊間交流信息的通道。信號及其相關(guān)的信號及其相關(guān)的延時語句延時語句明顯地體現(xiàn)了硬件系統(tǒng)的特征。明顯地體現(xiàn)了硬件系統(tǒng)的特征。信號定義語句的格式為:信號定義語句的格式為:SIGNAL 信號名信號名:數(shù)據(jù)類型:約束條件:數(shù)據(jù)類型:約束條件 := 表達(dá)式;表達(dá)式; 例如:例如:SIGNAL gnd :BIT := 0; SIGNAL data :STD

6、_LOGIC_VECTOR (7 DOWNTO 0); 信號賦值語句表達(dá)式為:信號賦值語句表達(dá)式為:目標(biāo)信號名目標(biāo)信號名 =表達(dá)式;表達(dá)式;符號符號 “=” 表示賦值操作,即將數(shù)據(jù)信息傳入。數(shù)據(jù)信息傳表示賦值操作,即將數(shù)據(jù)信息傳入。數(shù)據(jù)信息傳入時可以設(shè)置延時過程,這與器件的實際傳播延時十分接近。入時可以設(shè)置延時過程,這與器件的實際傳播延時十分接近。因此信號值的代入采用因此信號值的代入采用“=”代入符,而不是像變量賦值時那代入符,而不是像變量賦值時那樣用樣用“:”。但。但信號信號定義時定義時初始初始賦值符號賦值符號“:”,即仿真的,即仿真的時間坐標(biāo)是從賦初始值開始的。時間坐標(biāo)是從賦初始值開始的。

7、信號賦值語句舉例:信號賦值語句舉例:x = y;a = 1;s1 = s2 AFTER 10 ns;注意注意:變量和信號都必須先變量和信號都必須先定義定義,后賦值。注意賦值符后賦值。注意賦值符“0,1/H =1,OTHERS=0););SIGNAL b:BIT; SIGNAL b:BIT; SIGNAL s:STD_ULOGIC; BEGIN b= typecon_con (s); 2.4 VHDL操作符操作符 與其他程序設(shè)計語言相似,與其他程序設(shè)計語言相似,VHDL中的表達(dá)式也是由運算符將中的表達(dá)式也是由運算符將基本元素連接起來形成。這里的基本元素包括對象名、文字、基本元素連接起來形成。這里

8、的基本元素包括對象名、文字、函數(shù)調(diào)用及用括號括起來的表達(dá)式。函數(shù)調(diào)用及用括號括起來的表達(dá)式。在在VHDL語言中共有語言中共有4類操作符類操作符,可以分別進(jìn)行,可以分別進(jìn)行邏輯運算邏輯運算(LOGICAL)、)、關(guān)系運算關(guān)系運算(RELATIONAL)、)、算術(shù)運算算術(shù)運算(ARITHMETIC)和)和并置運算并置運算(CONCATENATION)。需要)。需要指出的是指出的是操作符操作的對象是操作數(shù),且操作數(shù)的類型應(yīng)該和操作符操作的對象是操作數(shù),且操作數(shù)的類型應(yīng)該和操作符所要求的類型相一致操作符所要求的類型相一致。另外,運算。另外,運算操作符是有優(yōu)先級的操作符是有優(yōu)先級的,例如,邏輯運算符例如

9、,邏輯運算符not,在所有操作符中優(yōu)先級最高。,在所有操作符中優(yōu)先級最高。 1.邏輯運算符邏輯運算符在在VHDL語言中,共有語言中,共有6種邏輯運算符,他們分別是:種邏輯運算符,他們分別是: NOT 取反;取反; AND 與;與; OR 或;或; NAND 與非;與非; NOR 或非;或非; XOR 異或。異或。 這這6種邏輯運算符可以對種邏輯運算符可以對“STD_LOGIC ”和和“BIT”等邏等邏輯型數(shù)據(jù)、輯型數(shù)據(jù)、“STD_LOGIC _VECTOR”邏輯型數(shù)組及邏輯型數(shù)組及布布爾數(shù)據(jù)爾數(shù)據(jù)進(jìn)行邏輯運算。進(jìn)行邏輯運算。必須注意,運算符的左邊和右邊,必須注意,運算符的左邊和右邊,以及代入的

10、信號的數(shù)據(jù)類型必須是相同的以及代入的信號的數(shù)據(jù)類型必須是相同的。 2.算術(shù)運算符算術(shù)運算符VHDL語言中有語言中有5類算術(shù)運算符,他們分別是:類算術(shù)運算符,他們分別是:求和操作符求和操作符: (加)、(減)(加)、(減)求積操作符求積操作符:*(乘)、(乘)、/(除)、(除)、MOD(求模)、(求模)、REM(取余)(取余)符號操作符符號操作符: (正)、(負(fù))(正)、(負(fù))混合操作符混合操作符: *(指數(shù))、(指數(shù))、ABS(取絕對值)(取絕對值)移位操作符移位操作符:SLL(邏輯左移)、(邏輯左移)、SRL(邏輯右移)、(邏輯右移)、SLA(算術(shù)左移)、(算術(shù)左移)、SRA(算術(shù)右移)、(

11、算術(shù)右移)、ROL(邏輯循環(huán)左移)、(邏輯循環(huán)左移)、ROR邏輯循環(huán)右移)邏輯循環(huán)右移) 3.關(guān)系運算符關(guān)系運算符VHDL語言中有語言中有6種關(guān)系運算符,他們分別是:種關(guān)系運算符,他們分別是: = 等于;等于; /= 不等于;不等于; 小于;小于; 大于;大于; = 大于等于;大于等于;4.并置運算符并置運算符& 連接連接 SIGNAL g,h,i:STD_LOGIC;SIGNAL c,d,e:STD_LOGIC _VECTOR(1 TO 0);); d = i & NOT h;- -元素與元素并置,形成長度為元素與元素并置,形成長度為2的數(shù)組的數(shù)組 a = c & d

12、; - -數(shù)組與數(shù)組并置,形成長度為數(shù)組與數(shù)組并置,形成長度為4的數(shù)組的數(shù)組 5.VHDL操作符的優(yōu)先順序操作符的優(yōu)先順序 運算符運算符 優(yōu)先級優(yōu)先級NOT,ABS,* 最高優(yōu)先級最高優(yōu)先級 *,/,MOD,REM +(正號),(負(fù)號)(正號),(負(fù)號)+,& SLL,SLA,SRL,SRA,ROL,ROR =,/=,= AND,OR,NAND,NOR,XOR,XNOR 最低優(yōu)先級最低優(yōu)先級 2.4 VHDL詞法規(guī)則與標(biāo)識符詞法規(guī)則與標(biāo)識符 1.注釋注釋 為了提高為了提高VHDL源程序的可讀性,在源程序的可讀性,在VHDL中可以寫入注釋。中可以寫入注釋。注釋以注釋以- -開頭直到本行末

13、尾的一段文字。在開頭直到本行末尾的一段文字。在MUX+PLUS中中可以看見,可以看見,敲入敲入- -之后,后面字體的顏色就發(fā)生改變之后,后面字體的顏色就發(fā)生改變。注釋不注釋不是是VHDL設(shè)計描述的一部分,編譯后存入數(shù)據(jù)庫中的信息不包設(shè)計描述的一部分,編譯后存入數(shù)據(jù)庫中的信息不包含注釋。含注釋。 注釋舉例:注釋舉例:Q:OUT STD_LOGIC _VECTOR(11 DOWNTO 0););-A/D轉(zhuǎn)換數(shù)據(jù)輸出顯示(轉(zhuǎn)換數(shù)據(jù)輸出顯示(行行注釋注釋)-SRAM 數(shù)據(jù)寫入控制狀態(tài)機(jī)(數(shù)據(jù)寫入控制狀態(tài)機(jī)(段注釋段注釋)WRIT_STATE:PROCESS(clk,rst)-SRAM寫入控制狀態(tài)機(jī)時序

14、電路進(jìn)程寫入控制狀態(tài)機(jī)時序電路進(jìn)程 2.數(shù)字?jǐn)?shù)字?jǐn)?shù)字型文字可以有多種表達(dá)方式:可以是十進(jìn)制數(shù),也可以表示為二進(jìn)制、數(shù)字型文字可以有多種表達(dá)方式:可以是十進(jìn)制數(shù),也可以表示為二進(jìn)制、八進(jìn)制或十六進(jìn)制等為基的數(shù),可以是整數(shù),也可以是含有小數(shù)點的浮點數(shù)。八進(jìn)制或十六進(jìn)制等為基的數(shù),可以是整數(shù),也可以是含有小數(shù)點的浮點數(shù)?,F(xiàn)舉例如下?,F(xiàn)舉例如下。十進(jìn)制整數(shù)表示法:如十進(jìn)制整數(shù)表示法:如012 5 78_456 (=78456) 2E6在相鄰數(shù)字之間插入下劃線,對十進(jìn)制數(shù)值不產(chǎn)生影響,僅僅是為了提高文在相鄰數(shù)字之間插入下劃線,對十進(jìn)制數(shù)值不產(chǎn)生影響,僅僅是為了提高文字的可讀性。允許在數(shù)字之前冠以若干個字

15、的可讀性。允許在數(shù)字之前冠以若干個0,但不允許在數(shù)字之間存在空格,但不允許在數(shù)字之間存在空格。以基表示的數(shù):以基表示的數(shù):用這種方式表示的數(shù)由五個部分組成。第一部分,用十進(jìn)用這種方式表示的數(shù)由五個部分組成。第一部分,用十進(jìn)制數(shù)標(biāo)明數(shù)值進(jìn)位的基數(shù);第二部分,數(shù)值隔離符號制數(shù)標(biāo)明數(shù)值進(jìn)位的基數(shù);第二部分,數(shù)值隔離符號“#”;第三部分,表達(dá);第三部分,表達(dá)的文字;第四部分,指數(shù)隔離符號的文字;第四部分,指數(shù)隔離符號“#”;第五部分,用十進(jìn)制表示的指數(shù)部;第五部分,用十進(jìn)制表示的指數(shù)部分,這一部分的數(shù)如果為分,這一部分的數(shù)如果為0可以省去不寫。如可以省去不寫。如2#111_1011# 8#1473#

16、16#A8#E1 016#F.01#E+4對以基表示的數(shù)而言,相鄰數(shù)字間插入下劃線不影響數(shù)值。基的最小數(shù)為對以基表示的數(shù)而言,相鄰數(shù)字間插入下劃線不影響數(shù)值?;淖钚?shù)為2,最大數(shù)為最大數(shù)為16,以基表示的數(shù)中允許出現(xiàn),以基表示的數(shù)中允許出現(xiàn)A至至F的字母,大小寫字母意義無區(qū)的字母,大小寫字母意義無區(qū)別。別。 實數(shù):實數(shù)必須帶有小數(shù)點。如實數(shù):實數(shù)必須帶有小數(shù)點。如 12.0 0.0 3.14 6_741_113.666 52.6 E2物理量文字:綜合器不支持物理量物理量文字:綜合器不支持物理量文字文字的綜合。如的綜合。如 60 s(秒)(秒) 100 m (米)(米) 177 A(安培)(安

17、培) 3.字符和字符串字符和字符串字符是用單引號引起來的字符是用單引號引起來的ASC字符,可以是數(shù)值,也字符,可以是數(shù)值,也可以是符號或字母,如可以是符號或字母,如 E, e, $, 23, A 字符串是一維的字符數(shù)組,需放在雙引號中。有兩種類字符串是一維的字符數(shù)組,需放在雙引號中。有兩種類型的字符串:文字字符串和位矢量字符串。型的字符串:文字字符串和位矢量字符串。文字字符串是用雙引號引起來的一串文字。如文字字符串是用雙引號引起來的一串文字。如 “FALSE”, “X”, “THIS IS END” 位矢量字符串位矢量字符串是被雙引號引起來的擴(kuò)展的數(shù)字序列,數(shù)字序是被雙引號引起來的擴(kuò)展的數(shù)字序

18、列,數(shù)字序列前冠以基數(shù)說明符?;鶖?shù)符有列前冠以基數(shù)說明符?;鶖?shù)符有“B”、“O”、“X”,他們的他們的含義如下。含義如下。B:二進(jìn)制基數(shù)符號,表示二進(jìn)制位二進(jìn)制基數(shù)符號,表示二進(jìn)制位0或或1,在字符串中每一個,在字符串中每一個位表示一個位表示一個BIT。O:八進(jìn)制基數(shù)符號,在字符串中每一個數(shù)代表一個八進(jìn)制數(shù),八進(jìn)制基數(shù)符號,在字符串中每一個數(shù)代表一個八進(jìn)制數(shù),即代表一個即代表一個3位(位(BIT)的二進(jìn)制數(shù)。)的二進(jìn)制數(shù)。X:十六進(jìn)制基數(shù)符號,代表一個十六進(jìn)制數(shù),即代表一個十六進(jìn)制基數(shù)符號,代表一個十六進(jìn)制數(shù),即代表一個4位二進(jìn)制數(shù)。位二進(jìn)制數(shù)。例如:例如: B“1011_1111”, O“1

19、52”, X“F821” 4.下標(biāo)名下標(biāo)名下標(biāo)名用于指示數(shù)組型變量或信號的某一元素。下標(biāo)名用于指示數(shù)組型變量或信號的某一元素。SIGNAL a,b:BIT _VECTOR(0 TO 3););SIGNAL s:INTEGER RANGE 0 TO 2;SIGNAL x,y:BIT;x = a (s);y = b (3);上例中,上例中,a (s)為一下標(biāo)語句,為一下標(biāo)語句,s是不可計算的下標(biāo)名,只能在是不可計算的下標(biāo)名,只能在特定情況下進(jìn)行綜合;特定情況下進(jìn)行綜合;b (3)的下標(biāo)為的下標(biāo)為3,可以進(jìn)行綜合。,可以進(jìn)行綜合。 標(biāo)識符是最常用的操作符,可以是常數(shù)、變量、信號、端口、標(biāo)識符是最常用

20、的操作符,可以是常數(shù)、變量、信號、端口、子程序或參數(shù)的名字。標(biāo)識符規(guī)則是子程序或參數(shù)的名字。標(biāo)識符規(guī)則是VHDL語言中符號書寫的語言中符號書寫的一般規(guī)則,為一般規(guī)則,為EDA工具提供了標(biāo)準(zhǔn)的書寫規(guī)范。工具提供了標(biāo)準(zhǔn)的書寫規(guī)范。VHDL93對對VHDL87版本的標(biāo)識符語法規(guī)則進(jìn)行了擴(kuò)展,通常稱版本的標(biāo)識符語法規(guī)則進(jìn)行了擴(kuò)展,通常稱VHDL87版本標(biāo)識符為短標(biāo)識符,版本標(biāo)識符為短標(biāo)識符,VHDL93版標(biāo)識符為擴(kuò)展標(biāo)識符。版標(biāo)識符為擴(kuò)展標(biāo)識符。1.短標(biāo)識符短標(biāo)識符VHDL短標(biāo)識符需遵守以下規(guī)則:短標(biāo)識符需遵守以下規(guī)則:(1)必須以)必須以英文字母開頭英文字母開頭;(2)英文字母英文字母、數(shù)字(、數(shù)字

21、(09)和)和下劃線下劃線都是有效的字符;都是有效的字符;(3)短標(biāo)識符不區(qū)分大小寫;)短標(biāo)識符不區(qū)分大小寫;(4)下劃線()下劃線(_)的前后都必須有英文字母或數(shù)字。)的前后都必須有英文字母或數(shù)字。 一般的,在書寫程序時,應(yīng)將一般的,在書寫程序時,應(yīng)將VHDL的的保留字保留字大寫或黑體大寫或黑體,設(shè)計者設(shè)計者自己定義的字符小寫自己定義的字符小寫,以使得程序,以使得程序便于閱讀和檢查便于閱讀和檢查。盡管盡管VHDL仿真綜合時不區(qū)分大小寫,但一個優(yōu)秀的硬件程仿真綜合時不區(qū)分大小寫,但一個優(yōu)秀的硬件程序設(shè)計師應(yīng)該養(yǎng)成良好的習(xí)慣。序設(shè)計師應(yīng)該養(yǎng)成良好的習(xí)慣。例:例:一些合法的標(biāo)識符:一些合法的標(biāo)識符:S_MACHINE,present

溫馨提示

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

評論

0/150

提交評論