韓麗英


[摘 要]數控分頻器廣泛應用在家庭數字音響、通信設備時序電路、數字頻率計中。另外,近
年來已成為電子競賽設計中常用的單元模塊。本文論述了數控分頻器的基本原理、設計思路
及小數分頻器的原理及設計,并給出了一個2.5 分頻器電路仿真波形。
[關鍵詞]EDA技術 數控分頻器 VHDL語言
[中圖分類號]TN-4[文獻標識碼]A[文章編號]1007-9416(2009)11-0108-02
1 引言
數控分頻器廣泛應用在家庭數字音響、通信設備時序電路、數字頻率計中。另外,近年來已成為電子競賽設計中常用的單元模塊。筆者在連續三年指導學生電子設計競賽過程中都用到了數控分頻器。
用傳統的設計方法設計數控分頻器時,典型的設計是采用具有預置數據輸入端的通用計數器芯片按設計要求完成。但當分頻系數較大時,需用多片集成計數器和設計更復雜的控制電路來實現,且設計成果的可修改性和可移植性都較差。尤其是對于參加電子設計競賽的學生,在有限的3-5天時間內要完成一個指定功能的設計,尤其不適合采用這種傳統的“固定功能的集成電路+連線”的設計模式。
基于EDA技術的數控分頻器設計,采用的是用軟件的方法設計硬件的EDA (電子設計自動化)技術。作為EDA技術重要組成部分的VHDL硬件描述語言是一種符合IEEE工業標準的建模語言。用它設計的數控分頻器可作為一個模塊,移植到很多數字電路系統中,且極易修改,只要修改程序中的某幾條語句,就可使最大分頻系數得到改變。整個設計過程簡單、快捷。可從根本上減少硬件調試的時間,為總體設計完成爭取寶貴的時間。
2 通用數控分頻器的原理
數控分頻器的功能就是當在輸入端給定不同輸入數據時,將對輸入的時鐘信號有不同的分頻比,數控分頻器可用計數值可并行預置的加法計數器設計實現。所以數控分頻器功能的實質是分頻電路,即將一個給定的頻率較高的數字輸入信號,經過適當的處理后,產生一個或數個頻率較低的數字輸出信號。
3 數控分頻器的設計思路
在數字邏輯電路設計中,分頻電路是一種基本電路其本質是加法計數器的變種,計數值由分頻常數N=fin/fout決定,其輸出不是一般計數器的計數結果,而是根據分頻常數對輸出信號的高、低電平進行控制。根據實際需要可分為整數分頻和小數分頻兩種。
設計中通過對某個外部輸入的或內部電路產生的給定頻率進行分頻,即可得到所需頻率。整數分頻器實現非常簡單,可采用標準計數器,也可采用可編程邏輯器件設計實現。但在某些場合下,時鐘源與所需頻率不成整數倍關系,此時需采用小數分頻器進行分頻。如分頻系數為2.5、3.5等半整數分頻器。
4 小數分頻器的原理及設計
4.1 小數分頻器的原理
小數分頻基本原理是采用脈沖吞吐計數器和PLL鎖相環技術先設計兩個不同分頻比的整數分頻器,然后通過控制單位時間內兩種分頻比出現的不同次數來獲得所需要的小數分頻值。如設計一個分頻系數為10.1分頻器時,可以將分頻器設計成9次10分頻,1次11分頻,這樣總分頻值為: F=(9×10+1×11)/(9+1)=10.1。
從這種實現方法特點可以看出,由于分頻器分頻值不斷改變,因此分頻后得到信號抖動較大。當分頻系數為N-0.5(N為整數)時,可控制扣除脈沖時間,以使輸出成為一個穩定脈沖頻率,而不是一次N分頻,一次N-1分頻。
4.2 小數分頻器的設計電路
分頻系數為N-0.5分頻器電路可由一個異或門、一個模N計數器和一個二分頻器組成。在實現時,模N計數器可設計成帶預置計數器,這樣可以實現任意分頻系數為N-0.5分頻器。圖1是通用半整數分頻器電路組成。
VHDL硬件描述語言,可實現任意模N計數器(其工作頻率可以達到160MHz以上),并可產生模N邏輯電路。之后,用原理圖輸入方式將模N邏輯電路、異或門和D觸發器連接起來,便可實現半整數(N-0.5)分頻器以及(2N-1)分頻如圖1所示。
4.3 半整數分頻器設計
4.3.1 模3計數器VHDL語言設計
該計數器可產生一個分頻系數為3分頻器,并產生一個默認邏輯符號COUNTER3。其輸入端口為RESET、EN和CLK;輸出端口為QA和QB。下面給出模3計數器VHDL描述代碼:
entity counter3 is
port(clk,reset,en:in std_logic;
qa,qb:out std_logic);
end counter3;
architecture behavior of counter3 is
signal count:std_logic_vector(1 downto 0);
begin
process(reset,clk)
begin
if reset='1'then
count(1 downto 0)<="00";
else
if(clk 'event and clk='1')then
if(en='1')then
if(count="10")then
count<="00";
else
count<=count+1;
end if;
end if;
end if;
end if;
end process;
qa<=count(0);
qb<=count(1);
end behavior;
4.3.2 半整數分頻器的設計
任意模計數器與模3計數器描述結構完全相同,所不同的僅僅是計數器狀態數。通過設計一個分頻系數為2.5分頻器,用FPGA設計半整數分頻器。該2.5分頻器由模3計數器、異或門和D觸發器組成。如圖1所示。
4.3.3 完整電路波形及仿真
將COUNTER3、異或門和D觸發器通過圖1所示的電路邏輯連接關系,并用原理圖輸入方式調入圖形編輯器,然后經邏輯綜合即可得到如圖2所示的仿真波形。
由圖中outclk與inclk的波形可以看出,outclk會在inclk每隔2.5個周期處產生一個上升沿,從而實現分頻系數為2.5的分頻器。設inclk為50MHz,則outclk為20MHz。因此可見,該電路不僅可得到分頻系數為2.5的分頻器(outclk),而且還可得到分頻系數為5的分頻器(q)。
5 結語
筆者在本設計過程中使用了MAX+ plusII、ispEXPERT、Foundation等EDA工具軟件,并分別適配過當前國內FPGA/CPLD市場份額占有較大的三家公司Xilinx、Altera、Lattice的器件實現半整數分頻的設計,經邏輯綜合、仿真、并下載后運行效果都穩定、可靠。
[參考文獻]
[1] 潘松,黃繼業.EDA技術實用教程[M].北京:科學出版社,2005.
[2] 譚會生,張昌凡.EDA技術及應用.西安:西安電子科技大學出版社,2004.
[3] Xilinx inc.DATA BOOK Xilinx Incorporation San Jose Use,1999.