版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1第四章第四章 VHDL的主要描述語句的主要描述語句2順序(順序(Sequential)描述語句)描述語句并發(fā)(并發(fā)(Concurrent)描述語句描述語句硬件執(zhí)行:并發(fā)執(zhí)行(硬件執(zhí)行:并發(fā)執(zhí)行(VHDL本質(zhì))本質(zhì))仿真執(zhí)行:順序執(zhí)行、并發(fā)執(zhí)行仿真執(zhí)行:順序執(zhí)行、并發(fā)執(zhí)行 ARCHITECTURE Process ProcessENTITYSequentialProcessCombinational Processportsportscomponent本章主要內(nèi)容本章主要內(nèi)容35.1 順序語句順序語句 順序描述語句順序描述語句: 執(zhí)行順序與執(zhí)行順序與書寫順序書寫順序一致,與傳統(tǒng)軟件設(shè)一致,與傳
2、統(tǒng)軟件設(shè)計語言的特點(diǎn)相似。計語言的特點(diǎn)相似。 順序語句只能用在順序語句只能用在進(jìn)程進(jìn)程與與子程序子程序中。中。 可描述可描述組合組合邏輯、邏輯、時序時序邏輯。邏輯。4 常用的順序描述語句常用的順序描述語句 賦值語句;賦值語句; ifif語句;語句; casecase語句;語句; looploop語句;語句; nextnext語句;語句; waitwait語句;語句; exitexit語句;語句; 子程序;子程序; returnreturn語句;語句; nullnull語句。語句。5一、對象與賦值語句一、對象與賦值語句 1 1、VHDLVHDL中常用的中常用的 5 5 種賦值對象種賦值對象 1
3、1)簡單名稱,如)簡單名稱,如 my_varmy_var; ; 2 2)索引名稱,如)索引名稱,如 my_array_var(3);my_array_var(3); 3 3)片斷名稱,如)片斷名稱,如 my_array_var(3 to 6);my_array_var(3 to 6); 4 4)記錄域名,如)記錄域名,如 my_record.a_field;my_record.a_field; 5 5)集合,如)集合,如(my_var1, my_var2)(my_var1, my_var2)。 所有對象均分為:所有對象均分為:變量和信號變量和信號 對象對象 := = 表達(dá)式;表達(dá)式; - -
4、變量賦值變量賦值 對象對象 = = 表達(dá)式;表達(dá)式; - - 信號賦值信號賦值 要求要求:表達(dá)式的值必須與對象的類型、寬度一:表達(dá)式的值必須與對象的類型、寬度一 致。致。62、變量賦值與信號賦值、變量賦值與信號賦值 變量與信號的差異變量與信號的差異: 1 1)賦值方式的不同:)賦值方式的不同: 變量:變量:= = 表達(dá)式;表達(dá)式; 信號信號 = = 表達(dá)式;表達(dá)式; 2 2)硬件實現(xiàn)的功能不同:)硬件實現(xiàn)的功能不同: 信號信號代表電路單元、功能模塊間的互代表電路單元、功能模塊間的互聯(lián),代表實際的硬件連線;聯(lián),代表實際的硬件連線; 變量變量代表電路單元內(nèi)部的操作,代表代表電路單元內(nèi)部的操作,代表
5、暫暫 存的臨時數(shù)據(jù)。存的臨時數(shù)據(jù)。73 3)有效范圍不同:)有效范圍不同: 信號信號:程序包、實體、結(jié)構(gòu)體:程序包、實體、結(jié)構(gòu)體-全局量。全局量。 變量變量:進(jìn)程、子程序:進(jìn)程、子程序-局部量。局部量。 ARCHITECTURE SIGNAL Declarationslabel1: PROCESSVARIABLE Declarationslabel2: PROCESSVARIABLE Declarations84 4)賦值行為的不同:)賦值行為的不同: 信號賦值延遲更新數(shù)值、時序電路;信號賦值延遲更新數(shù)值、時序電路; 變量賦值立即更新數(shù)值、組合電路。變量賦值立即更新數(shù)值、組合電路。5 5)信號
6、的多次賦值)信號的多次賦值 a. a. 一個進(jìn)程:最后一次賦值有效一個進(jìn)程:最后一次賦值有效 b. b. 多個進(jìn)程:多源驅(qū)動多個進(jìn)程:多源驅(qū)動 線與、線或、三態(tài)線與、線或、三態(tài)9例:信號的多次賦值例:信號的多次賦值 architecture rtl of ex is signal a : std_logic;begin process() begin a = b; a = c; end process;end rtl;architecture rtl of ex is signal a : std_logic;begin process() begin a = b; end process;
7、process() begin a = c; . end process;end ex;10例:信號賦值與變量賦值的比較例:信號賦值與變量賦值的比較 信號賦值信號賦值: architecture rtlarchitecture rtl of sig is of sig is signal a,b : std_logic; - signal a,b : std_logic; - 定義信號定義信號 begin begin process(a, b) process(a, b) begin begin a = b ; a = b ; b = a ; b = a ; end process ; end
8、 process ; end rtl end rtl ; - ; - 結(jié)果是結(jié)果是 a a 和和 b b 的的值互換值互換11 變量賦值變量賦值: architecture rtl of vararchitecture rtl of var is is begin begin process process variable a,b:std_logic; - variable a,b:std_logic; - 定義變量定義變量 beginbegin a := b ; a := b ; b := a ; b := a ; end process ; end process ; end rtl e
9、nd rtl; ; - - 結(jié)果是結(jié)果是a a和和b b的值都等于的值都等于b b的初值的初值 12二、轉(zhuǎn)向控制二、轉(zhuǎn)向控制語句語句 轉(zhuǎn)向控制語句通過轉(zhuǎn)向控制語句通過條件控制開關(guān)條件控制開關(guān)決定是否執(zhí)決定是否執(zhí)行一條或幾條語句,或重復(fù)執(zhí)行一條或幾條語句,行一條或幾條語句,或重復(fù)執(zhí)行一條或幾條語句,或跳過一條或幾條語句。或跳過一條或幾條語句。 分為五種:分為五種: if if 語句語句 case case 語句語句 loop loop 語句語句 next next 語句語句 exit exit 語句語句131、if 語句語句 if if 語句執(zhí)行一序列的語句,其次序依賴于一語句執(zhí)行一序列的語句,
10、其次序依賴于一個或多個條件的值。個或多個條件的值。 1 1)if if 語句的門閂控制語句的門閂控制 例:例:if (enaif (ena = 1) then = 1) then q = d q = d; end ifend if; 綜合后生成鎖存器(綜合后生成鎖存器(latchlatch)if 條件條件 then 順序處理語句;順序處理語句;end if ;14條件改為時鐘沿,則生成條件改為時鐘沿,則生成 D D觸發(fā)器觸發(fā)器:152 2)if if 語句的二選擇控制語句的二選擇控制 格式:格式: 用條件來選擇兩條不同程序執(zhí)行的路徑。用條件來選擇兩條不同程序執(zhí)行的路徑。if 條件條件 then
11、 順序處理語句;順序處理語句;else 順序處理語句;順序處理語句;end if ;16舉例:典型二選一電路舉例:典型二選一電路 architecture rtlarchitecture rtl of mux2 is of mux2 is begin begin process(a, b, sel process(a, b, sel) ) begin begin if (sel if (sel = 1) then = 1) then y = a ; y = a ; else else y = b ; y = b ; end if ; end if ; end process ; end pro
12、cess ; end rtl end rtl ; ;173 3)if if 語句的多選擇控制語句的多選擇控制 if if 語句的多選擇控制又稱為語句的多選擇控制又稱為 if if 語句的語句的嵌套嵌套。 格式:格式: if 條件條件 then 順序處理語句;順序處理語句;elsif 條件條件 then 順序處理語句;順序處理語句; elsif 條件條件 then 順序處理語句;順序處理語句;else 順序處理語句;順序處理語句;end if; 18舉例:典型多選一舉例:典型多選一( (四選一四選一) )電路。電路。19說明說明: if_then_elsifif_then_elsif 語句中隱含
13、了語句中隱含了優(yōu)先級別優(yōu)先級別的判斷,的判斷,最先出現(xiàn)的條件優(yōu)先級最高,可用于設(shè)計具有優(yōu)先最先出現(xiàn)的條件優(yōu)先級最高,可用于設(shè)計具有優(yōu)先級的電路。如級的電路。如8-38-3優(yōu)先級編碼器。優(yōu)先級編碼器。 library ieee; use ieee.std_logic_1164.all; entity coder is port(input: in std_logic_vector(7 downto 0); output: out std_logic_vector(2 downto 0); end coder;(待續(xù))20 architecture art of coder is begin pr
14、ocess(input) begin if input(7)=0 then output=“000”; elsif input(6)=0 then output=“001”; elsif input(5)=0 then output=“010”; elsif input(4)=0 then output=“011”; (待續(xù)) 21 elsif input(3)=0 then output=“100”; elsif input(2)=0 then output=“101”; elsif input(1)=0 then output=“110”; else output 順序處理語句順序處理語句
15、1; when 分支分支條件條件 = 順序處理語句順序處理語句2; when 分支分支條件條件 = 順序處理語句順序處理語句n; end case;23分支條件的形式分支條件的形式: when when 值值 = = 順序處理語句;順序處理語句; when when 值值 to to 值值 = = 順序處理語句;順序處理語句; when when 值值| |值值| |值值| | |值值 = = 順序處理語句;順序處理語句;以上三種方式的混合;以上三種方式的混合; when others = when others = 順序處理語句;順序處理語句;24Case Case 語句使用注意語句使用注意
16、: 1 1)分支)分支條件的值條件的值必須在表達(dá)式的取值范圍內(nèi)。必須在表達(dá)式的取值范圍內(nèi)。 2 2)兩個分支條件)兩個分支條件不能重疊不能重疊。 3 3)CASECASE語句執(zhí)行時必須選中,且只能語句執(zhí)行時必須選中,且只能選中一選中一 個個分支條件。分支條件。 4 4)如果沒有)如果沒有othersothers分支條件分支條件存在,則分支條存在,則分支條 件必須覆蓋表達(dá)式所有可能的值。件必須覆蓋表達(dá)式所有可能的值。 對對std_logicstd_logic, std_logic_vector, std_logic_vector數(shù)據(jù)類型數(shù)據(jù)類型要特別注意使用要特別注意使用othersothers
17、分支條件。分支條件。2526舉例:舉例:case case 語句的誤用語句的誤用 signal value:integer range 0 to 15;signal value:integer range 0 to 15; signal out_1 : bit ; signal out_1 : bit ;case value is - 缺少缺少 when條件條件語句語句end case ;case value is - 分支條件不包含分支條件不包含2到到15 when 0 = out_1 out_1 out_1 out_1 = 0 ;end case ;27舉例:根據(jù)輸入確定輸出值舉例:根據(jù)輸
18、入確定輸出值 library ieeelibrary ieee; ; use ieee.std_logic_1164.all; use ieee.std_logic_1164.all; entity mux41 is entity mux41 is port(s4,s3,s2,s1: in std_logic; port(s4,s3,s2,s1: in std_logic; z4,z3,z2,z1: out std_logic); z4,z3,z2,z1: out std_logic); end mux41; end mux41; architecture art of mux41 is ar
19、chitecture art of mux41 is begin begin process(s4, s3, s2, s1) process(s4, s3, s2, s1) variable sel variable sel: integer range 0to15;: integer range 0to15; begin begin sel sel:=0; :=0; (待續(xù))28 if s1=1 then sel if s1=1 then sel:=sel+1; end :=sel+1; end if;if; if s2=1 then sel if s2=1 then sel:=sel+2;
20、 end :=sel+2; end if;if; if s3=1 then sel if s3=1 then sel:=sel+4; end :=sel+4; end if;if; if s4=1 then sel if s4=1 then sel:=sel+8; end :=sel+8; end if;if; z1=0; z2=0; z3=0; z1=0; z2=0; z3=0; z4=0;z4z1z1z2z2z3z3z4z410; exit L2 when a 10; end loop L2; end loop L2; 312 2)for for loop loop 語句語句特點(diǎn):特點(diǎn):
21、循環(huán)變量是循環(huán)變量是 loop loop 內(nèi)部內(nèi)部自動聲明自動聲明的的局部量,局部量, 僅在僅在 loop loop 內(nèi)可見內(nèi)可見;不需要指定其變化方式;不需要指定其變化方式。 離散范圍必須是可計算的離散范圍必須是可計算的整數(shù)范圍整數(shù)范圍: 整數(shù)表達(dá)式整數(shù)表達(dá)式 to to 整數(shù)表達(dá)式整數(shù)表達(dá)式 整數(shù)表達(dá)式整數(shù)表達(dá)式 downtodownto 整數(shù)表達(dá)式整數(shù)表達(dá)式 標(biāo)號標(biāo)號:for 循環(huán)變量循環(huán)變量 in 離散范圍離散范圍 loop 順序處理語句;順序處理語句; end loop 標(biāo)號標(biāo)號;32舉例:舉例:8 8位奇偶校驗電路(位奇偶校驗電路(forfor循環(huán)語句)循環(huán)語句)-奇校驗338 8
22、位奇校驗電路仿真結(jié)果:位奇校驗電路仿真結(jié)果:34將變量將變量tmptmp的初值改為的初值改為00,則為偶校驗電路:,則為偶校驗電路:353 3)while while loop loop 語句語句 例:例:sum:=0;sum:=0; i:=0; i:=0; abcd abcd: while (i10) loop: while (i10) loop sum:=sum+i; sum:=sum+i; i:=i+1; i:=i+1; end loop abcd end loop abcd; ; 注:注:循環(huán)變量循環(huán)變量 i i 需事先定義、賦初值,并指定需事先定義、賦初值,并指定 其變化方式其變化方
23、式。一般綜合工具。一般綜合工具不支持不支持 while while loop loop 語句。語句。標(biāo)號標(biāo)號:while 循環(huán)循環(huán)條件條件 loop 順序處理語句;順序處理語句; end loop 標(biāo)號標(biāo)號;36舉例:舉例:8 8位奇偶校驗電路(位奇偶校驗電路(whilewhile語句語句)374、Next 語句語句 在在loop loop 語句中語句中 nextnext語句用來跳出本次循環(huán)。語句用來跳出本次循環(huán)。 格式:格式: 分三種情況:分三種情況: 1 1) 無條件終止當(dāng)前的循環(huán),跳回到本次循環(huán)無條件終止當(dāng)前的循環(huán),跳回到本次循環(huán) LOOPLOOP語句開始處,開始下次循環(huán)。語句開始處,開
24、始下次循環(huán)。next 標(biāo)號標(biāo)號 when 條件表達(dá)式條件表達(dá)式;next ;382 2) 無條件終止當(dāng)前的循環(huán),跳轉(zhuǎn)到指定標(biāo)號無條件終止當(dāng)前的循環(huán),跳轉(zhuǎn)到指定標(biāo)號的的LOOPLOOP語句開始處,重新開始執(zhí)行循環(huán)操作。語句開始處,重新開始執(zhí)行循環(huán)操作。3 3) 當(dāng)條件表達(dá)式的值為當(dāng)條件表達(dá)式的值為truetrue,則執(zhí)行,則執(zhí)行nextnext語句,進(jìn)入跳轉(zhuǎn)操作,否則繼續(xù)向下執(zhí)行。語句,進(jìn)入跳轉(zhuǎn)操作,否則繼續(xù)向下執(zhí)行。next 標(biāo)號標(biāo)號 ; next 標(biāo)號標(biāo)號 when 條件表達(dá)式條件表達(dá)式;39 舉例舉例: L1: while i10 loop L2: while j20 loop next
25、L1 when i=j; end loop L2; end loop L1;405、 Exit 語句語句 exit exit 語句將結(jié)束語句將結(jié)束循環(huán)狀態(tài)。循環(huán)狀態(tài)。格式:格式: nextnext語句與語句與exitexit語句的格式與操作功能語句的格式與操作功能非常相似,區(qū)別是:非常相似,區(qū)別是:nextnext語句是跳向語句是跳向looploop語句語句的的起始點(diǎn)起始點(diǎn),而,而exitexit語句則是跳向語句則是跳向looploop語句的語句的終終點(diǎn)點(diǎn)。exit 標(biāo)號標(biāo)號 when 條件表達(dá)式條件表達(dá)式;41舉例:舉例: process(a) variable int_a: integer
26、; begin int_a := a ; for i in 0 to max_limit loop if (int_a = 0 ) then exit; else int_a := int_a - 1 ; end if ; end loop ; end process ;42三、三、wait 語句語句 進(jìn)程在仿真時的進(jìn)程在仿真時的兩個狀態(tài)兩個狀態(tài):執(zhí)行或掛起。:執(zhí)行或掛起。 進(jìn)程狀態(tài)的變化進(jìn)程狀態(tài)的變化受受wait wait 語句或敏感信號量變語句或敏感信號量變 化的控制。化的控制。 4 4種不同的條件種不同的條件: wait - wait - 無限等待無限等待 wait on - wait
27、on - 敏感信號量變化敏感信號量變化 wait until - wait until - 條件滿足(可綜合)條件滿足(可綜合) wait for - wait for - 時間到時間到431、wait on 語句語句 格式:格式: 例:以下兩種描述是完全等價的例:以下兩種描述是完全等價的 敏感信號量列表和敏感信號量列表和 wait wait 語句只能選其一,語句只能選其一,兩者不能同時使用。兩者不能同時使用。wait on 信號信號,信號,信號;process(a, b) begin y= a and b;end process; processbegin y= a and b; wait
28、on a, b; end process;442、wait until 語句語句(可綜合)(可綜合) 格式:格式: 當(dāng)表達(dá)式的值為當(dāng)表達(dá)式的值為“真真”時,進(jìn)程被啟動,否時,進(jìn)程被啟動,否則進(jìn)程被掛起。則進(jìn)程被掛起。 wait until wait until 語句的語句的三種表達(dá)方式三種表達(dá)方式: wait until wait until 信號信號 = value;= value; wait until wait until 信號信號event and event and 信號信號 = value;= value; wait until not( wait until not(信號信號st
29、able) and stable) and 信號信號= = value;value;wait until 表達(dá)式;表達(dá)式;45時鐘信號時鐘信號 clkclk 的上升沿的描述的上升沿的描述: wait until clkwait until clk = 1; = 1; wait until rising_edge(clk wait until rising_edge(clk);); wait until clkevent and clk wait until clkevent and clk = 1; = 1; wait until not(clkstable) and clk wait unt
30、il not(clkstable) and clk=1;=1;由以上描述可實現(xiàn)相同的硬件電路結(jié)構(gòu)。由以上描述可實現(xiàn)相同的硬件電路結(jié)構(gòu)。 時鐘信號下降沿的描述時鐘信號下降沿的描述? ?(自己思考)(自己思考)46舉例:用舉例:用wait untilwait until語句實現(xiàn)語句實現(xiàn)D D觸發(fā)器觸發(fā)器 architecture rtlarchitecture rtl of d is of d is begin begin process process begin begin wait until clkevent and clk wait until clkevent and clk=1;=1
31、; q = d; q = d; end process; end process; end rtl end rtl; ; 47舉例:同步復(fù)位功能電路舉例:同步復(fù)位功能電路 processprocess begin begin rst_loop rst_loop: loop: loop wait until clkevent and wait until clkevent and clkclk=1;=1; if rst if rst=1 then=1 then x=0; x=0; else else x=a; x expression parameter_ name = expression ,
32、 parameter_ name = expression) ; , parameter_ name = expression) ;函數(shù)調(diào)用:函數(shù)調(diào)用: function_name (function_name ( parameter_name = expression parameter_name = expression , parameter_name = expression) ; , parameter_name = expression) ;50五、五、return 語句語句 return return 語句只能用于子程序中語句只能用于子程序中,并用來,并用來終止終止一個子程序的執(zhí)
33、行。一個子程序的執(zhí)行。格式格式:分為:分為:1 1)return return ; 用于過程,只是結(jié)束過程,不返回任何值。用于過程,只是結(jié)束過程,不返回任何值。 2 2)return return 表達(dá)式;表達(dá)式; 用于函數(shù),并且必須返回一個值。用于函數(shù),并且必須返回一個值。 return 表達(dá)式表達(dá)式;51舉例:舉例:用于過程用于過程的的returnreturn語句語句 procedure rsprocedure rs (s,r: in std_logic; (s,r: in std_logic; q, nq : inout q, nq : inout std_logic) is std_l
34、ogic) is begin begin if s=1 and r=1 then if s=1 and r=1 then report “forbidden state: s and r report “forbidden state: s and r are equal to 1 ”; are equal to 1 ”; return; return; else else q=s and nq q=s and nq after 5 ns; after 5 ns; nq nq= a and q after 5 ns;= a and q after 5 ns; end if; end if; e
35、nd procedure rs end procedure rs; ;52舉例:舉例:用于函數(shù)用于函數(shù)的的returnreturn語句語句 function opt (a,b,selfunction opt (a,b,sel: std_logic ): std_logic ) return std_logic is return std_logic is begin begin if sel if sel = 1 then = 1 then return ( a and b ); return ( a and b ); else else return (a or b ); return (a
36、 or b ); end if; end if; end function opt; end function opt;53六六 null 語句語句 nullnull為空語句,不作任何操作。格式:為空語句,不作任何操作。格式: null;54七、其它語句和說明七、其它語句和說明 屬性(屬性(attributeattribute)描述:)描述: 屬性是某一對象的特征表示,是一個內(nèi)屬性是某一對象的特征表示,是一個內(nèi) 部預(yù)定義函數(shù)。格式為:部預(yù)定義函數(shù)。格式為: 綜合器支持的屬性有:綜合器支持的屬性有: leftleft、 rightright、 highhigh、 lowlow、 rangeran
37、ge、 rverse_rangerverse_range、 lengthlength、 eventevent、 stablestable對象名對象名屬性標(biāo)識符屬性標(biāo)識符55屬性屬性 eventevent 對在當(dāng)前的一個極小的時間段對在當(dāng)前的一個極小的時間段內(nèi)發(fā)生的事件內(nèi)發(fā)生的事件的情況進(jìn)行檢測。如發(fā)生事件,則返回的情況進(jìn)行檢測。如發(fā)生事件,則返回 truetrue,否,否則返回則返回 falsefalse。 發(fā)生事件:信號電平發(fā)生變化。發(fā)生事件:信號電平發(fā)生變化。 clockeventclockeventclock=1clockeventclock=0clockevent56時鐘信號的上升沿描
38、述:時鐘信號的上升沿描述: clockevent and clock = 1clockevent and clock = 1時鐘信號的下降沿描述:時鐘信號的下降沿描述: clockevent and clock = 0clockevent and clock = 0上升沿觸發(fā)器描述:上升沿觸發(fā)器描述: process(clock)process(clock) begin begin if clockevent and clock = 1 if clockevent and clock = 1 thenthen q = data ; q = data ; end if ; end if ; en
39、d process; end process;57屬性屬性 stablestable 屬性屬性 stable stable 的測試功能與的測試功能與 eventevent剛好相剛好相反,反,信號在信號在時間段內(nèi)無事件發(fā)生,則返回時間段內(nèi)無事件發(fā)生,則返回 truetrue,否,否則返回則返回 falsefalse。 以下兩語句的功能相同:以下兩語句的功能相同: clockevent and clock = 1clockevent and clock = 1 not ( clockstable ) and clock = not ( clockstable ) and clock = 1158第
40、第4 4章章 習(xí)題一習(xí)題一 1 1、信號與變量的區(qū)別有哪些?信號可以用來描、信號與變量的區(qū)別有哪些?信號可以用來描 述哪些硬件特性?述哪些硬件特性? 2 2、if if 語句可分為哪幾種類型?如何用嵌套式語句可分為哪幾種類型?如何用嵌套式 ifif語句描述具有優(yōu)先級的電路?語句描述具有優(yōu)先級的電路? 3 3、case case 語句有什么特點(diǎn)?其分支條件使用時有語句有什么特點(diǎn)?其分支條件使用時有 哪些注意事項?哪些注意事項? 4 4、loop loop 語句的類型有哪些?其循環(huán)變量有什么語句的類型有哪些?其循環(huán)變量有什么 特點(diǎn)?特點(diǎn)? 5 5、next next 語句與語句與 exit exi
41、t 語句的區(qū)別是什么?語句的區(qū)別是什么? 6 6、wait wait 語句有哪些類型?語句有哪些類型?wait wait 語句在進(jìn)程中語句在進(jìn)程中 的作用是什么?與敏感信號表有什么關(guān)系?的作用是什么?與敏感信號表有什么關(guān)系?59 5.2 VHDL并發(fā)語句并發(fā)語句(ConcurrentConcurrent) Architecture并發(fā)語句并發(fā)語句并發(fā)語句并發(fā)語句并發(fā)語句并發(fā)語句信號信號信號信號信號信號60 常用的并發(fā)描述語句有:常用的并發(fā)描述語句有: 并行信號賦值語句并行信號賦值語句 進(jìn)程(進(jìn)程(processprocess)語句)語句 塊(塊(blockblock)語句)語句 并行過程調(diào)用語
42、句并行過程調(diào)用語句 元件例化語句元件例化語句 生成語句生成語句 斷言語句斷言語句61一、一、 并行信號賦值語句并行信號賦值語句包括三種:包括三種: 簡單并行信號賦值;簡單并行信號賦值; 條件信號賦值;條件信號賦值; 選擇信號賦值。選擇信號賦值。共同特點(diǎn):共同特點(diǎn): (1 1)賦值目標(biāo)賦值目標(biāo)必須是信號,與其它并行語句同必須是信號,與其它并行語句同時執(zhí)行,與書寫順序及是否在塊語句中無關(guān)。時執(zhí)行,與書寫順序及是否在塊語句中無關(guān)。 (2 2)每一信號賦值語句)每一信號賦值語句等效等效于一個進(jìn)程語句。于一個進(jìn)程語句。所有輸入信號的變化都將啟動該語句的執(zhí)行。所有輸入信號的變化都將啟動該語句的執(zhí)行。621
43、、簡單并行信號賦值語句、簡單并行信號賦值語句 即:即:信號信號 = = 表達(dá)式表達(dá)式例:以下兩種描述等價例:以下兩種描述等價architecture behav of a_var is begin output=a(i);end behav;architecture behav of a_var is begin process(a, i) begin output=a(i); end process; end behav;一個簡單并行信號賦值語句是一個一個簡單并行信號賦值語句是一個進(jìn)程的縮寫進(jìn)程的縮寫。63等效:等效:LIBRARY ieee;USE ieee.std_logic_1164.
44、all;ENTITY ex1 IS PORT(a, b : IN STD_LOGIC; y : OUT STD_LOGIC);END ex1;ARCHITECTURE rtl OF ex1 IS SIGNAL c : STD_LOGIC;BEGIN c = a and b; y = c;END rtl;LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY ex2 IS PORT(a,b : IN STD_LOGIC; y : OUT STD_LOGIC);END ex2;ARCHITECTURE rtl OF ex2 IS SIGNAL c : STD
45、_LOGIC;BEGIN process1: PROCESS(a, b) BEGIN c = a and b; END PROCESS process1; process2: PROCESS(c) BEGIN y = c; END PROCESS process2;END rtl;64不等效:不等效:LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY ex1 IS PORT(a, b : IN STD_LOGIC; y : OUT STD_LOGIC);END ex1;ARCHITECTURE rtl OF ex1 IS SIGNAL c : STD
46、_LOGIC;BEGIN c = a and b; y = c;END rtl;LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY ex2 IS PORT(a,b : IN STD_LOGIC; y : OUT STD_LOGIC);END ex2;ARCHITECTURE rtl OF ex2 IS SIGNAL c : STD_LOGIC;BEGIN PROCESS(a, b, c) BEGIN c = a and b; y = c; END PROCESS;END rtl;652、條件信號賦值語句、條件信號賦值語句 格式格式: : 目的信號量目
47、的信號量 = 表達(dá)式表達(dá)式1 when 條件條件1 else 表達(dá)式表達(dá)式2 when 條件條件2 else 表達(dá)式表達(dá)式3 when 條件條件3 else 表達(dá)式表達(dá)式n;66舉例:用條件信號賦值語句描述舉例:用條件信號賦值語句描述四選一電路四選一電路 entity mux4 isentity mux4 is port(i0, i1, i2, i3, a, b : in std_logic port(i0, i1, i2, i3, a, b : in std_logic; ; q : out std_logic); q : out std_logic); end mux4; end mux4
48、; architecture rtl architecture rtl of mux4 is of mux4 is signal sel : std_logic_vector (1 downto signal sel : std_logic_vector (1 downto 0); 0); begin begin sel sel=b & a;=b & a; q=i0 when sel q=i0 when sel = “00” else = “00” else i1 when sel i1 when sel = “01” else = “01” else i2 when sel
49、i2 when sel = “10” else = “10” else i3 when sel i3 when sel = “11”; = “11”; end rtl end rtl; ; 67條件信號賦值語句與進(jìn)程中的多選擇條件信號賦值語句與進(jìn)程中的多選擇 if if 語句等價:語句等價:q = a WHEN sela = 1 ELSE b WHEN selb = 1 ELSE c;PROCESS(sela, selb, a, b, c)BEGIN IF sela=1 THEN q = a; ELSIF selb=1 THEN q = b; ELSE q = c; END IF;END PR
50、OCESS;683、選擇信號賦值語句、選擇信號賦值語句 格式:格式:with 表達(dá)式表達(dá)式 select 目的信號量目的信號量 = 表達(dá)式表達(dá)式1 when 條件條件1, 表達(dá)式表達(dá)式2 when 條件條件2, 表達(dá)式表達(dá)式n when 條件條件n;注:注:1 1)不能有重疊的條件分支。)不能有重疊的條件分支。 2 2)最后條件可為)最后條件可為 othersothers。否則。否則,其它條件,其它條件 必須能包含表達(dá)式的所有可能值。必須能包含表達(dá)式的所有可能值。 3 3)選擇信號賦值語句與進(jìn)程中的)選擇信號賦值語句與進(jìn)程中的 case case 語語 句等價。句等價。69例:用例:用選擇信號
51、賦值選擇信號賦值語句描述四選一電路語句描述四選一電路 entity mux4 is port(i0, i1, i2, i3, a, b : in std_logic; q : out std_logic); end mux4; architecture rtl of mux4 is signal sel : std_logic_vector (1 downto 0); begin sel=b & a; with sel select q q q q q = d; END CASE;END PROCESS;WITH sel SELECT q = a WHEN “00”, b WHEN “
52、01”, c WHEN “10”, d WHEN OTHERS;71二、進(jìn)程(二、進(jìn)程(process)語句)語句 進(jìn)程進(jìn)程(processprocess)語句最具)語句最具VHDLVHDL語言特色。提語言特色。提供了一種用算法描述硬件行為的方法。供了一種用算法描述硬件行為的方法。 特點(diǎn)特點(diǎn): (1 1)進(jìn)程與進(jìn)程,或其它并發(fā)語句之間的并發(fā))進(jìn)程與進(jìn)程,或其它并發(fā)語句之間的并發(fā)性;性; (2 2)進(jìn)程內(nèi)部的順序性;)進(jìn)程內(nèi)部的順序性; (3 3)進(jìn)程的啟動與掛起;)進(jìn)程的啟動與掛起; (4 4)進(jìn)程與進(jìn)程,或其它并發(fā)語句之間的通信。)進(jìn)程與進(jìn)程,或其它并發(fā)語句之間的通信。72信號信號 進(jìn)程語句
53、進(jìn)程語句 process 進(jìn)程語句進(jìn)程語句 process信號信號信號信號 進(jìn)程語句進(jìn)程語句 process73敏感信號表敏感信號表:進(jìn)程內(nèi)要讀取的所有敏感信號:進(jìn)程內(nèi)要讀取的所有敏感信號(包括端口)的列表。每一個敏感信號的變化,(包括端口)的列表。每一個敏感信號的變化,都將啟動進(jìn)程。都將啟動進(jìn)程。 格式:格式:標(biāo)記:標(biāo)記: process ( 敏感信號表敏感信號表) 進(jìn)程說明項進(jìn)程說明項 begin 順序描述語句順序描述語句 end process 標(biāo)記標(biāo)記;信號名稱信號名稱 ,信號名稱,信號名稱 74敏感信號表的特點(diǎn)敏感信號表的特點(diǎn): (1 1)同步進(jìn)程同步進(jìn)程的敏感信號表中只有時鐘信號。
54、的敏感信號表中只有時鐘信號。 如:如:process(clkprocess(clk) ) begin begin if(clkevent and clk if(clkevent and clk = 1) = 1) thenthen if reset = 1 thenif reset = 1 then data = “00”; data = “00”; else else data = in_data; data = in_data; end if; end if; end if; end if; end process; end process;75 (2 2)異步進(jìn)程異步進(jìn)程敏感信號表中除時
55、鐘信號外,還敏感信號表中除時鐘信號外,還有其它信號。有其它信號。例:例:process(clkprocess(clk,reset)reset) begin begin if reset = 1 thenif reset = 1 then data = “00”; data = “00”; elsif(clkevent and clk elsif(clkevent and clk = 1) = 1) thenthen data = in_data; data = in_data; end if; end if; end process; end process; 76(3 3)如果有)如果有 w
56、ait wait 語句,則不允許有敏感信號表。語句,則不允許有敏感信號表。 PROCESS (a,b) BEGIN -sequential statements END PROCESS; PROCESS BEGIN - sequential statements WAIT ON (a,b) ; END PROCESS;77定義:給一個信號賦值,即為該信號創(chuàng)建一個驅(qū)動定義:給一個信號賦值,即為該信號創(chuàng)建一個驅(qū)動 器(驅(qū)動信號)。多個進(jìn)程或并發(fā)語句給同器(驅(qū)動信號)。多個進(jìn)程或并發(fā)語句給同 一個信號賦值,則該信號為一個信號賦值,則該信號為多信號源驅(qū)動多信號源驅(qū)動。例:例: a_out = a wh
57、en enable_a else a_out = a when enable_a else Z ;Z ; b_out = b when enable_b else b_out = b when enable_b else Z ;Z ; process ( a_out) process ( a_out) begin begin sig = a_out ; sig = a_out ; end process ; end process ; process ( b_out ) process ( b_out ) begin begin sig = b_out ; sig = b_out ; end
58、process ; end process ;三態(tài)緩沖器總線結(jié)構(gòu)與多驅(qū)動信號三態(tài)緩沖器總線結(jié)構(gòu)與多驅(qū)動信號78三、塊語句三、塊語句 塊語句將一系列塊語句將一系列并行描述語句進(jìn)行組合并行描述語句進(jìn)行組合,目,目的是改善并行語句及其結(jié)構(gòu)的可讀性??墒菇Y(jié)構(gòu)的是改善并行語句及其結(jié)構(gòu)的可讀性??墒菇Y(jié)構(gòu)體層次鮮明,結(jié)構(gòu)明確。體層次鮮明,結(jié)構(gòu)明確。語法如下:語法如下: 標(biāo)記:標(biāo)記:block ( 塊保護(hù)表達(dá)式塊保護(hù)表達(dá)式 ) 塊說明項塊說明項 begin 并行語句并行語句 end block 標(biāo)記標(biāo)記 ;791、塊語句的使用、塊語句的使用 以下兩種描述結(jié)果相同:以下兩種描述結(jié)果相同: 描述一:描述一: a1
59、: out1=1 after 2 ns;a1: out1=1 after 2 ns; a2: out2=1 after 2 ns; a2: out2=1 after 2 ns; a3: out3=1 after 2 ns; a3: out3=1 after 2 ns; 描述二:描述二: a1: out1=1 after 2 ns;a1: out1=1 after 2 ns; blk1: block blk1: block begin begin a2: out2=1 after 2 ns; a2: out2=1 after 2 ns; a3: out3=1 after 2 ns; a3: ou
60、t3 = 表達(dá)式表達(dá)式 , 參數(shù)名參數(shù)名= = 表達(dá)式表達(dá)式)83例:并行過程調(diào)用與串行過程調(diào)用例:并行過程調(diào)用與串行過程調(diào)用 procedure adder( signal a, b: in std_logic; signal sum: out std_logic); adder(a1, b1, sum1); process(c1, c2) begin adder(c1, c2, s1); end process;84五、元件聲明及元件例化五、元件聲明及元件例化 1. 層次化設(shè)計層次化設(shè)計852. 元件聲明元件聲明 定義定義:對所調(diào)用的較低層次的實體模塊:對所調(diào)用的較低層次的實體模塊 (元件)的名稱、類屬參數(shù)、端
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)一年級20以內(nèi)連加連減口算練習(xí)題75道一張
- 小學(xué)數(shù)學(xué)一年級以內(nèi)加減法口算
- 自然辯證法復(fù)習(xí)題含答案完整版
- 內(nèi)蒙古阿拉善銀星風(fēng)力發(fā)電有限公司事故應(yīng)急預(yù)案
- 職稱述職報告
- 高考新課標(biāo)語文模擬試卷系列之72
- 《教育工作者的境界》課件
- 技能競賽與課外拓展活動計劃
- 寵物用品行業(yè)安全工作總結(jié)
- 旅游行業(yè)的保安工作總結(jié)
- 窗簾采購?fù)稑?biāo)方案(技術(shù)方案)
- 電力安全工作規(guī)程考試試題(答案)
- 2024-2030年串番茄行業(yè)市場發(fā)展分析及前景趨勢與投資研究報告
- 城市燃?xì)夤芫W(wǎng)改造合同
- 2024-2025學(xué)年廣東省東莞市高三思想政治上冊期末試卷及答案
- 《水電站建筑物》課件
- 9-XX人民醫(yī)院樣本外送檢測管理制度(試行)
- 場地硬化合同范文
- 智力殘疾送教上門教案
- 2024北京市公安局平谷分局勤務(wù)輔警人員招聘筆試參考題庫含答案解析
- 單位信息化建設(shè)IT建設(shè)項目后評估報告(模板)
評論
0/150
提交評論