【正文】
第 6章 VHDL設計應用實例 第 6章 VHDL設計應用實例 8位加法器的設計 序列檢測器的設計 正負脈寬數(shù)控調制信號發(fā)生器的設計 數(shù)字頻率計的設計 數(shù)字秒表的設計 第 6章 VHDL設計應用實例 8位加法器的設計 1. 設計思路 多位加法器由 4位二進制并行加法器級聯(lián)構成是較好選擇。 本設計中的 8位二進制并行加法器即是由兩個 4位二進制并行加法器級聯(lián)而成的 , 其電路原理圖如圖 。 第 6章 VHDL設計應用實例 圖 8位加法器電路原理圖 A 8 [ 7 . . 0 ]B 8 [ 3 . . 0 ]A 8 [ 3 . . 0 ]B 8 [ 7 . . 0 ]B 8 [ 7 . . 0 ]A 8 [ 7 . . 0 ]B 8 [ 7 . . 4 ]A 8 [ 7 . . 4 ]S 8 [ 7 . . 4 ]S 8 [ 3 . . 0 ]S 8 [ 7 . . 0 ]C O 8S 8 [ 7 . . 0 ]C8A D D E R 4 BC O 4S 4 [ 3 . . 0 ]B 4 [ 3 . . 0 ]A 4 [ 3 . . 0 ]C4A D D E R 4 BC O 4S 4 [ 3 . . 0 ]B 4 [ 3 . . 0 ]A 4 [ 3 . . 0 ]C4U2U1SC第 6章 VHDL設計應用實例 2. VHDL源程序 1) 4位二進制并行加法器的源程序 LIBRARY IEEE; USE ; USE ; ENTITY ADDER4B IS 4位二進制并行加法器 PORT(C4: IN STD_LOGIC; 低位來的進位 第 6章 VHDL設計應用實例 A4: IN STD_LOGIC_VECTOR(3 DOWNTO 0); 4位加數(shù) B4: IN STD_LOGIC_VECTOR(3 DOWNTO 0); 4位被加數(shù) S4: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); 4位和 CO4: OUT STD_LOGIC); 進位輸出 END ENTITY ADDER4B; ARCHITECTURE ART OF ADDER4B IS SIGNAL S5: STD_LOGIC_VECTOR(4 DOWNTO 0); 中間結果 SIGNAL A5, B5: STD_LOGIC_VECTOR(4 DOWNTO 0); 擴展加數(shù)以及被加數(shù)位 第 6章 VHDL設計應用實例 BEGIN A5=39。039。amp。 A4; 將 4位加數(shù)矢量擴為 5位 , 為進位提供空間 B5=39。039。amp。 B4; 將 4位被加數(shù)矢量擴為 5位 , 為進位提供空間 S5=A5+B5+C4 ; S4=S5(3 DOWNTO 0); 四位和給 S4 CO4=S5(4); 進位給 CO4 END ARCHITECTURE ART; 第 6章 VHDL設計應用實例 2) 8位二進制加法器的源程序 LIBRARY IEEE; USE ; USE : ENTITY ADDER8B IS 由 4位二進制并行加法器級聯(lián)而成的 8位二進制加法器 PORT(C8: IN STD_LOGIC; A8: IN STD_LOGIC_VECTOR(7 DOWNTO 0); B8: IN STD_LOGIC_VECTOR(7 DOWNTO 0); 第 6章 VHDL設計應用實例 S8: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); CO8: OUT STD_LOGIC); END ENTITY ADDER8B; ARCHITECTURE ART OF ADDER8B IS COMPONENT ADDER4B IS 對要調用的元件 ADDER4B的界面端口進行定義 PORT(C4: IN STD_LOGIC; A4: IN STD_LOGIC_VECTOR(3 DOWNTO 0); 第 6章 VHDL設計應用實例 B4: IN STD_LOGIC_VECTOR(3 DOWNTO 0); S4: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CO4: OUT STD_LOGIC); END COMPONENT ADDER4B; SIGNAL SC: STD_LOGIC; 4位加法器的進位標志 BEGIN U1: ADDER4B 例化 (安裝 )一個 4位二進制加法器 U1 PORT MAP(C4=C8 , A4=A8(3 DOWNTO 0) ,B4=B8(3 DOWNTO0), S4=S8(3 DOWNTO 0),CO4=SC); 第 6章 VHDL設計應用實例 U2: ADDER4B 例化 (安裝 )一個 4位二進制加法器 U2 PORT MAP(C4=SC , A4=A8(7 DOWNTO 4) ,B4=B8(7 DOWNTO 4), S4=S8 (7 DOWNTO 4),CO4=CO8); END ARCHITECTURE ART; 第 6章 VHDL設計應用實例 序列檢測器的設計 1. 設計思路 序列檢測器可用于檢測一組或多組由二進制碼組成的脈沖序列信號。 當序列檢測器連續(xù)收到一組串行二進制碼后, 如果這組碼與檢測器中預先設置的碼相同,則輸出 1,否則輸出 0。 如圖 所示,當一串待檢測的串行數(shù)據(jù)進入檢測器后,若此數(shù)在每一位的連續(xù)檢測中都與預置的密碼數(shù)相同,則輸出 “ A” ,否則仍然輸出 “ B” 。 第 6章 VHDL設計應用實例 圖 8位序列檢測器邏輯圖 C H KA B [ 3 . . 0 ]D [ 7 . . 0 ]C L RC L KD I NC L KD I NC L RD [ 7 . . 0 ]A B [ 3 . . 0 ]第 6章 VHDL設計應用實例 2. VHDL源程序 LIBRARY IEEE; USE ; ENTITY CHK IS PORT(DIN: IN STD_LOGIC; 串行輸入數(shù)據(jù)位 CLK, CLR: IN STD_LOGIC; 工作時鐘 /復位信號 D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); 8位待檢測預置數(shù) AB: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); 檢測結果輸出 第 6章 VHDL設計應用實例 END ENTITY CHK; ARCHITECTURE ART OF CHK IS SIGNAL Q : INTEGER RANGE 0 TO 8; 作為標志位 BEGIN PROCESS ( CLK, CLR) IS BEGIN IF CLR= 39。139。 THEN Q=0; ELSIF CLK39。EVENT AND CLK= 39。139。 THEN 時鐘到來時 , 判斷并處理當前輸入的位 第 6章 VHDL設計應用實例 CASE Q IS WHEN 0 = IF DIN =D(7) THEN Q= 1 ; ELSE Q=0; END IF; WHEN 1 = IF DIN =D(6) THEN Q= 2 ; ELSE Q=0; END IF; WHEN 2 = IF DIN =D(5) THEN Q= 3 ; ELSE Q=0; END IF; WHEN 3= IF DIN =D(4) THEN Q= 4 ; ELSE Q=0; END IF; WHEN 4 = IF DIN =D(3) THEN Q= 5 ; ELSE Q=0; END IF; WHEN 5 = IF DIN =D(2) THEN Q= 6 ; ELSE Q=0; END IF; WHEN 6 = IF DIN =D(1) THEN Q= 7 ; ELSE Q=0; END IF; WHEN 7 = IF DIN =D(0) THEN Q= 8 ; ELSE Q=0; END IF; WHEN OTHERS = Q=0; END CASE; END IF ; END PROCESS; 第 6章 VHDL設計應用實例 PROCESS(Q) IS 檢測結果判斷輸出 BEGIN IF Q= 8 THEN AB= 1010; 序列數(shù)檢測正確 , 輸出 “ A” ELSE AB= 1011; 序列數(shù)檢測錯誤 , 輸出 “ B” END IF ; END PROCESS; END ARCHITECTURE ART; 第 6章 VHDL設計應用實例 正負脈寬數(shù)控調制信號發(fā)生器的設計 1.設計思路 圖 是脈寬數(shù)控調制信號發(fā)生器邏輯圖,此信號發(fā)生器是由兩個完全相同的 可自加載加法計數(shù)器 LCNT8組成的,它的 輸出信號的高低電平脈寬可分別由兩組 8位預置數(shù)進行控制。 第 6章 VHDL設計應用實例 圖 脈寬數(shù)控調制信號發(fā)生器邏輯圖 I2DQC L R NP R NV C CP S O U TL C N T 8C A OD [ 7 . . 0 ]LDC L KBAC L KL C N T 8C A OD [ 7 . . 0 ]LDC L KU1 U2L D 1C A O 1L D 2C A O 2P S I N T第 6章 VHDL設計應用實例 2. VHDL源程序 1) 8位可自加載加法計數(shù)器的源程序 LIBRARY IEEE; USE ; ENTITY LCNT8 IS 8位可自加載加法計數(shù)器 PORT(CLK, LD: IN STD_LOGIC; 工作時鐘 /預置值加載信號 D: IN INTEGER RANGE 0 TO 255 8位分頻預置數(shù) CAO: OUT STD_LOGIC); 計數(shù)溢出輸出 END ENTITY LCNT8; 第 6章 VHDL設計應用實例 ARCHITECTURE ART OF LCNT8 IS SIGNAL COUNT: INTEGER RANGE 0 TO 255; 8位計數(shù)器設置 BEGIN PROCESS ( CLK ) IS BEGIN IF CLK39。EVENT AND CLK= 39。139。 THEN IF LD= 39。139。 THEN COUNT=D; LD為高電平時加載預置數(shù) 第 6章 VHDL設計應用實例 ELSE COUNT=COUNT+1; 否則繼續(xù)計數(shù) END IF; END IF; END PROCESS; 第 6章 VHDL設計應用實例 PROCESS (CLK, COUNT) IS BEGIN IF CLK39。EVENT AND CLK=39。139。 THEN IF COUNT=255 THEN CAO= 39。139。; ELSE CAO=