【摘要】本文首先分析了現有小數分頻器的優缺點,在此基礎上提出了一種改進型小數分頻器的設計方法。同時結合VHDL文本輸入和原理圖輸入方式,在FPGA開發平臺上進行了電路設計,最后利用EDA設計軟件QuartusII對其可行性進行了仿真驗證。仿真結果表明:通過對參數的設置,該方案可實現等占空比的任意小數分頻。
【關鍵詞】FPGA;仿真;VHDL
引言
分頻器是控制類電路中常用的模塊之一。在實際應用中,設計人員常常需要將一個基準頻率通過加、減、乘、除簡單的四則運算進行頻率合成,以滿足不同的電路需求。常見的偶數分頻、奇數分頻等成整數關系的頻率合成實現相對比較容易。但在某些的情況下,這種成整數關系的分頻技術無法解決頻率調整間隔過大的缺點,在此情況下本文提出了一種基于FPGA的小數分頻的設計方法。
一般情況下,小數分頻器包括半整數分頻器和非半整數分頻器。對于半整數分頻器我們在《基于FPGA 的通用數控分頻器的設計與實現》[1]中有過詳細介紹。本文主要介紹非半整數分頻器的設計和實現,并在FPGA開發平臺上,結合VHDL文本輸入和原理圖輸入方式進行了電路設計,同時利用EDA開發軟件QuartusII對其可行性進行仿真驗證。仿真結果表明:該方法實現的小數分頻,具有精度高、轉化速度快、資源消耗低,可編程等優點,同時克服了小數分頻中等占空比不易實現的問題。
1.幾種常見小數分頻器
假設分頻系數為K,輸入頻率為fin,輸出頻率為fout,則有:
(1)
其中:K>1
當分頻系數為小數時,則K可以表示為:
(2)
或:
(3)
其中,M、N、N1、N2均為正整數,且。
1.1 用BCD比例乘法器4527實現
對于公式(2),可以利用十進制BCD比例乘法器的加法級聯來實現[4]。如圖1所示,為兩個4527 BCD比例乘法器的級聯。CLOCK端輸入基準頻率信號fin。A、B、C、D四個端口是置數端,用以控制比例乘法器輸出脈沖序列的個數。假設高位4527 BCD(1)中置數值為N1,低位4527 BCD(2)中置數值為N2,在10個CLOCK脈沖中4527 BCD(1)輸出N1個脈沖,同時,由INHOUT禁止4527 BCD(2)對CLOCK進行比例分配,直接將N1個脈沖由4527 BCD(2)輸出。當CLOCK脈沖計數達到10個時, INHOUT發出允許信號,只允許一個CLOCK脈沖進入BCD(2)。如此,在100個CLOCK脈沖中,輸出端總共會有(10 N1+ N2)個輸出脈沖。則輸出頻率為:
(4)
由此,當有P個4527 BCD級聯時,設預置數分別為N1,N2,…Np,
則輸出頻率為:
(5)
如圖1所示。
此種方式的最大優點就是簡單易實現,而且在理論上可以實現任意位數的小數分頻。
圖2 雙模前置小數分頻器電路結構
1.2 雙模前置小數分頻器
由公式(3),對于分頻系數為K()的小數分頻器,可利用兩個分頻系數分別為M和M+1的整數分頻器均勻交錯進行N1+N2次分頻實現。這就是所謂的雙模前置即在一個分頻周期內,利用M分頻器和M+1分頻器進行均勻交錯分頻,使得其在一個分頻周期內得到一個平均意義上的小數分頻。電路結構如圖2,由兩個整數分頻器、選擇電路和控制電路三部分組成。
兩個整數分頻器可以分別由模M和M+1的計數器實現。選擇電路的功能是依據控制邏輯a來交錯選擇是進行M分頻還是M+1分頻。
兩種分頻器進行交錯的規律是:在N1+N2次分頻中,進行N1次M分頻,進行N2次M+1分頻。將控制邏輯a按照N2累加,當a 表1 雙模前置小數分頻器交錯分頻規律 分頻次數 累加值 分頻系數 1 3 5 2 6 6 3 4 5 4 7 6 5 5 6 由于需要不斷地在M和M+1兩種分頻器之間進行切換,所以此種方式最大的缺點是存在延時和競爭冒險。 2.一種改進型等占空比小數分頻的設計 2.1 改進 型小數分頻器的理論分析 在公式(3)的基礎上,則有: (5) 其中:且r、S為整數。在理論上當S、r取不同的整數值時,可實現任意小數分頻。 圖3 改進型小數分頻器電路結構 在此意義上,相當于對時鐘信號進行兩級分頻便可得到需要的小數分頻。第一級分頻,為分頻系數為S的整數分頻;第二級分頻,是對第一級分頻得到的結果再次進行系數為0 2.2 改進型小數分頻器電路結構 根據上述理論分析,提出一種改進型等占空比小數分頻器的實現方案,其電路結構如圖3所示。在該電路中采用兩級計數電路。 第一級計數電路為一個模S的加法計數器,并將計數結果S暫存在寄存器1中,同時計數器1復位,進行下一輪計數。第二級計數電路為一個模S+r的減法計數器,計數值為0時產生計數溢出信號,進行下一輪計數。其主要功能是對第一級計數結果進行修正。r為修正值,為了避免沖突,修正值被提前存放在寄存器2中,調整后的結果S+r被存放在寄存器3中。計數器2和計數器1是在同一時鐘控制下工作。 占空比調整電路本質上是一個或門,即將一個模一計數器的輸出與計數器2產生的非對稱波進行或運算,就可將計數器2的非對稱方波轉化為等占空比脈沖。 2.3 改進型小數分頻器的實現 綜上,利用模S計數器、寄存器,即可實現等占空比的任意小數分頻器。 在具體設計過程中可采用層次化的設計方法。首先,設計小數分頻器中各個組成電路元件,然后通過元件例化的方法,調用各個底層元件,實現任意小數分頻器。 模S計數器和寄存器的實現可以采用兩種方式:一是調用LPM庫中相應的參數化模塊,二是利用VHDL描述語言實現[3]。利用LPM參數化模塊進行設計時,可根據向導對參數進行必要的設置,QuartusII會生成相應的.vdh文本。為了能夠調用該文本,最后還需要利用VHDL語言對相應的.vhd文本設計一個例化程序,并將其設置為頂層文件。二是利用VHDL描述語言實現[1]。 假設=100M,=10M,K=1.3,則S=10,r=3,其仿真結果如圖4所示 3.小結 本文利用FPGA(現場可編程門陣列)豐富的硬件資源,結合EDA技術及VHDL硬件描述語言實現了一種任意小數分頻器,相對于前邊介紹的兩種分頻器,具有轉化速度快,精度高等優點。同時,在對占空比有苛刻要求的特殊情況下,能夠克服其它方案中無法實現等占空比的缺點,更具典型性。 參考文獻 [1]張建妮,陸曉燕.基于FPGA 的通用數控分頻器的設計與實現[J].電子世界,2013,10(2):127-127. [2]周殿鳳,康素成,王俊華.基于FPGA的任意數值分頻器的設計信息化研究,2010,36(2):59-61. [3]潘松,黃繼業.EDA技術實用教程[M].北京:科學出版社,2006. [4]尹佳喜.小數分頻器的設計及其應用[J].國外電子測量技術,2005,24:11-13. [5]毛為勇,祁中洋,王蘭.基于FPGA 的任意小數分頻器的設計[J].桂林航天工業高等專科學校學報,2009.1(53):30-32 [6]袁泉,陳曉龍,王家禮.基于FPGA的小數分頻器的實現方法[J].電子技術應用,2010,3(11):99-101. 作者簡介:張建妮(1982—),女,講師,現供職于西華師范大學物理與電子信息學院,主要從事電子技術方面的教學與研究。