EDA第五章 VHDL設(shè)計(jì)進(jìn)階4-8節(jié)-子程序以后-定稿課件_第1頁(yè)
EDA第五章 VHDL設(shè)計(jì)進(jìn)階4-8節(jié)-子程序以后-定稿課件_第2頁(yè)
EDA第五章 VHDL設(shè)計(jì)進(jìn)階4-8節(jié)-子程序以后-定稿課件_第3頁(yè)
EDA第五章 VHDL設(shè)計(jì)進(jìn)階4-8節(jié)-子程序以后-定稿課件_第4頁(yè)
EDA第五章 VHDL設(shè)計(jì)進(jìn)階4-8節(jié)-子程序以后-定稿課件_第5頁(yè)
已閱讀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)介

1、黑龍江大學(xué)電子工程學(xué)院第五章 VHDL設(shè)計(jì)進(jìn)階本章對(duì)VHDL的語(yǔ)言規(guī)則和語(yǔ)句類型做系統(tǒng)的論述。一、 VHDL語(yǔ)言要素 二、VHDL順序語(yǔ)句三、VHDL并行語(yǔ)句四、子程序五、庫(kù)、程序包及其配置六、VHDL描述風(fēng)格七、常用元件設(shè)計(jì)舉例八、VHDL與原理圖混合設(shè)計(jì)方式黑龍江大學(xué)電子工程學(xué)院四、 子程序-略講子程序是一個(gè)VHDL程序模塊,它是利用順序語(yǔ)句來(lái)定義和完成算法的,可以有效的完成重復(fù)性的設(shè)計(jì)工作。不能調(diào)用子程序時(shí)候使用結(jié)構(gòu)體重定義的信號(hào),只能通過(guò)子程序調(diào)用及與子程序的界面端口進(jìn)行通信。子程序分為過(guò)程(PROCEDURE)和函數(shù)(FUNCTION)。過(guò)程和函數(shù)的區(qū)別在于:(1)過(guò)程的調(diào)用通過(guò)其界

2、面獲得多個(gè)返回值,函數(shù)只有一個(gè)返回值;(2)在函數(shù)入口中所有的參數(shù)都是輸入?yún)?shù)、而過(guò)程有輸入?yún)?shù)、輸出參數(shù)和雙向參數(shù);(3)過(guò)程一般被看做一種語(yǔ)句結(jié)構(gòu),函數(shù)通常是表達(dá)式的一部分;(4)過(guò)程可以單獨(dú)存在,而函數(shù)通常作為語(yǔ)句的一部分被調(diào)用;(5)可重載; (6)與主電路同一級(jí)別,調(diào)用一次就生成一個(gè)電路塊。1、函數(shù)(FUNCTION) 2、重載函數(shù) 3、過(guò)程(PROCEDURE) 4、重載過(guò)程黑龍江大學(xué)電子工程學(xué)院1、函數(shù)(FUNCTION)VHDL中有多種函數(shù)形式,如在庫(kù)中的庫(kù)函數(shù)和用戶自定義的函數(shù)等。格式如下,分為函數(shù)首和函數(shù)體兩部分,程序包中的函數(shù)有函數(shù)首 FUNCTION 函數(shù)名(參數(shù)表)

