西安交通大學(xué) 馬麗媛
番茄工作法是一種簡(jiǎn)單易行、更加微觀的時(shí)間管理方法,有助于提高工作效率,同時(shí)保證充足的休息。本文基于Xilinx公司的EGO1平臺(tái),利用現(xiàn)場(chǎng)可編程門陣列FPGA芯片和硬件描述語(yǔ)言Verilog編程設(shè)計(jì)了一個(gè)番茄鐘,具有可設(shè)定和調(diào)節(jié)番茄時(shí)間、控制啟停、狀態(tài)切換、閃爍提醒、通用時(shí)鐘等多種功能,為番茄工作法的實(shí)現(xiàn)提供了一條切實(shí)可行的解決途徑。
隨著現(xiàn)代社會(huì)的飛速發(fā)展,勞動(dòng)強(qiáng)度和工作任務(wù)也在不斷加大,如何充分利用和管理時(shí)間,提高工作效率的同時(shí)保證充足的休息是人們面臨的一個(gè)實(shí)際問(wèn)題,為此,番茄工作法被提出并為越來(lái)越多的人所接受。
番茄工作法是一種簡(jiǎn)單易行、更加微觀的時(shí)間管理方法。利用它可將任務(wù)分解,設(shè)定一個(gè)番茄時(shí)間,在番茄時(shí)間內(nèi)專注工作,中途不允許做任何與該任務(wù)無(wú)關(guān)的事,直到番茄鐘響起,然后在紙上畫(huà)一個(gè)記號(hào),如此視作種一個(gè)“番茄”;之后設(shè)定一個(gè)番茄休息時(shí)間,短暫休息一下,哪怕工作沒(méi)有完成,也要定時(shí)休息,然后再進(jìn)入下一個(gè)番茄時(shí)間。結(jié)束一天的工作后,根據(jù)番茄記錄對(duì)當(dāng)日的工作學(xué)習(xí)情況進(jìn)行復(fù)盤。
可見(jiàn),番茄工作法提高了注意力,減少了中斷,可以增強(qiáng)決策意識(shí),精確地保質(zhì)保量改進(jìn)工作學(xué)習(xí)流程,對(duì)日常的時(shí)間管理提供了很大幫助。本文根據(jù)番茄工作法的特點(diǎn)和功能要求,基于Xilinx公司生產(chǎn)的Artix-7系列現(xiàn)場(chǎng)可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)芯片XC7A35T-1CSG324C以及EGO1開(kāi)發(fā)平臺(tái)、利用Verilog硬件描述語(yǔ)言編程設(shè)計(jì)了一款簡(jiǎn)便、實(shí)用的番茄鐘,為實(shí)現(xiàn)番茄工作法提供了便利。
根據(jù)番茄工作法,本文設(shè)計(jì)的番茄鐘可實(shí)現(xiàn)25min和5min兩種倒計(jì)時(shí)。其中25min主要用于定時(shí)工作學(xué)習(xí),5min用于定時(shí)休息。根據(jù)用戶需要也可通過(guò)調(diào)節(jié)時(shí)、分、秒、清零等按鍵自行設(shè)定其它番茄時(shí)間;25min倒計(jì)時(shí)結(jié)束,系統(tǒng)會(huì)自動(dòng)轉(zhuǎn)為5min倒計(jì)時(shí)狀態(tài)。25min與5min可實(shí)現(xiàn)循環(huán)倒計(jì)時(shí),也可通過(guò)start_stop和load按鍵分別控制時(shí)鐘的開(kāi)始/暫停、狀態(tài)切換以及置數(shù);每次倒計(jì)時(shí)至全零狀態(tài)時(shí),數(shù)碼管閃爍15s用于提示前一階段的結(jié)束,并能自動(dòng)切換至下一初值狀態(tài);將一個(gè)“25min+5min”視為一個(gè)番茄周期,可記錄并顯示番茄周期數(shù),供用戶總結(jié)當(dāng)天的工作學(xué)習(xí)情況。此外,系統(tǒng)還設(shè)計(jì)了通用的時(shí)鐘功能,亦可作為正常的時(shí)鐘使用。

