最新VHDL字符及數據類型_第1頁
最新VHDL字符及數據類型_第2頁
最新VHDL字符及數據類型_第3頁
最新VHDL字符及數據類型_第4頁
最新VHDL字符及數據類型_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第四章第四章 vhdl字符及數據類型字符及數據類型14.1 vhdl文字文字4.1.1 數字數字 整數:整數:整數都是十進制的數,如:5, 678, 0, 156e2(=15600), 45_23.14_287 (=4523.14287) 實數文:實數文:實數也都是十進制的數,但必須帶有小數點,如:1.3.13.15, 88_670_551.453.1_909(=88670551.453.1909),1.0,44.99e-2(=0.4499) 以數制基數表示的文字:以數制基數表示的文字:用這種方式表示的數由五個部分組成。signal d1,d2,d3,d4,d5, : integer rang

2、e 0 to 255;d1 = 110#170# ; - (十進制表示,等于十進制表示,等于 170)d2 = 16#fe# ; - (十六進制表示,等于十六進制表示,等于 254)d3.1 = 2#1111_1110#; - (二進制表示,等于二進制表示,等于 254)d4 = 8#376# ; - (八進制表示,等于八進制表示,等于 254)d5 = 16#e#e1 ; - (十六進制表示,等于十六進制表示,等于2#1110000#,等于,等于224) 物理量文字物理量文字(vhdl綜合器不接受此類文字)。如:60s (60秒秒), 100m (100米米), k (千歐姆千歐姆), 17

3、7a (177安培安培)4.1.2 字符串字符串(1)文字字符串)文字字符串(2)數位字符串)數位字符串error , both s and q equal to 1 , x , bb$cc b:二進制基數符號,表示二進制位:二進制基數符號,表示二進制位0或或1,在字符串中的,在字符串中的每位表示一個每位表示一個bit。o:八進制基數符號,在字符串中的每一個數代表一個八進制數,即代:八進制基數符號,在字符串中的每一個數代表一個八進制數,即代表一個表一個3.1位位(bit)的二進制數。的二進制數。x:十六進制基數符號:十六進制基數符號(0f),代表一個十六進制數,即一,代表一個十六進制數,即一個

4、個4位的二進制數。位的二進制數。data1 = b1_1101_1110 - 二進制數數組,位矢數組長度是二進制數數組,位矢數組長度是9data2 = o15 - 八進制數數組,位矢數組長度是八進制數數組,位矢數組長度是6data3.1 = xad0 - 十六進制數數組,位矢數組長度是十六進制數數組,位矢數組長度是12data4 = b101_010_101_010 - 二進制數數組,位矢數組長度是二進制數數組,位矢數組長度是12data5 = 101_010_101_010 -表達錯誤,缺表達錯誤,缺b。data6 = 0ad0 -表達錯誤,缺表達錯誤,缺x。4.1.3 標識符標識符下標名下

5、標名格式:格式: 標識符標識符(表達式表達式) 規(guī)則:規(guī)則:l有效的字符:包括有效的字符:包括26個大小寫英文字母,數字包括個大小寫英文字母,數字包括09 以及下劃線以及下劃線“_”l l任何標識符必須以英文字母開頭。任何標識符必須以英文字母開頭。l l必須是單一下劃線必須是單一下劃線“_”,且其前后都必須有英文字母或數字。,且其前后都必須有英文字母或數字。l l標識符中的英語字母不分大小寫。標識符中的英語字母不分大小寫。l l允許包含圖形符號允許包含圖形符號(如回車符、換行符等如回車符、換行符等),也允許包含空格符。,也允許包含空格符。下例的兩個下標名中一個是下例的兩個下標名中一個是m m,

6、屬不可計算,另一個是,屬不可計算,另一個是,屬可計算的。,屬可計算的。signal a,b : bit_vector (0 to 3) ;signal m : integer range 0 to 3;signal y,z : bit ;y = a(m) ; - 不可計算型下不可計算型下標表示標表示z = b(3) ; - 可計算型下標表示可計算型下標表示4.2 數據類型數據類型標量型標量型(scalar type)復合類型復合類型(composite type)(composite type)存取類型存取類型(access type)文件類型文件類型(files type)4.2.1 vhd

7、l的預定義數據類型的預定義數據類型1. 1. 布爾布爾(boolean)(boolean)數據類型數據類型2. 2. 位位(bit)(bit)數據類型數據類型3. 3. 位矢量位矢量(bit_vector)(bit_vector)數據類型數據類型4. 4. 字符字符(character)(character)數據類型數據類型5. 5. 整數整數(integer)(integer)數據類型數據類型6. 6. 實數實數(real)(real)數據類型數據類型7. 7. 字符串字符串(string)(string)數據類型數據類型variable string_var : string (1 to

8、7 ) ;string_var := a b c d ;8. 8. 時間時間(time)(time)數據類型數據類型4.2.1 vhdl的預定義數據類型的預定義數據類型4.2.3 其他預定義標準數據類型其他預定義標準數據類型1. 1. 無符號數據類型無符號數據類型(unsigned type)(unsigned type)2. 2. 有符號數據類型有符號數據類型(signed type)(signed type)4.2 數據類型數據類型十進制的8可以作如下表示:unsigned(1000)unsigned(1000)兩則無符號數據定義的示例:variable var : unsigned(0

9、to 10) ;variable var : unsigned(0 to 10) ;signal sig : unsigned(5 to 0) ;signal sig : unsigned(5 to 0) ;例如:signed(0101) signed(0101) 代表代表 +5+5,5 5signed(1011) signed(1011) 代表代表 5 54.2.4 數組類型數組類型4.2 數據類型數據類型限定性數組限定性數組限定性數組定義語句格式如下:type type 數組名數組名is array (is array (數組范圍數組范圍)of )of 數據類型數據類型 ;非限定性數組非限

