第五章 VHDL語言基礎_第1頁
第五章 VHDL語言基礎_第2頁
第五章 VHDL語言基礎_第3頁
第五章 VHDL語言基礎_第4頁
第五章 VHDL語言基礎_第5頁
已閱讀5頁,還剩80頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、重點知識點重點知識點v VHDL程序的基本語法結構程序的基本語法結構v 常用的數(shù)據(jù)類型常用的數(shù)據(jù)類型v 數(shù)據(jù)對象數(shù)據(jù)對象v 基本操作符基本操作符5.1 VHDL5.1 VHDL語言簡介語言簡介VHDL程序的基本結構一個完整的VHDL語言程序通常包含 實體(Entity) 結構體(Architecture) 庫(Library) 程序包(Package) 配置(Configuration)2選選1多路選擇器的多路選擇器的VHDL設計實例設計實例2選選1數(shù)據(jù)選擇器的思想:數(shù)據(jù)選擇器的思想: 兩個輸入信號兩個輸入信號a,b,根據(jù)控制信號,根據(jù)控制信號s的取值的取值0或或1的不同,從輸出端的不同,從輸

2、出端y選擇輸出。選擇輸出。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY mux21a IS PORT( a, b : IN BIT ; s : IN BIT; y : OUT BIT ) ;END ENTITY mux21a ;ARCHITECTURE one OF mux21a IS BEGIN y = a WHEN s = 0 ELSE b ;END ARCHITECTURE one ;2選選1數(shù)據(jù)選擇器的數(shù)據(jù)選擇器的V

3、HDL語言(語言(1) 程序包程序包 實體實體 結構體結構體 - 庫庫實體:實體:用于描述所設計系統(tǒng)的外部接口特性;即該設計實用于描述所設計系統(tǒng)的外部接口特性;即該設計實體對外的輸入、輸出端口數(shù)量和端口特性。體對外的輸入、輸出端口數(shù)量和端口特性。結構體:結構體:用于描述實體所代表的系統(tǒng)內部的結構和行為;用于描述實體所代表的系統(tǒng)內部的結構和行為;它描述設計實體的結構、行為、元件及內部連接關系。它描述設計實體的結構、行為、元件及內部連接關系。庫:庫:存放已經(jīng)編譯的實體、結構體、程序包集合和配置。存放已經(jīng)編譯的實體、結構體、程序包集合和配置。程序包:程序包:存放各設計模塊都能共享的數(shù)據(jù)類型、常數(shù)和子

4、存放各設計模塊都能共享的數(shù)據(jù)類型、常數(shù)和子程序庫;程序庫;配置:配置:實體對應多個結構體時,從與某個實體對應的多個實體對應多個結構體時,從與某個實體對應的多個結構體中選定一個作為具體實現(xiàn)。結構體中選定一個作為具體實現(xiàn)。 各組成部分功能:各組成部分功能: ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT ); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT; BEGIN d = a AND (NOT S); e = b AND s ; y

5、 = d OR e ; END ARCHITECTURE one ;2選選1數(shù)據(jù)選擇器的數(shù)據(jù)選擇器的VHDL語言(語言(2) 實體實體 結構體結構體2選選1數(shù)據(jù)選擇器的仿真波形數(shù)據(jù)選擇器的仿真波形91.1.行為描述方式行為描述方式 只需描述輸入與輸出的行為,不關只需描述輸入與輸出的行為,不關注具體的電路實現(xiàn),一般通過一組注具體的電路實現(xiàn),一般通過一組順序順序的的VHDLVHDL進程進程來反映設計的功能和算法;來反映設計的功能和算法;2.2.數(shù)據(jù)流描述方式數(shù)據(jù)流描述方式 這種描述將數(shù)據(jù)看成從設計的輸入這種描述將數(shù)據(jù)看成從設計的輸入端到輸出端,通過并行語句表示這些數(shù)端到輸出端,通過并行語句表示這些

6、數(shù)據(jù)形式的改變,即信號到信號的數(shù)據(jù)流據(jù)形式的改變,即信號到信號的數(shù)據(jù)流動的路徑和形式進行描述;動的路徑和形式進行描述;結構體的描述方式結構體的描述方式3.3.結構描述方式結構描述方式 多用在多用在多層次多層次的設計中,通過調用的設計中,通過調用庫中得元件或已經(jīng)設計好的元件,進行庫中得元件或已經(jīng)設計好的元件,進行組合來完成實體功能的描述,它只表示組合來完成實體功能的描述,它只表示元件和元件之間的互連元件和元件之間的互連. .5.3 VHDL5.3 VHDL程序語法格式程序語法格式VHDLVHDL書寫格式:書寫格式: VHDL VHDL語言不區(qū)分大小寫;語言不區(qū)分大小寫; 表示括號內的內容是可選的

7、,表示括號內的內容是可選的, 表示括表示括 號內的內容是可重復出現(xiàn)的;號內的內容是可重復出現(xiàn)的; VHDL VHDL用雙橫線用雙橫線”-“-“表示注釋;表示注釋; 保存的文件名與實體名字應該一致。保存的文件名與實體名字應該一致。實體:實體:用于描述所設計系統(tǒng)的外部接口特性;即該設計用于描述所設計系統(tǒng)的外部接口特性;即該設計實體對外的輸入、輸出端口數(shù)量和端口特性。實體對外的輸入、輸出端口數(shù)量和端口特性。5.3.1 實體聲明實體聲明1. 1. 實體表達實體表達ENTITY e_name IS PORT ( p_name : port_m data_type; . . . . p_namei : p

8、ort_mi data_type );END ENTITY e_name;例例2:D觸發(fā)器的實體描述觸發(fā)器的實體描述 ENTITY DFF1 IS PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT STD_LOGIC ); END ENTITY DFF1;ENTITY mux21a IS PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT );END ENTITY mux21a;例例1 1:2 2選一數(shù)據(jù)選擇器實體描述選一數(shù)據(jù)選擇器實體描述2 2. . PORTPORT(端口)說明端口)說明POR

