




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
15.2VHDL語言要素5.2.1VHDL的文字規(guī)則
與其他計(jì)算機(jī)高級(jí)語言一樣,VHDL也有自己的文字規(guī)則
VHDL文字主要包括數(shù)字和標(biāo)識(shí)符。1.標(biāo)識(shí)符
標(biāo)識(shí)符主要用來為端口、信號(hào)、變量、子程序、常數(shù)和參數(shù)等命名。
有效的字符:包括26個(gè)大小寫英文字母,數(shù)字包括0~9以及下劃線“_”
任何標(biāo)識(shí)符必須以英文字母開頭下劃線“_”的前后必須有英文字母或數(shù)字標(biāo)識(shí)符中的英語字母不分大小寫標(biāo)識(shí)符的命名不能與保留字相同例:
_Decoder_1,2FFT,sig_#n,return其規(guī)則如下:
Decoder_1,FFT,sig_n,Not_ACK
15.2VHDL語言要素5.2.1VHDL的文字規(guī)則22.數(shù)字
(1)整數(shù):整數(shù)都是十進(jìn)制的數(shù),如:5,678,0,156E2(=15600),45_234_287(=45234287)
(2)實(shí)數(shù):實(shí)數(shù)也都是十進(jìn)制的數(shù),但必須帶有小數(shù)點(diǎn),如:1.335,88_670_551.453_909(=88670551.453909),1.0,44.99E-2(=0.4499)
(3)以數(shù)值基數(shù)表示的數(shù):用這種方式表示的數(shù)由五部分組成:基#整數(shù)#[指數(shù)]
第一部分:用十進(jìn)制數(shù)標(biāo)明數(shù)值進(jìn)位的基數(shù);第二部分:數(shù)值隔離符“#”;第三部分:表達(dá)的數(shù)值;第四部分:指數(shù)隔離符“#”
;第五部分:用十進(jìn)制數(shù)表示的指數(shù)部分,若為0可省略不寫。22.數(shù)字(1)整數(shù):整數(shù)都是十進(jìn)制的數(shù),(2)實(shí)3例如:10#170#;--(表示第三部分為十進(jìn)制數(shù),等于170)16#FE#;--(表示第三部分十六進(jìn)制數(shù),等于254)2#1111_1110#;--(表示第三部分為二進(jìn)制數(shù),等于254)8#376#;--(表示第三部分為八進(jìn)制數(shù),等于254)16#E#1;--(表示十六進(jìn)制數(shù),等于14×161,等于224)
3.字符和字符串(1)字符是用單引號(hào)括起來的ASCⅡ碼
一般情況下VHDL對(duì)字母的大小寫不敏感,但對(duì)字符的大小寫是敏感的,例:‘A’
和‘a(chǎn)’
是不同的。(2)字符串是用雙引號(hào)括起來的字符序列
在VHDL中字符串常用來作為說明文字出現(xiàn)。例:“itistimeout”,“ERROR”
,“BothSandQequalto1”
注意:“a”
和‘a(chǎn)’是不同的3例如:3.字符和字符串(1)字符是用單引號(hào)括起來的AS4B:二進(jìn)制基數(shù)符號(hào),可以省略O(shè):八進(jìn)制基數(shù)符號(hào)X:十六進(jìn)制基數(shù)符號(hào)(0~F)采用位串的優(yōu)點(diǎn)是為了增加源代碼的可讀性。例:B"1_1101_1110"--二進(jìn)制數(shù)數(shù)組,位矢數(shù)組長(zhǎng)度是9O"15"--八進(jìn)制數(shù)數(shù)組,位矢數(shù)組長(zhǎng)度是6X"AD0"--十六進(jìn)制數(shù)數(shù)組,位矢數(shù)組長(zhǎng)度是12"101_010_101_010"--二進(jìn)制數(shù)數(shù)組,位矢數(shù)組長(zhǎng)度是12"0AD0"--表達(dá)錯(cuò)誤,缺X4.位串位串是用雙引號(hào)括起來的數(shù)字序列,數(shù)字序列前面加上一個(gè)基數(shù)說明符:5.結(jié)束標(biāo)志與注釋每個(gè)邏輯行以一個(gè)分號(hào)作為結(jié)束標(biāo)志。注釋語句用“--”開始到本行結(jié)束的一段文字來進(jìn)行一段的描述注釋不是設(shè)計(jì)功能描述的一部分,所以不會(huì)被編譯。4B:二進(jìn)制基數(shù)符號(hào),可以省略例:4.位串位串是用雙引號(hào)括起55.2.2數(shù)據(jù)對(duì)象(DATAOBJECTS)VHDL是一種硬件描述語言,硬件電路的工作過程實(shí)際上是信號(hào)的傳輸和存儲(chǔ)的過程,所以VHDL最基本的描述對(duì)象是信號(hào)。為了便于描述,還定義了另外三類數(shù)據(jù)對(duì)象:變量、常量和文件。1.常量(CONSTANT)
常量是指在設(shè)計(jì)實(shí)體中不會(huì)發(fā)生變化的值常量定義的一般表述:
constant常量名:數(shù)據(jù)類型:=表達(dá)式;
例如:constanta,b:integer:=2;
constantVCC:real:=3.3;常量可以在程序包、實(shí)體說明、結(jié)構(gòu)體和進(jìn)程的說明區(qū)域進(jìn)行說明常量一旦被賦值就不能再改變常量所賦的值應(yīng)與其所定義的數(shù)據(jù)類型一致,否則出錯(cuò)注意:55.2.2數(shù)據(jù)對(duì)象(DATAOBJECTS)VHDL62.變量(VARIABLE)
變量主要用于對(duì)暫時(shí)數(shù)據(jù)進(jìn)行存儲(chǔ),它不能將信息帶出對(duì)它作出定義的當(dāng)前單元。定義變量的一般表述:
VARIABLE變量名:數(shù)據(jù)類型[:=初始值];
例:VARIABLEa:std_logic;VARIABLEb,c:integer:=2;VARIABLEcount1,count2,count3:integerrange0to255:=0;
例中定義a為標(biāo)準(zhǔn)邏輯位變量,b,c為整數(shù)型變量,初始值為2等。變量也可以被連續(xù)地進(jìn)行賦值,變量的賦值采用的符號(hào)是“:=”,上例2,3中的變量已賦給了初始值。62.變量(VARIABLE)變量主要用于對(duì)暫時(shí)數(shù)7注意:(1)賦值語句右邊的表達(dá)式必須是一個(gè)與目標(biāo)變量具有相同數(shù)據(jù)類型的數(shù)值。(2)變量是一個(gè)局部量,只能在進(jìn)程和子程序中使用。(3)變量的賦值是一種理想化的數(shù)據(jù)傳輸,是立即發(fā)生的,不存在任何延時(shí)的行為。
變量賦值格式:變量名:=表達(dá)式;例:a:=“1010101”;------------位矢量賦值
b:=‘0’;------------位賦值
x:=100.0;-----------實(shí)數(shù)賦值7注意:變量賦值格式:變量名:=表達(dá)式;83.信號(hào)(SIGNAL)
信號(hào)是描述硬件系統(tǒng)的基本數(shù)據(jù)對(duì)象,它是設(shè)計(jì)實(shí)體中并行語句模塊間動(dòng)態(tài)交換數(shù)據(jù)的手段。在物理上信號(hào)對(duì)應(yīng)著硬件設(shè)計(jì)中的一條連接線。信號(hào)定義語句格式:
SIGNAL信號(hào)名:數(shù)據(jù)類型[:=初始值];
例:SIGNALclk:std_logic:=‘0’;SIGNALa:integerrange0to15;SIGNALdata:std_logic_vector(15downto0);
信號(hào)的初始值不是必須的,而且僅在VHDL的行為仿真中有效;信號(hào)的使用和定義范圍是實(shí)體、結(jié)構(gòu)體和程序包。83.信號(hào)(SIGNAL)信號(hào)是描述硬件系統(tǒng)的基9
信號(hào)賦值采用如下格式:信號(hào)名<=表達(dá)式;例:x<=9;y<=x;……SIGNALa,b,c,y,z:integer;
……PROCESS(a,b,c)
BEGINy<=a*b;-----------------不對(duì)y進(jìn)行賦值
z<=c-y;y<=b;------------------y的最后賦值ENDPROCESS;
……說明:同一信號(hào)不能在兩個(gè)進(jìn)程中賦值。在同一進(jìn)程中,可以允許多次對(duì)同一信號(hào)賦值。即在同一進(jìn)程中存在多個(gè)同名的信號(hào)被賦值。但是因?yàn)樾盘?hào)的賦值是有延時(shí)的,其結(jié)果只是最后的賦值語句被啟動(dòng)。9信號(hào)賦值采用如下格式:信號(hào)名<=表達(dá)式;……10信號(hào)SIGNAL
基本用法:在電路中作為信號(hào)連線使用適用范圍:在整個(gè)結(jié)構(gòu)體內(nèi)的任何地方都能適用行為特性:賦值具有一定的延遲在進(jìn)程中,只在進(jìn)程的的最后才對(duì)信號(hào)賦值信號(hào)與變量賦值語句功能的比較變量VARIABLE
基本用法:在進(jìn)程中作為局部數(shù)據(jù)存儲(chǔ)單元使用適用范圍:只能在所定義的進(jìn)程中使用 行為特性:賦值是沒有延遲的在進(jìn)程中是立即賦值10信號(hào)SIGNAL信號(hào)與變量賦值語句功能的比較變量VARI11label1:processvariablea,b:integer;begin
waituntilclk=‘1’;a:=10;b:=20;a:=b;b:=a;endprocess;signala,b:integer;label2:process(a,b)
begina<=10;b<=20;
waitfor10nsa<=b;b<=a;
waitfor10nsendprocess;分析下面兩個(gè)程序中a,b的結(jié)果結(jié)果:a=b=20結(jié)果:a=20,b=1011label1:processsignala,b:int125.2.3數(shù)據(jù)類型
前面介紹了VHDL的數(shù)據(jù)對(duì)象,對(duì)于每一個(gè)對(duì)象來說,都要指定其數(shù)據(jù)類型,因此,VHDL需要提供用來指定對(duì)象的數(shù)據(jù)類型。
VHDL的強(qiáng)類型特性,使得VHDL在進(jìn)行硬件描述時(shí)具有很高的靈活性。
每一對(duì)象只能具有一個(gè)數(shù)據(jù)類型且只能具有那個(gè)數(shù)據(jù)類型的值。對(duì)某對(duì)象進(jìn)行操作的類型必須與該對(duì)象的類型相匹配。不同類型之間的數(shù)據(jù)不能直接帶入,即使數(shù)據(jù)類型相同,而位長(zhǎng)不同也不能進(jìn)行帶入。
VHDL的強(qiáng)類型特性主要體現(xiàn)在以下幾個(gè)方面:125.2.3數(shù)據(jù)類型前面介紹了VHDL的數(shù)據(jù)對(duì)象13
標(biāo)量類型:是最基本的數(shù)據(jù)類型,通常用于描述一個(gè)單值數(shù)據(jù)對(duì)象。標(biāo)量類型包括:實(shí)數(shù)類型、整數(shù)類型、枚舉類型和時(shí)間類型。
復(fù)合類型:由細(xì)小的數(shù)據(jù)類型復(fù)合而成,如可由標(biāo)量類型復(fù)合而成。復(fù)合類型主要有數(shù)組型和記錄型。
子類型:是上述基本類型的子集,是對(duì)已有的數(shù)據(jù)類型加以限制。
文件類型:不同類型的數(shù)據(jù)和數(shù)據(jù)名組織在一起形成新的數(shù)據(jù)對(duì)象。
存取類型:為數(shù)據(jù)對(duì)象提供存取方式。上述五大類數(shù)據(jù)類型又可分成在現(xiàn)成程序包中可以隨時(shí)獲得的預(yù)定義數(shù)據(jù)類型和用戶自定義數(shù)據(jù)類型兩類。預(yù)定義數(shù)據(jù)類型是VHDL中最常用、最基本的數(shù)據(jù)類型,這些數(shù)據(jù)類型都已在VHDL的標(biāo)準(zhǔn)程序包Standard和std_logic_1164及其它的標(biāo)準(zhǔn)程序包中作了定義,可在設(shè)計(jì)中隨時(shí)調(diào)用。VHDL中的數(shù)據(jù)類型可分為五大類:13標(biāo)量類型:是最基本的數(shù)據(jù)類型,通常用于描述一個(gè)單值數(shù)141.VHDL的預(yù)定義數(shù)據(jù)類型
(1)整數(shù)(INTEGER)數(shù)據(jù)類型:正整數(shù)、負(fù)整數(shù)和零??梢允褂妙A(yù)定義的運(yùn)算操作符,但不能按位訪問,也不能進(jìn)行邏輯操作。在VHDL中,整數(shù)的取值范圍是-2147483647~+2147483647
仿真時(shí):將其作為有符號(hào)數(shù)處理。綜合時(shí):作為無符號(hào)數(shù)處理。例:SIGNALa:INTEGERRANGE0TO9;
(2)實(shí)數(shù)(REAL)數(shù)據(jù)類型:類似于數(shù)學(xué)中的實(shí)數(shù),或稱為浮點(diǎn)數(shù),通常情況下實(shí)數(shù)類型僅能用于VHDL的仿真,綜合器一般不支持實(shí)數(shù)。
(3)位(BIT)數(shù)據(jù)類型:屬于枚舉型,取值只能是‘1’和‘0’。(4)位矢量(BIT_VECTOR)數(shù)據(jù)類型:是BIT的數(shù)組,使用位矢量必須注明位寬。例:signala:bit_vector(7downto0);
VHDL的預(yù)定義數(shù)據(jù)類型都是在VHDL標(biāo)準(zhǔn)程序包STANDARD中定義的。
141.VHDL的預(yù)定義數(shù)據(jù)類型(1)整數(shù)(INTEGE15(5)布爾(BOOLEAN)數(shù)據(jù)類型:屬于枚舉型,取值為false和true。
(6)字符(CHARACTER)數(shù)據(jù)類型:字符類型通常用單引號(hào)引起來。如:‘a(chǎn)’。字符類型區(qū)分大小寫,這一點(diǎn)和標(biāo)識(shí)符的大小寫是不同的。(7)字符串(STRING)數(shù)據(jù)類型:字符串必須用雙引號(hào)標(biāo)明。例:
VARIABLEstr:STRING(1TO7);str:="abcd";(8)時(shí)間(TIME)數(shù)據(jù)類型
VHDL中唯一的預(yù)定義物理類型是時(shí)間。完整的時(shí)間類型包括整數(shù)和物理量單位兩部分,整數(shù)和單位之間至少留一個(gè)空格,例:
55ms,20ns等。(9)錯(cuò)誤等級(jí)(severitylevel)錯(cuò)誤等級(jí)類型數(shù)據(jù)用來表征系統(tǒng)的狀態(tài)共有4種:NOTE(注意)
WARNING(警告)ERROR(出錯(cuò))FAILURE(失?。#?0)自然數(shù)(natural),正整數(shù)(positive)15(5)布爾(BOOLEAN)數(shù)據(jù)類型:屬于枚舉型,取值為162.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ù)類型
std_logic_vector是std_logic的數(shù)組形式。因?yàn)槭莍eee的預(yù)定義數(shù)據(jù)類型,使用時(shí)必須先打開ieee庫(kù)。即:libraryieee;useieee.std_logic_1164.all;std_logic是一個(gè)9值的邏輯。其取值為:
U-未初始化狀態(tài);X-不定態(tài);O-邏輯0;1-邏輯1;
Z-高阻態(tài);W-弱不定態(tài);L-弱0;H-弱1;
--無關(guān)態(tài);162.IEEE預(yù)定義標(biāo)準(zhǔn)邏輯位與矢量(1)標(biāo)準(zhǔn)邏輯位S173.其他預(yù)定義標(biāo)準(zhǔn)數(shù)據(jù)類型Synopsys公司在IEEE庫(kù)中加入的程序包STD_LOGIC_ARITH中定義了3種數(shù)據(jù)類型,下面是其中常用的2種:(1)無符號(hào)數(shù)據(jù)類型(UNSIGNEDTYPE)UNSIGNED數(shù)據(jù)類型代表一個(gè)無符號(hào)的數(shù)值,綜合器將其解釋為二進(jìn)制數(shù),二進(jìn)制數(shù)的最左邊的位為最高位。
(2)有符號(hào)數(shù)據(jù)類型(SIGNEDTYPE)SIGNED數(shù)據(jù)類型代表一個(gè)有符號(hào)的數(shù)值,綜合器將其解釋為補(bǔ)碼,最高位為符號(hào)位。173.其他預(yù)定義標(biāo)準(zhǔn)數(shù)據(jù)類型Synopsys公司在18例如:
VARIABLEvar1:UNSIGNED(0TO10);VARIABLEvar2:SIGNED(0TO10);
其中的var1和var2分別定義為UNSIGNED和SIGNED數(shù)據(jù)類型,則數(shù)值意義是不一樣的。
使用上述數(shù)據(jù)類型時(shí),應(yīng)作如下聲明:
libraryieee;useieee.std_logic_arith.all;18例如:使用上述數(shù)據(jù)類型時(shí),應(yīng)作如下聲明:19(1)TYPE語句用法:
TYPE數(shù)據(jù)類型名IS數(shù)據(jù)類型定義[OF基本數(shù)據(jù)類型];上述格式中的數(shù)據(jù)類型名由設(shè)計(jì)者自定;數(shù)據(jù)類型定義部分用來描述所定義元素的表達(dá)方式和表達(dá)內(nèi)容;基本數(shù)據(jù)類型是指數(shù)據(jù)類型定義中所定義的基本數(shù)據(jù)類型,一般都是取已有的預(yù)定義數(shù)據(jù)類型。4.用戶自定義數(shù)據(jù)類型
除標(biāo)準(zhǔn)的預(yù)定義數(shù)據(jù)類型外,VHDL還允許用戶自行定義新的數(shù)據(jù)類型,由用戶定義的數(shù)據(jù)類型可以有多種,如枚舉類型、整數(shù)類型、實(shí)數(shù)類型、數(shù)組類型、記錄類型和時(shí)間類型等。用戶自定義數(shù)據(jù)類型是用類型定義語句實(shí)現(xiàn)的,格式如下:例:typest1isarray(0to15)ofstd_logic;
typeweekis(sun,mon,tue,wed,thu,fri,sat);19(1)TYPE語句用法:4.用戶自定義數(shù)據(jù)類型除20(2)SUBTYPE語句用法:
SUBTYPE是TYPE所定義的數(shù)據(jù)類型的一個(gè)子集,它滿足原數(shù)據(jù)類型的所有約束條件,原數(shù)據(jù)類型稱為基本數(shù)據(jù)類型,SUBTYPE格式如下:
SUBTYPE子類型名IS基本數(shù)據(jù)類型range約束范圍;上述格式中的子類型名由設(shè)計(jì)者自定;基本數(shù)據(jù)類型必須是前面已有過type定義的類型。例:subtypedigisintegerrange0to9;
其中,integer是標(biāo)準(zhǔn)程序包中已定義過的數(shù)據(jù)類型,子類型只是把integer約束到只含10個(gè)值的數(shù)據(jù)類型。20(2)SUBTYPE語句用法:21常用的自定義數(shù)據(jù)類型※枚舉數(shù)據(jù)類型:
在綜合過程中,枚舉類型文字元素的編碼通常是自動(dòng)的,編碼順序是默認(rèn)的,一般將第一個(gè)枚舉量(最左邊的量)編碼為0,以后的依次加1。前例中的默認(rèn)編碼值如下:
state1=’000’;state2=’001’
;state3=’010’
;
state4=’011’
;state5=’100’
;typeweekis(sun,mon,tue,wed,thu,fri,sat);VHDL中的枚舉數(shù)據(jù)類型是一種特殊的數(shù)據(jù)類型,是用文字符號(hào)來表示一組實(shí)際的二進(jìn)制數(shù)。例如:
typem_stateis(state1,state2,state3,state4,state5);
signalp_state,n_state:m_state;“000”“001”“010”“011”“100”“101”“110”21常用的自定義數(shù)據(jù)類型※枚舉數(shù)據(jù)類型:在綜合過程中,22
※數(shù)組類型:
語句格式如下:
TYPE
數(shù)組名ISARRAY(數(shù)組范圍)OF
數(shù)據(jù)類型;例:typestbisarray(7downto0)ofstd_logic;
該數(shù)組有8個(gè)元素,其下標(biāo)排列是7、6、…1、0。
typedata_busisarray(0to7)ofbit;
該數(shù)組有8個(gè)元素,其下標(biāo)排列是0、1、…6、7。
數(shù)組類型屬?gòu)?fù)合類型,是將一組具有相同數(shù)據(jù)類型的元素集合在一起,作為一個(gè)數(shù)據(jù)對(duì)象來處理的數(shù)據(jù)類型。數(shù)組可以是一維數(shù)組或多維數(shù)組。22※數(shù)組類型:語句格式如下:例:typestb23
對(duì)數(shù)組的賦值有兩種方法:一是對(duì)整個(gè)數(shù)組進(jìn)行一次賦值;二是按照下標(biāo)對(duì)每一個(gè)數(shù)組元素進(jìn)行賦值。例:
typedata_busisarray(0to7)ofbit;
signala:data_bus;
整體賦值:a<=“01000111”;
分別賦值:a(0)<=‘0’;a(1)<=‘1’;a(2)<=‘0’;a(3)<=‘0’;a(4)<=‘0’;a(5)<=‘1’;a(6)<=‘1’;a(7)<=‘1’;23對(duì)數(shù)組的賦值有兩種方法:一是對(duì)整個(gè)數(shù)組進(jìn)行一次賦24※記錄類型:
將不同類型的數(shù)據(jù)和數(shù)據(jù)名組織在一起,而形成新的對(duì)象。語句格式如下:TYPE
記錄類型名ISRECORD
記錄元素名1:數(shù)據(jù)類型名;記錄元素名2:數(shù)據(jù)類型名;
……ENDRECORD;24※記錄類型:TYPE記錄類型名ISRECORD25下面是記錄類型定義的一個(gè)例子:typec_timeis
recordyear:integerrange0to3000;month:integerrange1to12;date:integerrange1to31;enable:bit;data:std_logic_vector(15downto0);end
record;記錄類型的對(duì)象的說明:signalnumber:c_time;25下面是記錄類型定義的一個(gè)例子:26
一個(gè)記錄的每一個(gè)元素要由它的記錄元素名來進(jìn)行訪問。對(duì)于記錄類型的對(duì)象的賦值和數(shù)組類似,可以對(duì)其進(jìn)行整體賦值,也可分別賦值,從記錄類型的對(duì)象中提取記錄元素時(shí)應(yīng)使用“.”。對(duì)記錄元素分別賦值:
number.year<=2005;number.mouth<=9;number.date<=22;number.enable<=‘1’;number.data<=data_in;
對(duì)記錄元素整體賦值:
number<=(2005,9,22,‘1’,data_in);26一個(gè)記錄的每一個(gè)元素要由它的記錄元素名來進(jìn)行訪問27函數(shù)名功能.std_logic_1164包集合to_std_logic_vector(A)to_bit_vector(A)to_std_logic(A)to_bit(A)由bit_vector轉(zhuǎn)換為std_logic_vector;由std_logic_vector轉(zhuǎn)換為bit_vector;由bit轉(zhuǎn)換成std_logic;由std_logic轉(zhuǎn)換成bit。.std_logic_arith包集合CONV_std_logic_vector(A,位長(zhǎng))CONV_INTEGER(A)由integer,UNSDGNED,SIGNED轉(zhuǎn)換成std_logic_vector;由UNSIGNED,SIGNED轉(zhuǎn)換成integer。.std_logic_UNSIGNED包集合.std_logic_SIGNED包集合CONV_INTEGER(A)由std_logic_vector轉(zhuǎn)換成integer。5、數(shù)據(jù)類型的轉(zhuǎn)換
在VHDL語言中,數(shù)據(jù)類型的定義是相當(dāng)嚴(yán)格的,不同的數(shù)據(jù)類型之間不能進(jìn)行運(yùn)算和直接代入。為了實(shí)現(xiàn)正確的賦值操作,必須要將帶入的數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換。數(shù)據(jù)類型轉(zhuǎn)換函數(shù)通常有程序包來提供。27函數(shù)名功能.std_logic_28【程序5.2.2】LIBRARYIEEE;USEIEEEstd_logic_1164.ALL;USEIEEEstd_logic_UNSIGNED.ALL;ENTITYadd5ISPORT(num:INstd_logic_vector(2DOWNto0);
………………..
);ENDadd5;ARCHITECTURErt1ofadd5issignalin_num:integer
range0to5;…….BEGIN
in_num〈=CONV_INTEGER(num);--變換式…….ENDrtl;28【程序5.2.2】295.2.4運(yùn)算符操作符和操作數(shù)間的運(yùn)算應(yīng)注意:VHDL中共有四類操作符:邏輯操作符、關(guān)系操作符、算術(shù)操作符和連接操作符
基本操作符間操作數(shù)是同數(shù)據(jù)類型操作數(shù)的數(shù)據(jù)類型必須與操作符所要求的數(shù)據(jù)類型一致注意操作符之間的優(yōu)先級(jí)通常在一個(gè)表達(dá)式中有兩個(gè)以上的算符時(shí),需要使用括號(hào)將這些運(yùn)算分組,若其中的算符相同且為AND、OR、XOR中的一種則不需使用括號(hào)。295.2.4運(yùn)算符操作符和操作數(shù)間的運(yùn)算應(yīng)注意:VHD301、邏輯運(yùn)算符:邏輯運(yùn)算符共有7種,分別是:
操作符功能操作數(shù)類型
AND
與std_logic、bit、boolean
OR
或std_logic、bit、booleanNOT取反std_logic、bit、booleanNAND與非std_logic、bit、booleanNOR或非std_logic、bit、boolean
XOR
異或std_logic、bit、booleanXNOR同或std_logic、bit、boolean301、邏輯運(yùn)算符:31下面是邏輯操作符運(yùn)算的幾個(gè)例子:
SIGNALa,b,c:STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALd,e,f,g:STD_LOGIC_VECTOR(1DOWNTO0);
SIGNALh,i,j,k:STD_LOGIC;
SIGNALl,m,n,o,p:BOOLEAN;
...a<=bANDc;--b、c相與后向a賦值,a、b、c的數(shù)據(jù)類型同屬4位長(zhǎng)的位矢量
d<=eORfORg;--兩個(gè)操作符OR相同,不需括號(hào)
h<=(iNANDj)NANDk;--NAND不屬and、or、xor三種算符,必須加括號(hào)
l<=(mXORn)AND(oXORp);--操作符不同,必須加括號(hào)
h<=iANDjANDk;--兩個(gè)操作符都是AND,不必加括號(hào)
h<=iANDjORk;--兩個(gè)操作符不同,未加括號(hào),表達(dá)錯(cuò)誤
a<=bANDe;--操作數(shù)b與e的位矢長(zhǎng)度不一致,表達(dá)錯(cuò)誤
h<=iORl;--i的數(shù)據(jù)類型是位STD_LOGIC,而l的數(shù)據(jù)類型是
...--布爾量BOOLEAN,因而不能相互作用,表達(dá)錯(cuò)誤。31下面是邏輯操作符運(yùn)算的幾個(gè)例子:SIGNALa,322、算術(shù)運(yùn)算符
VHDL的算術(shù)運(yùn)算符共有十幾種,其中常用的有如下幾種:
操作符功能操作數(shù)類型+加法整數(shù)-減法整數(shù)*乘法整數(shù)和實(shí)數(shù)
SLL等移位bit或布爾類型的一維數(shù)組(SLLSLRSLASRAROLROR)
在運(yùn)用算術(shù)運(yùn)算符對(duì)如下的數(shù)據(jù)類型進(jìn)行運(yùn)算時(shí),應(yīng)注意:(1)unsigned,signed:需打開std_logic_arith程序包;(2)std_logic:需打開std_logic_unsigned或
std_logic_signed程序包;322、算術(shù)運(yùn)算符333、關(guān)系運(yùn)算符:操作符功能操作數(shù)類型=等于任何數(shù)據(jù)類型
/=不等于任何數(shù)據(jù)類型
<小于integer、real、bit、std_logic等及其一維向量
<=小于等于integer、real、bit、std_logic等及其一維向量
>大于integer、real、bit、std_logic等及其一維向量
>=大于等于integer、real、bit、std_logic等及其一維向量注(1)關(guān)系運(yùn)算符運(yùn)算的最后結(jié)果總是布爾類型(2)關(guān)系運(yùn)算符兩邊的數(shù)據(jù)類型必須相同,但是位的長(zhǎng)度不一定相同。(3)對(duì)位矢量數(shù)據(jù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程中介合同協(xié)議書
- 教育行業(yè)教務(wù)管理操作手冊(cè)
- 機(jī)械設(shè)備融資租賃協(xié)議書6篇
- 危險(xiǎn)貨物運(yùn)輸合同標(biāo)準(zhǔn)
- 《初高中英語語法講解與練習(xí)課教案》
- 2025年湖北怎么考貨運(yùn)從業(yè)資格證
- 2025年臨汾貨運(yùn)從業(yè)資格證考試內(nèi)容
- 2025年商鋪轉(zhuǎn)讓合同8篇
- 雙方付款合同范本
- 廠地合作合同范本
- 供應(yīng)鏈中的社會(huì)責(zé)任
- 早期教育概論(高職學(xué)前教育專業(yè))全套教學(xué)課件
- 《AutoCAD 中文版實(shí)例教程(AutoCAD 2020) (微課版)(第 2 版)》課件 馬連志 第3、4章 基本繪圖操作、高級(jí)繪圖操作
- 產(chǎn)品國(guó)產(chǎn)化證明書
- 詢價(jià)投標(biāo)文件(范本)
- 幼兒教師職業(yè)道德(高職學(xué)前教育專業(yè))全套教學(xué)課件
- 蘇科版八年級(jí)生物下冊(cè)全冊(cè)完整課件
- 第四單元復(fù)習(xí)教學(xué)設(shè)計(jì) 部編版語文七年級(jí)上冊(cè)
- 醫(yī)學(xué)專家談靈芝孢子粉課件
- 開心麻花《白蛇前傳》劇本
- 全部編版三年級(jí)語文下冊(cè)生字讀音、音序、偏旁及組詞
評(píng)論
0/150
提交評(píng)論