您好,歡迎來電子發(fā)燒友網(wǎng)!請登錄 新用戶?[免費(fèi)注冊]

基于CPLD/FPGA的多功能分頻器的設(shè)計與實(shí)現(xiàn)

2009-11-23 10:39不詳 武漢理工大學(xué) 吳玉昌我要評論(0我要去社區(qū)論壇 ->

基于CPLD/FPGA的多功能分頻器的設(shè)計與實(shí)現(xiàn)

引言

  分頻器在CPLD/FPGA設(shè)計中使用頻率比較高,盡管目前大部分設(shè)計中采用芯片廠家集成的鎖相環(huán)資源 ,但是對于要求奇數(shù)倍分頻(如3、5等)、小數(shù)倍(如2.5、3.5等)分頻、占空比50%的應(yīng)用場合卻往往不能滿足要求。硬件工程師希望有一種靈活的設(shè)計方法,根據(jù)需要,在實(shí)驗(yàn)室就能設(shè)計分頻器并馬上投入使用,更改頻率時無需改動原器件或電路板,只需重新編程,在數(shù)分鐘內(nèi)即可完成。為此本文基于 CPLD/FPGA用原理圖和VHDL語言混合設(shè)計實(shí)現(xiàn)了一多功能通用分頻器。

  分頻原理

  偶數(shù)倍(2N)分頻

  使用一模N計數(shù)器模塊即可實(shí)現(xiàn),即每當(dāng)模N計數(shù)器上升沿從0開始計數(shù)至N時,輸出時鐘進(jìn)行翻轉(zhuǎn),同時給計數(shù)器一復(fù)位信號使之從0開始重新計數(shù),以此循環(huán)即可。偶數(shù)倍分頻原理示意圖見圖1。

偶數(shù)倍分頻原理示意圖

  奇數(shù)倍(2N+1)分頻

 。1)占空比為X/(2N+1)或(2N+1-X)/(2N+1)分頻,用模(2N+1)計數(shù)器模塊可以實(shí)現(xiàn)。取0至2N之間一數(shù)值X(0< X<2N),當(dāng)計數(shù)器時鐘上升沿從0開始計數(shù)到X值時輸出時鐘翻轉(zhuǎn)一次,在計數(shù)器繼續(xù)計數(shù)達(dá)到2N+1時,輸出時鐘再次翻轉(zhuǎn)并對計數(shù)器置一復(fù)位信號,使之從0開始重新計數(shù),即可實(shí)現(xiàn)。

 。2)占空比為50%的分頻,設(shè)計思想如下:基于(1)中占空比為非50%的輸出時鐘在輸入時鐘的上升沿觸發(fā)翻轉(zhuǎn);若在同一個輸入時鐘周期內(nèi),此計數(shù)器的兩次輸出時鐘翻轉(zhuǎn)分別在與(1)中對應(yīng)的下降沿觸發(fā)翻轉(zhuǎn),輸出的時鐘與(1)中輸出的時鐘進(jìn)行邏輯或,即可得到占空比為50%的奇數(shù)倍分頻時鐘。當(dāng)然其輸出端再與偶數(shù)倍分頻器串接則可以實(shí)現(xiàn)偶數(shù)倍分頻。奇數(shù)倍分頻原理示意圖見圖2。    

  N-0.5倍分頻

  采用模N計數(shù)器可以實(shí)現(xiàn)。具體如下:計數(shù)器從0開始上升沿計數(shù),計數(shù)達(dá)到N-1上升沿時,輸出時鐘需翻轉(zhuǎn),由于分頻值為N-0.5,所以在時鐘翻轉(zhuǎn)后經(jīng)歷 0.5個周期時,計數(shù)器輸出時鐘必須進(jìn)行再次翻轉(zhuǎn),即當(dāng)CLK為下降沿時計數(shù)器的輸入端應(yīng)為上升沿脈沖,使計數(shù)器計數(shù)達(dá)到N而復(fù)位為0重新開始計數(shù)同時輸出時鐘翻轉(zhuǎn)。這個過程所要做的就是對CLK進(jìn)行適當(dāng)?shù)淖儞Q,使之送給計數(shù)器的觸發(fā)時鐘每經(jīng)歷N-0.5個周期就翻轉(zhuǎn)一次。N-0.5倍:取N=3,分頻原理示意圖見圖3。

  對于任意的N+A/B倍分頻(N、A、B∈Z,A≦B)

  分別設(shè)計一個分頻值為N和分頻值N+1的整數(shù)分頻器,采用脈沖計數(shù)來控制單位時間內(nèi)兩個分頻器出現(xiàn)的次數(shù),從而獲得所需要的小數(shù)分頻值。可以采取如下方法來計算個子出現(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ù)分頻輸出的時鐘脈沖抖動很大,現(xiàn)實(shí)中很少使用,本次設(shè)計未予以設(shè)計。

  采用VHDL語言可以實(shí)現(xiàn)計數(shù)器的下降沿觸發(fā)翻轉(zhuǎn),并且CPLD/FPGA具有可并行執(zhí)行的特性,可以保證兩種不同的觸發(fā)翻轉(zhuǎn)以及分頻時鐘輸出保持同步,所以上述分頻方法可以基于CPLD/FPGA予以實(shí)現(xiàn)。

  綜合上述分析,實(shí)現(xiàn)多功能分頻器功能的設(shè)計框圖如圖4所示。

