【正文】
END PROCESS; 第 6章 VHDL設(shè)計(jì)應(yīng)用實(shí)例 PROCESS(Q) IS 檢測(cè)結(jié)果判斷輸出 BEGIN IF Q= 8 THEN AB= 1010; 序列數(shù)檢測(cè)正確 , 輸出 “ A” ELSE AB= 1011; 序列數(shù)檢測(cè)錯(cuò)誤 , 輸出 “ B” END IF ; END PROCESS; END ARCHITECTURE ART; 第 6章 VHDL設(shè)計(jì)應(yīng)用實(shí)例 正負(fù)脈寬數(shù)控調(diào)制信號(hào)發(fā)生器的設(shè)計(jì) 1.設(shè)計(jì)思路 圖 是脈寬數(shù)控調(diào)制信號(hào)發(fā)生器邏輯圖,此信號(hào)發(fā)生器是由兩個(gè)完全相同的 可自加載加法計(jì)數(shù)器 LCNT8組成的,它的 輸出信號(hào)的高低電平脈寬可分別由兩組 8位預(yù)置數(shù)進(jìn)行控制。EVENT AND CLK= 39。139。 如圖 所示,當(dāng)一串待檢測(cè)的串行數(shù)據(jù)進(jìn)入檢測(cè)器后,若此數(shù)在每一位的連續(xù)檢測(cè)中都與預(yù)置的密碼數(shù)相同,則輸出 “ A” ,否則仍然輸出 “ B” 。 B4; 將 4位被加數(shù)矢量擴(kuò)為 5位 , 為進(jìn)位提供空間 S5=A5+B5+C4 ; S4=S5(3 DOWNTO 0); 四位和給 S4 CO4=S5(4); 進(jìn)位給 CO4 END ARCHITECTURE ART; 第 6章 VHDL設(shè)計(jì)應(yīng)用實(shí)例 2) 8位二進(jìn)制加法器的源程序 LIBRARY IEEE; USE ; USE : ENTITY ADDER8B IS 由 4位二進(jìn)制并行加法器級(jí)聯(lián)而成的 8位二進(jìn)制加法器 PORT(C8: IN STD_LOGIC; A8: IN STD_LOGIC_VECTOR(7 DOWNTO 0); B8: IN STD_LOGIC_VECTOR(7 DOWNTO 0); 第 6章 VHDL設(shè)計(jì)應(yīng)用實(shí)例 S8: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); CO8: OUT STD_LOGIC); END ENTITY ADDER8B; ARCHITECTURE ART OF ADDER8B IS COMPONENT ADDER4B IS 對(duì)要調(diào)用的元件 ADDER4B的界面端口進(jìn)行定義 PORT(C4: IN STD_LOGIC; A4: IN STD_LOGIC_VECTOR(3 DOWNTO 0); 第 6章 VHDL設(shè)計(jì)應(yīng)用實(shí)例 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位加法器的進(jìn)位標(biāo)志 BEGIN U1: ADDER4B 例化 (安裝 )一個(gè) 4位二進(jìn)制加法器 U1 PORT MAP(C4=C8 , A4=A8(3 DOWNTO 0) ,B4=B8(3 DOWNTO0), S4=S8(3 DOWNTO 0),CO4=SC); 第 6章 VHDL設(shè)計(jì)應(yīng)用實(shí)例 U2: ADDER4B 例化 (安裝 )一個(gè) 4位二進(jìn)制加法器 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設(shè)計(jì)應(yīng)用實(shí)例 序列檢測(cè)器的設(shè)計(jì) 1. 設(shè)計(jì)思路 序列檢測(cè)器可用于檢測(cè)一組或多組由二進(jìn)制碼組成的脈沖序列信號(hào)。039。amp。 第 6章 VHDL設(shè)計(jì)應(yīng)用實(shí)例 圖 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設(shè)計(jì)應(yīng)用實(shí)例 2. VHDL源程序 1) 4位二進(jìn)制并行加法器的源程序 LIBRARY IEEE; USE ; USE ; ENTITY ADDER4B IS 4位二進(jìn)制并行加法器 PORT(C4: IN STD_LOGIC; 低位來的進(jìn)位 第 6章 VHDL設(shè)計(jì)應(yīng)用實(shí)例 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); 進(jìn)位輸出 END ENTITY ADDER4B; ARCHITECTURE ART OF ADDER4B IS SIGNAL S5: STD_LOGIC_VECTOR(4 DOWNTO 0); 中間結(jié)果 SIGNAL A5, B5: STD_LOGIC_VECTOR(4 DOWNTO 0); 擴(kuò)展加數(shù)以及被加數(shù)位 第 6章 VHDL設(shè)計(jì)應(yīng)用實(shí)例 BEGIN A5=39。第 6章 VHDL設(shè)計(jì)應(yīng)用實(shí)例 第 6章 VHDL設(shè)計(jì)應(yīng)用實(shí)例 8位加法器的設(shè)計(jì) 序列檢測(cè)器的設(shè)計(jì) 正負(fù)脈寬數(shù)控調(diào)制信號(hào)發(fā)生器的設(shè)計(jì) 數(shù)字頻率計(jì)的設(shè)計(jì) 數(shù)字秒表的設(shè)計(jì) 第 6章 VHDL設(shè)計(jì)應(yīng)用實(shí)例 8位加法器的設(shè)計(jì) 1. 設(shè)計(jì)思路 多位加法器由 4位二進(jìn)制并行加法器級(jí)聯(lián)構(gòu)成是較好選擇。 本設(shè)計(jì)中的 8位二進(jìn)制并行加法器即是由兩個(gè) 4位二進(jìn)制并行加法器級(jí)聯(lián)而成的 , 其電路原理圖如圖 。039。 A4; 將 4位加數(shù)矢量擴(kuò)為 5位 , 為進(jìn)位提供空間 B5=39。amp。 當(dāng)序列檢測(cè)器連續(xù)收到一組串行二進(jìn)制碼后, 如果這組碼與檢測(cè)器中預(yù)先設(shè)置的碼相同,則輸出 1,否則輸出 0。 第 6章 VHDL設(shè)計(jì)應(yīng)用實(shí)例 圖 8位序列檢測(cè)器邏輯圖 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設(shè)計(jì)應(yīng)用實(shí)例 2. VHDL源程序 LIBRARY IEEE; USE ; ENTITY CHK IS PORT(DIN: IN STD_LOGIC; 串行輸入數(shù)據(jù)位 CLK, CLR: IN STD_LOGIC; 工作時(shí)鐘 /復(fù)位信號(hào) D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); 8位待檢測(cè)預(yù)置數(shù) AB: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); 檢測(cè)結(jié)果輸出 第 6章 VHDL設(shè)計(jì)應(yīng)用實(shí)例 END ENTITY CHK; ARCHITECTURE ART OF CHK IS SIGNAL Q : INTEGER RANGE 0 TO 8; 作為標(biāo)志位 BEGIN PROCESS ( CLK, CLR) IS BEGIN IF CLR= 39。 THEN Q=0; ELSIF CLK39。139。 第 6章 VHDL設(shè)計(jì)應(yīng)用實(shí)例 圖 脈寬數(shù)控調(diào)制信號(hào)發(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設(shè)計(jì)應(yīng)用實(shí)例 2. VHDL源程序 1) 8位可自加載加法計(jì)數(shù)器的源程序 LIBRARY IEEE; USE ; ENTITY LCNT8 IS 8位可自加載加法計(jì)數(shù)器 PORT(CLK, LD: IN STD_LOGIC; 工作時(shí)鐘 /預(yù)置值加載信號(hào) D: IN INTEGER RANGE 0 TO 255 8位分頻預(yù)置數(shù) CAO: OUT STD_LOGIC); 計(jì)數(shù)溢出輸出 END ENTITY LCNT8; 第 6章 VHDL設(shè)計(jì)應(yīng)用實(shí)例 ARCHITECTURE ART OF LCNT8 IS SIGNAL COUNT: INTEGER RANGE 0 TO 255; 8位計(jì)數(shù)器設(shè)置 BEGIN PROCESS ( CLK ) IS BEGIN IF CLK39。139。139。EVENT AND CLK=39。 THEN IF COUNT=255 THEN CAO= 39。; ELSE CAO= 39。; END IF。EVENT AND CAO2= 39。 THEN PSINT=39。; END IF; END PROCESS; LD1=NOT PSINT; LD2=PSINT; PSOUT=PSINT; END ARCHITECTURE ART; 第 6章 VHDL設(shè)計(jì)應(yīng)用實(shí)例 數(shù)字頻率計(jì)的設(shè)計(jì) 1. 設(shè)計(jì)思路 圖 8位十進(jìn)制數(shù)字頻率計(jì)的電路邏輯圖 , 它由 一個(gè)測(cè)頻控制信號(hào)發(fā)生器 TESTCTL、八個(gè)有時(shí)鐘使能的十進(jìn)制計(jì)數(shù)器 CNT 一個(gè)32位鎖存器 REG32B組成 。 要使計(jì)數(shù)使能信號(hào) TSTEN能產(chǎn)生一個(gè) 1秒脈寬的周期信號(hào),對(duì)每個(gè)計(jì)數(shù)器 CNT10的 ENA使能端進(jìn)行同步控制。 測(cè)頻控制信號(hào)發(fā)生器的工作時(shí)序如圖 。 第 6章 VHDL設(shè)計(jì)應(yīng)用實(shí)例 圖 測(cè)頻控制信號(hào)發(fā)生器工作時(shí)序 [ I ] R S T[ I ] C L K[ O ] T S T E N[ O ] L O A D[ O ] C L R _ C N T第 6章 VHDL設(shè)計(jì)應(yīng)用實(shí)例 2) 寄存器 REG32B設(shè)計(jì) 設(shè)置鎖存器的好處是,顯示的數(shù)據(jù)穩(wěn)定,不會(huì)由于周期性的清零信號(hào)而不斷閃爍。 當(dāng)高電平時(shí)計(jì)數(shù)允許 , 低電平時(shí)計(jì)數(shù)禁止 。139。EVENT AND CLK= 39。 THEN IF ENA= 39。 THEN 第 6章 VHDL設(shè)計(jì)應(yīng)用實(shí)例 IF CQI9 THEN CQI=CQI+1; ELSE CQI=0; EN