版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 VHDL 編 程 基 礎(chǔ) 汽車防盜器 httpzg001gps.目 錄3.1 概述 3.2 VHDL設(shè)計實體的根本構(gòu)造 3.3 VHDL言語要素 3.4 VHDL順序語句 3.5 VHDL并行語句 3.6 VHDL的庫和程序包 3.7 VHDL設(shè)計流程 .3.1 概 述 3.1.1 VHDL言語簡介 VHDL是超高速集成電路硬件描畫言語Very High Speed Integrated Circuit Hardware Description language。是規(guī)范化程度最高的硬件描畫言語。目前流行的EDA工具軟件全部支持VHDL,VHDL是現(xiàn)代電子設(shè)計師必需掌握的硬件設(shè)計計算機言語。(
2、1) 邏輯描畫層次:普通的硬件描畫言語可以在三個層次上進展電路描畫,層次由高到低依次可分為行為級、RTL級(存放器轉(zhuǎn)換級)和門電路級。VHDL言語是一種高級描畫言語,適用于行為級和RTL級的描畫,最適于描畫電路的行為;(2) 設(shè)計要求:VHDL進展電子系統(tǒng)設(shè)計時可以不了解電路的構(gòu)造細節(jié),設(shè)計者所做的任務(wù)較少;Verilog和ABEL言語進展電子系統(tǒng)設(shè)計時需了解電路的構(gòu)造細節(jié),設(shè)計者需做大量的任務(wù)。.3.1.3 VHDL程序設(shè)計商定為了便于程序的閱讀和調(diào)試,對VHDL程序設(shè)計特作如下商定: (1) 語句構(gòu)造描畫中方括號“ 內(nèi)的內(nèi)容為可選內(nèi)容。 (2) 對于VHDL的編譯器和綜合器來說,程序文字的
3、大小寫是不加區(qū)分的。 (3) 程序中的注釋運用雙橫線“-。在VHDL程序的任何一行中,雙橫線“-后的文字都不參與編譯和綜合。 (4) 為了便于程序的閱讀與調(diào)試,書寫和輸入程序時,運用層次縮進格式,同一層次的對齊,低層次的較高層次的縮進兩個字符。 (5) 思索到MAX+plusII要求源程序文件的名字與實體名必需一致,因此為了使同一個VHDL源程序文件能順應(yīng)各個EDA開發(fā)軟件上的運用要求,建議各個源程序文件的命名均與其實體名一致。 .3.2 VHDL設(shè)計實體的根本構(gòu)造 經(jīng)過VHDL描畫一個二輸入或門的實例,來闡明VHDL的根本構(gòu)造。例1 一個二輸入或門的VHDL程序如下:LIBRARY IEEE
4、; - IEEE庫的運用闡明USE IEEE.STD_LOGIC_1164.ALL; -實體描畫器件的輸入、輸出端口和數(shù)據(jù)類型用的程序包ENTITY OR2 IS -實體OR2的闡明 PORT(A,B: STD_LOGIC; -端口聲明,A、B是規(guī)范邏輯位類型的輸入端口 C:OUT STD_LOGIC); -聲明C是規(guī)范邏輯位類型的輸出端口END ENTITY OR2;ARCHITECTURE ONE OF OR2 IS -實體OR2的構(gòu)造體ONE 的闡明 BEGIN C=A OR B; -二輸入或門邏輯功能描畫END ARCHITECTURE ONE;或門程序包含了VHDL的庫、程序包、實體
5、闡明和構(gòu)造體幾個主要部分。語句C=A OR B為或門電路的邏輯描畫,其他都作為或門對外部端口的描畫,設(shè)計實體定義了或門外部界面后,其他的設(shè)計就可以直接調(diào)用這個或門實體。.3.2.1 VHDL程序設(shè)計舉例1設(shè)計思緒 以全加器為例例2 全加器可以由兩個1位的半加器構(gòu)成。1位半加器的端口信號A 和B分別是2位相加的二進制輸入信號,SO是相加和的輸出信號,CO是進位輸出信號,左邊的門電路構(gòu)造構(gòu)成了右邊的半加器H_ADDER。.圖中,全加器 F_ADDER內(nèi)部的功能構(gòu)造是由3個邏輯器件構(gòu)成的,即由兩個半加器U1、U2和一個或門U3銜接而成。1 位全加器邏輯原理圖 .2. VHDL源程序1) 或門的邏輯描
6、畫LIBRARY IEEE; - IEEE庫的運用闡明 USE IEEE.STD_LOGIC_1164.ALL;-實體描畫器件的輸入、輸出端口和數(shù)據(jù)類型用的程序包ENTITY or2 IS -實體or2的闡明 PORT(a,b:IN STD_LOGIC; -端口聲明,a、b是規(guī)范邏輯位類型的輸入端口 c: OUT STD_LOGIC); -聲明c是規(guī)范邏輯位類型的輸出端口END ENTITY or2;ARCHITECTURE art1 OF or2 IS -實體or2的構(gòu)造體art1的闡明 BEGIN c=a OR b;END ARCHITECTURE art1; . 2) 半加器的邏輯描畫
7、LIBRARY IEEE; - IEEE庫的運用闡明 USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS -實體h_adder的闡明 PORT(a,b:IN STD_LOGIC; co,so:OUT STD_LOGIC); END ENTITY h_adder; ARCHITECTURE art2 OF h_adder IS - 實體h_adder的構(gòu)造體art2的闡明 BEGIN so=(a OR b) AND (a NAND b); coain,b=bin,co=d,so=e); -稱號映射法 U2:h_adder PORT MAP(a=e,b=c
8、in,co=f,so=sum); -名字關(guān)聯(lián)方式 U3:or2 PORT MAP(a=d,b=f,c=cout); END ARCHITECTURE art3; .3. 闡明及分析(1) 整個設(shè)計包括三個設(shè)計實體,分別為or2、h_adder和f_adder,其中實體f_adder為頂層實體。三個設(shè)計實體均包括三個組成部分:庫、程序包運用闡明,實體闡明和構(gòu)造體闡明。這三個設(shè)計實體既可以作為一個整體進展編譯、綜合與存檔,也可以各自進展獨立編譯、獨立綜合與存檔,或被其他的電路系統(tǒng)所調(diào)用。 (2) 實體 or2定義了或門or2的引腳信號a、b(輸入)和c(輸出),構(gòu)造體art1描畫了輸入與輸出信號間
9、的邏輯關(guān)系,將輸入信號a、b相或后傳給輸出信號端c,由此實體和構(gòu)造體描畫一個完好的或門元件。.(3) 實體h_adder及對應(yīng)的構(gòu)造體art2描畫了一個半加器。是由一個與非門、一個非門、一個或門和一個與門銜接而成的,其邏輯關(guān)系來自于半加器真值表。在VHDL中,邏輯算符NAND、NOT、OR和AND分別代表“與非、“非、“或和“與4種邏輯運算關(guān)系。(4) 在全加器接口邏輯VHDL描畫中,1位二進制全加器f_adder的原理圖,實體f_adder定義了引腳的端口信號屬性和數(shù)據(jù)類型。其中,ain和bin分別為兩個輸入的相加位,cin為低位進位輸入,cout 為進位輸出,sum為1位和輸出。其對應(yīng)的構(gòu)
10、造體art3的功能是利用COMPONENT聲明語句和COMPONENT例化語句將上面由兩個實體or2和h_adder描畫的獨立器件,按照圖3.2全加器內(nèi)部邏輯原理圖中的接線方式銜接起來。.(5) 在構(gòu)造體art3中,COMPONENTEND COMPONENT 語句構(gòu)造對所要調(diào)用的或門和半加器兩元件作了聲明(COMPONENT DECLARATION),并由SIGNAL語句定義了三個信號d、e和f,作為中間信號轉(zhuǎn)存點,以利于幾個器件間的信號銜接?!癙ORT MAP( )語句稱為元件例化語句(COMPONENT INSTANTIATION)。所謂例化,在電路板上,相當(dāng)于往上裝配元器件;在邏輯原理
11、圖上,相當(dāng)于從元件庫中取了一個元件符號放在電路原理圖上,并對此符號的各引腳進展連線。例化也可了解為元件映射或元件銜接,MAP是映射的意思。例如,語句“U2:h_adder PORT MAP(a=e,b=cin,co=f,so=sum)表示將實體h_adder描畫的元件U2的引腳信號a、b、co和so分別連向外部信號e、cin、f和sum。符號“=表示信號銜接。 .(6) 實體f_adder引導(dǎo)的邏輯描畫也是由三個主要部分構(gòu)成的,即庫、實體和構(gòu)造體。從外表上看來,庫的部分僅包含一個IEEE規(guī)范庫和翻開的IEEE.STD_LOGIC_1164.ALL程序包。但實踐上,從構(gòu)造體的描畫中可以看出,其對
12、外部的邏輯有調(diào)用的操作,這類似于對庫或程序包中的內(nèi)容作了調(diào)用。因此,庫構(gòu)造部分還應(yīng)將上面的或門和半加器的VHDL描畫包括進去,作為任務(wù)庫中的兩個待調(diào)用的元件。由此可見,庫構(gòu)造也是VHDL程序的重要組成部分。 . 3.2.2 VHDL程序的根本構(gòu)造 完好的VHDL程序(設(shè)計實體)具有固定的構(gòu)造。應(yīng)包括三個根本組成部分:庫、程序包運用闡明,實體闡明和實體對應(yīng)的構(gòu)造體闡明。 庫、程序包運用闡明用于翻開本設(shè)計實體將要用到的庫、程序包; 實體闡明用于描畫該設(shè)計實體與外界的接口信號闡明,是可視部分; 構(gòu)造體闡明用于描畫該設(shè)計實體內(nèi)部任務(wù)的邏輯關(guān)系。 在一個實體中,可以含有一個或一個以上的構(gòu)造體,而在每一個
13、構(gòu)造體中又可以含有一個或多個進程以及其他的語句。 實體還可以有配置闡明語句。配置闡明語句主要用于以層次化的方式對特定的設(shè)計實體進展元件例化,或是為實體選定某個特定的構(gòu)造體。 .VHDL程序設(shè)計根本構(gòu)造 3.2.2 VHDL程序的根本構(gòu)造.庫、程序包 根據(jù)VHDL語法規(guī)那么,在VHDL程序中運用的文字、數(shù)據(jù)對象、數(shù)據(jù)類型都需求預(yù)先定義。為了方便用VHDL編程,IEEE將預(yù)定義的數(shù)據(jù)類型、元件調(diào)用聲明(Declaration)及一些常用子程序搜集在一同,構(gòu)成程序包,供VHDL設(shè)計實體共享和調(diào)用。 假設(shè)干個程序包那么構(gòu)成庫,常用的庫是IEEE規(guī)范庫。因此,在每個設(shè)計實體開場都有翻開庫或程序包的語句。
14、例如 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; 表示設(shè)計實體中被描畫器件的輸入、輸出端口和數(shù)據(jù)類型將要用到IEEE規(guī)范庫中的STD_LOGIC_1164程序包。.3.2.3 實體(ENTITY) 實體(ENTITY)是設(shè)計實體中的重要組成部分,是一個完好的、獨立的言語模塊。它相當(dāng)于電路中的一個器件或電路原理圖上的一個元件符號。 實體由實體聲明和構(gòu)造體組成。實體聲明部分指定了設(shè)計單元的輸入輸出端口或引腳,是設(shè)計實體經(jīng)封裝后對外的一個通訊界面,是外界可以看到的部分。 構(gòu)造體用來描畫設(shè)計實體的邏輯構(gòu)造和邏輯功能。由VHDL語句構(gòu)成,是外界看不到的部分。一個
15、實體可以擁有一個或多個構(gòu)造體。.1實體語句構(gòu)造實體聲明部分的常用語句構(gòu)造如下: ENTITY 實體名 IS GENERIC(類屬表); PORT(端口表); END ENTITY 實體名; 實體聲明單元必需以語句“ENTITY 實體名IS開場,以語句“END ENTITY 實體名;終了,實體名是設(shè)計者本人給設(shè)計實體的命名,可作為其他 設(shè)計實體對該設(shè)計實體進展調(diào)用時用。中間在方括號內(nèi)的語句描畫,在特定的情況下并非是必需的。 . 2類屬(GENERIC)闡明語句 類屬(GENERIC)參數(shù)聲明必需放在端口聲明之前,用于指定如矢量位數(shù)、器件延遲時間等參數(shù)。類屬聲明的普通書寫格式如下: GENERIC
16、(常數(shù)名;數(shù)據(jù)類型:設(shè)定值 ;常數(shù)名:數(shù)據(jù)類型:設(shè)定值 );例: GENERIC(m:TIME=1.0ns); - m是一個值為1.0ns的時間參數(shù) Temp1=d0 AND sel AFTER m; -表示d0 AND sel經(jīng)1.0ns延遲后才送到Temp1.【例3.2.2】 2輸入與門的實體描畫。 ENTITY and2 IS GENERIC(RISEW:TIME:=1ns; FALLW:TIME:=1ns); PORT( a1:IN STD_LOGIC; a0:IN STD_LOGIC; z0:OUT STD_LOGIC); END ENTITY and2; 這是一個預(yù)備作為2輸入與門
17、的設(shè)計實體的實體描畫,在類屬闡明中定義參數(shù)RISEW為上沿寬度,F(xiàn)ALLW為下沿寬度,它們分別為1ns,這兩個參數(shù)用于仿真模塊的設(shè)計。.3PORT端口闡明 端口聲明語句是描畫器件的外部接口信號的聲明,相當(dāng)于器件的引腳聲明。實體端口聲明的普通書寫格式如下: PORT(端口名:方向 數(shù)據(jù)類型; 端口名:方向 數(shù)據(jù)類型); 例如 PORT(a, b:IN STD_LOGIC; -聲明a, b是規(guī)范邏輯位類型的輸入端口 s: IN STD_LOGIC; -聲明s是規(guī)范邏輯位類型的輸入端口 y: OUT STD_LOGIC); -聲明y是規(guī)范邏輯位類型的輸出端口. 端口名是實體每一個對外通道的名字;端口
18、方向方式是通道上數(shù)據(jù)流動的方式,如輸入或輸出等;數(shù)據(jù)類型是端口上流動數(shù)據(jù)的表達格式。 VHDL對語句中的一切操作數(shù)的數(shù)據(jù)類型都有嚴厲的規(guī)定。一個實體通常有一個或多個端口,端口類似于原理圖部件符號上的管腳。實體與外界交流的信息必需經(jīng)過端口通道流入或流出。 IEEE 定義了4種常用的端口方式:IN-輸入的引腳,OUT-輸出的引腳,BUFFER-帶輸出緩沖器并可以回讀的引腳(與TRI引腳不同),INOUT-雙向引腳(即BIDIR引腳)。此方式的端口是普通輸出端口(OUT)參與三態(tài)輸出緩沖器和輸入緩沖器構(gòu)成的。 端口描畫中的數(shù)據(jù)類型主要有兩類: 位(BIT)和位矢量(BIT_VECTOR)。 假設(shè)端口
19、的數(shù)據(jù)類型定義為BIT,那么其信號值是一個1位的二進制數(shù),取值只能是0或1;假設(shè)端口數(shù)據(jù)類型定義為BIT_VECTOR,那么其信號值是一組二進制。 .端口方式方向闡明端口方式符號圖 .3.2.4 構(gòu)造體(ARCHITECTURE) 構(gòu)造體是用于描畫設(shè)計實體的內(nèi)部構(gòu)造以及實體端口間的邏輯關(guān)系,在電路上相當(dāng)于器件的內(nèi)部電路構(gòu)造。一個完好的構(gòu)造體由兩個根本層次組成: 對數(shù)據(jù)類型、常數(shù)、信號、子程序和元件等元素的信號聲明部分。 描畫實體邏輯行為的,以各種不同的描畫風(fēng)格表達的功能描畫語句。.結(jié)構(gòu)體構(gòu)造圖.1. 構(gòu)造體的普通語句格式 構(gòu)造體的語句格式如下: ARCHITECTURE 構(gòu)造體名 OF 實體名
20、 IS 信號聲明語句; -為內(nèi)部信號稱號及類型聲明 BEGIN 功能描畫語句 END ARCHITECTURE 構(gòu)造體名;其中,實體名必需是所在設(shè)計實體的名字,而構(gòu)造體名可以由設(shè)計者本人選擇,但當(dāng)一個實體具有多個構(gòu)造體時,構(gòu)造體的取名不可反復(fù)。例如 設(shè)a、b是或非門的輸入端口,z是輸出端口,y是構(gòu)造體內(nèi)部信號,那么用VHDL描畫的兩輸入端或非門的構(gòu)造體為: ARCHITECTURE nor1 OF templ IS SIGNAL y: STD_LOGIC; BEGIN y=a OR b; -構(gòu)造體功能描畫語句 z=NOT y; END ARCHITECTURE nor1;. 2構(gòu)造體闡明語句
21、構(gòu)造體中的闡明語句是對構(gòu)造體的功能描畫語句中將要用到的信號(SIGNAL)、數(shù)據(jù)類型(TYPE)、常數(shù)(CONSTANT)、元件(COMPONENT)、函數(shù)(FUNCTION)和過程(PROCEDURE)等加以闡明的語句。 但在一個構(gòu)造體中闡明和定義的數(shù)據(jù)類型、常數(shù)、元件、函數(shù)和過程只能用于這個構(gòu)造體中,假設(shè)希望其能用于其他的實體或構(gòu)造體中,那么需求將其作為程序包來處置。. 3功能描畫語句構(gòu)造 功能描畫語句構(gòu)造含有五種不同類型,以并行方式任務(wù)。在每一語句構(gòu)造的內(nèi)部能夠含有并行運轉(zhuǎn)的邏輯描畫語句或順序運轉(zhuǎn)的邏輯描畫語句。 各語句構(gòu)造的根本組成和功能分別是: (1) 塊語句(BLOCK)是由一系列
22、并行執(zhí)行語句構(gòu)成的組合體,它的功能是將構(gòu)造體中的并行語句組成一個或多個模塊。 (2) 進程語句(PROCESS)定義順序語句模塊,用以將從外部獲得的信號值,或內(nèi)部的運算數(shù)據(jù)向其他的信號進展賦值。 (3) 信號賦值語句(賦值目的=表達式;)將設(shè)計實體內(nèi)的處置結(jié)果向定義的信號或界面端口進展賦值。 (4) 子程序調(diào)用語句用于調(diào)用一個已設(shè)計好的子程序。子程序有過程(PROCEDURE)和函數(shù)(FUNCTION)兩種類型。 (5) 元件例化(COMPONENT)語句對其他的設(shè)計實體作元件調(diào)用闡明,并將此元件的端口與其他的元件、信號或高層次實體的界面端口進展銜接。.例1: 半加器的描畫LIBRARY IE
23、EE; USE IEEE.STD_LOGIC_1164.ALL; -IEEE庫運用聲明ENTITY h_adder ISPORT(a,b:IN STD_LOGIC; -實體端口聲明 so,co:OUT STD_LOGIC);END h_adder;ARCHITECTURE ONE OF h_adder IS BEGIN so=a XOR b; -構(gòu)造體功能描畫語句 co=a AND b; END ARCHITECTURE ONE;.例2:2選1數(shù)據(jù)選擇器的描畫LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux21 ISPORT( a,b:
24、IN STD_LOGIC; s: IN STD_LOGIC; y: OUT STD_LOGIC);END mux21;ARCHITECTURE ONE OF mux21 IS BEGIN y=a WHEN s=0 ELSE b; END ARCHITECTURE ONE;.例3:鎖存器的描畫LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY latch1 ISPORT( d: IN STD_LOGIC; ena: IN STD_LOGIC; q:OUT STD_LOGIC);END latch1;ARCHITECTURE ONE OF latch1
25、IS BEGIN PROCESS(d,ena) BEGIN IF ena=1THEN q=d; END IF; END PROCESS;END ARCHITECTURE ONE;.例4 四位二進制加法計數(shù)器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY cnt4evhdl ISPORT( clk,ena:IN STD_LOGIC; cout:OUT STD_LOGIC; q:BUFFER INTEGER RANGE 0 TO 15);END cnt4evhdl;ARCHITECTURE one OF cnt4evhdl IS BEGIN PROC
26、ESS(clk,ena) BEGINIF clkEVENT AND CLK=1THEN IF ena=1THEN IF q=15 THEN q=0; cout=0; ELSIF q=14 THEN q=q+1; cout=1; ELSE qLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SLED7SNULL; END CASE; END PROCESS;END ARCHITECTURE one;.例6 奇偶校驗器的描畫LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.AL
27、L; ENTITY p_check ISPORT( a:IN STD_LOGIC_VECTOR(7 DOWNTO 0); y:OUT STD_LOGIC);END p_check; ARCHITECTURE one OF p_check IS BEGIN PROCESS(a) VARIABLE temp:STD_LOGIC; BEGIN temp:=0; FOR n IN 0 TO 7 LOOP temp:=temp XOR a(n); END LOOP; yb) THEN RETURN a; ELSE RETURN b; END IF; END max;END bpac1; 在設(shè)計實體中聲明
28、的數(shù)據(jù)類型、子程序或數(shù)據(jù)對象對于其他設(shè)計實體是不可再利用的。為了使已聲明的數(shù)據(jù)類型、子程序、元件能被其他設(shè)計實體調(diào)用或共享,可以把它們聚集在程序包中。包中可以有多個元件和函數(shù)。翻開bpac1程序包的語句為:USE work.bpac1.ALL 放在實體聲明前面函數(shù)調(diào)用語句 函數(shù)名 關(guān)聯(lián)參數(shù)表例如,調(diào)用求最大值函數(shù)的語句為: peak=max(data,peak);.元件例化語句第一步 設(shè)計二輸入與非門LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY nd2 ISPORT( a,b:IN STD_LOGIC; c:OUT STD_LOGIC);END
29、 nd2;ARCHITECTURE nd2behv OF nd2 IS BEGIN cc1,b=d1,c=y); -名字關(guān)聯(lián)方式 u3:nd2 PORT MAP(x,y,c=z1); -混合關(guān)聯(lián)方式END ord41behv;.3.2 VHDL言語要素3.2.1 VHDL文字規(guī)那么1.數(shù)字型文字1整數(shù)文字 整數(shù)文字由數(shù)字和下劃線組成。下劃線用來將數(shù)字分組,便于讀出。例:5,678,156E2,45_234_287相當(dāng)于(45,234,287)2實數(shù)文字 實數(shù)文字由數(shù)字、小數(shù)點和下劃線組成。例:188.993, 88_670_551.453_909相當(dāng)于(88,670,551.453,909).
30、3以數(shù)字基數(shù)表示的文字 以數(shù)字基數(shù)表示的文字的格式為: 數(shù)制#數(shù)值#例:10#170#; -十進制數(shù)值 16#FE#; -十六進制數(shù)值 2#11010001#; -二進制數(shù)值 8#376#; -八進制數(shù)字4物理量文字 表示時間、長度等物理量。例如,60s,100m。2.字符串文字 字符串文字包括字符和字符串。字符是以單引號括起來的數(shù)字、字母和符號。包括文字字符串和數(shù)值字符串。1文字字符串文字字符串是用雙引號括起來的一維字符數(shù)組。例:“ABC,“A BOY,“A都是文字字符串。.2數(shù)值字符串 數(shù)值字符串也叫做矢量,格式為 數(shù)制基數(shù)符號“數(shù)值字符串例:B111011110; -二進制數(shù)數(shù)組,位矢量
31、組長度是9 O15; -八進制數(shù)數(shù)組,等效B001101,位矢量組長度是6 XAD0; -十六進制數(shù)數(shù)組,等效B101011010000,位矢量組長度是12 B、O、X分別是二進制、八進制、十六進制基數(shù)符號。3.標識符 標識符是用戶給常量、變量、信號、端口、子程序或參數(shù)定義的名字。標識符的命名規(guī)那么是:以字母開頭,后跟假設(shè)干字母、數(shù)字或單個下劃線構(gòu)成,但最后不能為下劃線。例: h_adder, mux21, example為合法標識符; 2adder, _mux21, ful_adder, adder_ 為錯誤的標識符。4.下標名 下標名用于指示數(shù)組型變量或信號的某一元素。下標名的格式為:標識
32、符表達式例:b(3), a(m)都是下標名。.5.段名段名是多個下標名的組合。段名的格式為:標識符表達式 方向 表達式例:D(7 DOWNTTO 0); -可表示數(shù)據(jù)總線D7D0D(0 TO 7); -可表示數(shù)據(jù)總線D0D VHDL數(shù)據(jù)對象 VHDL數(shù)據(jù)對象包括變量、常量和信號。1.變量 變量(VARIABLE)是一個部分量。只能在進程(PROCESS)、函數(shù)(FUNCTION)和過程(PROCEDURE)中聲明和運用。變量不能將信息帶出對它定義的當(dāng)前設(shè)計單元。變量賦值的數(shù)據(jù)傳輸是立刻發(fā)生的,不存在延時。 變量要聲明后才干運用,變量聲明的語法格式為: VARIABLE 變量名:數(shù)
33、據(jù)類型:=初始值;例:VARIABLE a:INTEGER; -a為整型變量 VARIABLE b:INTEGER:=2; -b賦初值2 變量賦值語句的語法格式為: 目的變量名:=表達式例: VARIABLE a,b:BIT_VECTOR(0 TO 7); VARIABLE x,y:INTEGER; x:=100; a:=“1010101 y:=15+x; a(3 TO 6):=(1,1,0,1); a(0 TO 5):=b(2 TO 7);.2.信號 信號是描畫硬件系統(tǒng)的根本數(shù)據(jù)對象。不僅可以包容當(dāng)前值,也可以堅持歷史值,類似于連線。信號聲明語句的語法格式為:SIGNAL 信號名:數(shù)據(jù)類型:
34、=初值;SIGNAL temp:STD_LOGIC:=0; -temp為規(guī)范邏輯位信號 初值為0SIGNAL flaga,flagb:BIT; -flaga,flagb為位信號SIGNAL data:STD_LOGIC_VECTOR(15 DOWNTO 0); -data為規(guī)范邏輯位矢量,矢量長度為16信號的賦值語句格式為:目的信號名=表達式例:x=9; z=x AFTER 5ns; -目的信號需求一定延遲時間,設(shè)置延遲5ns信號與變量是有區(qū)別的。變量在進程、函數(shù)和過程中聲明,信號在構(gòu)造體中聲明。變量用“:=號賦值,無延遲時間,而信號用“=賦值,賦值過程有延遲時間。信號賦初值的符號是“:=。.
35、3.常數(shù)常數(shù)的聲明格式為:CONSTANT 常數(shù)名:數(shù)據(jù)類型:=初值;例: CONSTANT fbus:BIT_VECTOR:=“010111; CONSTANT Vcc:REAL:=5.0; CONSTANT delay:TIME:25ns;3.2.3 VHDL數(shù)據(jù)類型1.BOOLEAN(布爾)數(shù)據(jù)類型 FALSE假和 TRUE真,以枚舉類型預(yù)定義,定義語句為: TYPE BOOLEAN IS (FALSE,TRUE);2.BIT位數(shù)據(jù)類型 位數(shù)據(jù)類型包括0和1,定義語句為: TYPE BIT IS (0,1);3.BIT_VECTOR 位矢量是用雙引號括起來的數(shù)字序列,如“0011,X00
36、FD等。定義語句為: TYPE BIT_VECTOR IS ARRAY (Natural Range) OF BIT;其中,表示數(shù)據(jù)范圍未定界。在運用位矢量時,必需注明位寬,例如:SIGNAL a:BIT_VECTOR (7 DOWNTO 0);4.CHARACTER字符數(shù)據(jù)類型 字符是用單引號括起來的ASCII碼字符,如A,a,定義語句為: Z TYPE CHARACTER IS (NUL,SOH,);.5.INTEGER整數(shù)數(shù)據(jù)類型整數(shù)包括正整數(shù)、負整數(shù)和零。整數(shù)是32位的帶符號數(shù)。6.NATURAL自然數(shù)和POSITIVE正整數(shù)數(shù)據(jù)類型自然數(shù)是整數(shù)的一個子集,包括0和正整數(shù)。7.REAL
37、實數(shù)數(shù)據(jù)類型實數(shù)由正、負、小數(shù)點和數(shù)字組成,例如,-1.0,+2.5,-1.0E38都是實數(shù)。8.STRING字符串?dāng)?shù)據(jù)類型字符串是用雙引號括起來的字符序列,也稱字符串矢量或字符串?dāng)?shù)組。例如,A BOY.,1010011等是字符串。9.TIME時間數(shù)據(jù)類型時間是物理量數(shù)據(jù),由整數(shù)數(shù)據(jù)和單位兩部分組成。定義語句為:TYPE TIME IS RANGE -2147483647 TO 21474836 IEEE預(yù)定義的規(guī)范邏輯位和矢量1.STD_LOGIC規(guī)范邏輯位數(shù)據(jù)類型 在VHDL中,規(guī)范邏輯位數(shù)據(jù)有九種邏輯值: U未初始化的、 X強未知的、 0強0、 1強1、 Z高阻態(tài)、 W弱
38、未知的、 L弱0、 H弱1和-忽略。它們在STD_LOGIC_1164程序包中的定義語句:TYPE STD_LOGIC IS (U,X,0,1,Z,W,L,H,-);留意:STD_LOGIC數(shù)據(jù)類型中的數(shù)據(jù)是用大寫字母定義的。2. STD_LOGIC_VECTOR規(guī)范邏輯矢量數(shù)據(jù)類型 規(guī)范邏輯矢量數(shù)據(jù)在數(shù)字電路中常用于表示總線。它們在STD_LOGIC_1164程序包中的定義語句:TYPE STD_LOGIC_VECTOR IS ARRAY(Natural Range ) OF STD_LOGIC;.3.2.6 VHDL操作符 VHDL的操作符包括邏輯操作符(Logic Operator)、關(guān)
39、系操作符(Relational Operator) 、算術(shù)操作符(Arithmetic Operator)和符號操作符(Sign Operator)四類。類型操作符功能操作數(shù)數(shù)據(jù)類型算術(shù)操作符+加整數(shù)-減整數(shù)&并一維數(shù)組*乘整數(shù)和實數(shù)/除整數(shù)和實數(shù)MOD取模整數(shù)REM求余整數(shù)SLL邏輯左移BIT或布爾型一維數(shù)組SRL邏輯右移BIT或布爾型一維數(shù)組SLA算術(shù)左移BIT或布爾型一維數(shù)組SRA算術(shù)右移BIT或布爾型一維數(shù)組ROL邏輯循環(huán)左移BIT或布爾型一維數(shù)組ROR邏輯循環(huán)右移BIT或布爾型一維數(shù)組*乘方整數(shù)ABS取絕對值整數(shù).類型操作符功能操作數(shù)數(shù)據(jù)類型關(guān)系操作符=等于任何數(shù)據(jù)類型/=不等于任何
40、數(shù)據(jù)類型大于枚舉與整數(shù)及對應(yīng)的一維數(shù)組=大于等于枚舉與整數(shù)及對應(yīng)的一維數(shù)組邏輯操作符AND與BIT、BOOLEAN、STD_LOGICOR或BIT、BOOLEAN、STD_LOGICNAND與非BIT、BOOLEAN、STD_LOGICNOR或非BIT、BOOLEAN、STD_LOGICXOR異或BIT、BOOLEAN、STD_LOGICNXOR異或非BIT、BOOLEAN、STD_LOGICNOT非BIT、BOOLEAN、STD_LOGIC符號操作符+正整數(shù)-負整數(shù).留意:1要遵照在根本操作符間操作數(shù)是同數(shù)據(jù)類型的規(guī)那么。2要遵照操作數(shù)的數(shù)據(jù)類型必需與操作符要求的數(shù)據(jù)類型完全一致。3包含多種
41、操作符的表達式中,需求用括號將這些運算分組。例如(a OR b)XOR c4在VHDL中有并置運算操作符“&,它用來完成一維數(shù)組的位擴展。例如,將一維數(shù)組s1,s2擴展為二維數(shù)組的語句是:s=s1&s2。.3.3 VHDL的順序語句 VHDL的根本描畫語句包括順序語句(Sequential Statements)和并行語句(Concurrent Statements)。 順序語句只能出如今進程(PROCESS)、過程(PROCEDURE)和函數(shù)(FUNCTION)中,按照程序書寫的順序自上而下、一條一條地執(zhí)行。順序語句可以描畫數(shù)字邏輯系統(tǒng)中的組合邏輯電路和時序邏輯電路。 VHDL的順序語句有賦
42、值語句、流程控制語句、等待語句、子程序調(diào)用語句、前往語句和空操作語句等六類。.3.3.1 賦值語句1.變量賦值語句變量賦值語句的格式為:目的變量名:=賦值源表達式例如 x:=5.0。2.信號賦值語句信號賦值語句的格式為:目的信號名=賦值源例如 y=1。 信號賦值語句可以出如今進程或構(gòu)造體中,假設(shè)出如今進程或子程序中那么是順序語句,假設(shè)出如今構(gòu)造體中那么是并行語句。 對于數(shù)組元素賦值,可以采用以下格式: SIGNAL a,b:STD_LOGIC_VECTOR(1 TO 4); a=“1101 -為信號a整體賦值 a(1 TO 2)=“10; -為信號a中的部分位賦值 a(1 TO 2)=b(2
43、TO 3);.3.3.2 流程控制語句 流程控制語句有IF語句、CASE語句、LOOP語句、NEXT語句和EXIT語句五種。1.IF語句格式1為: IF 條件句 Then 順序語句; END IF;格式2為: IF 條件句 Then 順序語句; ELSE 順序語句; END IF;格式3 為: IF 條件句 Then 順序語句; ELSEIF 條件句 Then 順序語句; ELSE 順序語句; END IF; IF語句中至少應(yīng)有1個條件語句,條件句必需由BOOLEAN表達式構(gòu)成。 IF語句根據(jù)條件句產(chǎn)生的判別結(jié)果TRUE或FALSE,有條件的選擇執(zhí)行其后的順序語句。.例:圖示硬件電路的VHDL
44、言語描畫:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY control1 ISPORT( a,b,c:IN BOOLEAN; y:OUT BOOLEAN);END control1;ARCHITECTURE example5 OF control1 IS BEGIN PROCESS(a,b,c) VARIABLE n:BOOLEAN; BEGIN IF a THEN n:=b; ELSE n:=c; END IF; y=n; END PROCESS;END example5;Y=ac+ab.輸入輸出a0 a1 a2 a3 a4 a5 a6 a7
45、y2 y1 y0 x x x x x x x 0 x x x x x x 0 1 x x x x x 0 1 1 x x x x 0 1 1 1 x x x 0 1 1 1 1 x x 0 1 1 1 1 1 x 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0例:8線-3線優(yōu)先編碼器的設(shè)計。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY coder ISPORT( a:IN STD_LOGIC_VECTOR(7 DOWNTO 0); y:O
46、UT STD_LOGIC_VECTOR(2 DOWNTO 0);END coder;ARCHITECTURE example6 OF coder IS BEGIN PROCESS(a) BEGIN IF (a(7)=0) THEN y=“111; ELSEIF (a(7)=0) THEN y=“111; ELSEIF (a(6)=0) THEN y=“110; ELSEIF (a(5)=0) THEN y=“101; ELSEIF (a(4)=0) THEN y=“100; ELSEIF (a(3)=0) THEN y=“011; ELSEIF (a(2)=0) THEN y=“010; EL
47、SEIF (a(1)=0) THEN y=“001; ELSEIF (a(0)=0) THEN y=“000; ELSE y=“000; END IF; END PROCESS;END example6;.2.CASE語句用CASE語句描畫4選1數(shù)據(jù)選擇器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux41 ISPORT( s1,s2:IN STD_LOGIC; a,b,c,d:IN STD_LOGIC; z:OUT STD_LOGIC);END mux41;ARCHITECTURE example7 OF mux41 ISSIGNAL s
48、: STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN szzzz不是操作符,起到“THEN的作用。 WHEN OTHERS=z=X; -當(dāng)s的值不是選擇值時, z做未知處置 END CASE; END PROCESS;END example7;s1 s2z0 00 11 01 1abcd.3.LOOP語句 LOOP是循環(huán)語句,可以使一組順序語句反復(fù)執(zhí)行,執(zhí)行的次數(shù)由設(shè)定的循環(huán)參數(shù)確定。 LOOP語句有3種格式,每種格式都可以用“標號來給語句定位,但也可以不運用,用方括號將“標號括起來,表示它為任選項。1FOR_LOOP語句例:8位奇偶校驗器的描畫LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY p_check ISPORT( a:IN STD_LOGIC_VECTOR(7 DOWNTO 0); y:OUT STD_LOGIC);END p_check ;ARCHITECTURE example8 OF p_check IS BEGIN PROCESS(a)
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 污水課程設(shè)計紫外消毒
- 數(shù)字電路ic課程設(shè)計
- 教育培訓(xùn)行業(yè)教學(xué)方法培訓(xùn)體驗
- 電子課程設(shè)計網(wǎng)課答案
- 稅務(wù)工作總結(jié)制度建設(shè)與規(guī)范化監(jiān)督
- 急救護理工作總結(jié)
- 貸款經(jīng)理工作總結(jié)
- 電信通訊科技行業(yè)技術(shù)分析
- 旅游行業(yè)促銷活動總結(jié)
- 酒店用品銷售工作總結(jié)
- 遼海版六年級音樂上冊第8單元《3. 演唱 姐妹們上場院》教學(xué)設(shè)計
- 形勢任務(wù)教育宣講材料第一講——講上情
- 物業(yè)安全員考核實施細則
- 中國地質(zhì)大學(xué)(武漢)教育發(fā)展基金會籌備成立情況報告
- 第四章破產(chǎn)法(破產(chǎn)法)教學(xué)課件
- PE拖拉管施工方案標準版
- 7725i進樣閥說明書
- 鐵路建設(shè)項目施工企業(yè)信用評價辦法(鐵總建設(shè)〔2018〕124號)
- 時光科技主軸S系列伺服控制器說明書
- 無機非金屬材料專業(yè) 畢業(yè)設(shè)計論文 年產(chǎn)240萬平方米釉面地磚陶瓷工廠設(shè)計
- 社會組織績效考核管理辦法
評論
0/150
提交評論