3、RETURN 數(shù)據(jù)類型;-函數(shù)首 FUNCTION 函數(shù)名(參數(shù)表) RETURN 數(shù)據(jù)類型 IS 函數(shù)體開(kāi)始 說(shuō)明部分; BEGIN 順序語(yǔ)句; END FUNCTION 函數(shù)名;(1)、函數(shù)首 函數(shù)通常放在程序包中,此時(shí)函數(shù)首不能省函數(shù)首是由函數(shù)名、參數(shù)表和返回值的數(shù)據(jù)類型三部分組成的。函數(shù)名可以是標(biāo)識(shí)符也可以是重載運(yùn)算符(需要加雙引號(hào))。函數(shù)名后面的參數(shù)表是函數(shù)的輸入值,可以信號(hào)或常量,常量可不說(shuō)明函數(shù)RETURN 后面的是返回值的數(shù)據(jù)類型。例如:FUNCTION max(a,b:IN STD_LOGIC) RETURN STD_LOGIC; FUNCTION func1(a,b,c:R

4、EAL) RETURN REAL;-參量為常數(shù)FUNCTION “*”(a,b:INTERGER) RETURN INTERGER;-操作符函數(shù)FUNCTION as2(SIGNAL in1,in2:REAL) RETURN REAL;-信號(hào)型參數(shù) 黑龍江大學(xué)電子工程學(xué)院(2)、 函數(shù)體函數(shù)體的說(shuō)明部分用于對(duì)函數(shù)中使用的數(shù)據(jù)類型、常量、變量進(jìn)行說(shuō)明;順序語(yǔ)句部分用來(lái)完成規(guī)定的算法或轉(zhuǎn)換。LIBRARY IEEE;-例5-33函數(shù)的應(yīng)用USE IEEE.STD_LOGIC_1164.ALL;ENTITY func IS PORT(a:IN STD_LOGIC_VECTOR(0 TO 2); m:

5、OUT STD_LOGIC_VECTOR(0 TO 2);END ENTITY func;ARCHITECTURE demo OF func IS FUNCTION sam(x,y,z:STD_LOGIC) RETURN STD_LOGIC IS-函數(shù) BEGIN -函數(shù)說(shuō)明部分省略,從BEGIN開(kāi)始為順序語(yǔ)句部分 RETURN (x AND y )OR z; END FUNCTION sam; -函數(shù)結(jié)束 函數(shù)定義在結(jié)構(gòu)體的說(shuō)明部分BEGIN -結(jié)構(gòu)體的功能描述開(kāi)始 PROCESS(a) -結(jié)構(gòu)體中定義一個(gè)進(jìn)程 BEGIN -進(jìn)程開(kāi)始 后面為順序語(yǔ)句 m(0)=sam(a(0),a(1),a

6、(2); -進(jìn)程中調(diào)用了函數(shù) m(1)=sam(a(2),a(0),a(1); m(2)r THEN RETURN l; ELSE RETURN r; END IF; END; FUNCTION “+”(l:STD_LOGIC_VECTOR; r:INTEGER) RETURN STD_LOGIC_VECTOR IS VARIBLE result:STD_LOGIC_VECTOR(lRANGE); BEGIN result:= UNSGNED(l)+r; RETURN STD_LOGIC_VECTOR(result); end; :-其他重載函數(shù)END STD_LOGIC_UNSIGNED;黑

7、龍江大學(xué)電子工程學(xué)院LIBRARY IEEE; -例5-35重載函數(shù)使用USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt4 ISPORT(clk: IN STD_LOGIC; q:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);END cnt4ARCHITECTURE one OF cnt4 ISBEGIN PROCESS(clk) BEGIN IF (clkEVENT AND clk=1) THEN IF q=15 THEN 判左右等,調(diào)用重載函數(shù)和整形比較 q=“0000”;

8、 ELSE q=q+1;- 調(diào)用重載函數(shù)”+”完成邏輯矢量和整形相加 END IF; END IF; END PROCESS;END ARCHITECTURE; 黑龍江大學(xué)電子工程學(xué)院3、過(guò)程(PROCEDURE)過(guò)程和函數(shù)是子程序的兩種形式,過(guò)程也分為過(guò)程首和過(guò)程體兩部分,格式: PROCEDURE 過(guò)程名(參數(shù)表);-過(guò)程首 PROCEDURE 過(guò)程名(參數(shù)表) IS -過(guò)程體開(kāi)始 說(shuō)明部分; BEGIN 順序語(yǔ)句; END PROCEDURE 過(guò)程名;(1)、過(guò)程首 函數(shù)通常放在程序包中,此時(shí)過(guò)程首不能省過(guò)程首是由過(guò)程名和參數(shù)表組成。例如:PROCEDURE pro1(VARIABLE

9、a,b:INOUT REAL); PROCEDURE pro2(CONSTANT a1:IN INTEGER; VARIABLE b1:OUT INTEGER) ;PROCEDURE pro3(SIGNAL sig:INOUT BIT);信號(hào)類型有IN、OUT、INOUT三種,如果沒(méi)有給數(shù)數(shù)據(jù)對(duì)象的類型 IN對(duì)應(yīng)常量,INOUT和OUT對(duì)應(yīng)目標(biāo)為變量。黑龍江大學(xué)電子工程學(xué)院(2)、 過(guò)程體過(guò)程體是順序語(yǔ)句,調(diào)用時(shí)啟動(dòng)過(guò)程體中順序語(yǔ)句的執(zhí)行,過(guò)程中可以使用順序語(yǔ)句中的所有語(yǔ)句,包括WAIT語(yǔ)句,如果過(guò)程在進(jìn)程中,那么當(dāng)進(jìn)程有敏感變量時(shí),過(guò)程中也不能使用WAIT語(yǔ)句。例5-36過(guò)程使用示例1 PR

10、OCEDURE shift( din,s:IN STD_LOGIC_VECTOR; SIGNAL dout: OUT STD_LOGIC_VECTOR) ISVARIABLE sc: INTEGER;BEGIN sc:= CONV_INTEGER(s); FOR i IN dinRANGE LOOP IF(sc+i=dinRIGHT) THEN dout(sc+i) =din(i); -將din數(shù)據(jù)右移sc位賦給dout ELSE dout(sc+i-dinLENGTH) v1;-當(dāng)條件滿足時(shí)候,跳出循環(huán) END LOOP q1; ASSERT(v2v1); -如果v2b) THEN RETU

11、RN a;ELSE RETURN B;END IF; END max;END my_pkg;由于程序包也是用VHDL語(yǔ)言編寫(xiě)的,所以其源程序也需要以.vhd文件類型保存,my_pkg的源程序名為my_pkg.vhd。為了使用my_pkg程序包中定義內(nèi)容,在設(shè)計(jì)實(shí)體的開(kāi)始,需要將其打開(kāi),打開(kāi)my_pkg程序包的語(yǔ)句是USE work. my_pkg.ALL; 常用的程序包有 STD_LOGIC_1164, STD_LOGIC_ARITH, STD_LOGIC_UNSIGNED, STD_LOGIC_SIGNED程序包黑龍江大學(xué)電子工程學(xué)院3、配置(CONFIGURATION)配置語(yǔ)句用來(lái)描述層與

12、層之間的連接關(guān)系以及實(shí)體與結(jié)構(gòu)之間的連接關(guān)系。設(shè)計(jì)者可以使用這些語(yǔ)句來(lái)選擇不同的構(gòu)造體,使其與設(shè)計(jì)實(shí)體相對(duì)應(yīng)。在仿真某一實(shí)體時(shí),可以使用配置來(lái)選擇不同的構(gòu)造體,進(jìn)行性能對(duì)比試驗(yàn),以得到性能最佳的構(gòu)造體。 語(yǔ)法格式如下: CONFIGURATION 配置名 OF 實(shí)體名 IS 語(yǔ)句說(shuō)明; END 配置名;配置主要為頂層設(shè)計(jì)實(shí)體指定結(jié)構(gòu)體,或?yàn)閰⑴c例化的元件指定所希望的結(jié)構(gòu)體,以層次方式來(lái)對(duì)元件例化做結(jié)構(gòu)配置。I、在設(shè)計(jì)實(shí)體中選配使用結(jié)構(gòu)體的配置格式簡(jiǎn)單配置的應(yīng)用CONFIGURATION 配置名 OF 實(shí)體名 IS FOR 選配結(jié)構(gòu)體名 END FOR; END 配置名; 黑龍江大學(xué)電子工程學(xué)院

13、例5-39配置的簡(jiǎn)單應(yīng)用LIBRARY IEEE; -選擇使用結(jié)構(gòu)體USE IEEE.STD_LOGIC_1164.ALL;ENTITY nand1 ISPORT(a:IN STD_LOGIC; b:IN STD_LOGIC; c:OUT STD_LOGIC );END ENTITY nand1;ARCHITECTURE one OF nand1 ISBEGINc=NOT(a AND b);END ARCHITECTURE one;ARCHITECTURE two OF nand1 ISBEGINc=s,b=q,c=q); u2:nand1 PORT MAP(a=q,b=r,c=qf);END

