VHDLl(硬件描述語(yǔ)言):第4章-VHDL語(yǔ)言的數(shù)據(jù)類型及運(yùn)算操作符_第1頁(yè)
VHDLl(硬件描述語(yǔ)言):第4章-VHDL語(yǔ)言的數(shù)據(jù)類型及運(yùn)算操作符_第2頁(yè)
VHDLl(硬件描述語(yǔ)言):第4章-VHDL語(yǔ)言的數(shù)據(jù)類型及運(yùn)算操作符_第3頁(yè)
VHDLl(硬件描述語(yǔ)言):第4章-VHDL語(yǔ)言的數(shù)據(jù)類型及運(yùn)算操作符_第4頁(yè)
VHDLl(硬件描述語(yǔ)言):第4章-VHDL語(yǔ)言的數(shù)據(jù)類型及運(yùn)算操作符_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第四章

VHDL語(yǔ)言的數(shù)據(jù)類型及運(yùn)算操作符4.1VHDL語(yǔ)言的客體及其分類

在VHDL語(yǔ)言中凡是可以賦予一個(gè)值的對(duì)象就稱為客體(Object)??腕w主要包括以下3種:信號(hào)、變量、常數(shù)(Signal、Variable、Constant)。在電子電路設(shè)計(jì)中,這3類客體通常都具有一定的物理含義。例如,信號(hào)對(duì)應(yīng)地代表物理設(shè)計(jì)中的某一條硬件接線;常數(shù)對(duì)應(yīng)地代表數(shù)字電路中的電源和地等。當(dāng)然,變量對(duì)應(yīng)關(guān)系不太直接,通常只代表暫存某些值的載體。3類客體的含義和說(shuō)明場(chǎng)合如下表所示。4.1.1常數(shù)(Constant)

常數(shù)是一個(gè)固定的值。所謂常數(shù)說(shuō)明就是對(duì)某一常數(shù)名賦予一個(gè)固定的值。通常賦值在程序開(kāi)始前進(jìn)行,該值的數(shù)據(jù)類型則在說(shuō)明語(yǔ)句中指明。常數(shù)說(shuō)明的一般格式如下:CONSTANT

常數(shù)名:數(shù)據(jù)類型:=表達(dá)式;例如:

CONSTANTVcc:REAL:=5.0;CONSTANTDALY:TIME:=100ns;CONSTANTFBUS:BIT_VECTOR:=“0101”;

常數(shù)一旦被賦值就不能再改變。上面Vcc被賦值為5.0V,那么在所有的VHDL語(yǔ)言程序中Vcc的值就固定為5.0V,它不像后面所提到的信號(hào)和變量那樣,可以任意代入不同的數(shù)值。另外,常數(shù)所賦的值應(yīng)和定義的數(shù)據(jù)類型一致。例如:

CONSTANTVcc:REAL:=“0101”;這樣的常數(shù)說(shuō)明顯然是錯(cuò)誤的。4.1.2變量(Variable)

變量只能在進(jìn)程語(yǔ)句、函數(shù)語(yǔ)句和過(guò)程語(yǔ)句結(jié)構(gòu)中使用,它是一個(gè)局部量。在仿真過(guò)程中,它不像信號(hào)那樣,到了規(guī)定的仿真時(shí)間才進(jìn)行賦值,變量的賦值是立即生效的。變量說(shuō)明語(yǔ)句的格式為:VARIABLE

變量名:數(shù)據(jù)類型約束條件:=表達(dá)式;例如:

VARIABLEx,y:INTEGER;VARIABLEcount:INTEGERRANGE0TO255:=10;

變量在賦值時(shí)不能產(chǎn)生附加延時(shí)。例如,tmp1,tmp2,tmp3都時(shí)變量,那么下式產(chǎn)生延時(shí)的方式時(shí)不合法的:

tmp3:=tmp1+tmp2AFTER10ns;4.1.3信號(hào)(Signal)