10、定性數組非限制性數組的定義語句格式如下:type type 數組名數組名is array (is array (數組下標名數組下標名range range )of )of 數據類型數據類型 ;4.2.4 數組類型數組類型【例【例4.1】 library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity decoder3to8 is port ( input: in std_logic_vector (2 downto 0); output: out std_logic_vector (7 downt

11、o 0);end decoder3to8;architecture behave of decoder3to8 is begin process (input) begin output 0); output(conv_integer(input) = 1; end process;end behave;4.3 vhdl操作符操作符類 型操作符功 能操作數數據類型 +加整數 減整數 &并置一維數組 *乘整數和實數(包括浮點數) /除整數和實數(包括浮點數)mod取模整數 rem取余整數 sll邏輯左移bit 或布爾型一維數組 srl邏輯右移bit 或布爾型一維數組 sla算術左移bit

12、 或布爾型一維數組 sra算術右移bit 或布爾型一維數組 rol邏輯循環(huán)左移bit 或布爾型一維數組 ror邏輯循環(huán)右移bit 或布爾型一維數組 *乘方整數算術操作符 abs取絕對值整數表表4-1 vhdl操作符列表操作符列表表表4-1 vhdl操作操作符列表符列表類 型操作符功 能操作數數據類型 =等于任何數據類型 /=不等于任何數據類型 大于枚舉與整數類型,及對應的一維數組 =大于等于枚舉與整數類型,及對應的一維數組 and與bit,boolean,std_logic or或bit,boolean,std_logic nand與非bit,boolean,std_logic nor或非bi

13、t,boolean,std_logic xor異或bit,boolean,std_logic xnor異或非bit,boolean,std_logic邏輯操作符 not非bit,boolean,std_logic +正整數符號操作符 負整數接上頁接上頁運 算 符優(yōu) 先 級not, abs, *最 高 優(yōu) 先 級* , / , mod, rem+(正 號 ), (負 號 )+ , , &sll, sla, srl, sra, rol, ror=, /=, , , =and, or, nand, nor, xor, xnor最 低 優(yōu) 先 級表表4-2 vhdl操作符優(yōu)先級操作符優(yōu)先級【例

14、【例4.2】 signal a ,b,c : std_logic_vector (3.1 downto 0) ; signal d,e,f,g : std_logic_vector (1 downto 0) ; signal h,i,j,k : std_logic ; signal l,m,n,o,p : boolean ; . a=b and c; -b、c 相與后向相與后向a賦值,賦值,a、b、c的數據類型同屬的數據類型同屬4位長的位矢量位長的位矢量 d=e or f or g ; - 兩個操作符兩個操作符or相同,不需括號相同,不需括號 h=(i nand j)nand k ; - na

15、nd不屬上述三種算符中的一種,必須加括號不屬上述三種算符中的一種,必須加括號 l=(m xor n)and(o xor p); - 操作符不同,必須加括號操作符不同,必須加括號 h=i and j and k ; - 兩個操作符都是兩個操作符都是and,不必加括號,不必加括號 h=i and j or k ; - 兩個操作符不同,未加括號,表達錯誤兩個操作符不同,未加括號,表達錯誤 a=b and e ; - 操作數操作數b 與與 e的位矢長度不一致,表達錯誤的位矢長度不一致,表達錯誤 h=i or l ; - i 的數據類型是位的數據類型是位std_logic,而,而l的數據類型是的數據類型

16、是 . - 布爾量布爾量boolean,因而不能相互作用,表達錯誤。,因而不能相互作用,表達錯誤。4.3.1 邏輯操作符邏輯操作符4.3.2 關系操作符關系操作符【例【例4-3】entity relational_ops_1 is port ( a,b : in bitvector (0 to 3) ; m : out boolean) ; end relational_ops_1 ;architecture example of relational_ops_1 is begin output = (a = b) ; end example ; 【例【例4-4】 entity relatio

17、nal_ops_2 is port (a,b : in integer range 0 to 3 ; m : out boolean) ; end relational_ops_2 ; architecture example of relational_ops_2 is begin output = b) ; end example ;六種關系運算操作符:“ = = ”( (等于等于) )、“/=/=”( (不等于不等于) )、“ ”( (大于大于) )、“ =”( (大于等于大于等于) )“=”( (小于等于小于等于) )4.3.3 算術操作符算術操作符類 別算 術 操 作 符 分 類1

18、求和操作符(adding operators)+(加),(減), (并置)2 求積操作符(multiplying operators) * , / , mod , rem3 符號操作符(sign operators) +(正), (負)4 混合操作符(miscellaneous operators) * , abs5 移位操作符(shift operators) sll,srl,sla,sra,rol,ror表表4-3 算術操作符分類表算術操作符分類表1. 1. 求和操作符求和操作符【例【例4-4】variable a,b ,c ,d ,e ,f : integer range 0 to 25

19、5 ;.a := b + c ; d := e f ; 【例【例4-5】procedure adding_e (a :in integer ; b :inout integer )is.b := a + b ; 【例【例4-6】 package example_arithmetic is type small_int is range 0 to 7 ; end example_arithmetic ; use work.example_arithmetic.all ; entity arithmetic is port (a,b : in small_int ; c : out small_int) ; end arithmetic ; architecture example of arithmetic is begin c = a + b ; end example ; 2. 2. 求積操作符求積操作符4.3.3 算術操作符算術操作符3. 3. 符號操作符符號操作符求積操作符包括求積操作符包括 * * ( (乘乘) )、 / (/ (除除) )、mod(mod(取模取模) )和和rem(rem(取余取余) )四種操作符。四

溫馨提示

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

評論

0/150

提交評論