實(shí)現(xiàn)多功能分頻器功能的設(shè)計框圖

  多功能分頻器的設(shè)計與實(shí)現(xiàn)

  本設(shè)計使用第三方EDA開發(fā)工具Protel DXP。該開發(fā)工具支持層次原理圖及VHDL語言混合設(shè)計并能進(jìn)行編譯、時序和功能仿真,支持Xilinx、Altera、Lattice等公司的系列 CPLD/FPGA器件,并且具有設(shè)計直觀、層次性好等優(yōu)點(diǎn)。在設(shè)計中采用兩級原理圖和底層VHDL語言三級結(jié)構(gòu)來實(shí)現(xiàn),使整個的設(shè)計以功能模塊化,便于程序修改、功能升級和分頻系數(shù)的設(shè)定。對于分頻值的設(shè)定采取了軟件設(shè)定的方法,即只需在VHDL語言程序中按照自己的需求對相應(yīng)的參數(shù)作修改、設(shè)定,而且設(shè)定值的取值靈活。頂層原理圖、次級原理圖分別如圖5、6。

頂層原理圖

次級原理圖

  本次設(shè)計CK延時3ns后設(shè)值為111,即功能模塊全部選中工作;偶數(shù)倍分頻模塊中模N計數(shù)器N設(shè)置為2,實(shí)現(xiàn)四分頻;奇數(shù)倍分頻模塊中模2N+1計數(shù)器 N設(shè)置為1實(shí)現(xiàn)三分頻,占空比X設(shè)置為1即分頻系數(shù)為1/3,模M計數(shù)器M值設(shè)置為2實(shí)現(xiàn)2M*(2N+1)=12分頻;N-0.5倍分頻模塊中N設(shè)置為 3,實(shí)現(xiàn)2.5分頻。從方針波形中可以看出,實(shí)現(xiàn)了通用多功能分頻器。若要得到其他值,只需修改相應(yīng)功能模塊的VHDL語言中的相關(guān)的參數(shù),再進(jìn)行編譯、綜合適配、下載即可。

  器件適配及仿真波形

  本設(shè)計采用Xilinx XC9536-5-PC44 CPLD器件實(shí)現(xiàn),經(jīng)綜合適配后其報表如表1。

綜合適配后報表

  仿真波形如圖7。

仿真波形

  結(jié)束語

  本文介紹了基于CPLD/FPGA的多功能分頻器的設(shè)計方法,給出了原理圖并用VHDL語言予以實(shí)現(xiàn)。結(jié)合ISP技術(shù),基于CPLD/FPGA的分頻器可以變得像軟件那樣靈活且易于修改、升級,能夠在同一個器件內(nèi)實(shí)現(xiàn)多種分頻功能,使之成為一種多功能硬件。在產(chǎn)品設(shè)計、制造過程中、甚至在交付用戶使用之后,仍可根據(jù)要求對器件進(jìn)行邏輯重構(gòu)和功能修改。在數(shù)字系統(tǒng)設(shè)計中,為用戶提供了一種低成本的解決方案,減少了工作量和成本。

標(biāo)簽FPGA(611)CPLD(260)
分享到:

(責(zé)任編輯:發(fā)燒友)

發(fā)表評論:

發(fā)表評論表單
評價[必選]:
用戶名: 驗(yàn)證碼:點(diǎn)擊我更換圖片

請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動的言論。