版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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è)計語言的特點相似。計語言的特點相似。 順序語句只能用在順序語句只能用在進程進程與與子程序子程序中。中。 可描述可描述組合組合邏輯、邏輯、時序時序邏輯。邏輯。4 常用的順序描述語句常用的順序描述語句 賦值語句;賦值語句; ifif語句;語句; casecase語句;語句; looploop語句;語句; nextnext語句;語句; waitwait語句;語句; exitexit語句;語句; 子程序;子程序; returnreturn語句;語句; nullnull語句。語句。5一、對象與賦值語句一、對象與賦值語句 1 1、VHDLVHDL中常用的中常用的 5 5 種賦值對象種賦值對象 1
3、 1)簡單名稱,如)簡單名稱,如 my_var;my_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)。 所有對象均分為:所有對象均分為:變量和信號變量和信號 對象對象 := = 表達式;表達式; - -
4、變量賦值變量賦值 對象對象 = = 表達式;表達式; - - 信號賦值信號賦值 要求要求:表達式的值必須與對象的類型、寬度一:表達式的值必須與對象的類型、寬度一 致。致。62、變量賦值與信號賦值、變量賦值與信號賦值 變量與信號的差異變量與信號的差異: 1 1)賦值方式的不同:)賦值方式的不同: 變量:變量:= = 表達式;表達式; 信號信號 = = 表達式;表達式; 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)體-全局量。全局量。 變量變量:進程、子程序:進程、子程序-局部量。局部量。 ARCHITECTURE SIGNAL Declarationslabel1: PROCESSVARIABLE Declarationslabel2: PROCESSVARIABLE Declarations84 4)賦值行為的不同:)賦值行為的不同: 信號賦值延遲更新數(shù)值、時序電路;信號賦值延遲更新數(shù)值、時序電路; 變量賦值立即更新數(shù)值、組合電路。變量賦值立即更新數(shù)值、組合電路。5 5)信號
6、的多次賦值)信號的多次賦值 a. a. 一個進程:最后一次賦值有效一個進程:最后一次賦值有效 b. b. 多個進程:多源驅(qū)動多個進程:多源驅(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 rtl of sig isarchitecture rtl 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 var isarchitecture rtl of var is begin begin process process variable a,b:std_logic; - variable a,b:std_logic; - 定義變量定義變量 begin begin a := b ; a := b ; b := a ; b := a ; end process ; end process ; end rtl;
9、 end 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 (ena = 1) thenif (ena = 1) then q = d q = d; end if end if; 綜合后生成鎖存器(綜合后生成鎖存器(latchlatch)if 條件條件 then 順序處理語句;順序處理語句;end if ;14條件改為時鐘沿,則生成條件改為時鐘沿,則生成 D D觸發(fā)器觸發(fā)器:152 2)if if 語句的二選擇控制語句的二選擇控制 格式:格式: 用條件來選擇兩條不同程序執(zhí)行的路徑。用條件來選擇兩條不同程序執(zhí)行的路徑。if 條件條件 the
11、n 順序處理語句;順序處理語句;else 順序處理語句;順序處理語句;end if ;16舉例:典型二選一電路舉例:典型二選一電路 architecture rtl of mux2 isarchitecture rtl of mux2 is begin begin process(a, b, sel) process(a, b, sel) begin begin if (sel = 1) then if (sel = 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_elsif if_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 p
14、rocess(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 語句使用注意語句使用注意: 1
16、 1)分支)分支條件的值條件的值必須在表達式的取值范圍內(nèi)。必須在表達式的取值范圍內(nèi)。 2 2)兩個分支條件)兩個分支條件不能重疊不能重疊。 3 3)CASECASE語句執(zhí)行時必須選中,且只能語句執(zhí)行時必須選中,且只能選中一選中一 個個分支條件。分支條件。 4 4)如果沒有)如果沒有othersothers分支條件分支條件存在,則分支條存在,則分支條 件必須覆蓋表達式所有可能的值。件必須覆蓋表達式所有可能的值。 對對std_logic, std_logic_vectorstd_logic, 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 ieee;library 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 archi
19、tecture art of mux41 is begin begin process(s4, s3, s2, s1) process(s4, s3, s2, s1) variable sel: integer range 0to15; variable sel: integer range 0to15; begin begin sel:=0; sel:=0; (待續(xù))28 if s1=1 then sel:=sel+1; end if s1=1 then sel:=sel+1; end if;if; if s2=1 then sel:=sel+2; end if s2=1 then sel:
20、=sel+2; end if;if; if s3=1 then sel:=sel+4; end if s3=1 then sel:=sel+4; end if;if; if s4=1 then sel:=sel+8; end if s4=1 then sel:=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 loop for loop 語句語句特點:特點: 循環(huán)變量是循環(huán)變
21、量是 loop loop 內(nèi)部內(nèi)部自動聲明自動聲明的局部量,的局部量, 僅在僅在 loop loop 內(nèi)可見;不需要指定其變化方式。內(nèi)可見;不需要指定其變化方式。 離散范圍必須是可計算的離散范圍必須是可計算的整數(shù)范圍整數(shù)范圍: 整數(shù)表達式整數(shù)表達式 to to 整數(shù)表達式整數(shù)表達式 整數(shù)表達式整數(shù)表達式 downto downto 整數(shù)表達式整數(shù)表達式 標號標號:for 循環(huán)變量循環(huán)變量 in 離散范圍離散范圍 loop 順序處理語句;順序處理語句; end loop 標號標號;32舉例:舉例:8 8位奇偶校驗電路(位奇偶校驗電路(forfor循環(huán)語句)循環(huán)語句)-奇校驗338 8位奇校驗電路
22、仿真結(jié)果:位奇校驗電路仿真結(jié)果:34將變量將變量tmptmp的初值改為的初值改為00,則為偶校驗電路:,則為偶校驗電路:353 3)while loop while loop 語句語句 例:例:sum:=0;sum:=0; i:=0; i:=0; abcd: while (i10) loop abcd: 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 語句。語句。標號標號:while 循環(huán)條件循環(huán)條件 loop 順序處理語句;順序處理語句; end loop 標號標號;36舉例:舉例:8 8位奇偶校驗電路(位奇偶校驗電路(whilewhile語句)語句)374、Next 語句語句 在在loop loop 語句中語句中 next next語句用來跳出本次循環(huán)。語句用來跳出本次循環(huán)。 格式:格式: 分三種情況:分三種情況: 1 1) 無條件終止當(dāng)前的循環(huán),跳回到本次循環(huán)無條件終止當(dāng)前的循環(huán),跳回到本次循環(huán) LOOP LOOP語句開始處,開始下次循環(huán)。語句開始處,開始下次循
24、環(huán)。next 標號標號 when 條件表達式條件表達式;next ;382 2) 無條件終止當(dāng)前的循環(huán),跳轉(zhuǎn)到指定標號無條件終止當(dāng)前的循環(huán),跳轉(zhuǎn)到指定標號的的LOOPLOOP語句開始處,重新開始執(zhí)行循環(huán)操作。語句開始處,重新開始執(zhí)行循環(huán)操作。3 3) 當(dāng)條件表達式的值為當(dāng)條件表達式的值為truetrue,則執(zhí)行,則執(zhí)行nextnext語句,進入跳轉(zhuǎn)操作,否則繼續(xù)向下執(zhí)行。語句,進入跳轉(zhuǎn)操作,否則繼續(xù)向下執(zhí)行。next 標號標號 ; next 標號標號 when 條件表達式條件表達式;39 舉例:舉例: L1: while i10 loop L2: while j20 loop next L1
25、when i=j; end loop L2; end loop L1;405、 Exit 語句語句 exit exit 語句將結(jié)束循環(huán)狀態(tài)。語句將結(jié)束循環(huán)狀態(tài)。格式:格式: next next語句與語句與exitexit語句的格式與操作功能語句的格式與操作功能非常相似,區(qū)別是:非常相似,區(qū)別是:nextnext語句是跳向語句是跳向looploop語句語句的的起始點起始點,而,而exitexit語句則是跳向語句則是跳向looploop語句的語句的終終點點。exit 標號標號 when 條件表達式條件表達式;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 語句語句 進程在仿真時的進程在仿真時的兩個狀態(tài)兩個狀態(tài):執(zhí)行或掛起。:執(zhí)行或掛起。 進程狀態(tài)的變化進程狀態(tài)的變化受受wait wait 語句或敏感信號量變語句或敏感信號量變 化的控制?;目刂啤?4 4種不同的條件種不同的條件: wait - wait - 無限等待無限等待 wait on - wait on
27、 - 敏感信號量變化敏感信號量變化 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 on
28、 a, b; end process;442、wait until 語句語句(可綜合)(可綜合) 格式:格式: 當(dāng)表達式的值為當(dāng)表達式的值為“真真”時,進程被啟動,否時,進程被啟動,否則進程被掛起。則進程被掛起。 wait until wait until 語句的語句的三種表達方式三種表達方式: wait until wait until 信號信號 = value;= value; wait until wait until 信號信號event and event and 信號信號 = value;= value; wait until not( wait until not(信號信號stab
29、le) and stable) and 信號信號= = value;value;wait until 表達式;表達式;45時鐘信號時鐘信號 clk clk 的上升沿的描述的上升沿的描述: wait until clk = 1;wait until clk = 1; wait until rising_edge(clk); wait until rising_edge(clk); wait until clkevent and clk = 1; wait until clkevent and clk = 1; wait until not(clkstable) and clk=1; wait u
30、ntil not(clkstable) and clk=1;由以上描述可實現(xiàn)相同的硬件電路結(jié)構(gòu)。由以上描述可實現(xiàn)相同的硬件電路結(jié)構(gòu)。 時鐘信號下降沿的描述時鐘信號下降沿的描述? ?(自己思考)(自己思考)46舉例:用舉例:用wait untilwait until語句實現(xiàn)語句實現(xiàn)D D觸發(fā)器觸發(fā)器 architecture rtl of d isarchitecture rtl of d is begin begin process process begin begin wait until clkevent and clk=1; wait until clkevent and clk=1;
31、 q = d; q = d; end process; end process; end rtl; end rtl; 47舉例:同步復(fù)位功能電路舉例:同步復(fù)位功能電路 processprocess begin begin rst_loop: loop rst_loop: loop wait until clkevent and wait until clkevent and clk=1;clk=1; if rst=1 then if rst=1 then x=0; x=0; else else x=a; x expression parameter_ name = expression , p
32、arameter_ 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 表達式;表達式; 用于函數(shù),并且必須返回一個值。用于函數(shù),并且必須返回一個值。 return 表達式表達式;51舉例:舉例:用于過程用于過程的的returnreturn語句語句 procedure rs (s,r: in std_logic;procedure rs (s,r: in std_logic; q, nq : inout std_logic) is q, nq : inout std_lo
34、gic) 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 after 5 ns; q=s and nq after 5 ns; nq= a and q after 5 ns; nq= a and q after 5 ns; end if; end if; en
35、d procedure rs; end procedure rs;52舉例:舉例:用于函數(shù)用于函數(shù)的的returnreturn語句語句 function opt (a,b,sel: std_logic )function opt (a,b,sel: std_logic ) return std_logic is return std_logic is begin begin if sel = 1 then if sel = 1 then return ( a and b ); return ( a and b ); else else return (a or b ); return (a o
36、r 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、 rangerange
37、、 rverse_rangerverse_range、 lengthlength、 eventevent、 stablestable對象名對象名屬性標識符屬性標識符55屬性屬性 eventevent 對在當(dāng)前的一個極小的時間段對在當(dāng)前的一個極小的時間段內(nèi)發(fā)生的事件內(nèi)發(fā)生的事件的情況進行檢測。如發(fā)生事件,則返回的情況進行檢測。如發(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 ; end
39、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第第4
40、 4章章 習(xí)題一習(xí)題一 1 1、信號與變量的區(qū)別有哪些?信號可以用來描、信號與變量的區(qū)別有哪些?信號可以用來描 述哪些硬件特性?述哪些硬件特性? 2 2、if if 語句可分為哪幾種類型?如何用嵌套式語句可分為哪幾種類型?如何用嵌套式 ifif語句描述具有優(yōu)先級的電路?語句描述具有優(yōu)先級的電路? 3 3、case case 語句有什么特點?其分支條件使用時有語句有什么特點?其分支條件使用時有 哪些注意事項?哪些注意事項? 4 4、loop loop 語句的類型有哪些?其循環(huán)變量有什么語句的類型有哪些?其循環(huán)變量有什么 特點?特點? 5 5、next next 語句與語句與 exit exit
41、語句的區(qū)別是什么?語句的區(qū)別是什么? 6 6、wait wait 語句有哪些類型?語句有哪些類型?wait wait 語句在進程中語句在進程中 的作用是什么?與敏感信號表有什么關(guān)系?的作用是什么?與敏感信號表有什么關(guān)系?59 5.2 VHDL并發(fā)語句并發(fā)語句(ConcurrentConcurrent) Architecture并發(fā)語句并發(fā)語句并發(fā)語句并發(fā)語句并發(fā)語句并發(fā)語句信號信號信號信號信號信號60 常用的并發(fā)描述語句有:常用的并發(fā)描述語句有: 并行信號賦值語句并行信號賦值語句 進程(進程(processprocess)語句)語句 塊(塊(blockblock)語句)語句 并行過程調(diào)用語句并
42、行過程調(diào)用語句 元件例化語句元件例化語句 生成語句生成語句 斷言語句斷言語句61一、一、 并行信號賦值語句并行信號賦值語句包括三種:包括三種: 簡單并行信號賦值;簡單并行信號賦值; 條件信號賦值;條件信號賦值; 選擇信號賦值。選擇信號賦值。共同特點:共同特點: (1 1)賦值目標賦值目標必須是信號,與其它并行語句同必須是信號,與其它并行語句同時執(zhí)行,與書寫順序及是否在塊語句中無關(guān)。時執(zhí)行,與書寫順序及是否在塊語句中無關(guān)。 (2 2)每一信號賦值語句)每一信號賦值語句等效等效于一個進程語句。于一個進程語句。所有輸入信號的變化都將啟動該語句的執(zhí)行。所有輸入信號的變化都將啟動該語句的執(zhí)行。621、簡
43、單并行信號賦值語句、簡單并行信號賦值語句 即:即:信號信號 = = 表達式表達式例:以下兩種描述等價例:以下兩種描述等價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;一個簡單并行信號賦值語句是一個一個簡單并行信號賦值語句是一個進程的縮寫進程的縮寫。63等效:等效:LIBRARY ieee;USE ieee.std_logic_1164.al
44、l;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_L
45、OGIC;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_L
46、OGIC;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、號量 = 表達式表達式1 when 條件條件1 else 表達式表達式2 when 條件條件2 else 表達式表達式3 when 條件條件3 else 表達式表達式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; a
48、rchitecture rtl of mux4 is architecture rtl of mux4 is signal sel : std_logic_vector (1 downto 0); signal sel : std_logic_vector (1 downto 0); begin begin sel=b & a; sel=b & a; q=i0 when sel = “00” else q=i0 when sel = “00” else i1 when sel = “01” else i1 when sel = “01” else i2 when sel = “
49、10” else i2 when sel = “10” else i3 when sel = “11”; i3 when sel = “11”; end rtl; end rtl; 67條件信號賦值語句與進程中的多選擇條件信號賦值語句與進程中的多選擇 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 PROCES
50、S;683、選擇信號賦值語句、選擇信號賦值語句 格式:格式:with 表達式表達式 select 目的信號量目的信號量 = 表達式表達式1 when 條件條件1, 表達式表達式2 when 條件條件2, 表達式表達式n when 條件條件n;注:注:1 1)不能有重疊的條件分支。)不能有重疊的條件分支。 2 2)最后條件可為)最后條件可為 others others。否則,其它條件。否則,其它條件 必須能包含表達式的所有可能值。必須能包含表達式的所有可能值。 3 3)選擇信號賦值語句與進程中的)選擇信號賦值語句與進程中的 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 “01”
52、, c WHEN “10”, d WHEN OTHERS;71二、進程(二、進程(process)語句)語句 進程進程(processprocess)語句最具)語句最具VHDLVHDL語言特色。提語言特色。提供了一種用算法描述硬件行為的方法。供了一種用算法描述硬件行為的方法。 特點特點: (1 1)進程與進程,或其它并發(fā)語句之間的并發(fā))進程與進程,或其它并發(fā)語句之間的并發(fā)性;性; (2 2)進程內(nèi)部的順序性;)進程內(nèi)部的順序性; (3 3)進程的啟動與掛起;)進程的啟動與掛起; (4 4)進程與進程,或其它并發(fā)語句之間的通信。)進程與進程,或其它并發(fā)語句之間的通信。72信號信號 進程語句進程語
53、句 process 進程語句進程語句 process信號信號信號信號 進程語句進程語句 process73敏感信號表敏感信號表:進程內(nèi)要讀取的所有敏感信號:進程內(nèi)要讀取的所有敏感信號(包括端口)的列表。每一個敏感信號的變化,(包括端口)的列表。每一個敏感信號的變化,都將啟動進程。都將啟動進程。 格式:格式:標記:標記: process ( 敏感信號表敏感信號表) 進程說明項進程說明項 begin 順序描述語句順序描述語句 end process 標記標記;信號名稱信號名稱 ,信號名稱,信號名稱 74敏感信號表的特點敏感信號表的特點: (1 1)同步進程同步進程的敏感信號表中只有時鐘信號。的敏感
54、信號表中只有時鐘信號。 如:如:process(clk)process(clk) begin begin if(clkevent and clk = 1) if(clkevent and clk = 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)異步進程異步進程敏感信號表中除時鐘信號外
55、,還敏感信號表中除時鐘信號外,還有其它信號。有其它信號。例:例:process(clkprocess(clk,reset)reset) begin begin if reset = 1 thenif reset = 1 then data = “00”; data = “00”; elsif(clkevent and clk = 1) elsif(clkevent and clk = 1) thenthen data = in_data; data = in_data; end if; end if; end process; end process; 76(3 3)如果有)如果有 wait
56、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ū)動信號)。多個進程或并發(fā)語句給同器(驅(qū)動信號)。多個進程或并發(fā)語句給同 一個信號賦值,則該信號為一個信號賦值,則該信號為多信號源驅(qū)動多信號源驅(qū)動。例:例: a_out = a when e
57、nable_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 proc
58、ess ; end process ;三態(tài)緩沖器總線結(jié)構(gòu)與多驅(qū)動信號三態(tài)緩沖器總線結(jié)構(gòu)與多驅(qū)動信號78三、塊語句三、塊語句 塊語句將一系列塊語句將一系列并行描述語句進行組合并行描述語句進行組合,目,目的是改善并行語句及其結(jié)構(gòu)的可讀性。可使結(jié)構(gòu)的是改善并行語句及其結(jié)構(gòu)的可讀性??墒菇Y(jié)構(gòu)體層次鮮明,結(jié)構(gòu)明確。體層次鮮明,結(jié)構(gòu)明確。語法如下:語法如下: 標記:標記:block ( 塊保護表達式塊保護表達式 ) 塊說明項塊說明項 begin 并行語句并行語句 end block 標記標記 ;791、塊語句的使用、塊語句的使用 以下兩種描述結(jié)果相同:以下兩種描述結(jié)果相同: 描述一:描述一: a1: ou
59、t1=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: out3 =
60、 表達式表達式 , 參數(shù)名參數(shù)名= = 表達式表達式)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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國地產(chǎn)綠化商業(yè)計劃書
- 2024-2030年中國咸菜市場發(fā)展前景調(diào)研與投資策略分析報告
- 2024-2030年中國印花熱熔膠融資商業(yè)計劃書
- 2024年體育用品銷售租賃合同
- 滿洲里俄語職業(yè)學(xué)院《STEM課程教學(xué)與微課制作》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年兒童個性化教育服務(wù)聘請教師勞動合同模板3篇
- 2024年房屋中介居間協(xié)議2篇
- 漯河醫(yī)學(xué)高等??茖W(xué)校《畫法幾何與土建制圖》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年銅川貨運從業(yè)資格證模擬考試下載什么軟件
- 2024年標準格式個人等額本息貸款合同版B版
- 蘇教版三年級上冊解決問題的策略應(yīng)用題100題及答案
- 質(zhì)量管理中的流程改進與優(yōu)化
- 成長賽道-模板參考
- 室外晾衣棚施工方案
- 兒童健康管理服務(wù)總結(jié)分析報告
- 殯葬行業(yè)的風(fēng)險分析
- 通信工程冬季施工安全培訓(xùn)
- 痛風(fēng)病科普講座課件
- 工作崗位風(fēng)險評估報告
- 護理查房肺部感染心衰
- 拒執(zhí)罪申請書范本
評論
0/150
提交評論