9、T ( PORT ( 端口名端口名 : : 端口模式端口模式 數(shù)據(jù)類型數(shù)據(jù)類型 ; ; 。 端口名端口名 : : 端口模式端口模式 數(shù)據(jù)類型數(shù)據(jù)類型 ) ; ) ; 端口名端口名為實體的每一個對外通道的名字,符合標志符規(guī)范 端口模式端口模式是指這些通道上的數(shù)據(jù)流動方式。 數(shù)據(jù)類型數(shù)據(jù)類型是指端口上流動的數(shù)據(jù)的表達格式或取值類 型,VHDL要求只有相同數(shù)據(jù)類型的端口信號和操作數(shù) 才能相互作用。PORT ( a, b : IN BIT; s : IN BIT; y : OUT BIT );PORT (CLK : IN STD_LOGIC ; D : IN STD_LOGIC ; Q : OUT S

10、TD_LOGIC );PORTPORT端口舉例端口舉例3 3. . 端口模式端口模式INOUTINOUTBUFFERout (輸出輸出):只能被賦值,用于不能反饋的輸出;只能被賦值,用于不能反饋的輸出;in (輸入輸入):只能讀,用于時鐘輸入、控制輸入單向數(shù)據(jù)輸入;只能讀,用于時鐘輸入、控制輸入單向數(shù)據(jù)輸入;inout(輸入輸出輸入輸出) :既可讀又可被賦值,被讀的值是端口輸入值既可讀又可被賦值,被讀的值是端口輸入值而不是被賦值,作為雙向端口。而不是被賦值,作為雙向端口。buffer(緩沖緩沖):類似于輸出,但可以讀,讀的值是被賦值,用類似于輸出,但可以讀,讀的值是被賦值,用做內部反饋用,不能

11、作為雙向端口使用。做內部反饋用,不能作為雙向端口使用。4. 4. 數(shù)據(jù)類型:即端口采用的數(shù)據(jù)類型,它決定了端口可選的數(shù)數(shù)據(jù)類型:即端口采用的數(shù)據(jù)類型,它決定了端口可選的數(shù) 值范圍值范圍 1 1、Boolean Boolean 可取值可取值“True”True”或或“False”False”; 2 2、Bit Bit 可取值可取值“0”0”或或“1”1”; 3 3、Bit_Vector Bit_Vector 由由STDSTD庫中的標準包庫中的標準包 STANDARDSTANDARD支持;支持; 4 4、Integer Integer 可用作循環(huán)的指針或常數(shù)可用作循環(huán)的指針或常數(shù), ,一定要指明范

12、圍一定要指明范圍 5 5、Std_logic Std_logic 和和Std_logic_VectorStd_logic_Vector 由由IEEE_Std_Logic_1164IEEE_Std_Logic_1164 程序包支持,該程序包需要顯示聲明程序包支持,該程序包需要顯示聲明 5.3.2 結構體聲明與描述結構體聲明與描述1.1.結構體的一般表達如下:結構體的一般表達如下: ARCHITECTUREARCHITECTURE 結構體名稱結構體名稱 OFOF 實體名稱實體名稱 ISIS 說明語句說明語句 BEGINBEGIN ( (功能描述語句功能描述語句) ) END ARCHITECTUR

13、E END ARCHITECTURE 結構體名稱結構體名稱;2.2.結構體的組成部分結構體的組成部分說明語句說明語句??梢圆灰梢圆灰δ苊枋稣Z句功能描述語句。結構體說明語句:結構體說明語句:位于 architecture 和 begin 之間,對結構體內部的使用信號、常數(shù)、元件、數(shù)據(jù)類型和函數(shù)進行說明,包括:使用語句、程序說明、子程序體、類型說明、子類型說明、常數(shù)說明、信號說明、元件說明。2.2.結構體的一般表達如下:結構體的一般表達如下: ARCHITECTUREARCHITECTURE 結構體名稱結構體名稱 OFOF 實體名稱實體名稱 ISIS 說明語句說明語句 BEGINBEGIN (

14、 (功能描述語句功能描述語句) ) END ARCHITECTUREEND ARCHITECTURE 結構體名稱結構體名稱;2.2.結構體的一般表達如下:結構體的一般表達如下: ARCHITECTURE ARCHITECTURE 結構體名稱結構體名稱 O OF F 實體名稱實體名稱 ISIS 說明語句說明語句 BEGINBEGIN ( (功能描述語句功能描述語句) ) END ARCHITECTURE END ARCHITECTURE 結構體名稱結構體名稱;功能描述語句:功能描述語句:處于 begin 與 end 之間,描述結構體的行為與連接關系,它是構成結構體的主體。描述實體的邏輯行為、以各

