王媛媛
(西安科技大學 電氣與控制工程學院,陜西 西安 710054)
數(shù)字秒表是一種常用的計時工具,以其價格低廉、走時精確、使用方便、功能多而倍受廣大用戶的喜愛[1]。而基于FPGA的設計是當前數(shù)字系統(tǒng)設計領域中的重要方式之一[2]。同時,基于FPGA的片上系統(tǒng)與基于專用集成電路(ASIC)的片上系統(tǒng)相比,具有風險小、開發(fā)周期短、成本低、可擦寫等優(yōu)點[3]。其可以完全由用戶通過軟件進行配置和編程,從而完成某種特定的功能,且可以反復擦寫。在修改和升級時不需額外地改變PCB電路板,只是在計算機上修改和更新程序,使硬件設計工作成為軟件工作,從而縮短了系統(tǒng)的開發(fā)周期,提高了實現(xiàn)的靈活性并降低了成本。本文基于FPGA開發(fā)平臺,采用VHDL硬件描述語言設計了一款數(shù)字秒表,實現(xiàn)了以下功能:按鍵 1(K1),啟動和停止秒表;按鍵 2(K2),復位(清零);蜂鳴器實現(xiàn)溢出報警;數(shù)碼管實現(xiàn)計時顯示。
數(shù)字秒表常用于體育競賽以及各種要求有較精確計時的場合,其主要指標參數(shù)和功能要求有:精度及分辨率,計時長度,啟、停,復位等。根據(jù)設計的指標及功能要求,系統(tǒng)分為分頻模塊、計數(shù)模塊、顯示控制模塊和譯碼、顯示模塊,其總體結構框圖如圖1所示。分頻模塊將FPGA開發(fā)板提供的50 MHz時鐘信號進行分頻,得到計數(shù)及數(shù)碼管動態(tài)掃描顯示所需的頻率;計數(shù)模塊由十進制和六進制計數(shù)器組成,用于實現(xiàn)秒表計時功能,其輸出數(shù)據(jù)首先送給顯示控制模塊,該模塊的主要功能是實現(xiàn)數(shù)碼管的動態(tài)掃描顯示控制,提供顯示的位選控制信號和段選控制信號;最后是譯碼、顯示輸出,將計時時間進行譯碼并正確顯示在數(shù)碼管上。
圖1 數(shù)字秒表總體結構框圖
1.2.1 分頻模塊
分頻模塊的主要作用是將較高頻率的輸入時鐘信號進行分頻,產(chǎn)生設計所需頻率的時鐘信號。模塊框圖如圖2所示。FPGA開發(fā)板提供的時鐘信號頻率為50 MHz,而設計要求秒表精度為0.01 s,即需要計數(shù)時鐘頻率為100 Hz,同時顯示掃描頻率需 1 kHz,因此,通過分頻模塊對時鐘信號進行分頻,得到100 Hz和1 kHz的時鐘信號,分別提供給計數(shù)模塊和顯示控制模塊。該模塊VHDL程序如下。
圖2 分頻模塊框圖
1.2.2 計數(shù)模塊
計數(shù)模塊是秒表的核心模塊,完成計時功能。本設計要求秒表分辨率為0.01 s,即10 ms,最大計時為:59 min,59.99 s。因此,該模塊包括4個十進制計數(shù)器和兩個六進制計數(shù)器。通過十進制和六進制計數(shù)器的級聯(lián)組合,分別產(chǎn)生秒表的百分秒(0~99)、秒(0~59)和分(0~59)。十進制計數(shù)器為異步復位、同步使能計數(shù)器,其程序代碼如下。
十進制計數(shù)器的仿真波形如圖3所示。
圖3 十進制計數(shù)器仿真波形
1.2.3 數(shù)碼管動態(tài)掃描顯示模塊
通過分頻模塊和計數(shù)模塊,已可以實現(xiàn)秒表的計時功能,接下來要將秒表的計時時間通過數(shù)碼管顯示出來。數(shù)碼管顯示方式有靜態(tài)顯示和動態(tài)掃描顯示,本設計采用數(shù)碼管動態(tài)掃描顯示方式。
(1)數(shù)碼管動態(tài)掃描顯示原理分析
數(shù)碼管顯示的方式有靜態(tài)顯示方式和動態(tài)顯示方式兩種。靜態(tài)顯示的特點是每個數(shù)碼管的段選必須接一個8位數(shù)據(jù)線來保持顯示的字型碼。當送入一次字型碼后,顯示字形可一直保持,直到送入新字形碼為止。這種方法的優(yōu)點是占用CPU時間少,顯示便于監(jiān)測和控制,缺點是硬件比較復雜、成本高。因此,在實際應用中,一般采用動態(tài)顯示方式,即所有數(shù)碼管的段選都并聯(lián)在一起,由位選線控制哪一位數(shù)碼管有效。所謂動態(tài)顯示即輪流向各位數(shù)碼管送出字型碼和相應的位選,利用發(fā)光管的余輝和人眼視覺暫留作用使人感覺數(shù)碼管是同時顯示的。在編程時,需要輸出段選和位選信號,位選信號選中其中一個數(shù)碼管,然后輸出段碼,使該數(shù)碼管顯示所需的內容,延時一段時間后,再選中另一個數(shù)碼管,再輸出對應的段碼,高速交替。在動態(tài)顯示程序中,各個位的延時時間長短是非常重要的,如果延時時間長,則會出現(xiàn)閃爍現(xiàn)象;如果延時時間短,則會出現(xiàn)顯示暗且有重影。
(2)顯示控制部分
根據(jù)對數(shù)碼管動態(tài)掃描顯示原理的分析,結合設計的功能要求,選用開發(fā)板上6個共陰數(shù)碼管掃描輸出顯示秒表的分、秒和百分秒,掃描頻率一般只要超過人眼的視覺暫留頻率24 Hz以上就可以點亮單個數(shù)碼管而不閃爍,本設計采用1 kHz掃描頻率。位選模塊框圖如圖4所示。
位選程序代碼如下所示。
圖4 位選示意圖
顯示控制原理示意圖如圖5所示。位選信號在1 kHz時鐘的作用下循環(huán)掃描每位數(shù)碼管,使各數(shù)碼管高速交替顯示輸出所送入的數(shù)據(jù)信號。在顯示控制模塊的作用下數(shù)碼管分別顯示對應內容:秒表的分、秒和毫秒,比如:顯示 10:59:96,即 10分 59.96秒。顯示控制模塊框圖如圖6所示,顯示控制程序如下所示。
圖5 顯示控制示意圖
圖6 顯示控制模塊框圖
(3)譯碼、顯示部分
LED數(shù)碼管是由8個發(fā)光二極管封裝而成的,每段為一個發(fā)光二極管,其字形結構如圖7所示。選擇點亮不同的段,可以顯示出不同的字形,例如,當“a,b,c,d,g”字段被點亮時,顯示字符“3”。
譯碼、顯示部分的主要作用是將顯示控制模塊輸出的二進制數(shù)據(jù)轉換成0~9的十進制數(shù)據(jù)在數(shù)碼管上顯示。其VHDL代碼如下所示。
圖7 數(shù)碼管示意圖
在Quartus II開發(fā)平臺上實現(xiàn)了數(shù)字秒表系統(tǒng)設計,其原理框圖如圖8所示。
圖8 基于FPGA的數(shù)字秒表原理圖
對系統(tǒng)整體進行了仿真分析,其仿真波形如圖9所示。
圖9 數(shù)字秒表系統(tǒng)仿真波形
本系統(tǒng)采用VHDL硬件描述語言完成了編程,并在Quartus II集成開發(fā)環(huán)境下進行了綜合、編譯和仿真分析,最后將設計引腳與硬件電路進行適配,將程序代碼通過下載器下載至FPGA,本設計采用的是EP2C5Q208C8 FPGA。經(jīng)過調試與驗證,系統(tǒng)實現(xiàn)了如下功能:(1)具有復位功能,任何時刻都可以進行清零復位,復位時顯示00:00:00;(2)具有啟動、停止功能,可以實現(xiàn)秒表計時開啟和計時中斷停止,計時時長為59分59.99秒;(3)具有溢出報警功能。本系統(tǒng)實現(xiàn)了設計指標要求。
本設計基于FPGA開發(fā)平臺,采用模塊化設計思想、VHDL硬件描述語言和原理圖輸入方法,并經(jīng)過實際電路測試,達到了預期的設計指標要求。與普通電子秒表系統(tǒng)相比,該系統(tǒng)具有外圍電路少、精度高、集成度高、可靠性強等優(yōu)點[4]。除此之外,也是基于FPGA的數(shù)字系統(tǒng)最為突出的特點,即當系統(tǒng)需要升級,或更新某項設計指標時,用戶不需要重新設計或更換硬件電路,只需要通過軟件修改程序即可,這樣既可以節(jié)約成本,也可以大大縮短設計周期。
[1]樊金榮,謝智文.數(shù)字倒計時秒表的設計與實現(xiàn)[J].中南民族大學學報,2005,24(1):79-80.
[2]孫富明,李笑盈.基于多種 EDA工具的 FPGA設計[J].電子技術應用,2002(1):70-71.
[3]崔健,劉晉.基于 FPGA嵌入式系統(tǒng)的研究與應用[J].微型機與應用,2010(3):8-10.
[4]楊遠成,趙創(chuàng)社,雷金利.基于FPGA的數(shù)字秒表的設計[J].現(xiàn)代電子技術,2008(12):52-53.