




已閱讀5頁(yè),還剩51頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章 VHDL基本語(yǔ)句與基本設(shè)計(jì),EDA技術(shù)與VHDL設(shè)計(jì),7.1,順序語(yǔ)句,并行語(yǔ)句,VHDL組合邏輯電路設(shè)計(jì),VHDL時(shí)序邏輯電路設(shè)計(jì),7.2,7.3,7.4,VHDL基本語(yǔ)句與基本設(shè)計(jì),順序語(yǔ)句的執(zhí)行順序與書寫順序一致,與傳統(tǒng)軟件設(shè)計(jì)語(yǔ)言的特點(diǎn)相似。順序語(yǔ)句只能用于進(jìn)程和子程序中,被用來(lái)描述組合邏輯和時(shí)序邏輯。 常用的順序描述語(yǔ)句有:賦值語(yǔ)句、IF語(yǔ)句、CASE語(yǔ)句、LOOP語(yǔ)句、NEXT語(yǔ)句、EXIT語(yǔ)句、子程序、RETURN語(yǔ)句、WAIT語(yǔ)句和NULL語(yǔ)句。,7.1 順序語(yǔ)句,信號(hào)賦值語(yǔ)句:,7.1.1 賦值語(yǔ)句,賦值目標(biāo)=賦值源;,變量賦值語(yǔ)句:,賦值目標(biāo):=賦值源;,根據(jù)語(yǔ)句所設(shè)條件,if語(yǔ)句有選擇地執(zhí)行指定的語(yǔ)句,其語(yǔ)法格式由簡(jiǎn)單到復(fù)雜可以分為三種: (1)具有開關(guān)控制的IF語(yǔ)句 (2)具有二選擇控制的IF語(yǔ)句 (3)具有多選擇控制的IF語(yǔ)句,7.1.2 IF語(yǔ)句,一般格式: if 條件 then 順序語(yǔ)句; end if; 當(dāng)條件成立,執(zhí)行順序語(yǔ)句,否則跳過(guò)語(yǔ)句。,具有開關(guān)控制的IF語(yǔ)句,if (EN=1) then A=B;- 當(dāng)條件EN=1時(shí),A隨B變化;否則,該語(yǔ)句不執(zhí)行 end if;,具有開關(guān)控制的IF語(yǔ)句舉例,一般格式: if 條件 then 順序語(yǔ)句; else 順序語(yǔ)句; end if; 條件成立執(zhí)行then后順序語(yǔ)句;否則執(zhí)行else后的順序語(yǔ)句。,具有二選擇控制的IF語(yǔ)句,if OE = 0 then Y = not x; else Y = Z; - 高阻符號(hào)“Z”要大寫 end if;,用IF語(yǔ)句描述三態(tài)非門,一般格式: if 條件 then 順序語(yǔ)句; elsif 條件 then 順序語(yǔ)句; elsif 條件 then 順序語(yǔ)句; else 順序語(yǔ)句; end if;,具有多選擇控制的IF語(yǔ)句,case語(yǔ)句根據(jù)表達(dá)式的取值直接從多組順序語(yǔ)句中選擇一組執(zhí)行,其語(yǔ)句格式為: case 表達(dá)式 is when 選擇值 = 順序語(yǔ)句; when 選擇值 = 順序語(yǔ)句; when others = 順序語(yǔ)句; end case;,7.1.3 CASE語(yǔ)句,一般格式: (1)關(guān)鍵詞others只能出現(xiàn)一次,且只能作為最后一種條件取值。使用others的目的是為了使條件句中的所有選擇值能涵蓋表達(dá)式的所有取值,以免綜合器會(huì)插入不必要的鎖存器。,使用CASE語(yǔ)句注意事項(xiàng),一般格式: (2)條件句中的選擇值必須在表達(dá)式的取值范圍內(nèi)。 (3)case語(yǔ)句中每一條件句的選擇值只能出現(xiàn)一次,不能有相同選擇值的條件語(yǔ)句出現(xiàn)。 (4)case語(yǔ)句執(zhí)行必須選中,且僅能選中所列語(yǔ)句中的一條。,使用CASE語(yǔ)句注意事項(xiàng),(1)WHEN 取值=順序語(yǔ)句: (2)WHEN 取值|取值|取值=順序語(yǔ)句: (3)WHEN 取值 TO 取值=順序語(yǔ)句; (4)WHEN 取值 DOWNTO 取值=順序語(yǔ)句; (5)WHEN OTHERS=順序語(yǔ)句;,CASE語(yǔ)句中WHEN字句書寫格式,d0d0d1d2d3=d; END CASE;,CASE語(yǔ)句應(yīng)用舉例,LOOP語(yǔ)句與其它高級(jí)語(yǔ)言中的循環(huán)語(yǔ)句相似,它可以使所包含的一組順序語(yǔ)句被循環(huán)執(zhí)行,其執(zhí)行次數(shù)可由設(shè)定的循環(huán)參數(shù)決定。LOOP語(yǔ)句有三種格式: (1)無(wú)限LOOP語(yǔ)句 (2)FOR_LOOP語(yǔ)句 (3)WHILE_LOOP語(yǔ)句,7.1.4 LOOP語(yǔ)句,標(biāo)號(hào):LOOP 順序語(yǔ)句 EXIT 標(biāo)號(hào); END LOOP; 舉例: L2 : LOOP a: = a+1 ; EXIT L2 WHEN a10 ; END LOOP L2 ;,無(wú)限LOOP語(yǔ)句,標(biāo)號(hào):FOR 循環(huán)變量 IN 離散范圍 LOOP 順序處理語(yǔ)句; END LOOP 標(biāo)號(hào); 注意: (1)循環(huán)變量是LOOP內(nèi)部自動(dòng)聲明的局部量,僅在LOOP內(nèi)可見。 (2)離散范圍必須是可計(jì)算的整數(shù)范圍。循環(huán)次數(shù)范圍規(guī)定LOOP語(yǔ)句中的順序語(yǔ)句被執(zhí)行的次數(shù)。,FOR_LOOP語(yǔ)句,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語(yǔ)句描述8位奇偶校驗(yàn)電路,標(biāo)號(hào):WHILE 循環(huán)條件 LOOP 順序處理語(yǔ)句; END LOOP 標(biāo)號(hào); 例: sum := 0 ;i := 0 ; abcd : WHILE ( i10 ) LOOP sum:=sum+i; i:=i+1; END LOOP abcd ;,WHILE_LOOP語(yǔ)句,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語(yǔ)句描述8位奇偶校驗(yàn)電路,在LOOP語(yǔ)句中,NEXT語(yǔ)句用來(lái)跳出本次循環(huán)。其格式分三種: (1)NEXT:無(wú)條件終止當(dāng)前的循環(huán),跳回到本次循環(huán)LOOP語(yǔ)句開始處,開始下次循環(huán)。 (2)NEXT: 標(biāo)號(hào); 無(wú)條件終止當(dāng)前的循環(huán),跳轉(zhuǎn)到指定標(biāo)號(hào)的LOOP語(yǔ)句開始處,重新開始執(zhí)行循環(huán)操作。 (3)NEXT 標(biāo)號(hào) WHEN 條件表達(dá)式;,7.1.5 NEXT語(yǔ)句,L1: WHILE i10 LOOP L2: WHILE j20 LOOP NEXT L1 WHEN i=j; END LOOP L2 ; END LOOP L1 ;,NEXT語(yǔ)句舉例,EXIT語(yǔ)句是LOOP語(yǔ)句的內(nèi)部循環(huán)控制語(yǔ)句,作用是結(jié)束循環(huán)狀態(tài)。而區(qū)別在于NEXT語(yǔ)句是跳向LOOP語(yǔ)句的起始點(diǎn),EXIT語(yǔ)句則是跳向LOOP語(yǔ)句的終點(diǎn)。 EXIT的語(yǔ)句格式也有3種: (1)EXIT ; (2)EXIT LOOP 標(biāo)號(hào); (3)EXIT LOOP 標(biāo)號(hào) WHEN 條件表達(dá)式;,7.1.6 EXIT語(yǔ)句,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語(yǔ)句舉例,在進(jìn)程中(包括過(guò)程中),當(dāng)執(zhí)行到WAIT(等待語(yǔ)句時(shí)),運(yùn)行程序?qū)⒈粧炱穑钡綕M足此語(yǔ)句設(shè)置的結(jié)束掛起條件后,才重新開始執(zhí)行進(jìn)程或過(guò)程中的程序。WAIT語(yǔ)句有以下四種不同的語(yǔ)句格式: (1)WAIT -無(wú)限等待 (2)WAIT ON -敏感信號(hào)量變換 (3)WAIT UNTIL -條件滿足(可綜合) (4)WAIT FOR -時(shí)間到,7.1.7 WAIT語(yǔ)句,進(jìn)程中其一般格式為:WAIT ON 信號(hào),信號(hào); 例如,以下兩種描述是完全等價(jià)的: PROCESS(a,b) PROCESS BEGIN BEGIN y=a AND b; y=a AND b; END PROCESS; WAIT ON a, b; END PROCESS; 敏感信號(hào)量列表和WAIT語(yǔ)句選其一,不能同時(shí)使用。,1. WAIT ON語(yǔ)句,進(jìn)程中其一般格式為:WAIT UNTIL 表達(dá)式; 例如,WAIT UNTIL語(yǔ)句有三種表達(dá)方式: (1)WAIT UNTIL 信號(hào)某個(gè)數(shù)值; (2)WAIT UNTIL 信號(hào)EVENT AND 信號(hào)某個(gè)數(shù)值; (3)WAIT UNTIL NOT(信號(hào)STABLE)AND 信號(hào)某個(gè)數(shù)值;,2. WAIT UNTIL語(yǔ)句,在進(jìn)程中允許對(duì)子程序進(jìn)行調(diào)用。對(duì)子程序的調(diào)用語(yǔ)句是順序語(yǔ)句的一部分。 子程序包括過(guò)程和函數(shù),可以在VHFL的結(jié)構(gòu)體或程序包中的任何位置對(duì)子程序進(jìn)行調(diào)用。子程序調(diào)用可以在任何地方根據(jù)其名稱調(diào)用子程序。,7.1.8 子程序調(diào)用語(yǔ)句,調(diào)用過(guò)程的語(yǔ)句格式如下: 過(guò)程名(參數(shù)名=表達(dá)式,參數(shù)名=表達(dá)式); 其中表達(dá)式也稱為實(shí)參,它可以是一個(gè)具體的數(shù)值,也可以是一個(gè)標(biāo)識(shí)符,是當(dāng)前調(diào)用程序中過(guò)程形參的接受體。,過(guò)程調(diào)用,函數(shù)調(diào)用與過(guò)程調(diào)用十分類似,不同之處是調(diào)用函數(shù)將返回一個(gè)指定類型的值,函數(shù)的參量只能是輸入值。 函數(shù)調(diào)用的一般格式為: 函數(shù)名(參數(shù)名=表達(dá)式,參數(shù)名=表達(dá)式);,函數(shù)調(diào)用,7.2 并行語(yǔ)句,并行信號(hào)賦值語(yǔ)句 進(jìn)程語(yǔ)句 并行過(guò)程調(diào)用語(yǔ)句 元器件例化語(yǔ)句 生成語(yǔ)句,33/38,7.2.1 并行信號(hào)賦值語(yǔ)句,三種并行信號(hào)賦值: 簡(jiǎn)單信號(hào)賦值 條件信號(hào)賦值 選擇信號(hào)賦值,34/38,1. 并行簡(jiǎn)單信號(hào)賦值語(yǔ)句,35/38,2. 條件信號(hào)賦值語(yǔ)句,36/38,用when-else語(yǔ)句描述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;,信號(hào)定義成比特類型,可取0和1。,如果把=1去掉,結(jié)果如何?,37/38,用when-else語(yǔ)句描述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;,問(wèn)題:如果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. 選擇信號(hào)賦值語(yǔ)句,39/38,問(wèn)題:如果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,如果信號(hào)類型換成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模型并行信號(hào)賦值,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;,信號(hào)賦值執(zhí)行是并行的,與語(yǔ)句放置的位置先后無(wú)關(guān)。,42/38,7.2.2 進(jìn)程語(yǔ)句,過(guò)程語(yǔ)句有 (1)隱含的過(guò)程: 并行信號(hào)賦值語(yǔ)句 元件語(yǔ)句 過(guò)程的敏感信號(hào)在表達(dá)式右邊。 (2)直接的過(guò)程: 也是并行語(yǔ)句 只包括順序語(yǔ)句,- Explicit Process Statement PROCESS (敏感信號(hào)表) Constant Declarations Type Declarations Variable Declarations BEGIN - 順序語(yǔ)句 #1; - - 順序語(yǔ)句 #N ; END PROCESS;,43/38,Process語(yǔ)句的執(zhí)行,process語(yǔ)句靠wait語(yǔ)句和敏感信號(hào)表來(lái)控制語(yǔ)句執(zhí)行次數(shù)。 敏感信號(hào)表隱含著在process的后面有一個(gè)wait語(yǔ)句。 一個(gè)process可以有多個(gè)wait語(yǔ)句。 Process必須具有敏感信號(hào)表和wait語(yǔ)句中的一個(gè)。. 注意:邏輯綜合將對(duì)wait和敏感信號(hào)表作出限制。,process (a,b) begin -sequential statements end process; process begin - sequential statements wait on (a,b) ; end process;,44/38,多進(jìn)程語(yǔ)句,一個(gè)構(gòu)造體可以有多個(gè)process。 process之間是并發(fā)的。 在process內(nèi)部,語(yǔ)句執(zhí)行是有順序的。,構(gòu) 造 體,process1,processN,信號(hào),信號(hào),45/38,VHDL模型多進(jìn)程語(yǔ)句,process語(yǔ)句的執(zhí)行是并行的,與位置沒(méi)有關(guān)系。,在process內(nèi)的語(yǔ)句執(zhí)行是順序的。,process語(yǔ)句內(nèi)也可進(jìn)行信號(hào)賦值。,46/38,信號(hào)賦值延時(shí)(Delay),信號(hào)賦值可以在process語(yǔ)句內(nèi)部也可以在外部進(jìn)行(如三種并行賦值語(yǔ)句)。 信號(hào)賦值發(fā)生時(shí)會(huì)有時(shí)延,延時(shí)的類型有兩種: 固有(Inertial)延時(shí)(缺省的) 信號(hào)在傳輸過(guò)程中會(huì)時(shí)間長(zhǎng)度
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025電子產(chǎn)品買賣合同范本AA
- 《羅馬化時(shí)代的文化》課件
- 2025辦公用品采購(gòu)合同書協(xié)議模板
- 2025古董買賣合同范本(標(biāo)準(zhǔn)版)
- 《糖尿病診治進(jìn)展》課件
- 《宮腔鏡檢查術(shù)體會(huì)》課件
- 市政施工資料培訓(xùn)大綱
- 涇界小學(xué)畢業(yè)班全程復(fù)習(xí)計(jì)劃
- 消費(fèi)品以舊換新策略的創(chuàng)新路徑與實(shí)施方案
- 推動(dòng)智慧農(nóng)業(yè)發(fā)展新舉措
- (三診)綿陽(yáng)市高中2022級(jí)高三第三次診斷性考試地理試卷A卷(含答案)
- 店長(zhǎng)勞務(wù)合同協(xié)議
- 乳腺癌診治指南與規(guī)范(2025年版)解讀
- 肺癌化療護(hù)理查房
- 2025年04月中共北京市大興區(qū)委政法委員會(huì)公開招聘臨時(shí)輔助用工4人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- GB/T 18655-2025車輛、船和內(nèi)燃機(jī)無(wú)線電騷擾特性用于保護(hù)車載接收機(jī)的限值和測(cè)量方法
- 銀行系統(tǒng)招聘考試(經(jīng)濟(jì)、金融、會(huì)計(jì))模擬試卷14
- 2025屆百師聯(lián)盟高三聯(lián)考模擬預(yù)測(cè)(沖刺二)語(yǔ)文試題含答案
- 心理韌性在咨詢中的重要性試題及答案
- 2025年全國(guó)普通話水平測(cè)試訓(xùn)練題庫(kù)及答案
- 2025年陜西新華出版?zhèn)髅郊瘓F(tuán)新華書店分公司招聘筆試參考題庫(kù)附帶答案詳解
評(píng)論
0/150
提交評(píng)論