【正文】
25count:=0。addr_1s=CONV_STD_LOGIC_VECTOR(count,4)。elseos=39。039。count:=count+1。addr_1s=CONV_STD_LOGIC_VECTOR(count,4)。end if。elseif count=9 thenos=39。139。count:=0。addr_1s=CONV_STD_LOGIC_VECTOR(count,4)。elseos=39。039。count:=count+1。addr_1s=CONV_STD_LOGIC_VECTOR(count,4)。end if。end if。end if。end process k1。END hl_architecture。該模塊框圖如圖 所示,主要完成小時高位 1 和 2 之間的變換,同時當(dāng)小時高位為 2 時, flag 為高電平,當(dāng)為 1 時,flag 為低電平。clk_1sisetiset_addr[3..0]addr_1s[3..0]flaghhinst13圖 小時高位計數(shù)模塊組件26核心程序如下:ENTITY hh ISPORT(clk_1s : IN STD_LOGIC。iset : IN STD_LOGIC。iset_addr : IN STD_LOGIC_VECTOR(3 DOWNTO 0)。addr_1s : OUT STD_LOGIC_vector(3 downto 0)。flag: OUT STD_LOGIC)。END hh。ARCHITECTURE hh_architecture OF hh ISBEGINk1:process(clk_1s,iset )variable count:integer range 0 to 2:=0。beginif iset=39。039。 thencount:=CONV_INTEGER(iset_addr )。addr_1s=iset_addr。if count=2 thenflag=39。139。else flag=39。039。end if。elsif rising_edge(clk_1s ) thenif count=2 thenflag=39。039。count:=0。addr_1s=CONV_STD_LOGIC_VECTOR(count,4)。elsif count=1 thenflag=39。139。count:=count+1。addr_1s=CONV_STD_LOGIC_VECTOR(count,4)。27elseflag=39。039。count:=count+1。addr_1s=CONV_STD_LOGIC_VECTOR(count,4)。end if。end if。end process k1。END hh_architecture。 譯碼顯示模塊該模塊完成對計數(shù)器編碼信息的譯碼工作,驅(qū)動數(shù)碼管則顯示相應(yīng)的數(shù)字。模塊組件如 所示。clkaddr[3..0]led[7..0]driveinst9圖 譯碼顯示模塊組件核心程序如下:ENTITY drive IS PORT (clk:in std_logic。addr : IN STD_LOGIC_vector(3 downto 0)。 led : OUT STD_LOGIC_vector(7 downto 0 ))。 END drive。 ARCHITECTURE behave OF drive IS SIGNAL sel:STD_LOGIC_vector(3 downto 0)。 BEGIN process(clk)begin sel=addr。 case sel is 28when 0000=led=11000000。 when 0001=led=11111001。 when 0010=led=10100100。 when 0011=led=10110000。 when 0100=led=10011001。 when 0101=led=10010010。 when 0110=led=10000010。 when 0111=led=11111000。 when 1000=led=10000000。 when 1001=led=10010000。 when others=led=10111111。 end case。 end process。 end behave。該模塊的仿真波形如圖 所示。圖 譯碼顯示波形仿真 譯碼顯示強制轉(zhuǎn)換模塊由于系統(tǒng)只能顯示時、分,故在此將時低位的數(shù)碼管的“小數(shù)點” 作為秒顯示,以 1HZ 的頻率閃爍。模塊組件如圖 所示。29idata[7..0] odata[6..0]convinst18圖 譯碼顯示強制轉(zhuǎn)換模塊組件 整點報時模塊該模塊能夠完成整點時的報時功能。即將至整點時,前四秒低音,最后一秒高音。該模塊在十二點三十分的時候,蜂鳴器響起音樂,持續(xù)一分鐘。模塊組件如圖 所示。mh[3..0]ml[3..0]hh[3..0]hl[3..0]iclkclksig500sig1kspeakerbaoshiinst24圖 整點報時模塊組件:if rising_edge(clk05s) thenif t=119 thent:=0。elset:=t+1。end if。if mh=0101 and ml=1001 and(t=117 or t=115 or t=113 or t=111) then c=39。039。else c=39。139。end if。if mh=0000 and ml=0000 and (t=119 or t=0 or t=1)then30 d=39。039。else d=39。139。end if。end if。end process。a=clk1k and not(d)。b=clk05s and not(c)。speaker=a or b。說明:改程序中的時鐘信號 clk05s 的頻率為 2HZ,且其有效電平(高電平)占空比為 2/3。該模塊仿真波形如圖 所示。圖 整點報時模塊波形仿真。31結(jié)果與展望結(jié)果將設(shè)計程序下載到硬件電路上運行調(diào)試后,最終結(jié)果與預(yù)期效果基本一致,整點報時功能正常,時、分都能夠正常計數(shù)并能由按鍵控制校時。在此次的數(shù)字鐘設(shè)計過程中,更進一步地熟悉有關(guān)數(shù)字電路的知識和具體應(yīng)用。學(xué)會了利用 QuarterII 軟件進行原理圖的繪制,硬件描述語言 VHDL 的編寫,程序的仿真等工作。并能根據(jù)仿真結(jié)果分析設(shè)計的存在的問題和缺陷,從而進行程序的調(diào)試和完善。在設(shè)計電路中,往往是先仿真后連接實物圖,但有時候仿真和電路連接并不是完全一致的,例如在對具體模塊的仿真的過程中,往往沒有考慮到整體設(shè)計的層面以及與上下模塊接口的設(shè)計。再加上器件對信號的延時等問題,實際下載硬件電路上后會出現(xiàn)一系列的問題,因此仿真圖和電路連接圖還是有一定區(qū)別的。此次的數(shù)字鐘設(shè)計重在于按鍵的控制和各個模塊代碼的編寫,雖然能把鍵盤接口和各個模塊的代碼編寫出來,并能正常顯示,但對于各個模塊的優(yōu)化設(shè)計還有一定的缺陷和不足??偟膩碚f,通過這次的設(shè)計更進一步地增強了動手能力,對數(shù)字鐘的工作原理也有了更加透徹的理解。在本設(shè)計調(diào)試過程中遇到了一些問題如下:,故顯示電路所用芯片的 I/O 端口高達 32 個,使得資源利用不合理。 15 的矩陣鍵盤所限制,使得鬧鐘功能實現(xiàn)不易。,若先調(diào)整時低位,后調(diào)整時高位,會出現(xiàn) 24 到 29 這樣的不正常點數(shù)。,數(shù)碼管顯示全部為零且計數(shù)器不工作,經(jīng)分析得知程序中的總的清零信號保持有效狀態(tài),改動程序后計數(shù)器開始計數(shù)。32展望本設(shè)計中雖然有控制鍵對時鐘進行控制,但是用到的按鍵略多,在實際應(yīng)用上存在不足。故提出改進方案為用一個按鍵控制數(shù)碼管的位選,再用兩個按鍵控制計數(shù)的加減。這樣可以節(jié)省按鍵資源,以供更多的功能的使用。本設(shè)計利用硬件描述語言和 FPGA 芯片相結(jié)合進行數(shù)字鐘的研究,從中可以看到 EDA 技術(shù)的發(fā)展在一定程度上實現(xiàn)了硬件設(shè)計軟件化。設(shè)計的過程變的相對簡單,容易修改。相信隨著電子技術(shù)的發(fā)展,數(shù)字鐘的功能會更加多樣化,滿足人們的各種需要。 主要參考文獻[1] 王紫婷,吳蓉 ,張彩珍,EDA 技術(shù)與應(yīng)用,蘭州大學(xué)出版社, 2022[2] 潘松,黃繼業(yè),EDA 技術(shù)實用教程,北京科學(xué)出版社,2022[3] 崔葛,基于 FPGA 的數(shù)字電路系統(tǒng)設(shè)計,西安電子科技大學(xué)出版社,2022[4] 王開軍,姜宇柏,面向 CPLD/FPGA 的 VHDL 設(shè)計,機械工業(yè)出版社, 2022[5] 畢滿清,電子技術(shù)實驗與課程設(shè)計,機械工業(yè)出版社,2022[6] 呂思忠,數(shù)子電路實驗與課程設(shè)計,哈爾濱工業(yè)大學(xué)出版社,2022[7] 謝自美,電子線路設(shè)計、實驗、測試,華中理工大學(xué)出版社,2022