版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、前次課回顧前次課回顧21. 賦值語句賦值語句2. IF語句語句3. CASE語句語句4. LOOP語句5. NEXT / EXIT語句6. WAIT語句7. RETURN語句8. NULL語句 CASECASE語句的特點(diǎn)是:語句的特點(diǎn)是:1 1)可讀性好,即羅列了所有可能)可讀性好,即羅列了所有可能的條件;的條件;2 2)CASECASE每條語句是獨(dú)立的、排他每條語句是獨(dú)立的、排他的,因此更接近于并行方式;的,因此更接近于并行方式;3 3)消耗的硬件資源更多。)消耗的硬件資源更多。IFIF語句:語句:4 4種格式;種格式;格式格式1 1對(duì)應(yīng)不完整對(duì)應(yīng)不完整IFIF語句,產(chǎn)生語句,產(chǎn)生時(shí)序電路;
2、時(shí)序電路;格式格式2 2對(duì)應(yīng)于完整對(duì)應(yīng)于完整IFIF語句,產(chǎn)生語句,產(chǎn)生組合電路。組合電路。賦值語句:賦值語句:賦值目標(biāo)賦值目標(biāo) 賦值符號(hào)賦值符號(hào) 賦值源賦值源注意:賦值符號(hào);注意:賦值符號(hào);目標(biāo)和源的數(shù)據(jù)類型。目標(biāo)和源的數(shù)據(jù)類型。配合使用配合使用兩個(gè)地方用到:兩個(gè)地方用到:1,procedure.表示過程的終止。表示過程的終止。2,function. 返回具體數(shù)值。返回具體數(shù)值。1. VHDL語句之順序語句:語句之順序語句: 屬性描述與定義語句屬性描述與定義語句 1. 信號(hào)類屬性信號(hào)類屬性: 最常用的就是最常用的就是EVENT(NOT clockSTABLE AND clock =1) (c
3、lockEVENT AND clock =1) 幾乎所有的VHDL項(xiàng)目都具有屬性屬性:函數(shù)、過程、信號(hào)、變量、實(shí)體、結(jié)構(gòu)體等等;屬性可以是:RANGE, LENGTH, EVENT等等.用于用于IFIF和和waitwait語句中。語句中。屬性描述與定義語句屬性描述與定義語句 2. 數(shù)據(jù)區(qū)間類屬性數(shù)據(jù)區(qū)間類屬性 .SIGNAL range1 : IN STD LOGIC VECTOR (0 TO 7) ;.FOR i IN range1RANGE LOOP. 0 TO 7range1REVERSE_RANGE7 TO 03. 數(shù)值類屬性數(shù)值類屬性 .PROCESS (clock, a, b);T
4、YPE obj IS ARRAY (0 TO 15) OF BIT ;SIGNAL ele1, ele2, ele3, ele4 : INTEGER ;BEGIN ele1 = objRIGHT ; ele2 = objLEFT ; ele3 = objHIGH ; ele4 = objLOW ;. 150015屬性描述與定義語句屬性描述與定義語句 3. 數(shù)值類屬性數(shù)值類屬性 LIBRARY IEEE;-PARITY GENERATORUSE IEEE.STD_LOGIC_1164.ALL;ENTITY parity IS GENERIC (bus_size : INTEGER := 8 );
5、 PORT (input_bus : IN STD_LOGIC_VECTOR(bus_size-1 DOWNTO 0); even_numbits, odd_numbits : OUT STD_LOGIC ) ;END parity ; ARCHITECTURE behave OF parity ISBEGINPROCESS (input_bus) VARIABLE temp: STD_LOGIC;BEGIN temp := 0; FOR i IN input_busLOW TO input_busHIGH LOOPtemp := temp XOR input_bus( i ) ; END L
6、OOP ; odd_numbits = temp ; even_numbits = NOT temp;END PROCESS;END behave;此段代碼實(shí)現(xiàn)了此段代碼實(shí)現(xiàn)了什么功能?什么功能?4. 數(shù)組屬性數(shù)組屬性LENGTH (數(shù)組的寬度數(shù)組的寬度/元素個(gè)數(shù)元素個(gè)數(shù)).TYPE arry1 ARRAY (0 TO 7) OF BIT ;VARIABLE wth: INTEGER;.wth1: =arry1LENGTH; - wth1 = 8. 屬性描述與定義語句屬性描述與定義語句 5. 用戶定義屬性用戶定義屬性 ATTRIBUTE 屬性名屬性名 : 數(shù)據(jù)類型數(shù)據(jù)類型;ATTRIBUTE
7、屬性名屬性名 OF 對(duì)象名對(duì)象名 : 對(duì)象類型對(duì)象類型IS 值值; LIBRARY synplify;USE synplicity.attributes.all; 綜合和仿真器自帶的一些特殊的屬性,包含在如下程序包中:屬性描述與定義語句屬性描述與定義語句 5. 用戶定義屬性用戶定義屬性 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY cntbuf IS PORT( Dir: IN STD_LOGIC; Clk,Clr,OE: IN STD_LOGIC; A,B: INOUT STD_LOGIC_VECTOR (0 to 1); Q: INOU
8、T STD_LOGIC_VECTOR (3 downto 0) ); ATTRIBUTE PINNUM : STRING; ATTRIBUTE PINNUM OF Clk: signal is 1; ATTRIBUTE PINNUM OF Clr: signal is 2; ATTRIBUTE PINNUM OF Dir: signal is 3; ATTRIBUTE PINNUM OF OE: signal is 11; ATTRIBUTE PINNUM OF Q: signal is 17,16,15,14;END cntbuf; 用屬性用屬性PINNUMPINNUM位端口鎖定芯片引腳。位
9、端口鎖定芯片引腳。屬性描述與定義語句屬性描述與定義語句 VHDL VHDL 語句語句10順序語句順序語句屬性描述語句屬性描述語句并行語句并行語句7.2 7.2 并行語句并行語句113. VHDL語句之并行語句:語句之并行語句: 并行語句,當(dāng)然是相對(duì)于順序語句而言的。并行語句,當(dāng)然是相對(duì)于順序語句而言的。順序語句是指?順序語句是指?只存在于?只存在于?執(zhí)行順序和書寫順序一致。執(zhí)行順序和書寫順序一致。進(jìn)程和子程序進(jìn)程和子程序(函數(shù)和過程函數(shù)和過程)中。中。那么,并行語句的特點(diǎn)是?那么,并行語句的特點(diǎn)是?在結(jié)構(gòu)體中的在結(jié)構(gòu)體中的執(zhí)行過程是同步執(zhí)行過程是同步的,即并行語的,即并行語句間的句間的執(zhí)行順序
10、是平等執(zhí)行順序是平等的。的。7.2 7.2 并行語句并行語句12 并行并行信號(hào)賦值信號(hào)賦值語句語句(Concurrent Signal Assignments)(Concurrent Signal Assignments)。 進(jìn)程語句進(jìn)程語句(Process Statements)(Process Statements)。 塊語句塊語句(Block Statements)(Block Statements)。 條件信號(hào)賦值語句條件信號(hào)賦值語句(Selected Signal Assignments)(Selected Signal Assignments)。 元件例化元件例化語句語句(Comp
11、onent Instantiations)(Component Instantiations),其中包括類屬配置語句。,其中包括類屬配置語句。 生成語句生成語句(Generate Statements)(Generate Statements)。 并行過程調(diào)用語句并行過程調(diào)用語句(Concurrent Procedure Calls)(Concurrent Procedure Calls)。 參數(shù)傳遞映射語句參數(shù)傳遞映射語句 端口說明語句端口說明語句 主要有以下主要有以下9種并行語句:種并行語句:7.2 7.2 并行語句并行語句13并行語句在結(jié)構(gòu)體中的使用格式如下:并行語句在結(jié)構(gòu)體中的使用格式
12、如下:ARCHITECTURE 結(jié)構(gòu)體名結(jié)構(gòu)體名 OF 實(shí)體名實(shí)體名 IS 說明語句說明語句 BEGIN 并行語句并行語句- 跟在跟在begin后面后面END ARCHITECTURE 結(jié)構(gòu)體名結(jié)構(gòu)體名 7.2 7.2 并行語句并行語句147.2.1 并行并行信號(hào)信號(hào)賦值語句賦值語句 1. 簡(jiǎn)單信號(hào)賦值語句簡(jiǎn)單信號(hào)賦值語句 賦值目標(biāo)賦值目標(biāo) = 表達(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 ;
13、h = e XOR f ; s1 = g ;END ARCHITECTURE curt; 分為簡(jiǎn)單、條件和選擇賦值分為簡(jiǎn)單、條件和選擇賦值3 3種方式種方式這這5 5條信號(hào)賦值語句是并行發(fā)生的;條信號(hào)賦值語句是并行發(fā)生的;那么,那么,真正的賦值是在什么時(shí)候完成的?真正的賦值是在什么時(shí)候完成的?7.2 7.2 并行語句并行語句157.2.1 并行信號(hào)賦值語句并行信號(hào)賦值語句 2. 條件信號(hào)賦值語句條件信號(hào)賦值語句 賦值目標(biāo)賦值目標(biāo) = 表達(dá)式表達(dá)式 WHEN 賦值條件賦值條件 ELSE 表達(dá)式表達(dá)式 WHEN 賦值條件賦值條件 ELSE . 表達(dá)式表達(dá)式 ; 1 1,條件分支很多,但只有一個(gè)分號(hào)
14、結(jié)尾;,條件分支很多,但只有一個(gè)分號(hào)結(jié)尾;2 2,執(zhí)行時(shí),前面的賦值條件優(yōu)先級(jí)高于后面,執(zhí)行時(shí),前面的賦值條件優(yōu)先級(jí)高于后面的。因此,與的。因此,與IFIF語句有相似之處,順序性;語句有相似之處,順序性;但區(qū)別呢?但區(qū)別呢?IFIF語句可以省略語句可以省略ELSEELSE,這里不行。要包括所,這里不行。要包括所有情況。因此,似乎又和有情況。因此,似乎又和CASECASE語句類似?語句類似?3 3,賦值條件允許有重疊。這就和,賦值條件允許有重疊。這就和CASECASE語句語句大相徑庭了。大相徑庭了。要注意幾點(diǎn):要注意幾點(diǎn):7.2 7.2 并行語句并行語句162. 條件信號(hào)賦值語句條件信號(hào)賦值語句
15、 【例例7-16】 ENTITY mux IS PORT ( a,b,c : IN BIT ; p1,p2 : IN BIT ; z : OUT BIT ); END; ARCHITECTURE behv OF mux IS BEGIN z = a WHEN p1 = 1 ELSE b WHEN p2 = 1 ELSE c ; END; 注意格式;當(dāng)p1=1, p2=1時(shí), Z=?7.2 7.2 并行語句并行語句177.2.1 并行信號(hào)賦值語句并行信號(hào)賦值語句 2. 條件信號(hào)賦值語句條件信號(hào)賦值語句 圖圖7-1 例例7-16的的RTL電路圖電路圖 相當(dāng)于屏蔽線,使得相當(dāng)于屏蔽線,使得p1優(yōu)先級(jí)
16、最高。優(yōu)先級(jí)最高。7.2 7.2 并行語句并行語句187.2.1 并行信號(hào)賦值語句并行信號(hào)賦值語句 3. 選擇信號(hào)賦值語句選擇信號(hào)賦值語句 WITH 選擇表達(dá)式選擇表達(dá)式 SELECT 賦值目標(biāo)信號(hào)賦值目標(biāo)信號(hào) = 表達(dá)式表達(dá)式 WHEN 選擇值選擇值 , 表達(dá)式表達(dá)式 WHEN 選擇值選擇值 ,., 表達(dá)式表達(dá)式 WHEN 選擇值選擇值 ; 與與CASECASE語句的區(qū)別:語句的區(qū)別:1. 1.可否放在可否放在processprocess中?中?CASECASE可,此語句否。可,此語句否。2.2.執(zhí)行時(shí),是并行還是順執(zhí)行時(shí),是并行還是順序的?序的?是并行的,因此不能重疊。是并行的,因此不能重
17、疊。此外,要注意格式。此外,要注意格式。19【例例7-17】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.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
18、0) ; BEGIN instruction = c & b & a ; WITH instruction SELECT dataout = data1 AND data2 WHEN 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 ; 注意觀察選擇信號(hào)賦值語句的用法。代碼實(shí)現(xiàn)的功能:由a,b
19、,c組成指令碼,確定data1和data2的操作類型。7.2 7.2 并行語句并行語句207.2.1 并行信號(hào)賦值語句并行信號(hào)賦值語句 3. 選擇信號(hào)賦值語句選擇信號(hào)賦值語句 .WITH selt SELECTmuxout = a WHEN 0|1 , - 0或或1 b WHEN 2 TO 5 , - 2或或3,或,或4或或5 c WHEN 6 , d WHEN 7 , Z WHEN OTHERS ; . 觀察選擇信號(hào)賦值語句的用法。代碼實(shí)現(xiàn)的功能:4選1多路選擇器。7.2 7.2 并行語句并行語句217.2.2 實(shí)體說明語句實(shí)體說明語句 ENTITY 實(shí)體名實(shí)體名 IS GENERIC (
20、參數(shù)名:數(shù)據(jù)類型參數(shù)名:數(shù)據(jù)類型 ); PORT ( 端口表端口表 );END ENTITY 實(shí)體名實(shí)體名; 可選7.2 7.2 并行語句并行語句227.2.3 參數(shù)傳遞參數(shù)傳遞說明說明語句語句 GENERIC( 常數(shù)名常數(shù)名 : 數(shù)據(jù)類型數(shù)據(jù)類型 : 設(shè)定值設(shè)定值 ;常數(shù)名常數(shù)名 : 數(shù)據(jù)類型數(shù)據(jù)類型 : 設(shè)定值設(shè)定值 ) ; 是一種常數(shù)參數(shù)常數(shù)參數(shù)的端口界面定義。怎么理解?常數(shù):在實(shí)體內(nèi)部賦值,并且不可改變;常數(shù):在實(shí)體內(nèi)部賦值,并且不可改變;常數(shù)參數(shù):可以接受實(shí)體外部的動(dòng)態(tài)賦值。常數(shù)參數(shù):可以接受實(shí)體外部的動(dòng)態(tài)賦值。7.2 7.2 并行語句并行語句237.2.3 參數(shù)傳遞說明語句參數(shù)傳遞
21、說明語句 【例例7-18】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY andn IS GENERIC ( n : INTEGER ); -定義類屬參量及其數(shù)據(jù)類型定義類屬參量及其數(shù)據(jù)類型 PORT(a : IN STD_LOGIC_VECTOR(n-1 DOWNTO 0); -用類屬參量限制矢量長(zhǎng)度用類屬參量限制矢量長(zhǎng)度 c : OUT STD_LOGIC); END; ARCHITECTURE behav OF andn IS BEGIN PROCESS (a) VARIABLE int : STD_LOGIC; BEGIN int
22、:= 1; FOR i IN aLENGTH - 1 DOWNTO 0 LOOP -循環(huán)語句循環(huán)語句 IF a(i)=0 THEN int := 0; END IF; END LOOP; c 2) - 參數(shù)傳遞映射語句,定義類屬變量,參數(shù)傳遞映射語句,定義類屬變量,n賦值為賦值為2 PORT MAP (a(0)=d1,a(1)=d2,c=q1); u2: andn GENERIC MAP (n =5) - 定義類屬變量,定義類屬變量,n賦值為賦值為5 PORT MAP (a(0)=d3,a(1)=d4,a(2)=d5, a(3)=d6,a(4)=d7, c=q2); END; 便捷快速地改變電
23、路的結(jié)構(gòu)。便捷快速地改變電路的結(jié)構(gòu)。7.2 7.2 并行語句并行語句257.2.4 參數(shù)傳遞參數(shù)傳遞映射映射語句語句 GENERIC MAP(類屬表類屬表) 【例例7-20】LIBRARY IEEE; -待例化元件待例化元件USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_arith.ALL;USE IEEE.STD_LOGIC_unsigned.ALL;ENTITY addern IS PORT (a, b: IN STD_LOGIC_VECTOR; result: out STD_LOGIC_VECTOR);END addern; ARCHITE
24、CTURE behave OF addern IS BEGIN result = a + b; END; 這段代碼有問題沒?這段代碼有問題沒?a,b,resulta,b,result三個(gè)信號(hào)的三個(gè)信號(hào)的長(zhǎng)度都沒有定義。長(zhǎng)度都沒有定義。7.2 7.2 并行語句并行語句267.2.4 參數(shù)傳遞映射語句參數(shù)傳遞映射語句 GENERIC MAP(類屬表類屬表) 【例例7-21】LIBRARY IEEE; -頂層設(shè)計(jì)頂層設(shè)計(jì)USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_arith.ALL;USE IEEE.STD_LOGIC_unsigned.ALL;EN
25、TITY adders IS GENERIC(msb_operand: INTEGER := 15; msb_sum: INTEGER :=15); PORT(b: IN STD_LOGIC_VECTOR (msb_operand DOWNTO 0); result: OUT STD_LOGIC_VECTOR (msb_sum DOWNTO 0);END adders; ARCHITECTURE behave OF adders IS COMPONENT addern PORT ( a, b: IN STD_LOGIC_VECTOR; result: OUT STD_LOGIC_VECTOR)
26、; END COMPONENT; SIGNAL a: STD_LOGIC_VECTOR (msb_sum /2 DOWNTO 0); SIGNAL twoa: STD_LOGIC_VECTOR (msb_operand DOWNTO 0); BEGIN twoa twoa, b = b, result = result); U2: addern PORT MAP (a=b(msb_operand downto msb_operand/2 +1), b=b(msb_operand/2 downto 0), result = a);END behave; 這部分是什么?U1U1是是1616位加法器
27、;位加法器;U2U2是是8 8位的。位的。7.2 7.2 并行語句并行語句277.2.4 參數(shù)傳遞映射語句參數(shù)傳遞映射語句 圖圖7-2 例例7-21的的RTL電路圖電路圖 b15:87.2 7.2 并行語句并行語句287.2.5 端口說明語句端口說明語句 PORT ( 端口名端口名 : 端口模式端口模式 數(shù)據(jù)類型數(shù)據(jù)類型 ; 端口名端口名 : 端口模式端口模式 數(shù)據(jù)類型數(shù)據(jù)類型 ) ; 簡(jiǎn)單來說,就是定義你建立的元件的簡(jiǎn)單來說,就是定義你建立的元件的輸入端口和輸出端口的輸入端口和輸出端口的名稱、數(shù)據(jù)類型。名稱、數(shù)據(jù)類型。7.2 7.2 并行語句并行語句297.2.6 塊語句結(jié)構(gòu)塊語句結(jié)構(gòu) 塊標(biāo)
28、號(hào)塊標(biāo)號(hào) : BLOCK (塊保護(hù)表達(dá)式塊保護(hù)表達(dá)式) 接口說明接口說明 類屬說明類屬說明 BEGIN 并行語句并行語句END BLOCK 塊標(biāo)號(hào)塊標(biāo)號(hào) ; 必須的必須的可選的可選的參數(shù)傳遞語句、端口說明等參數(shù)傳遞語句、端口說明等變量、庫、子函數(shù)等的聲明變量、庫、子函數(shù)等的聲明(向上不可見,向下透明)(向上不可見,向下透明)比系統(tǒng)子模塊還小的功能塊;結(jié)構(gòu)體本身也是一個(gè)比系統(tǒng)子模塊還小的功能塊;結(jié)構(gòu)體本身也是一個(gè)Block;改善程序的層次感、可讀性,或者關(guān)閉某些信號(hào)。改善程序的層次感、可讀性,或者關(guān)閉某些信號(hào)。30【例例7-22】 . ENTITY gat IS GENERIC(l_time :
29、 TIME ; s_time : TIME ) ; - (參數(shù)傳遞)類屬說明(參數(shù)傳遞)類屬說明 PORT (b1, b2, b3 : INOUT BIT) ; - 結(jié)構(gòu)體全局端口定義結(jié)構(gòu)體全局端口定義 END ENTITY gat ; ARCHITECTURE func OF gat IS SIGNAL a1 : BIT ; - 結(jié)構(gòu)體全局信號(hào)結(jié)構(gòu)體全局信號(hào) a1定義定義 BEGINBlk1 : BLOCK - 塊定義,塊標(biāo)號(hào)名是塊定義,塊標(biāo)號(hào)名是blk1 GENERIC (gb1, gb2 : Time) ; - 定義塊中的定義塊中的局部局部類屬參量類屬參量 GENERIC MAP (gb
30、1 = l_time,gb2 = s_time); - 局部局部端口參量設(shè)定端口參量設(shè)定 PORT (pb : IN BIT; pb2 : INOUT BIT ); - 塊結(jié)構(gòu)中塊結(jié)構(gòu)中局部局部端口定義端口定義 PORT MAP (pb1 = b1, pb2 = a1 ) ; - 塊結(jié)構(gòu)端口連接說明塊結(jié)構(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 gb
31、2 ; END BLOCK blk1 ; END ARCHITECTURE func ; 7.2 7.2 并行語句并行語句317.2.6 塊語句結(jié)構(gòu)塊語句結(jié)構(gòu) 【例例7-23】 . 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 ;. 這個(gè)例子說明了什么?這個(gè)例子說明了什么?1.Block可以嵌
32、套;可以嵌套;2.Block規(guī)定了信號(hào)的作用域。規(guī)定了信號(hào)的作用域。外層信號(hào)可以被內(nèi)層塊使用;外層信號(hào)可以被內(nèi)層塊使用;反之不行。反之不行。32【例例7-24】LIBRARY IEEE; USE IEEE. std_logic_1164.ALL; ENTITY f_adder IS PORT ( 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_adde
33、r1 : 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 -半加器半加器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,
34、 co1) BEGIN cout 連接端口名,連接端口名,.) ; 其實(shí)這部分,就是將要例化的元件的實(shí)體部分其實(shí)這部分,就是將要例化的元件的實(shí)體部分調(diào)用過來,聲明元件的外接端口。調(diào)用過來,聲明元件的外接端口。將上述的外接端口,用線連接起來。將上述的外接端口,用線連接起來。7.2 7.2 并行語句并行語句367.2.8 生成語句生成語句: 用來復(fù)制功能結(jié)構(gòu)相同的電路用來復(fù)制功能結(jié)構(gòu)相同的電路 標(biāo)號(hào):標(biāo)號(hào): FOR 循環(huán)變量循環(huán)變量 IN 取值范圍取值范圍 GENERATE 說明說明 BEGIN 并行語句并行語句 END GENERATE 標(biāo)號(hào)標(biāo)號(hào) ; 或或 標(biāo)號(hào):標(biāo)號(hào): IF 條件條件GENER
35、ATE 說明說明 Begin 并行語句并行語句 END GENERATE 標(biāo)號(hào)標(biāo)號(hào) ; 兩種格式。兩種格式。4 4部分組成:部分組成:1. 1.生成方式。生成方式。IF/FORIF/FOR2.2.說明部分。數(shù)據(jù)類型、說明部分。數(shù)據(jù)類型、子程序、數(shù)據(jù)對(duì)象的聲明子程序、數(shù)據(jù)對(duì)象的聲明3.3.并行語句。真正被復(fù)制并行語句。真正被復(fù)制的功能塊。的功能塊。4.4.標(biāo)號(hào)??蛇x的。標(biāo)號(hào)。可選的。7.2 7.2 并行語句并行語句37循環(huán)變量的變動(dòng)范圍:循環(huán)變量的變動(dòng)范圍:表達(dá)式表達(dá)式 TO 表達(dá)式表達(dá)式 ; - 遞增方式,如遞增方式,如1 TO 5表達(dá)式表達(dá)式 DOWNTO 表達(dá)式表達(dá)式 ; - 遞減方式,如
36、遞減方式,如5 DOWNTO 1 【例例7-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 MAP (x=a(i),y=b(i);END GENERATE gen, . 7.2.8 生成語句生成語句 循環(huán)循環(huán) 8 8 次,次,生成生成 8 8 個(gè)結(jié)構(gòu)完全一樣
37、的個(gè)結(jié)構(gòu)完全一樣的電路模塊。電路模塊。7.2 7.2 并行語句并行語句38圖圖7-4 生成語句產(chǎn)生的生成語句產(chǎn)生的8個(gè)相同的電路模塊個(gè)相同的電路模塊 COMPINPUTOUTPUTCOMPINPUTOUTPUTCOMPINPUTOUTPUTa0b0a1b1a7b7. . .7.2.8 生成語句生成語句 7.2 7.2 并行語句并行語句39【例例7-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
38、; ARCHITECTURE one OF Latch 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; 7.2.8 生成語句生成語句 此段代碼實(shí)現(xiàn)了此段代碼實(shí)現(xiàn)了 1 1位鎖位鎖存器的功能。存器的功能。將在下面的設(shè)計(jì)中,循將在下面的設(shè)計(jì)中,循環(huán)生成多個(gè)環(huán)生成多個(gè)1 1位鎖存器。位鎖存器。40【例例7-27】LIBRARY IEEE; USE I
39、EEE.STD_LOGIC_1164.ALL; ENTITY SN74373 IS PORT (D : IN STD_LOGIC_VECTOR( 8 DOWNTO 1 ); OEN ,G : IN STD_LOGIC; Q : OUT 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
40、 = 0 THEN Q = sigvec_save; ELSE Q = ZZZZZZZZ; END IF; IF G = 1 THEN Sigvec_save = D; END IF; END PROCESS; END ARCHITECTURE 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 GeLa
41、tch : FOR iNum IN 1 TO 8 GENERATE Latchx : Latch PORT MAP(D(iNum),G,sig_mid(iNum); END GENERATE; Q = sig_mid WHEN OEN = 0 ELSE ZZZZZZZZ; -當(dāng)當(dāng)OEN=1時(shí),時(shí),Q(8)Q(1)輸出狀態(tài)呈高阻態(tài)輸出狀態(tài)呈高阻態(tài)END ARCHITECTURE one; 需要注意的:需要注意的:1. 1.有有2 2個(gè)結(jié)構(gòu)體。其實(shí)它個(gè)結(jié)構(gòu)體。其實(shí)它們實(shí)現(xiàn)的功能是一樣的。們實(shí)現(xiàn)的功能是一樣的。2.2.結(jié)構(gòu)體結(jié)構(gòu)體oneone在通過生成在通過生成語句復(fù)制語句復(fù)制1 1位鎖存器前,位鎖
42、存器前,要聲明要聲明ponent.41【例例7-28】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY d_ff ISPORT ( d, clk_s : IN STD_LOGIC ; q : OUT STD_LOGIC ; nq : OUT STD_LOGIC );END ENTITY d_ff;ARCHITECTURE a_rs_ff OF d_ff ISBEGINbin_p_rs_ff : PROCESS(CLK_S) BEGIN IF clk_s = 1 AND clk_sEVENT THEN q = d; nq = NOT d; END I
43、F; END PROCESS;END ARCHITECTURE a_rs_ff;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY cnt_bin_n isGENERIC (n : INTEGER := 6);PORT (q : OUT STD_LOGIC_VECTOR (0 TO n-1); in_1 : IN STD_LOGIC );END ENTITY cnt_bin_n;ARCHITECTURE behv OF cnt_bin_n ISCOMPONENT d_ff PORT(d, clk_s : IN STD_LOGIC; Q, NQ : O
44、UT STD_LOGIC);END COMPONENT d_ff; SIGNAL s : STD_LOGIC_VECTOR(0 TO n);BEGIN s(0) = in_1; 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; 生成語句可以復(fù)制結(jié)構(gòu)相同生成語句可以復(fù)制結(jié)構(gòu)相同的電路模塊;的電路模塊;前面的例子是模塊輸入和輸前面的例子是模塊輸入和輸出是對(duì)稱的情況,直接用出是對(duì)稱的情況,直接用forfor循環(huán);循
45、環(huán);如果電路兩端不對(duì)稱,就需如果電路兩端不對(duì)稱,就需要要IFIF和和FORFOR協(xié)調(diào)使用。協(xié)調(diào)使用。描述了一個(gè)描述了一個(gè)n n(n=6n=6)位二進(jìn))位二進(jìn)制計(jì)數(shù)器;電路中間部分結(jié)制計(jì)數(shù)器;電路中間部分結(jié)構(gòu)是規(guī)則的,兩端不規(guī)則。構(gòu)是規(guī)則的,兩端不規(guī)則。7.2 7.2 并行語句并行語句42FD11D0 Q0FD11D0 Q0FD11D0 Q0nqnqnqclkclkclki=n-1i=0i=1s(n)s(2)s(1)s(0)qn-1q1q0圖圖7-5 6 位二進(jìn)制計(jì)數(shù)器原理圖位二進(jìn)制計(jì)數(shù)器原理圖 7.2.8 生成語句生成語句 7.2 7.2 并行語句并行語句437.2.9 REPORT語句語句
46、【例例7-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 REPORT BOTH R AND S IS 1; -報(bào)告出錯(cuò)信息報(bào)告出錯(cuò)信息 ELSIF R = 1 and S = 0 T
47、HEN D := 0; ELSIF R = 0 and S = 1 THEN D := 1 ; END IF; Q = D; QF = NOT D; END PROCESS; END BHV; REPORT ;那么字符串需要用那么字符串需要用 “ ”引起來。引起來。Report只是返回提示信息,為開只是返回提示信息,為開發(fā)人員進(jìn)行監(jiān)控提供方便。發(fā)人員進(jìn)行監(jiān)控提供方便。7.2 7.2 并行語句并行語句447.2.10 斷言語句斷言語句 ASSERT ASSERT REPORT REPORT SEVERITY SEVERITY ; Note(通報(bào))(通報(bào))報(bào)告出錯(cuò)信息,可以通過編譯報(bào)告出錯(cuò)信息,可
48、以通過編譯Warning(警告)(警告)報(bào)告出錯(cuò)信息,可以通過編譯報(bào)告出錯(cuò)信息,可以通過編譯Error(錯(cuò)誤)(錯(cuò)誤)報(bào)告出錯(cuò)信息,暫停編譯報(bào)告出錯(cuò)信息,暫停編譯Failure(失?。ㄊ。﹫?bào)告出錯(cuò)信息,暫停編譯報(bào)告出錯(cuò)信息,暫停編譯表表7-1 預(yù)定義錯(cuò)誤等級(jí)預(yù)定義錯(cuò)誤等級(jí) 當(dāng)條件表達(dá)式為真,則跳過當(dāng)條件表達(dá)式為真,則跳過下面兩行。下面兩行。出錯(cuò)信息默認(rèn)出錯(cuò)信息默認(rèn)“assertion violation”錯(cuò)誤級(jí)別默認(rèn):錯(cuò)誤級(jí)別默認(rèn):error7.2 7.2 并行語句并行語句451. 順序斷言語句順序斷言語句 【例例7-30】 P1: PROCESS(S,R) VARIABLE D : st
49、d_logic; BEGIN ASSERT not (R=1and S=1) REPORT both R and S equal to 1 SEVERITY Error; IF 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; 7.2.10 斷言語句斷言語句 RS觸發(fā)器,不允許出現(xiàn)兩觸發(fā)器,不允許出現(xiàn)兩端都有效的情況,所以要端都有效的情況,所以要監(jiān)視這種情況。監(jiān)視這種情況。462. 2. 并行斷言語句并行斷言語句 【例例7-31】LIB
50、RARY 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 ; QF = NOT D ; END PROCESS; END ; 將斷言語句當(dāng)度放在一個(gè)將斷言語句當(dāng)度放在一個(gè)進(jìn)程中,稱為進(jìn)程中,稱為 斷言進(jìn)程斷言進(jìn)程。顯然,它與結(jié)構(gòu)體中的其顯然,它與結(jié)構(gòu)體中的其他進(jìn)程是并列的。他進(jìn)程是并列的。斷言語句只是作為監(jiān)控和斷言語句只是作為監(jiān)控和中斷,并不對(duì)任何信號(hào)進(jìn)中斷,并不對(duì)任何信號(hào)進(jìn)行賦值操作,因此也被稱行賦值操作,因此也被稱為為 被動(dòng)進(jìn)程被動(dòng)進(jìn)程。 小結(jié)小結(jié):47 并行信號(hào)賦值
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年紅十字救護(hù)員理論考試及答案
- 全國(guó)青少年機(jī)器人技術(shù)等級(jí)考試(三級(jí)上機(jī)考試)模擬試題含答案
- 2025年安管人員考試題庫及答案
- 2025年農(nóng)村建設(shè)工匠考試題庫及答案
- 2025年工地三級(jí)安全教育試卷含答案
- 藥物過敏簡(jiǎn)述試題及答案
- 2025年安全生產(chǎn)事故案例分析與警示教育安全應(yīng)急處理能力測(cè)試卷及答案
- 建設(shè)工程施工合同糾紛要素式起訴狀模板可直接打印使用
- 爬蟲技術(shù)路線規(guī)劃
- 生態(tài)教育2026年課程開發(fā)
- 殯儀館鮮花采購?fù)稑?biāo)方案
- TOC基本課程講義學(xué)員版-王仕斌
- T-GDWCA 0035-2018 HDMI 連接線標(biāo)準(zhǔn)規(guī)范
- 面板堆石壩面板滑模結(jié)構(gòu)設(shè)計(jì)
- 初中語文新課程標(biāo)準(zhǔn)與解讀課件
- 無人機(jī)裝調(diào)檢修工培訓(xùn)計(jì)劃及大綱
- 中建通風(fēng)與空調(diào)施工方案
- 春よ、來い(春天來了)高木綾子演奏長(zhǎng)笛曲譜鋼琴伴奏
- ARJ21機(jī)型理論知識(shí)考試題庫(匯總版)
- 2023年婁底市建設(shè)系統(tǒng)事業(yè)單位招聘考試筆試模擬試題及答案解析
- GB/T 4623-2014環(huán)形混凝土電桿
評(píng)論
0/150
提交評(píng)論