數(shù)據(jù)類型語(yǔ)法_第1頁(yè)
數(shù)據(jù)類型語(yǔ)法_第2頁(yè)
數(shù)據(jù)類型語(yǔ)法_第3頁(yè)
數(shù)據(jù)類型語(yǔ)法_第4頁(yè)
數(shù)據(jù)類型語(yǔ)法_第5頁(yè)
已閱讀5頁(yè),還剩35頁(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)介

(優(yōu)選)數(shù)據(jù)類型語(yǔ)法第一頁(yè),共40頁(yè)。二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象在VHDL程序中,我們經(jīng)常會(huì)遇到這樣的語(yǔ)句:

SignalA:std_logic;VariableB:std_logic_vector(7downto0);

ConstantC:integer;數(shù)據(jù)對(duì)象類型數(shù)據(jù)類型數(shù)據(jù)對(duì)象名第二頁(yè),共40頁(yè)。VHDL語(yǔ)言中的基本數(shù)據(jù)類型邏輯類型數(shù)值類型布爾代數(shù)(Boolean)位(Bit)標(biāo)準(zhǔn)邏輯(Std_Logic)整數(shù)(Integer)實(shí)數(shù)(Real)二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象第三頁(yè),共40頁(yè)。

邏輯數(shù)據(jù)類型

(1)布爾代數(shù)(Boolean)型;(2)位(Bit);(3)標(biāo)準(zhǔn)邏輯(Std_logic);typeBITis(‘0’,‘1’);typeBOOLEANis(FALSE,TRUE);二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象第四頁(yè),共40頁(yè)。標(biāo)準(zhǔn)邏輯類型

TypeStd_LogicIs(‘U’,--Undefined(未初始化)

‘X’,--ForcingUnknown(強(qiáng)未知)‘0’,--Forcing0(強(qiáng)0)

‘1’,--Forcing1(強(qiáng)1)

‘Z’,--HignImpedance(高阻)

‘W’,--WeakUnknown(弱未知)

‘L’,--Weak0(弱0)

‘H’,--Weak1(弱1)

‘-’,--Don’tCare(忽略))二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象

標(biāo)準(zhǔn)邏輯類型對(duì)數(shù)字邏輯電路的邏輯特性描述更加完整,真實(shí),因此在VHDL程序中,對(duì)邏輯信號(hào)的定義通常采用標(biāo)準(zhǔn)邏輯類型.第五頁(yè),共40頁(yè)。

邏輯序列位序列(Bit_Vector)

標(biāo)準(zhǔn)邏輯序列(Std_Logic_Vector)二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象第六頁(yè),共40頁(yè)。Signaldata:Std_Logic_Vector(7downto0);Signaladdr:Bit_Vector(0to3);序列的范圍大小聲明方式:To,Downto

序列的使用二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象第七頁(yè),共40頁(yè)。

序列的分解與合成SignalA:Std_Logic_Vector(3downto0);SignalB:Std_Logic_Vector(0to3);SignalC:Std_Logic_Vector(0to1);SignalD:Std_Logic_Vector(1downto0);C<=A(2downto1);B<=A(3)&

D

&

‘1’;二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象第八頁(yè),共40頁(yè)。

數(shù)值類型(1)整數(shù)TypeIntegerIsRange-231~231-1

限定整數(shù)取值范圍的方法:SignalA:Integer;SignalB:IntegerRange0to7;SignalC:IntegerRange-1to1;二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象第九頁(yè),共40頁(yè)。

無(wú)符號(hào)數(shù)Unsigned與標(biāo)準(zhǔn)邏輯序列相似,聲明時(shí)必須指明其位數(shù)。SignalA:Unsigned(3downto0);SignalB:Unsigned(7downto0);注意:必須使用downto形式。二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象第十頁(yè),共40頁(yè)。(2)實(shí)數(shù)TypeRealIsRange-1.7E38to1.7E38;

實(shí)數(shù)類型的表示可用科學(xué)計(jì)數(shù)形式或者帶小數(shù)點(diǎn)的形式。二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象第十一頁(yè),共40頁(yè)。VHDL中的運(yùn)算符二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象

算術(shù)運(yùn)算符:

+ 加

- 減

* 乘

/ 除

** 乘方

mod 求模

rem 求余

abs 求絕對(duì)值

邏輯運(yùn)算:

and

邏輯與

or

邏輯或

nand

與非

nor

或非

xor

異或

xnor 同或

not

邏輯非第十二頁(yè),共40頁(yè)。關(guān)系運(yùn)算符:

= 等于

/= 不等于

< 小于

<= 小于或等于

> 大于

