用現(xiàn)場可編程門陣列實現(xiàn)的頻率計
1 引言
數(shù)字頻率計是通信設備、音、視頻等科研生產(chǎn)領域不可缺少的測量儀器。采用Verilog HDL編程設計實現(xiàn)的數(shù)字頻率計,除被測信號的整形部分、鍵輸入部分和數(shù)碼顯示部分外,其余全部在一片F(xiàn)PGA芯片上實現(xiàn)。整個系統(tǒng)非常精簡,且具有靈活的現(xiàn)場可更改性。
相比傳統(tǒng)的電路系統(tǒng)設計方法,EDA技術(shù)采用VHDL語言描述電路系統(tǒng),包括電路的結(jié)構(gòu)、行為方式、邏輯功能及接口。Verilog HDL具有多層次描述系統(tǒng)硬件功能的能力,支持自頂向下的設計特點。設計者可不必了解硬件結(jié)構(gòu)。從系統(tǒng)設計入手,在頂層進行系統(tǒng)方框圖的劃分和結(jié)構(gòu)設計,在方框圖一級用Ver-ilog HDL對電路的行為進行描述,并進行仿真和糾錯,然后在系統(tǒng)一級進行驗證,最后再用邏輯綜合優(yōu)化工具生成具體的門級邏輯電路的網(wǎng)表,下載到具體的FPGA器件中去,從而實現(xiàn)FPGA的設計。
2 測量原理及總體結(jié)構(gòu)框圖
頻率測量方法有2種。一種是測頻法,在一定時間間隔TM內(nèi)測出待測信號重復變化次數(shù)N,則被測信號的頻率為fx=N/TM。另一種方法是測周法,在被測信號的一個周期內(nèi)測出標準高頻信號fs的個數(shù)N,則被測頻率為fx=fs/N??梢姕y頻法對高頻信號有較高的測量精度,而測周法對低頻信號的測量精度較高。本頻率測量系統(tǒng)采用測頻法和測周法相結(jié)合的方法,使兩者的測量帶寬得到了互補,而且采用了延時為納秒級的FPCA來實現(xiàn),從而極大地提高了系統(tǒng)工作帶寬和系統(tǒng)測量精度。此外,具有自動測頻和測周轉(zhuǎn)換量程功能,每個數(shù)量級為一個量程,每個量程保留3位有效數(shù)字,用“xxxEx"表示“x.xx×10x”。
本頻率計由控制模塊、測頻模塊、測周期算頻模塊、鎖存顯示模塊4個模塊組成??傮w框圖如圖1所示。
系統(tǒng)結(jié)構(gòu)框圖中信號說明。singal:被測信號。Stateshift:測頻或測周期得出的量程不夠或溢出信號。reset:復位信號。iclk:輸入標準時鐘12MHz。en_precent:顯示占空比的按鍵信號。oclk:控制模塊輸出基本時鐘,根據(jù)不同狀態(tài)對iclk進行分頻而得。en:使能信號。state_jmp:狀態(tài)跳變信號。oen_precent:由控制模塊輸出的占空比顯示信號。condition:狀態(tài)輸出信號。lOAd:允許輸出顯示信號。data[11:0]:計算所得數(shù)據(jù),3位有效數(shù)字。out[19:0]:最終的輸出顯示數(shù)據(jù),為“xxxEx”。
3 相應模塊分析及設計
3.1 控制模塊
該控制模塊有11種狀態(tài)。在1 Hz~100MHz范圍內(nèi)每個數(shù)量級為一種狀態(tài),共8種,小于1 Hz大于100MHz為兩種量程溢出狀態(tài),還有一種為顯示占空比狀態(tài)。當進入兩種量程溢出狀態(tài)后,若被測信號又進入量程,控制器又能回到8種正常顯示狀態(tài)中去。8種數(shù)量級的狀態(tài)中,每種狀態(tài)對應一個基本時鐘,每個基本時鐘都由iclk(12 MHz)分頻而來,為了保證誤差在2%以內(nèi),本控制模塊選擇保留3位有效數(shù)字。
3.2 測頻模塊
測頻模塊在數(shù)字頻率計中是一個比較重要的模塊,要想使頻率計能自動測頻,還需要一個測頻控制電路,要求它能產(chǎn)生3個控制信號:CN,LOAD和reset,以便使頻率計能順利完成測頻3步:計數(shù)、鎖存和清0。
測頻模塊的基本思路是:在1個clk周期內(nèi)對進來的signal進行計數(shù),clk的第1個上升沿用來清零,之后的1個下降沿到下個周期的下降沿,這段時間用來計數(shù),在之后的半個周期用以輸出使能,所以整個計算過程需要2個clk周期。測頻模塊測頻得出的數(shù)據(jù)為100~999,若小于100,則cntlow=1,量程太大;若大于999,則cntover=1,量程溢出。
3.3 測周期算頻模塊
該模塊由3個小模塊構(gòu)成,即測量信號高電平時間的模塊(scale_fre_high)、測量信號周期的模塊(scale_fre)和除法器模塊(div)。其中的測量信號周期的模塊就是測頻模塊的一種變形,把被測信號和基本時鐘的輸入對調(diào)一下,所以在命名上還是一致的。而測量信號高電平時間的模塊也是在測頻模塊的基礎上修改而來的。該模塊框架圖如圖2所示。
3.4 鎖存顯示模塊
鎖存顯示模塊包括鎖存和顯示兩部分。鎖存模塊是在信號LOAD的上升沿鎖存到寄存器里面,并由REG的輸出端輸出,然后由開發(fā)系統(tǒng)板顯示輸出對應的數(shù)值。顯示模塊的主要工作是產(chǎn)生數(shù)碼管顯示所需的控制信號和數(shù)據(jù)信號。模塊內(nèi)用于循環(huán)顯示的基準時鐘經(jīng)分頻處理后得到。顯示模塊將二進制的結(jié)果信號轉(zhuǎn)換成BCD碼的形式輸入給數(shù)碼管,同時對數(shù)碼管以較高的頻率不斷重復進行刷新。
鎖存顯示模塊,輸入3位有效數(shù)字,輸出5位數(shù)“xxxEx”,前3位為需要顯示的3位有效數(shù)字,后2位據(jù)輸入的當前狀態(tài),顯示被測信號頻率所處的數(shù)量級。
下面是鎖存顯示模塊的源程序:
4 系統(tǒng)仿真
該頻率計設計利用EDA工具MAX_PLUS2進行了仿真,整個系統(tǒng)仿真波形如圖3所示。
程序一開始未進入量程,于是慢慢調(diào)整,當進入到狀態(tài)2時,在測量范圍內(nèi),測出其周期為175,用除法器求其倒數(shù),結(jié)果為571,完全正確。隨著被測信號頻率變大,跳入直接測頻范圍,則直接測出頻率結(jié)果,也同樣正確。仿真結(jié)果說明程序無誤。
5 結(jié)束語
根據(jù)頻率測量原理,把測頻法和測周法結(jié)合起來,確定了低頻段采用測周法,高頻段采用測頻法,實現(xiàn)了在其可測量程內(nèi)的測量結(jié)果優(yōu)于普通測量方法,且系統(tǒng)硬件電路結(jié)構(gòu)簡單,軟件設計容易,已得到較好的實際應用。