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