徐宏亮
(燕山大學,河北 秦皇島 066004)
在電子領域中,頻率是最基本的參數之一,大部分電參數也都和頻率關系密切[1],因此,數字頻率計在電子領域的應用十分廣泛。傳統的數字頻率計大都采用單片機實現,雖然成本較低,但電路復雜且穩定性差。隨著超大規模集成電路的發展,可通過可編程邏輯器件和EDA技術對硬件系統進行設計[2],使用EDA技術進行數字系統設計逐漸成為主流設計方法[3]。EDA即電子設計自動化,一般采用自頂向下的設計理念,使用者可通過硬件語言對目標器件進行設計[4],并能隨時修改[5],從而簡化設計過程[6]。VHDL語言是用來描述從抽象到具體級別硬件的工業標準語言,其程序結構特點是將一個電路模塊或一個系統分成實體(外部端口)和構造體(內部功能算法實現)兩部分實現[7],并且可將邏輯方程、電路原理圖、真值表以及時序波形進行整合從而對電路進行詳細描述[8]。Quartus Ⅱ軟件作為一種EDA開發工具為設計者提供了一種與結構無關的設計環境,可通過在不同的功能模塊上選擇不同的源文件輸入方式可設計出不同的底層功能模塊,然后把這些模塊組裝起來,便可生成具有一定功能的系統[9]。本方法以Quartus Ⅱ為工作平臺,利用VHDL語言設計了一個時序邏輯電路,通過仿真分析,證明可以在軟件層面實現寬量程頻率測量和自動換檔的功能。
數字頻率計的基本原理是以一個頻率穩定的信號作為閘門信號,用計數器對閘門信號帶寬內輸入信號重復次數進行計數,然后將計數結果鎖存起來,最后再由譯碼顯示模塊把鎖存的結果顯示出來。閘門信號帶寬可任意取值,但為了兼顧測頻準確度和測頻速度,本文將閘門信號帶寬設為1s[10]。
數字頻率計主要分為分頻模塊、計數換檔模塊、鎖存模塊和總控模塊,其結構如圖1所示。CLOCK為時鐘信號,GATE為閘門信號,SIGNAL1為待測信號,CLEAR為清零信號,ALARM為超量程提示信號,GEAR為檔位提示信號,MEASUREMENT為輸出結果。

圖1 數字頻率計系統總體結構
測量時,輸入分頻模塊的信號頻率應為200Hz,輸入計數換檔模塊的被測信號頻率范圍為0到1GHz,若超出量程,則計數換檔模塊的超量程提示信號輸出高電平,此時將清零信號置為低電平,可令超量程提示信號歸零。閘門信號同時連接鎖存模塊和計數換擋模塊,計數換檔模塊的輸出連接鎖存模塊的輸入,鎖存模塊的輸出作為整個數字頻率計的輸出。數字頻率計有Hz、KHz、MHz三個檔位,當被測信號的頻率范圍為0到10KHz時,檔位為Hz,檔位提示信號輸出1;當被測信號的頻率范圍為10KHz到10MHz時,檔位為KHz,檔位提示信號輸出2;當被測信號的頻率范圍為10MHz到1GHz時,檔位為MHz,檔位提示信號輸出3。
(1)分頻模塊本質上是一個200進制計數器,其作用是產生測頻所需的閘門信號。該模塊的時鐘信號頻率取為200Hz,當計數達到200時,將輸出的信號反轉,該模塊即可產生脈寬為1s的閘門信號。頻率的定義為單位時間內信號發生周期性變化的次數,因此在閘門信號為高電平時對被測信號的周期性變化進行計數,計數值即為被測信號的頻率,此外,閘門信號還作為鎖存模塊的使能信號以便鎖存計數值。
(2)計數換檔模塊的主體是一億進制計數器,其功能是記錄輸入信號的脈沖數并自動換檔。該模塊包含Hz、KHz、MHz三個檔位,分別用1、2、3表示。在程序中定義四位標準邏輯矢量類型的變量C0,C1,C2,C3,C4,C5,C6,C7,C8,分別作為計數器的個位、十位、百位、千位、萬位、十萬位、百萬位、千萬位和億位,在閘門信號為高電平的情況下計數器對被測信號的上升沿進行計數,從最低位開始計數,每一位滿十個后本位歸零,同時本位的下一位加一,當最高位計滿十個上升沿后歸零,并輸出一個高電平超量程提示信號。通過嵌套if語句實現自動換檔功能,首先判斷億位是否為零,當億位不為零時,顯示C8、C7、C6三位,此時檔位為MHz;否則,判斷千萬位是否為零,當千萬位不為零時,顯示C8、C7、C6三位,此時檔位為MHz;否則,判斷百萬位是否為零,當百萬位不為零時,顯示C6、C5、C4、C3四位,此時檔位為KHz;否則,判斷十萬位是否為零,當十萬位不為零時,顯示C5、C4、C3三位,此時檔位為KHz;否則,判斷萬位是否為零,當萬位不為零時,顯示C4、C3、C2、C1四位,此時檔位為KHz;否則,判斷千位是否為零,當萬位不為零時,顯示C3、C2、C1、C0四位,此時檔位為Hz;對于小于一千的頻率,顯示C2、C1、C0三位,此時擋位為Hz;當清零信號CLEAR有效時,超量程提示信號清零。
(3)鎖存模塊起鎖存作用, 在測量過程中鎖存模塊輸出不變,當閘門信號的下降沿到來時,即測量過程結束后,鎖存模塊的輸出等于輸入,即顯示的計數換檔模塊的測量結果,并且保存到下一次測量結束。
(4)總控模塊的作用是連接其余三個模塊,在編程時首先將三個模塊進行元件例化,當閘門信號的高電平結束時,閘門信號將控制計數換檔模塊計數停止,使鎖存模塊的輸出等于輸入,并將計數器此時記錄的數據作為數字頻率計的輸出。
仿真時時鐘信號均設置周期為5ms,即頻率為200Hz。
當設置被測信號頻率為15Hz(周期約為66.6ms)時,仿真結果數值輸出為15,檔位顯示輸出為1,表示被測信號的頻率為15Hz;當設置被測信號頻率為2777KHz(周期約為360ns)時,仿真結果數值輸出為2777,檔位顯示輸出為2,表示被測信號的頻率為2777KHz;當設置被測信號頻率為199MHz(周期約為5.03ns)時,仿真結果數值輸出為199,檔位顯示輸出為3,表示被測信號的頻率為199MHz。三次仿真均與預期相符,說明程序無誤。且均未超量程,因此超量程提示信號始終為低電平。
本文介紹了一種寬量程數字頻率計的設計方法,首先對系統結構進行分析,將系統分成多個模塊;然后設計系統,分別完成各模塊設計并進行元件例化,通過編寫總控模塊將各模塊連接在一起;最后進行了系統測試,驗證了該方法可實現預期功能。
與傳統設計方法相比,該方法設計巧妙、代碼精簡、實用性強,并且不同模塊之間相互獨立,實現了數字系統硬件的軟件化;另一方面,由于時間和能力有限,以及設備和程序不完善,所以系統功能還有許多地方可以擴展,離實際使用還有一定的距離,需要進行補充和完善。