第四講 并行語句._第1頁
第四講 并行語句._第2頁
第四講 并行語句._第3頁
第四講 并行語句._第4頁
第四講 并行語句._第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、VHDL并行語句并行語句 并行語句一般處于進(jìn)程(并行語句一般處于進(jìn)程(PROCESS)的外部。)的外部。 所有并行語句都是并行執(zhí)行的,所有并行語句都是并行執(zhí)行的, 并行語句特點(diǎn)并行語句特點(diǎn) a. 所有語句的執(zhí)行是并行的;所有語句的執(zhí)行是并行的; b. 每條語句的執(zhí)行和其所在的位置無關(guān);每條語句的執(zhí)行和其所在的位置無關(guān); c. 并行語句的輸出僅僅依賴于輸入,沒有其它的并行語句的輸出僅僅依賴于輸入,沒有其它的限制條件限制條件 基本的并行語句基本的并行語句(2)信號(hào)代入語句信號(hào)代入語句(3)進(jìn)程()進(jìn)程(Process)語句)語句(4)塊()塊(Block)語句)語句(6)元件()元件(Compon

2、ent)例化語句)例化語句(7)For-Generate語句語句(1)直接賦值語句:直接賦值語句:= 賦值運(yùn)算符賦值運(yùn)算符(5)子程序()子程序(Procedure/Function)Procedure/Function)一、直接賦值語句:一、直接賦值語句:= 賦值運(yùn)算符賦值運(yùn)算符作用:直接對(duì)目標(biāo)對(duì)象進(jìn)行賦值操作。作用:直接對(duì)目標(biāo)對(duì)象進(jìn)行賦值操作。語法格式:語法格式:Signal_name=expression;如:如:Signal A,B: std_logic_vector(7 down to 0); A=“00000000”;B=“10000000”;我們也可以這樣賦值:我們也可以這樣賦值

3、: A0); 信號(hào)信號(hào)A的每一位的值都為的每一位的值都為0。 B0); 信號(hào)信號(hào)B的第一位為的第一位為1,其它位的值為,其它位的值為0。 2. 段賦值段賦值Signal c : std_logic_vector(1 to 4);c(1 to 2) =“10”;c(1 to 4) =“1010”;3. 塊賦值塊賦值Signal a,b,c,d : std_logic;Signal s : std_logic_vector(1 to 4);s = “0100” ;(a,b,c,d) = s ;位置關(guān)聯(lián)位置關(guān)聯(lián)一、一、例例: C1 = NOT (a AND b); C2 = b AND c;信號(hào)賦值

4、語句在進(jìn)程中使用是順序語句信號(hào)賦值語句在進(jìn)程中使用是順序語句,但是在但是在進(jìn)程外即在構(gòu)造體中使用就是并發(fā)語句。進(jìn)程外即在構(gòu)造體中使用就是并發(fā)語句。格式格式: 目的信號(hào)量目的信號(hào)量=信號(hào)量表達(dá)式信號(hào)量表達(dá)式下面舉一個(gè)應(yīng)用示例,如下面電路:下面舉一個(gè)應(yīng)用示例,如下面電路: 1 1A AB BC CD D用用VHDL對(duì)電路的描述如下:對(duì)電路的描述如下: library ieee;use ieee.std_logic_1164.all;Entity exam1 isport (a,b : in std_logic;c,d : out std_logic);End exam1;Architecture

5、m1 of exam1 isBegin c=a and b;d=a or b ;END m1;并行語句的輸出僅僅并行語句的輸出僅僅依賴于輸入,沒有其依賴于輸入,沒有其它的限制條件。它的限制條件。每條語句的執(zhí)行和其每條語句的執(zhí)行和其所在的位置無關(guān)。所在的位置無關(guān)。 二、條件式信號(hào)代入語句二、條件式信號(hào)代入語句:When-Else語法格式為:語法格式為: 賦值目標(biāo)賦值目標(biāo)= 表達(dá)式表達(dá)式1 When 賦值條件賦值條件 Else 表達(dá)式表達(dá)式2 When賦值條件賦值條件 Else 表達(dá)式表達(dá)式N; 在結(jié)構(gòu)體中的條件賦值語句的功能與在進(jìn)程中的在結(jié)構(gòu)體中的條件賦值語句的功能與在進(jìn)程中的IF語句語句相同,

