楊秀蘭 楊玉
摘要:當(dāng)前FPGA應(yīng)用很廣,可以用來(lái)設(shè)計(jì)很多自身需求的程序以達(dá)到一定的便利。本文使用FPGA設(shè)計(jì)一個(gè)計(jì)時(shí)器,該計(jì)時(shí)器用到有限狀態(tài)機(jī)的機(jī)制來(lái)實(shí)現(xiàn)控制,計(jì)時(shí)器可實(shí)現(xiàn)時(shí)分秒的精確計(jì)數(shù),并可顯示出去再液晶屏或者顯示屏。最后進(jìn)行功能仿真以校驗(yàn)時(shí)序和控制的準(zhǔn)確性。
關(guān)鍵詞: FPGA;計(jì)時(shí)器;控制;狀態(tài)機(jī)
1.前言
當(dāng)前FPGA的應(yīng)用非常廣,用它進(jìn)行編程的人也越來(lái)越多。應(yīng)用FPGA進(jìn)行自身所需求的產(chǎn)品的設(shè)計(jì)是非常合適的,用有限狀態(tài)機(jī)的機(jī)制去控制計(jì)時(shí)器,讓計(jì)時(shí)器可以重置、報(bào)時(shí)等。有限狀態(tài)機(jī)常常被用在自動(dòng)售貨機(jī)、排號(hào)機(jī)、ATM、銀行業(yè)務(wù)自助機(jī)等上面。該計(jì)時(shí)器可顯示時(shí)分秒,最大計(jì)時(shí)為59時(shí)59分59秒,可以清零和每隔10分鐘進(jìn)行報(bào)時(shí)。
2.設(shè)計(jì)與實(shí)現(xiàn)
該計(jì)時(shí)器由三個(gè)部分組成,這三個(gè)部分分別是控制部分、計(jì)時(shí)部分、顯示和發(fā)聲部分??刂撇糠种饕梢粋€(gè)有限狀態(tài)機(jī)完成控制,有清零和啟動(dòng)/暫停等按鍵。該有限狀態(tài)機(jī)設(shè)置六個(gè)狀態(tài),分別是清零狀態(tài)、零值狀態(tài)、開(kāi)始狀態(tài)、計(jì)時(shí)狀態(tài)、停止?fàn)顟B(tài)、啟動(dòng)狀態(tài)。該狀態(tài)機(jī)兩個(gè)輸入分別是清零按鍵(re)、啟停按鍵(star/stop),兩個(gè)輸出分別是計(jì)時(shí)許可(able)、計(jì)時(shí)清零(rst),其狀態(tài)機(jī)圖如下圖1所示:
其中,當(dāng)清零按鍵re按下時(shí),狀態(tài)機(jī)進(jìn)入清除狀態(tài),其計(jì)時(shí)許可控制輸出信號(hào)able為低電平,計(jì)時(shí)清零輸出信號(hào)rst為高電平,則進(jìn)行清零,計(jì)時(shí)器就會(huì)清除當(dāng)前所有計(jì)時(shí),并從清零狀態(tài)進(jìn)入到零值的狀態(tài);而在零值狀態(tài)下,當(dāng)按下啟停按鍵(star/stop)時(shí),就會(huì)進(jìn)入開(kāi)始狀態(tài),則計(jì)時(shí)器開(kāi)始計(jì)時(shí);而在開(kāi)始狀態(tài)下時(shí),當(dāng)star/stop按鍵由0變成1時(shí),則會(huì)進(jìn)入自動(dòng)計(jì)時(shí)狀態(tài),計(jì)時(shí)許可控制信號(hào)able為高電平,允許計(jì)數(shù)器計(jì)數(shù);在計(jì)時(shí)狀態(tài)下,當(dāng)按下啟停按鍵時(shí)即star/stop按鍵由1變成0時(shí),則停止計(jì)時(shí),會(huì)進(jìn)入停止?fàn)顟B(tài);在停止?fàn)顟B(tài)下,當(dāng)star/stop按鍵由0變成1時(shí),就會(huì)進(jìn)入啟動(dòng)狀態(tài);在啟動(dòng)狀態(tài)下,當(dāng)按下啟停按鍵時(shí)即star/stop按鍵由1變成0時(shí),則又進(jìn)入開(kāi)始狀態(tài);當(dāng)star/stop按鍵由0變成1時(shí),進(jìn)入計(jì)時(shí)狀態(tài),這時(shí)計(jì)數(shù)器會(huì)在原來(lái)已經(jīng)計(jì)有的數(shù)字的基礎(chǔ)上繼續(xù)計(jì)時(shí)。如果想重新開(kāi)始計(jì)時(shí),則按下清零按鈕(re)。
整個(gè)計(jì)時(shí)器的三個(gè)部分的輸入輸出模塊圖如圖2所示,
其中,clk為FPGA開(kāi)發(fā)板的時(shí)鐘。時(shí)間部分為:timehh(小時(shí)高位)、timehl(小時(shí)低位)、timemh(分鐘高位)、timeml(分鐘低位)、timesh(秒高位)、timesl(秒低位)。顯示發(fā)聲部分為:ledd為輸出的數(shù)據(jù)即時(shí)間,leds為寄存器選擇控制輸出信號(hào),當(dāng)其為低電平時(shí),表示數(shù)據(jù)總線傳輸?shù)氖敲羁刂菩盘?hào),當(dāng)其為高電平時(shí),表示數(shù)據(jù)總線傳輸?shù)氖菙?shù)據(jù)信號(hào);ledr為讀/寫(xiě)控制輸出信號(hào),當(dāng)其為低電平時(shí),表示向顯示屏控制芯片寫(xiě)數(shù)據(jù);lede為讀/寫(xiě)操作允許控制脈沖輸出信號(hào),高電平有效;sound為發(fā)聲信號(hào),用于統(tǒng)計(jì)每十分鐘進(jìn)行一次報(bào)時(shí);f為使能控制信號(hào),低電平有效,高電平時(shí)不允許占用數(shù)據(jù)總線。
3.總結(jié)
該設(shè)計(jì)制作了一個(gè)有限狀態(tài)機(jī)控制的計(jì)時(shí)器,其特點(diǎn)是可長(zhǎng)時(shí)間計(jì)時(shí)并報(bào)時(shí),是一個(gè)很實(shí)用的計(jì)時(shí)器。本文以設(shè)計(jì)一個(gè)實(shí)用的計(jì)時(shí)器去了解和探索FPGA的開(kāi)發(fā),以便以后能做出更多更好更有用的設(shè)計(jì)。
參考文獻(xiàn)
1.曾一凡, 吳思琪. 基于FPGA和有限狀態(tài)機(jī)的守時(shí)系統(tǒng)設(shè)計(jì)[J]. 計(jì)算機(jī)測(cè)量與控制, 2014, 022(005):1565-1567.
2.孫兆偉, 劉源, 徐國(guó)棟,等. 基于FPGA內(nèi)置RAM的抗輻射有限狀態(tài)機(jī)設(shè)計(jì)[J]. 航空學(xué)報(bào), 2010(05):118-124.
作者簡(jiǎn)介:楊玉(1977-),女,廣西玉林人,學(xué)士,助教,研究方向:流動(dòng)力學(xué),為本文通訊作者。
資助基金:二本院校離散數(shù)學(xué)MOOC改革與應(yīng)用(2020XJJGZC10)