版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、 VHDL語言的主要描述語句按照語句的執(zhí)行順序?qū)HDL語言進行分類,包含兩類語句:l 并行描述語句 該語句的執(zhí)行與書寫順序無關,總是同時被執(zhí)行l(wèi) 順序描述語句 從仿真的角度,該語句是順序執(zhí)行的 進程語句(PROCESS)是最典型的并行語句,一個構(gòu)造體內(nèi)可以有幾個進程語句同時存在,而且并發(fā)執(zhí)行。但是進程內(nèi)部的所有語句都是順序語句。一、 順序描述語句順序描述語句只能用在進程和子程序中,它和其他高級語言一樣,其語句是按照語句的出現(xiàn)的順序加以執(zhí)行的。如下分別介紹有關的順序描述語句.1. WAIT語句 進程在執(zhí)行過程中總是處于兩種狀態(tài):執(zhí)行或掛起,進程的狀態(tài)變化受等待語句的控制,當進程執(zhí)行到等待語句,
2、就被掛起,并等待再次執(zhí)行進程.等待語句的格式:WAIT 無限等待 WAIT ON 敏感信號變化 WAIT UNTIL 條件滿足 WAIT FOR 時間到(1)WAIT ON格式:WAIT ON 信號,信號例5-1PROCESS(a,b) BEGIN y<=a AND b;END PROCESS;該例中的進程與下例中進程相同:例5-1PROCESSBEGINy<=a AND b; WAIT ON a,b;END PROCESS;例5-2PROCESS(a,b)BEGINy<=a AND b;WAIT ON a,b;END PROCESS;(2)WAIT UNTIL 直到條件滿足
3、格式: WAIT UNTIL 布爾表達式當進程執(zhí)行到該語句時,被掛起;若布爾表達式為真時,進程將被啟動.例: WAIT UNTIL (x*10)<100)(3)WAIT FOR等到時間到格式: WAIT FOR 時間表達式 當進程執(zhí)行到該語句時,被掛起;等待一定的時間后,進程將被啟動.例: WAIT FOR 20 ns; WAIT FOR (a*(b+c);(4)多條件WAIT 語句例: WAIT ON nmi,interrupt UNTIL (nmi=TRUE) OR (interrupt=TRUE) FOR 5 us 該等待有三個條件: 第一,信號nmi和interrupt 任何一個
4、有一次刷新動作 第二, 信號nmi和interrupt 任何一個為真 第三, 已等待5 us只要一個以上的條件被滿足,進程就被啟動.*注意:多條件等待時,表達式的值至少應包含一個信號量的值。(5) 超時等待例 53例 542. 斷言語句(ASSERT)(主要用于仿真、調(diào)試)格式: ASSERT 條件 REPORT 輸出信息SEVERITY 級別執(zhí)行到斷言語句時,判斷條件,若條件滿足就繼續(xù)執(zhí)行,否則輸出文字串和錯誤級別信息.例: ASSERT (tiaojian=1)REPORT “some thing wrong”SEVERITY ERROR;3. 信號代入語句 格式: 目的信號量<=信
5、號量表達式例: a<=b;(注意區(qū)別小于等于)4. 變量賦值語句 格式: 目的變量:=表達式例: c:=a+d5. IF 語句三種書寫格式:1) IF的門閂控制格式:IF 條件 THEN 順序執(zhí)行語句; END IF; 例55IF (a=1) THENc<=b;END IF;例562) IF 語句的二選擇控制格式:IF 條件 THEN 順序執(zhí)行語句; ELSE 順序執(zhí)行語句; END IF;例57ARCHITECTURE rt1 OF mux2 IS BEGIN PROCESS(a,b,sel) BEGINIF(sel=1) THEN c<=a;ELSEc<=b;END
6、 IF;END PROCESS; END rt1;3)IF 語句的多選擇控制 格式:IF 條件 THEN 順序執(zhí)行語句 ELSIF 條件 THEN 順序執(zhí)行語句 : : ELSIF 條件 THEN 順序執(zhí)行語句 ELSIF 條件 THEN 順序執(zhí)行語句 END IF;例如:58LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux4 ISPORT(input :IN STD_LOGIC_VECTOR(3 DOWNTO 0);sel: IN STD_LOGIC_VECTOR(1 DOWNTO 0);q: OUT STD_LOGIC); END
7、mux4; ARCHITECTURE rt1 OF mux4 IS BEGIN nn: PROCESS(input,sel) BEGIN IF (sel='00') THEN q<=input(0); ELSIF (sel='01') THEN q<=input(1); ELSIF (sel='10') THEN q<=input(2); ELSE q<=input(3); ENDIF; END PROCESS nn; END rt1;注意:條件判斷輸出是布爾量。6. CASE 語句常用來描述總線、編碼和譯碼的行為。格式:
8、 CASE 表達式 ISWHEN 條件表達式=>順序處理語句ENDCASE;其中WHEN的條件表達式可以有4種形式:WHEN 值=>順序處理語句WHEN 值|值|值|值=>順序處理語句WHEN 值TO 值=>順序處理語句WHEN OTHERS=>順序處理語句例:5-9 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux43 IS PORT(a,b,i0,i1,i2,i3 :IN STD_LOGIC; q : OUT STD_LOGIC); END mux43; ARCHITECTURE mux4_behave
9、 OF mux43 IS SIGNAL sel: INTEGER RANGE 0 TO 3; BEGIN nn: PROCESS(a,b,i0,i1,i2,i3) BEGIN sel<=0; IF (a='1') THEN sel<=sel+1; END IF; IF (b='1') THEN sel<=sel+2; END IF; CASE sel IS WHEN 0 =>q<=i0; WHEN 1 =>q<=i1; WHEN 2 =>q<=i2; WHEN 3 =>q<=i3; END CAS
10、E; END PROCESS nn;END mux4_behave;例5-10 3-8譯碼器LIBRARY ieee;USE ieee.std_logic_1164.all;entity decoder38 is port(a,b,c,g1,g2a,g2b: in std_logic; y: out std_logic_vector(7 downto 0); end decoder38;architecture behave38 OF decoder38 issignal indata: std_logic_vector(2 downto 0);begin indata<=c&b
11、&a; process(indata,g1,g2a,g2b) begin if(g1='1' and g2a='0' and g2b='0') then case indata is when "000"=>y<="11111110" when "001"=>y<="11111101" when "010"=>y<="11111011" when "011"=>
12、;y<="11110111" when "100"=>y<="11101111" when "101"=>y<="11011111" when "110"=>y<="10111111" when "111"=>y<="01111111" when others=>y<="XXXXXXXX" end case; else y<=
13、"11111111" end if; end process;end behave38;例5-11LIBRARY ieee;USE ieee.std_logic_1164.all;entity encoder isport(input: in std_logic_vector(7 downto 0); y: out std_logic_vector(2 downto 0);end encoder;architecture behave OF encoder isbeginprocess(input)begincase input iswhen”01111111” =>
14、 y <= “111”;when”10111111” => y <= “110”;when”11011111” => y <= “101”;when”11101111” => y <= “100”;when”11110111” => y <= “011”;when”11111011” => y <= “010”;when”11111101” => y <= “001”;when”11111110” => y <= “000”;when others => y <= “xxx”;end case
15、;end process;end behave;表5-1 優(yōu)先級編碼器的真值表輸入輸出input(7)input(6)input(5)input(4)input(3)input(2)input(1)input(0)Y2Y1Y0XXxXXxX0111XXXXXX01110XXXXx011101XXXX0111100XxX01111011xX011111010X0111111001X1111111000例512LIBRARY ieee;USE ieee.std_logic_1164.all;entity prior is port( input: in std_logic_vector(7 dow
16、nto 0); y: out std_logic_vector(2 downto 0); end prior;architecture be_prior OF prior isbegin process(input) begin if(input(0)='0') then y<="111" elsif (input(1)='0') then y<="110" elsif (input(2)='0') then y<="101" elsif (input(3)='
17、0') then y<="100" elsif (input(4)='0') then y<="011" elsif (input(5)='0') then y<="010" elsif (input(6)='0') then y<="001"elsey<="000" end if; end process;end be_prior;7. LOOP語句格式一:標號: FOR循環(huán)變量 IN離散范圍LOOP 順序處
18、理語句; END LOOP 標號;例: ASUM: FOR i IN 1 TO 9 LOOP sum=1+sum; END LOOP ASUM;例513:位奇偶校驗電路 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY pc IS PORT(a : IN STD_LOGIC_VECTOR(7 DOWNTO 0); y : OUT STD_LOGIC); END pc; ARCHITECTURE behave OF pc IS BEGIN cbc: PROCESS(a) VARIABLE tmp: STD_LOGIC; BEGIN tmp:=
19、39;0' FOR i IN 0 TO 7 LOOP tmp:=tmp XOR a(i); END LOOP; y<=tmp; END PROCESS cbc; END behave;格式二: 標號: WHILE 條件 LOOP 順序處理語句; END LOOP 標號; 在該語句中,如果條件為真,則進行循環(huán),否則結(jié)束循環(huán).例: I:=1; sum:=0 abcd: WHILE (I<10) LOOP sum:=I+sum; I:=I+1; END LOOP abcd;例514:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY
20、 pc IS PORT(a : IN STD_LOGIC_VECTOR(7 DOWNTO 0); y : OUT STD_LOGIC); END pc; ARCHITECTURE behave OF pc IS BEGIN cbc: PROCESS(a) VARIABLE tmp: STD_LOGIC; BEGINtmp:='0'i:=0; WHILE (i<8) LOOP tmp:=tmp XOR a(i); i=i+1; END LOOP; y<=tmp; END PROCESS cbc; END behave;8. NEXT語句在LOOP語句中用NEXT語句跳
21、出循環(huán).格式: NEXT 標號WHEN 條件;NEXT語句用于控制內(nèi)循環(huán)的結(jié)束.例515:PROCESS (a,b)CONSTANT max_limit: INTEGER:=255BEGIN FOR I IN 0 TO max_limit LOOP IF (done(I)=TRUE) THEN NEXT; ELSE done(I):=TRUE; END IF; q(I)<=a(I) AND b(I); END LOOP;END PROCESS;9. EXIT 語句 EXIT語句用于結(jié)束LOOP循環(huán)狀態(tài).格式: EXIT 標號 WHEN 條件例516: PROCESS(a)VARIABLE
22、 int_a :INTEGER;BEGIN int_a:=a FOR I=0 IN 0 TO max_limit LOOP IF (int_a<=0) THEN EXIT; ELSE int_a:=int_a-1; q(I)<=3.1416/REAL(a*I); END IF END LOOP; y<=q;END PROCESS;二、 并發(fā)描述語句1. 進程語句在一個構(gòu)造體中多個PROCESS語句可以同時并行的執(zhí)行,該語句有如下特點:1) 可以和其它進程語句同時執(zhí)行,并可以存取構(gòu)造體和實體中所定義的信號2) 進程中的所有語句都按照順序執(zhí)行3) 為啟動進程,在進程中必須包含一個
23、敏感信號表或WAIT語句4) 進程之間的通信是通過信號量來實現(xiàn)的2. 并發(fā)信號代入代入語句在進程中使用是順序語句,但是在進程外即在構(gòu)造體中使用就是并發(fā)語句,相當于一個進程.例: ARCHITECTURE behave OF a_var IS BEGIN Output<=a(I); END behave;可以等效于: ARCHITECTURE behave OF a_var IS BEGIN ss PROCESS(a,I) BEGIN Output<=a(I); END PROCESS ss; END behave; 信號代入語句的右邊可以是算數(shù)表達式,也可以是邏輯表達式,還可以是關
24、系表達式,所以可以仿真加法器、乘法器、除法器、比較器和各種邏輯電路。3. 條件信號代入條件代入語句也是并發(fā)語句,它可以將符合條件的表達式代入信號量。格式:目的信號量<=表達式1 WHEN 條件1 ELSE 表達式2 WHEN 條件2 ELSE 表達式3 WHEN 條件3 : ELSE 表達式n;例517:四選一電路 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux44 IS PORT(i0,i1,i2,i3,a,b:IN STD_LOGIC; q : OUT STD_LOGIC); END mux44; ARCHITECTURE
25、aa OF mux44 IS SIGNAL sel: STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN sel<=b & a; q<= i0 WHEN sel="00" ELSE i1 WHEN sel="01" ELSE i2 WHEN sel="10" ELSE i3 WHEN sel="11" ; END aa;4. 選擇信號代入格式: WITH 表達式樣 SELECT 目的信號量<=表達式1 WHEN 條件1 表達式2 WHEN 條件2 : 表達式n WHEN
26、 條件n;該語句很象CASE 語句.例518: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux45 IS PORT(i0,i1,i2,i3,a,b :IN STD_LOGIC; q : OUT STD_LOGIC);END mux45;ARCHITECTURE bb OF mux45 IS SIGNAL sel: INTEGER range 0 to 3;BEGIN WITH sel SELECT q<=i0 WHEN 0, i1 WHEN 1, i2 WHEN 2, i3 WHEN 3;sel<=0 WHEN a=
27、9;0' AND b='0' ELSE 1 WHEN a='1' AND b='0' ELSE 2 WHEN a='0' AND b='1' ELSE 3 WHEN a='1' AND b='1' ;END bb;5. 并發(fā)過程調(diào)用語句過程調(diào)用語句可以并發(fā)執(zhí)行,但要注意如下問題:l 并發(fā)過程調(diào)用是一個完整的語句,在它之前可以加標號l 并發(fā)過程調(diào)用語句應帶有IN,OUT或INOUT的參數(shù),他們應該列在過程名后的括號內(nèi)l 并發(fā)過程調(diào)用可以有多個返回值例: ARCHITECTURE. BEGINvector_to_int(z,x_flag,q);: END;等同于: ARCHITECTURE. BEGINPROCESS(z,q)BEGIN vector_to_int(z,x_flag,q); :END PROCESS; END;6. Block 語句7. 通用模塊調(diào)用語句ComponentCOMPONENT 元件名PORT 說明;END COMPONENT;8端口映射語句格式: 標號名:元件名 PORT MAP(信號,);9參數(shù)傳遞語句LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版初中物理中考復習教學導學案 (全套含答案)
- 從《榜樣9》悟“四個帶頭”:對標先進砥礪前行
- 能源項目風險管理 課件 7-能源項目風險監(jiān)控管理
- 小升初數(shù)學銜接教案講義
- 高一化學達標訓練:第三單元從微觀結(jié)構(gòu)看物質(zhì)的多樣性
- 吉林省吉林市普通中學2024-2025學年高三上學期二模試題 物理
- 2024高中地理第二章區(qū)域生態(tài)環(huán)境建設第1節(jié)荒漠化的防治-以我國西北地區(qū)為例2精練含解析新人教必修3
- 2024高中物理第四章電磁感應4法拉第電磁感應定律達標作業(yè)含解析新人教版選修3-2
- 2024高考地理一輪復習第三部分區(qū)域可持續(xù)發(fā)展-重在綜合第四章區(qū)域經(jīng)濟發(fā)展第33講區(qū)域工業(yè)化與城市化學案新人教版
- 2024高考化學一輪復習第三章金屬及其化合物第二講鋁鎂及其重要化合物規(guī)范演練含解析新人教版
- 新版?zhèn)€人簡歷Excel表格模板共2聯(lián)
- (完整)中國象棋教案
- 2023年八年級物理實驗報告單
- DL-T 5190.1-2022 電力建設施工技術(shù)規(guī)范 第1部分:土建結(jié)構(gòu)工程(附條文說明)
- 《了凡四訓》課件
- 胖東來商貿(mào)集團各項管理制度
- 麥琴每日讀經(jīng)計劃表
- 連續(xù)梁施工安全培訓:掛籃施工及安全控制
- 土壤與肥料學課件
- 供應商物料質(zhì)量問題賠償協(xié)議(中文)
- 公共廁所(預算書)
評論
0/150
提交評論