Presentation is loading. Please wait.

Presentation is loading. Please wait.

VHDL 的物件 (Objects) 宣告 物件種類 (1) 訊號 (2) 變數 (3) 常數 VHDL 的物件 (Objects) 宣告語法 : [ := ] ;

Similar presentations


Presentation on theme: "VHDL 的物件 (Objects) 宣告 物件種類 (1) 訊號 (2) 變數 (3) 常數 VHDL 的物件 (Objects) 宣告語法 : [ := ] ;"— Presentation transcript:

1 VHDL 的物件 (Objects) 宣告 物件種類 (1) 訊號 (2) 變數 (3) 常數 VHDL 的物件 (Objects) 宣告語法 : [ := ] ;

2 VHDL 的物件 (Objects) 宣告 (1) 訊號 : 在 VHDL 中的訊號是指電路上的連接點, 它包括實體中在埠 (Port) 後宣告的接腳 及在結構 (Architecture) 中宣告的訊號 (Signal) 接點

3 VHDL 的物件 (Objects) 宣告 (1) 訊號例 :

4 VHDL 的物件 (Objects) 宣告 (2) 變 數 ( Variable ) VHDL 中的變數與一般電腦語言中的變數一樣, 提 供在程式中做計數或運算用 例 : variable example_var1 : std_logic := '0'; ……… example_var1 := ‘1’; -- 使用變數 example_var1 及設定值 =1

5 變數 變數物件被宣告在 process 或副程式中, 我 們稱它為 process 或副程式的 區域變數

6 VHDL 的物件 (Objects) 宣告 常 數 ( Constant ) 常數可以宣告在任何可宣告 區域, 但它的數值經宣告後是 不可更改的 例 : constant enable_bits : integer := 0;

7 VHDL 標準的資料型態

8 整數 (integer) 整數 (integer) 型態是資料長度最 長是 32bits, 整數型態資料又可分有正負號 (Signed) 及無正負號 (Unsigned) 等兩種, 指定資料 型態前 您必需先宣告相關零件庫及使用相關包 裝 包裝 std_logic_1164 及 std_logic_signed 主要是提 供有正負號 (Signed) 型態用。 包裝 std_logic_1164 及 std_logic_unsigned 主要是 提供無正負號 (unsigned) 型態用。

9 VHDL 標準的資料型態 整數資料型態其長度雖然是 32bits, 但它會隨實際的數值調整資料長度 到最短。 以調整最節省硬體的大小。 例 : a := 15; 則 a 的資料長度只有 4bits

10 VHDL 標準的資料型態 資料型態 說 明 實數 Real 在設計時物件宣告資料型態用, 例如 : variable float_m: real :=1.25; 這個資料型態並不被許多合成工具支援。 自然數 Natural 它與整數定義相同, 值域範圍是 0~ 最大整數 例如 : variable index: natural; 這個資料型態因與整數型態相同所以在設 計時大多數會使用整數方式宣告。 正整數 Positive 值域在 1~ 最大正整數值, 宣告範例如下 : variable pos_val: positive;

11 VHDL 標準的資料型態 布林代數 Boolean 值域在 {TRUE,FALSE} 或 {1,0} 宣告範例如下 : variable logic_val: boolean; 數值設定範例如 : logic_val:=TRUE; 位元 Bit 值域在 {1,0} 宣告範例如下 : signal en_bit: bit; 數值設定範例如 : en_bit <= ‘1’; 位元向量 Bit_vector 它是個位元陣列資料型態, 宣告範例如下 : signal data_bus: bit_vector ( 31 downto 0 ); 數值設定範例如 : data_bus <= “0100011100100101010101011010101010”;

12 VHDL 標準的資料型態 字元 Character 字元型態資料長度為 8 位元, 宣告範例如下 : variable char_val: character; 數值設定範例如 : char_val := ‘A’; 字串 String 它是字元陣列的資料型態, 宣告範例如下 : variable text_val: string; 數值設定範例如 : text_val:=”Hello” 時間 Time 在設計時利用它來訂出時間資料型態, 宣告範 例如 :variable Td: time; 數值設定範例如 : Td := 100nS;

13 資料型態的轉換 在 VHDL 的 std_logic_arith 包裝中提供了轉換功能函數, 做為不同型態資料的轉換, 如 : CONV_INTEGER( 參數 ) 將括號內的參數轉換成整數 型態, 轉換後的數值範圍在 -2147483647 to 2147483647 之間。 CONV_UNSIGNED( 參數 ) 將括號內的參數轉換成無正 負號型態。 CONV_SIGNED ( 參數 ) 將括號內的參數轉換成有正 負號型態。 CONV_STD_LOGIC_VECTOR( 參數 ) 將括號內的參 數轉換成 STD_LOGIC_VECTOR 。