6、相同,在執(zhí)行條件信號(hào)語句時(shí),每一賦值條件是按書寫在執(zhí)行條件信號(hào)語句時(shí),每一賦值條件是按書寫的先后關(guān)系測定的。的先后關(guān)系測定的。我們曾舉過一個(gè)二輸入的與門電路的例子:我們曾舉過一個(gè)二輸入的與門電路的例子: Library ieee;Use ieee.std_logic_1164.all;Entity and2 isPort(d1,d2 : in std_logic; op : out std_logic);End and2;Architecture m1 of and2 isBeginop= 1 when(d1=1 and d2=1)else 0;End m1;Library ieee;Use

7、ieee.std_logic_1164.all;Entity mux isPort(a,b,c : in bit; p1,p2 : in bit z : out bit);End and2;Architecture m1 of mux isBeginz= a when p1=1 else b when p2=1 else c;End m1;三、選擇式信號(hào)代入語句:三、選擇式信號(hào)代入語句:With-Select-WhenWith expression Select賦值目標(biāo)=表達(dá)式1 When constant_value1, 表達(dá)式2 When constant_value2, 表達(dá)式n Whe

8、n Others;選擇選擇式信號(hào)代入語句本身不能在進(jìn)程中應(yīng)用式信號(hào)代入語句本身不能在進(jìn)程中應(yīng)用, ,其功能與進(jìn)程中其功能與進(jìn)程中的的CASECASE語句相同。語句相同。例:不允許有重疊現(xiàn)象;必須含蓋所有條件例:不允許有重疊現(xiàn)象;必須含蓋所有條件Architecture m2 of and2 isSignal tmp : std_logic_vector(1 down to 0);Begintmp=d1 & d2;With tmp selectf=1 when “11”, 0 when others;End m2;例:例:When-else語句和語句和With-select-When語句的差別語