15、種不同的描述風格表達的功能描述語句,或針對層次設計中,以元件例化語句為特征的外部元件(設計實體)端口間的連接。結構體的描述方法:結構體的描述方法: 行為描述,即按算法的路徑來描述; 數(shù)據(jù)流描述或 RTL 描述,即采用寄存器傳輸描述; 結構化描述,即采用例化元件,在高層次的設計中調用低 層次的實體作為元件的過程。2.2.結構體的一般表達如下:結構體的一般表達如下: ARCHITECTUREARCHITECTURE 結構體名稱結構體名稱 OFOF 實體名稱實體名稱 I IS S 說明語句說明語句 BEGINBEGIN ( (功能描述語句功能描述語句) ) END ARCHITECTUREEND A

16、RCHITECTURE 結構體名稱結構體名稱;例例1 1:2 2選一數(shù)據(jù)選擇器的結構體描述選一數(shù)據(jù)選擇器的結構體描述(1 1) 2 2選一數(shù)據(jù)選擇器采用行為描述方式:選一數(shù)據(jù)選擇器采用行為描述方式:ARCHITECTURE one OF mux21a ISBEGIN y = a WHEN s = 0 ELSE b ;END ARCHITECTURE one ;功能說明功能說明ARCHITECTURE one OF mux21a IS SIGNAL d,e : BIT;BEGIN d = a AND (NOT S) ; e = b AND s ; y = d OR e ; END ARCHITE

17、CTURE one ;(2 2) 2 2選一數(shù)據(jù)選擇器采用數(shù)據(jù)流描述方式:選一數(shù)據(jù)選擇器采用數(shù)據(jù)流描述方式:功能說明功能說明結構體說明結構體說明-ARCHITECTURE bhv OF DFF1 IS SIGNAL Q1 : STD_LOGIC ; BEGIN PROCESS (CLK,Q1) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = D ; END IF; END PROCESS ; Q = Q1 ; END bhv;例例2 2:D觸發(fā)器的結構體描述觸發(fā)器的結構體描述功能說明功能說明結構體說明結構體說明- 1.1.時序電路必須放在進程中;時序電路必須放在

18、進程中; 3. 3.時鐘上升沿的表示方法時鐘上升沿的表示方法(1 1)IF CLKEVENT AND CLK =1IF CLKEVENT AND CLK =1(2 2)IF CLKEVENT AND (CLK =1)IF CLKEVENT AND (CLK =1) AND(CLKLAST_VALUE =0) AND(CLKLAST_VALUE =0)(3 3)IF rising_edge(CLK)IF rising_edge(CLK)2.2.不完整的條件語句構成時序電路;不完整的條件語句構成時序電路;完整的條件語句構成組合電路。完整的條件語句構成組合電路。 5.3.3 庫庫1、庫、庫: 經(jīng)編譯

19、后的數(shù)據(jù)的集合,它存放已經(jīng)編譯的實體、結構體、包和配置。庫說明總是放在設計單元的最前面庫說明總是放在設計單元的最前面。2、庫的典型結構:庫的典型結構:庫庫Library包集包集Package函數(shù)函數(shù)過程過程元件元件常量常量類型類型5.3.3 庫庫3、庫的種類、庫的種類(1)IEEE庫庫(1)IEEE庫庫IEEE庫定義了四個常用的程序包庫定義了四個常用的程序包(P321):std_logic_1164 (std_logic (9值)值)& std_logic_vector 邏輯值的邏輯值的邏輯運算邏輯運算)std_logic_arith (signed、unsigned 、small_int數(shù)據(jù)

20、類數(shù)據(jù)類 型的型的算術、比較運算算術、比較運算函數(shù)函數(shù)) std_logic_signed (有符號數(shù)有符號數(shù)的不同數(shù)據(jù)類型的的不同數(shù)據(jù)類型的重載重載運運 算符及算符及轉換函數(shù)轉換函數(shù). std_logic_unsigned (無符號數(shù)無符號數(shù)的不同數(shù)據(jù)類型的重載的不同數(shù)據(jù)類型的重載 運算符及轉換函數(shù)運算符及轉換函數(shù). (2)STD庫庫(3)ASIC 矢量庫矢量庫 各公司提供的 ASIC 稱邏輯門庫(4)WORK 庫庫 為現(xiàn)行作業(yè)庫,存放設計者的 VHDL 語言程序(5)用戶定義的庫)用戶定義的庫 用戶為自身設計需要所開發(fā)的共用包集合和實體。3. 3. 庫的使用庫的使用 除除 WORKWORK

21、、STD STD 庫外,其他庫在使用之前必須要說明。庫外,其他庫在使用之前必須要說明。格式: LIBRARYLIBRARY 庫名; USEUSE 庫名.程序包名.項目名 ; USEUSE 庫名.程序包名.ALL ; 例如: LIBRARYLIBRARY IEEE ; USEUSE IEEE.STD_LOGIC_1164.ALL ; USEUSE IEEE.STD_LOGIC_1164.STD_ULOGIC ; 4. 庫說明的作用范圍:庫說明的作用范圍: 從實體聲明開始到其所屬構造體、配置為止。5.3.4 程序包程序包1、程序包、程序包:集合用于封裝屬于多個設計單元分享的公共信息2、程序包的組成

22、、程序包的組成:3、程序包的結構、程序包的結構(1 1)程序包聲明)程序包聲明 PACKAGEPACKAGE 程序包名程序包名 ISIS 程序包首說明部分程序包首說明部分 ENDEND 程序包名程序包名; ;(2 2)程序包主體)程序包主體 PACKAGE BODY PACKAGE BODY 程序包名程序包名 ISIS 程序包體說明部分程序包體說明部分 ENDEND 程序包名程序包名; ;4、程序包的使用、程序包的使用use work.包集合名包集合名.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;5、常用的預

