VHDL語言數(shù)據(jù)類型及相互轉(zhuǎn)換_第1頁
VHDL語言數(shù)據(jù)類型及相互轉(zhuǎn)換_第2頁
VHDL語言數(shù)據(jù)類型及相互轉(zhuǎn)換_第3頁
VHDL語言數(shù)據(jù)類型及相互轉(zhuǎn)換_第4頁
VHDL語言數(shù)據(jù)類型及相互轉(zhuǎn)換_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

標準數(shù)據(jù)類型

1,整數(shù)(INTEGER)

范圍:-2147483547---2147483646

2,實數(shù)(REAL)

范圍:-1.0E38---1.0E38(綜合器不支持)

書寫時一定要有小數(shù).

3,位(BIT)

在數(shù)字系統(tǒng)中,信號經(jīng)常用位的值表示,位的值用帶單引號的'1'和'0'來表示

標準數(shù)據(jù)類型

4,位矢量(BIT_VECTOR)

位矢量是用雙引號括起來的一組位數(shù)據(jù)

"010101"

5,布爾量(BOOLEAN)

只有"真"和"假"兩個狀態(tài),可以進行關系運算

6,字符(CHARACTER)

字符量通常用單引號括起來,對大小寫敏感

明確說明1是字符時:CHARACTER'('1')

標準數(shù)據(jù)類型

7,字符串(STRING)

字符串是雙引號括起來的由字母,數(shù)字或@,%,$組成的一串字符.區(qū)分大小寫

"laksdklakld""1010101010"

8,時間(TIME)

時間的單位:fs,ps,ns,ms,sec,min,hr

例:10ns

整數(shù)數(shù)值和單位之間應有空格

標準數(shù)據(jù)類型

9,錯誤等級(SEVERITYLEVEL)

在VHDL仿真器中,錯誤等級用來表示系統(tǒng)的狀態(tài),它共有4種:

NOTE(注意)

WARNING(警告)

ERROR(錯誤)

FAILURE(失敗)

標準數(shù)據(jù)類型

10,自然數(shù)(NATURAL)正整數(shù)(POSITIVE)

自然數(shù)是整數(shù)的一個子類型,包括0和正整數(shù);正整數(shù)也是整數(shù)的一個子類型.

只能是正整數(shù)數(shù)據(jù)除定義類型外,有時還需要定義約束范圍.

INTEGERRANGE100DOWNTO0

BIT_VECTOR(3DOWNTO0)

REALIEEE定義的邏輯位與矢量

在IEEE的程序包std_logic_1164中定義了兩個非常重要的數(shù)據(jù)類型:

1,std_logic

取值:0,1,Z,X,W,L,H

Z:高阻X:不定W:弱信號不定

L:弱信號0H:弱信號1

2,Std_logic_vector

注意

1,在使用"std_logic"和"std_logic_vector"時,在程序中必須聲明庫及程序包說明語句,即LIBRARYieee和std_logic_1164.ALL這兩句在程序中必不可少.

2,std_logic有多個取值,與BIT不同,在編程時應特別注意,需要考慮全所有情況.

用戶自定義的數(shù)據(jù)類型

1,枚舉類型

格式:TYPE數(shù)據(jù)類型名IS(元素,元素,…);

TYPESTD_LOGICIS

('U','X','0','1','Z','W','L','H','-');

TYPEweekIS(Sun,Mon,Tue,wed,Thu,Fri,Sat);

TYPEcolorIS(red,green,yellow,blue)

TYPElift_stateIS

(stopon1,doorpeen,doorclose,doorwait1,doorwait2,doorwait3,doorwait4,doorwait5,up,down,stop)

枚舉類型的聲明

TYPEcolorIS(red,green,yellow,blue);

VARIABLEA:COLOR;

SIGNALB:COLOR;

A:=RED;

B<=YELLOW;

TYPEleverIS('0','1','z');

SIGNALV:lever;

V<='1';

用戶自定義的數(shù)據(jù)類型

2,整數(shù)(INTEGER)

格式:TYPE數(shù)據(jù)類型名IS數(shù)據(jù)類型定義約束范圍

例TYPEdigitISINTEGERRANGE0TO9

VARIABLEA:DIGIT;

A:=5;

A:=28;

用戶自定義的數(shù)據(jù)類型

3,實數(shù)(REAL)

格式:TYPE數(shù)據(jù)類型名IS數(shù)據(jù)類型定義約束范圍

TYPEcurrentISREALRANGE-1E4TO1E4

VARIABLEA:CURRENT;數(shù)據(jù)類型的轉(zhuǎn)換

數(shù)據(jù)類型轉(zhuǎn)換函數(shù)有VHDL語言的包提供