14、 ARCHITECTURE rsf;CONFIGURATION sel OF rs1 IS FOR rsf -使用rsf結(jié)構(gòu)體 FOR u1,u2:nand1 USE CONFIGURATION WORK.first; END FOR; -使用first庫(kù)中元件nand1來(lái)例化生成電路u1,u2 END FOR;END sel; 黑龍江大學(xué)電子工程學(xué)院第五章 VHDL設(shè)計(jì)進(jìn)階本章對(duì)VHDL的語(yǔ)言規(guī)則和語(yǔ)句類型做系統(tǒng)的論述。一、 VHDL語(yǔ)言要素 二、VHDL順序語(yǔ)句三、VHDL并行語(yǔ)句四、子程序五、庫(kù)、程序包及其配置六、VHDL描述風(fēng)格七、常用元件設(shè)計(jì)舉例八、VHDL與原理圖混合設(shè)計(jì)方式黑龍江

15、大學(xué)電子工程學(xué)院六、VHDL描述風(fēng)格VHDL程序中對(duì)于相同的邏輯功能,可以在結(jié)構(gòu)體的執(zhí)行語(yǔ)句中使用不同的語(yǔ)句表達(dá)方式,這種不同的描述方法稱為描述風(fēng)格。共分為三種描述風(fēng)格,即行為描述、數(shù)據(jù)流描述和結(jié)構(gòu)描述。 1、行為描述 2、數(shù)據(jù)流描述 3、結(jié)構(gòu)描述 黑龍江大學(xué)電子工程學(xué)院1、行為描述數(shù)據(jù)流描述 行為描述只表示輸入與輸出間的轉(zhuǎn)換行為,不包含任何的結(jié)構(gòu)信息。行為描述主要使用函數(shù)、過(guò)程和進(jìn)程語(yǔ)句,以算法形式描述數(shù)據(jù)的變換與傳送.優(yōu)點(diǎn):只需要清楚輸入輸出的行為,而不需要花費(fèi)精力關(guān)注設(shè)計(jì)功能的門(mén)級(jí)實(shí)現(xiàn),使自頂向下的設(shè)計(jì)成為可能。例5-41 一位全加器的行為描述 LIBRARY IEEE; USE IEE