23、定義的程序包、常用的預定義的程序包5.4 VHDL5.4 VHDL文字規(guī)則文字規(guī)則1. 數(shù)字表達數(shù)字表達(1 1)整數(shù):)整數(shù):整數(shù)都是十進制的數(shù),如:整數(shù)都是十進制的數(shù),如: 5 5, 678 678, 0 0, 156 156E2(=15600)E2(=15600), 45_234_287 (=45234287) 45_234_287 (=45234287) (2 2)實數(shù):)實數(shù):實數(shù)也都是十進制的數(shù),但必須帶有小數(shù)點,如:實數(shù)也都是十進制的數(shù),但必須帶有小數(shù)點,如: 5.0 5.0,670_551.453 (=670551.453)670_551.453 (=670551.453),.

24、178.178, 44.99 44.99E-2(=0.4499)E-2(=0.4499) (3 3)物理量文字)物理量文字( (VHDLVHDL綜合器不接受此類文字綜合器不接受此類文字) )。如:。如: 60 60s (60s (60秒秒) ), 100 100m (100m (100米米) ), k (k (千歐姆千歐姆) ), 177 177A (177A (177安培安培) )5.4 VHDL5.4 VHDL文字規(guī)則文字規(guī)則(4 4)以數(shù)制基數(shù)表示的文字:)以數(shù)制基數(shù)表示的文字:用這種方式表示的數(shù)由五個部分組成。用這種方式表示的數(shù)由五個部分組成。 SIGNALSIGNAL d1,d2,d

25、3,d4,d5, : d1,d2,d3,d4,d5, : INTEGERINTEGER RANGE 0 TO 255; RANGE 0 TO 255; d1 = 10#170# ; - ( d1 = 10#170# ; - (十進制表示,等于十進制表示,等于 170) 170) d2 = 16#FE# ; - ( d2 = 16#FE# ; - (十六進制表示,等于十六進制表示,等于 254) 254) d3 = 2#1111_1110#; - ( d3 = 2#1111_1110#; - (二進制表示,等于二進制表示,等于 254) 254) d4 = 8#376# - ( d4 = 8#3

26、76# - (八進制表示,等于八進制表示,等于 254) 254) d5 = 16#E#E1 - ( d5 = 16#E#E1 - (十六進制表示,等于十六進制表示,等于2#11102#11100 0000#000#,等于,等于224)224) 5.4 VHDL5.4 VHDL文字規(guī)則文字規(guī)則(5 5)字符:)字符:用單引號括起,不具有固定值用單引號括起,不具有固定值 。大、小寫含義不同。大、小寫含義不同 a a * * abc abc(6 6)字符串:)字符串:用雙引號括起,不具有固定值用雙引號括起,不具有固定值 。大、小寫含義不同。大、小寫含義不同 ERROR ERROR , Both S

27、 and Q equal to 1 Both S and Q equal to 1 , X X ,BB$CC“BB$CC“(7 7)位串:)位串:由預定義數(shù)據(jù)類型位構成的一維數(shù)組。由預定義數(shù)據(jù)類型位構成的一維數(shù)組。 B B:二進制基數(shù)符號,表示二進制位二進制基數(shù)符號,表示二進制位0 0或或1 1,在字符串中的,在字符串中的 每位表示一個每位表示一個BitBit。 O: O: 八進制基數(shù)符號,八進制基數(shù)符號,代表一個八進制數(shù),即一個代表一個八進制數(shù),即一個3 3位的二進制數(shù)。位的二進制數(shù)。 X X:十六進制基數(shù)符號十六進制基數(shù)符號(0(0F)F),代表一個十六進制數(shù),即代表一個十六進制數(shù),即 一

28、個一個4 4位的二進制數(shù)。位的二進制數(shù)。 2. 字符串表達字符串表達5.4 VHDL5.4 VHDL文字規(guī)則文字規(guī)則(7 7)位串:)位串:由預定義數(shù)據(jù)類型位構成的一維數(shù)組。由預定義數(shù)據(jù)類型位構成的一維數(shù)組。 B B:二進制基數(shù)符號,表示二進制位二進制基數(shù)符號,表示二進制位0 0或或1 1,在字符串中的,在字符串中的 每位表示一個每位表示一個BitBit。 O: O: 八進制基數(shù)符號,八進制基數(shù)符號,代表一個八進制數(shù),即一個代表一個八進制數(shù),即一個3 3位的二進制數(shù)。位的二進制數(shù)。 X X:十六進制基數(shù)符號十六進制基數(shù)符號(0(0F)F),代表一個十六進制數(shù),即代表一個十六進制數(shù),即 一個一個

29、4 4位的二進制數(shù)。位的二進制數(shù)。data1 = B1_1101_1110“ data1 = B1_1101_1110“ 二進制數(shù)數(shù)組,位矢數(shù)組長度是二進制數(shù)數(shù)組,位矢數(shù)組長度是9 9data2 = O15 data2 = O15 八進制數(shù)數(shù)組,位矢數(shù)組長度是八進制數(shù)數(shù)組,位矢數(shù)組長度是6 6data3 = X“AD0” data3 = X“AD0” 十六進制數(shù)數(shù)組,位矢數(shù)組長度是十六進制數(shù)數(shù)組,位矢數(shù)組長度是1212data5 = 101_010_101_010 data5 = 101_010_101_010 表達錯誤,缺表達錯誤,缺B B。data6 = 0AD0 data6 = 0AD0

