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