9、句的差別 兩個(gè)語句的關(guān)鍵不同是:兩個(gè)語句的關(guān)鍵不同是:對(duì)于條件的要求程度不同對(duì)于條件的要求程度不同,前者,前者 要求較松,后者要求嚴(yán)格。要求較松,后者要求嚴(yán)格。 a With-select-When語句中語句中When后的后的constant_value必須必須 是互不相同的;是互不相同的; b 而而When-else語句中語句中When后的后的logic_expression則不需要這樣則不需要這樣 的嚴(yán)格條件,因?yàn)槠涞膰?yán)格條件,因?yàn)槠鋀hen后的后的logic_expression的優(yōu)先權(quán)次序的優(yōu)先權(quán)次序 為由先到后排列。為由先到后排列。 進(jìn)程語句(進(jìn)程語句(process)Process

10、 語句的格式為:語句的格式為: 進(jìn)程標(biāo)號(hào)進(jìn)程標(biāo)號(hào): Process (敏感信號(hào)列表敏感信號(hào)列表) 變量聲明變量聲明Begin順序語句;順序語句;End Process 進(jìn)程標(biāo)號(hào)進(jìn)程標(biāo)號(hào);敏感表敏感表(Sensitivity list)包括進(jìn)程的一些信號(hào),當(dāng)敏感表中的某個(gè)包括進(jìn)程的一些信號(hào),當(dāng)敏感表中的某個(gè)信號(hào)變化時(shí)進(jìn)程才被激活,進(jìn)程內(nèi)的順序語句被執(zhí)行。當(dāng)進(jìn)程結(jié)束信號(hào)變化時(shí)進(jìn)程才被激活,進(jìn)程內(nèi)的順序語句被執(zhí)行。當(dāng)進(jìn)程結(jié)束時(shí),進(jìn)程內(nèi)的輸出信號(hào)值被更新,進(jìn)程進(jìn)入等待(睡眠)狀態(tài),直時(shí),進(jìn)程內(nèi)的輸出信號(hào)值被更新,進(jìn)程進(jìn)入等待(睡眠)狀態(tài),直到敏感表中的某一信號(hào)發(fā)生變化,進(jìn)程被再次激活。到敏感表中的某一

11、信號(hào)發(fā)生變化,進(jìn)程被再次激活。 下面舉一個(gè)應(yīng)用示例,如下面電路:下面舉一個(gè)應(yīng)用示例,如下面電路: 1 1A AB BC CD D用不同用不同VHDL語句語句對(duì)電路的描述如下:對(duì)電路的描述如下: library ieee;use ieee.std_logic_1164.all;Entity exam1 isPort (a,b : in std_logic;c,d : out std_logic);End exam1;Architecture m1 of exam1 isBegin c=a and b;d=a or b ;End m1;Architecture m2 of exam1 isbegi

12、nprocess (a, b)begin c=a and b; d= a or b ;end process;end m2;1 1A AB BC CD DArchitecture m2 of exam1 isbeginprocess (a, b)begin c=a and b; d= a or b ;end process;end m2;Architecture m3 of exam1 isbeginD1 :process (a, b)begin c=a and b;end process D1 ; D2:process (a, b)begin d= a or b ;end process D

13、2 ;end m3;1 1A AB BC CD D例:二選一電路例:二選一電路 ENTITY mux IS PORT (d0,d1,sel: IN BIT; q: OUT BIT); END mux; ARCHITECTURE connect OF mux IS SIGNAL tmp1,tmp2,tmp3: BIT; BEGIN cale: BLOCK BEGIN tmp1=d0 AND sel; tmp2=d1 AND (NOT sel); tmp3=tmp1 OR tmp2; q=tmp3; END BLOCK cale; END connect END connect; 子程序及其調(diào)用子

14、程序及其調(diào)用 (1) 子程序概述子程序概述(2)函數(shù))函數(shù)(Function)(3)過程()過程(Procedure)(4)子程序調(diào)用)子程序調(diào)用 子程序概述子程序概述子程序:在主程序調(diào)用它以后能將處理結(jié)果返子程序:在主程序調(diào)用它以后能將處理結(jié)果返回主程序的程序模塊?;刂鞒绦虻某绦蚰K。 子程序由順序語句構(gòu)成,用于完成重復(fù)性子程序由順序語句構(gòu)成,用于完成重復(fù)性的計(jì)算工作,的計(jì)算工作,子程序有兩種類型,即過程子程序有兩種類型,即過程(Procedure)和函數(shù)()和函數(shù)(Function)。子程序的)。子程序的使用方法只能通過子程序調(diào)用及與子程序的界使用方法只能通過子程序調(diào)用及與子程序的界面端口

