熊瑜
摘 要 Altera Quartus II 作為一種可編程邏輯的設(shè)計環(huán)境, 由于其強(qiáng)大的設(shè)計能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設(shè)計者的歡迎。文章以一個計時電路為例,利用VHDL硬件編程語言和原理圖結(jié)合,實現(xiàn)計時、校準(zhǔn)、整點(diǎn)提示等功能,最后連接數(shù)字電路實驗箱進(jìn)行驗證。
關(guān)鍵詞 Quartus II 計時 校準(zhǔn) 分頻
中圖分類號:TP274 文獻(xiàn)標(biāo)識碼:A
0 引言
本文利用Quartus II 9.0實現(xiàn)由四個數(shù)碼管顯示的計時電路,以低兩位按照 20 進(jìn)制設(shè)計,高兩位為任意進(jìn)制設(shè)計為例,并按 1Hz 頻率校準(zhǔn)高兩位的顯示,按 10Hz頻率校準(zhǔn)低兩位的顯示,在計數(shù)到達(dá)某整點(diǎn)值時(例如 0300 的時刻),4盞 LED 燈一起按照 10Hz 閃爍 5 秒鐘。
1電路設(shè)計
整體電路的程序包含4大部分:計數(shù)器(高低位兩段)、七段譯碼器、分頻器、整點(diǎn)閃爍。各電路模塊擬通過硬件語言實現(xiàn),生成原理圖,再根據(jù)邏輯關(guān)系進(jìn)行頂層電路的連接,至此其基本電路的設(shè)計情況完成?,F(xiàn)將各模塊實現(xiàn)方法呈現(xiàn)如下。
1.1計數(shù)器的設(shè)計
1.1.1低兩位計數(shù)器的設(shè)計
低兩位固定為二十進(jìn)制,可用五位二進(jìn)制編碼其計數(shù)狀態(tài),程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY shiyansi IS
PORT ( clk1,RST1 : IN STD_LOGIC;
DOUT1 : OUT STD_LOGIC_VECTOR (4 DOWNTO 0);
COUT : OUT STD_LOGIC);
END shiyansi;
ARCHITECTURE fwm OF shiyansi IS
SIGNAL Q1 : STD_LOGIC_VECTOR (4 DOWNTO 0);
BEGIN
PROCESS(clk1,RST1)
BEGIN
IF RST1 = 0 THEN Q1<=(OTHERS => 0); COUT <= 0;
ELSIF clk1EVENT AND clk1=1 THEN
Q1<=Q1+1;
COUT<= 0;
IF Q1 >= "10100" THEN Q1<=(OTHERS => 0); COUT<= 1;
END IF;
END IF;
END PROCESS;
DOUT1<=Q1 ;
END fwm;
clk1為低位時鐘輸入,COUT為進(jìn)位信號輸出,DOUT1為五位計數(shù)信號輸出。
1.1.2高兩位計數(shù)器的設(shè)計
高兩位要求為任意進(jìn)制,用五位開關(guān)模擬五位二進(jìn)制來編碼32進(jìn)制以內(nèi)的可調(diào)進(jìn)制,程序如下:
LIRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY shi41 IS
PORT ( clk2,RST2 : IN STD_LOGIC;
M : IN STD_LOGIC_VECTOR (4 DOWNTO 0);
COUT : IN STD_LOGIC;
DOUT2 : OUT STD_LOGIC_VECTOR (4 DOWNTO 0) );
END shi41;
ARCHITECTURE fwm OF shi41 IS
SIGNAL Q2 : STD_LOGIC_VECTOR (4 DOWNTO 0);
SIGNAL m1 : STD_LOGIC_VECTOR (4 DOWNTO 0);
BEGIN
PROCESS(clk2,RST2)
BEGIN
m1<=M-1;
IF RST2 = 0 THEN Q2<=(OTHERS => 0);
ELSIF clk2EVENT AND clk2=1 THEN
Q2<=Q2+1;
IF Q2 >= m1 THEN Q2<=(OTHERS => 0);
END IF;
END IF;
END PROCESS;
DOUT2<=Q2 ;
END fwm;
clk2為高位時鐘輸入,COUT為進(jìn)位信號輸出,DOUT2為五位計數(shù)信號輸出。M為進(jìn)制控制開關(guān)輸入信號。
1.2七段譯碼器的設(shè)計
實現(xiàn)高低兩位的譯碼,程序簡單但較為冗雜,在此不列出。
data_in1、data_in2分別為低位和高位計數(shù)輸入,dis_out1、dis_out2分別為14段低位和高位譯碼信號輸出。
1.3分頻器的設(shè)計
實驗箱內(nèi)晶振時鐘頻率為100MHz,進(jìn)行分頻分別得到10Hz 和1Hz的頻率,較簡單在此不再列出。
clk_out1為10Hz輸出,clk_out2為1Hz輸出。
1.4整點(diǎn)閃爍的設(shè)計
整點(diǎn)時刻低兩位全部為零,高兩位為任意指定的數(shù)。在這種情況下,LED燈要閃爍5S。因為低兩位計數(shù)1S跳一次,所以可以用低兩位的前5S實現(xiàn)定時。閃爍用10Hz的時鐘頻率來實現(xiàn)。其程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY shi44 IS
PORT ( clk : IN STD_LOGIC;
X : IN STD_LOGIC_VECTOR (4 DOWNTO 0);
DOUT2 : IN STD_LOGIC_VECTOR (4 DOWNTO 0);
DOUT1 : IN STD_LOGIC_VECTOR (4 DOWNTO 0);
LIGHT : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) );
END shi44;
ARCHITECTURE fwm OF shi44 IS
SIGNAL A: STD_LOGIC_VECTOR (4 DOWNTO 0);
SIGNAL B: STD_LOGIC_VECTOR (4 DOWNTO 0);
SIGNAL C: STD_LOGIC_VECTOR (4 DOWNTO 0);
BEGIN
PROCESS(clk)
BEGIN
A<=X;
B<=DOUT2;
C<=DOUT1;
IF ((A=B AND (C="00000" OR C="00001" OR C="00010" OR C="00011" OR C="00100"))) THEN
LIGHT<=(OTHERS => clk);
ELSE
LIGHT<="0000";
END IF;
END PROCESS;
END fwm;
clk連接10Hz時鐘信號,DOUT1、DOUT2分別為低位和高位計數(shù)輸入,X為5位整點(diǎn)設(shè)置輸入。
1.5頂層電路的連接
按照各部分的邏輯關(guān)系將以上原理圖連接起來并引出輸入與輸出,如圖1所示。其中,A為低位控制校準(zhǔn)信號,B為高位控制校準(zhǔn)信號。
2驗證
將電腦與數(shù)字電路實驗箱相連接,按照實驗箱鎖定各個引腳,實現(xiàn)輸入控制與輸出顯示,并將其下載到開發(fā)板上。驗證所設(shè)計的電路,符合要求。
參考文獻(xiàn)
[1] 維普網(wǎng).Quartus Ⅱ[J].今日電子,2008.
[2] 盧毅.VHDL與數(shù)字電路設(shè)計[M].科學(xué)出版社,2001.
[3] 李聰錕.數(shù)字電子技術(shù)基礎(chǔ)[M].高等教育出版社,2014.
[4] 鄭亞民,許敏.基于QuartusⅡ的帶計時器功能的秒表系統(tǒng)設(shè)計[J].電子工程師,2005, 31(1):59-61.