信號(hào)是電子電路內(nèi)部硬件連接的抽象。它除了沒(méi)有數(shù)據(jù)流動(dòng)方向說(shuō)明以外,其它性質(zhì)幾乎和前面所述的“端口”概念一致。信號(hào)通常在構(gòu)造體、包集合和實(shí)體中說(shuō)明。信號(hào)說(shuō)明語(yǔ)句格式為:SIGNAL

信號(hào)名:數(shù)據(jù)類型約束條件:=表達(dá)式;例如:

SIGNALsys_clk:BIT:=‘0’;SIGNALground:BIT:=‘0’;在程序中,信號(hào)值的代入采用“<=”代入符,而不是像變量賦值時(shí)用“:=”符。而且信號(hào)代入時(shí)可以附加延時(shí)。例如,s1和s2都是信號(hào),且s2的值經(jīng)10ns延時(shí)以后才被代入s1。此時(shí)信號(hào)傳送語(yǔ)句可書(shū)寫(xiě)為:s1<=s2AFTER10ns;信號(hào)是一個(gè)全局量,它可以用來(lái)進(jìn)行進(jìn)程之間的通信。

除沒(méi)有方向說(shuō)明外,信號(hào)與實(shí)體的“端口(PORT)”概念相似。端口是一種隱形的信號(hào)。

entityexamisport([signal]a,b:instd_logic;[signal]c:outstd_logic);endexam;

端口是一種有方向的信號(hào)。即輸出端口不能讀出數(shù)據(jù),只能寫(xiě)入數(shù)據(jù);輸入端口不能寫(xiě)入數(shù)據(jù),只能讀出數(shù)據(jù)。

信號(hào)本身無(wú)方向,可讀可寫(xiě)。信號(hào)與端口的區(qū)別4.1.4信號(hào)和變量值代入的區(qū)別①在變量的賦值語(yǔ)句中,該語(yǔ)句一旦被執(zhí)行,其值立即被賦予變量。在執(zhí)行下一條語(yǔ)句時(shí),該變量的值就為上一句新賦的值。變量的賦值符為“:=”。②信號(hào)代入語(yǔ)句采用“<=”代入符,該語(yǔ)句即使被執(zhí)行也不會(huì)使信號(hào)立即發(fā)生代入。下一條語(yǔ)句執(zhí)行時(shí),仍使用原來(lái)的信號(hào)值。4.1.5信號(hào)和變量值代入的區(qū)別---舉例

在第一個(gè)進(jìn)程中,D中最初代入的值是A,接著又代入C值。盡管在時(shí)間上有一個(gè)Δ的延時(shí),但是,執(zhí)行代入時(shí)暫不進(jìn)行處理,而是當(dāng)進(jìn)程所有語(yǔ)句執(zhí)行完畢時(shí)才處理,因此“D<=A”是被忽略的。因此D的最終值應(yīng)為C,這樣X(jué)和Y的內(nèi)容都為B+C。

在第二個(gè)進(jìn)程中,D是變量。在執(zhí)行“D:=A;”以后,A的值就被賦給D,所以X為B+A。此后又執(zhí)行“D:=C;”,從而使Y為B+C。由此可以看出,信號(hào)量的值將進(jìn)程語(yǔ)句最后所代入的值作為最終代入值。而變量的值一經(jīng)賦值就變成新的值。這就是變量賦值和信號(hào)代入在操作上的區(qū)別。4.2VHDL語(yǔ)言的數(shù)據(jù)類型VHDL語(yǔ)言中信號(hào)、變量、常數(shù)都要指定數(shù)據(jù)類型。VHDL提供了多種標(biāo)準(zhǔn)的數(shù)據(jù)類型,用戶也可以自定義數(shù)據(jù)類型。VHDL語(yǔ)言的數(shù)據(jù)類型的定義相當(dāng)嚴(yán)格,不同類型之間的數(shù)據(jù)不能直接代入,而且,即使數(shù)據(jù)類型相同,而位長(zhǎng)不同時(shí)也不能直接代入。4.2.1VHDL語(yǔ)言標(biāo)準(zhǔn)的數(shù)據(jù)類型