15、進(jìn)行通信。每調(diào)用一次子程序都意味著面端口進(jìn)行通信。每調(diào)用一次子程序都意味著增加了一個(gè)硬件電路模塊,因此,在實(shí)際使用增加了一個(gè)硬件電路模塊,因此,在實(shí)際使用時(shí),要密切關(guān)注和嚴(yán)格控制子程序的調(diào)用次數(shù)。時(shí),要密切關(guān)注和嚴(yán)格控制子程序的調(diào)用次數(shù)。 函數(shù)函數(shù)(Function)函數(shù)首函數(shù)首Function 函數(shù)名 (參數(shù)表) Return 數(shù)據(jù)類型 IS 說明部分 Begin 順序語句 END Function 函數(shù)名;函數(shù)體函數(shù)體注注:參數(shù)表中參量可以是變量、信號(hào)、常數(shù)(默認(rèn))參數(shù)表中參量可以是變量、信號(hào)、常數(shù)(默認(rèn)) 無需定義參數(shù)的方向(默認(rèn)為無需定義參數(shù)的方向(默認(rèn)為“輸入輸入”)例例1Entit

16、y func IsPort ( a: in bit_vector (0 to 2) ; m : out bit_vector(0 to 2);End Entity func;Architecture demo Of func IsFunction sam ( x,y,z: bit) Return bit isBegin Return (x and y) or zEnd Function sam;BeginProcess (a)Beginm(0)=sam(a(0), a(1), a(2);m(1)=sam(a(2), a(0), a(1);m(2)Return “1100”;When “0101

17、”Return “1100”;When OthersReturn “1111”;End Case;End Function trans; 過程(過程(Procedure)過程首過程首Procedure 過程名 (參數(shù)表) IS 說明部分 Begin 順序語句 END Procedure 過程名;過程體過程體注注:參數(shù)表中參量可以是變量、信號(hào)、常數(shù)(默認(rèn))參數(shù)表中參量可以是變量、信號(hào)、常數(shù)(默認(rèn))參數(shù)的方向可以是參數(shù)的方向可以是 IN、OUT、INOUT例例Procedure prg1 (variable sel,value:inout bit_vector(0 to 3) ) ISBeginC

18、ase sel ISWhen “0000”valuevaluevaluey then tmp:=x;x:=y;y:=tmp;END IF;END SORT;Begin Process (a,b,c,d)Beginsort (a,c);sort (b,d);sort (a,b);sort (c,d);sort (b,c);END process;ra=a; rb=b;rc=c; rd=d;END muxes; 函數(shù)與過程對(duì)比函數(shù)與過程對(duì)比 v 過程可以返回多值,函數(shù)只能返回一過程可以返回多值,函數(shù)只能返回一個(gè)值。個(gè)值。v 過程的參數(shù)為過程的參數(shù)為IN、OUT、INOUT 函數(shù)的參數(shù)為函數(shù)的參數(shù)為

19、IN(默認(rèn)默認(rèn))。 函數(shù)和過程均能產(chǎn)生新的電路模塊。函數(shù)和過程均能產(chǎn)生新的電路模塊。 作用作用:為了方便電路描述,將具有某一邏輯功能的完整的VHDL 設(shè)計(jì)(元件)直接調(diào)用,避免重復(fù)描述。例例a1b1c1d1xz1u2u3y元件例化(元件例化(Component Instantiation)語句)語句 U1a1b1c1d1xz1u2u3ya1b1c1d1xz1u2u3ya1b1c1d1xz1u2u3yyabLibrary ieee;Use ieee.std_logic_1164.all;Entity nd2 isPort (a,b : in std_logic; c : out std_logi

20、c;);End nd2;Architecture ndbev of nd2Begin c 信號(hào)信號(hào)A1, 組件信號(hào)組件信號(hào)B=信號(hào)信號(hào)B1,);位置對(duì)應(yīng)方式位置對(duì)應(yīng)方式名字直接對(duì)應(yīng)名字直接對(duì)應(yīng)例例: : 設(shè)計(jì)一個(gè)一位全加器設(shè)計(jì)一個(gè)一位全加器F FA AC C0 0S SA AB BC Ci i被加數(shù)被加數(shù)加數(shù)加數(shù)低位進(jìn)位低位進(jìn)位和和進(jìn)位進(jìn)位ABCiSC00 00 00 00 00 00 00 01 11 10 00 01 10 01 10 00 01 11 10 01 11 10 00 0101 10 01 1011 11 10 0011 11 11 111輸出輸出輸入輸入Library ie

21、ee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Entity fulladder isPort (Ci : in std_logic; a,b : in std_logic; s : out std_logic; Co : out std_logic);End fulladder;Architecture m1 of fulladder isSignal tmp: std_logic_vector(1 downto 0); Begintmp=(0 & a)+b+ci;s=tmp(0);co=tmp(1);End m1

22、;F F A AS Sa ab bC C i iC C 0 0利用一位全加器元件的調(diào)用實(shí)現(xiàn)四位全加器: 利用一位全加器元件的調(diào)用實(shí)現(xiàn)四位全加器:利用一位全加器元件的調(diào)用實(shí)現(xiàn)四位全加器: F FA AS S3 3A A3 3B B3 3F FA AS S2 2A A2 2B B2 2F FA AS S1 1A A1 1B B1 1F FA AS S0 0A A0 0B B0 0C C4 4C Ci in nC C1 1C C1 1C C2 2C C2 2C C3 3C C3 3C C4 4F F A AS Sa ab bC C i iC C 0 0Library ieee;Use ieee.st

23、d_logic_1164.all;Use ieee.std_logic_unsigned.all;Entity adder isPort (Cin : in std_logic;x,y : in std_logic_vector(3 downto 0);sum : out std_logic_vector(3 downto 0);Cout : out std_logic);End adder;Architecture a of adder isSignal c: std_logic_vector(0 to 4);Component fulladderPort( ci,a,b : in std_

24、logic; s,co : out std_logic); end component;Beginc(0)=Cin;U1: fulladder Port map(c(0),x(0),y(0),sum(0),c(1);U2: fulladder Port map(c(1),x(1),y(1),sum(1),c(2);U3: fulladder Port map(c(2),x(2),y(2),sum(2),c(3);U4: fulladder Port map(c(3),x(3),y(3),sum(3),c(4);Coutc(0),a=x(0),b=y(0),s=sum(0),co=c(1);F

25、FA AS S3 3A A3 3B B3 3F FA AS S2 2A A2 2B B2 2F FA AS S1 1A A1 1B B1 1F FA AS S0 0A A0 0B B0 0C C4 4CinCinC C1 1C C1 1C C2 2C C2 2C C3 3C C3 3C C0 0U2: fulladder Port map(ci=c(1),a=x(1),b=y(1),s=sum(1),co=c(2);F FA AS S3 3A A3 3B B3 3F FA AS S2 2A A2 2B B2 2F FA AS S1 1A A1 1B B1 1F FA AS S0 0A A0 0

26、B B0 0C C4 4CinCinC C1 1C C1 1C C2 2C C2 2C C3 3C C3 3C C0 0U3: fulladder Port map(ci=c(2),a=x(2),b=y(2),s=sum(2),co=c(3);F FA AS S3 3A A3 3B B3 3F FA AS S2 2A A2 2B B2 2F FA AS S1 1A A1 1B B1 1F FA AS S0 0A A0 0B B0 0C C4 4CinCinC C1 1C C1 1C C2 2C C2 2C C3 3C C3 3C C0 0U4: fulladder Port map(ci=c(

27、3),a=x(3),b=y(3),s=sum(3),co=c(4);F FA AS S3 3A A3 3B B3 3F FA AS S2 2A A2 2B B2 2F FA AS S1 1A A1 1B B1 1F FA AS S0 0A A0 0B B0 0C C4 4CinCinC C1 1C C1 1C C2 2C C2 2C C3 3C C3 3C C0 0并行語句并行語句,元件同時(shí)產(chǎn)生元件同時(shí)產(chǎn)生(7)For-Generate語句作用:作用:For-Generate語句用于重復(fù)性的信號(hào)設(shè)置或重復(fù)性的元件例化。語句用于重復(fù)性的信號(hào)設(shè)置或重復(fù)性的元件例化。 上面的四位加法器可以這樣來實(shí)現(xiàn)

28、:上面的四位加法器可以這樣來實(shí)現(xiàn): For i In 0 to 3 GenerateBitadder: fulladder Port map(c(i),x(i),y(i),sum(i),c(i+1);End generate;元件例化循環(huán)管腳映射語句元件例化循環(huán)管腳映射語句GenericGeneric語句語句 通過引入一個(gè)參數(shù)通過引入一個(gè)參數(shù)n n使得我們設(shè)計(jì)的加法器更加具有使得我們設(shè)計(jì)的加法器更加具有通用性,參數(shù)通用性,參數(shù)n n代表加法器中相加的位數(shù),在代表加法器中相加的位數(shù),在VHDLVHDL中,這樣中,這樣的參數(shù)稱為的參數(shù)稱為GenericGeneric(類屬)(類屬)。 通常定義在實(shí)體描述和元件聲明中。通常定義在實(shí)體描述和元件聲明中。 定義格式:定

溫馨提示

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

評(píng)論

0/150

提交評(píng)論