例如:STD_LOGIC_1164,

STD_LOGIC_ARITH

STD_LOGIC_UNSIGNED等等

函數(shù)

說明

1、STD_LOGIC_1164包

TO_STDLOGIC_VECTOR(A)

TO_BITVECTOR(A)

TO_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

2、STD_LOGIC_ARITH包

CONV_STD_LOGIC_VECTOR(A,位長)

CONV_INTEGER(A)

由INTEGER,UNSIGNED和SIGNED轉(zhuǎn)換成

STD_LOGIC_VECTOR

由UNSIGNED和SIGNED轉(zhuǎn)換成INTEGER

3、STD_LOGIC_UNSIGNED包

CONV_INTEGER(A)

_

STD_LOGIC_VECTOR轉(zhuǎn)換成INTEGERVHDL屬性

VHDL沒有一般程序語言中的那些運算類標準函數(shù),取而代之的是多種能反映和影響硬件行為的屬性.屬性在描述時序電路的VHDL設計文件中幾乎處處可見,如檢測上升沿,下降沿,知道前一次發(fā)生的事件.

VHDL屬性

屬性指的是關于實體,結(jié)構(gòu)體,類型及信號的一些特征.有的屬性對綜合(設計)非常有用.

VHDL的屬性可分為數(shù)值類屬性,函數(shù)類屬性,范圍類屬性,信號類屬性,類型類屬性.其引用的一般形式為:對象'屬性.

數(shù)值類屬性

數(shù)值類屬性用于返回數(shù)組,塊或一般數(shù)據(jù)的有關值,如邊界,數(shù)組長度等信息.對一般的數(shù)據(jù)有4種數(shù)值類屬性:對象類型的左邊界,右邊界,上邊界,下邊界,對應的關鍵字是:LEFT,RIGHT,HIGH,LOW.數(shù)組在加一個長度屬性LENGTH.

數(shù)值類屬性

sdown:INstd_logic_vector(8DOWNTO0);

sup:INstd_logic-vector(0to8);

這兩個信號的各屬性值如下:

sdown'left=8;sdown'right=0;sdown'low=0;sdown'high=8;sdown'length=9;

sup'left=0;sup'right=8;sup'low=0;sup'high=8;sup'length=9;

數(shù)值類屬性

TYPEbit32ISARRAY(63DOWNTO32)OFBIT

VARIABLE:left_range,right_range,up_range,low_range,len:INTEGER;

BEGIN

left-range:=bit32'LEFT;--return63

right-range:=bit32'RIGHT;--return32

up-range:=bit32'HIGH;--return63

low-range:=bit32'LOW;--return32

len:=bit32'LENGTH;--return32

函數(shù)類屬性

信號屬性函數(shù)屬于函數(shù)類屬性,用來返回有關信號行為功能的信息.共有5種信號屬性函數(shù),分別是:'EVENT(事件);'ACTIVE(活躍);

'LAST_EVENT(最近一次事件到現(xiàn)在經(jīng)過多少時間);'LAST_ACTIVE(最近一次活躍到現(xiàn)在經(jīng)過多少時間);'LAST_VALUE(信號變化前的取值是什么)

EVENT

EVENT:它的值為布爾型,取值為TRUE或FALSE;

如果剛好有事件發(fā)生在該屬性所附著的信號上(即信號有變化),取值為TRUE.

利用此屬性可決定時鐘邊沿是否有效,即時鐘是否發(fā)生.

EVENT

SIGNALclk:INstd_logic;

clk'EVENTANDclk='1'

clk='1'ANDclk'EVENT

clk'EVENTANDclk='0'

clk='0'ANDclk'EVENT

rising_edge(clk)falling_edge(clk)

EVENT和ACTIVE

EVENT要求信號值發(fā)生變化;1到0,0到1

ACTIVE信號值的任何變化,1到1,1到0,0到1,0到0;

所有的事件都是活躍,但并非所有的活躍都是事件

范圍類屬性

'RANGE屬性,其生成一個限制性數(shù)據(jù)對象的范圍.

例SIGNALdata_bus:std_logic_vector(15DOWNTO0);

data_bus'RANGE=15downto0用VHDL語言設計分頻電路,把1KHZ的時鐘分至約1HZ左右的時鐘LIBRARYIEEE; USEIEEE.Std_Logic_1164.ALL; ENTITYFreDeviderIS PORT (Clkin:INStd_Logic; Clkout:OUTStd_Logic); END; ARCHITECTUREDeviderOFFreDeviderIS CONSTANTN:Integer:=499; signalcounter:Integerrange0toN; signalClk:Std_Logic; BEGIN PROCESS(Clkin)

溫馨提示

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

評論

0/150

提交評論