integer表示所有正的和負(fù)的整數(shù)。硬件實(shí)現(xiàn)時(shí),利用32位的位矢量來(lái)表示??蓪?shí)現(xiàn)的整數(shù)范圍為:-(231-1)to(231-1)VHDL綜合器要求對(duì)具體的整數(shù)作出范圍限定。如:signals:integerrange0to15;

信號(hào)s的取值范圍是0-15,可用4位二進(jìn)制數(shù)表示,因此s將被綜合成由四條信號(hào)線構(gòu)成的信號(hào)。1.整數(shù)(integer)2、實(shí)數(shù)(Real)實(shí)數(shù)的定義值范圍為-1.0E+38~+1.0E+38。實(shí)數(shù)有正負(fù)數(shù),書(shū)寫(xiě)時(shí)一定要有小數(shù)點(diǎn)。例如:

-1.0,+2.5,-1.0E38有些數(shù)可以用整數(shù)表示也可以用實(shí)數(shù)表示。例如,數(shù)字1的整數(shù)表示為1,而用實(shí)數(shù)表示則為1.0。兩個(gè)數(shù)的值時(shí)一樣的,但數(shù)據(jù)類型卻不一樣。3、位(Bit)

在數(shù)字系統(tǒng)中,信號(hào)值通常用一個(gè)位來(lái)表示。位值的表示方法是,用字符‘0’或者‘1’(將值放在單引號(hào)中)表示之。位與整數(shù)中的1和0不同,‘1’和‘0’僅僅表示一個(gè)位的兩種取值。有時(shí)也可以用顯式說(shuō)明之,例如:

BIT’(‘1’)

位數(shù)據(jù)可以用來(lái)描述數(shù)字系統(tǒng)中信號(hào)線的狀態(tài)。4、位矢量(Bit_Vector)

位矢量是用雙引號(hào)括起來(lái)的一組位數(shù)據(jù)。例如:“001100”X“00BB”在這里,位矢量最前面的X表示是十六進(jìn)制。用位矢量數(shù)據(jù)表示總線狀態(tài)最形象也最方便。在以后的VHDL程序中將會(huì)經(jīng)常用到。5、布爾量(Boolean)

布爾量具有兩種狀態(tài):false和true

常用于邏輯函數(shù),如相等(=)、比較(<)等中作邏輯比較。如,bit值轉(zhuǎn)化成boolean值:

boolean_var:=(bit_var=‘1’);6、字符(Character)字符也是一種數(shù)據(jù)類型,所定義的字符量通常用單引號(hào)括起來(lái),如‘A’。一般情況下,VHDL對(duì)大小寫(xiě)不敏感,但是對(duì)字符量中的大、小寫(xiě)字符則認(rèn)為是不一樣的。例如,‘B’不同于‘b’。字符量中的字符可以是a~z中的任一個(gè)字母,0~9中的任一個(gè)數(shù)字以及空白或者特殊字符,如$,@,%等等。7、字符串(String)

字符串是由雙引號(hào)括起來(lái)的一個(gè)字符序列,它也稱字符矢量或字符串?dāng)?shù)組。例如:“integerrange”字符串常用于程序的提示和說(shuō)明。8、時(shí)間(Time)時(shí)間量數(shù)據(jù)包含整數(shù)和單位兩部分,而且整數(shù)和單位之間至少應(yīng)留一個(gè)空格的位置。例如,55sec,2min等。在系統(tǒng)仿真時(shí),時(shí)間數(shù)據(jù)特別有用,用它可以表示信號(hào)延時(shí),從而使模型系統(tǒng)能更逼近實(shí)際系統(tǒng)的運(yùn)行環(huán)境。9、錯(cuò)誤等級(jí)(SeverityLevel)仿真中用來(lái)指示系統(tǒng)的工作狀態(tài),共有四種:

NOTE(注意)、

WARNING(警告)、

ERROR(出錯(cuò))、

