EDA第五章 VHDL設計進階4-8節(jié)-子程序以后-定稿_第1頁
EDA第五章 VHDL設計進階4-8節(jié)-子程序以后-定稿_第2頁
EDA第五章 VHDL設計進階4-8節(jié)-子程序以后-定稿_第3頁
EDA第五章 VHDL設計進階4-8節(jié)-子程序以后-定稿_第4頁
EDA第五章 VHDL設計進階4-8節(jié)-子程序以后-定稿_第5頁
已閱讀5頁,還剩51頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

4、EAL) RETURN REAL;-參量為常數FUNCTION “*”(a,b:INTERGER) RETURN INTERGER;-操作符函數FUNCTION as2(SIGNAL in1,in2:REAL) RETURN REAL;-信號型參數 黑龍江大學電子工程學院(2)、 函數體函數體的說明部分用于對函數中使用的數據類型、常量、變量進行說明;順序語句部分用來完成規(guī)定的算法或轉換。LIBRARY IEEE;-例5-33函數的應用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-函數 BEGIN -函數說明部分省略,從BEGIN開始為順序語句部分 RETURN (x AND y )OR z; END FUNCTION sam; -函數結束 函數定義在結構體的說明部分BEGIN -結構體的功能描述開始 PROCESS(a) -結構體中定義一個進程 BEGIN -進程開始 后面為順序語句 m(0)=sam(a(0),a(1),a

6、(2); -進程中調用了函數 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; :-其他重載函數END STD_LOGIC_UNSIGNED;黑

7、龍江大學電子工程學院LIBRARY IEEE; -例5-35重載函數使用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 判左右等,調用重載函數和整形比較 q=“0000”;

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

9、a,b:INOUT REAL); PROCEDURE pro2(CONSTANT a1:IN INTEGER; VARIABLE b1:OUT INTEGER) ;PROCEDURE pro3(SIGNAL sig:INOUT BIT);信號類型有IN、OUT、INOUT三種,如果沒有給數數據對象的類型 IN對應常量,INOUT和OUT對應目標為變量。黑龍江大學電子工程學院(2)、 過程體過程體是順序語句,調用時啟動過程體中順序語句的執(zhí)行,過程中可以使用順序語句中的所有語句,包括WAIT語句,如果過程在進程中,那么當進程有敏感變量時,過程中也不能使用WAIT語句。例5-36過程使用示例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數據右移sc位賦給dout ELSE dout(sc+i-dinLENGTH) v1;-當條件滿足時候,跳出循環(huán) END LOOP q1; ASSERT(v2v1); -如果v2b) THEN RETU

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

12、層之間的連接關系以及實體與結構之間的連接關系。設計者可以使用這些語句來選擇不同的構造體,使其與設計實體相對應。在仿真某一實體時,可以使用配置來選擇不同的構造體,進行性能對比試驗,以得到性能最佳的構造體。 語法格式如下: CONFIGURATION 配置名 OF 實體名 IS 語句說明; END 配置名;配置主要為頂層設計實體指定結構體,或為參與例化的元件指定所希望的結構體,以層次方式來對元件例化做結構配置。I、在設計實體中選配使用結構體的配置格式簡單配置的應用CONFIGURATION 配置名 OF 實體名 IS FOR 選配結構體名 END FOR; END 配置名; 黑龍江大學電子工程學院

13、例5-39配置的簡單應用LIBRARY IEEE; -選擇使用結構體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結構體 FOR u1,u2:nand1 USE CONFIGURATION WORK.first; END FOR; -使用first庫中元件nand1來例化生成電路u1,u2 END FOR;END sel; 黑龍江大學電子工程學院第五章 VHDL設計進階本章對VHDL的語言規(guī)則和語句類型做系統(tǒng)的論述。一、 VHDL語言要素 二、VHDL順序語句三、VHDL并行語句四、子程序五、庫、程序包及其配置六、VHDL描述風格七、常用元件設計舉例八、VHDL與原理圖混合設計方式黑龍江

