FPGA內部時鐘處理的常見設計方法

2021-08-04 10:33:15 字數 2236 閱讀 7989

前言:目前的fpga功能越來越強大,在fpga內部對時鐘的處理使用比較普遍。其時鐘處理內容根據不同的應用場合與不同的設計需求包含倍頻或者分頻.下面是比較常用的fpga內部實現時鐘處理的一些基本思想及經驗與大家交流.

時鐘的倍頻:

在fpga內部實現倍頻一般採用外部時鐘輸入根據專案不同的需要可以倍頻到不同的時鐘頻率(低時鐘速率到高速時鐘頻率).

例如外部晶振輸入27m,在fpga內部倍頻至54m,或者81m,而不同的fpga廠家實現的機制不盡相同.在xilinx 的fpga內部實現時直接呼叫dcm(數字時鐘處理模組)可以實現,在ise介面下可以直接實現.而altera的fpga內部實現倍頻則需要內部的pll,方法與步驟參考圖1與圖2.

客觀一點來講,pll的效能相對dcm有一定的優勢,因為pll是模擬鎖相環,而xilinx的dcm採用的dll為數字鎖相環。兩者的效能比較有興趣的可參考相關文件。

注:下面的megawizard使用流程同樣適合其他的altera的mega-core。這裡可以根據使用者需求生成相應的mega-core,例如ram,fifo等。

圖1.啟動megawizard流程示意圖

圖2啟動megawizard介面示意圖

圖2啟動megawizard後引數設定示意圖

一些時鐘要求比較高的設計場合需要使用fpga內部的pll實現,其實現原理與產生倍頻的步驟與方法一致.這裡不再贅述.另外簡單或者要求不高的分頻電路不需要特定器件與內部的pll,只需用語言描述即可。

但一般設計如果分頻為2的整數倍相對簡單,僅僅需要乙個簡單的計數器就可實現,但有些場合需要用到奇數分頻或者小數分頻時相對比較複雜.下面僅僅列出奇數分頻與偶數分頻的實現原理與方法.

偶數分頻是最簡單的,很容易實現占空比為1:1的電路,這裡不再贅述.

奇數分頻相對複雜但也不是件難事,有2種方法實現占空比為1:1的奇數分頻,第一種採用了非同步時鐘的方法,並不太好,不推薦使用.第二種方法**於實際的設計經驗,可應用於實際的系統之中。

生成n分頻,先生成n/2的時鐘,之後再2分頻,使得占空比調整成為1:1.

以7分頻為例,先生成3.5分頻時鐘,再2分頻即可。生成3.

5分頻。首先進行模4的計數,產生clk_en 訊號,再用clk_en訊號做時鐘,做乙個2分頻輸出,即clk_out,就是最後的輸出,在將此輸出與輸入時鐘相異或,反饋作為模4計數器的時鐘。因為牽涉到別的一些問題,具體程式這裡略去,各位如果需要可以聯絡我.

圖1. 方法一產生的奇數分頻

**於設計經驗。先做乙個模7的計數器。再做乙個訊號a,在模1計數器的控制下,前3個週期為高,後4個週期為低。

在用時鐘下降沿將a訊號延遲一拍得到b.a或b的運算就得到7分頻且占空比為1:1的電路。

具體程式略去.

圖2. 方法二生成的奇數分頻

無法做到1:1的占空比。例如用77m分頻得到16m時鐘生成原理如下:

對於77m時鐘,乙個sts-12幀有9720拍。對於16m時鐘,乙個sts-12幀有32*8*8拍。即77m下每計數1215,16m下計數256。

1215/256=4.76考慮到數字處理只能是整數,則需在每m個5拍扣一拍,每n個4拍扣一拍。列方程為:

m+n=256

5m+4n=1215

解得:m=191,n=65

具體程式略去.

如果程式中,僅使用一種沿(或全部是上公升沿、或全部時下降沿),此時對占空比是沒有要求的,但如果上下沿都有使用,則對占空比可能有要求。

在得到分頻時鐘之後,有一種情況是將該時鐘輸出給過多個晶元,這時還需要注意乙個布局佈線的問題,在程式中,將該分頻時鐘複製多個,如果在synplify綜合,可以使用/synthesis syn_keep=1/約束,保證這些訊號不被綜合器優化掉,之後在每乙個訊號輸出之前打乙個觸發器,這樣,保證了每乙個時鐘都是經過了iob上的觸發器,保證了時鐘訊號的質量。具體程式略去.

當時鐘頻率很高時,常採用差分時鐘對的輸入形式.xilinx、altera對差分時鐘輸入的處理是不同的。altera僅僅需要乙個pin就可以實現,但必須在管腳約束時指定管腳的電平型別。

xilinx需要兩個時鐘輸入端。具體使用細節可以參照xilinx的相關文件。

需要在程式中顯性的表示出有2個時鐘輸入端,在程式內部將這兩個差分成對的時鐘送入乙個ibufgds(在ise 的language assistant中有模板)。

從程式中,與一般的單時鐘輸入完全相同,看不出時鐘是否是差分輸入,僅在約束檔案中,指定管腳的電平型別時,選擇lvds,而不是一般的lvttl.由於工程師的習慣,可以通過兩種途徑實現,一種是直接修改xx.qsf檔案,一種是在gui介面下直接對pin 屬性進行約束.

兩者的效果一致.

FPGA設計中跨時鐘域的問題與方法

作者 王利祥 電子技術與軟體工程 2017年第24期 摘要隨著科學技術的發展,在fpga設計中多時鐘設計是乙個經常遇到而且因為功能的需要無法避免問題。在不同時鐘域之間傳輸資料或者控制訊號,如果對其 現的特殊情況估計不足,將會對設計造成災難性的後果。因此,設計人員在設計電路時必須加入相應的同步機制,確...

FPGA設計中的功率計算技巧

隨著工藝技術的越來越前沿化,fpga器件擁有更多的邏輯 儲存器和特殊功能,如儲存器介面 dsp塊和多種高速serdes通道,這些發展不斷地對系統功率要求提出挑戰。由此,設計師也許會想要拖一座冰山到電路板上,但這樣一來it人員就會面臨一團亂麻的境地了。顯然冰山是乙個不切實際的玩笑,以下是一種可行的方案...

基於FPGA的交通燈設計

數字系統課程設計報告書 目錄摘要1 1設計目的2 2設計內容及要求2 3系統整體方案及設計原理2 4各模組電路設計與實現3 4.1 分頻模組設計與實現3 4.1.1分頻模組圖 4.1.2分頻模組程式 4.2 交通燈控制器模組設計與實現4 4.2.1交通燈控制模組圖 4.2.2交通燈控制模組程式 4....