Xilinx BUF 使用

q876507447發表於2019-01-07

Xilinx 全域性時鐘應注意
目前,大型設計一般推薦使用同步時序電路。同步時序電路基於時鐘觸發沿設計,對時鐘的週期、佔空比、延時和抖動提出了更高的要求。為了滿足同步時序設計的要求,一般在FPGA設計中採用全域性時鐘資源驅動設計的主時鐘,以達到最低的時鐘抖動和延遲。 FPGA 全域性時鐘資源一般使用全銅層工藝實現,並設計了專用時鐘緩衝與驅動結構,從而使全域性時鐘到達晶片內部的所有可配置單元(CLB)、I/O單元(IOB)和選擇性塊RAM(Block Select RAM)的時延和抖動都為最小。為了適應複雜設計的需要,Xilinx的FPGA中整合的專用時鐘資源與數字延遲鎖相環(DLL)的數目不斷增加,最新的 Virtex II器件最多可以提供16個全域性時鐘輸入埠和8個數字時鐘管理模組(DCM)。

與全域性時鐘資源相關的原語常用的與全域性時鐘資源相關的Xilinx器件原語包括:IBUFG、IBUFGDS、BUFG、BUFGP、BUFGCE、BUFGMUX、BUFGDLL和DCM等,如圖1所示。

  1. IBUFG即輸入全域性緩衝,是與專用全域性時鐘輸入管腳相連線的首級全域性緩衝。所有從全域性時鐘管腳輸入的訊號必須經過IBUFG 單元,否則在佈局佈線時會報錯。 IBUFG支援AGP、CTT、GTL、GTLP、HSTL、LVCMOS、LVDCI、LVDS、LVPECL、LVTTL、PCI、PCIX和 SSTL等多種格式的IO標準。

    1. IBUFGDS是IBUFG的差分形式,當訊號從一對差分全域性時鐘管腳輸入時,必須使用IBUFGDS作為全域性時鐘輸入緩衝。IBUFG支援BLVDS、LDT、LVDSEXT、LVDS、LVPECL和ULVDS等多種格式的IO標準。
  2. BUFG是全域性緩衝,它的輸入是IBUFG的輸出,BUFG的輸出到達FPGA內部的IOB、CLB、選擇性塊RAM的時鐘延遲和抖動最小。

  3. BUFGCE是帶有時鐘使能端的全域性緩衝。它有一個輸入I、一個使能端CE和一個輸出端O。只有當BUFGCE的使能端CE有效(高電平)時,BUFGCE才有輸出。

  4. BUFGMUX是全域性時鐘選擇緩衝,它有I0和I1兩個輸入,一個控制端S,一個輸出端O。當S為低電平時輸出時鐘為I0,反之為I1。需要指出的是BUFGMUX的應用十分靈活,I0和I1兩個輸入時鐘甚至可以為非同步關係。

  5. BUFGP相當於IBUG加上BUFG。

  6. BUFGDLL是全域性緩衝延遲鎖相環,相當於BUFG與DLL的結合。BUFGDLL在早期設計中經常使用,用以完成全域性時鐘的同步和驅動等功能。隨著數字時鐘管理單元(DCM)的日益完善,目前BUFGDLL的應用已經逐漸被DCM所取代。

  7. DCM即數字時鐘管理單元,主要完成時鐘的同步、移相、分頻、倍頻和去抖動等。DCM與全域性時鐘有著密不可分的聯絡,為了達到最小的延遲和抖動,幾乎所有的DCM應用都要使用全域性緩衝資源。DCM可以用Xilinx ISE軟體中的Architecture Wizard直接生成。

全域性時鐘資源的使用方法 全域性時鐘資源的使用方法(五種)

1:IBUFG + BUFG的使用方法:

IBUFG後面連線BUFG的方法是最基本的全域性時鐘資源使用方法,由於IBUFG組合BUFG相當於BUFGP,所以在這種使用方法也稱為BUFGP方法。

  1. IBUFGDS + BUFG的使用方法:

當輸入時鐘訊號為差分訊號時,需要使用IBUFGDS代替IBUFG。

  1. IBUFG + DCM + BUFG的使用方法:

這種使用方法最靈活,對全域性時鐘的控制更加有效。通過DCM模組不僅僅能對時鐘進行同步、移相、分頻和倍頻等變換,而且可以使全域性時鐘的輸出達到無抖動延遲。

  1. Logic + BUFG的使用方法:

BUFG不但可以驅動IBUFG的輸出,還可以驅動其它普通訊號的輸出。當某個訊號(時鐘、使能、快速路徑)的扇出非常大,並且要求抖動延遲最小時,可以使用BUFG驅動該訊號,使該訊號利用全域性時鐘資源。但需要注意的是,普通IO的輸入或普通片內訊號進入全域性時鐘佈線層需要一個固有的延時,一般在 10ns左右,即普通IO和普通片內訊號從輸入到BUFG輸出有一個約10ns左右的固有延時,但是BUFG的輸出到片內所有單元(IOB、CLB、選擇性塊RAM)的延時可以忽略不計為“0”ns。

5. Logic + DCM + BUFG的使用方法:

DCM同樣也可以控制並變換普通時鐘訊號,即DCM的輸入也可以是普通片內訊號。使用全域性時鐘資源的注意事項全域性時鐘資源必須滿足的重要原則是:使用 IBUFG或IBUFGDS的充分必要條件是訊號從專用全域性時鐘管腳輸入。換言之,當某個訊號從全域性時鐘管腳輸入,不論它是否為時鐘訊號,都必須使用 IBUFG或IBUFGDS;如果對某個訊號使用了IBUFG或IBUFGDS硬體原語,則這個訊號必定是從全域性時鐘管腳輸入的。如果違反了這條原則,那麼在佈局佈線時會報錯。這條規則的使用是由FPGA的內部結構決定的:IBUFG和IBUFGDS的輸入端僅僅與晶片的專用全域性時鐘輸入管腳有物理連線,與普通IO和其它內部CLB等沒有物理連線。另外,由於BUFGP相當於IBUFG和BUFG的組合,所以BUFGP的使用也必須遵循上述的原則。

全域性時鐘資源的例化方法

全域性時鐘資源的例化方法大致可分為兩種:

一是在程式中直接例化全域性時鐘資源;

二是通過綜合階段約束或者實現階段約束實現對全域性時鐘資源的使用;

第一種方法比較簡單,使用者只需按照前面講述的5種全域性時鐘資源的基本使用方法編寫程式碼或者繪製原理圖即可。

第二方法是通過綜合階段約束或實現階段的約束完成對全域性時鐘資源的呼叫,這種方法根據綜合工具和佈局佈線工具的不同而異。

IBUFDS、IBUFGDS和OBUFDS都是差分訊號緩衝器,用於不同電平介面之間的緩衝和轉換。IBUFDS 是差分輸入的時候用,OBUFDS是差分輸出的時候用,而IBUFGDS則是時鐘訊號專用的輸入緩衝器。

下面詳細說明:

IBUFDS

Differential Signaling Input Buffer with Selectable I/O Interface

//差分輸入時鐘緩衝器

IBUFDS是一個輸入緩衝器,支援低壓差分訊號(如LVCMOS、LVDS等)。在IBUFDS中,一個電平介面用兩個獨特的電平介面(I和IB)表示。一個可以認為是主訊號,另一個可以認為是從訊號。主訊號和從訊號是同一個邏輯訊號,但是相位相反。

在這裡插入圖片描述

Verilog Instantiation Template

IBUFDS instance_name (.O (user_O),

                  .I (user_I),

                  .IB (user_IB));

IBUFGDS

Dedicated(專用的) Differential Signaling Input Buffer with Selectable I/O Interface

//專用差分輸入時鐘緩衝器

IBUFGDS是一個連線時鐘訊號BUFG或DCM的專用的差分訊號輸入緩衝器。在IBUFGDS中,一個電平介面用兩個獨立的電平介面(I和IB)表示。一個可以認為是主訊號,另一個可以認為是從訊號。主訊號和從訊號是同一個邏輯訊號,但是相位相反。
在這裡插入圖片描述

  • The dash (-) means No Change.

Verilog Instantiation Template

IBUFGDS instance_name (.O (user_O),

                   .I (user_I),

                   .IB (user_IB));

OBUFDS

Differential Signaling Output Buffer with Selectable I/O Interface

//差分輸出時鐘緩衝器

OBUFDS是一個輸出緩衝器,支援低壓差分訊號。OBUFDS隔離出了內電路並向晶片上的訊號提供驅動電流。它的輸出用O和OB兩個獨立介面表示。一個可以認為是主訊號,另一個可以認為是從訊號。主訊號和從訊號是同一個邏輯訊號,但是,相位相反。

相關文章