16、E.STD_LOGIC_1164.ALL; ENTITY onebitadder IS PORT( x,y,cin:IN STD_LOGIC; sum,count:OUT STD_LOGIC); END onebitadder; ARCHITECTURE behave OF onebitadder IS BEGIN PROCESS(x,y,cin) 黑龍江大學(xué)電子工程學(xué)院 PROCESS(x,y,cin) VARIABLE n: INTEGER; BEGIN n:=0; IF(x=1) THEN n:= n+1; END IF; IF(y=1) THEN n:=n+1; END IF; IF(

17、cin=1)THEN n:=n+1;-輸入求和 END IF; IF(n=0) THEN sum=0; count=0; ELSIF(n=1) THEN sum=1;count=0; ELSIF(n=2) THEN sum=0 ;count=1; ELSE sum=1; count=1; END IF; END PROCESS; END behave;真值表x y cin sum cout0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1 黑龍江大學(xué)電子工程學(xué)院2、數(shù)據(jù)流描述 數(shù)據(jù)流描述方式(RTL描

18、述方式),主要使用并行的型號(hào)賦值語(yǔ)句,即顯示的表示了該設(shè)計(jì)單元的行為,又隱含了該設(shè)計(jì)單元的結(jié)構(gòu)。例5-42 一位全加器的數(shù)據(jù)流描述 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY onebitadder1 IS PORT( x,y,cin:IN BIT; sum,count:OUT BIT); END onebitadder1; ARCHITECTURE dataflow OF onebitadder1 IS BEGIN sum= x XOR y XOR cin; count=(a AND y)OR(x AND cin)OR(y AND ci

19、n); END dataflow;邏輯方程:count=xy+ycin+cinxsum=x y cin黑龍江大學(xué)電子工程學(xué)院2、結(jié)構(gòu)描述 結(jié)構(gòu)描述是描述該設(shè)計(jì)單元的硬件結(jié)構(gòu),即硬件是如何構(gòu)成的。主要使用元件例化和配置語(yǔ)句來(lái)描述元件的類型和元件之間的互聯(lián)關(guān)系。例5-43 一位全加器的結(jié)構(gòu)描述 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY onebitadder2 IS PORT( x,y,cin:IN BIT; sum,count:OUT BIT); END onebitadder2; ARCHITECTURE structure OF on