14 配合資料型態的數值設定 狀態字代表意義 'U' 未初始化的未知值 'X' 強制性的未知值, 隨意 值 (Don't care) '0' 邏輯狀態 :‘0’ '1' 邏輯狀態 :‘1’ 'Z' 高阻抗狀態 Hi-Z

15 配合資料型態的數值設定 'w' 弱制約性的未知值, 隨意值 (Don't care) 'l' 邏輯狀態 : 低電位 ‘0’ 'h' 邏輯狀態 : 高電位 ‘1’ '-' 隨意值 (Don't care)

16 Std_Logic /Std_Logic_Vector 標準邏輯資料型態 Std_Logic 及 Std_Logic_Vector 可指定以上九種數值

17 配合資料型態的數值設定 狀態字代表意義 False 邏輯狀態 :‘0’ True 邏輯狀態 :‘1’ 在一般邏輯數值系統時, 底下兩個值及其代表意義

18 Two drivers onto a bus R esolution function R {A, B} predicts the result of two drivers to drive signals with values A and B onto a bus. R {A, B} B = 0 B = 1 B = X B = Z A = 0 0 X X 0 A = 1 X 1 X 1 A = X X X X X A = Z 0 1 X Z

19 使用者自訂資料型態 列舉資料型態: type is ( ) ; 例 : type traffic_light is ( red, yellow, green); …… signal lighting : traffic_light; …… lighting <= red; ………

20 使用者自訂資料型態 如果要設定 lighting 物件數值時只有 red 、 yellow 及 green 三者之一才會被接受。 電路合成器會將列舉資料由左至右作二 進制邏輯編碼, 例如這個例子而言 red 將編 碼成為 ”00”,yellow 為 ”01” 及 green 為 ”10” 。

21 使用者自訂資料型態 陣列資料型態 例 : TYPE nibble IS ARRAY(3 DOWNTO 0); TYPE byte IS ARRAY(7 DOWNTO 0); TYPE word IS ARRAY(15 DOWNTO 0); TYPE balls IS ARRAY(0 TO 199);

22 使用者自訂資料型態 記錄資料型態 多種資料型態組成一個記錄 (Record) 群集 例 : -- 記錄資料型態宣告如下 : TYPE clock_rec IS RECORD Seconds : integer 0 to 59; Minutes : integer 0 to 59; Hours : integer 0 to 24; END RECORD; …………….

23 使用者自訂資料型態 使用記錄資料型態 SIGNAL T1,T2,T3 : clock_rec; 設定訊號物件 T1. Seconds<= 30; T1. Minutes<= 10; T1. Hours<= 23 ; T2.Hours <= 3;

24 VHDL 的運算敘述 VHDL 的運算表示式分成 : 訊號設定表示 式與變數表示式兩種。 對於變數 (Variable) 我們使用 “:=” 當做類 似 ” 等於 ” 的運算 對於訊號則使用 “<=” 當做類似 ” 設定 ” 的 運算

25 VHDL 的運算敘述 例 : example_var1 := '0'; 訊號表示式是以 <= 來設定運算。 例 : example_signal <= '001'; 例 : 在圖 7.1.2 中我們可以看到運算元如何使用, 特 別將它們截取如下 : SUM <= ( A xor B) xor C; -- 全加器 ” 和 ” 的布林函數 CY <= (A and B) or ( B and C ) or ( A and C ); -- 全加器 ” 進位 ” 的布林函數

26 VHDL 的算術運算 + 加 - 減 * 乘 / 除,* 只在編譯時設定數值運算用 ** 指數 * 只在編譯時設定數值運算用 Abs 絕對值, 取正值 Mod 求模數 * 只在編譯時設定數值運算用 Rem 求餘數 * 只在編譯時設定數值運算用

27 VHDL 的算術運算 = 等於, 如果兩值相等則為真 (true), 否則為假 (false) 如果其中有一未知值, 則輸出未知值 X /= 不等於, 如果兩值不相等則為真 (true), 否則為假 (false) 如果其中有一未知值, 則輸出未知值 X < 小於, 如果左值小於右值則為真 (true), 否則為假 (false) 如果其中有一未知值, 則輸出未知值 X <= 小於等於, 如果左值小於等於右值則為真 (true), 否則為 假 (false) 如果其中有一未知值, 則輸出未知值 X > 大於, 如果左值大於右值則為真 (true), 否則為假 (false) 如果其中有一未知值, 則輸出未知值 X >= 大於等於, 如果左值大於等於右值則為真 (true), 否則為 假 (false) 如果其中有一未知值, 則輸出未知值 X

28 VHDL 的邏輯運算 Not 取相反 And 及 Or 或 Nand 反及 Nor 反或 Xor 互斥或 Xnor 反互斥或

29 VHDL 的位移運算 Sll 邏輯性左移 Srl 邏輯性右移 Sla 算術性左移 ( 牽涉正負號 ) Sra 算術性右移 ( 牽涉正負號 ) Rol 向左旋轉 Ror 向右旋轉

30 VHDL 的其它運算 - 取負值 & 字元或字串串接運算

31 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY exercise is PORT( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0); B : IN STD_LOGIC_VECTOR(3 DOWNTO 0); C : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END exercise; ARCHITECTURE architec OF exercise IS BEGIN C(0) <= Not A(0); C(2 downto 1) <= A(2 downto 1) and B(2 downto 1); C(3) <= '1' xor A(3) ; C(7 downto 4) <= "1111" WHEN (A /= B) else "0000"; END architec;


Download ppt "VHDL 的物件 (Objects) 宣告 物件種類 (1) 訊號 (2) 變數 (3) 常數 VHDL 的物件 (Objects) 宣告語法 : [ := ] ;"

Similar presentations


Ads by Google