半整數及整數分頻器的基本原理
在數字電路系統設計中 , 通常需要各種頻率的時鐘脈衝 ,如果每需要一個時鐘脈衝,就設計一個振盪電路或安裝一個晶振, 這必然會造成電路的複雜和成本的提高。為此, 在實際的電路設計中,經常使用現成的時鐘信號源, 經分頻得到所需的頻率。對於整數分頻的實現較為簡單 ,通常由計數器或計數器的級聯構成 。但對半整數分頻的實現較為困難,本設計的思想是: 設計一個模 N 計數器, 再設計一個脈衝扣除電路, 每來 N - 1 個脈衝扣除一個脈衝,即可實現分頻係數為 N - 0. 5 的分頻器。脈衝扣除電路由異或門和一個 2 分頻器構成。在半整數分頻器原理的基礎上 , 對異或門設定一個選通參數[ SEL] ,通過對異或門和計數器計數狀態值的控制 ,實現同一個電路完成半整數及整數分頻 ,如圖 1所示。當[ SE L] 為 1 時 , 實現半整數分頻, f outclk =1N - 0. 5 f inclk ; [ SEL] 為 0 時 , 實現整數分頻 , f ou tclk =1Nf inclk 。因此, 在程式中設定了兩個參數: N 和[ SEL] , 只要改變這兩個參數的值, 即可實現多種不同的半整數及整數分頻。當 N 值確定後, 就可實現N 分頻或 N - 0. 5 分頻, 而到底是實現哪一種分頻則取決於[ SEL] 的狀態 ,當[ SEL] 為 0 時 ,實現 N 分頻,當[ SEL] 為 1 時, 實現 N - 0. 5 分頻。 N 的取值範圍是 1 ~ 255 ,因此可以實現 1. 5 、2 、2. 5 ~ 254. 5 、255 等共 508 種分頻電路。如果增加模 N 計數器的計數寬度 ,則可實現更多的分頻電路, 每增加一位 ,則可構成的分頻電路增加一倍。當然, 計數器位數的增多也會增加資源的開支, 因此不提倡盲目增加計數器的位數 。
單元模組及頂層設計
原理圖需要三個模組 : 異或門控制電路、模 N 計數器、2 分頻電路, 三個模組按照一定的關係連線起來即可得到所需的半整數及整數分頻器 。異或門控制電路和模 N 計數器採用 VH DL 硬體描述語言的輸入方式, 2 分頻電路採用常用的 D 觸發器 2 分頻電路, 頂層設計採用原理圖輸入方式。
1 異或門控制電路
以下是異或門控制電路的 VH DL 程式設計 。S EL 設定為參數,當它為 0 時 , c=a b ,實現半整數分頻 ; [ SEL] 為 1 時, c =b , 實現整數分頻。
2 模 N 計數器電路
模 N 計數器由復位端 reset 、計數允許端 en 、時鐘端 clk 等三個輸入端以及輸出端 count_ m sb 組成 。輸出端 count_ m sb 是 N 進制計數器輸出信號端 count 的最高有效位 ,它隨 N 的取值不同而選擇count 的其中一位。
3 頂層設計
根據原理圖的連線關係 , 用圖形輸入法把各模組連線起來。本設計中, 參數 N 和[ SEL] 分別取 12 和 1 ,則實現 11. 5 的半整數分頻 ,如圖 4 所示, o utclk 是 inclk 的 11. 5 分頻 , outclk_1是 inclk 的 23 分頻; 如果在參數設定時 N 值保持不變 ,仍為 12 ,[ SE L] 改成 0 , 則實現 12 的整數分頻,如圖 5 所示, outclk 是 inclk 的 12 分頻 , outclk_1 是inclk 的 24 分頻 。因此輸出和輸入的頻率關係可以通過調節內部參數 N 及 SEL 的值而改變, 輕鬆實現 1. 5 ~ 255 的整數及半整數分頻。
基於 FPGA的整數分頻器
現 場 可 編 程 門 陣 列 ( Field Prog rammable GatesArray , FPGA) 是可程式邏輯器件 , 是在 PA L, GA L等邏輯器件基礎上發展起來的。同以往的 PA L, GA L相比 ,FPG A的規模比較大 , 適合於時序、 組合等邏輯電路的套用。他可以替代幾十甚至上百塊通用 IC晶片。這種晶片具有可程式和實現方案容易改動等特點。由於晶片內部硬體連線 關係的 描述 可以 存放在 磁碟 , RO M , PRO M 或EPROM中 , 因而在可程式門陣列晶片及外圍電路保持不動的情況下 , 換一塊 EPROM 晶片 , 就能實現一種新的功能。 他具有設計開發周期短、 設計製造成本低、 開發工具先進、 標準產品無需測試、 質量穩定以及可實時線上檢驗等優點 , 因此 , 可廣泛套用於產品的原型設計和產品生產之中。幾乎所有套用門陣列、 PLD和中小規模通用數字積體電路的場合均可套用 F PG A器件。 在現代電子系統中 ,數字系統所占的比例越來越大。系統發展的趨勢是數位化和集成化 ,而 FPGA作為可程式 A SIC(專用積體電路 )器件 , 他將在數字邏輯系統中發揮越來越重要的作用。在數字邏輯電路設計中 , 分頻器是一種基本電路 , 通常用來對某個給定頻率進行分頻 , 得到所需的頻率。 根據不同設計的需要 , 會遇到偶數分頻、 奇數分頻等 , 有時會要求等占空比 , 有時要求非等占空比。對於偶數分頻及非等占空比的奇數分頻 , 實現較為簡單。但對等占空比的奇數分頻實現較為困難。 N 分頻器正常是利用 N 計數器來實現的 , 也可以採用周期插入的方法 , 為了獲得 50% 的占空比, 奇數分頻時需預先對時鐘脈衝進行倍頻, 也可以採用雙邊沿觸發器構成的雙邊沿計數器實現 。
整數分頻器的設計原理
對於 2N 分頻 , 可以方便地用模 N 的計數器與一個T′ 觸發器 (二分頻器 ) 來簡單實現 50% 占空比分頻輸出。而對於 2N - 1的奇數分頻 , 為了獲得 50 % 占空比的輸出信號 , 採用觸發前移半個周期的方式來剔除半個脈衝周期 , 稱這種方法為脈衝周期剔除法。
在計數器計到第 N 個脈衝時 , 只計數半個脈衝寬度 ,即把觸發時刻前移半個周期 , 這樣就可以得到半周期為N~ 0. 5時鐘的分頻信號了計數器觸發邊沿前移可以通過時鐘信號反相來實現 ,時鐘信號 CP與反相控制信號 Q的異或: CP′ = CP Q+CPQ ,當 Q= 1時 , CP′ = CP, 即時鐘反相。對於奇數分頻 ,當 N 計數器進位時 ,需對時鐘 CP進行反相 , 所以反相控制信號 Q可以由以下狀態方程式給出:n+Q1= ( OddCN Q n + OddCN Q n ) CP′ ( 1)
綜合前述 ,利用脈衝周期剔除法可實現分頻係數 K =2N- Odd (N = 2, 3, 4… ; Odd= 0, 1) 的 50 % 占空比整數分頻 。
整數分頻器的電路實現
從脈衝周期剔除法原理可知 ,整數分頻電路 (q= 50 % )由一個模 N 計數器、 T′ 觸發器、 時鐘反相控制電路及一個用於反相的異或門等構成 。
反相控制電路的邏輯關係由式 ( 1) 給出 , 模N 計數器採用模可變計數器通過外部控制來實現 ,或採用可配置計數器通過配置字來實現。該分頻器可以方便地用V HDL等硬體描述語言來描述 , 並綜合下載到 FPG A /CPLD上來實現 。