引言
分頻器在CPLD/FPGA設(shè)計(jì)中使用頻率比較高,盡管目前大部分設(shè)計(jì)中采用芯片廠家集成的鎖相環(huán)資源 ,但是對(duì)于要求奇數(shù)倍分頻(如3、5等)、小數(shù)倍(如2.5、3.5等)分頻、占空比50%的應(yīng)用場(chǎng)合卻往往不能滿足要求。硬件工程師希望有一種靈活的設(shè)計(jì)方法,根據(jù)需要,在實(shí)驗(yàn)室就能設(shè)計(jì)分頻器并馬上投入使用,更改頻率時(shí)無(wú)需改動(dòng)原器件或電路板,只需重新編程,在數(shù)分鐘內(nèi)即可完成。為此本文基于 CPLD/FPGA用原理圖和VHDL語(yǔ)言混合設(shè)計(jì)實(shí)現(xiàn)了一多功能通用分頻器。
分頻原理
偶數(shù)倍(2N)分頻
使用一模N計(jì)數(shù)器模塊即可實(shí)現(xiàn),即每當(dāng)模N計(jì)數(shù)器上升沿從0開(kāi)始計(jì)數(shù)至N時(shí),輸出時(shí)鐘進(jìn)行翻轉(zhuǎn),同時(shí)給計(jì)數(shù)器一復(fù)位信號(hào)使之從0開(kāi)始重新計(jì)數(shù),以此循環(huán)即可。偶數(shù)倍分頻原理示意圖見(jiàn)圖1。
奇數(shù)倍(2N+1)分頻
?。?)占空比為X/(2N+1)或(2N+1-X)/(2N+1)分頻,用模(2N+1)計(jì)數(shù)器模塊可以實(shí)現(xiàn)。取0至2N之間一數(shù)值X(0< X<2N),當(dāng)計(jì)數(shù)器時(shí)鐘上升沿從0開(kāi)始計(jì)數(shù)到X值時(shí)輸出時(shí)鐘翻轉(zhuǎn)一次,在計(jì)數(shù)器繼續(xù)計(jì)數(shù)達(dá)到2N+1時(shí),輸出時(shí)鐘再次翻轉(zhuǎn)并對(duì)計(jì)數(shù)器置一復(fù)位信號(hào),使之從0開(kāi)始重新計(jì)數(shù),即可實(shí)現(xiàn)。
?。?)占空比為50%的分頻,設(shè)計(jì)思想如下:基于(1)中占空比為非50%的輸出時(shí)鐘在輸入時(shí)鐘的上升沿觸發(fā)翻轉(zhuǎn);若在同一個(gè)輸入時(shí)鐘周期內(nèi),此計(jì)數(shù)器的兩次輸出時(shí)鐘翻轉(zhuǎn)分別在與(1)中對(duì)應(yīng)的下降沿觸發(fā)翻轉(zhuǎn),輸出的時(shí)鐘與(1)中輸出的時(shí)鐘進(jìn)行邏輯或,即可得到占空比為50%的奇數(shù)倍分頻時(shí)鐘。當(dāng)然其輸出端再與偶數(shù)倍分頻器串接則可以實(shí)現(xiàn)偶數(shù)倍分頻。奇數(shù)倍分頻原理示意圖見(jiàn)圖2。
N-0.5倍分頻
采用模N計(jì)數(shù)器可以實(shí)現(xiàn)。具體如下:計(jì)數(shù)器從0開(kāi)始上升沿計(jì)數(shù),計(jì)數(shù)達(dá)到N-1上升沿時(shí),輸出時(shí)鐘需翻轉(zhuǎn),由于分頻值為N-0.5,所以在時(shí)鐘翻轉(zhuǎn)后經(jīng)歷 0.5個(gè)周期時(shí),計(jì)數(shù)器輸出時(shí)鐘必須進(jìn)行再次翻轉(zhuǎn),即當(dāng)CLK為下降沿時(shí)計(jì)數(shù)器的輸入端應(yīng)為上升沿脈沖,使計(jì)數(shù)器計(jì)數(shù)達(dá)到N而復(fù)位為0重新開(kāi)始計(jì)數(shù)同時(shí)輸出時(shí)鐘翻轉(zhuǎn)。這個(gè)過(guò)程所要做的就是對(duì)CLK進(jìn)行適當(dāng)?shù)淖儞Q,使之送給計(jì)數(shù)器的觸發(fā)時(shí)鐘每經(jīng)歷N-0.5個(gè)周期就翻轉(zhuǎn)一次。N-0.5倍:取N=3,分頻原理示意圖見(jiàn)圖3。
對(duì)于任意的N+A/B倍分頻(N、A、B∈Z,A≦B)
分別設(shè)計(jì)一個(gè)分頻值為N和分頻值N+1的整數(shù)分頻器,采用脈沖計(jì)數(shù)來(lái)控制單位時(shí)間內(nèi)兩個(gè)分頻器出現(xiàn)的次數(shù),從而獲得所需要的小數(shù)分頻值??梢圆扇∪缦路椒▉?lái)計(jì)算個(gè)子出現(xiàn)的頻率:
設(shè)N出現(xiàn)的頻率為a,則N×a+(N+1)×(B-a)=N×B+A 求解a=B-A; 所以N+1出現(xiàn)的頻率為A.例如實(shí)現(xiàn)7+2/5分頻,取a為3,即7×3+8×2就可以實(shí)現(xiàn)。但是由于這種小數(shù)分頻輸出的時(shí)鐘脈沖抖動(dòng)很大,現(xiàn)實(shí)中很少使用,本次設(shè)計(jì)未予以設(shè)計(jì)。
采用VHDL語(yǔ)言可以實(shí)現(xiàn)計(jì)數(shù)器的下降沿觸發(fā)翻轉(zhuǎn),并且CPLD/FPGA具有可并行執(zhí)行的特性,可以保證兩種不同的觸發(fā)翻轉(zhuǎn)以及分頻時(shí)鐘輸出保持同步,所以上述分頻方法可以基于CPLD/FPGA予以實(shí)現(xiàn)。
綜合上述分析,實(shí)現(xiàn)多功能分頻器功能的設(shè)計(jì)框圖如圖4所示。