熊瑜
摘 要 Altera Quartus II 作為一種可編程邏輯的設計環(huán)境, 由于其強大的設計能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設計者的歡迎。文章以一個計時電路為例,利用VHDL硬件編程語言和原理圖結合,實現(xiàn)計時、校準、整點提示等功能,最后連接數(shù)字電路實驗箱進行驗證。
關鍵詞 Quartus II 計時 校準 分頻
中圖分類號:TP274 文獻標識碼:A
0 引言
本文利用Quartus II 9.0實現(xiàn)由四個數(shù)碼管顯示的計時電路,以低兩位按照 20 進制設計,高兩位為任意進制設計為例,并按 1Hz 頻率校準高兩位的顯示,按 10Hz頻率校準低兩位的顯示,在計數(shù)到達某整點值時(例如 0300 的時刻),4盞 LED 燈一起按照 10Hz 閃爍 5 秒鐘。
1電路設計
整體電路的程序包含4大部分:計數(shù)器(高低位兩段)、七段譯碼器、分頻器、整點閃爍。各電路模塊擬通過硬件語言實現(xiàn),生成原理圖,再根據(jù)邏輯關系進行頂層電路的連接,至此其基本電路的設計情況完成?,F(xiàn)將各模塊實現(xiàn)方法呈現(xiàn)如下。
1.1計數(shù)器的設計
1.1.1低兩位計數(shù)器的設計
低兩位固定為二十進制,可用五位二進制編碼其計數(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為進位信號輸出,DOUT1為五位計數(shù)信號輸出。
1.1.2高兩位計數(shù)器的設計
高兩位要求為任意進制,用五位開關模擬五位二進制來編碼32進制以內的可調進制,程序如下:
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為進位信號輸出,DOUT2為五位計數(shù)信號輸出。M為進制控制開關輸入信號。
1.2七段譯碼器的設計
實現(xiàn)高低兩位的譯碼,程序簡單但較為冗雜,在此不列出。
data_in1、data_in2分別為低位和高位計數(shù)輸入,dis_out1、dis_out2分別為14段低位和高位譯碼信號輸出。
1.3分頻器的設計
實驗箱內晶振時鐘頻率為100MHz,進行分頻分別得到10Hz 和1Hz的頻率,較簡單在此不再列出。
clk_out1為10Hz輸出,clk_out2為1Hz輸出。
1.4整點閃爍的設計
整點時刻低兩位全部為零,高兩位為任意指定的數(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位整點設置輸入。
1.5頂層電路的連接
按照各部分的邏輯關系將以上原理圖連接起來并引出輸入與輸出,如圖1所示。其中,A為低位控制校準信號,B為高位控制校準信號。
2驗證
將電腦與數(shù)字電路實驗箱相連接,按照實驗箱鎖定各個引腳,實現(xiàn)輸入控制與輸出顯示,并將其下載到開發(fā)板上。驗證所設計的電路,符合要求。
參考文獻
[1] 維普網(wǎng).Quartus Ⅱ[J].今日電子,2008.
[2] 盧毅.VHDL與數(shù)字電路設計[M].科學出版社,2001.
[3] 李聰錕.數(shù)字電子技術基礎[M].高等教育出版社,2014.
[4] 鄭亞民,許敏.基于QuartusⅡ的帶計時器功能的秒表系統(tǒng)設計[J].電子工程師,2005, 31(1):59-61.