豆曉東 倪春偉 周振
摘 要:針對實際應(yīng)用的需要,利用可編程邏輯器件設(shè)計了搶答器。該搶答器單元電路的軟件設(shè)計利用硬件描述語言設(shè)計完成。設(shè)計了控制主電路、數(shù)字顯示電路、編碼譯碼電路功能,并利用Quartus工具軟件完成了編譯仿真驗證;硬件選擇FLEX10K系列的EPF10K10LC84-4芯片來實現(xiàn)搶答器的系統(tǒng)功能。該搶答器具有很強的功能擴充性,應(yīng)用效果良好。
關(guān)鍵詞:可編程邏輯器件;搶答器;硬件描述語言;仿真;系統(tǒng)可編程
中圖分類號:TM571.61
1 FLEX10K
FLEX10K系列器件首次采用嵌入式陣列,其容量高達25萬門。由于它的高密度和易于在設(shè)計中實現(xiàn)復(fù)雜宏函數(shù)和存儲器,因此可以把一個子系集成在單一芯片上,而每個FLEX10K器件都包含一個嵌入式陣列,每個嵌入式陣列可以實現(xiàn)專用的功能,因此嵌入式陣列可以減少芯片的體積,使其運行速度更快,使用更靈活。
2 VHLD硬件描述語言簡介
VHDL最早是由美國國防部提出的。作為硬件描述語言的第一個國際標準,VHDL描述電路行為的算法有很多優(yōu)點:
(1)設(shè)計層次較高,用于較復(fù)雜的計算時,能盡早發(fā)現(xiàn)存在的問題,縮短設(shè)計周期。(2)獨立實現(xiàn)、修改方便。(3)移植性強,其源代碼已成為一種輸入標準,可用于各種不同的EDA工具。(4)VHDL類型眾多而且支持用戶自定義類型,支持自頂而下的設(shè)計方法和多種電路的設(shè)計。
3 QuartusⅡ簡介
Altera的QuartusⅡ設(shè)計軟件繼承了MAX+plusⅡ的所有優(yōu)點,是更加完善的PLD設(shè)計工具。它提供了完整的多平臺設(shè)計環(huán)境,能夠直接滿足特定設(shè)計需要,為可編程芯片系統(tǒng)(SOPC)提供全面的設(shè)計環(huán)境。
4 設(shè)計思路
設(shè)計制作一個競賽搶答器,每組受控于一個搶答按鍵,分別為s0、s1、s2、s3,設(shè)置主持人控制鍵rst,用于控制整個系統(tǒng)清零和搶答有效控制。按下復(fù)位鍵時,系統(tǒng)清零;抬起復(fù)位鍵時,搶答開始;系統(tǒng)具有第一搶答信號鑒別和鎖存功能。在主持人將系統(tǒng)復(fù)位并使搶答有效開始后,第一搶答者按下?lián)尨鸢粹o,電路應(yīng)記憶下第一搶答者的組別,并封鎖其他各組的按鈕,即其他任何一組按鍵都不會使電路響應(yīng);系統(tǒng)以兩種方式指示第一搶答者:一是通過對應(yīng)的輸出引腳讓數(shù)碼管顯示組別號;二是在第一搶答者產(chǎn)生時,蜂鳴器響起。
5 原理分析
5.1 搶答器鑒別模塊
在這個模塊中主要實現(xiàn)搶答過程中的搶答功能,還能記錄搶答者的臺號,并且能實現(xiàn)當有一路搶答按鍵按下時,其余各路被封鎖的功能。其中有四個搶答信號s0、s1、s2、s3;搶答使能信號s;搶答狀態(tài)顯示信號states;搶答與警報時鐘信號clk2;系統(tǒng)復(fù)位信號rst;警報信號tmp。
5.2 報警模塊(已包含在搶答鑒別模塊里)
在這個模塊中主要實現(xiàn)搶答過程中的報警功能,當主持人按下控制鍵,有人搶答時蜂鳴器開始報警,有效電平輸入信號i;狀態(tài)輸出信號q;計數(shù)脈沖clk2。
5.3 譯碼模塊
在這個模塊中主要實現(xiàn)搶答過程中將選手的臺號轉(zhuǎn)換成二進制碼并送給數(shù)碼管顯示。
各模塊程序如下:
搶答鑒別模塊:
library ieee;--搶答鑒別模塊
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity qdjb is
port(rst,clk2:in std_logic;
s0,s1,s2,s3:in std_logic;
states:buffer std_logic_vector(3 downto 0);
tmp:out std_logic);
end qdjb;
architecture one of qdjb is
signal st:std_logic_vector(3 downto 0);
begin
p1:process(s0,rst,s1,s2,s3,clk2)
begin
if rst='0' then
tmp<='0';st<="0000";
elsif clk2'event and clk2='1' then
if (s0='1' or st(0)='1')and not( st(1)='1' or st(2)='1' or st(3)='1' ) then st(0)<='1';
end if ;
if (s1='1' or st(1)='1')and not( st(0)='1' or st(2)='1' or st(3)='1' ) then st(1)<='1';
end if ;
if (s2='1' or st(2)='1')and not( st(0)='1' or st(1)='1' or st(3)='1' ) then st(2)<='1';
end if ;
if (s3='1' or st(3)='1')and not( st(0)='1' or st(1)='1' or st(2)='1' ) then st(3)<='1';
end if ;
tmp<=s0 or s1 or s2 or s3;
end if ;
end process p1;
p2:process(states(0),states(1),states(2),states(3))
begin
if (st="0000") then states<="0000";
elsif (st<="0001") then states<="0001";
elsif (st<="0010") then states<="0010";
elsif (st<="0100") then states<="0011";
elsif (st<="1000") then states<="0100";
end if;
end process p2;
end one;
譯碼模塊:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY YMQ IS
PORT(AIN4: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
DOUT7: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END YMQ;
ARCHITECTURE ART OF YMQ IS
BEGIN
PROCESS(AIN4)
BEGIN
CASE AIN4 IS
WHEN "0001"=>DOUT7<="0110000"; --1
WHEN "0010"=>DOUT7<="1101101" --2
WHEN "0011"=>DOUT7<="1111001"; --3
WHEN "0100"=>DOUT7<="0110011"; --4
WHEN OTHERS=>DOUT7<="0000000";
END CASE;
END PROCESS;
END ARCHITECTURE ART;
6 結(jié)束語
本文利用硬件描述高級語言VHDL設(shè)計的優(yōu)點完成了對應(yīng)單元的電路設(shè)計,使系統(tǒng)較為簡潔合理。利用復(fù)雜可編程器件實現(xiàn)了搶答器的系統(tǒng)功能,使電路引腳定義自如,實際印板布線靈活,應(yīng)用可靠。通過以實例可以看出,用VHDL語言設(shè)計數(shù)字系統(tǒng),是自上至下地進行設(shè)計,十分方便靈活。由于VHDL具有并行同時語句,設(shè)計的電路延遲小。
參考文獻:
[1]譚會生,瞿遂春.EDA技術(shù)綜合應(yīng)用實例與分析[M].西安:西安電子科技大學(xué)出版社,2004.
[2]李國洪,胡輝,沈明山.EDA技術(shù)與實驗[M].北京:機械工業(yè)出版社,2008.
[3]王道憲,賀名臣,劉偉.VHDL電路設(shè)計技術(shù)[M].北京:國防工業(yè)出版社,2004.