胡一丁,隋麗穎,劉肖楠,指導老師:何英昊
(大連理工大學城市學院,遼寧大連,116000)
在科技高度發展的今天,隨著大規模集成電路和計算機的發展,現代電子設計的方法與技術也在不斷發生變化。目前,比較有效的電子設計方法是將板卡設計、可編程邏輯設計和軟件開發融合在一起。而且,計算機的應用與發展已經在人們的日常生活中逐漸嶄露頭角。大多數電子產品多是由計算機電路組成,本次設計的課題就是基于計算機電路的時鐘脈沖信號、狀態控制等原理設計出的數字跑表。跑表是體育比賽中常用的計時儀器,所以對時間的精確度很高。
基于前面的分析,課題數字跑表設計由FPGA器件完成按鍵控制、數字的顯示等核心數字電路的功能。設計數字跑表,令它通過兩個按鍵來控制計時的開始和結束,一個是清0控制按鍵,用于設置跑表為初始零狀態;另一個是開始/停止控制按鍵,在清0控制按鍵無效的時候,按一下開始/停止鍵則計時器開始計時,再按一下則暫停計時,再按一下則繼續計時。數字跑表總體設計框圖如圖1所示。

圖1 數字跑表的流程框圖
根據此設計流程,我們可以將數字跑表的設計分為三個主要部分:
(1)分頻
首先根據FPGA器件的基礎時鐘,進行時鐘的設計,將器件自帶的時鐘頻率進行分頻,分頻成為課題數字跑表所需的時鐘信號,課題要求輸入時鐘頻率為100Hz,100Hz=0.01s,使其滿足數字跑表計時精度為10ms的要求,我們已知的FPGA器件上自帶的時鐘信號為50MHz。
(2)控制
根據要求數字跑表要具有控制功能,通過兩個按鍵控制,一個為清零控制按鍵,控制異步清零,和啟動功能,用于設置跑表為初始零狀態,另一個按鍵為開始/停止按鍵,控制數字跑表的啟動和停止,按一下開始/停止鍵則計時器開始計時,再按一下則暫停計時,再按一下則繼續計時。
(3)顯示
最后一步,對所得的數據進行處理,并將其顯示。由顯示的時分秒用7段數碼管顯示出來。將三個部分整合起來放在一張Block Diagram上進行編譯,然后對管腳進行鎖定。

圖2 數字跑表的整體電路圖
數字跑表設計的程序流程圖如圖3所示。

圖3 數字跑表設計的程序流程圖
輸入信號:CLK(時鐘信號),CLR(清零按鍵),PAUSE(開始/暫停按鍵)
輸出信號:MSH,MSL,SH,SL,MH,ML(7段數碼管)
分頻部分器件圖如圖4所示。

圖4 分頻模塊
邏輯功能:對于器件自帶的50MHz的信號進行分頻成為100Hz的輸入時鐘信號。
通過6個7段數碼管分別顯示時、分、秒,器件圖如圖5所示。

圖5 顯示模塊
根據課題要求數字跑表的輸出要能夠直接驅動共陰極的7店數碼管顯示。
要設置兩個按鍵,一個為清零控制按鍵,控制異步清零,和啟動功能,用于設置跑表為初始零狀態,另一個按鍵為開始/停止按鍵,控制數字跑表的啟動和停止,按一下開始/停止鍵則計時器開始計時,再按一下則暫停計時,再按一下則繼續計時。器件圖如圖6所示。

圖6 控制模塊
完成了系統的分模塊的功能調試后,可以進入系統仿真調試階段。根據系統設計原理,當啟動按鍵和開始計時按鍵同時打開時,就能夠開始計時,得到相應的顯示效果。將器件引腳鎖定,CLR與PAUSE兩個引腳鎖定按鍵:

圖7 器件引腳鎖定圖
當清零按鍵和開始/暫停按鍵同時置零時程序開始計時,如圖8所示。

圖8 啟動計時仿真
當清零按鍵置一時,異步清零,跑表設置為初始狀態,如下圖9所示。

圖9 重置初始狀態仿真
當清零按鍵置零,開始/暫停案件置一時,程序暫停計時,如下圖10所示。

圖10 開始/暫停按鍵仿真
實驗結果表明,該數字跑表設計的非常成功,由于實驗電腦顯示問題,所以仿真的輸入頻率未達到100Hz,但是證明程序沒有問題,改變程序中的分頻模塊即可得到100Hz的輸入時鐘信號,達到課題所要求的10ms的精確程度。
由其邏輯電路模塊仿真也可看出,由控制模塊控制其他兩個模塊,分別完成其任務,圖11、圖12、圖13分別給出了在DE2板子上模擬實現的結果,與現實生活中所用的數字跑表功能基本一致,也與仿真結果基本一致。

圖11 運行開始計時

圖12 暫停計時

圖13 重置計時
(1)運行(SM1 向下)
(2)暫停(SM1 向上)
(3)清零(SM0向上為清零,向下為重新開始)
在開始程序設計的時候,由于對Quartus II軟件使用不夠熟悉,以及對VerilogHDL語言掌握不夠,出現了很多語法錯誤,經過一遍遍的嘗試與修改。終于將程序編譯通過了,在這個過程中,也對軟件的使用有了一點點的進步。仿真的時候由于實驗室的電腦不能實現將50MHz分成100Hz的時鐘,所以將其改成了50Hz的時鐘分頻為1Hz的時鐘,仿真后,出現了結果。下載的時候,DE2板沒有現象,經過反復檢查程序、原理圖和引腳,都沒有發現錯誤,后來發現是因為將另一臺電腦的數據線插到了DE2板上,經過修改終于出現了現象。通過本次實驗,不僅熟悉了Quartus II軟件,還掌握了VerilogHDL語言的設計思想,同時還了解了DE2板以及數碼管的使用及原理,增強了自身的硬件語言水平,總而言之,本次課程收獲良多。