15、大學電子工程學院六、VHDL描述風格VHDL程序中對于相同的邏輯功能,可以在結構體的執(zhí)行語句中使用不同的語句表達方式,這種不同的描述方法稱為描述風格。共分為三種描述風格,即行為描述、數據流描述和結構描述。 1、行為描述 2、數據流描述 3、結構描述 黑龍江大學電子工程學院1、行為描述數據流描述 行為描述只表示輸入與輸出間的轉換行為,不包含任何的結構信息。行為描述主要使用函數、過程和進程語句,以算法形式描述數據的變換與傳送.優(yōu)點:只需要清楚輸入輸出的行為,而不需要花費精力關注設計功能的門級實現,使自頂向下的設計成為可能。例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) 黑龍江大學電子工程學院 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 黑龍江大學電子工程學院2、數據流描述 數據流描述方式(RTL描

18、述方式),主要使用并行的型號賦值語句,即顯示的表示了該設計單元的行為,又隱含了該設計單元的結構。例5-42 一位全加器的數據流描述 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黑龍江大學電子工程學院2、結構描述 結構描述是描述該設計單元的硬件結構,即硬件是如何構成的。主要使用元件例化和配置語句來描述元件的類型和元件之間的互聯(lián)關系。例5-43 一位全加器的結構描述 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-三輸入異或門 PORT(a,b,c:IN BIT; o:OUT BIT); END COMPONENT; COMPONENT and-兩輸入與門 PORT(a,b:IN BIT; o:OUT BIT); END COMPONENT; 黑龍江大學電子工程學院 COMPONENT or3 三輸入或門 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;黑龍江大學電子工程學院第五章 VHDL設計進階本章對VHDL的語言規(guī)則和語句類型做系統(tǒng)的論述。一、 VHDL語言要素 二、VHDL順序語句三、VHDL并行語句四、子程序五、庫、程序包及其配置六、VHDL描述風格七、常用元件設計舉例八、VHDL與原理圖混合設計方式黑龍江大學電子工程學院七、常用元件設計舉例本小節(jié)通過一些常用基本邏輯電路的設計,介紹VHDL語言描述基本邏輯電路的方

22、法。 1、組合邏輯電路設計 2、時序邏輯電路設計 黑龍江大學電子工程學院1、組合邏輯電路設計I、基本門電路例5-44 二輸入與門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; 黑龍江大學電子工程學院LIBRARY IEEE; II、 8-3線優(yōu)先編碼器 例5-45 方法1USE IEEE.STD_LOGI

23、C_1164.ALL; -使用條件賦值語句實現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找到第一個inputs(i)=1 i:=i-1; END LOOP; (out2,out1,out0)=CONV_STD_LOGIC_VECTOR(i,3); END PROCESS;-將整形i轉化為3位標準邏輯矢量類型賦給端口END behave2; 黑龍江大學電子工程學院LIBRARY IEE

25、E; - 8-3線優(yōu)先編碼器 例5-45 方法3USE IEEE.STD_LOGIC_1164.ALL; -使用IF語句實現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)先級 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; 黑龍江大學電子工程學院LIBRARY IEEE; III、 7段顯示譯碼器 例5-46USE IEEE.STD_LOGI

27、C_1164.ALL; -使用條件賦值語句實現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 -選擇信號賦值BEGIN WITH d SELECT x=“1111110”WHEN “0000”,-7段共陽數碼管 “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; 黑龍江大學電子工程學院LIBRARY IEEE; IV、多路分配器 例5-47USE IEEE.STD_LOGIC_1164.ALL; -使用條件賦值語句實現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; -輸出負邏輯 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不同時候,通道不同 END IF; END PROCESS;END a; 黑龍江大學電子工程學院V、多位加法運算 例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);-都通過并置擴展為9位寬END behave; 在進行加法的時候將a,和b的高位都擴展了一個位0,在進位位cin前面擴展了7個位0,也就是都變成了9位,然后進行加法操作的。黑龍江大學電子工程學院

32、VI、三態(tài)門電路及總線緩沖器 例5-49 三態(tài)門電路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黑龍江大學電子工程學院VI、三態(tài)

33、門及總線緩沖器 例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; 黑龍江大學電子工程學院VI、三態(tài)門及總線緩沖器 例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; 黑龍江大學電子工程學院 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; 黑龍江大學電子工程學院2、時序邏輯電路設計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; 黑龍江大學電子工程學院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 時鐘邊沿鎖存 q=d; END IF; END PROCESS;END behave; 黑龍江大學電子工程學院LIBRARY IEEE; III、異步復位和置位、同步預置的4位計數器 例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; -同步計數END IF; END IF; END PROCESS count;END behave; 黑龍江大學電子工程學院LIBRARY IEEE; III、異步復位和置位、同步預置的4位計數器 例5-54USE IEEE.STD_LOGIC_1164.ALL; -使用整數形式實現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; -同步計數 END IF; END IF; q=cnt; END PROCESS;END behave; -教材寫的不對,進行了修正黑龍江大學電子工程學院LIBRARY IEEE; IV、同步計數器 例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;-溢出信號 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; -計數溢出輸出一個時鐘周期高電平 59秒時候輸出進位 黑龍江大學電子工程學院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); -同步預置 ELSIF (ci =1) THEN -模60的實現 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; 黑龍江大學電子工程學院LIBRARY IEEE; V、序列信號發(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) 進程1,實現每個脈沖同步計數加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) 進程3,同步輸出進程 BEGIN IF(clockEVENT AND clock=1) THEN z0=z; END IF; END PROCESS;END behave; 黑龍江大學電子工程學院第五章 VHDL設計進階本章對VHDL的語言規(guī)則和語句類型做系統(tǒng)的論述。一、 VHDL語言要素 二、VHDL順序語句三、VHDL并行語句四、子程序五、庫、程序包及其配置六、VHDL描述風格七、常用元件設計舉例八、VHDL與原理圖混合設

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論