20、ebitadder2 IS COMPONENT xor3-三輸入異或門(mén) PORT(a,b,c:IN BIT; o:OUT BIT); END COMPONENT; COMPONENT and-兩輸入與門(mén) PORT(a,b:IN BIT; o:OUT BIT); END COMPONENT; 黑龍江大學(xué)電子工程學(xué)院 COMPONENT or3 三輸入或門(mén) PORT(a,b,c:IN BIT; o: OUT BIT); END COMPONENT; SIGNAL s1,s2,s3:BIT; BEGIN G1:xor3 PORT MAP(x,y,cin,sum); G2:and2 PORT MAP(

21、x,y,s1); G3:and2 PORT MAP(x,cin,s2); G4:and2 PORT MAP(y,cin,s3); G5:or3 PORT MAP(s1,s2,s3,cout); END structure;黑龍江大學(xué)電子工程學(xué)院第五章 VHDL設(shè)計(jì)進(jìn)階本章對(duì)VHDL的語(yǔ)言規(guī)則和語(yǔ)句類型做系統(tǒng)的論述。一、 VHDL語(yǔ)言要素 二、VHDL順序語(yǔ)句三、VHDL并行語(yǔ)句四、子程序五、庫(kù)、程序包及其配置六、VHDL描述風(fēng)格七、常用元件設(shè)計(jì)舉例八、VHDL與原理圖混合設(shè)計(jì)方式黑龍江大學(xué)電子工程學(xué)院七、常用元件設(shè)計(jì)舉例本小節(jié)通過(guò)一些常用基本邏輯電路的設(shè)計(jì),介紹VHDL語(yǔ)言描述基本邏輯電路的方

22、法。 1、組合邏輯電路設(shè)計(jì) 2、時(shí)序邏輯電路設(shè)計(jì) 黑龍江大學(xué)電子工程學(xué)院1、組合邏輯電路設(shè)計(jì)I、基本門(mén)電路例5-44 二輸入與門(mén)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY andgate IS PORT( a,b:IN STD_LOGIC; c:OUT STD_LOGIC);END andgate;ARCHITECTURE and_2 OF andgate ISBEGIN c=a AND b;END and_2; 黑龍江大學(xué)電子工程學(xué)院LIBRARY IEEE; II、 8-3線優(yōu)先編碼器 例5-45 方法1USE IEEE.STD_LOGI

23、C_1164.ALL; -使用條件賦值語(yǔ)句實(shí)現(xiàn)ENTITY encoder IS PORT( a,b,c,d,e,f,g,h:IN STD_LOGIC; out0,out1,out2:OUT STD_LOGIC);END encoder;ARCHITECTURE behave1 OF encoder IS -條件賦值方式SIGNAL outvec:STD_LOGIC_VECTOR(2 WOWNTO 0);BEGIN outvec(2 DOWNTO 0)=“111”WHEN h=1 ELSE “110”WHEN g=1 ELSE “101”WHEN f=1 ELSE “100”WHEN e=1

24、ELSE “011”WHEN d=1 ELSE “010”WHEN c=1 ELSE “001”WHEN b=1 ELSE “000”WHEN a=1 ELSE“000”; out0 = outvec(0); out1 = outvec(1); out2 0 AND inputs(i)/=1 LOOP找到第一個(gè)inputs(i)=1 i:=i-1; END LOOP; (out2,out1,out0)=CONV_STD_LOGIC_VECTOR(i,3); END PROCESS;-將整形i轉(zhuǎn)化為3位標(biāo)準(zhǔn)邏輯矢量類型賦給端口END behave2; 黑龍江大學(xué)電子工程學(xué)院LIBRARY IEE

