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