時鐘資源總結(jié)

來源:FPGA 時鐘設(shè)計 1 —— 時鐘資源總結(jié)

關(guān)于一款芯片肥荔,最權(quán)威篷牌、最新的資料當然是廠家的官方文件添瓷。很多大牛都推薦直接閱讀原廠的 datasheet 和 user guide鹅髓。根據(jù)我的體驗瑟押,這確實是最好的途徑陷寝。原因有兩個:

  • 首先锅很,市面上的書一般都落后業(yè)界的步伐,我們看到的很多書上的資料都是過時的凤跑。
  • 其次爆安,市面上書(尤其是國內(nèi))很多都是簡單的翻譯手冊而來的,而且雖然作者標的是某某大學(xué)的教授仔引,事實上都是教授手下的研究生替老師干活翻譯的扔仓,不能保證翻譯的正確性。

實驗室有的芯片是 Xilinx 的 Virtex-5 系列咖耘,Virtex-5 的 User Guide 是 UG190翘簇,以下內(nèi)容都是從中摘抄的筆記。


Three Types of clock resource(三種時鐘資源)

1儿倒、Global Clocks(全局時鐘)
  • 為了時鐘目的版保,每個 Virtex-5 系列的器件內(nèi)部都被分成不同的區(qū)域(regions)呜笑,隨著器件的尺寸不同,最小的有 8 個區(qū)域彻犁,最大的有 24 個區(qū)域叫胁。
  • 全局時鐘資源(Global I/O)和局部時鐘資源可以完成所有的復(fù)雜的 / 簡單的時鐘要求。
  • 不推薦使用其他的非時鐘資源(比如局部布線資源)來完成時鐘功能汞幢。
  • 每個 Virtex-5 系列的器件都有 32 條全局時鐘線 (global clock line)驼鹅,可以驅(qū)動片上的所有時序資源(CLB、BRAM森篷、CMTs输钩、I/O),也可以驅(qū)動其他的邏輯信號仲智。
  • 這些全局時鐘線可以用在任何一個區(qū)域中张足。
  • 全局時鐘線只能由全局時鐘緩沖器(global clock buffer)驅(qū)動。
  • 全局時鐘緩沖器一般由時鐘管理塊(Clock Management Tile, CMT)驅(qū)動坎藐,以減少時鐘布線延時或者調(diào)整和另外一個時鐘的相對延時。
  • 全局時鐘的個數(shù)比 CMTs 多哼绑,但是一個 CMT 可以驅(qū)動多個全局時鐘岩馍。
2、Regional Clocks(區(qū)域時鐘)
  • 每個區(qū)域(region)含有 2 個局部時鐘緩沖器(regional clock buffer)和 4 個局部時鐘樹(regional clock tree)抖韩。
  • 除了處于芯片中心列的組(bank)外蛀恩,一個 Virtex -5 I/O bank 恰好橫跨一個區(qū)域。大小和區(qū)域完全相同的每個組含有 4 個 clock-capable 的時鐘輸入茂浮。
  • 每個輸入可以差分驅(qū)動或單端驅(qū)動同一組或區(qū)域中的四個 I/O 時 鐘(I/O clocks)和兩個區(qū)域時鐘(regional clock)双谆。
3、I/O clocks(I/O時鐘)
  • 第三種時鐘資源是 I/O clocks席揽,可以達到非常高的速度顽馋,用于局部的 I/O 串行器/解串器。

Global Clocking Resources(全局時鐘資源)

  • 全局時鐘(global clocks)是個專用網(wǎng)絡(luò)幌羞,是專為覆蓋對 FPGA 中各種資源的所有時鐘輸入設(shè)計的寸谜。
  • 全局時鐘資源包括
  • Global Clock Inputs
  • Global Clock Buffers
  • Clock Tree and Nets-GCLK
  • Clock Regions
Global Clock Inputs
  • Virtex-5 FPGA 包含專用的全局時鐘輸入位置,這些輸入位置即使不用作時鐘輸入属桦,也可用作常規(guī)用戶 I/O熊痴。

  • 每個器件有 20 個全局時鐘輸入。

  • 時鐘輸入可以按任意 I/O 標準配置聂宾,包括差分 I/O 標準果善。每個時鐘輸入可以是單端輸入,也可以是差分輸入系谐。

  • Global Clock Input Buffer Primitives(全局時鐘輸入緩沖原語)

  • IBUFG巾陕,單端輸入全局緩沖

  • IBUFGDS,差分輸入全局緩沖

