




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、EDA 技術(shù)適用教程技術(shù)適用教程第第 10 10 章章 VHDL VHDL根本語(yǔ)句根本語(yǔ)句 10.1 順序語(yǔ)句順序語(yǔ)句 10.1.1 賦值語(yǔ)句賦值語(yǔ)句 10.1.2 IF語(yǔ)句語(yǔ)句 10.1.3 CASE語(yǔ)句語(yǔ)句 單個(gè)普通數(shù)值,如單個(gè)普通數(shù)值,如6 6。數(shù)值選擇范圍,如數(shù)值選擇范圍,如(2 TO 4)(2 TO 4)。 并列數(shù)值,如并列數(shù)值,如3 35 5?;旌戏绞?,以上三種方式的混合?;旌戏绞?,以上三種方式的混合。 【例【例10-1】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41 IS PORT (s4,s3, s2,s1 :
2、IN STD_LOGIC; z4,z3, z2,z1 : OUT STD_LOGIC); END mux41; ARCHITECTURE activ OF mux41 IS SIGNAL sel : INTEGER RANGE 0 TO 15; BEGIN PROCESS (sel ,s4,s3,s2,s1 ) BEGIN sel= 0 ; - 輸入初始值輸入初始值 IF (s1 =1) THEN sel = sel+1 ; ELSIF (s2 =1) THEN sel = sel+2 ; ELSIF (s3 =1) THEN sel = sel+4 ; ELSIF (s4 =1) THEN
3、sel = sel+8 ; ELSE NULL; - 留意,這里運(yùn)用了空操作語(yǔ)句留意,這里運(yùn)用了空操作語(yǔ)句 END IF ; z1=0 ; z2=0; z3=0; z4 z1 z2 z3 z4=1 ; - 當(dāng)當(dāng)sel為為815中任一值時(shí)選中中任一值時(shí)選中 END CASE ; END PROCESS ; END activ ; 【例【例10-1】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41g IS PORT (s4,s3, s2,s1 : IN STD_LOGIC; z4,z3, z2,z1 : OUT STD_LOGIC);
4、 END mux41g; ARCHITECTURE activ OF mux41g IS BEGIN PROCESS (s4,s3,s2,s1 ) VARIABLE sel: INTEGER RANGE 0 TO 15; BEGIN sel:= 0 ; - 輸入初始值輸入初始值 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) THEN sel := sel+8 ; END IF; z1=0
5、 ; z2=0; z3=0; z4 z1 z2 z3 z4 out1 out1 out1 out1 result result - a、b相等相等 IF (a = b) THEN result = x01; ELSE result - a、b不相等不相等 IF (a /= b) THEN result = x01; ELSE result 10 ; - 當(dāng)當(dāng)a大于大于10時(shí)跳出循環(huán)時(shí)跳出循環(huán) END LOOP L2; . 10.1 順序語(yǔ)句順序語(yǔ)句 10.1.4 LOOP10.1.4 LOOP語(yǔ)句語(yǔ)句 (2) FOR_LOOP語(yǔ)句,語(yǔ)法格式如下:語(yǔ)句,語(yǔ)法格式如下: LOOP標(biāo)號(hào):標(biāo)號(hào): FO
6、R 循環(huán)變量,循環(huán)變量,IN 循環(huán)次數(shù)范圍循環(huán)次數(shù)范圍 LOOP 順序語(yǔ)句順序語(yǔ)句 END LOOP LOOP標(biāo)號(hào)標(biāo)號(hào); 10.1 順序語(yǔ)句順序語(yǔ)句 【例【例10-4】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY p_check IS PORT ( a : IN STD_LOGIC_VECTOR (7 DOWNTO 0); y : OUT STD_LOGIC );END p_check; ARCHITECTURE opt OF p_check IS SIGNAL tmp :STD_LOGIC ;BEGIN PROCESS(a) BEGIN
7、tmp =0; FOR n IN 0 TO 7 LOOP tmp = tmp XOR a(n); END LOOP ; y = tmp; END PROCESS; END opt; 10.1 順序語(yǔ)句順序語(yǔ)句 10.1.4 LOOP10.1.4 LOOP語(yǔ)句語(yǔ)句 【例【例10-5】 SIGNAL a, b, c : STD_LOGIC_VECTOR (1 TO 3);.FOR n IN 1 To 3 LOOPa(n) = b(n) AND c(n);END LOOP;此段程序等效于順序執(zhí)行以下三個(gè)信號(hào)賦值操作:此段程序等效于順序執(zhí)行以下三個(gè)信號(hào)賦值操作:a(1)=b(1) AND c(1);a
8、(2)=b(2) AND c(2); a(3)f); s3 : b(k+8) := 0; k := k+1; NEXT LOOP L_y ; NEXT LOOP L_x ; . 10.1 順序語(yǔ)句順序語(yǔ)句 10.1.6 EXIT10.1.6 EXIT語(yǔ)句語(yǔ)句 EXIT; - 第一種語(yǔ)句格式第一種語(yǔ)句格式EXIT LOOP標(biāo)號(hào);標(biāo)號(hào); - 第二種語(yǔ)句格式第二種語(yǔ)句格式EXIT LOOP標(biāo)號(hào)標(biāo)號(hào) WHEN 條件表達(dá)式;條件表達(dá)式; - 第三種語(yǔ)句格式第三種語(yǔ)句格式 10.1 順序語(yǔ)句順序語(yǔ)句 10.1.6 EXIT10.1.6 EXIT語(yǔ)句語(yǔ)句 【例【例10-8】SIGNAL a, b : STD
9、_LOGIC_VECTOR (1 DOWNTO 0);SIGNAL a_less_then_b : Boolean;. a_less_then_b = FALSE ; - 設(shè)初始值設(shè)初始值 FOR i IN 1 DOWNTO 0 LOOP IF (a(i)=1 AND b(i)=0) THEN a_less_then_b b EXIT ; ELSIF (a(i)=0 AND b(i)=1) THEN a_less_then_b = TRUE ; - a b EXIT; ELSE NULL; END IF; END LOOP; - 當(dāng)當(dāng) i=1時(shí)前往時(shí)前往LOOP語(yǔ)句繼續(xù)比較語(yǔ)句繼續(xù)比較 10.
10、1 順序語(yǔ)句順序語(yǔ)句 10.1.7 WAIT10.1.7 WAIT語(yǔ)句語(yǔ)句 WAIT; - 第一種語(yǔ)句格式第一種語(yǔ)句格式WAIT ON 信號(hào)表;信號(hào)表; - 第二種語(yǔ)句格式第二種語(yǔ)句格式 WAIT UNTIL 條件表達(dá)式;條件表達(dá)式; - 第三種語(yǔ)句格式第三種語(yǔ)句格式WAIT FOR 時(shí)間表達(dá)式;時(shí)間表達(dá)式; - 第四種語(yǔ)句格式,超時(shí)等待語(yǔ)句第四種語(yǔ)句格式,超時(shí)等待語(yǔ)句 10.1 順序語(yǔ)句順序語(yǔ)句 10.1.7 WAIT10.1.7 WAIT語(yǔ)句語(yǔ)句 【例【例10-9】SIGNAL s1,s2 : STD_LOGIC;.PROCESSBEGIN.WAIT ON s1,s2 ;END PROCE
11、SS ; 【例【例10-10】(a) WAIT_UNTIL構(gòu)造構(gòu)造 (b) WAIT_ON構(gòu)造構(gòu)造 . LOOPWait until enable =1; Wait on enable;. EXIT WHEN enable =1; END LOOP; 10.1 順序語(yǔ)句順序語(yǔ)句 10.1.7 WAIT10.1.7 WAIT語(yǔ)句語(yǔ)句 WAIT UNTIL 信號(hào)信號(hào)=Value ; - (1) WAIT UNTIL 信號(hào)信號(hào)EVENT AND 信號(hào)信號(hào)=Value; - (2) WAIT UNTIL NOT 信號(hào)信號(hào)STABLE AND 信號(hào)信號(hào)=Value; - (3) WAIT UNTIL c
12、lock =1;WAIT UNTIL rising_edge(clock) ;WAIT UNTIL NOT clockSTABLE AND clock =1;WAIT UNTIL clock =1 AND clockEVENT;10.1 順序語(yǔ)句順序語(yǔ)句 10.1.7 WAIT10.1.7 WAIT語(yǔ)句語(yǔ)句 【例【例10-11】PROCESSBEGINWAIT UNTIL clk =1;ave = a;WAIT UNTIL clk =1;ave = ave + a;WAIT UNTIL clk =1;ave = ave + a;WAIT UNTIL clk =1;ave = (ave + a)
13、/4 ;END PROCESS ; 10.1 順序語(yǔ)句順序語(yǔ)句 10.1.7 WAIT10.1.7 WAIT語(yǔ)句語(yǔ)句 【例【例10-12】 PROCESS BEGIN rst_loop : LOOP WAIT UNTIL clock =1 AND clockEVENT; - 等待時(shí)鐘信號(hào)等待時(shí)鐘信號(hào) NEXT rst_loop WHEN (rst=1); - 檢測(cè)復(fù)位信號(hào)檢測(cè)復(fù)位信號(hào)rst x = a ; - 無(wú)復(fù)位信號(hào),執(zhí)行賦值操作無(wú)復(fù)位信號(hào),執(zhí)行賦值操作 WAIT UNTIL clock =1 AND clockEVENT; - 等待時(shí)鐘信號(hào)等待時(shí)鐘信號(hào) NEXT rst_loop Whe
14、n (rst=1); - 檢測(cè)復(fù)位信號(hào)檢測(cè)復(fù)位信號(hào)rst y = b ; - 無(wú)復(fù)位信號(hào),執(zhí)行賦值操作無(wú)復(fù)位信號(hào),執(zhí)行賦值操作 END LOOP rst_loop ; END PROCESS; 【例【例10-13】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shifter IS PORT ( data : IN STD_LOGIC_VECTOR (7 DOWNTO 0); shift_left: IN STD_LOGIC; shift_right: IN STD_LOGIC; clk: IN STD_LOGIC; reset : IN STD
15、_LOGIC; mode : IN STD_LOGIC_VECTOR (1 DOWNTO 0); qout : BUFFER STD_LOGIC_VECTOR (7 DOWNTO 0) );END shifter;ARCHITECTURE behave OF shifter IS SIGNAL enable: STD_LOGIC; BEGIN PROCESS BEGIN WAIT UNTIL (RISING_EDGE(clk) ); -等待時(shí)鐘上升沿等待時(shí)鐘上升沿 IF (reset = 1) THEN qout qout qout qout NULL; END CASE; END IF; E
16、ND PROCESS;END behave; 10.1 順序語(yǔ)句順序語(yǔ)句 10.1.8 10.1.8 子程序調(diào)用語(yǔ)句子程序調(diào)用語(yǔ)句 1. 1. 過(guò)程調(diào)用過(guò)程調(diào)用 過(guò)程名過(guò)程名(形參名形參名= = 實(shí)參表達(dá)式實(shí)參表達(dá)式 , 形參名形參名= = 實(shí)參表達(dá)式實(shí)參表達(dá)式) ) ; 【例【例10-14】PACKAGE data_types IS - 定義程序包定義程序包SUBTYPE data_element IS INTEGER RANGE 0 TO 3 ;- 定義數(shù)據(jù)類型定義數(shù)據(jù)類型TYPE data_array IS ARRAY (1 TO 3) OF data_element;END data_
17、types;USE WORK.data_types.ALL; -翻開(kāi)以上建立在當(dāng)前任務(wù)庫(kù)的程序包翻開(kāi)以上建立在當(dāng)前任務(wù)庫(kù)的程序包data_typesENTITY sort IS PORT ( in_array : IN data_array ; out_array : OUT data_array);END sort; ARCHITECTURE exmp OF sort IS BEGIN (接下頁(yè)接下頁(yè)P(yáng)ROCESS (in_array) - 進(jìn)程開(kāi)場(chǎng),設(shè)進(jìn)程開(kāi)場(chǎng),設(shè)data_types為敏感信號(hào)為敏感信號(hào) PROCEDURE swap(data : INOUT data_array; - s
18、wap的形參名為的形參名為data、low、high low, high : IN INTEGER ) IS VARIABLE temp : data_element ; BEGIN - 開(kāi)場(chǎng)描畫(huà)本過(guò)程的邏輯功能開(kāi)場(chǎng)描畫(huà)本過(guò)程的邏輯功能 IF (data(low) data(high) THEN - 檢測(cè)數(shù)據(jù)檢測(cè)數(shù)據(jù) temp := data(low) ; data(low) := data(high); data(high) := temp ; END IF ; END swap ; - 過(guò)程過(guò)程swap定義終了定義終了 VARIABLE my_array : data_array ; -
19、在本進(jìn)程中定義變量在本進(jìn)程中定義變量my_array BEGIN - 進(jìn)程開(kāi)場(chǎng)進(jìn)程開(kāi)場(chǎng) my_array := in_array ; - 將輸入值讀入變量將輸入值讀入變量 swap(my_array, 1, 2); - my_array、1、2是對(duì)應(yīng)于是對(duì)應(yīng)于data、low、high的實(shí)參的實(shí)參 swap(my_array, 2, 3); - 位置關(guān)聯(lián)法調(diào)用,位置關(guān)聯(lián)法調(diào)用, 第第2、第、第3元素交換元素交換 swap(my_array, 1, 2); - 位置關(guān)聯(lián)法調(diào)用,位置關(guān)聯(lián)法調(diào)用, 第第1、第、第2元素再次交換元素再次交換 out_array y THEN tmp := x; x :
20、= y; y := tmp; END IF;END sort2;BEGIN PROCESS (a, b, c, d) VARIABLE va, vb, vc, vd : BIT_VECTOR(0 TO top);BEGIN va := a; vb := b; vc := c; vd := d; sort2(va, vc); sort2(vb, vd); sort2(va, vb); sort2(vc, vd); sort2(vb, vc); ra = va; rb = vb; rc = vc; rd = vd; END PROCESS;END muxes; 2 2函數(shù)調(diào)用函數(shù)調(diào)用 10.1 順
21、序語(yǔ)句順序語(yǔ)句 10.1.9 RETURN10.1.9 RETURN語(yǔ)句語(yǔ)句 RETURN; - 第一種語(yǔ)句格式第一種語(yǔ)句格式RETURN 表達(dá)式;表達(dá)式; - 第二種語(yǔ)句格式第二種語(yǔ)句格式 【例【例10-16】PROCEDURE rs (SIGNAL s , r : IN STD_LOGIC ; SIGNAL q , nq : INOUT STD_LOGIC) IS BEGIN IF ( s =1 AND r =1) THEN REPORT Forbidden state : s and r are quual to 1; RETURN ; ELSE q = s AND nq AFTER 5
22、 ns ; nq tmp := rega AND regb ; WHEN 101 = tmp := rega OR regb ; WHEN 110 = tmp := NOT rega ; WHEN OTHERS = NULL ; END CASE ; 10.2 并行語(yǔ)句并行語(yǔ)句 并行信號(hào)賦值語(yǔ)句并行信號(hào)賦值語(yǔ)句(Concurrent Signal Assignments)(Concurrent Signal Assignments)。 進(jìn)程語(yǔ)句進(jìn)程語(yǔ)句(Process Statements)。 塊語(yǔ)句塊語(yǔ)句(Block Statements)。條件信號(hào)賦值語(yǔ)句條件信號(hào)賦值語(yǔ)句(Selected
23、 Signal Assignments)。元件例化語(yǔ)句元件例化語(yǔ)句(Component Instantiations),其中包括類屬配置語(yǔ)句。,其中包括類屬配置語(yǔ)句。生成語(yǔ)句生成語(yǔ)句(Generate Statements)。并行過(guò)程調(diào)用語(yǔ)句并行過(guò)程調(diào)用語(yǔ)句(Concurrent Procedure Calls)(Concurrent Procedure Calls)。ARCHITECTURE 構(gòu)造體名構(gòu)造體名 OF 實(shí)體名實(shí)體名 IS 闡明語(yǔ)句闡明語(yǔ)句 BEGIN 并行語(yǔ)句并行語(yǔ)句END ARCHITECTURE 構(gòu)造體名構(gòu)造體名 10.2 并行語(yǔ)句并行語(yǔ)句 10.2.1 并行信號(hào)賦值語(yǔ)句并
24、行信號(hào)賦值語(yǔ)句 1. 1. 簡(jiǎn)單信號(hào)賦值語(yǔ)句簡(jiǎn)單信號(hào)賦值語(yǔ)句 賦值目的賦值目的 = = 表達(dá)式表達(dá)式 ARCHITECTURE curt OF bc1 ISSIGNAL s1, e, f, g, h : STD_LOGIC ;BEGIN output1 = a AND b ; output2 = c + d ; g = e OR f ; h = e XOR f ; s1 = g ;END ARCHITECTURE curt; 【例【例10-18】 ENTITY mux IS PORT ( a,b,c : IN BIT ; p1,p2 : IN BIT ; z : OUT BIT ); END;
25、 ARCHITECTURE behv OF mux IS BEGIN z = a WHEN p1 = 1 ELSE b WHEN p2 = 1 ELSE c ; END; 10.2 并行語(yǔ)句并行語(yǔ)句 10.2.1 并行信號(hào)賦值語(yǔ)句并行信號(hào)賦值語(yǔ)句 2. 2. 條件信號(hào)賦值語(yǔ)句條件信號(hào)賦值語(yǔ)句 賦值目的賦值目的 = = 表達(dá)式表達(dá)式 WHEN WHEN 賦值條件賦值條件 ELSE ELSE表達(dá)式表達(dá)式 WHEN WHEN 賦值條件賦值條件 ELSE ELSE . . 表達(dá)式表達(dá)式 ; 10.2 并行語(yǔ)句并行語(yǔ)句 10.2.1 并行信號(hào)賦值語(yǔ)句并行信號(hào)賦值語(yǔ)句 2. 2. 條件信號(hào)賦值語(yǔ)句條件信號(hào)
26、賦值語(yǔ)句 圖圖10-1 10-1 例例10-1810-18的的RTLRTL電路圖電路圖SynplifySynplify綜綜合合 10.2 并行語(yǔ)句并行語(yǔ)句 10.2.1 并行信號(hào)賦值語(yǔ)句并行信號(hào)賦值語(yǔ)句 3. 3. 選擇信號(hào)賦值語(yǔ)句選擇信號(hào)賦值語(yǔ)句 WITH 選擇表達(dá)式選擇表達(dá)式 SELECT 賦值目的信號(hào)賦值目的信號(hào) = 表達(dá)式表達(dá)式 WHEN 選擇值選擇值表達(dá)式表達(dá)式 WHEN 選擇值選擇值.表達(dá)式表達(dá)式 WHEN 選擇值;選擇值; 【例【例10-19】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.
27、ALL;ENTITY decoder IS PORT ( a, b, c : IN STD_LOGIC; data1,data2 : IN STD_LOGIC; dataout : OUT STD_LOGIC );END decoder;ARCHITECTURE concunt OF decoder IS SIGNAL instruction : STD_LOGIC_VECTOR(2 DOWNTO 0) ; BEGIN instruction = c & b & a ; WITH instruction SELECT dataout = data1 AND data2 WHEN
28、 000 , data1 OR data2 WHEN 001 , data1 NAND data2 WHEN 010 , data1 NOR data2 WHEN 011 , data1 XOR data2 WHEN 100 , data1 XNOR data2 WHEN 101 , Z WHEN OTHERS ; END concunt ; 10.2 并行語(yǔ)句并行語(yǔ)句 10.2.1 并行信號(hào)賦值語(yǔ)句并行信號(hào)賦值語(yǔ)句 3. 3. 選擇信號(hào)賦值語(yǔ)句選擇信號(hào)賦值語(yǔ)句 .WITH selt SELECTmuxout l_time,gb2 = s_time); - 部分端口參量設(shè)定部分端口參量設(shè)定 P
29、ORT (pb : IN BIT; pb2 : INOUT BIT ); - 塊構(gòu)造中部分端口定義塊構(gòu)造中部分端口定義 PORT MAP (pb1 = b1, pb2 = a1 ) ; - 塊構(gòu)造端口銜接闡明塊構(gòu)造端口銜接闡明 CONSTANT delay : Time := 1 ms ; - 部分常數(shù)定義部分常數(shù)定義 SIGNAL s1 : BIT ; - 部分信號(hào)定義部分信號(hào)定義 BEGIN s1 = pb1 AFTER delay ; pb2 = s1 AFTER gb1, b1 AFTER gb2 ; END BLOCK blk1 ; END ARCHITECTURE func ; 1
30、0.2 并行語(yǔ)句并行語(yǔ)句 10.2.2 塊語(yǔ)句構(gòu)造塊語(yǔ)句構(gòu)造 【例【例10-21】 . b1 : BLOCK SIGNAL s1: BIT ; BEGIN S1 = a AND b ; b2 : BLOCK SIGNAL s2: BIT ; BEGIN s2 = c AND d ; b3 : BLOCK BEGIN Z = s2 ; END BLOCK b3 ; END BLOCK b2 ; y = s1 ; END BLOCK b1 ;. 【例【例10-22】LIBRARY IEEE; USE IEEE. std_logic_1164.ALL; ENTITY f_adder IS PORT
31、( ain, bin , cin : IN std_logic; sum, cout : OUT std_logic ); END f_adder; ARCHITECTURE e_ad OF f_adder IS SIGNAL so1, co1, co2 : std_logic; BEGIN h_adder1 : BLOCK -半加器半加器u1 BEGIN PROCESS( ain,bin ) BEGIN so1=NOT(ain XOR (NOT bin); co1= ain AND bin; END PROCESS; END BLOCK h_adder1;h_adder2: BLOCK -半
32、加器半加器u2 SIGNAL so2 : std_logic; BEGIN so2 = NOT(so1 XOR (NOT cin) ; co2=so1 and cin ; sum=so2;END BLOCK h_adder2; or2 : BLOCK -或門或門u3 BEGIN PROCESS (co2, co1) BEGIN cout= co2 OR co1;END PROCESS;END BLOCK or2; END e_ad; 10.2 并行語(yǔ)句并行語(yǔ)句 10.2.2 塊語(yǔ)句構(gòu)造塊語(yǔ)句構(gòu)造 圖圖10-2 10-2 例例10-2210-22的的RTLRTL電路圖電路圖SynplifySyn
33、plify綜合綜合 10.2 并行語(yǔ)句并行語(yǔ)句 10.2.3 并行過(guò)程調(diào)用語(yǔ)句并行過(guò)程調(diào)用語(yǔ)句 過(guò)程名過(guò)程名( (關(guān)聯(lián)參量名關(guān)聯(lián)參量名); ); 【例【例10-23】. PROCEDURE adder(SIGNAL a, b :IN STD_LOGIC ; -過(guò)程名為過(guò)程名為adder SIGNAL sum : OUT STD_LOGIC ); . adder(a1,b1,sum1) ; - 并行過(guò)程調(diào)用并行過(guò)程調(diào)用 . - 在此,在此,a1、b1、sum1即為分別對(duì)應(yīng)于即為分別對(duì)應(yīng)于a、b、sum的關(guān)聯(lián)參量名的關(guān)聯(lián)參量名 PROCESS( c1,c2) ; - 進(jìn)程語(yǔ)句執(zhí)行進(jìn)程語(yǔ)句執(zhí)行 BE
34、GIN Adder(c1,c2,s1) ; - 順序過(guò)程調(diào)用,在此順序過(guò)程調(diào)用,在此c1、c2、s1即為分別對(duì)即為分別對(duì)END PROCESS ; - 應(yīng)于應(yīng)于a、b、sum的關(guān)聯(lián)參量名的關(guān)聯(lián)參量名 10.2 并行語(yǔ)句并行語(yǔ)句 10.2.3 并行過(guò)程調(diào)用語(yǔ)句并行過(guò)程調(diào)用語(yǔ)句 【例【例10-24】 PROCEDURE check(SIGNAL a : IN STD_LOGIC_VECTOR; - 在調(diào)用時(shí)在調(diào)用時(shí) SIGNAL error : OUT BOOLEAN ) IS - 再定位寬再定位寬 VARIABLE found_one : BOOLEAN := FALSE ; - 設(shè)初始值設(shè)初始
35、值 BEGIN FOR i IN aRANGE LOOP - 對(duì)位矢量對(duì)位矢量a的一切的位元素進(jìn)展循環(huán)檢測(cè)的一切的位元素進(jìn)展循環(huán)檢測(cè) IF a(i) = 1 THEN - 發(fā)現(xiàn)發(fā)現(xiàn)a中有中有 1 IF found_one THEN - 假設(shè)假設(shè)found_one為為TRUE,那么闡明發(fā)現(xiàn)了一個(gè)以上的,那么闡明發(fā)現(xiàn)了一個(gè)以上的1 ERROR = TRUE; - 發(fā)現(xiàn)了一個(gè)以上的發(fā)現(xiàn)了一個(gè)以上的1,令,令found_one為為TRUE RETURN; - 終了過(guò)程終了過(guò)程 END IF; Found_one := TRUE; - 在在a中已發(fā)現(xiàn)了一個(gè)中已發(fā)現(xiàn)了一個(gè)1 End IF; End LOO
36、P; - 再測(cè)再測(cè)a中的其他位中的其他位 error 銜接端口名,銜接端口名,.) ; 10.2 并行語(yǔ)句并行語(yǔ)句 10.2.5 生成語(yǔ)句生成語(yǔ)句 標(biāo)號(hào):標(biāo)號(hào): FOR 循環(huán)變量循環(huán)變量 IN 取值范圍取值范圍 GENERATE 闡明闡明 BEGIN 并行語(yǔ)句并行語(yǔ)句 END GENERATE 標(biāo)號(hào)標(biāo)號(hào) ; 標(biāo)號(hào):標(biāo)號(hào): IF 條件條件GENERATE 闡明闡明 Begin 并行語(yǔ)句并行語(yǔ)句 END GENERATE 標(biāo)號(hào)標(biāo)號(hào) ; 10.2 并行語(yǔ)句并行語(yǔ)句 10.2.5 生成語(yǔ)句生成語(yǔ)句 表達(dá)式表達(dá)式 TO 表達(dá)式表達(dá)式 ; - 遞增方式,如遞增方式,如1 TO 5表達(dá)式表達(dá)式 DOWNTO
37、 表達(dá)式表達(dá)式 ; - 遞減方式,如遞減方式,如5 DOWNTO 1 【例【例10-25】 .COMPONENT compPORT (x : IN STD_LOGIC ; y : OUT STD_LOGIC );END COMPONENT ;SIGNAL a :STD_LOGIC_VECTOR(0 TO 7);SIGNAL b :STD_LOGIC_VECTOR(0 TO 7);.gen : FOR i IN aRANGE GENERATE u1: comp PORT MA (x=a(i),y=b(i);END GENERATE gen, . 10.2 并行語(yǔ)句并行語(yǔ)句 10.2.5 生成語(yǔ)句
38、生成語(yǔ)句 圖圖10-3 10-3 生成語(yǔ)句產(chǎn)生的生成語(yǔ)句產(chǎn)生的8 8個(gè)一樣的電路模塊個(gè)一樣的電路模塊 COMPINPUTOUTPUTCOMPINPUTOUTPUTCOMPINPUTOUTPUTa0b0a1b1a7b7. . .10.2 并行語(yǔ)句并行語(yǔ)句 10.2.5 生成語(yǔ)句生成語(yǔ)句 【例【例10-26】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Latch IS PORT( D,ENA : IN STD_LOGIC; Q : OUT STD_LOGIC );END ENTITY Latch ; ARCHITECTURE one OF Lat
39、ch IS SIGNAL sig_save : STD_LOGIC; BEGIN PROCESS (D, ENA) BEGIN IF ENA = 1 THEN sig_save = D ; END IF ; Q = sig_save ; END PROCESS ;END ARCHITECTURE one; 【例【例10-27】LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY SN74373 IS PORT (D : IN STD_LOGIC_VECTOR( 8 DOWNTO 1 ); OEN ,G : IN STD_LOGIC; Q : OUT
40、 STD_LOGIC_VECTOR(8 DOWNTO 1); END ENTITY SN74373;ARCHITECTURE two OF SN74373 IS SIGNAL sigvec_save : STD_LOGIC_VECTOR(8 DOWNTO 1); BEGIN PROCESS(D, OEN, G , sigvec_save) BEGIN IF OEN = 0 THEN Q = sigvec_save; ELSE Q = ZZZZZZZZ; END IF; IF G = 1 THEN Sigvec_save = D; END IF; END PROCESS; END ARCHITE
41、CTURE two; ARCHITECTURE one OF SN74373 IS COMPONENT Latch PORT ( D, ENA : IN STD_LOGIC; Q : OUT STD_LOGIC ); END COMPONENT; SIGNAL sig_mid : STD_LOGIC_VECTOR( 8 DOWNTO 1 ); BEGIN GeLatch : FOR iNum IN 1 TO 8 GENERATE Latchx : Latch PORT MAP(D(iNum),G,sig_mid(iNum); END GENERATE; Q = sig_mid WHEN OEN
42、 = 0 ELSE ZZZZZZZZ; -當(dāng)當(dāng)OEN=1時(shí),時(shí),Q(8)Q(1)輸出形狀呈高阻態(tài)輸出形狀呈高阻態(tài)END ARCHITECTURE one; 【例【例10-2810-28】LIBRARY IEEE;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_1164.ALL;ENTITY d_ff ISENTITY d_ff ISPORT ( d, clk_s : IN STD_LOGIC ; PORT ( d, clk_s : IN STD_LOGIC ; q : OUT STD_LOGIC ; q : OUT STD
43、_LOGIC ; nq : OUT STD_LOGIC ); nq : OUT STD_LOGIC );END ENTITY d_ff;END ENTITY d_ff;ARCHITECTURE a_rs_ff OF d_ff ISARCHITECTURE a_rs_ff OF d_ff ISBEGINBEGINbin_p_rs_ff : PROCESS(CLK_S)bin_p_rs_ff : PROCESS(CLK_S) BEGIN BEGIN IF clk_s = 1 AND clk_sEVENT THEN q = d; nq = NOT d; IF clk_s = 1 AND clk_sE
44、VENT THEN q = d; nq = NOT d; END IF; END IF; END PROCESS; END PROCESS;END ARCHITECTURE a_rs_ff;END ARCHITECTURE a_rs_ff;LIBRARY IEEE;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_1164.ALL;ENTITY cnt_bin_n isENTITY cnt_bin_n isGENERIC (n : INTEGER := 6);GENERIC (n : INTEGER := 6);PORT (
45、q : OUT STD_LOGIC_VECTOR (0 TO n-1); PORT (q : OUT STD_LOGIC_VECTOR (0 TO n-1); in_1 : IN STD_LOGIC ); in_1 : IN STD_LOGIC );END ENTITY cnt_bin_n; END ENTITY cnt_bin_n; 接下頁(yè)接下頁(yè)ARCHITECTURE behv OF cnt_bin_n ISCOMPONENT d_ff PORT(d, clk_s : IN STD_LOGIC; Q, NQ : OUT STD_LOGIC);END COMPONENT d_ff; SIGN
46、AL s : STD_LOGIC_VECTOR(0 TO n);BEGIN s(0) = in_1; -時(shí)鐘輸入時(shí)鐘輸入 q_1 : FOR i IN 0 TO n-1 GENERATE dff : d_ff PORT MAP (s(i+1), s(I), q(i), s(i+1); END GENERATE; END ARCHITECTURE behv; 10.2 并行語(yǔ)句并行語(yǔ)句 10.2.5 生成語(yǔ)句生成語(yǔ)句 FD11D0 Q0FD11D0 Q0FD11D0 Q0nqnqnqclkclkclki=n-1i=0i=1s(n)s(2)s(1)s(0)qn-1q1q0圖圖10-4 6 10-4
47、 6 位二進(jìn)制計(jì)數(shù)器原理圖位二進(jìn)制計(jì)數(shù)器原理圖 10.2 并行語(yǔ)句并行語(yǔ)句 10.2.6 REPORT語(yǔ)句語(yǔ)句 【例【例10-29】LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; ENTITY RSFF2 IS PORT ( S, R : IN std_logic; Q, QF : OUT std_logic ); END RSFF2; ARCHITECTURE BHV OF RSFF2 IS BEGIN P1: PROCESS(S,R) VARIABLE D : std_logic; BEGIN IF R = 1 and S = 1 THEN REPOR
48、T BOTH R AND S IS 1; -報(bào)告出錯(cuò)信息報(bào)告出錯(cuò)信息 ELSIF R = 1 and S = 0 THEN D := 0; ELSIF R = 0 and S = 1 THEN D := 1 ; END IF; Q = D; QF = NOT D; END PROCESS; END BHV; 10.2 并行語(yǔ)句并行語(yǔ)句 10.2.7 斷言語(yǔ)句斷言語(yǔ)句 ASSERT ASSERT REPORT REPORT SEVERITY SEVERITY ; Note通報(bào)通報(bào)報(bào)告出錯(cuò)信息,可以經(jīng)過(guò)編譯報(bào)告出錯(cuò)信息,可以經(jīng)過(guò)編譯Warning警告警告報(bào)告出錯(cuò)信息,可以經(jīng)過(guò)編譯報(bào)告出錯(cuò)信息,可以
49、經(jīng)過(guò)編譯Error錯(cuò)誤錯(cuò)誤報(bào)告出錯(cuò)信息,暫停編譯報(bào)告出錯(cuò)信息,暫停編譯Failure失敗失敗報(bào)告出錯(cuò)信息,暫停編譯報(bào)告出錯(cuò)信息,暫停編譯表表10-1 10-1 預(yù)定義錯(cuò)誤等級(jí)預(yù)定義錯(cuò)誤等級(jí) 10.2 并行語(yǔ)句并行語(yǔ)句 10.2.7 斷言語(yǔ)句斷言語(yǔ)句 1. 1. 順序斷言語(yǔ)句順序斷言語(yǔ)句 【例【例10-30】 P1: PROCESS(S,R) VARIABLE D : std_logic; BEGINASSERT not (R=1and S=1) REPORT both R and S equal to 1 SEVERITY Error; IF R = 1 and S = 0 THEN D :=
50、 0; ELSIF R = 0 and S = 1 THEN D := 1 ; END IF; Q = D; QF = NOT D; END PROCESS;2. 2. 并行斷言語(yǔ)句并行斷言語(yǔ)句 【例【例10-31】LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; ENTITY RSFF2 IS PORT(S, R : IN std_logic; Q,QF : OUT std_logic); END RSFF2; ARCHITECTURE BHV OF RSFF2 IS BEGIN PROCESS(R,S) BEGIN ASSERT not (R=1and S=1) REPORT both R and S equal to 1 SEVERITY Error; END PROCESS; PROCESS(R,S) VARIABLE D : std_logic := 0; BEGIN IF R=1 and S=0 THEN D :=0; ELSIF R=0 and S=1 THEN D :=1; END IF; Q = D ; Q
溫馨提示
- 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年上半年寧波前灣控股集團(tuán)人員招聘24人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025上海獸鳥(niǎo)智能科技有限公司招聘2人筆試參考題庫(kù)附帶答案詳解
- 2024陜西延長(zhǎng)石油物流集團(tuán)有限公司社會(huì)招聘筆試參考題庫(kù)附帶答案詳解
- 2024貴州畢節(jié)市農(nóng)投菌業(yè)科技有限責(zé)任公司面向社會(huì)招聘筆試筆試參考題庫(kù)附帶答案詳解
- 2024年高溫合金粉末項(xiàng)目項(xiàng)目投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2024年實(shí)木類家具項(xiàng)目資金申請(qǐng)報(bào)告代可行性研究報(bào)告
- 名師講壇2025版高考數(shù)學(xué)二輪復(fù)習(xí)專題一三角函數(shù)和平面向量微切口8極化恒等式練習(xí)無(wú)答案
- 2025年半杯文胸項(xiàng)目可行性研究報(bào)告
- 2025年鐘表與計(jì)時(shí)儀器項(xiàng)目發(fā)展計(jì)劃
- 加盟京東商城合同范本
- GB/T 6822-2024船體防污防銹漆體系
- 高三地理一輪復(fù)習(xí)+課件+第三部分+4.4國(guó)際合作
- 10.1溶液的酸堿性教學(xué)設(shè)計(jì)-2024-2025學(xué)年九年級(jí)化學(xué)人教版下冊(cè)
- 消防安全隱患臺(tái)賬表
- 2024解析:第九章液體壓強(qiáng)-講核心(原卷版)
- 2024解析:第二十章電與磁-基礎(chǔ)練(解析版)
- 《個(gè)體防護(hù)裝備安全管理規(guī)范AQ 6111-2023》知識(shí)培訓(xùn)
- 重癥患者的康復(fù)治療
- 低空經(jīng)濟(jì)產(chǎn)業(yè)示范區(qū)建設(shè)實(shí)施路徑
- 常見(jiàn)隔離手術(shù)
- 第47屆世界技能大賽江蘇省選拔賽網(wǎng)絡(luò)安全項(xiàng)目技術(shù)工作文件
評(píng)論
0/150
提交評(píng)論