圖1 番茄鐘的系統(tǒng)結(jié)構(gòu)
整個(gè)系統(tǒng)采用自頂向下的層次化設(shè)計(jì)方法,頂層模塊調(diào)用分頻、開(kāi)關(guān)消抖、有限狀態(tài)機(jī)及計(jì)時(shí)、動(dòng)態(tài)顯示模塊以實(shí)現(xiàn)復(fù)雜的數(shù)字電路設(shè)計(jì)。系統(tǒng)總體結(jié)構(gòu)如圖1所示,其中,最左側(cè)的第一級(jí)為一個(gè)100MHz的分頻模塊,經(jīng)分頻后分別得到秒脈沖信號(hào)、用于顯示閃爍控制的2Hz時(shí)鐘信號(hào)、用于按鍵消抖的500Hz時(shí)鐘信號(hào)等。此后的第2級(jí)為5個(gè)按鍵的消抖模塊,有效按鍵輸出給后續(xù)第3級(jí)的狀態(tài)機(jī)和計(jì)數(shù)模塊,最右側(cè)第4級(jí)為動(dòng)態(tài)顯示模塊,其輸出連接到8個(gè)數(shù)碼管的段和位,用于顯示結(jié)果。
系統(tǒng)時(shí)鐘為100MHz,分頻模塊利用計(jì)數(shù)器分頻后分別得到1Hz、2Hz等不同頻率的信號(hào)供后續(xù)電路使用。按鍵消抖采用延時(shí)的方法,延時(shí)后當(dāng)輸入的按鍵電平與之前電平一致時(shí),判定為有效按鍵。
該模塊是整個(gè)設(shè)計(jì)的核心,狀態(tài)轉(zhuǎn)換和倒計(jì)時(shí)、時(shí)間調(diào)節(jié)、番茄數(shù)的累計(jì)等都由該模塊完成。根據(jù)所要完成的功能,整個(gè)系統(tǒng)需要處理9種狀態(tài),且相互之間有著復(fù)雜的轉(zhuǎn)換關(guān)系。若采用畫(huà)流程圖的思路設(shè)計(jì),會(huì)很快陷入困境。因此,本文采用有限狀態(tài)機(jī)來(lái)描述對(duì)象,邏輯清晰,表達(dá)力強(qiáng),且利于系統(tǒng)的結(jié)構(gòu)化和模塊封裝。所謂狀態(tài)機(jī)是指一個(gè)系統(tǒng)或機(jī)器,由若干個(gè)狀態(tài)構(gòu)成,觸發(fā)這些狀態(tài)會(huì)發(fā)生狀態(tài)相互轉(zhuǎn)移的事件。由于狀態(tài)往往是有限的,所以狀態(tài)機(jī)又稱為有限狀態(tài)機(jī),它是一個(gè)非常有用的模型,可以模擬世界上大部分的事物。
有限狀態(tài)機(jī)在任意時(shí)刻都處于有限狀態(tài)集合中的某一狀態(tài)。當(dāng)其被觸發(fā)時(shí),將從當(dāng)前狀態(tài)轉(zhuǎn)換到另一個(gè)狀態(tài),或者仍然保持在當(dāng)前狀態(tài)。任何一個(gè)有限狀態(tài)機(jī)都可以用狀態(tài)轉(zhuǎn)換圖或狀態(tài)轉(zhuǎn)換表來(lái)描述。本文根據(jù)番茄鐘的功能,列出了9種狀態(tài)及其相互之間的轉(zhuǎn)換關(guān)系,如表1所示,其中包括:25min初態(tài)、倒計(jì)時(shí)25min開(kāi)始、25min倒計(jì)時(shí)暫停、25min倒計(jì)時(shí)結(jié)束時(shí)閃爍提醒、5min初態(tài)、倒計(jì)時(shí)5min開(kāi)始、5min倒計(jì)時(shí)暫停、5min倒計(jì)時(shí)結(jié)束時(shí)閃爍提醒、以及全0狀態(tài)。
根據(jù)表1,對(duì)狀態(tài)進(jìn)行編碼,然后采用兩段式描述方法編寫程序。如圖2所示,先使用一個(gè)always塊(圖(a))描述狀態(tài)的轉(zhuǎn)移關(guān)系,如現(xiàn)態(tài)cstate處于S1狀態(tài)時(shí),若觸發(fā)條件為開(kāi)始/暫停按鍵key1,則轉(zhuǎn)向次態(tài)(nstate)S2,否則維持;然后,再用另一個(gè)always塊(圖(b))描述狀態(tài)轉(zhuǎn)移的條件和狀態(tài)輸出,如現(xiàn)態(tài)為S1時(shí),計(jì)數(shù)使能端cnt_en置為1,置數(shù)端置為0。以此類推,實(shí)現(xiàn)9個(gè)狀態(tài)及其關(guān)系的描述。

表1 狀態(tài)轉(zhuǎn)換表

圖2 狀態(tài)機(jī)程序設(shè)計(jì)例程
系統(tǒng)用8個(gè)數(shù)碼管構(gòu)成動(dòng)態(tài)掃描的方式顯示結(jié)果。它接收計(jì)數(shù)模塊送來(lái)的時(shí)鐘、番茄數(shù)等信號(hào),編程實(shí)現(xiàn)動(dòng)態(tài)掃描數(shù)碼管的位、查段碼表并輸出段碼的方式將信號(hào)輸出給數(shù)碼管。時(shí)間顯示在右側(cè)數(shù)碼管上,番茄數(shù)顯示在左側(cè)數(shù)碼管上。
結(jié)論:本文基于FPGA、利用層次化的編程方法和有限狀態(tài)機(jī)的設(shè)計(jì)思想,實(shí)現(xiàn)了一個(gè)番茄鐘。產(chǎn)品具有可設(shè)定和調(diào)節(jié)番茄時(shí)間、控制啟停、狀態(tài)切換、閃爍提醒、通用時(shí)鐘等多種功能,便于日常學(xué)習(xí)工作的時(shí)間管理,可滿足番茄工作法的市場(chǎng)需求。