版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、1第十一章第十一章 VHDL2一、硬件描述語言(一、硬件描述語言(HDL)1.VHDL :VHSIC Hardware Description Language; VHSIC : Very High Speed Integrated Circuit;2.Verilog-HDL 可以描述硬件電路的功能、信號連接關(guān)可以描述硬件電路的功能、信號連接關(guān)系及定時關(guān)系的語言。它可以比電原理圖更系及定時關(guān)系的語言。它可以比電原理圖更有效地表示硬件電路的特性。有效地表示硬件電路的特性。IEEE(Institute of Electrical and Electronics Engineers)的工業(yè)標(biāo)準(zhǔn)硬件描
2、述語言的工業(yè)標(biāo)準(zhǔn)硬件描述語言: 11.1 概述概述31.IEEE1076-1987(VHDL-87) VHDL-93相對于相對于VHDL-87沒有什么大變化,主沒有什么大變化,主要是增加了針對要是增加了針對VHDL模型的新的模型的新的VHDL命令命令和屬性。和屬性。二、二、VHDL的發(fā)展概況的發(fā)展概況2.IEEE1164-1993(VHDL-93) 4在行為描述階段并不真正考慮實際的操作、算在行為描述階段并不真正考慮實際的操作、算法、用什么邏輯電路來實現(xiàn),其目的是通過法、用什么邏輯電路來實現(xiàn),其目的是通過對系統(tǒng)行為描述的仿真來發(fā)現(xiàn)設(shè)計中存在的對系統(tǒng)行為描述的仿真來發(fā)現(xiàn)設(shè)計中存在的問題,檢查該數(shù)
3、學(xué)模型能否達到系統(tǒng)設(shè)計規(guī)問題,檢查該數(shù)學(xué)模型能否達到系統(tǒng)設(shè)計規(guī)格書的要求。格書的要求。1.行為描述行為描述 :對整個系統(tǒng)的:對整個系統(tǒng)的 數(shù)學(xué)模型進行描述。數(shù)學(xué)模型進行描述。三、用三、用VHDL設(shè)計硬件電路的過程設(shè)計硬件電路的過程53.邏輯綜合邏輯綜合利用邏輯綜合工具,將利用邏輯綜合工具,將RTL描述的程序轉(zhuǎn)換成描述的程序轉(zhuǎn)換成用基本邏輯元件(宏單元)表示的文件(門用基本邏輯元件(宏單元)表示的文件(門級網(wǎng)表、原理圖)。即把布爾函數(shù)轉(zhuǎn)換為門級網(wǎng)表、原理圖)。即把布爾函數(shù)轉(zhuǎn)換為門并實現(xiàn)最小化。并實現(xiàn)最小化。2.RTL描述(寄存器傳輸描述或數(shù)據(jù)流描述)描述(寄存器傳輸描述或數(shù)據(jù)流描述) 系統(tǒng)只有采
4、用系統(tǒng)只有采用RTL方式進行描述,才能導(dǎo)出系方式進行描述,才能導(dǎo)出系統(tǒng)的邏輯表達式,才能進行邏輯綜合,從統(tǒng)的邏輯表達式,才能進行邏輯綜合,從而得到具體的邏輯器件。而得到具體的邏輯器件。6用用VHDL設(shè)計系統(tǒng)硬件的過程設(shè)計系統(tǒng)硬件的過程規(guī)格設(shè)計規(guī)格設(shè)計行為級描述行為級描述行為級仿真行為級仿真RTL級描述級描述RTL級仿真級仿真邏輯綜合邏輯綜合門級仿真、定時檢查門級仿真、定時檢查輸出門級網(wǎng)表輸出門級網(wǎng)表711.2、VHDL基本構(gòu)件基本構(gòu)件 實體實體(Entity):):描述所設(shè)計的系統(tǒng)的外部接口描述所設(shè)計的系統(tǒng)的外部接口信號;信號;構(gòu)造體構(gòu)造體(Architecture) :描述系統(tǒng)內(nèi)部的結(jié)構(gòu)描述
5、系統(tǒng)內(nèi)部的結(jié)構(gòu)和行為和行為,即電路的具體描述;即電路的具體描述;包集合包集合(Package) :存放各設(shè)計模塊都能共享存放各設(shè)計模塊都能共享的數(shù)據(jù)類型、常數(shù)和子程序等;的數(shù)據(jù)類型、常數(shù)和子程序等;配置配置(Configuration) : :用于從庫中選取所需用于從庫中選取所需單元來組成系統(tǒng)設(shè)計的不同版本;單元來組成系統(tǒng)設(shè)計的不同版本;庫庫(Library) : :存放已經(jīng)編譯的實體、構(gòu)造體、存放已經(jīng)編譯的實體、構(gòu)造體、包集合和配置;包集合和配置;81.實體(實體(Entity)ENTITY 實體名實體名 IS GENERIC(類屬表類屬表) -將信息參數(shù)傳輸給實體將信息參數(shù)傳輸給實體POR
6、T(端口表端口表) -實體的輸入輸出信號及其模式實體的輸入輸出信號及其模式END 實體名;實體名;用來定義實體與外部的連接關(guān)系以及需傳給實用來定義實體與外部的連接關(guān)系以及需傳給實體的參數(shù)體的參數(shù)9端口模式端口模式模模 式式含含 義義IN輸入輸入OUT輸出(構(gòu)造體內(nèi)部不能再使用)輸出(構(gòu)造體內(nèi)部不能再使用)INOUT雙向雙向BUFFER輸出(構(gòu)造體內(nèi)部可再使用)輸出(構(gòu)造體內(nèi)部可再使用)LINKAGE不指定方向,無論哪一個方向都可連接,不指定方向,無論哪一個方向都可連接,只用在文檔中。只用在文檔中。類型指定:在邏輯電路設(shè)計中,常用類型指定:在邏輯電路設(shè)計中,常用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.構(gòu)造體(構(gòu)造體(Architecture)作用作用:通過若干并行語句來描述實體的邏輯功能或通過若干并行語句來描述實體的邏輯功能或內(nèi)部電路結(jié)構(gòu)內(nèi)部電路結(jié)構(gòu),從而建立實體輸出與輸入的關(guān)系。從而建立實體輸出與輸入的關(guān)系。格式為:格式為:ARCHITECTURE 構(gòu)造體名構(gòu)造體名 OF 實體名實體名 IS 說明語句;說明語句;BEGINEND 構(gòu)造體名;構(gòu)造體名;并行語句;并行語句;13例例11.6.2 一個構(gòu)造體的實例。一個構(gòu)造體的實例。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語言構(gòu)造體的描述方式語言構(gòu)造體的描述方式 1.1.行為描述方式行為描述方式無需包含任何結(jié)構(gòu)信息,只是對輸入信號和輸出信號無需包含任何結(jié)構(gòu)信息,只是對輸入信號和輸出信號關(guān)系的描述。關(guān)系的描述。行為描述方式是對系統(tǒng)數(shù)學(xué)模型的描述,其抽象行為描述方式是對系統(tǒng)數(shù)學(xué)模型的描述,其抽象程度比其它兩種描述方式更高。程度比其它兩種
10、描述方式更高。在在VHDL語言中存在一些專門用于描述系統(tǒng)行為的語言中存在一些專門用于描述系統(tǒng)行為的語句。語句。15ARCHITECTURE beh1_ha OF half_adder ISBEGIN c1:PROCESS(a,b) -PROCESS為進程語句,括號為進程語句,括號 -內(nèi)的信號是進程的激活條件內(nèi)的信號是進程的激活條件 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)進程語句內(nèi)部由順序語句構(gòu)成;)進程語句內(nèi)部由順序語句構(gòu)成;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;半加器構(gòu)造體的另一種行為描述方式:半加器構(gòu)造體的另一種行為描述方式:182.寄存器傳輸寄存器傳輸(RTL)描述方式描述方式(數(shù)據(jù)流描述方式數(shù)據(jù)流描述方式) 反映了從輸入數(shù)據(jù)到輸出數(shù)據(jù)之間所發(fā)生的邏輯反映了從輸入數(shù)據(jù)到輸出數(shù)據(jù)之間所發(fā)生的邏輯變換,一般采用與寄存器硬件一一對應(yīng)的直變換,一般采用與寄存器硬件一一對應(yīng)的直接描述。接描述。&=1abcs由半加器的真值表可導(dǎo)出輸出函數(shù):由半加器的真值表可導(dǎo)出輸出函數(shù):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二選一數(shù)據(jù)選擇器的電路原理圖二選一數(shù)據(jù)選擇器的電路原理圖&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)作用:一個實體可以有多個構(gòu)造體,當(dāng)對某實體作用:一個實體可以有多個構(gòu)造體,當(dāng)對某實體進行仿真或綜合時,需將該實體與它的一個構(gòu)進
17、行仿真或綜合時,需將該實體與它的一個構(gòu)造體連接起來;當(dāng)某實體被其他實體造體連接起來;當(dāng)某實體被其他實體 引用時,引用時,需指定所生成的例元與該實體的哪個構(gòu)造體相需指定所生成的例元與該實體的哪個構(gòu)造體相對應(yīng)。對應(yīng)。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 關(guān)于關(guān)于RS觸發(fā)器的實例。觸發(fā)器的實例。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、在包頭說明中,除定義數(shù)據(jù)類型和常量外,還需、在包頭說明中,除定義數(shù)據(jù)類型和常量外,還需對包體單元中的子程序作出說明。因為只有包頭中對包體單元中的子程序作出說明。因為只有包頭中說明的標(biāo)識符在程序包外才是可見的,僅在包體中說明的標(biāo)識符在程序包外才是可見的,僅在包體中說明的標(biāo)識符在程序包外是不可見的。說明的標(biāo)識符在程序包外是不可見的。B、子程序體不能放在包頭中,只能放在包體中。、子程序體不能放在包頭中,只能放在包體中。C、若程序包中不包含子程序,則包體可以省
20、略。、若程序包中不包含子程序,則包體可以省略。調(diào)用格式:調(diào)用格式:USE 庫名庫名.程序包名程序包名.項目名項目名36LIBRARY IEEE;-打開打開STD_LOGIC_1164包所在的庫包所在的庫USE IEEE.STD_LOGIC_1164.ALL;-調(diào)用包中的所有項調(diào)用包中的所有項USE WORK.logic.Unknow_value;-使用包中的使用包中的Unknow_value項項USE WORK.logic.ALL;-使用包中的所用項使用包中的所用項375.庫(庫(Library):):存放已經(jīng)編譯的實體、構(gòu)造存放已經(jīng)編譯的實體、構(gòu)造體、包集合和配置,是經(jīng)編譯后的數(shù)據(jù)的集體、包
21、集合和配置,是經(jīng)編譯后的數(shù)據(jù)的集合。合。(1)庫的種類)庫的種類IEEE庫庫STD_LOGIC_1164 -IEEE正式認(rèn)可的標(biāo)準(zhǔn)包集合正式認(rèn)可的標(biāo)準(zhǔn)包集合STD_LOGIC_ARITH -SYNOPSYS公司提供包集合公司提供包集合STD_LOGIC_UNSIGNED-SYNOPSYS公司提供包集合公司提供包集合LIBRARY 庫名表;庫名表;-庫名表為一系列庫名表為一系列“,”分割的庫名。分割的庫名。38STD庫庫:VHDL的標(biāo)準(zhǔn)庫的標(biāo)準(zhǔn)庫STANDARD-VHDL的標(biāo)準(zhǔn)配置,調(diào)用其中的數(shù)據(jù),可不加說明的標(biāo)準(zhǔn)配置,調(diào)用其中的數(shù)據(jù),可不加說明TEXTIO-調(diào)用其中的數(shù)據(jù),必須先說明調(diào)用其中的
22、數(shù)據(jù),必須先說明-LIBRARY STD;-USE STD.TEXTIO.ALL;面向面向ASIC的庫的庫:用于門級仿真:用于門級仿真39WORK庫庫:現(xiàn)行作業(yè)庫,使用該庫時無需說明:現(xiàn)行作業(yè)庫,使用該庫時無需說明用戶定義庫用戶定義庫 :使用該庫時需先說明:使用該庫時需先說明(2)庫的使用)庫的使用庫的說明庫的說明USE LIBRARY_NAME.PACKAGE_NAME.ITEM_NAME;LIBRARY 庫名;庫名;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;40庫說明作用范圍庫說明作用范圍從一個實體說明開始到它所屬的構(gòu)造體、配置從一個實體說明開始到它
23、所屬的構(gòu)造體、配置為止。為止。例例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.函數(shù)(函數(shù)(Function)定義:便于在程序中重復(fù)
24、使用的一組順序語句。定義:便于在程序中重復(fù)使用的一組順序語句。不是獨立的編譯單元,只能放在實體(被該實體不是獨立的編譯單元,只能放在實體(被該實體專用)或程序包中(可被多個實體共用)。專用)或程序包中(可被多個實體共用)。作用是求值,若干參數(shù)輸入,只有一個返回值作為作用是求值,若干參數(shù)輸入,只有一個返回值作為輸出輸出43一般格式:一般格式:FUNCTION 函數(shù)名(參數(shù)表)函數(shù)名(參數(shù)表)RETURN 數(shù)據(jù)類型數(shù)據(jù)類型 IS 說明語句;說明語句; -說明函數(shù)體內(nèi)引用的對象和過程說明函數(shù)體內(nèi)引用的對象和過程BEGIN 順序語句;順序語句; -函數(shù)體定義函數(shù)的功能函數(shù)體定義函數(shù)的功能END 函數(shù)名
25、;函數(shù)名;說明:說明:A、參數(shù)表中需說明參數(shù)名、參數(shù)類型(信號或常量)及、參數(shù)表中需說明參數(shù)名、參數(shù)類型(信號或常量)及其數(shù)據(jù)類型。其數(shù)據(jù)類型。B、RETURN之后的數(shù)據(jù)類型表示函數(shù)返回值的類型。之后的數(shù)據(jù)類型表示函數(shù)返回值的類型。44ELSERETURN y;END IF;END Min;例例11.6.5 函數(shù)舉例函數(shù)舉例-返回兩數(shù)中的較小數(shù)。返回兩數(shù)中的較小數(shù)。FUNCTION Min(x,y:INTEGER ) RETURN INTEGER ISBEGINIF xy THENRETURN x;452.過程(過程(Procedure)作用:通過參數(shù)進行內(nèi)外信息的傳遞,與其它作用:通過參數(shù)進
26、行內(nèi)外信息的傳遞,與其它高級語言中的子程序相當(dāng)。高級語言中的子程序相當(dāng)。PROCEDURE 過程名過程名(參數(shù)(參數(shù)1;參數(shù);參數(shù)2;)IS說明語句說明語句BEGIN順序處理語句順序處理語句END 過程名過程名;46q:=0;x_flag:=FALSE;FOR i IN zRANGE LOOPq:=q*2;例例11.6.6 過程舉例過程舉例向量轉(zhuǎn)換成整數(shù)類型。向量轉(zhuǎn)換成整數(shù)類型。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;-該過程調(diào)用后,如果該過程調(diào)用后,如果x_flag=TRUE,則說明,則說明轉(zhuǎn)換失敗,不能得到正確的轉(zhuǎn)換整數(shù)值。轉(zhuǎn)換失敗,不能得到正確的轉(zhuǎn)換整數(shù)值。4811.3 VHDL語言元素語言元素 1.VHDL語法規(guī)則與標(biāo)識符語法規(guī)則與標(biāo)識符(1)注釋(注釋(Comment):-(2)標(biāo)識符(標(biāo)識符(Identifier)用戶自定義用戶自定義VHDL語言預(yù)定義:如語言預(yù)定義:如 ENTITY、SIGNAL。標(biāo)識符
28、的第一個字符必須是英文字母;標(biāo)識符的第一個字符必須是英文字母;標(biāo)識符不能以下劃線結(jié)束,如標(biāo)識符不能以下劃線結(jié)束,如 MUX_;標(biāo)識符中不允許出現(xiàn)兩個連續(xù)的下劃線;標(biāo)識符中不允許出現(xiàn)兩個連續(xù)的下劃線;49(3)數(shù)(數(shù)(Number)的表示)的表示0,987E6 - 十進制整數(shù)十進制整數(shù)0.5,2.72,12.4E-6 - 十進制實數(shù)十進制實數(shù)2#11000100# - 二進制數(shù),等于十進制數(shù)二進制數(shù),等于十進制數(shù)19616#C4# - 十六進制數(shù),等于十進制數(shù)十六進制數(shù),等于十進制數(shù)1964#301#E1 - 四進制數(shù),等于十進制數(shù)四進制數(shù),等于十進制數(shù)19616#F.FF#E2 - 十六進制數(shù)
29、,等于十進制數(shù)十六進制數(shù),等于十進制數(shù)4095.0502.數(shù)據(jù)對象和數(shù)據(jù)類型數(shù)據(jù)對象和數(shù)據(jù)類型(1)數(shù)據(jù)對象(數(shù)據(jù)對象(Object)常數(shù)(常數(shù)(Constant)CONSTANT Vcc:REAL := 5.0;信號(信號(Signal)SIGNAL 信號名信號名:數(shù)據(jù)類型數(shù)據(jù)類型 := 表達式表達式;SIGNAL sys_dk:BIT := 0;SIGNAL tem:STD_LOGIC;變量(變量(Varible)VARIABLE x,y:INTEGER;51信號和變量的區(qū)別:信號和變量的區(qū)別:信號是全局量,可以進行進程之間的通信;信號是全局量,可以進行進程之間的通信;而變量是局部量,只能
30、用于進程或子程序而變量是局部量,只能用于進程或子程序(即函數(shù)和過程)中;(即函數(shù)和過程)中;對變量的賦值是立即發(fā)生的,對信號的賦值對變量的賦值是立即發(fā)生的,對信號的賦值須經(jīng)一段時間延遲才會發(fā)生;須經(jīng)一段時間延遲才會發(fā)生;對變量的賦值用對變量的賦值用“:=”,對信號的賦值用,對信號的賦值用“=” ;信號可以比擬為硬件端口之間的連接,而變信號可以比擬為硬件端口之間的連接,而變量則與硬件之間沒有對應(yīng)關(guān)系;量則與硬件之間沒有對應(yīng)關(guān)系;52(2)(2)數(shù)據(jù)類型數(shù)據(jù)類型標(biāo)準(zhǔn)數(shù)據(jù)類型標(biāo)準(zhǔn)數(shù)據(jù)類型53數(shù)據(jù)類型數(shù)據(jù)類型標(biāo)標(biāo) 識識說說 明明整數(shù)整數(shù)INTEGER-(231-1) +(231-1)實數(shù)實數(shù)REAL-
31、1.0E+38+1.0E+38位位BIT邏輯邏輯0 或或1,單引號標(biāo)出,單引號標(biāo)出位矢量位矢量BIT_VECTORBIT的組合,以雙引號標(biāo)出的組合,以雙引號標(biāo)出字符字符CHARACTERSASCII 字符,單引號標(biāo)出字符,單引號標(biāo)出布爾量布爾量BOOLEAN邏輯邏輯“真真”或或“假假”,TRUE or FALSE時間時間TIME時間單位:時間單位:fs,ps,ns,us,ms,sec,min,hr錯誤等級錯誤等級SEVERITY LEVELNOTE,WARNING,ERROR,FAILURE自然數(shù)自然數(shù)NATURAL整數(shù)的子集:整數(shù)的子集:0231-1正整數(shù)正整數(shù)POSTIVE整數(shù)的子集:整數(shù)
32、的子集:1231-1字符串字符串STRING字符矢量,以雙引號標(biāo)出字符矢量,以雙引號標(biāo)出表表11.3.1 VHDL標(biāo)準(zhǔn)數(shù)據(jù)類型標(biāo)準(zhǔn)數(shù)據(jù)類型54用戶自定義數(shù)據(jù)類型用戶自定義數(shù)據(jù)類型整數(shù)、實數(shù)類型整數(shù)、實數(shù)類型TYPE 數(shù)據(jù)類型名數(shù)據(jù)類型名 IS 數(shù)據(jù)類型數(shù)據(jù)類型 定義約束范圍定義約束范圍TYPE digit IS INTEGER RANGE 0 TO 9;枚舉類型枚舉類型TYPE 數(shù)據(jù)類型名數(shù)據(jù)類型名 IS (元素(元素1,元素,元素2,)TYPE arith_op IS (add,sub,mul,div);TYPE color IS (red,green,blue);55 數(shù)組和記錄數(shù)組和記錄
33、TYPE big_word IS ARRAY (0 TO 63) OF BIT;TYPE arith_op IS (add,sub,mul,div);TYPE instruction IS RECORD- 一維數(shù)組一維數(shù)組TYPE matrix_1 IS ARRAY (0 TO 15,0 TO 31) OF BIT;- 二維數(shù)組二維數(shù)組- 枚舉枚舉類型類型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.預(yù)定義屬性預(yù)定義屬性表表11.6.3 11.6.3 標(biāo)量類型預(yù)定義屬性標(biāo)量類型預(yù)定義屬性屬性屬性說說 明明舉例(舉例
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 物理、離散類預(yù)定義屬性物理、離散類預(yù)定義屬性60屬性屬性說說 明明舉例舉例(TYPE t_d IS ARRAY (8 DOWN TO 0,0 TO 4)ALEFT下標(biāo)左邊界下標(biāo)左邊界t_
37、dLEFT(1) = 8; t_dLEFT(2) = 0;ARIGHT下標(biāo)右邊界下標(biāo)右邊界 t_dRIGHT(1) = 8; t_dRIGHT(2) = 0;TLOW下標(biāo)下邊界下標(biāo)下邊界t_dLOW(1) = 0; t_dLOW(2) = 0;THIGH下標(biāo)上邊界下標(biāo)上邊界t_dHIGH(1) = 8; t_dHIGH(2) = 4;TRANGE下標(biāo)范圍下標(biāo)范圍t_dRANGE(1) =8 DOWN TO 0; t_dRANGE(2) = 0 TO 4;TREVERSE_RANGE下標(biāo)反向范圍下標(biāo)反向范圍t_dREVERSE_RANGE(1) =0 DOWN TO 8; t_dREVERSE_
38、RANGE(2) = 4 DOWN TO 0;TLENGTH數(shù)組的長度數(shù)組的長度t_dRANGE(1) =8 DOWN TO 0; t_dRANGE(2) = 0 TO 4;表表11.6.5 11.6.5 數(shù)組類預(yù)定義屬性數(shù)組類預(yù)定義屬性614.運算符(運算符(Operatou)分分 類類運算符運算符功功 能能二元算術(shù)運算符二元算術(shù)運算符+-*/modrem*加加減減乘乘除除求模求模求余求余乘方乘方一元算術(shù)運算符一元算術(shù)運算符+-abs正號正號負(fù)號負(fù)號絕對值絕對值表表11.3.2 VHDL 運算符運算符62分分 類類運算符運算符功功 能能關(guān)系運算符關(guān)系運算符=/=相等相等不相等不相等小于小于大
39、于大于小于等于小于等于大于等于大于等于二元邏輯運算符二元邏輯運算符andor nandnorXor與與或或與非與非或非或非異或異或表表11.3.2 VHDL 運算符(續(xù))運算符(續(xù))63分分 類類運算符運算符功功 能能一元邏輯運算符一元邏輯運算符not求反求反并置運算符并置運算符&連接連接賦值運算符賦值運算符信號賦值信號賦值變量賦值變量賦值結(jié)合結(jié)合表表11.6.6 VHDL 運算符(續(xù))運算符(續(xù))6411.4 VHDL常用編程語句常用編程語句(1)并發(fā)描述并發(fā)描述(CONCURRENT)語句語句進程進程(PROCESS)語句語句標(biāo)號:標(biāo)號:PROCESS (信號信號1,信號,信號2,
40、)說明語句說明語句BEGIN順序處理語句順序處理語句END PROCESS標(biāo)號標(biāo)號;65進程語句的特點:進程語句的特點:構(gòu)造體中多個進程之間是并發(fā)運行的,而進構(gòu)造體中多個進程之間是并發(fā)運行的,而進程結(jié)構(gòu)中的語句按順序執(zhí)行;程結(jié)構(gòu)中的語句按順序執(zhí)行;為啟動進程,在進程結(jié)構(gòu)中必須包含一個顯為啟動進程,在進程結(jié)構(gòu)中必須包含一個顯式的敏感信號量表或者包含一個式的敏感信號量表或者包含一個WAIT語句;語句;通過存取構(gòu)造體或?qū)嶓w中所定義的信號,實通過存取構(gòu)造體或?qū)嶓w中所定義的信號,實現(xiàn)進程之間的通信。現(xiàn)進程之間的通信。66塊塊(BLOCK)語句語句標(biāo)號:標(biāo)號:BLOCK 說明語句說明語句BEGIN并發(fā)處理
41、語句并發(fā)處理語句END BLOCK 標(biāo)號標(biāo)號 ;67賦值語句賦值語句并發(fā)信號賦值語句并發(fā)信號賦值語句(實際上是一個進程的縮寫)(實際上是一個進程的縮寫)ARCHITECTURE behav OF ab_signal ISBEGINOutput = a+b;END behav;目標(biāo)信號目標(biāo)信號 = 表達式;表達式;68ARCHITECTURE behav OF ab_signal ISBEGINOutput = a+b;END behav;PROCESS (a,b)BEGINEND PROCESS;69選擇信號賦值語句選擇信號賦值語句目標(biāo)信號目標(biāo)信號 = 表達式表達式1 WHEN 條件條件1,W
42、ITH 表達式表達式 SELECT表達式表達式2 WHEN 條件條件2,表達式表達式n WHEN 條件條件n;注意:必須指明所有的互斥條件。注意:必須指明所有的互斥條件。70LIBRARY IEEE;例例11.4.5 四選一數(shù)據(jù)選擇器的實現(xiàn)。四選一數(shù)據(jù)選擇器的實現(xiàn)。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條件信號賦值語句條件信號賦值語句目標(biāo)信號目標(biāo)信號 = 表達式表達式1 WHEN 條件條件1 ELSE表達式表達式2 WHEN 條件條件2 ELSE表達式表達式n ;表達式表達式n-1 WHEN 條件條件n-1 ELSE73LIBRARY IEEE;例例11.4.6 四選一數(shù)據(jù)選擇器的實現(xiàn)。四選一數(shù)據(jù)選擇器的實現(xiàn)。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 語句用來產(chǎn)生多個相同的結(jié)構(gòu),有語句用來產(chǎn)生多個相同的結(jié)構(gòu),有兩種使用形式。其典型應(yīng)用場合是生成存儲兩種使用形式。其典型應(yīng)用場合是生成存儲器陣列和
45、寄存器陣列(如移位寄存器)。器陣列和寄存器陣列(如移位寄存器)。標(biāo)號:標(biāo)號:FOR 變量變量 IN 不連續(xù)區(qū)間不連續(xù)區(qū)間 GENERATE并發(fā)處理語句并發(fā)處理語句END GENERATE 標(biāo)號標(biāo)號;標(biāo)號:標(biāo)號:IF 條件條件 GENERATE并發(fā)處理語句并發(fā)處理語句END GENERATE 標(biāo)號名標(biāo)號名;76(2)順序描述順序描述(SEQUENTIAL)語句語句順序語句只能用于進程或子程序(即函數(shù)和過順序語句只能用于進程或子程序(即函數(shù)和過程)中。語句按書寫次序順序執(zhí)行。程)中。語句按書寫次序順序執(zhí)行。條件條件(IF)語句語句對應(yīng)于并行語句部分的對應(yīng)于并行語句部分的“條件信號賦值語句條件信號賦
46、值語句”,即:即: WHEN ELSE 語句。語句。77IF 條件條件 THEN順序處理語句順序處理語句ELSIF 條件條件 THEN順序處理語句順序處理語句END IF;ELSIF 條件條件 THEN順序處理語句順序處理語句ELSE順序處理語句順序處理語句78LIBRARY IEEE;用用IF 語句實現(xiàn)例語句實現(xiàn)例11.4.5 四選一數(shù)據(jù)選擇器。四選一數(shù)據(jù)選擇器。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 ;注意:應(yīng)該將表達式的所有取值都列出來。注意:應(yīng)該將表達式的所有取值都列出來
48、。對應(yīng)于并行語句部分的對應(yīng)于并行語句部分的“選擇信號賦值語句選擇信號賦值語句”,即:即: WITH SELECT 語句。語句。81LIBRARY IEEE;用用CASE 語句實現(xiàn)例語句實現(xiàn)例11.4.5 四選一數(shù)據(jù)選擇器。四選一數(shù)據(jù)選擇器。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循環(huán)循環(huán)(LOOP)語句語句標(biāo)號標(biāo)號:FOR 循環(huán)變量循環(huán)變量 IN 離散范圍離散范圍 LOOP順序處理語句順序處理語句END LOOP 標(biāo)號標(biāo)號;例例6 ASUM: FOR i IN 1 TO 9 LOOPsum:=i+sum;-sum初始值為初始值為0END LOOP ASUM;- i是循環(huán)變量,它可取是循環(huán)變量,它可取1,2,9共共9個值。個值。- 該程序?qū)υ摮绦驅(qū)?9的數(shù)進行累加計算。的數(shù)進行累加計算。84標(biāo)號標(biāo)號:WHILE 條件條件 LOOP順序處理語句;順序處理語句;END LOOP 標(biāo)號標(biāo)號;例例7 i=1;
50、sum:=0;END LOOP ASUM;- 該程序?qū)υ摮绦驅(qū)?9的數(shù)進行累加計算。的數(shù)進行累加計算。ASUM:WHILE(i10) LOOPsum:=i+sum;i:=i+1;85NEXT 標(biāo)號標(biāo)號 WHEN 條件條件;-用來跳出本次循環(huán),轉(zhuǎn)入下一次新的循環(huán)。用來跳出本次循環(huán),轉(zhuǎn)入下一次新的循環(huán)。注意:若注意:若NEXT后既無后既無“標(biāo)號標(biāo)號”也無也無“WHEN 條條件件”說明,那么只要執(zhí)行到該語句就立即無條件說明,那么只要執(zhí)行到該語句就立即無條件地跳出本次循環(huán),從地跳出本次循環(huán),從LOOP語句的起始位置進入語句的起始位置進入下一次循環(huán)。下一次循環(huán)。-用于用于LOOP語句的內(nèi)部循環(huán)控制。語句
51、的內(nèi)部循環(huán)控制。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 標(biāo)號標(biāo)號 WHEN 條件條件;-用來結(jié)束循環(huán)狀態(tài),從用來結(jié)束循環(huán)狀態(tài),從LOOP語句中跳出。語句中跳出。注意:若注意:若NEXT后既無后既無“標(biāo)號標(biāo)號”也無也無“WHEN 條條件件”說明,說明,那么只要執(zhí)行到該語
52、句就立即無條件地結(jié)束循環(huán)那么只要執(zhí)行到該語句就立即無條件地結(jié)束循環(huán)狀態(tài),繼續(xù)執(zhí)行狀態(tài),繼續(xù)執(zhí)行LOOP語句后續(xù)的語句。語句后續(xù)的語句。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)語句語句將一個順序執(zhí)行的進程或子程序?qū)⒁粋€順序執(zhí)行的進程或子程序“掛起掛起”,
53、直,直至所約定的條件滿足為止。至所約定的條件滿足為止。WAIT語句可以設(shè)語句可以設(shè)置置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設(shè)計電路設(shè)計電路1.編碼器和譯碼器編碼器和譯碼器(1)3位二進制編碼器位二進制編碼器有有8個位輸入個位輸入I0I7,3個位輸出個位輸出A,B,C。為書寫。為書寫方便,現(xiàn)定義兩個位矢量方便,現(xiàn)定義兩個位矢量temp_in(0 TO 7)和和temp_out(0 TO 2)與其輸入和輸出相對應(yīng)與其輸入和輸出相對應(yīng)。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線優(yōu)先編碼器線優(yōu)先編碼器74148100表表4.2.2 83線優(yōu)先
57、編碼器線優(yōu)先編碼器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輸出標(biāo)志 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 神經(jīng)系統(tǒng)考試題及答案
- 容器技術(shù)考試題庫及答案
- 輻射探測技術(shù)
- 《GAT 759-2008公安信息化標(biāo)準(zhǔn)管理基本數(shù)據(jù)結(jié)構(gòu)》專題研究報告
- 2026年深圳中考語文小說閱讀專項試卷(附答案可下載)
- 2026年深圳中考物理專題過關(guān)檢測試卷(附答案可下載)
- 積分題目及答案解析
- 2026年深圳中考數(shù)學(xué)一元一次方程試卷(附答案可下載)
- 2026年深圳中考數(shù)學(xué)沖刺名校專項試卷(附答案可下載)
- 2026年深圳中考?xì)v史戰(zhàn)后世界格局的演變試卷(附答案可下載)
- 成都大學(xué)《C語言程序設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 維修服務(wù)人員培訓(xùn)
- 滬教版2024九年級上冊化學(xué)各章節(jié)必背知識點復(fù)習(xí)提綱
- 醫(yī)院物業(yè)保潔服務(wù)方案(技術(shù)方案)
- 《設(shè)備買賣合同模板》
- GB/T 4074.6-2024繞組線試驗方法第6部分:熱性能
- DB32-T 4111-2021 預(yù)應(yīng)力混凝土實心方樁基礎(chǔ)技術(shù)規(guī)程
- 不同時代的流行音樂
- DB31-T 1448-2023 監(jiān)獄場所消防安全管理規(guī)范
- 醫(yī)療衛(wèi)生機構(gòu)6S常態(tài)化管理打分表
- 幾種常用潛流人工濕地剖面圖
評論
0/150
提交評論