【正文】
nreset:IN STD。 USE 。 (4) 同步計數(shù)器 【 例 555】 同步計數(shù)器 LIBRARY IEEE。 END PROCESS count。 END IF。139。 THEN t=date。)THEN IF load=39。EVENT AND clk=39。)。 THEN t=(others=39。 ELSIF pst=39。039。139。 計數(shù)器輸出 END t41。 date:IN STD_LOGIC_VECTOR(3 DOWNTO 0)。 USE 。 USE 。 END behave。 信號鎖存 END IF。139。 ARCHITECTURE behave OF reg_8 IS BEGIN PROCESS(clk) BEGIN IF(clk39。 q:OUT STD_LOGIC_VECTOR(0 TO 7))。 ENTITY reg_8 IS PORT(d:IN STD_LOGIC_VECTOR(0 TO 7)。 (2)8位鎖存器 【 例 553】 8位鎖存器 LIBRARY IEEE。 END PROCESS。 q=q_s。 END IF。)THEN j=?1?和 k=?1?狀態(tài) q_s=NOT q_s。)AND(k=39。 ELSIF(j=39。 nq_s=39。)THEN j=?1?和 k=?0?狀態(tài) q_s=39。)AND(k=39。 ELSIF(j=39。 nq_s=39。)THEN j=?0?和 k=?1?狀態(tài) q_s=39。)AND(k=39。)THEN IF(j=39。EVENT AND clk=39。 ARCHITECTURE behave OF jkff IS SIGNAL q_s,nq_s:STD_LOGIC。 q,nq:OUT STD_LOGIC)。 USE 。 END behave。 END IF。)THEN dout=din。 ARCHITECTURE behave OF trl_buf8 IS BEGIN PROCESS(en,din) BEGIN IF(en=39。 輸出 8位二進制數(shù) en:IN STD_LOGIC)。 ENTITY trl_buf8 IS PORT(din:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 (6) 三態(tài)門及總線緩沖器 【 例 550】 單向總線緩沖器 LIBRARY IEEE。 END PROCESS。Z39。 THEN dout=din。 ARCHITECTURE tri OF tristate IS BEGIN PROCESS(en,din) BEGIN IF en=39。 en為使能端口, din為輸入端口 dout:OUT STD_LOGIC)。 USE 。 END behave。b)+(0000000amp。039。amp。 ARCHITECTURE behave OF adder IS BEGIN s=(39。 低位來的進位 s:OUT STD_LOGIC_VECTOR(8 DOWNTO 0))。 ENTITY adder IS PORT(a,b:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 USE 。從圖中可以看出,根據(jù)不同的選擇信號 s,可以把輸入信號在不同的輸出端輸出。 END a。 END IF。 ELSIF s=110 THEN y6=NOT(data)。 ELSIF s=100 THEN y4=NOT(data)。 ELSIF s=010 THEN y2=NOT(data)。 ELSIF s=000 THEN y0=NOT(data)。y7=39。y6=39。 y5=39。y4=39。y3=39。y2=39。y1=39。 THEN y0=39。 ARCHITECTURE a OF dmux1to8 IS BEGIN PROCESS(enable,s,data) BEGIN IF enable=39。 選擇信號端口 y0,y1,y2,y3,y4,y5,y6,y7:OUT STD_LOGIC)。 ENTITY dmux1to8 IS PORT(data,enable:IN STD_LOGIC。 18多路分配器Y1Y0Y2Y3Y4Y5Y6dataenableS0S1Y7S2( 4) 多路分配器 【 例 547】 多路分配器 LIBRARY IEEE。 七段譯碼器b(X5)a(X6)c(X4)d(X3)e(X2)f(X1)g(X0)D 0D 1D 2D 3abcfedg七段數(shù)碼管( 3)七段顯示譯碼器 多路分配器的作用是為輸入信號選擇輸出,在計算機和通信設備中往往用于信號的分配。根據(jù)圖 55可知,輸入信號 D D D D0是二進制 BCD碼的集合,可表示為 [D3… D0]。 七段顯示譯碼器是對一個 4位二進制數(shù)進行譯碼,并在七段顯示器上顯示出相應的十進制數(shù)。 ARCHITECTURE a OF decoder IS BEGIN WITH d SELECT x=1111110WHEN 0000, 0110000WHEN 0001, 1101101WHEN 0010, 1111001WHEN 0011, 0110011WHEN 0100, 1011011WHEN 0101, 1011111WHEN 0110, 1110000WHEN 0111, 1111111WHEN 1000, 1111011WHEN 1001, 0000000WHEN OTHERS。輸入 4位二進制數(shù)據(jù) x:OUT STD_LOGIC_VECTOR(6 DOWNTO 0))。 USE 。 END behave1。 out1=outvec(1)。 ELSE 000。 ELSE 000 WHEN a=39。 ELSE 001 WHEN b=39。 ELSE 010 WHEN c=39。 ELSE 011 WHEN d=39。 ELSE 100 WHEN e=39。 ELSE 101 WHEN f=39。 ELSE 條件賦值語句 110 WHEN g=39。 BEGIN outvec(2 downto 0)=111WHEN h=39。 END encoder。 ENTITY encoder IS PORT(a,b,c,d,e,f,g,h:IN STD_LOGIC。 常用單元的設計舉例 1 、組合邏輯電路設計 圖 53 與門工作時序 ( 2) 83線優(yōu)先編碼器 【 例 545】 LIBRARY IEEE。 ARCHITECTURE and_2 OF andgate IS BEGIN c=a AND b。 a,b為輸入端口 c:OUT STD_LOGIC)。 USE 。 BEGIN G1: G2: G3: G4: G5: END structure。 END onebitadder2。 ENTITY onebitadder2 IS PORT(x,y,cin:IN BIT。 結構描述 【 例 543】 1位全加器結構描述 LIBRARY IEEE。其主要使用元件例化語句及配置語句來描述元件的類型及元件的互連關系。 END dataflow。 ARCHITECTURE dataflow OF onebitadder1 IS BEGIN sum=x XOR y XOR cin。 sum,count:OUT BIT)。 USE 。 數(shù)據(jù)流描述方式,也稱 RTL描述方式,主要使用并行的信號賦值語句,既顯式地表示了該設計單元的行為,又隱含了該設計單元的結構。 ARCHITECTURE behave OF onebitadder IS BEGIN PROCESS(x,y,cin) … … BEGIN … … END PROCESS。 sum,count:OUT STD_LOGIC)。 USE 。行為描述主要使用函數(shù)、過程和進程語句,以算法形式描述數(shù)據(jù)的變換和傳送。 END sel。 CONFIGURATION sel OF rs1 IS FOR rsf FOR u1,u2:nand1 USE CONFIGURATION 。 u2:nand1 PORT MAP( )。 ENTITY rs1 IS … … END rs1。 【 例 540】 LIBRARY IEEE。 CONFIGURATION first OF nand1 IS FOR one END FOR。 CONFIGURATION second OF nand1 IS FOR two END FOR。 ARCHITECTURE one OF nand1 IS … … END ARCHITECTURE one。 USE 。 USE 。 FUNCTION ? END pacl。 SIGNAL ? 。 SUBTYPE ? 。 定義程序包首的一般語句結構如下: PACKAGE 程序包名 IS 程序包首 程序包首說明部分 END 程序包名; 定義程序包體的一般語句結構如下: PACKAGE BODY 程序包名 IS 程序包體 程序包體說明部分以及包體內(nèi)容 END 程序包名; 2、程序包( PACKAGE) 常用的預定義的程序包有 4種。 ? ? ( 1) IEEE庫 ( 2) STD庫 (3) WORK庫 (4) VITAL庫 ( 5)用戶定義庫 庫的用法 : USE庫名.程序包名.項目名; USE庫名.程序包名. ALL; 庫、程序包及其配置 庫( LIBRARY) 程序包由兩部分組成:程序包首和程序包體,程序包首為程序包定義接口,聲明包中的類型、元件、函數(shù)和子程序。 ? ? calcu(,sign1)。 PROCEDURE calcu(v1,v2:IN REAL。 重載過程 PROCEDURE calcu(v1,v2:IN REAL。 END PROCEDURE p。 END LOOP q1。 q1:FOR IN LOOP v2:=v2*v1。 BEGIN v1:=*a。 END LOOP END shift。 BEGIN sc:=conv_integer(s)。 PROCEDURE pro3(SIGNAL sig:INOUT BIT)。 PROCEDURE pro2(CONSTANT a1:IN INTEGER。 END one。 ARCHITECTURE one OF t4 IS BEGIN PROCESS(clk) BEGIN … … IF q=15 THEN … … q=q+1。 USE 。 END。 function “+” ? ? function “+” ? ? function SHR ? ? LIBRARY IEEE。 ? ? function “+”(1:STD_LOGIC_VECTOR。 【 例 534】 LIBRARY IEEE。 END ARCHITECTURE demo。 END FUNCTION sam。 END func。 ENTITY func IS PORT(a:IN STD_LOGIC_VECTOR(0 TO 2)。 FUNCTI