




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1VHDLVHDL程序的常用語句程序的常用語句 5.3 VHDL5.3 VHDL并行語句(并行語句(Concurrent Statements) 并行語句是指語句的執(zhí)行順序與語句的書寫順序無關(guān),其執(zhí)行是并發(fā)執(zhí)并行語句是指語句的執(zhí)行順序與語句的書寫順序無關(guān),其執(zhí)行是并發(fā)執(zhí)行的語句,并行語句之間可以有信息的交流,也可以互為獨(dú)立、互不相關(guān)。行的語句,并行語句之間可以有信息的交流,也可以互為獨(dú)立、互不相關(guān)。每一個(gè)并發(fā)描述語句的內(nèi)部語句可以有兩種不同的運(yùn)行方式,即并行方式和每一個(gè)并發(fā)描述語句的內(nèi)部語句可以有兩種不同的運(yùn)行方式,即并行方式和順序方式。順序方式。VHDLVHDL結(jié)構(gòu)體中的并行語句主要有八種:
2、結(jié)構(gòu)體中的并行語句主要有八種:并行語句在結(jié)構(gòu)體中的使用格式如下:并行語句在結(jié)構(gòu)體中的使用格式如下: ARCHITECTURE ARCHITECTURE 結(jié)構(gòu)體名結(jié)構(gòu)體名 OFOF 實(shí)體名實(shí)體名 ISIS 說明語句說明語句; BEGINBEGIN 并行語句并行語句; END ARCHITECTURE END ARCHITECTURE 結(jié)構(gòu)體名結(jié)構(gòu)體名; 1 1、進(jìn)程語句進(jìn)程語句 2 2、塊語句、塊語句 3 3、并行信號賦值語句并行信號賦值語句 4 4、并行過程調(diào)用語句、并行過程調(diào)用語句 5 5、并行斷言語句、并行斷言語句 6 6、類屬語句、類屬語句 7 7、元件例化語句元件例化語句 8 8、生成
3、語句、生成語句 2并行語句運(yùn)行示意圖并行語句運(yùn)行示意圖塊語句塊語句并行語句并行語句并行語句順序語句1順序語句2 . 順序語句n進(jìn)程語句進(jìn)程語句生生成成語語句句信號信號元元件件例例化化語語句句并并行行過過程程調(diào)調(diào)用用語語句句并并行行信信號號賦賦值值語語句句信號信號信號信號信號信號信號信號ARCHITECTUREEND ARCHITECTURE35.3.1 5.3.1 進(jìn)程語句進(jìn)程語句( (Process Statement) )1. 1. 進(jìn)程語句格式進(jìn)程語句格式 PROCESSPROCESS語句結(jié)構(gòu)的一般表達(dá)格式如下:語句結(jié)構(gòu)的一般表達(dá)格式如下:一個(gè)結(jié)構(gòu)體中可以有多個(gè)進(jìn)程語句,同時(shí)并行執(zhí)行。一
4、個(gè)結(jié)構(gòu)體中可以有多個(gè)進(jìn)程語句,同時(shí)并行執(zhí)行。 進(jìn)程標(biāo)號進(jìn)程標(biāo)號: : PROCESSPROCESS ( ( 敏感信號參數(shù)表敏感信號參數(shù)表 ) ) ISIS 進(jìn)程說明部分;進(jìn)程說明部分; BEGINBEGIN 順序描述語句;順序描述語句; END PROCESSEND PROCESS 進(jìn)程標(biāo)號進(jìn)程標(biāo)號; ; 4ENTITY mul IS PORT (a, b, c, x, y : IN BIT; data_out : OUT BIT);END mul;ARCHITECTURE ex OF mul IS SIGNAL temp : BIT; BEGIN p_a: PROCESS (a, b, x)
5、 BEGIN IF (x = 0) THEN temp = a; ELSE temp = b; END IF; END PROCESS p_a; p_b: PROCESS(temp, c, y) BEGIN IF (y = 0) THEN data_out = temp; ELSE data_out = c; END IF; END PROCESS p_b;END ex;例:例:2選選12選選1abcxytempdata_out52.2.進(jìn)程語句要點(diǎn)進(jìn)程語句要點(diǎn)進(jìn)程的設(shè)計(jì)需要注意的問題:進(jìn)程的設(shè)計(jì)需要注意的問題: PROCESS PROCESS為一無限循環(huán)語句,為一無限循環(huán)語句,只有兩種狀態(tài):
6、執(zhí)行和等待只有兩種狀態(tài):執(zhí)行和等待 進(jìn)程必須由敏感信號的變化(變量不能作為敏感信號)來啟動或具有進(jìn)程必須由敏感信號的變化(變量不能作為敏感信號)來啟動或具有一個(gè)顯式的一個(gè)顯式的waitwait語句來激勵語句來激勵 使用了敏感表的進(jìn)程不能再含有等待語句使用了敏感表的進(jìn)程不能再含有等待語句 進(jìn)程語句本身是并行語句,但其內(nèi)部則為順序語句進(jìn)程語句本身是并行語句,但其內(nèi)部則為順序語句 信號是多個(gè)進(jìn)程間的通信線,是進(jìn)程間進(jìn)行聯(lián)系的重要途徑信號是多個(gè)進(jìn)程間的通信線,是進(jìn)程間進(jìn)行聯(lián)系的重要途徑 在任一進(jìn)程的說明部分不能定義信號在任一進(jìn)程的說明部分不能定義信號 一個(gè)進(jìn)程中只允許描述對應(yīng)于一個(gè)時(shí)鐘信號的同步時(shí)序邏
7、輯一個(gè)進(jìn)程中只允許描述對應(yīng)于一個(gè)時(shí)鐘信號的同步時(shí)序邏輯 進(jìn)程可以描述組合電路,最重要的是用它設(shè)計(jì)時(shí)序電路進(jìn)程可以描述組合電路,最重要的是用它設(shè)計(jì)時(shí)序電路6進(jìn)程工作原理示意圖進(jìn)程工作原理示意圖75.3.35.3.3并行信號賦值語句并行信號賦值語句( (Concurrent Signal Assignment Statement) ) 例如:例如: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY and_gate IS PORT ( a,b : IN STD_LOGIC ; c : OUT STD_LOGIC); END and_gate; AR
8、CHITECTURE behave OF and_gate IS BEGIN c = a AND b ; END ARCHITECTURE behave;(1 1)簡單信號賦值語句的格式:)簡單信號賦值語句的格式: 賦值目標(biāo)賦值目標(biāo) = = 表達(dá)式表達(dá)式; ; 結(jié)構(gòu)體中的多條并發(fā)賦值語句是并行執(zhí)行的。結(jié)構(gòu)體中的多條并發(fā)賦值語句是并行執(zhí)行的。8(2 2) 條件信號賦值語句條件信號賦值語句( (Conditional Signal Assignment) )條件信號賦值語句的表達(dá)方式如下:條件信號賦值語句的表達(dá)方式如下:賦值目標(biāo)賦值目標(biāo) = = 表達(dá)式表達(dá)式 WHEN WHEN 條件條件1 1 E
9、LSEELSE 表達(dá)式表達(dá)式 WHEN WHEN 條件條件2 2 ELSEELSE . . 表達(dá)式表達(dá)式 ;條件信號賦值語句的幾點(diǎn)說明:條件信號賦值語句的幾點(diǎn)說明:1 1)只有當(dāng)條件滿足時(shí),才能將該條件前面表達(dá)式的值賦給)只有當(dāng)條件滿足時(shí),才能將該條件前面表達(dá)式的值賦給目標(biāo)信號;目標(biāo)信號;2 2)對條件的判斷是有順序的,條件)對條件的判斷是有順序的,條件1 1具有最高的優(yōu)先級;具有最高的優(yōu)先級;3 3)條件表達(dá)式的值應(yīng)該是布爾型數(shù)值;)條件表達(dá)式的值應(yīng)該是布爾型數(shù)值;4 4)條件的最后一個(gè)表達(dá)式不含有)條件的最后一個(gè)表達(dá)式不含有when when 的子句。的子句。5 5)條件信號賦值語句允許條
10、件重疊。)條件信號賦值語句允許條件重疊。9例:例:ENTITY mux IS PORT ( a,b,c : IN BIT ; p1,p2 : IN BIT ; z : OUT BIT ); END mux; ARCHITECTURE behv OF mux IS BEGIN z = a WHEN p1 = 1 ELSE -注意,第一句具有最高優(yōu)先級注意,第一句具有最高優(yōu)先級 b WHEN p2 = 1 ELSE c ; END;10library ieee;use ieee.std_logic_1164.all;entity p_encoder isport(i:in std_logic_ve
11、ctor(7 downto 0);a:out std_logic_vector(2 downto 0);end;architecture behv of p_encoder isbegina=111 when i(7)=1 else110 when i(6)=1 else101 when i(5)=1 else100 when i(4)=1 else011 when i(3)=1 else010 when i(2)=1 else001 when i(1)=1 else000 when i(0)=1 else111 ;end;例:例:8 8輸入優(yōu)先編碼器輸入優(yōu)先編碼器11(3 3) 選擇信號賦值
12、語句選擇信號賦值語句( (Selected Signal Assignment) ) 選擇信號賦值語句的格式如下:選擇信號賦值語句的格式如下: WITH WITH 選擇表達(dá)式選擇表達(dá)式 SELECTSELECT 賦值目標(biāo)信號賦值目標(biāo)信號 = = 表達(dá)式表達(dá)式1 1 WHEN WHEN 選擇值選擇值1 1, 表達(dá)式表達(dá)式2 2 WHEN WHEN 選擇值選擇值2 2, . . 表達(dá)式表達(dá)式n n WHEN WHEN 選擇值選擇值n n; 選擇信號賦值語句中也有敏感量,即關(guān)鍵字選擇信號賦值語句中也有敏感量,即關(guān)鍵字WITHWITH旁邊的選旁邊的選擇信號表達(dá)式,每當(dāng)選擇表達(dá)式的值發(fā)生變化時(shí),就啟動此
13、語擇信號表達(dá)式,每當(dāng)選擇表達(dá)式的值發(fā)生變化時(shí),就啟動此語句對各子句的選擇值同時(shí)進(jìn)行測試對比,沒有優(yōu)先級之分,若句對各子句的選擇值同時(shí)進(jìn)行測試對比,沒有優(yōu)先級之分,若有滿足條件的子句時(shí),就將此子句表達(dá)式中的值賦給賦值目標(biāo)有滿足條件的子句時(shí),就將此子句表達(dá)式中的值賦給賦值目標(biāo)信號。信號。 12例:例:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY decoder IS PORT ( a, b, c : IN STD_LOGIC; data1,data2 : IN STD_LOGIC; dataout : OUT STD_LOGIC );END dec
14、oder;ARCHITECTURE cont OF decoder IS SIGNAL instruction : STD_LOGIC_VECTOR(2 DOWNTO 0) ; BEGIN instruction = c & b & a ; WITH instruction SELECT dataout = data1 AND data2 WHEN “000”, -注意,每句最后使用逗號注意,每句最后使用逗號 data1 OR data2 WHEN 001 , data1 NAND data2 WHEN 010 , data1 NOR data2 WHEN “011” , data1 XOR
15、data2 WHEN “100” , data1 XNOR data2 WHEN 101 , Z WHEN OTHERS ; -最后一句是分號最后一句是分號END cont ;13 WITH selt SELECTmuxout = 連接端口名,連接端口名,.) ;例化名例化名n n :元件名:元件名n n PORT MAPPORT MAP( 端口名端口名= = 連接端口名,連接端口名,.) ; 15例:按下圖電路,使用元件例化語句設(shè)計(jì)一個(gè)全加器例:按下圖電路,使用元件例化語句設(shè)計(jì)一個(gè)全加器=1=1 & &1COUTu5 cinbau4u3u2u1I2I1SUMI016程序程序1 1:調(diào)用庫中的
16、元件例化,并使用名稱關(guān)聯(lián)方式調(diào)用庫中的元件例化,并使用名稱關(guān)聯(lián)方式library ieee;use ieee.std_logic_1164.all;entity fadd isport(a,b,cin:in std_logic;sum,cout:out std_logic);end;17ARCHITECTURE fadd_struc OF fadd IS COMPONENT and2 PORT (in1,in2: in std_logic; out: out std_logic); END COMPONENT; COMPONENT or2 PORT (in1,in2: in std_logic
17、; out: out std_logic); END COMPONENT; COMPONENT xor PORT (in1,in2: in std_logic; out: out std_logic); END COMPONENT;SIGNAL i0, i1, i2: std_logic; BEGIN18 u1: xor PORT MAP (in1=a, in2 =b, out =i0); u2: and2 PORT MAP (in1=a, in2 =b, out =i1); u3: xor PORT MAP (in1=i0, in2=cin, out=sum); u4: and2 PORT
18、MAP (in1=i0, in2=cin, out=i2); u5: or2 PORT MAP (in1=i1, in2=i2, out=cout);END fadd_struc; =1=1&1COUTu5 cinbau4u3u2u1I2I1SUMI019ARCHITECTURE fadd_struc OF fadd IS COMPONENT and2 PORT (in1,in2: in std_logic; out: out std_logic); END COMPONENT; COMPONENT or2 PORT (in1,in2: in std_logic; out: out std_l
19、ogic); END COMPONENT; COMPONENT xor PORT (in1,in2: in std_logic; out: out std_logic); END COMPONENT;SIGNAL i0, i1, i2: std_logic; BEGIN u1: xor PORT MAP (a, b, i0); u2: and2 PORT MAP (a, b, i1); u3: xor PORT MAP (i0, cin, sum); u4: and2 PORT MAP (i0, cin, i2); u5: or2 PORT MAP (i1, i2, cout);END fad
20、d_struc; 程序程序2 2:調(diào)用庫中的元件例化,并使用位置關(guān)聯(lián)方式調(diào)用庫中的元件例化,并使用位置關(guān)聯(lián)方式=1=1&1COUTu5 cinbau4u3u2u1I2I1SUMI020ARCHITECTURE fadd_struc OF fadd IS COMPONENT and2a PORT (x,y: in std_logic; z: out std_logic); END COMPONENT; COMPONENT or2a PORT (x,y: in std_logic; z: out std_logic); END COMPONENT; COMPONENT xor2 PORT (x,y
21、: in std_logic; z: out std_logic); END COMPONENT;SIGNAL i0, i1, i2: std_logic; BEGIN u1: xor2 PORT MAP (a, b, i0); u2: and2a PORT MAP (a, b, i1); u3: xor2 PORT MAP (i0, cin, sum); u4: and2a PORT MAP (i0, cin, i2); u5: or2a PORT MAP (i1, i2, cout);END fadd_struc; 程序程序3 3:調(diào)用自己設(shè)計(jì)的元件例化,并使用位置關(guān)聯(lián)方式調(diào)用自己設(shè)計(jì)的元
22、件例化,并使用位置關(guān)聯(lián)方式=1=1&1COUTu5 cinbau4u3u2u1I2I1SUMI021library ieee;use ieee.std_logic_1164.all;entity and2a isport (x,y:in std_logic;z:out std_logic);end;architecture beh of and2a isbeginz=x and y;end;library ieee;use ieee.std_logic_1164.all;entity or2a isport (x,y:in std_logic;z:out std_logic);end;arch
23、itecture beh of or2a isbeginz=x or y;end;library ieee;use ieee.std_logic_1164.all;entity xor2 isport (x,y:in std_logic;z:out std_logic);end;architecture beh of xor2 isbeginz=x xor y;end;225.3.65.3.6類屬(類屬(Generic)語句)語句 ENTITY ENTITY 實(shí)體名實(shí)體名 ISIS GENERIC GENERIC (類屬表);類屬表); PORTPORT (端口表);端口表); END ENT
24、ITYEND ENTITY 文件名;文件名; 類屬語句用于不同層次之間的信息傳遞類屬語句用于不同層次之間的信息傳遞,類屬參量是一類屬參量是一種端口界面常數(shù),常以一種說明的形式放在實(shí)體或塊結(jié)構(gòu)種端口界面常數(shù),常以一種說明的形式放在實(shí)體或塊結(jié)構(gòu)體前的說明部分。類屬和常數(shù)不同,常數(shù)只能從設(shè)計(jì)實(shí)體體前的說明部分。類屬和常數(shù)不同,常數(shù)只能從設(shè)計(jì)實(shí)體的內(nèi)部得到賦值,且不能再改變,而類屬的值可以從設(shè)計(jì)的內(nèi)部得到賦值,且不能再改變,而類屬的值可以從設(shè)計(jì)實(shí)體的外部提供。因此設(shè)計(jì)者可以從外面通過類屬參量重實(shí)體的外部提供。因此設(shè)計(jì)者可以從外面通過類屬參量重新設(shè)定新設(shè)定,從而容易的改變一個(gè)設(shè)計(jì)實(shí)體或一個(gè)元件的內(nèi)部電從
25、而容易的改變一個(gè)設(shè)計(jì)實(shí)體或一個(gè)元件的內(nèi)部電路結(jié)構(gòu)和規(guī)模。路結(jié)構(gòu)和規(guī)模。23 類屬語句包括類屬語句包括類屬說明語句類屬說明語句和和類屬映射語句類屬映射語句,書寫,書寫格式分別為:格式分別為: 類屬說明語句的一般格式:類屬說明語句的一般格式: GENERIC GENERIC (常數(shù)名:數(shù)據(jù)類型(常數(shù)名:數(shù)據(jù)類型 := =設(shè)定值設(shè)定值 ; 常數(shù)名:數(shù)據(jù)類型常數(shù)名:數(shù)據(jù)類型 := =設(shè)定值設(shè)定值 ););類屬映射語句的一般格式:類屬映射語句的一般格式: GENERIC MAP GENERIC MAP (類屬表)(類屬表)24library ieee;use ieee.std_logic_1164.al
26、l;entity fredevider isgeneric(n:integer:=4);port(clkin:in std_logic;clkout:out std_logic);end;Generic應(yīng)用舉例應(yīng)用舉例1 1:25architecture beh of fredevider issignal counter:integer range 0 to n;signal clk:std_logic;beginprocess(clkin)beginif rising_edge(clkin) thenif counter=n thenclk=not clk;counter=0;elseco
27、unter=counter+1;end if;end if;end process;clkout1) port map(clk,clk1);u2:fredevider generic map(n=4) port map(clk,clk2);u3:a_21mux port map(sel,clk1,clk2,clkout);end;U1U2U3285.3.85.3.8生成語句生成語句 (Generate Statement) 生成語句的主要功能是能夠進(jìn)行復(fù)制,簡化有規(guī)則設(shè)計(jì)結(jié)構(gòu)的邏輯描述。生成語句的主要功能是能夠進(jìn)行復(fù)制,簡化有規(guī)則設(shè)計(jì)結(jié)構(gòu)的邏輯描述。 生成語句的語句格式有如下兩種形式:生成語句
28、的語句格式有如下兩種形式:forfor語句形式語句形式 和和 IFIF語句形式語句形式標(biāo)號:標(biāo)號: ForFor 循環(huán)變量循環(huán)變量 ININ 取值范圍取值范圍 GenerateGenerate 說明語句說明語句 并行語句并行語句 End GenerateEnd Generate 標(biāo)號標(biāo)號 ; 對于對于forfor語句的結(jié)構(gòu),主要用來描述設(shè)計(jì)中的一些有規(guī)律的單元結(jié)構(gòu)。語句的結(jié)構(gòu),主要用來描述設(shè)計(jì)中的一些有規(guī)律的單元結(jié)構(gòu)。 生成參數(shù)(循環(huán)變量)是自動產(chǎn)生的,它是一個(gè)局部變量,根據(jù)取值范生成參數(shù)(循環(huán)變量)是自動產(chǎn)生的,它是一個(gè)局部變量,根據(jù)取值范圍自動遞增或遞減。取值范圍的語句格式,有兩種形式:圍
29、自動遞增或遞減。取值范圍的語句格式,有兩種形式: 表達(dá)式表達(dá)式 TO TO 表達(dá)式表達(dá)式 ; - ; - 遞增方式,如遞增方式,如 1 1 TO 5TO 5 表達(dá)式表達(dá)式 DOWNTO DOWNTO 表達(dá)式表達(dá)式 ; - ; - 遞減方式,如遞減方式,如 5 5 DOWNTO 1DOWNTO 1 其中的表達(dá)式必須是整數(shù)。其中的表達(dá)式必須是整數(shù)。 29 對于對于if if 語句的結(jié)構(gòu),主要用來描述設(shè)計(jì)中不規(guī)則的單元語句的結(jié)構(gòu),主要用來描述設(shè)計(jì)中不規(guī)則的單元結(jié)構(gòu),如某些邊界條件的特殊性。該語句中,若條件為真,結(jié)構(gòu),如某些邊界條件的特殊性。該語句中,若條件為真,則執(zhí)行生成語句中的并行語句,若為假則不
30、執(zhí)行該語句。則執(zhí)行生成語句中的并行語句,若為假則不執(zhí)行該語句。 標(biāo)號:標(biāo)號:IFIF 條件條件 GenerateGenerate 說明說明 并行語句并行語句 End GenerateEnd Generate 標(biāo)號標(biāo)號 ;30兩種格式都由四部分組成:兩種格式都由四部分組成:(1 1)生成方式:有)生成方式:有forfor和和ifif語句結(jié)構(gòu),規(guī)定并行語句的語句結(jié)構(gòu),規(guī)定并行語句的 復(fù)制方式復(fù)制方式(2 2)說明部分:對數(shù)據(jù)類型和數(shù)據(jù)對象等進(jìn)行一些說明)說明部分:對數(shù)據(jù)類型和數(shù)據(jù)對象等進(jìn)行一些說明(3 3)并行語句:是復(fù)制的基本單元)并行語句:是復(fù)制的基本單元(4 4)標(biāo)號:標(biāo)號是必須的)標(biāo)號:標(biāo)
31、號是必須的下面是使用生成語句產(chǎn)生的下面是使用生成語句產(chǎn)生的8 8個(gè)相同的電路模塊的示例個(gè)相同的電路模塊的示例31 COMPONENT comp PORT ( INPUT : IN STD_LOGIC ; OUTPUT : OUT STD_LOGIC ); END COMPONENT ; SIGNAL a : STD_LOGIC_VECTOR(0 TO 7); SIGNAL b : STD_LOGIC_VECTOR(0 TO 7); gen : FOR i IN aRANGE GENERATE - aRANGEaRANGE為數(shù)據(jù)區(qū)間類屬性為數(shù)據(jù)區(qū)間類屬性 u1: comp PORT MAP (I
32、NPUT=a(i),OUTPUT=b(i); 名稱映射名稱映射 END GENERATE gen; .C O M PI N P U TO U T P U TC O M PI N P U TO U T P U TC O M PI N P U TO U T P U Ta 0 b 0 a 1 b 1 a 7 b 7 . . .32LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Latch_1 IS PORT( D : IN STD_LOGIC; ENA : IN STD_LOGIC; Q : OUT STD_LOGIC );END ENTITY Lat
33、ch_1 ;ARCHITECTURE one OF Latch_1 IS SIGNAL sig_save : STD_LOGIC; BEGIN PROCESS (D, ENA) BEGIN IF ENA = 1 THEN sig_save = D ; END IF ; Q = sig_save ; END PROCESS ;END ARCHITECTURE one; 下面為使用元件例化語句和下面為使用元件例化語句和FOR_GENERATEFOR_GENERATE語句完成一個(gè)語句完成一個(gè)8 8位三位三態(tài)鎖存器的設(shè)計(jì)的例子態(tài)鎖存器的設(shè)計(jì)的例子1. 1. 設(shè)計(jì)底層的設(shè)計(jì)底層的1 1位鎖存器:位鎖存器
34、:332. 2. 設(shè)計(jì)頂層的設(shè)計(jì)頂層的8 8位鎖存器位鎖存器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SN74373 IS PORT ( D : IN STD_LOGIC_VECTOR( 8 DOWNTO 1 ); OEN ,G : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(8 DOWNTO 1); END ENTITY SN74373; ARCHITECTURE one OF SN74373 IS COMPONENT Latch_1 PORT ( D, ENA : IN STD_LOGIC; Q : O
35、UT STD_LOGIC ); END COMPONENT; SIGNAL sig_mid : STD_LOGIC_VECTOR( 8 DOWNTO 1 ); BEGIN GeLatch : FOR i IN 1 TO 8 GENERATE Latchx : Latch_1 PORT MAP (D(i),G,sig_mid(i); -位置映射位置映射 END GENERATE; Q = sig_mid WHEN OEN = 0 ELSE ZZZZZZZZ; -當(dāng)當(dāng)OEN=1時(shí),時(shí),Q(8)-Q(1)輸出狀態(tài)呈高阻態(tài)輸出狀態(tài)呈高阻態(tài)END ARCHITECTURE one; 345.4 5.4
36、順序語句(順序語句(Sequential Statements) 順序語句和并行語句是順序語句和并行語句是VHDLVHDL中的兩大基本描述語句系列。中的兩大基本描述語句系列。順序語句的特點(diǎn):順序語句的特點(diǎn):n 語句的執(zhí)行和書寫順序相同。語句的執(zhí)行和書寫順序相同。n 順序語句只能應(yīng)用在進(jìn)程和子程序中。順序語句只能應(yīng)用在進(jìn)程和子程序中。VHDLVHDL中常用的幾種順序描述語句:中常用的幾種順序描述語句:l 信號賦值語句(信號賦值語句(signal assignment statements) =l 變量賦值語句(變量賦值語句(variable assignment statements) :=:=
37、l wait wait語句語句l if if 語句語句l case case 語句語句l looploop語句語句l nextnext語句語句l exitexit語句語句-綜合器不支持綜合器不支持l null null 語句語句l return return 語句語句-綜合器不支持綜合器不支持l 斷言(斷言(assertionassertion)語句)語句-仿真時(shí)用仿真時(shí)用355.4.2 if5.4.2 if語句語句(If Statements)ifif語句是一種條件語句,其基本結(jié)構(gòu)有四種:語句是一種條件語句,其基本結(jié)構(gòu)有四種:1.1.ifif 條件句條件句 thenthen 順序語句;順序語
38、句; end ifend if;2.2.ifif 條件句條件句 thenthen 順序語句;順序語句; elseelse 順序語句;順序語句; end ifend if; 4.4.ifif 條件句條件句 thenthen ifif 條件句條件句 thenthen end ifend if; end ifend if;3.3.ifif 條件句條件句 thenthen 順序語句;順序語句; elsifelsif 條件句條件句 thenthen 順序語句;順序語句; elseelse 順序語句;順序語句; end ifend if;361.1.ifif 條件句條件句 thenthen 順序語句;順序
39、語句; end ifend if;注意:沒有注意:沒有ELSE的的IF語句,屬于不完備的語句,屬于不完備的IF語句,語句,在綜合時(shí)一般會生成一個(gè)時(shí)序電路。在綜合時(shí)一般會生成一個(gè)時(shí)序電路。 library ieee;use ieee.std_logic_1164.all;entity dff1 is port ( d,clk:in std_logic; q:out std_logic);end dff1;architecture rtl of dff1 isbegin process(clk) begin if clk event and clk=1 then q=d; end if;end p
40、rocess;end rtl;例:例:D D觸發(fā)器觸發(fā)器372.2.ifif 條件句條件句 thenthen 順序語句;順序語句; elseelse 順序語句;順序語句; end ifend if; 注意:有注意:有ELSE的的IF語句,在綜合時(shí)一般會生成一語句,在綜合時(shí)一般會生成一個(gè)二選一的組合電路。個(gè)二選一的組合電路。 library ieee;use ieee.std_logic_1164.all;entity mux2 isport ( a,b,sel :in std_logic; c:out std_logic);end mux2;architecture rtl of mux2 i
41、sbegin process(a,b,sel)begin if sel=1 then c=a; else c=b; end if;end process;end rtl;例:例:2 2選選1 1數(shù)據(jù)選擇器數(shù)據(jù)選擇器383.3.ifif 條件句條件句 thenthen 順序語句;順序語句; elsifelsif 條件句條件句 thenthen 順序語句;順序語句; elseelse 順序語句;順序語句; end ifend if; 這種多選擇控制的這種多選擇控制的IFIF語句,它設(shè)置了多個(gè)條件,當(dāng)滿足所設(shè)的多語句,它設(shè)置了多個(gè)條件,當(dāng)滿足所設(shè)的多個(gè)條件之一時(shí),就執(zhí)行該條件后的順序語句,并不再判斷
42、其它條件,個(gè)條件之一時(shí),就執(zhí)行該條件后的順序語句,并不再判斷其它條件,直接結(jié)束直接結(jié)束ifif語句的執(zhí)行。當(dāng)所設(shè)置的條件都不滿足時(shí),程序執(zhí)行語句的執(zhí)行。當(dāng)所設(shè)置的條件都不滿足時(shí),程序執(zhí)行elseelse和和end ifend if之間的順序語句。之間的順序語句。 此語句用于有優(yōu)先級的條件判斷,因此各條件式中的條件可以重此語句用于有優(yōu)先級的條件判斷,因此各條件式中的條件可以重疊。如果所需判斷的條件沒有優(yōu)先級的差別,且條件之間沒有重疊的疊。如果所需判斷的條件沒有優(yōu)先級的差別,且條件之間沒有重疊的情況,建議使用情況,建議使用casecase語句。語句。 39例:四選一的數(shù)據(jù)選擇器。例:四選一的數(shù)據(jù)選
43、擇器。 library ieee;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_1164.all;entity mux4 isentity mux4 isport (input:in std_logic_vector(3 downto 0);port (input:in std_logic_vector(3 downto 0); sel:in std_logic_vector(1 downto 0); sel:in std_logic_vector(1 downto 0); y: out std_logic); y: o
44、ut std_logic);end mux4;end mux4;architecture rtl of mux4 isarchitecture rtl of mux4 isbeginbeginprocess(sel,input)process(sel,input)40beginbegin ifif sel=“00” sel=“00” thenthen y=input(0); y=input(0); elsifelsif sel=“01” sel=“01” thenthen y=input(1); y=input(1); elsifelsif sel=“10” sel=“10” thenthen
45、 y=input(2); y=input(2); elseelse y=input(3) y=input(3); end if;end if;end process;end process;end rtl;end rtl;41例:用例:用IFIF語句設(shè)計(jì)一個(gè)語句設(shè)計(jì)一個(gè)3838譯碼器。譯碼器。 LIBRARY IEEE;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_1164.ALL;ENTITY decode3_8 ISENTITY decode3_8 IS PORT ( a,b,c: IN STD_LOGIC; POR
46、T ( a,b,c: IN STD_LOGIC; y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END decode3_8;END decode3_8;ARCHITECTURE one OF decode3_8 ISARCHITECTURE one OF decode3_8 ISSIGNAL comb: STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL comb: STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINBEGIN comb=c & b & a;
47、 comb=c & b & a;42process(comb)process(comb)beginbegin ifif comb=“000” comb=“000” then then y=“11111110”y=“11111110”; elsifelsif comb=“001” comb=“001” then then y=“11111101” y=“11111101”; elsifelsif comb=“010” comb=“010” thenthen y=“11111011” y=“11111011”; elsif elsif comb=“011” comb=“011” thenthen
48、y=“11110111” y=“11110111”; elsifelsif comb=“100” comb=“100” thenthen y=“11101111” y=“11101111”; elsifelsif comb=“101” comb=“101” thenthen y=“11011111” y=“11011111”; elsifelsif comb=“110” comb=“110” then then y=“10111111” y=“10111111”; elsifelsif comb=“111” comb=“111” then then y=“01111111 y=“0111111
49、1” ; elseelse y=“11111111” y=“11111111”; end if;end if;end process;end process;end one;end one;43LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY coder IS PORT ( din : IN STD_LOGIC_VECTOR(0 TO 7); output : OUT STD_LOGIC_VECTOR(2 TO 0) );END coder;ARCHITECTURE behav OF coder IS BEGIN PROCESS (din) BEG
50、IN IF (din(7)=0) THEN output = 000 ; ELSIF (din(6)=0) THEN output = 001 ; ELSIF (din(5)=0) THEN output = 010 ; ELSIF (din(4)=0) THEN output = 011 ; ELSIF (din(3)=0) THEN output = 100 ; ELSIF (din(2)=0) THEN output = 101 ; ELSIF (din(1)=0) THEN output = 110 ; ELSE output = 111 ; END IF ; END PROCESS
51、; END behav;例:優(yōu)先編碼器描述例:優(yōu)先編碼器描述444.4.ifif 條件句條件句 thenthen ifif 條件句條件句 thenthen end ifend if; end ifend if;IfIf語句可以嵌套,但層數(shù)不宜過多。語句可以嵌套,但層數(shù)不宜過多。45library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter10 isport(en,reset,clk:in std_logic;q:buffer std_logic_vector(3 downto
52、0);co:out std_logic);end counter10;architecture behav of counter10 isbeginprocess(clk,reset,en)beginif reset=1 thenq=0000;elsif clkevent and clk=1 thenif en=1 thenif q1001 then q=q+1;else q=0000;end if;end if;end if;end process;co= 順序語句;順序語句; When When 選擇值選擇值 = 順序語句;順序語句; . . When Others= When Other
53、s= 順序語句;順序語句; END CASEEND CASE ;選擇值可以有四種不同的表達(dá)方式:選擇值可以有四種不同的表達(dá)方式: 單個(gè)普通數(shù)值,如單個(gè)普通數(shù)值,如6 6。 數(shù)值選擇范圍,如數(shù)值選擇范圍,如(2 TO 4)(2 TO 4),表示取值為,表示取值為2 2、3 3或或4 4。 并列數(shù)值,如并列數(shù)值,如3 3 5 5,表示取值為,表示取值為3 3或者或者5 5。 WHEN OTHERSWHEN OTHERS, CASE CASE語句也只能在進(jìn)程中使用,當(dāng)執(zhí)行到語句也只能在進(jìn)程中使用,當(dāng)執(zhí)行到CASECASE語句時(shí),首先計(jì)語句時(shí),首先計(jì)算算CASECASE和和ISIS之間的表達(dá)式的值,然
54、后根據(jù)條件語句中與之相對應(yīng)的之間的表達(dá)式的值,然后根據(jù)條件語句中與之相對應(yīng)的選擇值來執(zhí)行相應(yīng)的順序語句,最后結(jié)束選擇值來執(zhí)行相應(yīng)的順序語句,最后結(jié)束CASECASE語句。語句。47使用使用CASE CASE 語句需要注意:語句需要注意:(1 1)條件句的取值必須在表達(dá)式的取值范圍之內(nèi);)條件句的取值必須在表達(dá)式的取值范圍之內(nèi);(2 2)除非所有條件句中的選擇值能完整覆蓋)除非所有條件句中的選擇值能完整覆蓋CASECASE語句中的所有語句中的所有表達(dá)式的取值表達(dá)式的取值, ,否則最后一個(gè)條件句中的選擇值必須為否則最后一個(gè)條件句中的選擇值必須為OTHERSOTHERS;(3 3)CASECASE語句的每一條件句的取值只能出現(xiàn)一次,不能有相同語句的每一條件句的取值只能出現(xiàn)一次,不能有相同選擇值的條件句的出現(xiàn);選擇值的條件句的出現(xiàn);(4 4)CASECASE語句執(zhí)行中必須選中且只能選擇一個(gè)條件句,這表明語句執(zhí)行中必須選中且只能選擇一個(gè)條件句,這表明CASECASE語句至少要包含一個(gè)條件句。語句至少要包含一個(gè)條件句。48例:例:3-83-8譯碼器譯碼器 library ieee; use ieee.std_logic_1164.all; entity decoder is port(a,b,c,G1,G2A,G2B : in std_logic; y: out
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業(yè)育嬰指導(dǎo)試題及答案總結(jié)
- 海洋資源開發(fā)現(xiàn)狀分析-試題及答案
- 2024年注會考試反饋試題及答案
- 巧記2024年人力資源管理師試題及答案
- 北師大版七年級上冊第3課《傳說時(shí)代的文明曙光》教學(xué)設(shè)計(jì)
- 黑龍江生態(tài)工程職業(yè)學(xué)院《文化原典研讀(Ⅱ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 黑龍江省佳木斯中學(xué)2025屆高三第六次考試英語試題含解析
- 黑龍江省雙鴨山市友誼縣2024-2025學(xué)年數(shù)學(xué)五年級第二學(xué)期期末經(jīng)典試題含答案
- 黑龍江省哈爾濱市名校2025年高三年級調(diào)研測試(生物試題)試卷含解析
- 黑龍江省哈爾濱市阿城區(qū)朝鮮族中學(xué)2025屆初三教學(xué)質(zhì)量檢測試題含解析
- 帶押過戶申請書
- 臨邊防護(hù)安全培訓(xùn)課件
- 專題04-完形填空2023年高考英語三模試題分項(xiàng)匯編(新高考八省專用)-(原卷版)
- 詩詞接龍完整版本
- 上海市2024年中考英語試題及答案
- 房屋市政工程生產(chǎn)安全重大事故隱患判定標(biāo)準(zhǔn)(2024版)宣傳畫冊
- 湖北省黃岡八模2025屆高三第一次模擬考試數(shù)學(xué)試卷含解析
- 2024-2030年中國建筑垃圾處理行業(yè)發(fā)展分析及投資規(guī)劃研究報(bào)告
- DB11∕T 1842-2021 市政基礎(chǔ)設(shè)施工程門式和橋式起重機(jī)安全應(yīng)用技術(shù)規(guī)程
- 2025年湖北省武漢市高考數(shù)學(xué)模擬試卷附答案解析
- 部編版五年級語文上冊快樂讀書吧測試題及答案
評論
0/150
提交評論