Global Clock Buffers
  • 每個 Virtex-5 器件有 32 個全局時鐘緩沖器。
  • 每半個晶片 (上半 / 下半)包含 16 個全局時鐘緩沖器惜论。
  • 全局時鐘緩沖器允許各種時鐘源 / 信號源接入全局時鐘樹和網(wǎng)许赃。可以輸入全局時鐘緩沖器的源包括:
  • Global clock inputs
  • Clock Management Tile (CMT) outputs including:
    • Digital Clock Managers (DCMs)
    • Phase-Locked Loops (PLLs)
  • Other global clock buffer outputs
  • General interconnect
  • 全局時鐘緩沖器只能由同半個晶片 (上半 / 下半)中的源驅(qū)動馆类。
  • 但是混聊,在一個時鐘區(qū)域中僅能驅(qū)動十個不同的時鐘。
  • 一個時鐘區(qū)域 (20 個 CLB)是由上十個 CLB 行和下十個 CLB 行組成的時鐘樹的一個 枝乾巧。
  • 一個時鐘區(qū)域僅橫跨器件的一半句喜。、
  • Global Clock Buffer Primitives
  • BUFGCTRL沟于、BUFG咳胃、BUFGCE、BUFGCE_1旷太、BUFGMUX展懈、BUFGMUX_1、BUFGMUX_CTRL
  • 其他所有原語均出自 BUFGCTRL 的軟件預(yù)設(shè)置供璧。
  • BUFG 全局緩沖
  • BUFGCE 帶有時鐘使能(CE)的全局緩沖(BUFG)
  • BUFGMUX 全局時鐘選擇緩沖
  • BUFGP = IBUFG + BUFG
  • BUFGDLL 全局緩沖延遲鎖相環(huán)(舍存崖,被 DCM 代替)
Clock Tree and Nets - GCLK
  • Virtex-5 時鐘樹是為低歪斜和低功耗操作設(shè)計的。
  • 任何未用分枝都不連接睡毒。
  • 當所有邏輯資源都使用時来惧,時鐘樹還管理負載 / 扇出。
  • 所有全局時鐘線和緩沖器都以差分形式實現(xiàn)演顾,這有助于大大改善占空比和共模噪聲抑制能力
  • 在 Virtex-5 架構(gòu)中供搀,全局時鐘線的引腳接入不僅限于邏輯資源的時鐘引腳。全局時鐘線不用局部互連即可接入 CLB 中的其他引腳钠至。
Clock Regions
  • Virtex-5 器件通過使用時鐘區(qū)域改善時鐘控制分配葛虐。
  • 每個時鐘區(qū)域最多可有十個全局時鐘域。
  • 這十個全局時鐘可以由 32 個全局時鐘緩沖器的任意組合驅(qū)動棉钧。

How to use global clock

Xilinx 芯片全局時鐘資源的使用方法主要有 5 種:

  • IBUFG + BUFG
    最基本的全局時鐘資源使用方法挡闰,也稱為 “ BUFGP 法 ”
  • IBUFGDS + BUFG
    當時鐘信號為差分形式時,需要用 IBUFGDS 代替 IBUFG
  • IBUFG + DCM + BUFG
    最靈活的使用方法(一般外部提供的時鐘都需要倍頻掰盘、分頻摄悯、移相等操作以后才可以使用,所以中間需要 DCM)
  • Logic + BUFG
    BUFG 的輸入可以是普通信號愧捕,當某個信號(時鐘奢驯、使能、快速路徑)的扇出非常大次绘、要求抖動延遲最小時瘪阁,可以使用 BUFG 來驅(qū)動這個信號撒遣,使這個信號利用全局時鐘資源。
  • Logic + DCM + BUFG
    DCM 的輸入也可以是普通信號管跺,所以上面的例子中的信號需要倍頻义黎、分頻等操作時,需要在中間添加 DCM 豁跑。

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

  • 在設(shè)計中直接例化全局時鐘資源
    比較簡單,按照需求例化上面 5 種組合方式即可艇拍。
  • 在綜合階段/實現(xiàn)階段通過約束文件的方式實現(xiàn)
    隨著綜合工具/布局布線工具的不同而變化狐蜕,大多數(shù)綜合工具會自動分析時鐘信號的扇出數(shù)目,在全局時鐘資源富裕的情況下卸夕,使扇出數(shù)目最大的信號自動指定使用全局時鐘資源层释。這時候我們必須保證滿足下面的原則,否則會報錯快集。如果不能滿足贡羔,則必須在約束文件中明確聲明該信號不使用全局時鐘資源。
