徐宏亮
(燕山大學(xué),河北 秦皇島 066004)
在電子領(lǐng)域中,頻率是最基本的參數(shù)之一,大部分電參數(shù)也都和頻率關(guān)系密切[1],因此,數(shù)字頻率計(jì)在電子領(lǐng)域的應(yīng)用十分廣泛。傳統(tǒng)的數(shù)字頻率計(jì)大都采用單片機(jī)實(shí)現(xiàn),雖然成本較低,但電路復(fù)雜且穩(wěn)定性差。隨著超大規(guī)模集成電路的發(fā)展,可通過可編程邏輯器件和EDA技術(shù)對硬件系統(tǒng)進(jìn)行設(shè)計(jì)[2],使用EDA技術(shù)進(jìn)行數(shù)字系統(tǒng)設(shè)計(jì)逐漸成為主流設(shè)計(jì)方法[3]。EDA即電子設(shè)計(jì)自動化,一般采用自頂向下的設(shè)計(jì)理念,使用者可通過硬件語言對目標(biāo)器件進(jìn)行設(shè)計(jì)[4],并能隨時(shí)修改[5],從而簡化設(shè)計(jì)過程[6]。VHDL語言是用來描述從抽象到具體級別硬件的工業(yè)標(biāo)準(zhǔn)語言,其程序結(jié)構(gòu)特點(diǎn)是將一個電路模塊或一個系統(tǒng)分成實(shí)體(外部端口)和構(gòu)造體(內(nèi)部功能算法實(shí)現(xiàn))兩部分實(shí)現(xiàn)[7],并且可將邏輯方程、電路原理圖、真值表以及時(shí)序波形進(jìn)行整合從而對電路進(jìn)行詳細(xì)描述[8]。Quartus Ⅱ軟件作為一種EDA開發(fā)工具為設(shè)計(jì)者提供了一種與結(jié)構(gòu)無關(guān)的設(shè)計(jì)環(huán)境,可通過在不同的功能模塊上選擇不同的源文件輸入方式可設(shè)計(jì)出不同的底層功能模塊,然后把這些模塊組裝起來,便可生成具有一定功能的系統(tǒng)[9]。本方法以Quartus Ⅱ?yàn)楣ぷ髌脚_,利用VHDL語言設(shè)計(jì)了一個時(shí)序邏輯電路,通過仿真分析,證明可以在軟件層面實(shí)現(xiàn)寬量程頻率測量和自動換檔的功能。
數(shù)字頻率計(jì)的基本原理是以一個頻率穩(wěn)定的信號作為閘門信號,用計(jì)數(shù)器對閘門信號帶寬內(nèi)輸入信號重復(fù)次數(shù)進(jìn)行計(jì)數(shù),然后將計(jì)數(shù)結(jié)果鎖存起來,最后再由譯碼顯示模塊把鎖存的結(jié)果顯示出來。閘門信號帶寬可任意取值,但為了兼顧測頻準(zhǔn)確度和測頻速度,本文將閘門信號帶寬設(shè)為1s[10]。
數(shù)字頻率計(jì)主要分為分頻模塊、計(jì)數(shù)換檔模塊、鎖存模塊和總控模塊,其結(jié)構(gòu)如圖1所示。CLOCK為時(shí)鐘信號,GATE為閘門信號,SIGNAL1為待測信號,CLEAR為清零信號,ALARM為超量程提示信號,GEAR為檔位提示信號,MEASUREMENT為輸出結(jié)果。
圖1 數(shù)字頻率計(jì)系統(tǒng)總體結(jié)構(gòu)
測量時(shí),輸入分頻模塊的信號頻率應(yīng)為200Hz,輸入計(jì)數(shù)換檔模塊的被測信號頻率范圍為0到1GHz,若超出量程,則計(jì)數(shù)換檔模塊的超量程提示信號輸出高電平,此時(shí)將清零信號置為低電平,可令超量程提示信號歸零。閘門信號同時(shí)連接鎖存模塊和計(jì)數(shù)換擋模塊,計(jì)數(shù)換檔模塊的輸出連接鎖存模塊的輸入,鎖存模塊的輸出作為整個數(shù)字頻率計(jì)的輸出。數(shù)字頻率計(jì)有Hz、KHz、MHz三個檔位,當(dāng)被測信號的頻率范圍為0到10KHz時(shí),檔位為Hz,檔位提示信號輸出1;當(dāng)被測信號的頻率范圍為10KHz到10MHz時(shí),檔位為KHz,檔位提示信號輸出2;當(dāng)被測信號的頻率范圍為10MHz到1GHz時(shí),檔位為MHz,檔位提示信號輸出3。
(1)分頻模塊本質(zhì)上是一個200進(jìn)制計(jì)數(shù)器,其作用是產(chǎn)生測頻所需的閘門信號。該模塊的時(shí)鐘信號頻率取為200Hz,當(dāng)計(jì)數(shù)達(dá)到200時(shí),將輸出的信號反轉(zhuǎn),該模塊即可產(chǎn)生脈寬為1s的閘門信號。頻率的定義為單位時(shí)間內(nèi)信號發(fā)生周期性變化的次數(shù),因此在閘門信號為高電平時(shí)對被測信號的周期性變化進(jìn)行計(jì)數(shù),計(jì)數(shù)值即為被測信號的頻率,此外,閘門信號還作為鎖存模塊的使能信號以便鎖存計(jì)數(shù)值。
(2)計(jì)數(shù)換檔模塊的主體是一億進(jìn)制計(jì)數(shù)器,其功能是記錄輸入信號的脈沖數(shù)并自動換檔。該模塊包含Hz、KHz、MHz三個檔位,分別用1、2、3表示。在程序中定義四位標(biāo)準(zhǔn)邏輯矢量類型的變量C0,C1,C2,C3,C4,C5,C6,C7,C8,分別作為計(jì)數(shù)器的個位、十位、百位、千位、萬位、十萬位、百萬位、千萬位和億位,在閘門信號為高電平的情況下計(jì)數(shù)器對被測信號的上升沿進(jìn)行計(jì)數(shù),從最低位開始計(jì)數(shù),每一位滿十個后本位歸零,同時(shí)本位的下一位加一,當(dāng)最高位計(jì)滿十個上升沿后歸零,并輸出一個高電平超量程提示信號。通過嵌套if語句實(shí)現(xiàn)自動換檔功能,首先判斷億位是否為零,當(dāng)億位不為零時(shí),顯示C8、C7、C6三位,此時(shí)檔位為MHz;否則,判斷千萬位是否為零,當(dāng)千萬位不為零時(shí),顯示C8、C7、C6三位,此時(shí)檔位為MHz;否則,判斷百萬位是否為零,當(dāng)百萬位不為零時(shí),顯示C6、C5、C4、C3四位,此時(shí)檔位為KHz;否則,判斷十萬位是否為零,當(dāng)十萬位不為零時(shí),顯示C5、C4、C3三位,此時(shí)檔位為KHz;否則,判斷萬位是否為零,當(dāng)萬位不為零時(shí),顯示C4、C3、C2、C1四位,此時(shí)檔位為KHz;否則,判斷千位是否為零,當(dāng)萬位不為零時(shí),顯示C3、C2、C1、C0四位,此時(shí)檔位為Hz;對于小于一千的頻率,顯示C2、C1、C0三位,此時(shí)擋位為Hz;當(dāng)清零信號CLEAR有效時(shí),超量程提示信號清零。
(3)鎖存模塊起鎖存作用, 在測量過程中鎖存模塊輸出不變,當(dāng)閘門信號的下降沿到來時(shí),即測量過程結(jié)束后,鎖存模塊的輸出等于輸入,即顯示的計(jì)數(shù)換檔模塊的測量結(jié)果,并且保存到下一次測量結(jié)束。
(4)總控模塊的作用是連接其余三個模塊,在編程時(shí)首先將三個模塊進(jìn)行元件例化,當(dāng)閘門信號的高電平結(jié)束時(shí),閘門信號將控制計(jì)數(shù)換檔模塊計(jì)數(shù)停止,使鎖存模塊的輸出等于輸入,并將計(jì)數(shù)器此時(shí)記錄的數(shù)據(jù)作為數(shù)字頻率計(jì)的輸出。
仿真時(shí)時(shí)鐘信號均設(shè)置周期為5ms,即頻率為200Hz。
當(dāng)設(shè)置被測信號頻率為15Hz(周期約為66.6ms)時(shí),仿真結(jié)果數(shù)值輸出為15,檔位顯示輸出為1,表示被測信號的頻率為15Hz;當(dāng)設(shè)置被測信號頻率為2777KHz(周期約為360ns)時(shí),仿真結(jié)果數(shù)值輸出為2777,檔位顯示輸出為2,表示被測信號的頻率為2777KHz;當(dāng)設(shè)置被測信號頻率為199MHz(周期約為5.03ns)時(shí),仿真結(jié)果數(shù)值輸出為199,檔位顯示輸出為3,表示被測信號的頻率為199MHz。三次仿真均與預(yù)期相符,說明程序無誤。且均未超量程,因此超量程提示信號始終為低電平。
本文介紹了一種寬量程數(shù)字頻率計(jì)的設(shè)計(jì)方法,首先對系統(tǒng)結(jié)構(gòu)進(jìn)行分析,將系統(tǒng)分成多個模塊;然后設(shè)計(jì)系統(tǒng),分別完成各模塊設(shè)計(jì)并進(jìn)行元件例化,通過編寫總控模塊將各模塊連接在一起;最后進(jìn)行了系統(tǒng)測試,驗(yàn)證了該方法可實(shí)現(xiàn)預(yù)期功能。
與傳統(tǒng)設(shè)計(jì)方法相比,該方法設(shè)計(jì)巧妙、代碼精簡、實(shí)用性強(qiáng),并且不同模塊之間相互獨(dú)立,實(shí)現(xiàn)了數(shù)字系統(tǒng)硬件的軟件化;另一方面,由于時(shí)間和能力有限,以及設(shè)備和程序不完善,所以系統(tǒng)功能還有許多地方可以擴(kuò)展,離實(shí)際使用還有一定的距離,需要進(jìn)行補(bǔ)充和完善。