25、E; - 8-3線優(yōu)先編碼器 例5-45 方法3USE IEEE.STD_LOGIC_1164.ALL; -使用IF語(yǔ)句實(shí)現(xiàn)ENTITY encoder IS PORT( in1:IN STD_LOGIC_VECTOR(7 DOWNTO 0); out1:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END encoder;ARCHITECTURE behave3 OF encoder IS BEGINPROCESS(in1)BEGIN IF in1(7)=1 THEN out1=“111”;-注意優(yōu)先級(jí) ELSIF in1(6)=1 THEN out1=“110”; EL

26、SIF in1(5)=1 THEN out1=“101”; ELSIF in1(4)=1 THEN out1=“100”; ELSIF in1(3)=1 THEN out1=“011”; ELSIF in1(2)=1 THEN out1=“010”; ELSIF in1(1)=1 THEN out1=“001”; ELSIF in1(0)=1 THEN out1=“000”; ELSE out1=“XXX”; END IF; END PROCESS;END behave3; 黑龍江大學(xué)電子工程學(xué)院LIBRARY IEEE; III、 7段顯示譯碼器 例5-46USE IEEE.STD_LOGI

27、C_1164.ALL; -使用條件賦值語(yǔ)句實(shí)現(xiàn)ENTITY decoder IS PORT( d:IN STD_LOGIC_VECTOR(3 DOWNTO 0); x:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END decoder;ARCHITECTURE a OF decoder IS -選擇信號(hào)賦值BEGIN WITH d SELECT x=“1111110”WHEN “0000”,-7段共陽(yáng)數(shù)碼管 “0110000”WHEN “0001”, “1101101”WHEN “0010”, “1111001”WHEN “0011”, “0110011”WHEN “01

28、00”, “1011011”WHEN “0101”, “1011111”WHEN “0110”, “1110000”WHEN “0111”, “1111111”WHEN “1000”, “1111011”WHEN “1001”, “0000000”WHEN OTHERS; END a; 黑龍江大學(xué)電子工程學(xué)院LIBRARY IEEE; IV、多路分配器 例5-47USE IEEE.STD_LOGIC_1164.ALL; -使用條件賦值語(yǔ)句實(shí)現(xiàn)ENTITY dmux1to8 IS PORT( data,enable:IN STD_LOGIC; s:IN STD_LOGIC_VECTOR(2 DO

29、WNTO 0) y0,y1,y2,y3,y4,y5,y6,y7: OUT STD_LOGIC);END dmux1to8;ARCHITECTURE a OF dmux1to8 IS BEGIN PROCESS( enable, s, data ) BEGIN IF enable=0 THEN y0=1;y1=1;y2=1;y3=1; y4=1;y5=1;y6=1;y7=1; -輸出負(fù)邏輯 ELSIF s=“000” THEN y0=NOT(data); ELSIF s=“001” THEN y1=NOT(data); ELSIF s=“010” THEN y2=NOT(data); ELSIF

30、 s=“011” THEN y3=NOT(data); ELSIF s=“100” THEN y4=NOT(data); ELSIF s=“101” THEN y5=NOT(data); ELSIF s=“110” THEN y6=NOT(data); ELSIF s=“111” THEN y7=NOT(data); -s不同時(shí)候,通道不同 END IF; END PROCESS;END a; 黑龍江大學(xué)電子工程學(xué)院V、多位加法運(yùn)算 例5-48LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;E

31、NTITY adder IS PORT( a,b:IN STD_LOGIC_VECTOR(7 DOWNTO 0); cin:IN STD_LOGIC; s: OUT STD_LOGIC_VECTOR(8DOWNTO 0);END adder;ARCHITECTURE behave OF adder IS BEGIN s= (0&a)+(0&b)+(“00000000”&cin);-都通過(guò)并置擴(kuò)展為9位寬END behave; 在進(jìn)行加法的時(shí)候?qū),和b的高位都擴(kuò)展了一個(gè)位0,在進(jìn)位位cin前面擴(kuò)展了7個(gè)位0,也就是都變成了9位,然后進(jìn)行加法操作的。黑龍江大學(xué)電子工程學(xué)院

32、VI、三態(tài)門(mén)電路及總線緩沖器 例5-49 三態(tài)門(mén)電路LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY tristate IS PORT( en,din:IN STD_LOGIC; dout:OUT STD_LOGIC); END tristate;ARCHITECTURE tri OF tristate IS BEGIN PROCESS(en,din) BEGIN IF en=1 THEN dout=din; ELSE dout=Z; END IF; END PROCESS;END tri; 74LVC1G125黑龍江大學(xué)電子工程學(xué)院VI、三態(tài)

33、門(mén)及總線緩沖器 例5-50 8位單向總線緩沖器LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY tr1_buf8 IS PORT( din:IN STD_LOGIC_VECTOR(7 DOWNTO 0); dout:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); en: IN STD_LOGIC); END tr1_buf8;ARCHITECTURE behave OF tr1_buf8 IS BEGIN PROCESS(en,din) BEGIN IF (en=1) THEN dout=din; ELSE dout=“ZZ

34、ZZZZZZ”; END IF; END PROCESS;END behave; 黑龍江大學(xué)電子工程學(xué)院VI、三態(tài)門(mén)及總線緩沖器 例5-51 8位雙向總線緩沖器LIBRARY IEEE; -74lS245USE IEEE.STD_LOGIC_1164.ALL; ENTITY bidir IS PORT( a,b:INOUT STD_LOGIC_VECTOR(7 DOWNTO 0); noe,dir: IN STD_LOGIC); END bidir;ARCHITECTURE bi OF bidir ISSIGNAL aout,bout:STD_LOGIC_VECTOR (7 DOWNTO 0)

35、; BEGIN PROCESS(a,en,dir) BEGIN IF (noe=0) AND (dir=1)THEN bout=a; ELSE bout=“ZZZZZZZZ”; END IF; b=bout; END PROCESS; 黑龍江大學(xué)電子工程學(xué)院 PROCESS(b,en,dir) BEGIN IF (noe=0) AND (dir=0)THEN aout=b; ELSE aout=“ZZZZZZZZ”; END IF; a=aout; END PROCESS;END bi; 黑龍江大學(xué)電子工程學(xué)院2、時(shí)序邏輯電路設(shè)計(jì)LIBRARY IEEE; - I、JK觸發(fā)器 例5-52USE

36、 IEEE.STD_LOGIC_1164.ALL;ENTITY jkff IS PORT( clk,j,k:IN STD_LOGIC; q,nq:OUT STD_LOGIC); j=1,k=0 輸出Q=1END jkff; j=0,k=1 輸出Q=0ARCHITECTURE behave OF jkff IS j=1,k=1 輸出Q=Not(Q) SIGNAL q_s,nq_s:STD_LOGIC; j=0,k=0 輸出Q不變BEGIN PROCESS(clk,j,k) BEGIN IF(clkEVENT AND clk=1) THEN if (j=0)AND(k=1) THEN q_s=0;

37、 nq_s=1; ELSIF(j=1)AND (k=0) THEN q_s=1;nq_s=0; ELSIF(j=1)AND(k=1) THEN q_s=NOT q_s;nq_s=NOT nq_s; END IF; END IF; q=q_s; nq=nq_s; END PROCESS;END behave; 黑龍江大學(xué)電子工程學(xué)院II、8位鎖存器 例5-53LIBRARY IEEE; -74LS273 USE IEEE.STD_LOGIC_1164.ALL;ENTITY reg_8 IS PORT( d:IN STD_LOGIC_VECTOR(0 TO 7); clk :IN STD_LOGI

38、C; q:OUT STD_LOGIC_VECTOR(0 TO 7);END reg_8;ARCHITECTURE behave OF reg_8 ISBEGIN PROCESS(clk) BEGIN IF(clkEVENT AND clk=1) THEN 時(shí)鐘邊沿鎖存 q=d; END IF; END PROCESS;END behave; 黑龍江大學(xué)電子工程學(xué)院LIBRARY IEEE; III、異步復(fù)位和置位、同步預(yù)置的4位計(jì)數(shù)器 例5-54USE IEEE.STD_LOGIC_1164.ALL; -使用位矢量方式USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.

39、STD_LOGIC_UNSIGNED.ALL;ENTITY cnt41 IS PORT( pst,clk,enable ,rst,load:IN STD_LOGIC; date :IN STD_LOGIC_VECTOR(3 DOWNTO 0); cnt: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) );END cnt41;ARCHITECTURE behave OF cnt41 ISBEGIN count: PROCESS(rst,clk,pst) BEGIN IF(rst=1) THEN cnt0); -異步清零 ELSIF pst=1 THEN cnt1); -