FAILURE(失?。?0、大于等于零的整數(shù)(Natural),正整數(shù)(Positive)

這兩類數(shù)據(jù)是整數(shù)的子類,Natural類數(shù)據(jù)只能取值0和0以上的正整數(shù);而Positive類數(shù)據(jù)則只能為正整數(shù)。11、數(shù)據(jù)的約束區(qū)間VHDL語(yǔ)言屬于強(qiáng)類型語(yǔ)言,在仿真過(guò)程中,首先要檢查賦值語(yǔ)句中的類型和區(qū)間,任何一個(gè)信號(hào)和變量的賦值均必須落入給定的約束區(qū)間中,也就是說(shuō)要落入有效數(shù)值的范圍中。約束區(qū)間的說(shuō)明通常跟在數(shù)據(jù)類型說(shuō)明的后面。例如:

INTEGERRANGE100DOWNTO1BIT_VECTOR(3DOWNTO0)

REALRANGE2.0TO30.0這里DOWNTO表示下降;而TO表示上升。4.2.2用戶定義的數(shù)據(jù)類型由用戶定義的數(shù)據(jù)類型的定義書(shū)寫(xiě)格式為:

TYPE數(shù)據(jù)類型名{,數(shù)據(jù)類型名}數(shù)據(jù)類型定義;

在VHDL語(yǔ)言中還存在不完整的用戶定義的數(shù)據(jù)類型的書(shū)寫(xiě)格式:

TYPE數(shù)據(jù)類型名{,數(shù)據(jù)類型名}

上述10種數(shù)據(jù)類型是VHDL語(yǔ)言中標(biāo)準(zhǔn)的數(shù)據(jù)類型,在編程時(shí)可以直接引用。如果用戶需使用這10種以外的數(shù)據(jù)類型,則必須進(jìn)行自定義。用戶定義的數(shù)據(jù)類型的種類

枚舉(Enumerated)類型;整數(shù)(Integer)類型;實(shí)數(shù)(Real)、浮點(diǎn)數(shù)(Floating)類型;數(shù)組(Array)類型;存取(Access)類型;文件(File)類型;記錄(Recode)類型;時(shí)間(Time)類型(物理類型)。1、枚舉(Enumerated)類型

在邏輯電路中,所有的數(shù)據(jù)都是用“1”或“0”來(lái)表示的,但是人們?cè)诳紤]邏輯關(guān)系時(shí),只有數(shù)字往往時(shí)不方便的。在VHDL語(yǔ)言中,可以用符號(hào)名來(lái)代替數(shù)字。例如,在表示一周每一天狀態(tài)的邏輯電路中,可以假設(shè)“000”為星期天,“001”為星期一。這對(duì)閱讀程序是非常不方便的。為此,可以定義一個(gè)叫“week”的數(shù)據(jù)類型。

TYPEweekIS(sun,mon,tue,wed,thu,fri,sat);

由于上述的定義,凡是用于代表星期二的日子都可以用tue來(lái)代替,這比用代碼“010”表示星期二直觀多了,使用時(shí)也不易出錯(cuò)。枚舉類型數(shù)據(jù)的定義格式為:

TYPE

數(shù)據(jù)類型名IS(元素,元素,···);枚舉類型的編碼:

綜合器自動(dòng)實(shí)現(xiàn)枚舉類型元素的編碼,一般將第一個(gè)枚舉量(最左邊)編碼為0,以后的依次加1。編碼用位矢量表示,位矢量的長(zhǎng)度將取所需表達(dá)的所有枚舉元素的最小值。如:typecoloris(blue,green,yellow,red);編碼為:blue=“00”;green=“01”;yellow=“10”;red=“11”;2、整數(shù)類型(Integer),實(shí)數(shù)類型(Real)用戶定義的整數(shù)類型是標(biāo)準(zhǔn)包中整數(shù)類型的子范圍。例如,在一個(gè)數(shù)碼管上顯示數(shù)字,其值只能取0~9的整數(shù)。如果由用戶定義一個(gè)用于數(shù)碼顯示的數(shù)據(jù)類型,那么就可以寫(xiě)為:

