陳景波,丁 旭,江維勇
(常熟理工學院 電氣與自動化工程學院,江蘇 常熟 215500)
FPGA是在PAL、GAL、CPLD等可編程器件的基礎上進一步發展的產物.目前以硬件描述語言(Verilog HDL)所完成的電路設計,可以經過簡單的綜合與布局,快速地燒錄至FPGA上進行測試,是現代IC設計驗證技術的主流[1-3].數字頻率計在日常生活中是一種非常重要的測量儀器.在利用FPGA對等精度數字頻率計的設計中,除了對信號的放大整形電路和結果顯示部分外,核心電路是采用Verilog HDL編程,所用器件是Actel公司的FPGA芯片A3P060.在Libero IDE環境下生成網絡表下載到FPGA中實現.整個硬件電路結構簡單,系統的穩定性高,設計成本低.

圖1 等精度測頻時序圖
基于傳統測頻原理的頻率計的測量精度隨被測信號頻率的下降而降低,在實用中有較大的局限性.等精度測頻方法是在直接測頻方法的基礎上發展起來的,它的閘門時間不是固定的值,而是被測信號周期的整數倍,即與被測信號同步,因此,避除了對被測信號計數所產生的±1個字誤差,并且達到了在整個測試頻段的等精度測量.其測頻原理如圖1所示[4,5].
在測量過程中,有兩個計數器分別對標準信號和被測信號同時計數.首先給出閘門開啟信號(預置閘門上升沿),此時計數器并不開始計數,而是等到被測信號的上升沿到來時,計數器才真正開始計數.然后預置閘門關閉信號(下降沿)到時,計數器并不立即停止計數,而是等到被測信號的上升沿到來時才結束計數,完成一次測量過程.可以看出,實際閘門時間t與預置閘門時間t1并不嚴格相等,但差值不超過被測信號的一個周期.
設在一次實際閘門時間t中計數器對被測信號的計數值為Nx,對標準信號的計數值為Ns,標準信號的頻率為fs.
則被測信號的頻率為

由式(1)可知,若忽略標頻fs的誤差,則等精度測頻可能產生的相對誤差

其中fxe為被測信號頻率的準確值.在測量中,由于fx計數的起停時間都是由該信號的上升沿觸發的,在閘門時間t內對fx的計數Nx無誤差(t=Nx×Tx);對fs的計數Ns最多相差一個數的誤差,即| ΔNs|≤1,其測量頻率為

將式(1)和(3)代入式(2),并整理得

由上式可以看出,測量頻率的相對誤差與被測信號頻率的大小無關,僅與閘門時間和標準信號頻率有關,即實現了整個測試頻段的等精度測量.閘門時間越長,標準頻率越高,測頻的相對誤差就越小.標準頻率可由穩定度好、精度高的高頻率晶體振蕩器產生,在保證測量精度不變的前提下,提高標準信號頻率,可使閘門時間縮短,即提高測試速度.
當系統正常工作時,由內部提供的48MHz的晶振頻率輸入信號,經過測頻控制信號發生器(分頻模塊)進行信號的變換,產生計數信號(可產生預置閘門信號),被測信號(可產生實際閘門信號)通過信號整形電路產生同頻率的矩形波,預置閘門信號和實際閘門信號分別控制對被測信號Nx和標準信號Ns計數,將計數結果送入鎖存器中,保證系統可以穩定顯示數據,利用Verilog HDL語言編寫一個除法器程序,用FPGA做除法運算.最終,顯示譯碼驅動電路將二進制表示的計數結果轉換成相應的能夠在數碼顯示管上可以顯示的十進制結果.在數碼顯示管上可以看到計數結果.設計主體總體框圖如圖2所示.

圖2 頻率計總體框圖
除法器是把計數被測信號所計得的Nx作為被除數和標準信號所計得的Ns作為除數相除,除得一個商.
其模塊設計如圖3所示.
由于在一些綜合工具中除法運算符不能被綜合成網表,這里介紹一種采用累加比較法來實現運算的算法.
假設數A除以數B,定義一個中間的變量temp和C,temp和C的初始值為0,它們作如下運算,設計流程圖如圖4所示.
clkr:時鐘控制信號,輸入的是開發板上的48MHz的時鐘頻率;
Nx[10:0]:為被除數,與Nx模塊相連;
Ns[10:0]:為除數,與 Ns模塊相連;
freout[10:0]:11位二進制被測頻率的輸出值;
它將除法器中得到的值,將其轉化成BCD碼,以便直接在LED數碼管上觀察、讀出.



圖3 除法模塊
frediv module clkr freqout[10:0]Nx[10:0]Ns[10:0]

圖4 除法模塊流程圖

設置其兩個二進制輸入值分別為00101101110=0000_0011_0110_0110(BCD碼)=366和00111101110=0000_0100_1001_0100(BCD碼)=494,仿真結果如圖5所示.
FPGA部分整體設計仿真結果如圖6所示.從仿真波形上可以清楚地看到,被測信號在激勵文件中設置為fx=125KHz,ctl置高,對48MHz頻率分頻得到標準頻率clks=1KHz,結果為商D=00001111101(二進制)=125(十進制)=0000_0001_0010_0101(BCD碼),所對應的譯碼為0000001_1001111_0010010_0100100,則結果完全正確,同時也對低頻5Hz和高頻987KHz進行了仿真,結果如圖7和圖8所示.

圖5 二進制轉BCD模塊仿真圖

圖6 125KHz信號仿真圖

圖7 5Hz信號仿真圖

圖8 987KHz信號仿真圖
和傳統的頻率計相比,基于FPGA設計的頻率計簡化了電路板的空間.提高了系統設計的可靠性.實現了硬件設計的軟件化,這是數字邏輯設計的新趨勢.此外,其測頻系統的標準信號頻率的提高,也進一步提高了測頻的精度,并縮短了測頻時間.
[1]董秀潔,楊艷.基于VHDL語言的數字頻率計的設計與仿真[J].河南工程學院學報,2008,20(4):59-61.
[2]吳海明,王偉.基于單片機與FPGA的等精度頻率計設計[J].兵工自動化,2009,28(3):79-81.
[3]莫琳.基于FPGA的等精度頻率計的設計與實現[J].現代電子技術,2004,10:81-84.
[4]李云鵬,王思明.基于FPGA的等精度頻率計設計[J].電子元器件應用,2007,9(11):54-55.
[5]曾光,馮銳.基于FPGA的數字頻率計VHDL軟件實現方法[J].軟件導刊,2009,8(2):28-29.