NET "CLK" CLOCK_DEDICATED_ROUTE = FALSE;

Principle in Using global clock

原則: 使用 IBUFG / IBUFGDS 的必要條件是信號從全局時鐘引腳輸入个初。
也就是說乖寒,如果某個信號從全局時鐘引腳輸入,不管它是否為時鐘信號勃黍,必須使用 IBUFG/IBUFGDS;如果對某個信號使用了 IBUFG/IBUFGDS晕讲,則這個信號必須從全局時鐘引腳輸入覆获。
原因: 由 Xilinx FPGA 內(nèi)部結(jié)構(gòu)決定的,IBUFG/IBUFGDS 的輸入端僅和芯片的全局時鐘引腳有物理連接瓢省,與普通的 I/O 和其他內(nèi)部 CLB 等沒有物理連接弄息。


P.S. 第二全局時鐘資源

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

  • 第二全局時鐘資源屬于長線資源,長度和驅(qū)動能力僅次于全局時鐘資源馒胆,也可以驅(qū)動芯片內(nèi)部的任何一個邏輯缨称,抖動和延時僅次于全局時鐘。
  • 在設(shè)計中祝迂,一般將高頻率睦尽、高扇出的時鐘使能信號以及高速路徑上的關(guān)鍵信號指定為全局第二時鐘信號。
  • 使用全局時鐘資源并不占用邏輯資源型雳,也不影響其他布線資源当凡;第二時鐘資源占用的是芯片內(nèi)部的資源山害,占用部分邏輯資源,各個部分的布線會相互影響沿量,所以建議在設(shè)計中邏輯占用資源不超過70%時使用浪慌。

使用方法
可以在約束編輯器中的專用約束Misc選項中,指定所選信號使用低抖動延遲資源“Low Skew”來指定朴则,也可以在ucf文件中添加“USELOWSKEWLINES"約束命令权纤。

NET “s1" USELOWSKEWLINES;
NET “s2" USELOWSKEWLINES;
NET “s3" USELOWSKEWLINES;

Regional Clocking Resources(區(qū)域時鐘資源)

  • 區(qū)域時鐘網(wǎng)絡(luò)是一組獨立于全局時鐘網(wǎng)絡(luò)的時鐘網(wǎng)絡(luò)。
  • 與全局時鐘不同佛掖,區(qū)域時鐘信號 (BUFR) 的跨度限于三個時鐘區(qū)域妖碉,而 I/O 時鐘信號只驅(qū)動一個區(qū)域。
  • Virtex-5 時鐘控制資源和網(wǎng)絡(luò)由以下通路和組件構(gòu)成:
  • Clock Capable I/O
  • I/O Clock Buffer (BUFIO)
  • Regional Clock Buffer (BUFR)
  • Regional Clock Nets
Clock Capable I/O
  • 典型時鐘區(qū)域中有四個 clock-capable I/O 引腳對 (中心列有例外)芥被。
  • 有些全局時鐘輸入也是 clock capable I/O欧宜。
  • 每個組中有四個專用 clock capable I/O 區(qū)。
  • 當用作時鐘輸入時拴魄,clock-capable 引腳可以驅(qū)動 BUFIO 和 BUFR冗茸。
  • 這些引腳不能直接連接到全局時鐘緩沖器。