TYPEdigitISINTEGERRANGE0TO9;同理實(shí)數(shù)類型也如此,例如:

TYPEcurrentISREALRANGE–1E4TO1E4;據(jù)此,可以總結(jié)出整數(shù)或?qū)崝?shù)用戶定義數(shù)據(jù)類型的格式為:

TYPE

數(shù)據(jù)類型名IS

數(shù)據(jù)類型定義約束范圍;3、數(shù)組(Array)類型數(shù)組:是將相同類型的數(shù)據(jù)集合在一起所形成的一個(gè)新的數(shù)據(jù)類型。VHDL支持多維數(shù)組。限定數(shù)組:其索引范圍有一定的限制。格式:TYPE

數(shù)據(jù)類型名IS

ARRAY

范圍OF

原數(shù)據(jù)類型名;例如:TYPEwordISARRAY(1TO8)OFSTD_LOGIC;非限定數(shù)組:數(shù)組索引范圍被定義成一個(gè)類型范圍。格式:TYPE

數(shù)據(jù)類型名ISARRAY(類型名稱RANGE<>)

OF

原數(shù)據(jù)類型名;例如:TYPESTD_LOGIC_VECTORISARRAY(NATURALRANGE<>)OFSTD_LOGIC;

這里范圍由“RANGE<>”指定,這是一個(gè)沒(méi)有范圍限制的數(shù)組。在這種情況下,范圍由信號(hào)說(shuō)明語(yǔ)句等確定。例如:SIGNALaaa:STD_LOGIC_VECTOR(3DOWNTO0);4、時(shí)間(Time)類型(物理類型)表示時(shí)間的數(shù)據(jù)類型,在仿真時(shí)是必不可少的,其書(shū)寫(xiě)格式為:TYPE

數(shù)據(jù)類型名IS

范圍;

UNITS

基本單位;單位;ENDUNITS;例如:

TYPEtimeISRANGE-1E18TO1E18;UNITSfs;ps=1000fs;ns=1000ps;us=1000ns;ms=1000us;sec=1000ms;min=60sec;hr=60min;ENDUNITS;

這里基本單位是“fs”,其1000倍是“ps”等等。時(shí)間是物理類型的數(shù)據(jù),當(dāng)然對(duì)容量、阻抗值等也可以作定義。5、記錄(Recode)類型

數(shù)組是同一類型數(shù)據(jù)集合起來(lái)形成的,而記錄則是將不同類型的數(shù)據(jù)和數(shù)據(jù)名組織在一起而形成的新客體。記錄數(shù)據(jù)類型的定義格式為:TYPE

數(shù)據(jù)類型名IS

RECORD

元素名:數(shù)據(jù)類型名;元素名:數(shù)據(jù)類型名;ENDRECORD;記錄(Recode)類型(續(xù))訪問(wèn)記錄體元素的方式:記錄體名.元素名。例如:

TYPEbankISRECORDaddr0:STD_LOGIC_VECTOR(7DOWNTO0);addr1:STD_LOGIC_VECTOR(7DOWNTO0);r0:INTEGER;inst:instruction;ENDRECORD;SIGNALaddbus1,addbus2:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALresult:INTEGER;SIGNALalu_code:instruction;

SIGNALr_bank:bank:=(“00000000”,”00000000”,0,add);addbus1<=r_bank.addr1;r_bank.inst<=alu_code;

4.2.3用戶定義的子類型

用戶定義的子類型是用戶對(duì)已定義的數(shù)據(jù)類型,作一些范圍限制而形成的一種新的數(shù)據(jù)類型。

子類型定義的一般格式為:

SUBTYPE

子類型名

IS

數(shù)據(jù)類型名

[范圍];例如

SUBTYPEiobusISSTD_LOGIC_VECTOR(7DOWNTO0);SUBTYPEdigitISINTEGERRANGE0TO9;