30、 表達錯誤,缺表達錯誤,缺X X。3. 標識符標識符 包括包括26個大小寫英文字母,數(shù)字個大小寫英文字母,數(shù)字09 以及下劃線以及下劃線“_”。 任何標識符必須以英文字母開頭任何標識符必須以英文字母開頭 不能連續(xù)使用下劃線,不能以下劃線不能連續(xù)使用下劃線,不能以下劃線“_”結尾結尾 標識符中間不能出現(xiàn)空格標識符中間不能出現(xiàn)空格 標識符中的英語字母不分大小寫。標識符中的英語字母不分大小寫。 標識符不能使用標識符不能使用VHDL語言的關鍵字和元件名語言的關鍵字和元件名 允許包含圖形符號允許包含圖形符號(如回車符、換行符等如回車符、換行符等)例如:例如: 合法標識符:合法標識符:decoder38,

31、 fft_1,th_1_2,非法標識符:非法標識符:8couter, data_bus, sina#1,entity ,and, dec_等等5.5 VHDL5.5 VHDL基本數(shù)據(jù)類型基本數(shù)據(jù)類型VHDLVHDL是一種數(shù)據(jù)類型概念很強的語言。任何一個對象聲明時是一種數(shù)據(jù)類型概念很強的語言。任何一個對象聲明時必須指明數(shù)據(jù)類型,并且只能攜帶和返回指定的數(shù)據(jù)類型。必須指明數(shù)據(jù)類型,并且只能攜帶和返回指定的數(shù)據(jù)類型。1.VHDL1.VHDL基本數(shù)據(jù)類型基本數(shù)據(jù)類型2.2. 常用的常用的VHDL預定義數(shù)據(jù)類型預定義數(shù)據(jù)類型常用的常用的VHDLVHDL預定義數(shù)據(jù)類型存放在預定義數(shù)據(jù)類型存放在STDSTD

32、庫的庫的STANDARDSTANDARD程序包中在程序包中在程序開始時不需聲明其程序包。程序開始時不需聲明其程序包。3. IEEE預定義標準邏輯位與矢量預定義標準邏輯位與矢量 在在IEEEIEEE庫中程序包庫中程序包STD_LOGIC_1164STD_LOGIC_1164中定義了另外一類中定義了另外一類常用的數(shù)據(jù)類型常用的數(shù)據(jù)類型STD_LOGICSTD_LOGIC和和STD_LOGIC_vectorSTD_LOGIC_vector。使用這。使用這些類型時,要在些類型時,要在程序開始時先聲明其程序包。程序開始時先聲明其程序包。(1 1)標準邏輯位)標準邏輯位STD_LOGICSTD_LOGIC

33、數(shù)據(jù)類型數(shù)據(jù)類型(P69,P327)(P69,P327)TYPE STD_LOGIC IS TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-);(U,X,0,1,Z,W,L,H,-);(2 2)標準邏輯矢量)標準邏輯矢量( (STD_LOGIC_VECTOR)STD_LOGIC_VECTOR)數(shù)據(jù)類型數(shù)據(jù)類型 STD_LOGIC_VECTOR STD_LOGIC_VECTOR類型是一維數(shù)組。類型是一維數(shù)組。 STD_LOGIC_VECTOR STD_LOGIC_VECTOR類型在使用時應指明位矢寬度。類型在使用時應指明位矢寬度。 STD_LOGIC_VECTOR STD

34、_LOGIC_VECTOR類型數(shù)組的每一位由類型數(shù)組的每一位由STD_LOGIC STD_LOGIC 數(shù)據(jù)類型組成。數(shù)據(jù)類型組成。例如例如 din: in din: in STD_LOGIC_VECTOR(7 STD_LOGIC_VECTOR(7 downtodownto 0); 0); dout: out dout: out STD_LOGIC_VECTOR(0 STD_LOGIC_VECTOR(0 toto 3); 3);4. 其他預定義標準數(shù)據(jù)類型其他預定義標準數(shù)據(jù)類型 在在IEEEIEEE庫庫中程序包中程序包STD_LOGIC_ARITHSTD_LOGIC_ARITH中定義了另外一類常

35、用的數(shù)中定義了另外一類常用的數(shù)據(jù)類型據(jù)類型無符號型(無符號型(UNSIGNEDUNSIGNED)、有符號型()、有符號型(SIGNEDSIGNED)、小整型)、小整型(SMALL_INTSMALL_INT)。)。如果將信號或變量定義為這幾個數(shù)據(jù)類型,就可以如果將信號或變量定義為這幾個數(shù)據(jù)類型,就可以使用本程序包中定義的運算符。使用這些類型時,要在使用本程序包中定義的運算符。使用這些類型時,要在程序開始時先程序開始時先聲明其程序包聲明其程序包。(1 1)無符號型()無符號型(UNSIGNEDUNSIGNED)數(shù)據(jù)類型)數(shù)據(jù)類型 Variable a: unsigned (0 to 10);Var

