版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、14:57,1,硬件執(zhí)行:并發(fā)執(zhí)行(VHDL本質(zhì)) 仿真執(zhí)行:順序執(zhí)行、并發(fā)執(zhí)行 分為兩大類:順序(Sequential)描述語句 并發(fā)(Concurrent)描述語句,ARCHITECTURE Process Process,ENTITY,Sequential Process,CombinationalProcess,ports,ports,component,3.4 VHDL順序語句(Sequential),14:57,2,順序描述語句: 執(zhí)行順序與書寫順序一致,與傳統(tǒng)軟件設(shè)計(jì) 語言的特點(diǎn)相似。順序語句只能用在進(jìn)程與子程 序中。 可描述組合邏輯、時(shí)序邏輯。 常用的順序描述語句: 賦值語句;
2、 if語句;case語句;loop語句; next語句;exit語句;子程序;return語句; wait語句;null語句。,14:57,3,一 對(duì)象與賦值語句 1、VHDL中常用的 5 種對(duì)象: 1)簡(jiǎn)單名稱,如 my_var; 2)索引名稱,如 my_array_var(3); 3)片斷名稱,如 my_array_var(3 to 6); 4)記錄域名,如 my_record.a_field; 5)集合,如(my_var1, my_var2)。 所有對(duì)象均分為:變量和信號(hào) 對(duì)象 := 表達(dá)式; - 變量賦值 對(duì)象 = 表達(dá)式; - 信號(hào)賦值 要求:表達(dá)式的值必須與對(duì)象的類型、寬度一致。,
3、14:57,4,2、變量賦值與信號(hào)賦值 變量與信號(hào)的差異: 1)賦值方式的不同: 變量:= 表達(dá)式; 信號(hào) = 表達(dá)式; 2)硬件實(shí)現(xiàn)的功能不同: 信號(hào)代表電路單元、功能模塊間的互聯(lián), 代表實(shí)際的硬件連線; 變量代表電路單元內(nèi)部的操作,代表暫 存的臨時(shí)數(shù)據(jù)。,14:57,5,3)有效范圍的不同: 信號(hào):程序包、實(shí)體、結(jié)構(gòu)體;全局量。 變量:進(jìn)程、子程序;局部量。,SIGNAL Declarations,label1: PROCESS VARIABLE Declarations,label2: PROCESS VARIABLE Declarations,ARCHITECTURE,14:57,6,
4、4)賦值行為的不同: 信號(hào)賦值延遲更新數(shù)值、時(shí)序電路; 變量賦值立即更新數(shù)值、組合電路。 5)信號(hào)的多次賦值 a. 一個(gè)進(jìn)程:最后一次賦值有效 b. 多個(gè)進(jìn)程:多源驅(qū)動(dòng) 線與、線或、三態(tài),14:57,7,例:信號(hào)的多次賦值,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 p
5、rocess; process() begin a = c; . end process; end ex;,14:57,8,例:信號(hào)賦值與變量賦值的比較 信號(hào)賦值: architecture rtl of sig is signal a,b : std_logic; - 定義信號(hào) begin process(a, b) begin a = b ; b = a ; end process ; end rtl ; - 結(jié)果是 a 和 b 的值互換,14:57,9,變量賦值: architecture rtl of var is begin process variable a,b:std_logi
6、c; - 定義變量 begin a := b ; b := a ; end process ; end rtl; - 結(jié)果是a和b的值都等于b的初值,14:57,10,例:變量賦值實(shí)現(xiàn)循環(huán)語句功能 process(indicator, sig) variable temp : std_logic; begin temp := 0 ; for i in 0 to 3 loop temp:=temp xor (sig(i) and indicator(i); end loop ; end process; output = temp;,14:57,11,以上語句等效為: process(indic
7、ator, sig) variable temp : std_logic ; begin temp := 0 ; temp :=temp xor (sig(0) and indicator(0); temp :=temp xor (sig(1) and indicator(1); temp :=temp xor (sig(2) and indicator(2); temp :=temp xor (sig(3) and indicator(3); output = temp ; end process ;,14:57,12,如改為信號(hào),則無法實(shí)現(xiàn)原功能: signal temp : std_lo
8、gic; process(indicator, sig, temp) begin temp= 0 ; temp=temp xor (sig(0) and indicator(0); temp=temp xor (sig(1) and indicator(1); temp=temp xor (sig(2) and indicator(2); temp=temp xor (sig(3) and indicator(3); output = temp ; end process ;,14:57,13,二、 轉(zhuǎn)向控制語句 轉(zhuǎn)向控制語句通過條件控制開關(guān)決定是否執(zhí) 行一條或幾條語句,或重新執(zhí)行一條或幾條語
9、, 或跳過一條或幾條語句。 分為五種: if 語句、case 語句、 loop 語句、next 語句、 exit 語句,14:57,14,1、if 語句 if 語句執(zhí)行一序列的語句,其次序依賴于一 個(gè)或多個(gè)條件的值。 1)if 語句的門閂控制 例:if (ena = 1) then q = d; end if; 綜合后生成鎖存器(latch),if 條件 then 順序處理語句; end if ;,括號(hào)可以去掉 If ena = 1 then,14:57,15,條件改為時(shí)鐘沿,則生成 D觸發(fā)器:,Library ieee ; Use ieee.std_logic_1164.all; Entit
10、y dff is Port(clk, d: in std_logic ; q: out std_logic); End dff; Architecture rtl of dff is Begin Process(clk) Begin If clkevent and clk = 1 then q = d ; End if ; End process ; End rtl ;,14:57,16,2)if 語句的二選擇控制 格式: 用條件來選擇兩條不同程序執(zhí)行的路徑。,if 條件 then 順序處理語句; else 順序處理語句; end if ;,14:57,17,此描述的典型電路是二選一電路: a
11、rchitecture rtl of mux2 is begin process(a, b, sel) begin if (sel = 1) then y = a ; else y = b ; end if ; end process ; end rtl ;,14:57,18,3)if 語句的多選擇控制 if 語句的多選擇控制又稱為 if 語句的嵌套。 格式:,if 條件 then 順序處理語句; elsif 條件 then 順序處理語句; elsif 條件 then 順序處理語句; else 順序處理語句; end if;,14:57,19,典型電路是多選一(四選一)電路。,Library
12、ieee ; Use ieee.std_logic_1164.all; entity mux4 is port(input: in std_logic_vector(3 downto 0); sel: in std_logic_vector(1 downto 0); y: out std_logic); end mux4 ;,14:57,20,Architecture rtl of mux4 is Begin process(input, sel) begin if sel = “00” then y = input(0) ; elsif sel = “01” then y = input(1
13、) ; elsif sel = “10” then y = input(2) ; else y = input(3) ; end if ; end process ; End rtl ;,14:57,21,if_then_elsif 語句中隱含了優(yōu)先級(jí)別的判斷, 最先出現(xiàn)的條件優(yōu)先級(jí)最高,可用于設(shè)計(jì)具有優(yōu) 先級(jí)的電路。如8-3優(yōu)先級(jí)編碼器。 library ieee; use ieee.std_logic_1164.all; entity coder is port(input: in std_logic_vector(7 downto 0); output: out std_logic_ve
14、ctor(2 downto 0); end coder;,14:57,22,architecture art of coder is begin process(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”;,14:57,23,elsif input(3)=0 then output=“100”; elsif input(2)=0 the
15、n output=“101”; elsif input(1)=0 then output=“110”; else output=“111”; end if; end process; end art;,14:57,24,2、 case 語句 case 語句常用來描述總線或編碼、譯碼行為??勺x性比if 語句強(qiáng)。 格式如下:,case 表達(dá)式 is when 分支條件 = 順序處理語句; when 分支條件 = 順序處理語句; when 分支條件 = 順序處理語句; end case;,14:57,25,其中的分支條件可有以下的形式: when 值 = 順序處理語句; when 值 to 值 =
16、順序處理語句; when 值|值|值|值 = 順序處理語句; 以上三種方式的混合; when others = 順序處理語句;,14:57,26,Case 語句使用注意: 1)分支條件的值必須在表達(dá)式的取值范圍內(nèi)。 2)兩個(gè)分支條件不能重疊。 3)CASE語句執(zhí)行時(shí)必須選中,且只能選中一 個(gè)分支條件。 4)如果沒有others分支條件存在,則分支條 件必須覆蓋表達(dá)式所有可能的值。 對(duì)std_logc, std_logic_vector數(shù)據(jù)類型要特別注意使用others分支條件。,14:57,27,例:用case 語句描述四選一電路,14:57,28,例:case 語句的誤用 signal va
17、lue:integer range 0 to 15; signal out_1 : bit ;,case value is - 缺少 when條件語句 end case ;,case value is - 分支條件不包含2到15 when 0 = out_1 out_1 =0 ; end case ;,case value is - 在5到10上發(fā)生重疊 when 0 to 10 = out_1 out_1 = 0 ; end case ;,14:57,29,例:根據(jù)輸入確定輸出值 library ieee; use ieee.std_logic_1164.all; entity mux41
18、is port(s4,s3,s2,s1: in std_logic; z4,z3,z2,z1: out std_logic); end mux41; architecture art of mux41 is begin process(s4, s3, s2, s1) variable sel: integer range 0to15; begin sel:=0;,14:57,30,if s1=1 then sel:=sel+1; end if; if s2=1 then sel:=sel+2; end if; if s3=1 then sel:=sel+4; end if; if s4=1 t
19、hen sel:=sel+8; end if; z1z1z2z3z4=1; end case; end process; end art;,14:57,31,3、Loop 語句 loop 語句與其它高級(jí)語言中的循環(huán)語句相似。Loop 語句有三種格式。 1)無限 loop 語句 VHDL重復(fù)執(zhí)行 loop 循環(huán)內(nèi)的語句, 直至遇到 exit 語句結(jié)束循環(huán)。,loop_label:LOOP -sequential statement EXIT loop_label ; END LOOP;,14:57,32, L2: loop a:=a+1; exit L2 when a 10; end loop
20、L2; ,14:57,33,2)for loop 語句 特點(diǎn): 循環(huán)變量是 loop 內(nèi)部自動(dòng)聲明的局部量, 僅在 loop 內(nèi)可見;不需要指定其變化方式。 離散范圍必須是可計(jì)算的整數(shù)范圍: 整數(shù)表達(dá)式 to 整數(shù)表達(dá)式 整數(shù)表達(dá)式 downto 整數(shù)表達(dá)式,標(biāo)號(hào):for 循環(huán)變量 in 離散范圍 loop 順序處理語句; end loop 標(biāo)號(hào);,14:57,34,例:用 for loop 語句描述的8位奇偶校驗(yàn)電路,-奇校驗(yàn),library ieee ; use ieee.std_logic_1164.all ; entity parity_check is port(a: in std_
21、logic_vector(7 downto to ) ; y: out std_logic); end parity_check ; architecture rtl of parity_check is begin process(a) variable tmp: std_logic ; begin tmp := 1 ; for i in 0 to 7 loop tmp := tmp xor a(i) ; end loop ; y = tmp ; end process ; end rtl ;,14:57,35,8位奇校驗(yàn)電路仿真結(jié)果:,14:57,36,將變量tmp的初值改為0,則為偶校驗(yàn)
22、電路:,14:57,37,3)while loop 語句 例:sum:=0; i:=0; abcd: while (i10) loop sum:=sum+i; i:=i+1; end loop abcd; 注:循環(huán)變量 i 需事先定義、賦初值,并指定 其變化方式。一般綜合工具不支持 while loop 語句。,標(biāo)號(hào):while 循環(huán)條件 loop 順序處理語句; end loop 標(biāo)號(hào);,14:57,38,例:用 whileloop 語句描述的8位奇偶校驗(yàn)電路,14:57,39,4、Next 語句 在loop 語句中 next語句用來跳出本次循環(huán)。 格式: 分三種情況: 無條件終止當(dāng)前的循環(huán)
23、,跳回到本次循環(huán) LOOP語句開始處,開始下次循環(huán)。,next 標(biāo)號(hào) when 條件表達(dá)式;,1) Next ;,14:57,40,無條件終止當(dāng)前的循環(huán),跳轉(zhuǎn)到指定標(biāo)號(hào)的LOOP語句開始處,重新開始執(zhí)行循環(huán)操作。 當(dāng)條件表達(dá)式的值為true,則執(zhí)行next語句,進(jìn)入跳轉(zhuǎn)操作,否則繼續(xù)向下執(zhí)行。,2) next 標(biāo)號(hào) ;,3) next 標(biāo)號(hào) when 條件表達(dá)式;,14:57,41,例: L1: while i10 loop L2: while j20 loop next L1 when i=j; end loop L2; end loop L1;,14:57,42,例: L_X: for c
24、nt_value in 1 to 8 loop S: a(cnt_value):= 0; k:=0; L_Y: loop S2: b(k):=0; next L_X when (e f); S3: b(k+8);=0; k:=k+1; next loop L_Y; next loop L_X;,14:57,43,5、 Exit 語句 exit 語句將結(jié)束循環(huán)狀態(tài)。 格式: next語句與exit語句的格式與操作功能非常相似,區(qū)別是:next語句是跳向loop語句的起始點(diǎn),而exit語句則是跳向loop語句的終點(diǎn)。,exit 標(biāo)號(hào) when 條件表達(dá)式;,14:57,44,例: process(
25、a) variable int_a: integer; 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 ;,14:57,45,例:比較兩個(gè)數(shù)的大小 signal a, b : std_logic_vector(3 downto 0); signal a_less_than_b : boolean; a_less_than_b=false; for i in 3 downto 0
26、loop if a(i)=1 and b(i)=0 then a_less_than_b=false; exit; elsif a(i)=0 and b(i)=1 then a_less_than_b=true; exit; else null; end if; end loop;,14:57,46,三 wait 語句 進(jìn)程在仿真時(shí)的兩個(gè)狀態(tài):執(zhí)行或掛起。 進(jìn)程狀態(tài)的變化受wait 語句或敏感信號(hào)量變 化的控制。 可設(shè)置 4種不同的條件: wait - 無限等待 wait on - 敏感信號(hào)量變化 wait until - 條件滿足(可綜合) wait for - 時(shí)間到,14:57,47,1
27、、wait on 語句 格式: 例:以下兩種描述是完全等價(jià)的 敏感信號(hào)量列表和 wait 語句只能選其一,兩 者不能同時(shí)使用。,wait on 信號(hào),信號(hào);,process(a, b) begin y= a and b; end process;,process begin y= a and b; wait on a, b; end process;,14:57,48,2、wait until 語句(可綜合) 格式: 當(dāng)表達(dá)式的值為“真”時(shí),進(jìn)程被啟動(dòng),否則 進(jìn)程被掛起。 wait until 語句的三種表達(dá)方式: wait until 信號(hào) = value; wait until 信號(hào)eve
28、nt and 信號(hào) = value; wait until not(信號(hào)stable) and 信號(hào)= value;,wait until 表達(dá)式;,14:57,49,時(shí)鐘信號(hào) clk 的上升沿的描述: wait until clk = 1; wait until rising_edge(clk); wait until clkevent and clk = 1; wait until not(clkstable) and clk=1; 由以上描述可實(shí)現(xiàn)相同的硬件電路結(jié)構(gòu)。 時(shí)鐘信號(hào)下降沿的描述?,14:57,50,例:用wait until語句描述時(shí)鐘沿,實(shí)現(xiàn)D觸發(fā)器 architectur
29、e rtl of d is begin process begin wait until clkevent and clk=1; q = d; end process; end rtl;,14:57,51,例:求平均電路 process begin wait until clkevent and clk = 1 ; ave = a; wait until clkevent and clk = 1 ; ave = ave + a ; wait until clkevent and clk = 1 ; ave = ave + a ; wait until clkevent and clk = 1
30、; ave = (ave + a)/4; end process;,14:57,52,例:同步復(fù)位功能電路 process begin - rst_loop: loop wait until clkevent and clk=1; if rst=1 then x=0; else x=a; end if; - end loop rst_loop; end process;,14:57,53,四、子程序調(diào)用語句 定義:子程序是獨(dú)立的、有名稱的算法。 過程(Procedure)和函數(shù)(Function) 過程:0 個(gè)或多個(gè) in、inout、或 out 參數(shù)。 函數(shù):0 個(gè)或多個(gè) in 參數(shù),一個(gè)
31、return 值。 子程序首:指明其名稱、參數(shù)及返回值。 子程序體:描述子程序要實(shí)現(xiàn)的功能。,14:57,54,子程序調(diào)用:在任何地方根據(jù)其名稱調(diào)用子程序 過程調(diào)用: procedure_name ( parameter_ name = expression , parameter_ name = expression) ; 函數(shù)調(diào)用: function_name ( parameter_name = expression , parameter_name = expression) ;,14:57,55,五、return 語句 return 語句只能用于子程序中,并用來終止 一個(gè)子程序的執(zhí)行
32、。 格式: 分為:1)return ; 用于過程,只是結(jié)束過程,不返回任何值。 2)return 表達(dá)式; 用于函數(shù),并且必須返回一個(gè)值。,return 表達(dá)式;,14:57,56,例:用于過程的return語句 procedure rs (s,r: in std_logic; q, nq : inout std_logic) is begin if s=1 and r=1 then report “forbidden state: s and r are equal to 1 ”; return; else q=s and nq after 5 ns; nq= a and q after 5
33、 ns; end if; end procedure rs;,14:57,57,例:用于函數(shù)的return語句 function opt (a,b,sel: std_logic ) return std_logic is begin if sel = 1 then return ( a and b ); else return (a or b ); end if; end function opt;,14:57,58,六 null 語句 null為空語句,不作任何操作。格式:,null;,14:57,59,七、其它語句和說明 屬性(attribute)描述: 屬性是某一對(duì)象的特征表示,是一個(gè)內(nèi)
34、 部預(yù)定義函數(shù)。格式為: 綜合器支持的屬性有: left、 right、 high、 low、 range、 reverse_range、 length、 event、 stable,對(duì)象名屬性標(biāo)識(shí)符,14:57,60,屬性 event 對(duì)在當(dāng)前的一個(gè)極小的時(shí)間段內(nèi)發(fā)生的事件 的情況進(jìn)行檢測(cè)。如發(fā)生事件,則返回 true,否則返回 false。 發(fā)生事件:信號(hào)電平發(fā)生變化。 clockevent,14:57,61,時(shí)鐘信號(hào)的上升沿描述: clockevent and clock = 1 時(shí)鐘信號(hào)的下降沿描述: clockevent and clock = 0 上升沿觸發(fā)器描述: process
35、(clock) begin if clockevent and clock = 1 then q = data ; end if ; end process;,14:57,62,屬性 stable 屬性 stable 的測(cè)試功能與 event剛好相反, 信號(hào)在時(shí)間段內(nèi)無事件發(fā)生,則返回 true,否 則返回 false。 以下兩語句的功能相同: clockevent and clock = 1 not ( clockstable ) and clock = 1,14:57,63,第3章 習(xí)題二 1、信號(hào)與變量的區(qū)別有哪些?信號(hào)可以用來描 述哪些硬件特性? 2、if 語句可分為哪幾種類型?如何用
36、嵌套式 if語句描述具有優(yōu)先級(jí)的電路? 3、case 語句有什么特點(diǎn)?其分支條件使用時(shí)有 哪些注意事項(xiàng)? 4、loop 語句的類型有哪些?其循環(huán)變量有什么 特點(diǎn)? 5、next 語句與 exit 語句的區(qū)別是什么? 6、wait 語句有哪些類型?wait 語句在進(jìn)程中 的作用是什么?與敏感信號(hào)表有什么關(guān)系?,14:57,64,3.5 VHDL并發(fā)語句(Concurrent),Architecture,并發(fā)語句,并發(fā)語句,并發(fā)語句,信號(hào),信號(hào),信號(hào),14:57,65,常用的并發(fā)描述語句有: 進(jìn)程(process)語句、 塊(block)語句、 順序描述語句的并行版本、 并行過程調(diào)用語句、 元件例
37、化語句、 生成語句。,14:57,66,一、進(jìn)程(process)語句 進(jìn)程(process)語句最具VHDL語言特色。提 供了一種用算法描述硬件行為的方法。 特點(diǎn): 1、進(jìn)程與進(jìn)程,或其它并發(fā)語句之間的并發(fā)性; 2、進(jìn)程內(nèi)部的順序性; 3、進(jìn)程的啟動(dòng)與掛起; 4、進(jìn)程與進(jìn)程,或其它并發(fā)語句之間的通信。,14:57,67,進(jìn)程語句 process,信號(hào),信號(hào),信號(hào),進(jìn)程語句 process,進(jìn)程語句 process,14:57,68,敏感信號(hào)表:進(jìn)程內(nèi)要讀取的所有敏感信號(hào) (包括端口)的列表。每一個(gè)敏感 信號(hào)的變化,都將啟動(dòng)進(jìn)程。 格式:,標(biāo)記: process ( 敏感信號(hào)表) 進(jìn)程說明項(xiàng)
38、begin 順序描述語句 end process 標(biāo)記;,信號(hào)名稱 ,信號(hào)名稱 ,14:57,69,敏感信號(hào)表的特點(diǎn): 1、同步進(jìn)程的敏感信號(hào)表中只有時(shí)鐘信號(hào)。 如: process(clk) begin if(clkevent and clk = 1) then if reset = 1 then data = “00”; else data = in_data; end if; end if; end process;,14:57,70,2、異步進(jìn)程敏感信號(hào)表中除時(shí)鐘信號(hào)外,還有其 它信號(hào)。 例: process(clk,reset) begin if reset = 1 then dat
39、a = “00”; elsif(clkevent and clk = 1) then data = in_data; end if; end process;,14:57,71,3、如果有 wait 語句,則不允許有敏感信號(hào)表。,PROCESS (a,b) BEGIN -sequential statements END PROCESS;,PROCESS BEGIN - sequential statements WAIT ON (a,b) ; END PROCESS;,14:57,72,4、若是組合電路,則所有進(jìn)程內(nèi)的讀信號(hào)均需出現(xiàn)在敏感列表中,process(input, sel) beg
40、in if sel = “00” then y = input(0) ; elsif sel = “01” then y = input(1) ; elsif sel = “10” then y = input(2) ; else y = input(3) ; end if ; end process ;,14:57,73,定義:給一個(gè)信號(hào)賦值,即為該信號(hào)創(chuàng)建一個(gè)驅(qū)動(dòng) 器(驅(qū)動(dòng)信號(hào))。多個(gè)進(jìn)程或并發(fā)語句給同 一個(gè)信號(hào)賦值,則該信號(hào)為多信號(hào)源驅(qū)動(dòng)。 例: a_out = a when enable_a else Z ; b_out = b when enable_b else Z ; proce
41、ss ( a_out) begin sig = a_out ; end process ; process ( b_out ) begin sig = b_out ; end process ;,三態(tài)緩沖器總線結(jié)構(gòu)與多驅(qū)動(dòng)信號(hào),14:57,74,二、塊語句 塊語句將一系列并行描述語句進(jìn)行組合,目 的是改善并行語句及其結(jié)構(gòu)的可讀性??墒菇Y(jié)構(gòu) 體層次鮮明,結(jié)構(gòu)明確。 語法如下:,標(biāo)記:block ( 塊保護(hù)表達(dá)式 ) 塊說明項(xiàng) begin 并行語句 end block 標(biāo)記 ;,14:57,75,1、塊語句的使用不影響邏輯功能 以下兩種描述結(jié)果相同: 描述一: a1: out1=1 after 2
42、 ns; a2: out2=1 after 2 ns; a3: out3=1 after 2 ns; 描述二: a1: out1=1 after 2 ns; blk1: block begin a2: out2=1 after 2 ns; a3: out3=1 after 2 ns; end block blk1;,14:57,76,2、嵌套塊 子塊聲明與父塊聲明的對(duì)象同名時(shí),子塊聲明 將忽略掉父塊聲明。,14:57,77,3、衛(wèi)式(Guarded)塊 由保護(hù)表達(dá)式值的真、假?zèng)Q定塊語句的執(zhí)行與 否。綜合不支持。,14:57,78,三 并行信號(hào)賦值語句,包括三種: 簡(jiǎn)單并行信號(hào)賦值; 條件信號(hào)賦
43、值; 選擇信號(hào)賦值。 共同特點(diǎn): 1、賦值目標(biāo)必須是信號(hào),與其它并行語句同 時(shí)執(zhí)行,與書寫順序及是否在塊語句中無關(guān)。 2、每一信號(hào)賦值語句等效于一個(gè)進(jìn)程語句。 所有輸入信號(hào)的變化都將啟動(dòng)該語句的執(zhí)行。,14:57,79,1、簡(jiǎn)單并行信號(hào)賦值語句 即:信號(hào) = 表達(dá)式 例:以下兩種描述等價(jià),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;,
44、一個(gè)簡(jiǎn)單并行信號(hào)賦值語句是一個(gè)進(jìn)程的縮寫。,14:57,80,等效:,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_LOGIC; BEGIN c = a and b; y = c; END rtl;,LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY ex2 IS PORT(a,b : I
45、N STD_LOGIC; y : OUT STD_LOGIC); END ex2; ARCHITECTURE rtl OF ex2 IS SIGNAL c : STD_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;,14:57,81,不等效:,LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY ex1 IS PO
46、RT(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_LOGIC; BEG
47、IN PROCESS(a, b, c) BEGIN c = a and b; y = c; END PROCESS; END rtl;,14:57,82,2、條件信號(hào)賦值語句 格式:,目的信號(hào)量 = 表達(dá)式1 when 條件1 else 表達(dá)式2 when 條件2 else 表達(dá)式3 when 條件3 else 表達(dá)式n;,14:57,83,例:用條件信號(hào)賦值語句描述四選一電路 entity mux4 is port(i0, i1, i2, i3, a, b : in std_logic; q : out std_logic); end mux4; architecture rtl of mu
48、x4 is signal sel : std_logic_vector (1 downto 0); begin sel=b ,14:57,84,條件信號(hào)賦值語句與進(jìn)程中的多選擇 if 語句等價(jià):,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 PROCESS;,14:57,85,3、選擇信號(hào)賦值語句 格式:,with 表達(dá)式 selec
49、t 目的信號(hào)量 = 表達(dá)式1 when 條件1, 表達(dá)式2 when 條件2, 表達(dá)式n when 條件n;,注:1)不能有重疊的條件分支。 2)最后條件可為 others。否則,其它條件 必須能包含表達(dá)式的所有可能值。 3)選擇信號(hào)賦值語句與進(jìn)程中的 case 語 句等價(jià)。,14:57,86,例:用選擇信號(hào)賦值語句描述四選一電路 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_l
50、ogic_vector (1 downto 0); begin sel=b ,14:57,87,選擇信號(hào)賦值語句與進(jìn)程中的 case 語句等價(jià):,PROCESS(sel, a, b, c, d) BEGIN CASE sel IS WHEN “00” = q q q q = d; END CASE; END PROCESS;,WITH sel SELECT q = a WHEN “00”, b WHEN “01”, c WHEN “10”, d WHEN OTHERS;,14:57,88,四 并行過程調(diào)用語句 用過程名在結(jié)構(gòu)體或塊語句中可實(shí)現(xiàn)并行過 程調(diào)用。 其作用與一個(gè)進(jìn)程等價(jià)。 格式: 過
51、程名 (參數(shù)名= 表達(dá)式 ,參數(shù)名= 表達(dá)式),14:57,89,例:并行過程調(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;,14:57,90,五 VHDL的層次化設(shè)計(jì)與元件聲明 (component) 及元件例化(instantial)語句 1、層次化設(shè)計(jì),14:57,91,2. 元件聲明 定義:對(duì)所調(diào)用的較低層次的實(shí)體模塊 (元
52、件)的名稱、類屬參數(shù)、端口 類型、數(shù)據(jù)類型的聲明。 語法:,component 元件名 is generic (類屬聲明); port (端口聲明); end component 元件名 ;,元件聲明類似實(shí)體聲明(entity),14:57,92,例:元件聲明,Component and2 Port(i1, i2: in bit ; o1: out bit); End component ;,Component add Generic(n: positive) ; Port(x, y: in bit_vector(n-1 downto 0) ; z: out bit_vector(n-1 do
53、wnto 0) ; Carry : out bit); End component ;,14:57,93,可在以下部分聲明元件: 結(jié)構(gòu)體(Architecture) 程序包(Package) 塊(Block) 被聲明元件的來源: VHDL設(shè)計(jì)實(shí)體; 其它HDL設(shè)計(jì)實(shí)體; 另外一種標(biāo)準(zhǔn)格式的文件,如EDIF或XNF; 廠商提供的工藝庫中的元件、IP核。,14:57,94,3. 元件的例化 定義:把低層元件安裝(調(diào)用)到當(dāng)前層次 設(shè)計(jì)實(shí)體內(nèi)部的過程。 包括:類屬參數(shù)傳遞、元件端口映射。,例化名稱:元件名稱 generic map ( 類屬名稱 = 表達(dá)式 ,類屬名稱 = 表達(dá)式 ) port ma
54、p ( 端口名稱 = 表達(dá)式 , 端口名稱 = 表達(dá)式 );,例: u1:ADD generic map (N = 4) port map (x,y,z,carry);,14:57,95,端口映射方式: 名稱關(guān)聯(lián)方式: 低層次端口名 =當(dāng)前層次端口名、信號(hào)名 例:or2 port map(o=n6,i1=n3,i2=n1) 位置關(guān)聯(lián)方式: (當(dāng)前層次端口名,當(dāng)前層次端口名,) 例:or2 port map( n3, n1,n6 ) 注:位置關(guān)聯(lián)方式中,例化的端口表達(dá)式 (信號(hào))必須與元件聲明語句中的端口 順序一致。,14:57,96,ENTITY exam is PORT( ea, eb :I
55、N STD_LOGIC_VECTOR(3 DOWNTO 0); ey : OUT STD_LOGIC); END exam ; ARCHITECTURE exam_arch OF exam IS COMPONENT compare PORT( a : IN STD_LOGIC_VECTOR(3 DOWNTO 0); b : IN STD_LOGIC_VECTOR(3 DOWNTO 0); y : OUT STD_LOGIC ); END COMPONENT; -元件聲明 BEGIN u1 : compare PORT MAP ( ea, eb, ey) ; -元件例化 END exam_arch ;,一個(gè)低層次設(shè)計(jì)在被例化前必須有一個(gè)元件聲明。,14:57,97,例:3 bit計(jì)數(shù)器的電路組成:,14:57,98,此電路由 9個(gè)元件組成:3個(gè)D觸發(fā)器、1個(gè)非門、1個(gè) 2 輸入或門、3個(gè)2輸入與非門、1個(gè)2輸入異或非門。對(duì)應(yīng)的元件例化(結(jié)構(gòu)化)描述如下:,14:57,99,14:57,100,14:57,101,層次化設(shè)計(jì)的優(yōu)點(diǎn): 在一個(gè)設(shè)計(jì)組中,各個(gè)設(shè)計(jì)者可獨(dú)立地以不同的設(shè)計(jì)文件設(shè)計(jì)不同的模塊元件。 各個(gè)模塊可以被其他設(shè)計(jì)者共享,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《GB-T 26790.2-2015工業(yè)無線網(wǎng)絡(luò)WIA規(guī)范 第2部分:用于工廠自動(dòng)化的WIA系統(tǒng)結(jié)構(gòu)與通信規(guī)范》專題研究報(bào)告
- 《GBT 22104-2008土壤質(zhì)量 氟化物的測(cè)定 離子選擇電極法》專題研究報(bào)告
- 《GBT 18654.13-2008養(yǎng)殖魚類種質(zhì)檢驗(yàn) 第13部分:同工酶電泳分析》專題研究報(bào)告:前沿技術(shù)與深度應(yīng)用
- 常見急癥的識(shí)別與早期處理總結(jié)2026
- 道路安全培訓(xùn)考卷課件
- 2026年河北省高職單招語文試題含答案
- 2025-2026年蘇教版四年級(jí)數(shù)學(xué)上冊(cè)期末試卷含答案
- 道法教材培訓(xùn)課件模板
- 2026年甘肅省隴南市重點(diǎn)學(xué)校高一入學(xué)英語分班考試試題及答案
- 2025胸腔鏡肺結(jié)節(jié)日間手術(shù)圍手術(shù)期健康教育專家共識(shí)課件
- 全球AI應(yīng)用平臺(tái)市場(chǎng)全景圖與趨勢(shì)洞察報(bào)告
- 產(chǎn)品防護(hù)控制程序培訓(xùn)課件
- ISO-6336-5-2003正齒輪和斜齒輪載荷能力的計(jì)算-第五部分(中文)
- 軌道線路養(yǎng)護(hù)維修作業(yè)-改道作業(yè)
- 2023-2024學(xué)年上海市閔行區(qū)四上數(shù)學(xué)期末綜合測(cè)試試題含答案
- 中鋁中州礦業(yè)有限公司禹州市方山鋁土礦礦山地質(zhì)環(huán)境保護(hù)和土地復(fù)墾方案
- 解除勞動(dòng)合同證明電子版(6篇)
- 呼吸科規(guī)培疑難病例討論
- 基于PLC控制的小型鉆床機(jī)械設(shè)計(jì)
- DB11T 290-2005山區(qū)生態(tài)公益林撫育技術(shù)規(guī)程
- 開放大學(xué)(原電視大學(xué))行政管理實(shí)務(wù)期末復(fù)習(xí)資料所有單
評(píng)論
0/150
提交評(píng)論