VHDL的数据对象(学习笔记1)
VHDL語言數(shù)據(jù)對象
VHDL語言學(xué)習(xí)筆記(一):數(shù)據(jù)對象
內(nèi)容:本文主要介紹VHDL語言的三種主要數(shù)據(jù)對象,即常量(constant)、變量(variable)和信號(signal)。
文章目錄
- VHDL語言數(shù)據(jù)對象
- 一、 常量
- 二、變量
- 三、信號
- 總結(jié)
一、 常量
在VHDL程序中,一經(jīng)定義數(shù)值就不再發(fā)生變化的量就是常量。在硬件物理意義上,其表示為硬件電路中的電源或地線。
常量可以在程序包、實(shí)體聲明、結(jié)構(gòu)體聲明和語句的聲明部分中進(jìn)行聲明,常量定義語句所允許的設(shè)計(jì)單元有實(shí)體、結(jié)構(gòu)體、程序包、塊、進(jìn)程和子程序。不同部分聲明的常量具有不同的作用范圍。
常量聲明的語言結(jié)構(gòu):
CONSTANT 常量名 [, 常量名...] : 數(shù)據(jù)類型 := 表達(dá)式;- “CONSTANT”是用來表示常量的保留字,用來聲明一個常量;
- “[]”中的內(nèi)容表示可選項(xiàng),即多個相同數(shù)據(jù)類型的常量可以一起聲明;
- 數(shù)據(jù)類型是對象所具有的類型;
- 表達(dá)式用來對常量進(jìn)行賦值,其賦值符號為“:=”。
常量聲明示例:
CONSTANT PI : REAL := 3.14; CONSTANT NUM : INTEGER := 6; CONSTANT DELAY : TIME := 7ns;注意:
- 常量定以后不允許修改;
- 使用時要注意常量的作用范圍。
二、變量
變量是指在設(shè)計(jì)實(shí)體中值會發(fā)生變化的量。變量主要是對臨時數(shù)據(jù)進(jìn)行局部存儲,只能在進(jìn)程語句、過程語句和函數(shù)語句的聲明部分中使用。變量的賦值是理想化的數(shù)據(jù)傳輸,是立即發(fā)生、不存在任何延時的行為。
變量聲明結(jié)構(gòu):
VARIABLE 變量名 [, 變量名...] : 數(shù)據(jù)類型 [:= 初始值]- “VARIABLE”是用來表示變量的保留字,用來聲明一個變量;
- “[:= 初始值]”用來對變量進(jìn)行初始賦值操作,其中“:=”為賦值符號。
變量聲明示例:
VARIABLE vA : INTEGER 0 TO 15 ; --聲明了一個取值范圍為0~15的整數(shù)類型變量 VARIABLE vB, vC : INTEGER :=2 ; --聲明了兩個初始值為2的整數(shù)類型變量 VARIABLE vC : STD_LOGIC := '1' ; --聲明了一個初始值為1的標(biāo)準(zhǔn)位邏輯類型變量變量注意事項(xiàng):
- 變量為局部量,僅限于在定義了變量的進(jìn)程、過程或子程序的順序語句中使用;
- 如果變量沒有賦予初始值,那么它將取默認(rèn)值,即指定的數(shù)據(jù)類型的最左值或最小值。
變量的賦值結(jié)構(gòu):
目標(biāo)變量名 := 表達(dá)式;- 賦值語句右側(cè)的“表達(dá)式”與目標(biāo)變量必須為同一數(shù)據(jù)類型;
- 表達(dá)式可以為運(yùn)算表達(dá)式,也可以是一個數(shù)值;
- 新變量值的獲得是直接的、立即發(fā)生的;
- 目標(biāo)變量可以是單值變量,也可以是變量集合,如位矢量類型的變量。
變量賦值示例:
VARIABLE vA, vB : REAL ; --定義了實(shí)數(shù)類型變量 VARIABLE vC, vD : STD_LOGIC_VECTOR (7 DOWNTO 0); --定義了位矢量類型變量vA := 10.0 ; vB := vA + 6 ; vC := "11010101" ; vD (0 TO 6) := vC (1 TO 7) ; --段賦值三、信號
信號時設(shè)計(jì)實(shí)體之間動態(tài)交換數(shù)據(jù)的一種手段,其物理意義類似于電路內(nèi)部的連接線。信號可以看做是數(shù)值的容器,它不但可以容納當(dāng)前值,也可以保持歷史值。
信號聲明結(jié)構(gòu):
SIGNAL 信號名 [, 信號名...] : 數(shù)據(jù)類型 [:= 初始值] ;信號聲明示例:
SIGNAL sA : STD_LOGIC := '1' ; --聲明一個初始值為‘1’的標(biāo)準(zhǔn)邏輯信號 SIGNAL sB : BIT ; --聲明了一個位信號 SIGNAL sC : STD_LOGIC_VECTOR ( 15 DOWNTO 0 ) ; --聲明了一個標(biāo)準(zhǔn)位矢量信號信號初始值的設(shè)置不是必需的,而且初始值僅在VHDL的行為仿真中有效。與變量相比,信號的硬件特性更明顯,它具有全局性特性。比如,在程序包中定義的信號,對于所有調(diào)用此程序包的設(shè)計(jì)實(shí)體都是可見的;在實(shí)體中定義的信號,在其對應(yīng)的結(jié)構(gòu)體中都可見。
注意,在進(jìn)程和子程序的順序語句中不允許定義信號。
信號的賦值結(jié)構(gòu):
目標(biāo)信號名 <= 表達(dá)式 ;數(shù)據(jù)信號的傳入可以設(shè)置延時,即便延時設(shè)置為0,目標(biāo)信號的數(shù)據(jù)傳入也不是零延時的。因此,符號"<="兩邊的數(shù)值并不一定總是一致的。
在進(jìn)程中,允許同一個信號有不同驅(qū)動源,即同一個目標(biāo)信號可以被多個表達(dá)式賦值,但是只有最后一個賦值語句會被執(zhí)行。
總結(jié)
本文信息源自數(shù)據(jù)和網(wǎng)絡(luò)。
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的VHDL的数据对象(学习笔记1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新建VHDL的Vivado工程
- 下一篇: AXI quad SPI没有输出