I/O Clock Buffer - BUFIO
  • I/O 時鐘緩沖器 (BUFIO) 是可以在 Virtex-5 器件中使用的一種時鐘緩沖器匹中。
  • BUFIO 驅(qū)動 I/O 列內(nèi)一個獨立于全局時鐘資源的專用時鐘網(wǎng)夏漱。
  • BUFIO 只能由位于同一時鐘區(qū)域的 clock capable I/O 驅(qū)動。
  • 典型的時鐘區(qū)域中有四個 BUFIO顶捷。
  • BUFIO 不能驅(qū)動邏輯資源 (CLB挂绰、Block RAM 等),因為 I/O 時鐘網(wǎng)絡(luò)只能覆蓋同一組或時鐘區(qū)域內(nèi)的 I/O 列服赎。
  • BUFIO Primitive
    BUFIO 其實就是一個時鐘輸入和時鐘輸出緩沖器葵蒂。輸入與輸出之間有一個相位延遲。
Regional Clock Buffer - BUFR
  • 區(qū)域時鐘緩沖器 (BUFR) 是可以在 Virtex-5 器件中使用的另一種時鐘緩沖器重虑。
  • BUFR 將時鐘信號驅(qū)動到時鐘區(qū)域內(nèi)一個獨立于全局時鐘樹的專用時鐘網(wǎng)践付。
  • 每個 BUFR 可以驅(qū)動其所在區(qū)域中的四個區(qū)域時鐘和相鄰區(qū)域 (最多三個時鐘區(qū)域)中的四個時鐘網(wǎng)。
  • 與 BUFIO 不同缺厉,BUFR 不僅可以驅(qū)動其所在時鐘區(qū)域和相鄰時鐘區(qū)域中的 I/O 邏輯永高,還可以驅(qū)動其中的邏輯資源 (CLB、Block RAM 等)提针。
  • 典型的時鐘區(qū)域 (四個區(qū)域時鐘網(wǎng)絡(luò))中有兩個 BUFR命爬。中心列沒有 BUFR。
  • BUFR Primitive
    BUFR 是一個具有輸入時鐘分頻功能的時鐘輸入 / 時鐘輸出緩沖器辐脖。
Regional Clock Nets
  • 除了全局時鐘樹和網(wǎng)(global clock trees and nets)遇骑,Virtex-5 器件還包含區(qū)域時鐘網(wǎng)(Regional Clock Nets)。
  • 這些時鐘樹也是為低歪斜和低功耗操作設(shè)計的揖曾。
  • 未用分枝都不連接落萎。
  • 當所有邏輯資源都使用時亥啦,時鐘樹還管理負載 / 扇出。
  • 區(qū)域時鐘網(wǎng)的傳播并非遍及整個 Virtex-5 器件练链,而是僅限于一個時鐘區(qū)域翔脱。
  • 一個時鐘區(qū)域包含四個獨立的區(qū)域時鐘網(wǎng)。
  • 要接入?yún)^(qū)域時鐘網(wǎng)媒鼓,BUFR 必須例化届吁。
  • 一個 BUFR 最多可以驅(qū)動兩個相鄰時鐘區(qū)域中的區(qū)域時鐘。

Clock Management Technology(時鐘管理技術(shù))

  • Virtex-5 系列的芯片內(nèi)部含有的時鐘管理模塊(Clock Management Tiles绿鸣,CMTs)可以提供靈活的疚沐、高性能的時鐘信號。
  • 每個 CMT 由 2 個 DCM 和 1 個 PLL 組成潮模。
DCM
  • DCM 原語有兩個:DCM_BASE亮蛔、DCM_ADV
  • DCM_BASE 提供基本的功能,比如去歪斜擎厢、頻率合成究流、固定相移;
  • DCM_ADV 提供更高級的功能动遭,比如動態(tài)重配置芬探。
  • 兩個原語都有各自的輸入輸出端口、屬性設(shè)置和狀態(tài)標識
  • DCM 可以連接到芯片上的其他時鐘資源厘惦,包括專用時鐘 I/O偷仿,時鐘緩沖器和PLL
PLL
  • Virtex-5 芯片最多包含了 6 個 CMT 模塊,每個 CMT 模塊包含一個 PLL宵蕉,PLL 主要用來廣譜頻率的合成酝静,并且與 DCM 配合最為外部/內(nèi)部時鐘的抖動濾波器。
  • PLL 也有兩個原語:PLL_BASE国裳、PLL_ADV
  • PLL_BASE 提供基本的功能形入,比如時鐘去歪斜全跨、頻率合成缝左、精確相移、占空比調(diào)整浓若;PLL_ADV 提供更高級的功能渺杉,比如時鐘切換、動態(tài)重配置等挪钓。