>= 大于或等于注:其中‘<=’操作符也用于表示信號(hào)的賦值操作。

&

連接符,將兩個(gè)數(shù)據(jù)對(duì)象或矢量連接成維數(shù)更大的矢量,它可給代碼書(shū)寫(xiě)帶來(lái)方便。例如:

vabc=a&b&c;如果a=‘1’

,b=‘0’

,c=‘1’

,則

vabc=“101”

。二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象第十三頁(yè),共40頁(yè)。

用戶自定義數(shù)據(jù)類型:(1)列舉數(shù)據(jù)類型Type列舉名稱is(元素1,元素2,…)例子:Typestateis(S0,S1,S2,S3);SignalA:state;二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象第十四頁(yè),共40頁(yè)。(2)數(shù)組類型

Type數(shù)組名稱isArray(范圍)of數(shù)據(jù)類型;例子:

TypeByteisArray(7downto0)ofBit;Signalsdo:Byte;二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象第十五頁(yè),共40頁(yè)。

數(shù)據(jù)類型的轉(zhuǎn)換

在VHDL語(yǔ)言里,不同類型的數(shù)據(jù)信號(hào)之間不能互相賦值。當(dāng)需要不同類型數(shù)據(jù)之間傳遞信息時(shí),就需要類型轉(zhuǎn)換函數(shù)將其中的一種類型數(shù)據(jù)轉(zhuǎn)換為另一中數(shù)據(jù)類型后,再進(jìn)行信號(hào)的傳遞。二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象第十六頁(yè),共40頁(yè)。例如:SignalY:Std_logic_vector(7downto0);SignalX:Integerrange0to255;Y<=CONV_STD_LOGIC_VECTOR(X,8);二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象第十七頁(yè),共40頁(yè)。CONV_INTEGER

將數(shù)據(jù)類型UNSIGNED,SIGNED轉(zhuǎn)換為INTEGER

類型.CONV_UNSIGNED

將數(shù)據(jù)類型INTEGER,SIGNED轉(zhuǎn)換為UNSIGNED

類型.CONV_SIGNED

將數(shù)據(jù)類型INTEGER,UNSIGNED轉(zhuǎn)換為SIGNED類型. CONV_STD_LOGIC_VECTOR

將數(shù)據(jù)類型INTEGER,UNSIGNED,SIGNED,STD_LOGIC轉(zhuǎn)換為STD_LOGIC_VECTOR

類型.

二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象第十八頁(yè),共40頁(yè)。

數(shù)據(jù)對(duì)象常量信號(hào)變量(DataObjects)二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象第十九頁(yè),共40頁(yè)。(1)常量

定義格式:Constant常量名稱:數(shù)據(jù)類型:=給定值;常量通常來(lái)來(lái)定義延遲和功耗等參數(shù)。

注意!常數(shù)定義的同時(shí)進(jìn)行賦初值。

常數(shù)可以在實(shí)體說(shuō)明、結(jié)構(gòu)體描述中使用。二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象第二十頁(yè),共40頁(yè)。libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;--必需定義+entityexam1is

port(ip:instd_logic_vector(3downto0);op:outstd_logic_vector(3downto0));endexam1;architecturem1ofexam1isconstantnum:integer:=6;beginop<=ip+num;endm1;二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象第二十一頁(yè),共40頁(yè)。(2)信號(hào)定義格式Signal信號(hào)名稱:數(shù)據(jù)類型[:=初始值];信號(hào)相當(dāng)于電路內(nèi)部元件之間的物理連線,因此信號(hào)的賦值有一定的延遲時(shí)間.二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象第二十二頁(yè),共40頁(yè)?!靶盘?hào)”數(shù)據(jù)對(duì)象,代表電路內(nèi)部信號(hào)或連接線路,其在元件之間起互連作用。注意!信號(hào)定義的時(shí)候盡管可以直接賦初值,但系統(tǒng)往往忽略。建議信號(hào)對(duì)象定義后再進(jìn)行賦值。信號(hào)為全局量。在實(shí)體說(shuō)明、結(jié)構(gòu)體描述和程序包說(shuō)明中使用。信號(hào)賦值的語(yǔ)法格式為:信號(hào)名<=表達(dá)式;如:SignalS1:Std_logic_vector(3Downto0);

S1<=“0000”;二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象第二十三頁(yè),共40頁(yè)。(3)變量

定義格式Variable變量名稱:數(shù)據(jù)類型[:=初始值];

變量只能用于“進(jìn)程”

之中,變量的賦值是立即生效的,常用于高層次抽象的算法描述

