基本語句與基本設(shè)計(jì).ppt_第1頁
基本語句與基本設(shè)計(jì).ppt_第2頁
基本語句與基本設(shè)計(jì).ppt_第3頁
基本語句與基本設(shè)計(jì).ppt_第4頁
基本語句與基本設(shè)計(jì).ppt_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第7章 VHDL基本語句與基本設(shè)計(jì),EDA技術(shù)與VHDL設(shè)計(jì),7.1,順序語句,并行語句,VHDL組合邏輯電路設(shè)計(jì),VHDL時(shí)序邏輯電路設(shè)計(jì),7.2,7.3,7.4,VHDL基本語句與基本設(shè)計(jì),順序語句的執(zhí)行順序與書寫順序一致,與傳統(tǒng)軟件設(shè)計(jì)語言的特點(diǎn)相似。順序語句只能用于進(jìn)程和子程序中,被用來描述組合邏輯和時(shí)序邏輯。 常用的順序描述語句有:賦值語句、IF語句、CASE語句、LOOP語句、NEXT語句、EXIT語句、子程序、RETURN語句、WAIT語句和NULL語句。,7.1 順序語句,信號賦值語句:,7.1.1 賦值語句,賦值目標(biāo)=賦值源;,變量賦值語句:,賦值目標(biāo):=賦值源;,根據(jù)語句所設(shè)條件,if語句有選擇地執(zhí)行指定的語句,其語法格式由簡單到復(fù)雜可以分為三種: (1)具有開關(guān)控制的IF語句 (2)具有二選擇控制的IF語句 (3)具有多選擇控制的IF語句,7.1.2 IF語句,一般格式: if 條件 then 順序語句; end if; 當(dāng)條件成立,執(zhí)行順序語句,否則跳過語句。,具有開關(guān)控制的IF語句,if (EN=1) then A=B;- 當(dāng)條件EN=1時(shí),A隨B變化;否則,該語句不執(zhí)行 end if;,具有開關(guān)控制的IF語句舉例,一般格式: if 條件 then 順序語句; else 順序語句; end if; 條件成立執(zhí)行then后順序語句;否則執(zhí)行else后的順序語句。,具有二選擇控制的IF語句,if OE = 0 then Y = not x; else Y = Z; - 高阻符號“Z”要大寫 end if;,用IF語句描述三態(tài)非門,一般格式: if 條件 then 順序語句; elsif 條件 then 順序語句; elsif 條件 then 順序語句; else 順序語句; end if;,具有多選擇控制的IF語句,case語句根據(jù)表達(dá)式的取值直接從多組順序語句中選擇一組執(zhí)行,其語句格式為: case 表達(dá)式 is when 選擇值 = 順序語句; when 選擇值 = 順序語句; when others = 順序語句; end case;,7.1.3 CASE語句,一般格式: (1)關(guān)鍵詞others只能出現(xiàn)一次,且只能作為最后一種條件取值。使用others的目的是為了使條件句中的所有選擇值能涵蓋表達(dá)式的所有取值,以免綜合器會(huì)插入不必要的鎖存器。,使用CASE語句注意事項(xiàng),一般格式: (2)條件句中的選擇值必須在表達(dá)式的取值范圍內(nèi)。 (3)case語句中每一條件句的選擇值只能出現(xiàn)一次,不能有相同選擇值的條件語句出現(xiàn)。 (4)case語句執(zhí)行必須選中,且僅能選中所列語句中的一條。,使用CASE語句注意事項(xiàng),(1)WHEN 取值=順序語句: (2)WHEN 取值|取值|取值=順序語句: (3)WHEN 取值 TO 取值=順序語句; (4)WHEN 取值 DOWNTO 取值=順序語句; (5)WHEN OTHERS=順序語句;,CASE語句中WHEN字句書寫格式,d0d0d1d2d3=d; END CASE;,CASE語句應(yīng)用舉例,LOOP語句與其它高級語言中的循環(huán)語句相似,它可以使所包含的一組順序語句被循環(huán)執(zhí)行,其執(zhí)行次數(shù)可由設(shè)定的循環(huán)參數(shù)決定。LOOP語句有三種格式: (1)無限LOOP語句 (2)FOR_LOOP語句 (3)WHILE_LOOP語句,7.1.4 LOOP語句,標(biāo)號:LOOP 順序語句 EXIT 標(biāo)號; END LOOP; 舉例: L2 : LOOP a: = a+1 ; EXIT L2 WHEN a10 ; END LOOP L2 ;,無限LOOP語句,標(biāo)號:FOR 循環(huán)變量 IN 離散范圍 LOOP 順序處理語句; END LOOP 標(biāo)號; 注意: (1)循環(huán)變量是LOOP內(nèi)部自動(dòng)聲明的局部量,僅在LOOP內(nèi)可見。 (2)離散范圍必須是可計(jì)算的整數(shù)范圍。循環(huán)次數(shù)范圍規(guī)定LOOP語句中的順序語句被執(zhí)行的次數(shù)。,FOR_LOOP語句,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY parity_check IS PORT( a: IN STD_LOGIC_VECTOR( 7 DOWNTO 0 ) ; y: OUT STD_LOGIC ) ; END ENTITY parity_check; ARCHITECTURE one 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;,用FOR LOOP語句描述8位奇偶校驗(yàn)電路,標(biāo)號:WHILE 循環(huán)條件 LOOP 順序處理語句; END LOOP 標(biāo)號; 例: sum := 0 ;i := 0 ; abcd : WHILE ( i10 ) LOOP sum:=sum+i; i:=i+1; END LOOP abcd ;,WHILE_LOOP語句,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY parity_check IS PORT( a: IN STD_LOGIC_VECTOR( 7 DOWNTO 0 ) ; y: OUT STD_LOGIC ) ; END ENTITY parity_check; ARCHITECTURE one OF parity_check IS BEGIN PROCESS( a ) VARIABLE tmp: STD_LOGIC;VARIABLE i: INTEGER ; BEGIN tmp: =0 ; i := 0 ; WHILE ( i8 ) LOOP tmp: tmp xor a( i ) ; i:=i+1; END LOOP; y=tmp ; END PROCESS; END;,用WHILE_LOOP語句描述8位奇偶校驗(yàn)電路,在LOOP語句中,NEXT語句用來跳出本次循環(huán)。其格式分三種: (1)NEXT:無條件終止當(dāng)前的循環(huán),跳回到本次循環(huán)LOOP語句開始處,開始下次循環(huán)。 (2)NEXT: 標(biāo)號; 無條件終止當(dāng)前的循環(huán),跳轉(zhuǎn)到指定標(biāo)號的LOOP語句開始處,重新開始執(zhí)行循環(huán)操作。 (3)NEXT 標(biāo)號 WHEN 條件表達(dá)式;,7.1.5 NEXT語句,L1: WHILE i10 LOOP L2: WHILE j20 LOOP NEXT L1 WHEN i=j; END LOOP L2 ; END LOOP L1 ;,NEXT語句舉例,EXIT語句是LOOP語句的內(nèi)部循環(huán)控制語句,作用是結(jié)束循環(huán)狀態(tài)。而區(qū)別在于NEXT語句是跳向LOOP語句的起始點(diǎn),EXIT語句則是跳向LOOP語句的終點(diǎn)。 EXIT的語句格式也有3種: (1)EXIT ; (2)EXIT LOOP 標(biāo)號; (3)EXIT LOOP 標(biāo)號 WHEN 條件表達(dá)式;,7.1.6 EXIT語句,PROCESS (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;,EXIT語句舉例,在進(jìn)程中(包括過程中),當(dāng)執(zhí)行到WAIT(等待語句時(shí)),運(yùn)行程序?qū)⒈粧炱?,直到滿足此語句設(shè)置的結(jié)束掛起條件后,才重新開始執(zhí)行進(jìn)程或過程中的程序。WAIT語句有以下四種不同的語句格式: (1)WAIT -無限等待 (2)WAIT ON -敏感信號量變換 (3)WAIT UNTIL -條件滿足(可綜合) (4)WAIT FOR -時(shí)間到,7.1.7 WAIT語句,進(jìn)程中其一般格式為:WAIT ON 信號,信號; 例如,以下兩種描述是完全等價(jià)的: PROCESS(a,b) PROCESS BEGIN BEGIN y=a AND b; y=a AND b; END PROCESS; WAIT ON a, b; END PROCESS; 敏感信號量列表和WAIT語句選其一,不能同時(shí)使用。,1. WAIT ON語句,進(jìn)程中其一般格式為:WAIT UNTIL 表達(dá)式; 例如,WAIT UNTIL語句有三種表達(dá)方式: (1)WAIT UNTIL 信號某個(gè)數(shù)值; (2)WAIT UNTIL 信號EVENT AND 信號某個(gè)數(shù)值; (3)WAIT UNTIL NOT(信號STABLE)AND 信號某個(gè)數(shù)值;,2. WAIT UNTIL語句,在進(jìn)程中允許對子程序進(jìn)行調(diào)用。對子程序的調(diào)用語句是順序語句的一部分。 子程序包括過程和函數(shù),可以在VHFL的結(jié)構(gòu)體或程序包中的任何位置對子程序進(jìn)行調(diào)用。子程序調(diào)用可以在任何地方根據(jù)其名稱調(diào)用子程序。,7.1.8 子程序調(diào)用語句,調(diào)用過程的語句格式如下: 過程名(參數(shù)名=表達(dá)式,參數(shù)名=表達(dá)式); 其中表達(dá)式也稱為實(shí)參,它可以是一個(gè)具體的數(shù)值,也可以是一個(gè)標(biāo)識符,是當(dāng)前調(diào)用程序中過程形參的接受體。,過程調(diào)用,函數(shù)調(diào)用與過程調(diào)用十分類似,不同之處是調(diào)用函數(shù)將返回一個(gè)指定類型的值,函數(shù)的參量只能是輸入值。 函數(shù)調(diào)用的一般格式為: 函數(shù)名(參數(shù)名=表達(dá)式,參數(shù)名=表達(dá)式);,函數(shù)調(diào)用,7.2 并行語句,并行信號賦值語句 進(jìn)程語句 并行過程調(diào)用語句 元器件例化語句 生成語句,33/38,7.2.1 并行信號賦值語句,三種并行信號賦值: 簡單信號賦值 條件信號賦值 選擇信號賦值,34/38,1. 并行簡單信號賦值語句,35/38,2. 條件信號賦值語句,36/38,用when-else語句描述2選一的MUX,entity mux2to1 is port(a,b:in bit; sel:in bit; y:out bit); end mux2to1; architecture one of mux2to1 is begin y=b when sel=1 else a; end one;,信號定義成比特類型,可取0和1。,如果把=1去掉,結(jié)果如何?,37/38,用when-else語句描述4選1的MUX,entity mux4to1 is port(a,b,c,d:in bit; sel1,sel0:in bit; y:out bit); end mux4to1; architecture one of mux4to1 is begin y=a when (sel1=0) and (sel0=0) else b when (sel1=0) and (sel0=1) else c when (sel1=1) and (sel0=0) else d; end one;,問題:如果00時(shí)選a,01時(shí)選b,10和11時(shí)都選c,怎么辦?,y=a when (sel1=0) and (sel0=0) else b when (sel1=0) and (sel0=1) else c when (sel1=1) and (sel0=0) else d;,38/38,3. 選擇信號賦值語句,39/38,問題:如果00時(shí)選a,01時(shí)選b,10和11時(shí)都選c,怎么辦?,architecture one of mux4to1 is signal sel:bit_vector(1 downto 0); begin sel(1)=sel1; sel(0)=sel0; with sel select y=a when “00“, b when “01“, c when others; end one;,entity mux4to1 is port(a,b,c:in bit; sel1,sel0:in bit; y:out bit); end mux4to1;,注意:when others包含那些未被列出的可能。,40/38,如果信號類型換成STD_LOGIC,library ieee; use ieee.std_logic_1164.all; entity mux4to1 is port(a,b,c:in std_logic; sel1,sel0:in std_logic; y:out std_logic); end mux4to1;,architecture one of mux4to1 is signal sel:std_logic_vector(1 downto 0); begin sel(1)=sel1; sel(0)=sel0; with sel select y=a when “00“, b when “01“, c when others; end one;,41/38,VHDL模型并行信號賦值,library ieee; use ieee.std_logic_1164.all; entity cmpl_sig is port ( a, b, sel : in std_logic; x, y, z : out std_logic); end cmpl_sig;,architecture logic of cmpl_sig is begin x = (a and not sel) or (b and sel); y = a when sel=0 else b; with sel select z = a when 0, b when 1, 0 when others; end logic;,信號賦值執(zhí)行是并行的,與語句放置的位置先后無關(guān)。,42/38,7.2.2 進(jìn)程語句,過程語句有 (1)隱含的過程: 并行信號賦值語句 元件語句 過程的敏感信號在表達(dá)式右邊。 (2)直接的過程: 也是并行語句 只包括順序語句,- Explicit Process Statement PROCESS (敏感信號表) Constant Declarations Type Declarations Variable Declarations BEGIN - 順序語句 #1; - - 順序語句 #N ; END PROCESS;,43/38,Process語句的執(zhí)行,process語句靠wait語句和敏感信號表來控制語句執(zhí)行次數(shù)。 敏感信號表隱含著在process的后面有一個(gè)wait語句。 一個(gè)process可以有多個(gè)wait語句。 Process必須具有敏感信號表和wait語句中的一個(gè)。. 注意:邏輯綜合將對wait和敏感信號表作出限制。,process (a,b) begin -sequential statements end process; process begin - sequential statements wait on (a,b) ; end process;,44/38,多進(jìn)程語句,一個(gè)構(gòu)造體可以有多個(gè)process。 process之間是并發(fā)的。 在process內(nèi)部,語句執(zhí)行是有順序的。,構(gòu) 造 體,process1,processN,信號,信號,45/38,VHDL模型多進(jìn)程語句,process語句的執(zhí)行是并行的,與位置沒有關(guān)系。,在process內(nèi)的語句執(zhí)行是順序的。,process語句內(nèi)也可進(jìn)行信號賦值。,46/38,信號賦值延時(shí)(Delay),信號賦值可以在process語句內(nèi)部也可以在外部進(jìn)行(如三種并行賦值語句)。 信號賦值發(fā)生時(shí)會(huì)有時(shí)延,延時(shí)的類型有兩種: 固有(Inertial)延時(shí)(缺省的) 信號在傳輸過程中會(huì)時(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ǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論