MMCM
  • 不同系列的芯片內(nèi)部的時鐘管理模塊是不同的是越,比如在 Virtex-5 系列后的芯片就含有了 混合模式時鐘管理器 MMCM 。
  • 具體實現(xiàn)時該如何選擇 DCM碌上、DLL倚评、PLL浦徊、MMCM ?找到一篇介紹 Xilinx 時鐘資源的文章:
    如何正確使用FPGA的時鐘資源

Other Tips

  • 一般來說天梧,外部提供的時鐘信號都需要進行倍頻/分頻才可以使用盔性,這時候需要組合各種時鐘緩沖器和 DCM、PLL 等模塊呢岗,我們有兩種方法:
  • 代碼中例化原語冕香,手動組合各種時鐘緩沖器和 DCM、PLL
  • 使用 IP core 向?qū)Ш笤ィ瑒?chuàng)建時鐘管理器(可以發(fā)現(xiàn) IP core 生成的代碼就是上面 5 種組合方式)
  • 個人感覺使用第二種方法應(yīng)該更加簡潔悉尾、方便,不容易出錯吧挫酿。(如果在代碼中沒有明確聲明使用buffer构眯,ISE 綜合屬性、IP core 屬性設(shè)置里面默認會給所有的輸入輸出自動加上緩沖器)
  • 對 FPGA 設(shè)計而言饭豹,全局時鐘是最簡單最可預(yù)測的時鐘鸵赖,最好的時鐘方案是:由專用的全局時鐘輸入引腳驅(qū)動單個全局時鐘蜜笤,并用后者去控制設(shè)計中的每個觸發(fā)器尽纽。全局時鐘資源是專用布線資源,存在與全銅布線層上陶贼,使用全局時鐘資源不影響芯片的其他布線資源翘悉,因此在可以使用全局時鐘的時候盡可能使用茫打。

Summary

  • 雖然各個芯片都不盡相同,但是了解相關(guān)的基本知識有利于我們快速掌握芯片的時鐘資源妖混、快速上手老赤。
  • Xilinx 的所有器件上的時鐘資源可以分為前面說的 3 類:全局時鐘(global clock)、局部時鐘(regional clock)制市、I/O 時鐘(I/O clock)抬旺,但是不同的器件內(nèi)部含有的時鐘管理模塊是不同的,具體到每一款芯片祥楣,應(yīng)該以對應(yīng)的 User Guide 為準开财。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市误褪,隨后出現(xiàn)的幾起案子责鳍,更是在濱河造成了極大的恐慌,老刑警劉巖兽间,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件历葛,死亡現(xiàn)場離奇詭異,居然都是意外死亡嘀略,警方通過查閱死者的電腦和手機恤溶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門乓诽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人咒程,你說我怎么就攤上這事问裕。” “怎么了孵坚?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵粮宛,是天一觀的道長。 經(jīng)常有香客問我卖宠,道長巍杈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任扛伍,我火速辦了婚禮筷畦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘刺洒。我一直安慰自己鳖宾,他們只是感情好,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布逆航。 她就那樣靜靜地躺著鼎文,像睡著了一般。 火紅的嫁衣襯著肌膚如雪因俐。 梳的紋絲不亂的頭發(fā)上拇惋,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音抹剩,去河邊找鬼撑帖。 笑死,一個胖子當著我的面吹牛澳眷,可吹牛的內(nèi)容都是我干的胡嘿。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼钳踊,長吁一口氣:“原來是場噩夢啊……” “哼衷敌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起箍土,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤逢享,失蹤者是張志新(化名)和其女友劉穎罐监,沒想到半個月后吴藻,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡弓柱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年沟堡,在試婚紗的時候發(fā)現(xiàn)自己被綠了侧但。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡航罗,死狀恐怖禀横,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情粥血,我是刑警寧澤柏锄,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站复亏,受9級特大地震影響趾娃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缔御,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一抬闷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧耕突,春花似錦笤成、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至上祈,卻和暖如春喊崖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背雇逞。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工荤懂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人塘砸。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓节仿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親掉蔬。 傳聞我的和親對象是個殘疾皇子廊宪,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容