子類型可以對(duì)原數(shù)據(jù)類型指定范圍而形成,也可以完全和原數(shù)據(jù)類型范圍一致。4.2.4數(shù)據(jù)類型的轉(zhuǎn)換

在VHDL語(yǔ)言中,數(shù)據(jù)類型的定義是相當(dāng)嚴(yán)格的,不同類型的數(shù)據(jù)是不能進(jìn)行運(yùn)算和直接代入的。為了實(shí)現(xiàn)正確的代入操作,必須將要代入的數(shù)據(jù)進(jìn)行類型變換。這就是所謂類型變換。類型變換函數(shù)

變換函數(shù)通常由VHDL語(yǔ)言的包集合提供,如在STD_LOGIC_1164、STD_LOGIC_ARITH、STD_LOGIC_UNSIGNED包集合中提供了以下轉(zhuǎn)換函數(shù):教材P66例4-24.2.6IEEE標(biāo)準(zhǔn)“STD_LOGIC”、“STD_LOGIC_VECTOR”VHDL的標(biāo)準(zhǔn)數(shù)據(jù)類型“BIT是一個(gè)邏輯型的數(shù)據(jù)類型,數(shù)據(jù)取值只能是“0”和“1”。由于該類型數(shù)據(jù)不存在不定狀態(tài)‘X’,不便于仿真。另外,由于它也不存在高阻狀態(tài),因此也很難用它來(lái)描述雙向數(shù)據(jù)總線。為此IEEE在1993年制訂了新的標(biāo)準(zhǔn)(IEEESTD1164),使得“STD_LOGIC”型數(shù)據(jù)可以具有如下的9種不同的值:

‘U’------初始值;‘X’------不定;‘0’-------0;‘1’-------1;‘Z’------高阻;‘W’-----弱信號(hào)不定‘L’------弱信號(hào)0;‘H’------弱信號(hào)1;‘-’-------不可能情況?!癝TD_LOGIC”和“STD_LOGIC_VECTOR”是IEEE新制訂的標(biāo)準(zhǔn)化數(shù)據(jù)類型,也是在VHDL語(yǔ)法以外所添加的數(shù)據(jù)類型,因此將它歸屬到用戶定義的數(shù)據(jù)類型中。當(dāng)使用該類型數(shù)據(jù)時(shí),在程序中必須寫(xiě)出庫(kù)說(shuō)明語(yǔ)句和使用包集合STD_LOGIC_1164的說(shuō)明語(yǔ)句。

4.3VHDL語(yǔ)言的運(yùn)算操作符VHDL語(yǔ)言中共有4類操作符,可以分別進(jìn)行邏輯運(yùn)算(Logical)、關(guān)系運(yùn)算(Relational)、算術(shù)運(yùn)算(Arithmetic)和并置運(yùn)算(Concatenation)。被操作符所操作的對(duì)象是操作數(shù),且操作數(shù)的類型應(yīng)該和操作符所要求的類型相一致。運(yùn)算操作符是有優(yōu)先級(jí)的,例如邏輯運(yùn)算符NOT,在所有操作符中其優(yōu)先級(jí)最高。操作符的優(yōu)先級(jí)請(qǐng)同學(xué)們參看書(shū)上68頁(yè)的表格。6種:NOT(取反)、AND(與)、OR(或)、NAND(與非)、NOR(或非)、XOR(異或)。可以為STD_LOGIC”和“BIT”等邏輯型數(shù)據(jù)、“STD_LOGIC_VECTOR”邏輯型數(shù)組及布爾型數(shù)據(jù)進(jìn)行邏輯運(yùn)算。必須注意,運(yùn)算符的左邊和右邊,以及代入的信號(hào)的數(shù)據(jù)類型必須是相同的。

注:當(dāng)有兩個(gè)以上的邏輯表達(dá)式時(shí),左右沒(méi)有優(yōu)先級(jí)的差別,因此必須使用括號(hào),如:

X<=(aANDb)OR(NOTcANDd);4.3.1邏輯運(yùn)算符邏輯運(yùn)算符(續(xù))

