李冠霖,張寶玲
(航天工程大學(xué),北京 101416)
使用Verilog HDL方法可實(shí)現(xiàn)數(shù)字電路的設(shè)計(jì)過(guò)程,數(shù)字鐘不但可以顯示時(shí)間,還可完成如時(shí)間核對(duì)、鬧鈴等簡(jiǎn)易功能,與PCB編程法相比,規(guī)避了搭建過(guò)程煩瑣、不易有效布局線路等弊端。此編程語(yǔ)言不但具有易操作、可視化強(qiáng)的特點(diǎn),對(duì)較大規(guī)模集成電路或單片機(jī)而言,引入Verilog HDL編程語(yǔ)言還可得到多數(shù)設(shè)備兼容,既可生成設(shè)計(jì)的時(shí)鐘產(chǎn)品,還可適當(dāng)優(yōu)化電路資源,當(dāng)存在不同模塊的設(shè)計(jì)使用需要時(shí),還可靈活設(shè)置脈沖,并通過(guò)相關(guān)設(shè)備實(shí)現(xiàn)仿真。本文對(duì)基于Verilog HDL原理的數(shù)字時(shí)鐘設(shè)計(jì)框架、各部分功能、仿真過(guò)程進(jìn)行論述。
數(shù)字時(shí)鐘需具備現(xiàn)在時(shí)間的顯示功能,準(zhǔn)確向用戶呈現(xiàn)對(duì)應(yīng)時(shí)間的時(shí)、分、秒信息,即隨著時(shí)間的推移,數(shù)字時(shí)鐘需在每秒內(nèi)完成一次數(shù)字變動(dòng),當(dāng)用戶發(fā)現(xiàn)時(shí)刻不符時(shí),還可靈活調(diào)整校對(duì)時(shí)間,并可根據(jù)需要設(shè)置鬧鐘或計(jì)時(shí)器功能。計(jì)時(shí)器以倒計(jì)時(shí)形式完成時(shí)間的顯示與變換,因此可將整個(gè)數(shù)字時(shí)鐘系統(tǒng)分為四個(gè)模塊,分別是以1 Hz為頻率的計(jì)時(shí)器模塊、時(shí)間校對(duì)模塊、鬧鈴模塊、倒計(jì)時(shí)模塊,不同模式可通過(guò)時(shí)鐘的按鈕轉(zhuǎn)換操作,若對(duì)應(yīng)功能非用戶選擇功能,還需通過(guò)反復(fù)按鍵方式達(dá)到預(yù)期目的;還可在按下對(duì)應(yīng)按鍵時(shí),在屏幕上顯示對(duì)應(yīng)功能,并將對(duì)應(yīng)譯碼動(dòng)態(tài)存儲(chǔ)記錄,也可在屏幕上有所顯示[1]。
由于本時(shí)鐘系統(tǒng)各部分功能具有分支獨(dú)立特點(diǎn),為此可通過(guò)由上到下的方式,從用戶感知端起完成時(shí)鐘功能的設(shè)計(jì),在編寫(xiě)代碼時(shí)使用Verilog HDL編程語(yǔ)言,加入對(duì)應(yīng)邏輯符號(hào),實(shí)現(xiàn)分頻和時(shí)間單位的顯示功能,也可用對(duì)應(yīng)時(shí)間變量形式表示各時(shí)間單位。當(dāng)時(shí)間完成以秒為單位的變換后,即進(jìn)行一次脈沖信號(hào)的發(fā)射與接收過(guò)程,信號(hào)不但變化頻率極快,在對(duì)應(yīng)秒單位從00變?yōu)?9后,即進(jìn)行下一次循環(huán),對(duì)應(yīng)表示分鐘的單位值加1,同理當(dāng)分單位從00變換到59后,表示小時(shí)的單位值加1小時(shí)的取值范圍為0~23,以此類推完成時(shí)間的更迭與變換過(guò)程[2]。
對(duì)應(yīng)時(shí)鐘電路在設(shè)計(jì)時(shí),不但需保證上述模塊功能的良好執(zhí)行,還可通過(guò)在電路內(nèi)分別設(shè)置振蕩器和分頻器的方法,完成對(duì)應(yīng)時(shí)間的核準(zhǔn)與校對(duì)過(guò)程,將時(shí)間校準(zhǔn)電路連接到對(duì)應(yīng)時(shí)間的計(jì)數(shù)器后,再連接譯碼器和對(duì)應(yīng)時(shí)間單位在時(shí)鐘的顯示器,進(jìn)而提升時(shí)鐘顯示時(shí)間的準(zhǔn)確性。也可根據(jù)功能需要,將四個(gè)主要模塊繼續(xù)細(xì)化為模式轉(zhuǎn)換電路、防抖按鍵模塊、顯示器模塊、譯碼器模塊、供電模塊等。因編程方式類似于C語(yǔ)言,在寫(xiě)入對(duì)應(yīng)代碼時(shí),可將主要功能預(yù)先設(shè)置為不同的mode模式,即對(duì)應(yīng)數(shù)字編碼與功能保持一一對(duì)應(yīng)關(guān)系,同時(shí)也需注意部分功能可同時(shí)作用。例如,當(dāng)鬧鐘響起時(shí),仍可顯示當(dāng)前時(shí)間,即功能的同時(shí)作用性需在設(shè)計(jì)時(shí)具備。另外,考慮到編程語(yǔ)言中的變量屬性,對(duì)編程條件有一定限制,確定計(jì)數(shù)器進(jìn)制和對(duì)應(yīng)圖形文件、文本文件在時(shí)鐘程序中的生成嵌入方式,也可通過(guò)時(shí)間校準(zhǔn)功能模塊與計(jì)時(shí)器模塊的連接,實(shí)現(xiàn)預(yù)期功能[3]。
時(shí)間顯示不但需要在時(shí)鐘屏幕上顯示3個(gè)時(shí)間單位(時(shí)、分、秒),還需根據(jù)時(shí)間的變換原理,在確保計(jì)數(shù)單位符合客觀事實(shí)規(guī)律的同時(shí),將對(duì)應(yīng)時(shí)鐘編碼方式使用8421碼,在確定好基本時(shí)間單位后,將屏幕顯示模塊與計(jì)數(shù)模塊相連。編程語(yǔ)言中有關(guān)于時(shí)鐘的庫(kù)文件,可通過(guò)設(shè)置不同變量的方式表示對(duì)應(yīng)計(jì)時(shí)與顯示模塊的時(shí)鐘,當(dāng)接收到一次時(shí)間變換脈沖信號(hào)后,對(duì)應(yīng)秒變量完成一次自加運(yùn)算,每增加一秒對(duì)應(yīng)變量值加1,因時(shí)、分、秒存在對(duì)應(yīng)臨界值,為此還需確保時(shí)間的顯示符合常規(guī)邏輯,若接收到脈沖信號(hào)后沒(méi)有發(fā)生對(duì)應(yīng)時(shí)間變換,或?qū)?yīng)顯示數(shù)的變換時(shí)間大于1秒、1分、1小時(shí),即反應(yīng)頻率不為1 Hz時(shí),則需啟動(dòng)時(shí)間校準(zhǔn)模塊。也可將時(shí)間模塊的工作原理歸結(jié)為當(dāng)產(chǎn)生一次脈沖信號(hào)時(shí),即判斷對(duì)應(yīng)計(jì)數(shù)單位的個(gè)位是否加到9,若加到9在十位加1,個(gè)位歸0重新計(jì)算;秒和分的十位數(shù)達(dá)到5,且個(gè)位為9時(shí)即不再計(jì)算,當(dāng)個(gè)位與十位全部歸0后,即過(guò)去1小時(shí),并產(chǎn)生一次進(jìn)位信號(hào)。在確定各時(shí)間單位對(duì)應(yīng)計(jì)數(shù)器后,計(jì)數(shù)器將通過(guò)譯碼形式將譯碼值轉(zhuǎn)換到時(shí)鐘顯示屏上,由于對(duì)應(yīng)顯示屏一般由七組條狀光源組成,不但可顯示0~9的對(duì)應(yīng)值,還可根據(jù)二極管的發(fā)光原理,在電路內(nèi)部完成一次高低電平的轉(zhuǎn)換,也需加入限流電阻防止其內(nèi)部出現(xiàn)短路燒壞器件的現(xiàn)象出現(xiàn)。
時(shí)間校準(zhǔn)模塊功能的實(shí)現(xiàn)需通過(guò)設(shè)置時(shí)間校準(zhǔn)變量方式,即判斷對(duì)應(yīng)時(shí)間若符合時(shí)間校準(zhǔn)條件后,也可通過(guò)設(shè)置按鍵變量方式,即用戶按下按鍵后,就完成一次脈沖和功能轉(zhuǎn)換過(guò)程。還可將內(nèi)部工作原理通過(guò)仿真軟件實(shí)現(xiàn),當(dāng)用戶提出一次時(shí)間校準(zhǔn)需求后,即可根據(jù)編譯器工作原理,發(fā)出對(duì)應(yīng)脈沖信號(hào)實(shí)現(xiàn)時(shí)間同步校正功能,此部分電路工作原理具有邏輯性,即通過(guò)判斷是否符合校準(zhǔn)條件方式,完成一次電路開(kāi)關(guān)的打開(kāi)或閉合過(guò)程,為提升電路觸發(fā)器的穩(wěn)定性,也需通過(guò)電路校正方式實(shí)現(xiàn)。
當(dāng)用戶提出模式轉(zhuǎn)換需求后,即可通過(guò)編程方式完成模式的轉(zhuǎn)換,將對(duì)應(yīng)的四大功能分別用1~4的代碼實(shí)現(xiàn),每當(dāng)用戶按下一次功能轉(zhuǎn)換按鈕時(shí),則對(duì)應(yīng)mode值加1,初始值為1,變換區(qū)間為1~4,并通過(guò)設(shè)置判斷語(yǔ)句,即當(dāng)mode值為4時(shí),用戶此時(shí)按下功能轉(zhuǎn)換按鍵,對(duì)應(yīng)模式又將變?yōu)?,以此類推完成模式的轉(zhuǎn)換過(guò)程。轉(zhuǎn)換需求也可被看作分頻模式,使用分頻器實(shí)現(xiàn)預(yù)期功能,并可實(shí)時(shí)調(diào)節(jié)時(shí)鐘的工作頻率,利用時(shí)鐘各單位的自加原理,實(shí)現(xiàn)時(shí)鐘功能的分頻,在完成一次分頻需求后,即發(fā)出一次信號(hào)脈沖。此時(shí),需要判斷時(shí)鐘的振蕩情況與是否達(dá)到計(jì)數(shù)的最大值,若達(dá)到則此時(shí)計(jì)數(shù)過(guò)程需停止,并完成一次反相型號(hào)的輸出過(guò)程,若反之則對(duì)計(jì)數(shù)值完成一次自加,繼續(xù)重復(fù)上述過(guò)程。另外,分頻器的工作頻率大約為10 Hz,脈沖信號(hào)的輸入輸出過(guò)程體現(xiàn)分頻特點(diǎn),并根據(jù)計(jì)數(shù)器的工作原理實(shí)現(xiàn)高效分頻。
鬧鈴模塊則通過(guò)對(duì)應(yīng)模式按鈕到達(dá)對(duì)應(yīng)功能后,通過(guò)判斷語(yǔ)句或根據(jù)用戶設(shè)置的響鈴時(shí)間,當(dāng)系統(tǒng)對(duì)應(yīng)的時(shí)間與用戶設(shè)置時(shí)間完全一致時(shí),鬧鈴則會(huì)響一次,當(dāng)用戶提出修改響鈴時(shí)間需求時(shí),此時(shí)鬧鐘模式無(wú)須改變,秩序?qū)?duì)應(yīng)時(shí)間修改為用戶預(yù)期時(shí)間,即可完成鬧鐘時(shí)間的變換過(guò)程。
倒計(jì)時(shí)模塊不但需確保時(shí)鐘具有實(shí)時(shí)暫停、繼續(xù)計(jì)時(shí)的基本功能,還可根據(jù)需要重新計(jì)時(shí),進(jìn)而完成一次計(jì)時(shí)過(guò)程。一般倒計(jì)時(shí)功能的實(shí)現(xiàn),需要對(duì)應(yīng)系統(tǒng)存在100 Hz的信號(hào),當(dāng)用戶按下按鍵后,即完成一次脈沖信號(hào)的發(fā)射過(guò)程,用戶按下暫停按鈕后倒計(jì)時(shí)模塊將暫停作業(yè),時(shí)間將定格在用戶按下暫停鍵前的對(duì)應(yīng)時(shí)間節(jié)點(diǎn),若用戶不想繼續(xù)進(jìn)行計(jì)時(shí)功能,則可通過(guò)再按一次鍵的方式,讓倒計(jì)時(shí)模塊歸0,進(jìn)而重新完成倒計(jì)時(shí)功能操作。
若需實(shí)現(xiàn)各項(xiàng)時(shí)鐘基本功能,還可通過(guò)輔助添加防抖模塊,即用戶按下時(shí)鐘按鍵后,規(guī)避了用戶無(wú)意觸碰操作按鈕,對(duì)操作帶來(lái)的不便,也可通過(guò)添加防抖軟件方式,讓計(jì)時(shí)器實(shí)現(xiàn)對(duì)應(yīng)功能。時(shí)間顯示模塊則由6個(gè)高清顯示燈管組成,不但讓整個(gè)時(shí)鐘系統(tǒng)具有可編程的操作特性,還可確保其功能的良好執(zhí)行與各項(xiàng)功能的共同運(yùn)行機(jī)制。另外,對(duì)各部分時(shí)間單位進(jìn)行編譯的模組,需使用二進(jìn)制方式表示,完成對(duì)代碼編譯的譯碼器則可對(duì)輸入譯碼無(wú)損編譯,還可添加對(duì)應(yīng)的掃描功能,以完成對(duì)時(shí)間間隔的動(dòng)態(tài)測(cè)控,符合人體工程學(xué)的工作原理,此部分功能的實(shí)現(xiàn)主要靠發(fā)光二極管和顯示屏方式實(shí)現(xiàn)。
數(shù)字時(shí)鐘功能的實(shí)現(xiàn)與仿真過(guò)程可通過(guò)將對(duì)應(yīng)編程文件添加到Verilog HDL軟件方式,實(shí)現(xiàn)電路的基本邏輯是否符合預(yù)期值。首先評(píng)估電路的各項(xiàng)功能和電路是否符合時(shí)序性特點(diǎn),當(dāng)完成電路基本連線,并按實(shí)驗(yàn)步驟完成對(duì)各個(gè)模塊功能的簡(jiǎn)單測(cè)試仿真后,即可判斷出設(shè)計(jì)的電路是否具備良好的應(yīng)用性與功能性,并準(zhǔn)確獲得電路運(yùn)行需具備的各項(xiàng)參數(shù)值。
Verilog HDL是一種常見(jiàn)的數(shù)字邏輯電路編程方式,其語(yǔ)言具有可編程性,代碼具有易理解性,且編程語(yǔ)言相對(duì)簡(jiǎn)單,無(wú)須設(shè)置過(guò)多變量和語(yǔ)句判斷即可實(shí)現(xiàn)時(shí)鐘的基本功能。同時(shí),程序具有良好的仿生機(jī)制,與石英鐘相比,數(shù)字邏輯電路時(shí)鐘利用電子信息的工作原理,用較低成本實(shí)現(xiàn)較完備的功能,不但在單片機(jī)領(lǐng)域有所應(yīng)用,還可根據(jù)使用者提出的日益豐富需求,進(jìn)一步提升時(shí)鐘功能性與實(shí)用性。