36、iable a: unsigned (0 to 10); Signal b: unsigned (5 downto 0); Signal b: unsigned (5 downto 0); 說明變量說明變量a a有有1111位數(shù)值,最高位是位數(shù)值,最高位是a(0),a(0),最低位為最低位為a(10)a(10) 說明變量說明變量b b有有6 6位數(shù)值,最高位是位數(shù)值,最高位是b(5),b(5),最低位為最低位為b(0)b(0)(2 2)有符號型()有符號型(SIGNEDSIGNED)數(shù)據(jù)類型)數(shù)據(jù)類型 Variable a: signed (0 to 10);Variable a: signe

37、d (0 to 10); Signal b: signed (5 downto 0); Signal b: signed (5 downto 0); 說明變量說明變量a a有有1111位數(shù)值,最高位位數(shù)值,最高位a(0)a(0)是符號位是符號位5. 數(shù)據(jù)類型轉換數(shù)據(jù)類型轉換注意事項注意事項:(1 1)當定義了端口或數(shù)據(jù)對象的數(shù)據(jù)類型后,只能攜帶)當定義了端口或數(shù)據(jù)對象的數(shù)據(jù)類型后,只能攜帶 和返回指定類型的數(shù)據(jù)和返回指定類型的數(shù)據(jù). .(2 2)如果不同類型的數(shù)據(jù)需要進行運算或操作,必須在)如果不同類型的數(shù)據(jù)需要進行運算或操作,必須在 類型轉換后才能類型轉換后才能. .5.6 VHDL5.6

38、VHDL操作符操作符類 型操作符功 能操作數(shù)數(shù)據(jù)類型 +加整數(shù) 減整數(shù) &并置一維數(shù)組 *乘整數(shù)和實數(shù)(包括浮點數(shù)) /除整數(shù)和實數(shù)(包括浮點數(shù))MOD取模整數(shù) REM取余整數(shù) SLL邏輯左移BIT 或布爾型一維數(shù)組 SRL邏輯右移BIT 或布爾型一維數(shù)組 SLA算術左移BIT 或布爾型一維數(shù)組 SRA算術右移BIT 或布爾型一維數(shù)組 ROL邏輯循環(huán)左移BIT 或布爾型一維數(shù)組 ROR邏輯循環(huán)右移BIT 或布爾型一維數(shù)組 *乘方整數(shù)算術操作符 ABS取絕對值整數(shù)表一表一 VHDLVHDL操作符操作符類 型操作符功 能操作數(shù)數(shù)據(jù)類型 =等于任何數(shù)據(jù)類型 /=不等于任何數(shù)據(jù)類型 大于枚舉與整數(shù)類型

39、,及對應的一維數(shù)組 =大于等于枚舉與整數(shù)類型,及對應的一維數(shù)組 AND與BIT,BOOLEAN,STD_LOGIC OR或BIT,BOOLEAN,STD_LOGIC NAND與非BIT,BOOLEAN,STD_LOGIC NOR或非BIT,BOOLEAN,STD_LOGIC XOR異或BIT,BOOLEAN,STD_LOGIC XNOR異或非BIT,BOOLEAN,STD_LOGIC邏輯操作符 NOT非BIT,BOOLEAN,STD_LOGIC +正整數(shù)符號操作符 負整數(shù)表一表一 VHDLVHDL操作符操作符表表2 VHDL操作符優(yōu)先級操作符優(yōu)先級 SIGNAL a ,b,c : STD_LO

40、GIC_VECTOR (3 DOWNTO 0) ; SIGNAL d,e,f,g : STD_LOGIC_VECTOR (1 DOWNTO 0) ; SIGNAL h,I,j,k : STD_LOGIC ; SIGNAL l,m,n,o,p : BOOLEAN ; . a=b AND c; -b、c 相與后向相與后向a賦值賦值 d=e OR f OR g ; - 兩個操作符兩個操作符OR相同,不需括號相同,不需括號 l=(m XOR n)AND(o XOR p); - 操作符不同,必須加括號操作符不同,必須加括號 h=i AND j AND k ; - 兩個操作符都是兩個操作符都是AND,不必

41、加括號不必加括號 h=i AND j OR k ; - 兩個操作符不同,未加括號,表達錯誤兩個操作符不同,未加括號,表達錯誤 a=b AND e ; - 操作數(shù)操作數(shù)b 與與 e的位矢長度不一致,表達錯誤的位矢長度不一致,表達錯誤 h=i OR l ; - i 的數(shù)據(jù)類型是位的數(shù)據(jù)類型是位STD_LOGIC,而而l的數(shù)據(jù)類型是的數(shù)據(jù)類型是 . - 布爾量布爾量BOOLEAN,因而不能相互作用,表達錯誤。因而不能相互作用,表達錯誤。 (1)邏輯操作符)邏輯操作符【例【例1 1】ENTITY relational_ops_1 IS PORT ( a,b : IN BITVECTOR (0 TO 3

42、) ; m : OUT BOOLEAN) ;END relational_ops_1 ;ARCHITECTURE example OF relational_ops_1 ISBEGIN m = (a = b) ;END example ; 【例【例2 2】 ENTITY relational_ops_2 IS PORT (a,b : IN INTEGER RANGE 0 TO 3 ; m : OUT BOOLEAN) ;END relational_ops_2 ;ARCHITECTURE example OF relational_ops_2 ISBEGIN m = b) ;END examp

43、le ;關系運算操作符:關系運算操作符:“ = = ”( (等于等于) )、“/=/=”( (不等于不等于) )、“ ”( (大于大于) )、“ =”( (大于等于大于等于) )“=”( (小于等于小于等于) )(2)關系操作符)關系操作符LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY mux21a IS PORT( a, b : IN BIT ; s : IN BIT; y : OUT BIT ) ;END ENTITY m

