FPGA 時鐘設計 1 時鐘資源總結

2021-08-09 10:12:34 字數 2405 閱讀 6343

關於一款晶元,最權威、最新的資料當然是廠家的官方檔案。很多大牛都推薦直接閱讀原廠的 datasheet 和 user guide。根據我的體驗,這確實是最好的途徑。原因有兩個:

實驗室有的晶元是 xilinx 的 virtex-5 系列,virtex-5 的 user guide 是 ug190,以下內容都是從中摘抄的筆記。

global clock inputs

global clock buffers

other global clock buffer outputs

general interconnect

全域性時鐘緩衝器只能由同半個晶元 (上半 / 下半)中的源驅動。

但是,在乙個時鐘區域中僅能驅動十個不同的時鐘。

乙個時鐘區域 (20 個 clb)是由上十個 clb 行和下十個 clb 行組成的時鐘樹的乙個 枝。

乙個時鐘區域僅橫跨器件的一半。

global clock buffer primitives

clock tree and nets - gclk

clock regionsxilinx 晶元全域性時鐘資源的使用方法主要有 5 種:

ibufg + bufg

最基本的全域性時鐘資源使用方法,也稱為 「 bufgp 法 」

ibufgds + bufg

當時鐘訊號為差分形式時,需要用 ibufgds 代替 ibufg

ibufg + dcm + bufg

最靈活的使用方法(一般外部提供的時鐘都需要倍頻、分頻、移相等操作以後才可以使用,所以中間需要 dcm)

logic + bufg

bufg 的輸入可以是普通訊號,當某個訊號(時鐘、使能、快速路徑)的扇出非常大、要求抖動延遲最小時,可以使用 bufg 來驅動這個訊號,使這個訊號利用全域性時鐘資源。

logic + dcm + bufg

dcm 的輸入也可以是普通訊號,所以上面的例子中的訊號需要倍頻、分頻等操作時,需要在中間新增 dcm 。

在具體使用這些組合方式時,有兩種例化方式:

在設計中直接例化全域性時鐘資源

比較簡單,按照需求例化上面 5 種組合方式即可。

在綜合階段/實現階段通過約束檔案的方式實現

隨著綜合工具/布局佈線工具的不同而變化,大多數綜合工具會自動分析時鐘訊號的扇出數目,在全域性時鐘資源富裕的情況下,使扇出數目最大的訊號自動指定使用全域性時鐘資源。這時候我們必須保證滿足下面的原則,否則會報錯。如果不能滿足,則必須在約束檔案中明確宣告該訊號不使用全域性時鐘資源。

net

"clk"

clock_dedicated_route

=false

;

原則: 使用 ibufg / ibufgds 的必要條件是訊號從全域性時鐘引腳輸入。

也就是說,如果某個訊號從全域性時鐘引腳輸入,不管它是否為時鐘訊號,必須使用 ibufg/ibufgds;如果對某個訊號使用了 ibufg/ibufgds,則這個訊號必須從全域性時鐘引腳輸入。

原因: 由 xilinx fpga 內部結構決定的,ibufg/ibufgds 的輸入端僅和晶元的全域性時鐘引腳有物理連線,與普通的 i/o 和其他內部 clb 等沒有物理連線。

在看其他資料時,看到一種新的時鐘資源 —— 第二全域性時鐘資源。官方的文件我還沒有找到,所以就直接摘抄書上的筆記了 =.=

不同系列的晶元內部的時鐘管理模組是不同的,比如在 virtex-5 系列後的晶元就含有了 混合模式時鐘管理器 mmcm 。

具體實現時該如何選擇 dcm、dll、pll、mmcm ?找到一篇介紹 xilinx 時鐘資源的文章:

如何正確使用fpga的時鐘資源

一般來說,外部提供的時鐘訊號都需要進行倍頻/分頻才可以使用,這時候需要組合各種時鐘緩衝器和 dcm、pll 等模組,我們有兩種方法:

**中例化原語,手動組合各種時鐘緩衝器和 dcm、pll

使用 ip core 嚮導,建立時鐘管理器(可以發現 ip core 生成的**就是上面 5 種組合方式)

個人感覺使用第二種方法應該更加簡潔、方便,不容易出錯吧。(如果在**中沒有明確宣告使用buffer,ise 綜合屬性、ip core 屬性設定裡面缺省會給所有的輸入輸出自動加上緩衝器)

對 fpga 設計而言,全域性時鐘是最簡單最可**的時鐘,最好的時鐘方案是:由專用的全域性時鐘輸入引腳驅動單個全域性時鐘,並用後者去控制設計中的每個觸發器。全域性時鐘資源是專用佈線資源,存在與全銅佈線層上,使用全域性時鐘資源不影響晶元的其他佈線資源,因此在可以使用全域性時鐘的時候盡可能使用。

雖然各個晶元都不盡相同,但是了解相關的基本知識有利於我們快速掌握晶元的時鐘資源、快速上手。

xilinx 的所有器件上的時鐘資源可以分為前面說的 3 類:全域性時鐘(global clock)、區域性時鐘(regional clock)、i/o 時鐘(i/o clock),但是不同的器件內部含有的時鐘管理模組是不同的,具體到每一款晶元,應該以對應的 user guide 為準。

FPGA 時鐘設計 1 時鐘資源總結

關於一款晶元,最權威 最新的資料當然是廠家的官方檔案。很多大牛都推薦直接閱讀原廠的 datasheet 和 user guide。根據我的體驗,這確實是最好的途徑。原因有兩個 實驗室有的晶元是 xilinx 的 virtex 5 系列,virtex 5 的 user guide 是 ug190,以下...

1 時鐘無縫切換

時鐘切換分成兩種方式,普通切換和去毛刺無縫切換。普通切換 就是不關心切出的時鐘是否存在毛刺,這種方式電路成本小。如果時鐘切換時,使用此時鐘的模組電路處於非工作狀態,或者模組內電路被全域性復位訊號reset住的,即使切出毛刺也不會導致dff誤觸發,這樣的模組可以選擇用此種切換方式。寫法很簡單assig...

dsp28335時鐘 總結

1.dsp28355的最高頻率為150mhz 30mhz晶振訊號oscclk經鎖相環10倍頻 pllcr設定 然後經過2分頻 pllsts設定 產生150mhz時鐘訊號 2.150mhz 1 lspclk 低速時鐘 spi,sci,iic,mcbsp 2 1 2 75mhz ecan 3 150mh...