40、異步置1 ELSIF (clkEVENT AND clk=1) THEN IF load=1 THEN cnt=date; -同步加載 ELSIF enable =1 THEN cnt=cnt+1; -同步計(jì)數(shù)END IF; END IF; END PROCESS count;END behave; 黑龍江大學(xué)電子工程學(xué)院LIBRARY IEEE; III、異步復(fù)位和置位、同步預(yù)置的4位計(jì)數(shù)器 例5-54USE IEEE.STD_LOGIC_1164.ALL; -使用整數(shù)形式實(shí)現(xiàn)ENTITY cntm41 IS PORT( pst,clk,enable ,rst,load:IN BIT; da

41、ta :IN INTEGER RANGE 0 TO 15; q: OUT INTEGER RANGE 0 TO 15 );END cntm41;ARCHITECTURE behave OF cntm41 ISBEGIN PROCESS(rst,clk,pst) VARIABLE cnt: INTEGER RANGE 0 TO 15; BEGIN IF(rst=1) THEN cnt:= 0; ELSIF pst=1 THEN cnt:=15; ELSIF(clkEVENT AND clk=1) THEN IF load =1 THEN cnt:=data; -同步加載 ELSIF enable

42、 =1 THEN cnt :=cnt+1; -同步計(jì)數(shù) END IF; END IF; q=cnt; END PROCESS;END behave; -教材寫(xiě)的不對(duì),進(jìn)行了修正黑龍江大學(xué)電子工程學(xué)院LIBRARY IEEE; IV、同步計(jì)數(shù)器 例5-55USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cntm60 IS PORT( ci:IN STD_LOGIC; -1增加,0不變 nreset :IN STD_LOGIC; -異步清零端 load:IN STD_LOGIC;-并行加載控制 d: IN STD

43、_LOGIC_VECTOR(7 DOWNTO 0);-輸入 clk:IN STD_LOGIC; co:OUT STD_LOGIC;-溢出信號(hào) qh: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); ql: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0););END cntm60;ARCHITECTURE behave OF cntm60 ISBEGIN co=1 WHEN(qh=“0101” AND ql=“1001” AND ci=1) ELSE 0; -計(jì)數(shù)溢出輸出一個(gè)時(shí)鐘周期高電平 59秒時(shí)候輸出進(jìn)位 黑龍江大學(xué)電子工程學(xué)院PROCESS