44、ux21a ;ARCHITECTURE one OF mux21a IS BEGIN y = a WHEN s = 0 ELSE b ;END ARCHITECTURE one ;2選選1數(shù)據(jù)選擇器的數(shù)據(jù)選擇器的VHDL語言(語言(1) 程序包程序包 實體實體 結構體結構體 - 庫庫省略了庫聲明和程序包說明省略了庫聲明和程序包說明ENTITY mux41a IS PORT( a, b,c,d : IN BIT ; s : IN BIT_vector(1 downto 0); y : OUT BIT ) ;END ENTITY mux41a ;ARCHITECTURE one OF mux41a

45、 IS BEGIN y = a WHEN s = “00” ELSE b WHEN s = “01” ELSE c WHEN s = “10” ELSE d;END ARCHITECTURE one ; 例例2 4選選1的數(shù)據(jù)選擇器的數(shù)據(jù)選擇器(方法方法1)省略了庫聲明和程序包說明省略了庫聲明和程序包說明ENTITY mux41a ISENTITY mux41a IS PORT( a, b,c,d : IN BIT ; PORT( a, b,c,d : IN BIT ; s1 s1,s0 : IN BITs0 : IN BIT ; ; y : OUT BIT ) ; y : OUT BIT )

46、 ;END ENTITY mux41a ;END ENTITY mux41a ;ARCHITECTURE one OF mux41a ISARCHITECTURE one OF mux41a IS BEGIN BEGIN y = a WHEN y = a WHEN (s1 =0)and (s1 =0)and (s0 =0) (s0 =0) ELSEELSE b WHEN b WHEN (s1 =0)and (s0 =1) (s1 =0)and (s0 =1) ELSEELSE c WHEN c WHEN (s1 =1)and (s0 =0) (s1 =1)and (s0 =0) ELSEELS

47、E d; d;END ARCHITECTURE one ;END ARCHITECTURE one ; 例例2 4選選1的數(shù)據(jù)選擇器的數(shù)據(jù)選擇器(方法方法2)ENTITY mux41a IS PORT( a, b,c,d: IN BIT ; s1,s0 : IN BIT ; y : OUT BIT );END ENTITY mux41a ;ARCHITECTURE one OF mux41a IS signal s : std_logic_vector(1 downto 0); s=s1&s0;BEGIN s=s1&s0; y = a WHEN s = 00 ELSE b WHEN s = 0

48、1 ELSE c WHEN s = 10 ELSE d;END ARCHITECTURE one ; signal s : bit_vector(1 downto 0);錯誤錯誤1:說明部分不能進行:說明部分不能進行 語句操作。語句操作。錯誤錯誤2:操作符左右兩邊數(shù):操作符左右兩邊數(shù) 據(jù)類型要一致。據(jù)類型要一致。例例2 4選選1的數(shù)據(jù)選擇器的數(shù)據(jù)選擇器(方法方法3)作業(yè):請采用作業(yè):請采用WHEN_ELSE語句實現(xiàn)語句實現(xiàn)8選選1的數(shù)據(jù)選擇器的數(shù)據(jù)選擇器in1in2in3LED1 LED20000100101010010111010001101101101011110 實例來演示:一個三人表決

49、器的邏輯設計。三人表決,以少數(shù)服從多數(shù)為原則,多數(shù)人同意則議案通過,否則議案被否決。這里,我們使用三個按鍵代表三個參與表決的人,置“0”表示該人同意議案,置“1”表示該人同意議案;兩個指示燈用來表示表決結果,LED1 點亮表示議案通過,LED2 點亮表示議案被否決。真值表如下所示:根據(jù)上面的真值表,做卡諾圖簡化,可以得出:LED1=in1LED1=in1* *in2+in1in2+in1* *in3+in2in3+in2* *in3 in3 ,LED2=LED1 LED2=LED1 例例3 3人投票表決人投票表決LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;

50、USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY voter ISEND ENTITY voter;ARCHITECTURE one OF voter ISBEGIN END ARCHITECTURE one ; 程序包程序包 實體實體 結構體結構體 - 庫庫PORT ( in1, in2, in3: IN BIT; led1,led2 : OUT BIT );led1=(in1 and in2) or (in1 and in3) or (in2 and in3) ;led1=(in1 and in2) or

51、 (in1 and in3) or (in2 and in3) ;led2=not(led1);led2 LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S LED7S NULL ; END CASE ; END PROCESS ;END ;8選一實驗說明選一實驗說明LIBRARY IEEE; -正確程序正確程序USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux81a IS PORT( a, b,c,d,e,f,g,h : IN BIT ; s : IN BIT_vector(2 downto 0); y : O

52、UT BIT ) ;END ENTITY mux81a ;ARCHITECTURE one OF mux81a ISBEGIN y = a WHEN s = 000 ELSE b WHEN s = 001 ELSE c WHEN s = 010 ELSE d WHEN s = 011 ELSE e WHEN s = 100 ELSE f WHEN s = 101 ELSE g WHEN s = 110 ELSE h ;END ARCHITECTURE one ; 實驗錯誤說明及改正實驗錯誤說明及改正(1)實體說明部分省略實體說明部分省略ARCHITECTURE one OF mux81a IS

53、BEGIN process(a,b,c,d,e,f,g,h,s) begin if s = 000 then y=a; ELSIF s = 001 then y=b; ELSIF s = 010 then y=c; ELSIF s = 011 then y=d; ELSIF s = 100 then y=e; ELSIF s = 101 then y=f; ELSIF s = 110 then y=g; ELSE y=h; End if; end process;END ARCHITECTURE one ; 錯誤ENTITY mux81a IS PORT( a, b,c,d,e,f,g,h :

54、 IN BIT ; s2,s1,s0 : IN BIT ; y : OUT BIT ) ;END ENTITY mux81a ;ARCHITECTURE one OF mux81a IS signal s : std_logic_vector(2 downto 0); s=s2&s1&s0;BEGIN s=s2&s1&s0; y = a WHEN s = 000 ELSE b WHEN s = 001 ELSE c WHEN s = 010 ELSE d WHEN s = 011 ELSE e WHEN s = 100 ELSE f WHEN s = 101 ELSE g WHEN s = 1

55、10 ELSE h ;END ARCHITECTURE one ; signal s : bit_vector(2 downto 0);實驗錯誤說明及改正實驗錯誤說明及改正(2)錯誤錯誤1:說明部分不能進行:說明部分不能進行 語句操作。語句操作。錯誤錯誤2:操作符左右兩邊數(shù):操作符左右兩邊數(shù) 據(jù)類型要一致。據(jù)類型要一致。 5.7 VHDL5.7 VHDL數(shù)據(jù)對象數(shù)據(jù)對象 VHDL VHDL的數(shù)據(jù)對象包括的數(shù)據(jù)對象包括信號(信號(signalsignal)、變量()、變量(variablevariable)、)、 常量(常量(constantconstant)三類。三類。1.1.常量常量 (co

56、nstant)(constant):命名數(shù)據(jù)類型的一種特殊值。:命名數(shù)據(jù)類型的一種特殊值。2.2.變量變量(variable):用來在順序執(zhí)行的語句間傳遞中間值用來在順序執(zhí)行的語句間傳遞中間值3.3.信號(信號(signalsignal) : : 用于在實體(或進程)之間傳送信息;用于在實體(或進程)之間傳送信息;1. 1. 常量常量 (constant)(constant):命名數(shù)據(jù)類型的一種特殊值。命名數(shù)據(jù)類型的一種特殊值。(1 1)信號聲明的語法格式:)信號聲明的語法格式: constantconstant 常數(shù)名:數(shù)據(jù)類型常數(shù)名:數(shù)據(jù)類型 := =初始值初始值 ; 例:例: const

57、antconstant aa : aa : realreal; ; constantconstant bb : bb : bitbit; ; (2 2)常量的賦值:)常量的賦值: aa:= 5.0 ; aa:= 5.0 ; bb:=1; bb:=1;5.7 VHDL5.7 VHDL數(shù)據(jù)對象數(shù)據(jù)對象 常數(shù)賦值后不能變;常數(shù)賦值后不能變; 常數(shù)賦值采用:常數(shù)賦值采用:= = 賦的值要與數(shù)據(jù)類型一致賦的值要與數(shù)據(jù)類型一致 在結構體、程序包、實體中說明在結構體、程序包、實體中說明, 能在進程中說明。能在進程中說明。 在程序包中說明的信號為全局量;在實體說明部分的在程序包中說明的信號為全局量;在實體說明

58、部分的 信號可以被該實體中任何構造體引用,在構造體中的信號可以被該實體中任何構造體引用,在構造體中的 信號能被其構造體內部任何語句采用,包括被進程語信號能被其構造體內部任何語句采用,包括被進程語 句采用;在進程說明中說明的信號只能在進程中使用。句采用;在進程說明中說明的信號只能在進程中使用。(3 3)注意事項)注意事項 5.7 VHDL5.7 VHDL數(shù)據(jù)對象數(shù)據(jù)對象 (1 1)變量聲明的語法格式)變量聲明的語法格式 Variable Variable 變量名:數(shù)據(jù)類型變量名:數(shù)據(jù)類型 約束條件約束條件 := =表達式表達式 ; 例:例: VariableVariable x,y: x,y:b

