《vhdl物件宣告》由会员分享,可在线阅读,更多相关《vhdl物件宣告(31页珍藏版)》请在金锄头文库上搜索。
1、VHDL的物件(Objects)宣告,物件種類 (1) 訊號 (2) 變數 (3) 常數 VHDL的物件(Objects)宣告語法: := ;,VHDL的物件(Objects)宣告,訊號:在VHDL中的訊號是指電路上的連接點,它包括實體中在埠(Port)後宣告的接腳及在結構(Architecture)中宣告的訊號(Signal)接點,VHDL的物件(Objects)宣告,(1) 訊號例:,VHDL的物件(Objects)宣告,(2) 變 數 ( Variable ) VHDL中的變數與一般電腦語言中的變數一樣,提供在程式中做計數或運算用 例: variable example_var1 : s
2、td_logic := 0; example_var1 := 1; -使用變數example_var1及設定值=1,變數,變數物件被宣告在process或副程式中,我們稱它為process或副程式的區域變數,VHDL的物件(Objects)宣告,常 數 ( Constant ) 常數可以宣告在任何可宣告區域,但它的數值經宣告後是不可更改的例: constant enable_bits : integer := 0;,VHDL標準的資料型態,VHDL標準的資料型態,整數(integer) 整數(integer)型態是資料長度最長是32bits ,整數型態資料又可分有正負號(Signed)及無正負
3、號(Unsigned)等兩種,指定資料型態前 您必需先宣告相關零件庫及使用相關包裝 包裝std_logic_1164及std_logic_signed主要是提供有正負號(Signed)型態用。 包裝std_logic_1164及std_logic_unsigned主要是提供無正負號(unsigned)型態用。,VHDL標準的資料型態,整數資料型態其長度雖然是32bits,但它會隨實際的數值調整資料長度到最短。 以調整最節省硬體的大小。例: a := 15; 則 a 的資料長度只有4bits,VHDL標準的資料型態,VHDL標準的資料型態,VHDL標準的資料型態,資料型態的轉換,在VHDL的st
4、d_logic_arith包裝中提供了轉換功能函數,做為不同型態資料的轉換,如: CONV_INTEGER(參數) 將括號內的參數轉換成整數型態, 轉換後的數值範圍在-2147483647 to 2147483647之間。 CONV_UNSIGNED(參數) 將括號內的參數轉換成無正負號型態。 CONV_SIGNED (參數) 將括號內的參數轉換成有正負號型態。 CONV_STD_LOGIC_VECTOR(參數) 將括號內的參數轉換成STD_LOGIC_VECTOR 。,配合資料型態的數值設定,配合資料型態的數值設定,Std_Logic /Std_Logic_Vector,標準邏輯資料型態St
5、d_Logic 及 Std_Logic_Vector可指定以上九種數值,配合資料型態的數值設定,在一般邏輯數值系統時,底下兩個值及其代表意義,Two drivers onto a bus,Resolution function R A, Bpredicts 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,使用者自訂資料型態
6、,列舉資料型態:type is ( ) ; 例: type traffic_light is ( red, yellow, green);signal lighting : traffic_light;lighting = red;,使用者自訂資料型態,如果要設定lighting物件數值時只有red、yellow及 green三者之一才會被接受。電路合成器會將列舉資料由左至右作二進制邏輯編碼,例如這個例子而言red將編碼成為”00”,yellow為”01”及 green為”10”。,使用者自訂資料型態,陣列資料型態 例: TYPE nibble IS ARRAY(3 DOWNTO 0);TYP
7、E byte IS ARRAY(7 DOWNTO 0);TYPE word IS ARRAY(15 DOWNTO 0);TYPE balls IS ARRAY(0 TO 199);,使用者自訂資料型態,記錄資料型態 多種資料型態組成一個記錄(Record)群集 例: -記錄資料型態宣告如下:TYPE clock_rec IS RECORDSeconds : integer 0 to 59;Minutes : integer 0 to 59;Hours : integer 0 to 24;END RECORD;.,使用者自訂資料型態,使用記錄資料型態SIGNAL T1,T2,T3 : clock
8、_rec; 設定訊號物件T1. Seconds= 30; T1. Minutes= 10;T1. Hours= 23 ;T2.Hours = 3;,VHDL的運算敘述,VHDL的運算表示式分成: 訊號設定表示式與變數表示式兩種。 對於變數(Variable)我們使用 “:=” 當做類似 ”等於” 的運算 對於訊號則使用 “=” 當做類似 ”設定” 的運算,VHDL的運算敘述,例: example_var1 := 0;訊號表示式是以=來設定運算。 例: example_signal = 001; 例: 在圖7.1.2中我們可以看到運算元如何使用, 特別將它們截取如下:SUM = ( A xor
9、B) xor C; -全加器”和”的布林函數CY = (A and B) or ( B and C ) or ( A and C ); -全加器”進位” 的布林函數,VHDL的算術運算,VHDL的算術運算,VHDL的邏輯運算,VHDL的位移運算,VHDL的其它運算,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY exercise isPORT( 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 BEGINC(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;,