VHDL語言的對象和數(shù)據(jù)類型及運算操作符.ppt_第1頁
VHDL語言的對象和數(shù)據(jù)類型及運算操作符.ppt_第2頁
VHDL語言的對象和數(shù)據(jù)類型及運算操作符.ppt_第3頁
VHDL語言的對象和數(shù)據(jù)類型及運算操作符.ppt_第4頁
VHDL語言的對象和數(shù)據(jù)類型及運算操作符.ppt_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章 VHDL語言的對象和數(shù)據(jù)類型及運算操作符,5.1 VHDL文字規(guī)則,5.1.1 數(shù)字,整數(shù):整數(shù)都是十進(jìn)制的數(shù),如: 5, 678, 0, 156E2(=15600), 45_234_287 (=45234287),實數(shù):實數(shù)也都是十進(jìn)制的數(shù),但必須帶有小數(shù)點,如: 1.335, 88_670_551.453_909(=88670551.453909),1.0,44.99E-2(=0.4499),以數(shù)制基數(shù)表示的文字:用這種方式表示的數(shù)由五個部分組成。 SIGNAL d1,d2,d3,d4,d5 : INTEGER RANGE 0 TO 255; d1 = 10#170# ; - (十進(jìn)制表示,等于 十進(jìn)制 170) d2 = 16#FE# ; - (十六進(jìn)制表示,等于 十進(jìn)制 254) d3 = 2#1111_1110#; - (二進(jìn)制表示,等于 十進(jìn)制 254) d4 = 8#376# ; - (八進(jìn)制表示,等于 十進(jìn)制 254) d5 = 16#E#E1 ; - (十六進(jìn)制表示,等于 十進(jìn)制 224),物理量文字(VHDL綜合器不接受此類文字)。如: 60s (60秒), 100m (100米), k (千歐姆), 177A (177安培),5.1 VHDL文字規(guī)則,5.1.2 字符串,(2)文字字符串,(3)數(shù)位字符串,用單引號括起來的ASCII字符,如:R,a,1,-,B:二進(jìn)制基數(shù)符號,表示二進(jìn)制位0或1,在字符串中的每位表示一個Bit。,O:八進(jìn)制基數(shù)符號,在字符串中的每一個數(shù)代表一個八進(jìn)制數(shù),即代表一個3 位(BIT)的二進(jìn)制數(shù)。,X:十六進(jìn)制基數(shù)符號(0F),代表一個十六進(jìn)制數(shù),即一個4位的二進(jìn)制數(shù)。,data1 = B“1_1101_1110“ - 二進(jìn)制數(shù)數(shù)組,位矢數(shù)組長度是9 data2 = O“15“ - 八進(jìn)制數(shù)數(shù)組,位矢數(shù)組長度是6 data3 = X“AD0“ - 十六進(jìn)制數(shù)數(shù)組,位矢數(shù)組長度是12 data4 = B“101_010_101_010“ - 二進(jìn)制數(shù)數(shù)組,位矢數(shù)組長度是12 data5 = “101_010_101_010“ -表達(dá)錯誤,缺B。 data6 = “0AD0“ -表達(dá)錯誤,缺X。,(1)字符,“ERROR“ , “Both S and Q equal to 1“ , “X“ , “BB$CC“,5.1 VHDL文字規(guī)則,5.1.3 標(biāo)識符,標(biāo)識符是最常用的操作符,可以是常數(shù)、變量、信號、端口、子程序或參數(shù)的名字。VHDL基本標(biāo)識符的書寫需遵循如下規(guī)則: l有效的字符:包括26個大小寫英文字母,數(shù)字包括09 以及下劃線“_”。 l任何標(biāo)識符必須以英文字母開頭。 l必須是單一下劃線“_”,且其前后都必須有英文字母或數(shù)字。 l標(biāo)識符中的英語字母不分大小寫。 l允許包含圖形符號(如回車符、換行符等),也允許包含空格符。,合法的標(biāo)識符: A, fft,and_4, max2uc,非法的標(biāo)識符: 21A, _fft,and_ _4, max#2uc,a-b,return,5.1 VHDL文字規(guī)則,5.1.4 下標(biāo)名,下標(biāo)名用于指示數(shù)組型變量或信號的某一元素。 格式: 標(biāo)識符(表達(dá)式) 標(biāo)識符必須是數(shù)組型的變量或信號的名字,表達(dá)式所代表的值必須是數(shù)組下標(biāo)范圍中的一個值,這個值將對應(yīng)數(shù)組中的一個元素。如果這個表達(dá)式是一個可計算的值,則此操作數(shù)可很容易地進(jìn)行綜合。如果是不可計算的,則只能在特定的情況下綜合。,下例的兩個下標(biāo)名中一個是m,屬不可計算,另一個是3,屬可計算的。 SIGNAL a,b : BIT_VECTOR (0 TO 3) ; SIGNAL m : INTEGER RANGE 0 TO 3 ; SIGNAL y,z : BIT ; y = a(m) ; - 不可計算型下標(biāo)表示 z = b(3) ; - 可計算型下標(biāo)表示,5.2 數(shù)據(jù)類型,標(biāo)量型(Scalar Type),復(fù)合類型(Composite Type),存取類型(Access Type),文件類型(Files Type),5.2.1 VHDL的預(yù)定義數(shù)據(jù)類型,1. 布爾(BOOLEAN)數(shù)據(jù)類型,2. 位(BIT)數(shù)據(jù)類型 如:constant a: bit :=1; variable q: bit :=0; signal a,b: bit;,3. 位矢量(BIT_VECTOR)數(shù)據(jù)類型 如:signal s: bit_vector (15 downto 0); constant q: bit_vector (3 downto 0) :=“0110”;,5.2.1 VHDL的預(yù)定義數(shù)據(jù)類型,4. 字符(CHARACTER)數(shù)據(jù)類型 通常用單引號括起來,區(qū)分大小寫。,6. 實數(shù)(REAL)數(shù)據(jù)類型 如:variable q: real range 0.0 to 255.0; constant a: real :=1.0;,1.0 十進(jìn)制浮點數(shù) 0.0 十進(jìn)制浮點數(shù) 65971.333333 十進(jìn)制浮點數(shù) 65_971.333_3333 與上一行等價 8#43.6#e+4 八進(jìn)制浮點數(shù) 43.6E4 十進(jìn)制浮點數(shù),5. 字符串(STRING)數(shù)據(jù)類型,如:VARIABLE string_var : STRING (0 TO 3 ) ; string_var := “a b c d“ ;,8. 時間(TIME)數(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 = 1000 ms ; - 秒 min = 60 sec ; - 分 hr = 60 min ; - 時 end units ;,5.2.1 VHDL的預(yù)定義數(shù)據(jù)類型,7. 整數(shù)(INTEGER)數(shù)據(jù)類型 如:signal b: integer range 7 to 7; variable a : integer :=5;,5.2.2 IEEE預(yù)定義標(biāo)準(zhǔn)邏輯位與矢量,1. 標(biāo)準(zhǔn)邏輯位STD_LOGIC數(shù)據(jù)類型,2. 標(biāo)準(zhǔn)邏輯矢量(STD_LOGIC_VECTOR)數(shù)據(jù)類型,5.2 數(shù)據(jù)類型,5.2.3 其他預(yù)定義數(shù)據(jù)類型,1. 無符號數(shù)據(jù)類型(UNSIGNED TYPE),2. 有符號數(shù)據(jù)類型(SIGNED TYPE),5.2 數(shù)據(jù)類型,十進(jìn)制的8可以作如下表示: UNSIGNED(“1000“),兩則無符號數(shù)據(jù)定義的示例: VARIABLE var : UNSIGNED(0 TO 10) ; SIGNAL sig : UNSIGNED(5 TO 0) ;,例如: SIGNED(“0101“) 代表 +5,5 SIGNED(“1011“) 代表 5,5.2.4 用戶自定義數(shù)據(jù)類型,1. 枚舉類型,2. 物理類型,5.2 數(shù)據(jù)類型,如: Type year is(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec); Signal thismoth :year; result= sep else 0;,如: Type voltage is range 0 to 1000000000 Units uv; (基本單位) mv=1000uv; v=1000mv; End units;,5.2.5 數(shù)組類型,5.2 數(shù)據(jù)類型,限定性數(shù)組,限定性數(shù)組定義語句格式如下: TYPE 數(shù)組名IS ARRAY (數(shù)組范圍)OF 數(shù)據(jù)類型 ; 如:type word is array(0 to 7)of std_logic;,非限定性數(shù)組,非限制性數(shù)組的定義語句格式如下: TYPE 數(shù)組名IS ARRAY (數(shù)組下標(biāo)名RANGE )OF 數(shù)據(jù)類型; 如:type word is array (natural range)of bit;,5.2.5 數(shù)組類型,5.2 數(shù)據(jù)類型,數(shù)組的元素可以是任何一種數(shù)據(jù)類型,用以定義數(shù)組元素的下標(biāo)范圍子句決定了數(shù)組中元素的個數(shù),以及元素的排序方向,既下標(biāo)數(shù)是由高到低,或是由低到高。 如子句“0 TO 7”是由低到高排序的8個元素; 即:a(0)a(1)a(2)a(7)。 “15 DOWNTO 0”是由高到低排序的16個元素; 即:a(15)a(14)a(13) a(0) 。,5.3 VHDL操作符,5.3.1 邏輯操作符,表5-1 VHDL操作符列表,表5-1 VHDL操作符列表,接上頁,表5-2 VHDL操作符優(yōu)先級,5.3.1 邏輯操作符,【例5-4】 SIGNAL a ,b,c : STD_LOGIC_VECTOR (3 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的數(shù)據(jù)類型同屬4位長的位矢量 d=e OR f OR g ; - 兩個操作符OR相同,不需括號 h=(i NAND j)NAND k ; - NAND不屬上述三種算符中的一種,必須加括號 l=(m XOR n)AND(o XOR p); - 操作符不同,必須加括號 h=i AND j AND k ; - 兩個操作符都是AND,不必加括號 h=i AND j OR k ; - 兩個操作符不同,未加括號,表達(dá)錯誤 a=b AND e ; - 操作數(shù)b 與 e的位矢長度不一致,表達(dá)錯誤 h=i OR l ; - i 的數(shù)據(jù)類型是位STD_LOGIC,而l的數(shù)據(jù)類型是 . - 布爾量BOOLEAN,因而不能相互作用,表達(dá)錯誤。,5.3.1 邏輯操作符,5.3.2 關(guān)系操作符,【例5-5】 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 ;,【例5-6】 ENTITY relational_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 ;,六種關(guān)系運算操作符: “ = ”(等于)、 “/=”(不等于)、 “ ”(大于)、 “=”(大于等于) “=”(小于等于),5.3.3 算術(shù)操作符,表5-3 算術(shù)操作符分類表,1. 求和操作符,【例5-7】 VARIABLE a,b ,c ,d ,e ,f : INTEGER RANGE 0 TO 255 ; . a := b + c ; d := e f ;,【例5-8】 PROCEDURE adding_e (a :IN INTEGER ; b :INOUT INTEGER )IS . b := a + b ;,【例5-9】 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. 求積操作符,5.3.3 算術(shù)操作符,3. 符號操作符,求積操作符包括 * (乘)、 / (除)、MOD(取模)和RED(取余)四種操作符。,符號操作符“+”和“”的操作數(shù)只有一個,5.3.3 算術(shù)操作符,4. 混合操作符,【例5-10】 SIGNAL a,b : INTEGER RANGE 8 to 7 ; SIGNAL c : INTEGER RANGE 0 to 15 ; SIGNAL d : INTEGER RANGE 0 to 3 ; a = ABS(b) ; c = 2 * d ;,混合操作符包括乘方“*”操作符和取絕對值“ABS”操作符兩種,SLL邏輯左移 SRL邏輯右移 移空的位補零 SLA算術(shù)左移 SRA算術(shù)右移 移空的位由最初首位補 ROL邏輯循環(huán)左移 ROR邏輯循環(huán)右移 移出的位依次填補移空的位,5.3.3 算術(shù)操作符,5. 移位操作符,移位操作符的語句格式是: 標(biāo)識符 移位操作符 移位位數(shù) ;,例: “1001001” SLL 1=“0010010” “1001001” SRL 1=“0100100” “1001001” SLA 1=“0010011” “1001001” SRA 1=“1100100” “1001001” ROL 1=“0010011” “1001001” ROR 1=“1100100”,5.4 VHDL數(shù)據(jù)對象(Data Objects),常量(Constant) 固定值,不能在程序中被改變 增強程序的可讀性,便于修改程序 可在Package、Entity、Architecture、Process、Function、Procedure中進(jìn)行定義,其有效范圍也相應(yīng)限定 書寫格式: Constant 常量名,常量名:數(shù)據(jù)類型:=表達(dá)式; 例:Constant data_bus_width: integer := 8;,5.4 VHDL數(shù)據(jù)對象(Data Objects),信號(Signals) 代表連線,Port也是一種信號 沒有方向性,可給它賦值,也可當(dāng)作輸入 在Package、Entity、Architecture中定義 設(shè)定的初始值在綜合時沒有用,只是在仿真時在開始設(shè)定一個起始值。 用 = 進(jìn)行賦值 用 : = 進(jìn)行初始化 signal count:bit_vector(3 downto 0):=“0011”;,5.4 VHDL數(shù)據(jù)對象(Data Objects),變量(Variable) 臨時數(shù)據(jù),沒有物理意義 只能在Process、Function、 Procedure中定義,并只在其內(nèi)部有效, 要使其全局有效,先轉(zhuǎn)換為Signal。 用 := 進(jìn)行賦值 用 := 進(jìn)行初始化 variable result : std_logic := 0;,信號與變量的區(qū)別,architecture rtl of start is signal count : integer range 0 to 7; begin process(clk) begin if (clkevent and clk=1) then c

溫馨提示

  • 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

提交評論