59、itbit; VariableVariable a,b: a,b: integerinteger range 0 to 255:=10; range 0 to 255:=10; (2 2)變量的賦值)變量的賦值 x:=1;x:=1; Y:=0; Y:=0; a:=10;a:=10; b:=2+a; b:=2+a;2.變量(變量(variable):用來在順序執(zhí)行的):用來在順序執(zhí)行的VHDL語句間傳遞中間值語句間傳遞中間值5.7 VHDL5.7 VHDL數(shù)據(jù)對象數(shù)據(jù)對象 1. 1.只能在進程、函數(shù)或過程中使用只能在進程、函數(shù)或過程中使用(3 3)注意事項)注意事項 5.7 VHDL5.7 VH

60、DL數(shù)據(jù)對象數(shù)據(jù)對象5.7 VHDL5.7 VHDL數(shù)據(jù)對象數(shù)據(jù)對象3.3.信號(信號(signal signal ):):用于在實體(或進程)之間傳送信息用于在實體(或進程)之間傳送信息(1 1)信號聲明的語法格式:)信號聲明的語法格式: signal signal 信號名:數(shù)據(jù)類型信號名:數(shù)據(jù)類型 約束條件約束條件:= =初始值初始值 ; 例例: : signalsignal a : a : bitbit ; ; signalsignal b : b : std_logic_vectorstd_logic_vector(7 downto 0);(7 downto 0);(2 2)信號的賦值

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論