當(dāng)然也有例外,當(dāng)邏輯表達(dá)式中只有“AND”,“OR”,“XOR”運(yùn)算符時(shí),可以省略括號(hào)。例如:

a<=bANDcANDdANDe;a<=bORcORdORe;a<=bXORcXORdXORe;a<=((bNANDc)NANDd)NANDe;(必須要括號(hào))

a<=(bANDc)OR(dANDe);(必須要括號(hào))在所有邏輯運(yùn)算符中NOT的優(yōu)先級(jí)最高。

此外,還有在VHDL93中引入的移位操作符:

SLL邏輯左移----數(shù)據(jù)左移,右端空出來(lái)的位置填充'0'SRL邏輯右移----數(shù)據(jù)右移,左端空出來(lái)的位置填充'0'SLA算術(shù)左移----數(shù)據(jù)左移,同時(shí)復(fù)制最左端的位,在數(shù)據(jù)左移操作后填充在右端空出的位置上SRA算術(shù)右移----數(shù)據(jù)右移,同時(shí)復(fù)制最左端的位,在數(shù)據(jù)右移操作后填充在左端空出的位置上邏輯運(yùn)算符(續(xù))4.3.2算術(shù)運(yùn)算符算術(shù)運(yùn)算符共有10種,分別是:+(加),-(減),*(乘),/(除),MOD(求模),REM(取余),+(正<一元運(yùn)算>),-(負(fù)<一元運(yùn)算>),**(指數(shù)),ABS(取絕對(duì)值)。(1)一元運(yùn)算的操作數(shù)(正、負(fù))可以為任何數(shù)值類型(整數(shù)、實(shí)數(shù)、物理量)。(2)加法和減法的操作數(shù)也可以為任意數(shù)值類型,但應(yīng)有相同的數(shù)據(jù)類型。(3)乘除法的操作數(shù)可以同為整數(shù)和實(shí)數(shù)。(4)求模和取余的操作數(shù)必須是同一整數(shù)類型數(shù)據(jù)。(5)一個(gè)指數(shù)的運(yùn)算符的左操作數(shù)可以是任意整數(shù)或?qū)崝?shù),而右操作數(shù)應(yīng)為一整數(shù)。算術(shù)運(yùn)算符(續(xù))

實(shí)際上能夠真正綜合邏輯電路的算術(shù)運(yùn)算符只有“+”、“-”、“*”。在數(shù)據(jù)位較長(zhǎng)的情況下,在使用算術(shù)運(yùn)算符進(jìn)行運(yùn)算,特別是使用乘法運(yùn)算符“*”時(shí),應(yīng)特別慎重。因?yàn)閷?duì)于16位的乘法運(yùn)算,綜合時(shí)邏輯門(mén)電路會(huì)超過(guò)2000個(gè)門(mén)。對(duì)于算術(shù)運(yùn)算符“/”、“MOD”、”REM”,分母的操作數(shù)為2乘方的常數(shù)時(shí),邏輯電路綜合是可能的。

若對(duì)“STD_LOGIC_VECTOR”進(jìn)行“+”(加)、“-”(減)運(yùn)算時(shí),兩邊的操作數(shù)和代入的變量位長(zhǎng)如不同,則會(huì)產(chǎn)生語(yǔ)法錯(cuò)誤。另外,“*”運(yùn)算符兩邊的位長(zhǎng)相加后的值和要代入的變量的位長(zhǎng)不相同時(shí),同樣也會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤。4.3.3關(guān)系運(yùn)算符

在VHDL語(yǔ)言中關(guān)系運(yùn)算符共有6種,它們分別是:=(等于),/=(不等于),<(小于),<=(小于等于),>(大于),>=(大于等于)。

等號(hào)“=”和不等號(hào)“/=”可以適用所有類型的數(shù)據(jù)。其它關(guān)系運(yùn)算符則可使用于整數(shù)(INTEGER)和實(shí)數(shù)(REAL)、位(STD_LOGIC)等枚舉類型以及位矢量(STD_LOGIC_VECTOR

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論