當(dāng)中。二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象第二十四頁(yè),共40頁(yè)?!白兞俊睌?shù)據(jù)對(duì)象,它用于對(duì)中間數(shù)據(jù)的臨時(shí)存儲(chǔ),并不一定代表電路的某一組件。注意!變量定義的時(shí)候盡管可以直接賦初值,但系統(tǒng)往往忽略。建議變量對(duì)象定義后再進(jìn)行賦值。變量為局部量。僅限于進(jìn)程(Process)或子程序中使用。變量賦值的語(yǔ)法格式為:目標(biāo)變量:=表達(dá)式;如:VariableS1:Std_logic_vector(3Downto0);

S1

:=“0000”;二、VHDL數(shù)據(jù)類型與數(shù)據(jù)對(duì)象第二十五頁(yè),共40頁(yè)。信號(hào)和變量的比較

(1)信號(hào)和變量的對(duì)應(yīng)關(guān)系不同:信號(hào)代表電路內(nèi)部信號(hào)或連接線路;而變量則不是。

(2)信號(hào)和變量聲明的位置不同:信號(hào)聲明在子程序、進(jìn)程的外部;而變量聲明在子程序、進(jìn)程的內(nèi)部。

(3)信號(hào)為全局量,而變量只在定義它的域中才可見(jiàn)。因此,變量不能在兩個(gè)進(jìn)程之間傳遞信息。

(4)在一個(gè)進(jìn)程中多次為一個(gè)信號(hào)賦值時(shí),只有最后一個(gè)值會(huì)起作用;而變量則不同,每次賦值都會(huì)改變它的值。(5)賦值不同。在進(jìn)程中,信號(hào)賦值只有在進(jìn)程結(jié)束時(shí)起作用,而變量賦值是立即進(jìn)行的。而且賦值符號(hào)不同:信號(hào)賦值為“<=”,變量賦值為“:=”。第二十六頁(yè),共40頁(yè)。數(shù)據(jù)對(duì)象屬性(1)數(shù)值類屬性:(數(shù)組類型的數(shù)據(jù)對(duì)象)數(shù)值類屬性有

’left,’right,’low,’high,’length。其中用符號(hào)

隔開(kāi)對(duì)象名及其屬性。

left表示數(shù)組的左邊界;

right表示數(shù)組的右邊界;

low表示數(shù)組的下邊界;

high表示數(shù)組的上邊界;

length表示數(shù)組的長(zhǎng)度。第二十七頁(yè),共40頁(yè)。如:SignalA:std_logic_vector(7downto0);SignalB:std_logic_vector(0to3);則這兩個(gè)信號(hào)的屬性值分別為:

A’left=7;A’right=0;A’low=0;A’high=7;A’length=8;B’left=0;B’right=3;B’low=0;B’high=3;B’length=4;數(shù)據(jù)對(duì)象屬性第二十八頁(yè),共40頁(yè)。(2)’event屬性:

’event屬性,它的值為布爾型,如果剛好有事件發(fā)生在該屬性所附著的信號(hào)上(即信號(hào)有變化),則其取值為T(mén)rue,否則為False。

利用此屬性可識(shí)別時(shí)鐘信號(hào)的變化情況,即時(shí)鐘是否發(fā)生。

數(shù)據(jù)對(duì)象屬性第二十九頁(yè),共40頁(yè)。例如:時(shí)鐘邊沿表示:

signalclk:instd_logic;If(clk’eventandclk=’1’)thenQ<=Q+1;

則clk’eventandclk=’1’表示時(shí)鐘的上升沿。即時(shí)鐘變化了,且其值為1。

clk’eventandclk=’0’表示時(shí)鐘的下降沿。即時(shí)鐘變化了,且其值為0。數(shù)據(jù)對(duì)象屬性第三十頁(yè),共40頁(yè)。例2:設(shè)計(jì)組合邏輯電路設(shè)計(jì)一個(gè)1bit全加器。輸入X,Y,CI輸出Z,CO第三十一頁(yè),共40頁(yè)。libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityfull_bit_adderisport(a,b,ci:instd_logic;y,cout:outstd_logic);endfull_bit_adder;第三十二頁(yè),共40頁(yè)。architecturebh1offull_bit_adderisbeginy<=((nota)and(notb)andci)or((nota)and(b)and(notci))or((a)and(notb)and(notci))or((a)and(b)and(ci));cout<=(bandci)or(aandci)or(aandb);endbh1;第三十三頁(yè),共40頁(yè)。architecturebh2offull_bit_adderisbeginy<=axorbxorci;cout<=(aandb)or(aandci)or(bandci);endbh2;configurat

溫馨提示

  • 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)論