【摘要】本文首先介紹了各種分頻器的實(shí)現(xiàn)原理,并在FPGA開發(fā)平臺(tái)上通過(guò)VHDL文本輸入和原理圖輸入相結(jié)合的方式,編程給出了仿真結(jié)果。最后通過(guò)對(duì)各種分頻的分析,利用層次化設(shè)計(jì)思想,綜合設(shè)計(jì)出了一種基于FPGA的通用數(shù)控分頻器,通過(guò)對(duì)可控端口的調(diào)節(jié)就能夠?qū)崿F(xiàn)不同倍數(shù)及占空比的分頻器。
【關(guān)鍵詞】FPGA;分頻器;VHDL
1.引言
分頻器是數(shù)字系統(tǒng)中非常重要的模塊之一,被廣泛應(yīng)用于各種控制電路中。在實(shí)際中,設(shè)計(jì)人員往往需要將一個(gè)標(biāo)準(zhǔn)的頻率源通過(guò)分頻技術(shù)以滿足不同的需求。常見的分頻形式主要有:偶數(shù)分頻、奇數(shù)分頻、半整數(shù)分頻、小數(shù)分頻、分?jǐn)?shù)分頻。在某些嚴(yán)格的情況下,還有占空比的要求。其中非等占空比的偶數(shù)分頻器和奇數(shù)分頻器其實(shí)現(xiàn)比較容易,但對(duì)于半整數(shù)分頻器和占空比為50%的奇數(shù)分頻器實(shí)現(xiàn)比較困難。
本文首先介紹了各種分頻器的實(shí)現(xiàn)原理,并結(jié)合VHDL硬件描述語(yǔ)言對(duì)其進(jìn)行了仿真,最后提出一個(gè)可控的通用分頻器的設(shè)計(jì)方法,該方法可實(shí)現(xiàn)任意分頻,資源消耗低,具有可編程等優(yōu)點(diǎn)。
2.偶數(shù)分頻器
偶數(shù)分頻器比較簡(jiǎn)單,即利用計(jì)數(shù)器對(duì)需要分頻的原始時(shí)鐘信號(hào)進(jìn)行計(jì)數(shù)翻轉(zhuǎn)。例如:要進(jìn)行M=2N(N為自然數(shù))分頻,當(dāng)計(jì)數(shù)值為0~k-1時(shí),輸出高電平,當(dāng)計(jì)數(shù)值為k-1~2N-1時(shí)輸出低電平,同時(shí)計(jì)數(shù)值復(fù)位,如此循環(huán)可實(shí)現(xiàn)任意占空比的偶數(shù)分頻,其中M和k為預(yù)置數(shù),可根據(jù)分頻倍數(shù)和占空比的要求進(jìn)行置數(shù)。如圖1所示,當(dāng)k=N時(shí),即可實(shí)現(xiàn)占空比為50%的偶數(shù)分頻[1]。
圖1 占空比為50%的4分頻仿真結(jié)果
圖2 占空比為50%的5分頻仿真結(jié)果
3.奇數(shù)分頻器
任意占空比的奇數(shù)分頻器的實(shí)現(xiàn),其原理與偶數(shù)分頻器類似。但對(duì)于占空比為50%的任意奇數(shù)次分頻卻無(wú)法用上述相同的方法實(shí)現(xiàn)。下面介紹一種常用的實(shí)現(xiàn)方法[4]。
實(shí)現(xiàn)原理:采用兩個(gè)不同的邊沿觸發(fā)器(一個(gè)在上升沿和一個(gè)在下降沿)來(lái)實(shí)現(xiàn),其細(xì)節(jié)在于實(shí)現(xiàn)1/2個(gè)原始時(shí)鐘周期的時(shí)間差。
如圖2所示,進(jìn)行M=2N+1分頻時(shí),k1是在clk上升沿且計(jì)數(shù)周期為M變化的信號(hào)。當(dāng)計(jì)數(shù)器值為0~N時(shí),k1保持低電平,計(jì)數(shù)值為N+1~2N時(shí),k1保持高電平。
k2與k1一樣,唯一不同的是:k2是在clk的下降沿變化。最后將k2與k1進(jìn)行或運(yùn)算即可得到占空比50%的任意奇數(shù)分頻器。
4.半整數(shù)分頻器
半整數(shù)分頻器原理如圖3所示[3]。主要包括模M計(jì)數(shù)器,異或模塊和2分頻模塊三個(gè)部分。其設(shè)計(jì)思想是:通過(guò)異或門和2分頻模塊組成一個(gè)改變輸入頻率的脈沖添加電路,即在M-0.5個(gè)輸入信號(hào)周期內(nèi)產(chǎn)生M個(gè)計(jì)數(shù)脈沖,并將其中的一個(gè)計(jì)數(shù)脈沖的周期變?yōu)楹袃蓚€(gè)脈沖的周期。而這種改變的具體實(shí)現(xiàn)是將原始時(shí)鐘信號(hào)與2分頻模塊的輸出進(jìn)行異或。
圖3 半整數(shù)分頻器原理圖
另外,不難發(fā)現(xiàn)此原理圖還可以實(shí)現(xiàn)占空比為50%的2M-1倍的奇數(shù)分頻。當(dāng)M=3時(shí),其仿真結(jié)果如圖4所示。原理圖的輸出端口q即為占空比為50%的5分頻,輸出端口C為2.5分頻。
圖4 半整數(shù)(2.5)分頻器仿真結(jié)果
5.數(shù)控通用分頻器的實(shí)現(xiàn)
綜上,利用模N計(jì)數(shù)器、脈沖添加電路,以及控制模塊即可實(shí)現(xiàn)占空比可調(diào)的通用分頻器。在具體設(shè)計(jì)過(guò)程中可采用層次化的設(shè)計(jì)方法。首先,設(shè)計(jì)通用分頻器中各組成電路元件,然后通過(guò)元件例化的方法,調(diào)用各元件,實(shí)現(xiàn)通用分頻器。
圖5 通用分頻器原理圖
其中:
模N計(jì)數(shù)器的實(shí)現(xiàn)可以采用兩種方式:一是調(diào)用LPM庫(kù)中的參數(shù)化的計(jì)數(shù)器模塊LPM_COUNTER,根據(jù)向?qū)?duì)參數(shù)進(jìn)行設(shè)置,QuartusII會(huì)生成相應(yīng)的.vdh計(jì)數(shù)文本。為了能夠調(diào)用計(jì)數(shù)文本,最后還需要利用VHDL語(yǔ)言對(duì)該計(jì)數(shù)文本設(shè)計(jì)一個(gè)例化程序,并將其設(shè)置為頂層文件。二是利用VHDL描述語(yǔ)言實(shí)現(xiàn)。
二分模塊是利用D觸發(fā)器來(lái)實(shí)現(xiàn)的,即將D觸發(fā)器的輸出信號(hào)Q反饋回來(lái)作為輸入信號(hào),將模N計(jì)數(shù)器輸出信號(hào)的最高位作為D觸發(fā)器的時(shí)鐘信號(hào)。
其頂層原理圖如圖5所示。其中a為分頻模式選擇,當(dāng)a=00時(shí)進(jìn)行偶數(shù)分頻;當(dāng)a=01時(shí)進(jìn)行占空比為非50%奇數(shù)分頻;當(dāng)a=10時(shí)進(jìn)行占空比為50%的奇數(shù)分屏;當(dāng)a=11時(shí)進(jìn)行半整數(shù)分頻[2]。端口M的作用是控制分頻數(shù)。端口K的作用是進(jìn)行偶數(shù)(M=2N)和奇數(shù)(M=2N+1)分頻時(shí),調(diào)節(jié)占空比,當(dāng)k=N時(shí),占空比為50%。
6.結(jié)論
本設(shè)計(jì)的最終目的是實(shí)現(xiàn)分頻器的通用性和實(shí)用性,本設(shè)計(jì)中控制端口M、K、以及計(jì)數(shù)器N的位寬均
采用參數(shù)化設(shè)計(jì)思想,用戶根據(jù)需要對(duì)其稍加修改就可滿足不同的分頻需求,在一定程度上實(shí)現(xiàn)了通用性。
參考文獻(xiàn)
[1]王耀琦,王小鵬,王靜.基于CPLD/FPGA的任意分頻器設(shè)計(jì)研究與仿真[J].蘭州大學(xué)學(xué)報(bào),2010,29(4):9-13.
[2]周殿鳳,康素成,王俊華.基于FPGA的任意數(shù)值分頻器的設(shè)計(jì)信息化研究[J].2010,36(2):59-61.
[3]潘松,黃繼業(yè).EDA技術(shù)實(shí)用教程[M].北京:科學(xué)出版社,2006.
[4]高凡,賈磊磊.基于FPGA的半整數(shù)分頻器的設(shè)計(jì)[J].科技信息,2010,19:133-134.
[5]毛為勇,祁中洋,王蘭.基于FPGA的任意小數(shù)分頻器的設(shè)計(jì)[J].桂林航天工業(yè)高等專科學(xué)校學(xué)報(bào),2009.1(53):30-32.
[6]袁泉,陳曉龍,王家禮.基于FPGA的小數(shù)分頻器的實(shí)現(xiàn)方法[J].電子技術(shù)應(yīng)用,2010,36(11):99-101.
作者簡(jiǎn)介:
張建妮(1982—),女,陜西岐山人,講師,現(xiàn)供職于西華師范大學(xué)物理與電子信息學(xué)院,主要研究方向:應(yīng)用電子技術(shù)。
陸曉燕(1978—),女,四川資陽(yáng)人,講師,現(xiàn)供職于西華師范大學(xué)物理與電子信息學(xué)院,主要研究方向:計(jì)算機(jī)網(wǎng)絡(luò)及應(yīng)用。