分數分頻的FPGA實現

2021-09-18 06:55:43 字數 769 閱讀 1529

分頻對於許多fpga的學習者來說很常見,無論是偶數分頻還是奇數分頻。但是分數分頻在我們製作時並不常見。現在我們來說分數分頻。

分數分頻顧名思義分頻比並不是乙個整數,而是乙個分數。往常我們接觸的積分頻,偶分頻分頻比都是整數,而分數分頻的小數如何實現就是這個的核心問題。

在實現分數分頻的過程中,我們並不是使用乙個小數來實現計數器功能,而是使用變分頻比取平均的方法來實現。分頻器設定兩個分頻模數,分別為 m 和 m + 1,它們

的分頻次數分別設定在 n2 和 n1,在乙個輸出訊號的完整的 週期( n1 +n2)中,若輸入訊號的週期為 n2·m +n1·( m +1), 即在週期為 n2 ·m + n1 ·( m + 1) 的輸入訊號中,進行了 n2 次 m 分頻和 n1 次( m + 1) 分頻,則可得到週期為( n1 + n2) 的輸出訊號,所以,分頻器的分頻比為: n2·m + n1·( m +1) n1 + n2 = n . 令 q = n1 + n2, p = n2·m + n1( m + 1) ,則分頻比又可 以寫成:

n =p/q

其中 p、 q 均為整數,且 p > q。可得當基準時鐘源每輸入 p 個脈衝時,按照一定規律刪除( p-q) 個脈衝,並使刪除的( pq) 個脈衝位置相對均勻地分布在時鐘源相對應的 p 個脈衝 中,輸出 q 個脈衝,便實現了平均意義上的 n 分頻。 通過分析可知,分數分頻的兩種分頻比可通過脈衝刪除 電路來實現。具體設計思路為: 設定乙個計數器,設其初始 值為0;在基準時鐘源的每個上公升沿到來時,計數器加上 q, 若結果大於等於 p,則將計數器的值減去 p,並不刪除脈衝; 若結果小於 p,則刪除脈衝。

FPGA奇數分頻

前注 設計中盡量還是要避免使用自己計數分頻得到的時鐘,去使用廠家自帶的分頻ip 如vivado中的clock wizard 偶數分頻比較簡單,這裡略過。對於不要求占空比為50 的奇數分頻,也比較簡單,直接模n計數,期間進行兩次翻轉就可以了。這裡重點介紹要求占空比為50 的奇數分頻。步驟 1.在時鐘上...

FPGA實現任意奇數分頻

我們都知道用fpga做偶數分頻很簡單,只需要用計數器計數到分頻係數n的一半再減去1,不斷去翻轉分頻的訊號即可得到分頻的訊號,那麼奇數奇數分頻其實也是一樣的,但是如果要得到占空比為50 的訊號,那可能就需要處理一下才可以,下圖為占空比為50 的3分頻訊號產生原理。利用原始訊號的上公升沿產生乙個三分頻的...

FPGA三分頻,五分頻,奇數分頻

我們在做fpga設計時,有時會用到時鐘頻率奇數分頻的頻率,例如筆者fpga的晶振為50m,當我們需要10m的時鐘時,一種方式可以使用dcm或pll獲取,系統會內部分頻到10m,但其實verilog內部也完全能實現,所以我們還是來了解一下。有這樣乙個歡樂的時鐘了,我們要得到以下的分頻效果 奇數分頻的難...