




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1第十一章第十一章 VHDL2一、硬件描述語言(一、硬件描述語言(HDL)1.VHDL :VHSIC Hardware Description Language; VHSIC : Very High Speed Integrated Circuit;2.Verilog-HDL 可以描述硬件電路的功能、信號連接關可以描述硬件電路的功能、信號連接關系及定時關系的語言。它可以比電原理圖更系及定時關系的語言。它可以比電原理圖更有效地表示硬件電路的特性。有效地表示硬件電路的特性。IEEE(Institute of Electrical and Electronics Engineers)的工業標準硬件描
2、述語言的工業標準硬件描述語言: 11.1 概述概述31.IEEE1076-1987(VHDL-87) VHDL-93相對于相對于VHDL-87沒有什么大變化,主沒有什么大變化,主要是增加了針對要是增加了針對VHDL模型的新的模型的新的VHDL命令命令和屬性。和屬性。二、二、VHDL的發展概況的發展概況2.IEEE1164-1993(VHDL-93) 4在行為描述階段并不真正考慮實際的操作、算在行為描述階段并不真正考慮實際的操作、算法、用什么邏輯電路來實現,其目的是通過法、用什么邏輯電路來實現,其目的是通過對系統行為描述的仿真來發現設計中存在的對系統行為描述的仿真來發現設計中存在的問題,檢查該數
3、學模型能否達到系統設計規問題,檢查該數學模型能否達到系統設計規格書的要求。格書的要求。1.行為描述行為描述 :對整個系統的:對整個系統的 數學模型進行描述。數學模型進行描述。三、用三、用VHDL設計硬件電路的過程設計硬件電路的過程53.邏輯綜合邏輯綜合利用邏輯綜合工具,將利用邏輯綜合工具,將RTL描述的程序轉換成描述的程序轉換成用基本邏輯元件(宏單元)表示的文件(門用基本邏輯元件(宏單元)表示的文件(門級網表、原理圖)。即把布爾函數轉換為門級網表、原理圖)。即把布爾函數轉換為門并實現最小化。并實現最小化。2.RTL描述(寄存器傳輸描述或數據流描述)描述(寄存器傳輸描述或數據流描述) 系統只有采
4、用系統只有采用RTL方式進行描述,才能導出系方式進行描述,才能導出系統的邏輯表達式,才能進行邏輯綜合,從統的邏輯表達式,才能進行邏輯綜合,從而得到具體的邏輯器件。而得到具體的邏輯器件。6用用VHDL設計系統硬件的過程設計系統硬件的過程規格設計規格設計行為級描述行為級描述行為級仿真行為級仿真RTL級描述級描述RTL級仿真級仿真邏輯綜合邏輯綜合門級仿真、定時檢查門級仿真、定時檢查輸出門級網表輸出門級網表711.2、VHDL基本構件基本構件 實體實體(Entity):):描述所設計的系統的外部接口描述所設計的系統的外部接口信號;信號;構造體構造體(Architecture) :描述系統內部的結構描述
5、系統內部的結構和行為和行為,即電路的具體描述;即電路的具體描述;包集合包集合(Package) :存放各設計模塊都能共享存放各設計模塊都能共享的數據類型、常數和子程序等;的數據類型、常數和子程序等;配置配置(Configuration) : :用于從庫中選取所需用于從庫中選取所需單元來組成系統設計的不同版本;單元來組成系統設計的不同版本;庫庫(Library) : :存放已經編譯的實體、構造體、存放已經編譯的實體、構造體、包集合和配置;包集合和配置;81.實體(實體(Entity)ENTITY 實體名實體名 IS GENERIC(類屬表類屬表) -將信息參數傳輸給實體將信息參數傳輸給實體POR
6、T(端口表端口表) -實體的輸入輸出信號及其模式實體的輸入輸出信號及其模式END 實體名;實體名;用來定義實體與外部的連接關系以及需傳給實用來定義實體與外部的連接關系以及需傳給實體的參數體的參數9端口模式端口模式模模 式式含含 義義IN輸入輸入OUT輸出(構造體內部不能再使用)輸出(構造體內部不能再使用)INOUT雙向雙向BUFFER輸出(構造體內部可再使用)輸出(構造體內部可再使用)LINKAGE不指定方向,無論哪一個方向都可連接,不指定方向,無論哪一個方向都可連接,只用在文檔中。只用在文檔中。類型指定:在邏輯電路設計中,常用類型指定:在邏輯電路設計中,常用BIT和和BIT_VECTOR兩種
7、。兩種。10例例1: 對對Black-Box實體實體的描述的描述ENTITY Black_Box ISPORT(rst,clk:IN std_logic;d:IN std_logic_vector(7 DOWNTO 0);q:BUFFER std_logic_vector(7 DOWNTO 0)co:OUT std_logic);END Black_Box;D7,0 q7,0Rst coCLKBlack-box11例例2:對對半加器的實體半加器的實體描述描述:半加器半加器abcsENTITY half_adder ISGENERIC(tpd:time:=2ns);PORT(a,b:IN Bit
8、;s,c:OUT Bit);END half_adder;122.構造體(構造體(Architecture)作用作用:通過若干并行語句來描述實體的邏輯功能或通過若干并行語句來描述實體的邏輯功能或內部電路結構內部電路結構,從而建立實體輸出與輸入的關系。從而建立實體輸出與輸入的關系。格式為:格式為:ARCHITECTURE 構造體名構造體名 OF 實體名實體名 IS 說明語句;說明語句;BEGINEND 構造體名;構造體名;并行語句;并行語句;13例例11.6.2 一個構造體的實例。一個構造體的實例。LIBRARY IEEEUSE IEEE.Std_logic_1164.all;ENTITY lo
9、gic ISPORT(a,b:IN std_logic;w,x,y:OUT std_logic);END logic;ARCHITECTURE behavior OF logic ISBEGIN y=a and b; w=a or b; x=1;END behavior;14VHDL語言構造體的描述方式語言構造體的描述方式 1.1.行為描述方式行為描述方式無需包含任何結構信息,只是對輸入信號和輸出信號無需包含任何結構信息,只是對輸入信號和輸出信號關系的描述。關系的描述。行為描述方式是對系統數學模型的描述,其抽象行為描述方式是對系統數學模型的描述,其抽象程度比其它兩種描述方式更高。程度比其它兩種
10、描述方式更高。在在VHDL語言中存在一些專門用于描述系統行為的語言中存在一些專門用于描述系統行為的語句。語句。15ARCHITECTURE beh1_ha OF half_adder ISBEGIN c1:PROCESS(a,b) -PROCESS為進程語句,括號為進程語句,括號 -內的信號是進程的激活條件內的信號是進程的激活條件 BEGINIF a=1 AND b=1 THENc=1;ELSEc=0;END IF;END PROCESS c1;半加器的真值表為:半加器的真值表為: ab cs000110110001011016c2:PROCESS(a,b)BEGINIF a=0 AND b=
11、0 THENs=0;ELSIF a=1 AND b=1 THENs=0;ELSEs=1END IF;END PROCESS c2;END beh1_ha;說明:說明:1)進程語句屬于并行語句;)進程語句屬于并行語句; 2)進程語句內部由順序語句構成;)進程語句內部由順序語句構成;17ARCHITECTURE beh2_ha OF half_adder ISBEGIN PROCESS(a,b) BEGINIF a=0 AND b=0 THENc=0; s=0;ELSEIF a=1 AND b=1 THENc=1;s=0;ELSEc=0; s=1;END IF;END PROCESS;END be
12、h2_ha;半加器構造體的另一種行為描述方式:半加器構造體的另一種行為描述方式:182.寄存器傳輸寄存器傳輸(RTL)描述方式描述方式(數據流描述方式數據流描述方式) 反映了從輸入數據到輸出數據之間所發生的邏輯反映了從輸入數據到輸出數據之間所發生的邏輯變換,一般采用與寄存器硬件一一對應的直變換,一般采用與寄存器硬件一一對應的直接描述。接描述。&=1abcs由半加器的真值表可導出輸出函數:由半加器的真值表可導出輸出函數:19ARCHITECTURE rtl_ha OF half_adder ISBEGINs=a XOR b ; cnsel,b=d1,c=ab);24ENTITY mux2
13、 IS PORT(d0,d1,sel:IN BIT; q:OUT BIT); END mux2;ARCHITECTURE struct OF mux2 IS COMPONENT and2 PORT (a,b:IN BIT; c :OUT BIT); END COMPONENT; COMPONENT or2 PORT (a,b:IN BIT; c :OUT BIT); END COMPONENT;例:例: 分析下列分析下列VHDLVHDL語言描述的邏輯功能。語言描述的邏輯功能。25 BEGINu1:inv PORT MAP (sel,nsel);SIGNAL aa,ab,nsel:BIT;COM
14、PONENT inv PORT (a:IN BIT; c :OUT BIT);END COMPONENT;u2:and2 PORT MAP (nsel,d1,ab);u3:and2 PORT MAP (d0,sel,aa);u4:or2 PORT MAP (aa,ab,q);END struct;26二選一數據選擇器的電路原理圖二選一數據選擇器的電路原理圖&11d0d1selqaaabnselu1u2u327LIBRARY IEEE;USE IEEE.std_logic_1164.all;ENTITY exercise IS PORT(A,B,Carry_in:IN std_logic
15、; AB,Carry_out:OUT std_logic);END exercise;ARCHITECTURE structure OF exercise IS Signal Temp_sum,Temp_carry1,Temp_carry2:std_logic;COMPONENT half_adder PORT(X,Y:IN std_logic; sum,Carry:OUT std_logic);END COMPONENT;試分析下述試分析下述VHDL語言描述的電路功能:語言描述的電路功能:28COMPONENT or_adder PORT(IN1,IN2:IN std_logic; OUT1
16、:OUT std_logic);END COMPONENT;BEGINU0:half_adder PORT MAP (A,B,Temp_sum,Temp_carry1);U1:half_adder PORT MAP (Temp_sum,Carry_in,AB,Temp_carry2);U2:or_gate PORT MAP (Temp_carry1,Temp_carry2,Carry_out);END structure;293.配置(配置(Configuration)作用:一個實體可以有多個構造體,當對某實體作用:一個實體可以有多個構造體,當對某實體進行仿真或綜合時,需將該實體與它的一個構進
17、行仿真或綜合時,需將該實體與它的一個構造體連接起來;當某實體被其他實體造體連接起來;當某實體被其他實體 引用時,引用時,需指定所生成的例元與該實體的哪個構造體相需指定所生成的例元與該實體的哪個構造體相對應。對應。CONFIGURATION 配置名配置名 OF 實體名實體名 IS語句說明語句說明END 配置名;配置名;30 ENTITY rsff IS PORT (set,reset: IN BIT;q,qb:BUFFER BIT); END rsff ; ARCHITECTURE netlist OF rsff ISCOMPONENT nand2PORT ( a,b:IN BIT;c:OUT
18、BIT)END COMPONENT;BEGINU1: nand2 PORT MAP(a=set,b=qb,c=q);U1: nand2 PORT MAP(a=reset,b=q,c=qb);END netlist;例例11.6.3 關于關于RS觸發器的實例。觸發器的實例。31 ARCHITECTURE behave OF rsff ISBEGINq = not (qb AND set);qb RETURN 1;WHEN 1 = RETURN 0;WHEN Z = RETURN Z;END CASE;END Invert;END logic;PACKAGE BODY logic ISFUNCTI
19、ON Invert (input:three_level_logic)RETURN three_level_logic IS35說明:說明:A、在包頭說明中,除定義數據類型和常量外,還需、在包頭說明中,除定義數據類型和常量外,還需對包體單元中的子程序作出說明。因為只有包頭中對包體單元中的子程序作出說明。因為只有包頭中說明的標識符在程序包外才是可見的,僅在包體中說明的標識符在程序包外才是可見的,僅在包體中說明的標識符在程序包外是不可見的。說明的標識符在程序包外是不可見的。B、子程序體不能放在包頭中,只能放在包體中。、子程序體不能放在包頭中,只能放在包體中。C、若程序包中不包含子程序,則包體可以省
20、略。、若程序包中不包含子程序,則包體可以省略。調用格式:調用格式:USE 庫名庫名.程序包名程序包名.項目名項目名36LIBRARY IEEE;-打開打開STD_LOGIC_1164包所在的庫包所在的庫USE IEEE.STD_LOGIC_1164.ALL;-調用包中的所有項調用包中的所有項USE WORK.logic.Unknow_value;-使用包中的使用包中的Unknow_value項項USE WORK.logic.ALL;-使用包中的所用項使用包中的所用項375.庫(庫(Library):):存放已經編譯的實體、構造存放已經編譯的實體、構造體、包集合和配置,是經編譯后的數據的集體、包
21、集合和配置,是經編譯后的數據的集合。合。(1)庫的種類)庫的種類IEEE庫庫STD_LOGIC_1164 -IEEE正式認可的標準包集合正式認可的標準包集合STD_LOGIC_ARITH -SYNOPSYS公司提供包集合公司提供包集合STD_LOGIC_UNSIGNED-SYNOPSYS公司提供包集合公司提供包集合LIBRARY 庫名表;庫名表;-庫名表為一系列庫名表為一系列“,”分割的庫名。分割的庫名。38STD庫庫:VHDL的標準庫的標準庫STANDARD-VHDL的標準配置,調用其中的數據,可不加說明的標準配置,調用其中的數據,可不加說明TEXTIO-調用其中的數據,必須先說明調用其中的
22、數據,必須先說明-LIBRARY STD;-USE STD.TEXTIO.ALL;面向面向ASIC的庫的庫:用于門級仿真:用于門級仿真39WORK庫庫:現行作業庫,使用該庫時無需說明:現行作業庫,使用該庫時無需說明用戶定義庫用戶定義庫 :使用該庫時需先說明:使用該庫時需先說明(2)庫的使用)庫的使用庫的說明庫的說明USE LIBRARY_NAME.PACKAGE_NAME.ITEM_NAME;LIBRARY 庫名;庫名;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;40庫說明作用范圍庫說明作用范圍從一個實體說明開始到它所屬的構造體、配置從一個實體說明開始到它
23、所屬的構造體、配置為止。為止。例例5 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY and1 ISEND and1; ARCHITECTURE rtl OF and1 ISEND rtl; 41LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY or1 IS END s2; CONFIGURATION s1 OF and1 ISEND s1; CONFIGURATION s2 OF or1 IS42五、子程序(五、子程序(Subprogram) 1.函數(函數(Function)定義:便于在程序中重復
24、使用的一組順序語句。定義:便于在程序中重復使用的一組順序語句。不是獨立的編譯單元,只能放在實體(被該實體不是獨立的編譯單元,只能放在實體(被該實體專用)或程序包中(可被多個實體共用)。專用)或程序包中(可被多個實體共用)。作用是求值,若干參數輸入,只有一個返回值作為作用是求值,若干參數輸入,只有一個返回值作為輸出輸出43一般格式:一般格式:FUNCTION 函數名(參數表)函數名(參數表)RETURN 數據類型數據類型 IS 說明語句;說明語句; -說明函數體內引用的對象和過程說明函數體內引用的對象和過程BEGIN 順序語句;順序語句; -函數體定義函數的功能函數體定義函數的功能END 函數名
25、;函數名;說明:說明:A、參數表中需說明參數名、參數類型(信號或常量)及、參數表中需說明參數名、參數類型(信號或常量)及其數據類型。其數據類型。B、RETURN之后的數據類型表示函數返回值的類型。之后的數據類型表示函數返回值的類型。44ELSERETURN y;END IF;END Min;例例11.6.5 函數舉例函數舉例-返回兩數中的較小數。返回兩數中的較小數。FUNCTION Min(x,y:INTEGER ) RETURN INTEGER ISBEGINIF xy THENRETURN x;452.過程(過程(Procedure)作用:通過參數進行內外信息的傳遞,與其它作用:通過參數進
26、行內外信息的傳遞,與其它高級語言中的子程序相當。高級語言中的子程序相當。PROCEDURE 過程名過程名(參數(參數1;參數;參數2;)IS說明語句說明語句BEGIN順序處理語句順序處理語句END 過程名過程名;46q:=0;x_flag:=FALSE;FOR i IN zRANGE LOOPq:=q*2;例例11.6.6 過程舉例過程舉例向量轉換成整數類型。向量轉換成整數類型。USE IEEE.STD_LOGIC_1164.ALL;PROCEDURE vector_to_intBEGIN(z:IN STD_LOGIC_VECTOR;x_flag:OUT BOOLEAN;q:INOUT INT
27、EGER) IS47IF z(i)=1 THENq:=q+1;ELSEIF z(i)/=0 THENx_flag:=TRUE;END IF;END LOOP;END vector_to_int;-該過程調用后,如果該過程調用后,如果x_flag=TRUE,則說明,則說明轉換失敗,不能得到正確的轉換整數值。轉換失敗,不能得到正確的轉換整數值。4811.3 VHDL語言元素語言元素 1.VHDL語法規則與標識符語法規則與標識符(1)注釋(注釋(Comment):-(2)標識符(標識符(Identifier)用戶自定義用戶自定義VHDL語言預定義:如語言預定義:如 ENTITY、SIGNAL。標識符
28、的第一個字符必須是英文字母;標識符的第一個字符必須是英文字母;標識符不能以下劃線結束,如標識符不能以下劃線結束,如 MUX_;標識符中不允許出現兩個連續的下劃線;標識符中不允許出現兩個連續的下劃線;49(3)數(數(Number)的表示)的表示0,987E6 - 十進制整數十進制整數0.5,2.72,12.4E-6 - 十進制實數十進制實數2#11000100# - 二進制數,等于十進制數二進制數,等于十進制數19616#C4# - 十六進制數,等于十進制數十六進制數,等于十進制數1964#301#E1 - 四進制數,等于十進制數四進制數,等于十進制數19616#F.FF#E2 - 十六進制數
29、,等于十進制數十六進制數,等于十進制數4095.0502.數據對象和數據類型數據對象和數據類型(1)數據對象(數據對象(Object)常數(常數(Constant)CONSTANT Vcc:REAL := 5.0;信號(信號(Signal)SIGNAL 信號名信號名:數據類型數據類型 := 表達式表達式;SIGNAL sys_dk:BIT := 0;SIGNAL tem:STD_LOGIC;變量(變量(Varible)VARIABLE x,y:INTEGER;51信號和變量的區別:信號和變量的區別:信號是全局量,可以進行進程之間的通信;信號是全局量,可以進行進程之間的通信;而變量是局部量,只能
30、用于進程或子程序而變量是局部量,只能用于進程或子程序(即函數和過程)中;(即函數和過程)中;對變量的賦值是立即發生的,對信號的賦值對變量的賦值是立即發生的,對信號的賦值須經一段時間延遲才會發生;須經一段時間延遲才會發生;對變量的賦值用對變量的賦值用“:=”,對信號的賦值用,對信號的賦值用“=” ;信號可以比擬為硬件端口之間的連接,而變信號可以比擬為硬件端口之間的連接,而變量則與硬件之間沒有對應關系;量則與硬件之間沒有對應關系;52(2)(2)數據類型數據類型標準數據類型標準數據類型53數據類型數據類型標標 識識說說 明明整數整數INTEGER-(231-1) +(231-1)實數實數REAL-
31、1.0E+38+1.0E+38位位BIT邏輯邏輯0 或或1,單引號標出,單引號標出位矢量位矢量BIT_VECTORBIT的組合,以雙引號標出的組合,以雙引號標出字符字符CHARACTERSASCII 字符,單引號標出字符,單引號標出布爾量布爾量BOOLEAN邏輯邏輯“真真”或或“假假”,TRUE or FALSE時間時間TIME時間單位:時間單位:fs,ps,ns,us,ms,sec,min,hr錯誤等級錯誤等級SEVERITY LEVELNOTE,WARNING,ERROR,FAILURE自然數自然數NATURAL整數的子集:整數的子集:0231-1正整數正整數POSTIVE整數的子集:整數
32、的子集:1231-1字符串字符串STRING字符矢量,以雙引號標出字符矢量,以雙引號標出表表11.3.1 VHDL標準數據類型標準數據類型54用戶自定義數據類型用戶自定義數據類型整數、實數類型整數、實數類型TYPE 數據類型名數據類型名 IS 數據類型數據類型 定義約束范圍定義約束范圍TYPE digit IS INTEGER RANGE 0 TO 9;枚舉類型枚舉類型TYPE 數據類型名數據類型名 IS (元素(元素1,元素,元素2,)TYPE arith_op IS (add,sub,mul,div);TYPE color IS (red,green,blue);55 數組和記錄數組和記錄
33、TYPE big_word IS ARRAY (0 TO 63) OF BIT;TYPE arith_op IS (add,sub,mul,div);TYPE instruction IS RECORD- 一維數組一維數組TYPE matrix_1 IS ARRAY (0 TO 15,0 TO 31) OF BIT;- 二維數組二維數組- 枚舉枚舉類型類型Operator:arith_op ;56Op1:INTEGER ;Op2:INTEGER ;END RECORD ;VARIABLE inst1,inst2:instruction ;inst1.operator:=add ;inst2.o
34、perator:=sub ;inst1.op1:=10 ;inst1.op2:= inst1.op1 ;57子類型(子類型(SUBTYPE)SUBTYPE 子類型名子類型名 IS 父類型名父類型名 RANGE 范圍范圍例:例:TYPE arith_op IS (add,sub,mul,div);SUBTYPE add_op IS arith_op RANGE add TO sub;SUBTYPE mul_op IS arith_op RANGE mul TO div;583.3.預定義屬性預定義屬性表表11.6.3 11.6.3 標量類型預定義屬性標量類型預定義屬性屬性屬性說說 明明舉例(舉例
35、(TYPE bit_pos IS INTEGE RANGE 15 DOWN TO 0)TLEFTT的左邊界的左邊界Bit_posLEFT = 15TRIGHTT的右邊界的右邊界Bit_posRIGHT = 0TLOWT的下限的下限Bit_posLOW = 0THIGHT的上限的上限Bit_posHIGH = 1559屬性屬性說說 明明舉例舉例(TYPE arith_op IS (add,sub,mul,div)TPOS(X)T中中X的位置的位置arith_opPOS(add) = 0TVAL(N)T中位置是中位置是N的值的值arith_opVAL(1) = subTLEFTOF(X)T中中X成
36、員左邊的值成員左邊的值arith_opLEFTOF(sub) = addTRIGHTOF(X)T中中X成員右邊的值成員右邊的值arith_opRIGHTOF(sub) = mulTPRED(X)T中比中比X前一個位置的值前一個位置的值arith_opPRED(sub) = addTSUCC(X)T中比中比X后一個位置的值后一個位置的值arith_opSUCC(sub) = mul表表11.6.4 11.6.4 物理、離散類預定義屬性物理、離散類預定義屬性60屬性屬性說說 明明舉例舉例(TYPE t_d IS ARRAY (8 DOWN TO 0,0 TO 4)ALEFT下標左邊界下標左邊界t_
37、dLEFT(1) = 8; t_dLEFT(2) = 0;ARIGHT下標右邊界下標右邊界 t_dRIGHT(1) = 8; t_dRIGHT(2) = 0;TLOW下標下邊界下標下邊界t_dLOW(1) = 0; t_dLOW(2) = 0;THIGH下標上邊界下標上邊界t_dHIGH(1) = 8; t_dHIGH(2) = 4;TRANGE下標范圍下標范圍t_dRANGE(1) =8 DOWN TO 0; t_dRANGE(2) = 0 TO 4;TREVERSE_RANGE下標反向范圍下標反向范圍t_dREVERSE_RANGE(1) =0 DOWN TO 8; t_dREVERSE_
38、RANGE(2) = 4 DOWN TO 0;TLENGTH數組的長度數組的長度t_dRANGE(1) =8 DOWN TO 0; t_dRANGE(2) = 0 TO 4;表表11.6.5 11.6.5 數組類預定義屬性數組類預定義屬性614.運算符(運算符(Operatou)分分 類類運算符運算符功功 能能二元算術運算符二元算術運算符+-*/modrem*加加減減乘乘除除求模求模求余求余乘方乘方一元算術運算符一元算術運算符+-abs正號正號負號負號絕對值絕對值表表11.3.2 VHDL 運算符運算符62分分 類類運算符運算符功功 能能關系運算符關系運算符=/=相等相等不相等不相等小于小于大
39、于大于小于等于小于等于大于等于大于等于二元邏輯運算符二元邏輯運算符andor nandnorXor與與或或與非與非或非或非異或異或表表11.3.2 VHDL 運算符(續)運算符(續)63分分 類類運算符運算符功功 能能一元邏輯運算符一元邏輯運算符not求反求反并置運算符并置運算符&連接連接賦值運算符賦值運算符信號賦值信號賦值變量賦值變量賦值結合結合表表11.6.6 VHDL 運算符(續)運算符(續)6411.4 VHDL常用編程語句常用編程語句(1)并發描述并發描述(CONCURRENT)語句語句進程進程(PROCESS)語句語句標號:標號:PROCESS (信號信號1,信號,信號2,
40、)說明語句說明語句BEGIN順序處理語句順序處理語句END PROCESS標號標號;65進程語句的特點:進程語句的特點:構造體中多個進程之間是并發運行的,而進構造體中多個進程之間是并發運行的,而進程結構中的語句按順序執行;程結構中的語句按順序執行;為啟動進程,在進程結構中必須包含一個顯為啟動進程,在進程結構中必須包含一個顯式的敏感信號量表或者包含一個式的敏感信號量表或者包含一個WAIT語句;語句;通過存取構造體或實體中所定義的信號,實通過存取構造體或實體中所定義的信號,實現進程之間的通信。現進程之間的通信。66塊塊(BLOCK)語句語句標號:標號:BLOCK 說明語句說明語句BEGIN并發處理
41、語句并發處理語句END BLOCK 標號標號 ;67賦值語句賦值語句并發信號賦值語句并發信號賦值語句(實際上是一個進程的縮寫)(實際上是一個進程的縮寫)ARCHITECTURE behav OF ab_signal ISBEGINOutput = a+b;END behav;目標信號目標信號 = 表達式;表達式;68ARCHITECTURE behav OF ab_signal ISBEGINOutput = a+b;END behav;PROCESS (a,b)BEGINEND PROCESS;69選擇信號賦值語句選擇信號賦值語句目標信號目標信號 = 表達式表達式1 WHEN 條件條件1,W
42、ITH 表達式表達式 SELECT表達式表達式2 WHEN 條件條件2,表達式表達式n WHEN 條件條件n;注意:必須指明所有的互斥條件。注意:必須指明所有的互斥條件。70LIBRARY IEEE;例例11.4.5 四選一數據選擇器的實現。四選一數據選擇器的實現。USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISEND mux4;PORT (a,b,c,d:IN STD_LOGIC;s:IN STD_LOGIC_VECTOR(1 DOWN TO 0);x:OUT STD_LOGIC);71ARCHITECTURE archmux OF mux4 ISBEGI
43、NWITH s SELECTx= a WHEN “00”,b WHEN “01”,c WHEN “10”,d WHEN “11”,X WHEN OTHERS;END archmux;72條件信號賦值語句條件信號賦值語句目標信號目標信號 = 表達式表達式1 WHEN 條件條件1 ELSE表達式表達式2 WHEN 條件條件2 ELSE表達式表達式n ;表達式表達式n-1 WHEN 條件條件n-1 ELSE73LIBRARY IEEE;例例11.4.6 四選一數據選擇器的實現。四選一數據選擇器的實現。USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISEND mux4
44、;PORT (a,b,c,d:IN STD_LOGIC;s:IN STD_LOGIC_VECTOR(1 DOWN TO 0);x:OUT STD_LOGIC);74ARCHITECTURE archmux OF mux4 ISBEGINx= a WHEN “00” ELSEb WHEN “01” ELSEc WHEN “10” ELSEd WHEN “11” ELSEEND archmux;X;75生成生成(GENERATE)語句語句GENERATE 語句用來產生多個相同的結構,有語句用來產生多個相同的結構,有兩種使用形式。其典型應用場合是生成存儲兩種使用形式。其典型應用場合是生成存儲器陣列和
45、寄存器陣列(如移位寄存器)。器陣列和寄存器陣列(如移位寄存器)。標號:標號:FOR 變量變量 IN 不連續區間不連續區間 GENERATE并發處理語句并發處理語句END GENERATE 標號標號;標號:標號:IF 條件條件 GENERATE并發處理語句并發處理語句END GENERATE 標號名標號名;76(2)順序描述順序描述(SEQUENTIAL)語句語句順序語句只能用于進程或子程序(即函數和過順序語句只能用于進程或子程序(即函數和過程)中。語句按書寫次序順序執行。程)中。語句按書寫次序順序執行。條件條件(IF)語句語句對應于并行語句部分的對應于并行語句部分的“條件信號賦值語句條件信號賦
46、值語句”,即:即: WHEN ELSE 語句。語句。77IF 條件條件 THEN順序處理語句順序處理語句ELSIF 條件條件 THEN順序處理語句順序處理語句END IF;ELSIF 條件條件 THEN順序處理語句順序處理語句ELSE順序處理語句順序處理語句78LIBRARY IEEE;用用IF 語句實現例語句實現例11.4.5 四選一數據選擇器。四選一數據選擇器。USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISEND mux4;PORT (a,b,c,d:IN STD_LOGIC;s:IN STD_LOGIC_VECTOR(1 DOWN TO 0);x:O
47、UT STD_LOGIC);79ARCHITECTURE archmux OF mux4 ISBEGINIF (s=“00”) THEN x=a;ELSIF (s=“01”) THEN x=b;END archmux;ELSE x=X;PROCESS(s,a,b,c,d)BEGINELSIF (s=“10”) THEN x=c;ELSIF (s=“11”) THEN x 順序處理語句;順序處理語句;WHEN 條件條件 = 順序處理語句;順序處理語句;WHEN 條件條件 = 順序處理語句;順序處理語句;END CASE ;注意:應該將表達式的所有取值都列出來。注意:應該將表達式的所有取值都列出來
48、。對應于并行語句部分的對應于并行語句部分的“選擇信號賦值語句選擇信號賦值語句”,即:即: WITH SELECT 語句。語句。81LIBRARY IEEE;用用CASE 語句實現例語句實現例11.4.5 四選一數據選擇器。四選一數據選擇器。USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISEND mux4;PORT (a,b,c,d:IN STD_LOGIC;s:IN STD_LOGIC_VECTOR(1 DOWN TO 0);x:OUT STD_LOGIC);82ARCHITECTURE archmux OF mux4 ISBEGINCASE s ISWHE
49、N “00” = x x x x x=X;END archmux;83循環循環(LOOP)語句語句標號標號:FOR 循環變量循環變量 IN 離散范圍離散范圍 LOOP順序處理語句順序處理語句END LOOP 標號標號;例例6 ASUM: FOR i IN 1 TO 9 LOOPsum:=i+sum;-sum初始值為初始值為0END LOOP ASUM;- i是循環變量,它可取是循環變量,它可取1,2,9共共9個值。個值。- 該程序對該程序對19的數進行累加計算。的數進行累加計算。84標號標號:WHILE 條件條件 LOOP順序處理語句;順序處理語句;END LOOP 標號標號;例例7 i=1;
50、sum:=0;END LOOP ASUM;- 該程序對該程序對19的數進行累加計算。的數進行累加計算。ASUM:WHILE(i10) LOOPsum:=i+sum;i:=i+1;85NEXT 標號標號 WHEN 條件條件;-用來跳出本次循環,轉入下一次新的循環。用來跳出本次循環,轉入下一次新的循環。注意:若注意:若NEXT后既無后既無“標號標號”也無也無“WHEN 條條件件”說明,那么只要執行到該語句就立即無條件說明,那么只要執行到該語句就立即無條件地跳出本次循環,從地跳出本次循環,從LOOP語句的起始位置進入語句的起始位置進入下一次循環。下一次循環。-用于用于LOOP語句的內部循環控制。語句
51、的內部循環控制。86例例8 PROCESS (a,b)CONSTANT max_limit:INTEGER := 255;BEGINFOR i IN O TO max_limit LOOPIF (done(i)=TRUE) THENNEXT;ELSEdone(i):=TRUE;END IF ;q(i)=a(i) AND b(i);END LOOP;END PROCESS;87EXIT 標號標號 WHEN 條件條件;-用來結束循環狀態,從用來結束循環狀態,從LOOP語句中跳出。語句中跳出。注意:若注意:若NEXT后既無后既無“標號標號”也無也無“WHEN 條條件件”說明,說明,那么只要執行到該語
52、句就立即無條件地結束循環那么只要執行到該語句就立即無條件地結束循環狀態,繼續執行狀態,繼續執行LOOP語句后續的語句。語句后續的語句。88例例9 PROCESS (a)VARIABLE int_a:INTEGER;BEGINFOR i IN O TO max_limit LOOPIF (int_a = 0) THENEXIT;ELSEint_a := int_a-1;END IF ;y=q;END LOOP;END PROCESS;int_a:=a;q(i)=3.1416/REAL(a*i);89等待等待(WAIT)語句語句將一個順序執行的進程或子程序將一個順序執行的進程或子程序“掛起掛起”,
53、直,直至所約定的條件滿足為止。至所約定的條件滿足為止。WAIT語句可以設語句可以設置置4種不同的條件。種不同的條件。WAIT 無限等待無限等待WAIT ON 敏感信號量變化敏感信號量變化WAIT UNTIL 條件滿足條件滿足WAIT FOR 時間到時間到90WAIT ON 信號信號,信號,信號;例例10 PROCESS (a,b)BEGINEND PROCESS;y = a AND b; PROCESSBEGINEND PROCESS;y = a AND b;WAIT ON a,b;91WAIT UNTIL 表達式;表達式;WAIT UNTIL (x*10)= 20nS)REPORT “Set
54、up Violation”SEVERITY Warning;END IF ;94八、用八、用VHDL設計電路設計電路1.編碼器和譯碼器編碼器和譯碼器(1)3位二進制編碼器位二進制編碼器有有8個位輸入個位輸入I0I7,3個位輸出個位輸出A,B,C。為書寫。為書寫方便,現定義兩個位矢量方便,現定義兩個位矢量temp_in(0 TO 7)和和temp_out(0 TO 2)與其輸入和輸出相對應與其輸入和輸出相對應。95表表4.2.1 3位二進制編碼器真值表位二進制編碼器真值表 輸輸 入入 輸輸 出出 I0 I1 I2 I3 I4 I5 I6 I7 A B C 1 0 0 0 0 0 0 0 0 0
55、0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 96LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY enco_bin ISPORT (I0,I1,I2,I3,I4,I5,I6,I7:IN STD_LOGIC;A,B,C:OUT STD_LOGIC);END enco_bin;ARCHIT
56、ECTURE rtl OF enco_bin ISSIGNAL tmp_in : STD_LOGIC_VECTOR (0 TO 7);SIGNAL tmp_out : STD_LOGIC_VECTOR (0 TO 2);BEGIN97tmp_in tmp_outtmp_outtmp_outtmp_outtmp_outtmp_outtmp_outtmp_outtmp_out=“000”;A = tmp_out(0);B = tmp_out(1);C = tmp_out(2);END PROCESS;END rtl;99(2)8-3線優先編碼器線優先編碼器74148100表表4.2.2 83線優先
57、編碼器線優先編碼器74148功能表功能表 1 0 1 1 0 1 1 1 1 1 1 0 0 1 0 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 EN使能輸入 1 1 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 1 1 1 1 1 1 Y2 Y1 Y0 輸 出 0 0 0 0 0 0 1 1 YEX輸出標志 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 YEN I7 I6 I5 I4 I3 I2 I1 I0 使能輸出 輸 入101LIBR
58、ARY IEEE;ENTITY p74148 ISUSE IEEE.STD_LOGIC_1164.ALL; PORT(en,in0,in1,in2,in3,in4,in5,in6,in7:IN STD_LOGIC;yen,yex,y0,y1,y2: OUT STD_LOGIC);END p74148;ARCHITECTURE rtl OF p74148 IS SIGNAL temp_in : STD_LOGIC_VECTOR (7 DOWNTO 0); SIGNAL temp_out : STD_LOGIC_VECTOR (4 DOWNTO 0);BEGIN 102temp_in = in7&
59、amp;in6&in5&in4&in3&in2&in1&in0;PROCESS(en,temp_in)BEGINIF (en=0) THEN IF(temp_in=“11111111”) THEN temp_out = “11110”;ELSIF (temp_in(7)=0) THEN temp_out = “00001”;ELSIF (temp_in(6)=0) THEN temp_out = “00101”;103 ELSIF (temp_in(5)=0) THEN temp_out = “01001”; ELSIF (temp_in(4)=
60、0) THEN temp_out = “01101”; ELSIF (temp_in(3)=0) THEN temp_out = “10001”; ELSIF (temp_in(2)=0) THEN temp_out = “10101”; ELSIF (temp_in(1)=0) THEN temp_out = “11001”;104 ELSIF (temp_in(0)=0) THEN temp_out = “11101”; END IF; ELSE temp_out = “11111”; END IF; y2 = temp_out(4); y1 = temp_out(3); y0 = temp_out(2); yex = temp_out(1);105 yen = te
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑照明設計案例分析
- 中華優傳統文化 課件 第一章 中國傳統文化概述
- 創建平安年終工作總結
- 2025西安交通大學輔導員考試試題及答案
- 2025遼寧建筑職業學院輔導員考試試題及答案
- 中國美食教案設計
- 2025福建農林大學金山學院輔導員考試試題及答案
- 幼兒園天氣主題活動設計
- 江西報業傳媒集團有限責任公司招聘筆試題庫2025
- 字母ABC基礎教學設計
- 附件3:微創介入中心評審實施細則2024年修訂版
- 信創的基礎知識培訓課件
- 全國國道大全(包括里程及路過城市)
- 化學品作業場所安全警示標志大全
- T-QGCML 3384-2024 無人值守地磅收驗貨系統配置規范
- AQ/T 2061-2018 金屬非金屬地下礦山防治水安全技術規范(正式版)
- 道路提升改造、公路工程 投標方案(技術標)
- 《筵席設計與制作》考試復習題庫(含答案)
- DZ/T 0462.6-2023 礦產資源“三率”指標要求 第6部分:石墨等26種非金屬礦產(正式版)
- 交通出行車費報銷單模板
- 中國民族鋼琴藝術鑒賞智慧樹知到期末考試答案章節答案2024年西安交通大學
評論
0/150
提交評論