44、(clk,nreset) BEGIN IF(nreset=0) THEN qh=“0000”; ql=“0000”;-異步清零 ELSIF ( clkEVENT and clk =1) THEN IF(load =1) THEN qh=d (7 DOWNTO 4); ql=d(3 DOWNTO 0); -同步預(yù)置 ELSIF (ci =1) THEN -模60的實(shí)現(xiàn) IF(ql = 9) THEN q=“0000”; -如低4位為9,則低位清零 IF (qh = 5 ) THEN qh=“0000”; -若高位為5,則高位清零 ELSE qh=qh+1; -若高位不是5,則高位加1 END I

45、F; ELSE ql=ql+1; -如低位不等于9,則低位加1 END IF; END IF; END IF; END PROCESS;END behave; 黑龍江大學(xué)電子工程學(xué)院LIBRARY IEEE; V、序列信號(hào)發(fā)生器 例5-56USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY senqgen IS PORT( clk,clr,clock:IN STD_LOGIC; zo :OUT STD_LOGIC); END senqgen;ARCHITE

46、CTURE behave OF senqgen IS SIGNAL count:STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL z:STD_LOGIC:=0;BEGIN PROCESS(clk,clr) 進(jìn)程1,實(shí)現(xiàn)每個(gè)脈沖同步計(jì)數(shù)加1 BEGIN IF(clr=1) THEN count=“000”; ELSE IF(clk=1 AND clkEVENT) THEN IF(count=“111”) THEN count =“000”; ELSE count zzzzzzzzz=0; END CASE; END PROCESS; PROCESS(clock,z) 進(jìn)程3,同步輸出進(jìn)程 BEGIN IF(clockEVENT AND clock=1) THEN z0=z; END IF; END PROCESS;END behave; 黑龍江大學(xué)電子工程學(xué)院第五章 VHDL設(shè)計(jì)進(jìn)階本章對(duì)VHDL的語(yǔ)言規(guī)則和語(yǔ)句類型做系統(tǒng)的論述。一、 VHDL語(yǔ)言要素 二、VHDL順序語(yǔ)句三、VHDL并行語(yǔ)句四、子程序五、庫(kù)、程序包及其配置六、VHDL描述風(fēng)格七、常用元件設(shè)計(jì)舉例八、VHDL與原理圖混合設(shè)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論