天天看點

與全局時鐘資源相關的Xilinx原語:BUFG, IBUFG, DCM

IBUFG即輸入全局緩沖,是與專用全局時鐘輸入管腳相連接配接的首級全局緩沖。所有從全局時鐘管腳輸入的信号必須經過IBUFG單元,否則在布局布線時會報錯。IBUFG支援AGP、CTT、GTL、GTLP、HSTL、LVCMOS、LVDCI、LVDS、LVPECL、LVTTL、PCI、PCIX和 SSTL等多種格式的IO标準。[了解就是任何時鐘信号 在管腳配置設定步驟中,都必須映射在FPGA的全局時鐘管腳上,同時在程式設計邏輯中必須使用IBUFG對該全局時鐘引腳進來的信号進行緩沖]

IBUFGDS是IBUFG的差分形式,當信号從一對差分全局時鐘管腳輸入時,必須使用IBUFGDS作為全局時鐘輸入緩沖。IBUFG支援BLVDS、LDT、LVDSEXT、LVDS、LVPECL和ULVDS等多種格式的IO标準。

BUFG是全局緩沖,它的輸入是IBUFG的輸出,此設計元素是一個高扇出緩沖器,用于将信号連接配接到全局路由資源,以實作信号的低偏斜分布。

BUFG通常用于時鐘網絡以及其他高扇出網絡,如設定/複位和時鐘啟用

與全局時鐘資源相關的Xilinx原語:BUFG, IBUFG, DCM

BUFG連接配接的是晶片中的專用時鐘資源,目的是減少信号的傳輸延時,提高驅動能力,對于時序電路中的關鍵時鐘信号,這是非常重要的,關系到系統設計的成功與否。如果内部産生的時鐘,隻在局部子產品使用,可以考慮不使用BUFG。一個BUFG隻能驅動一個時鐘。

常見的使用方法:IBUFGDS差分轉單端後進BUFG,再進PLL/DCM.

全局時鐘資源必須滿足的重要原則是:使用IBUFG或IBUFGDS的充分必要條件是信号從專用全局時鐘管腳輸入。換言之,當某個信号從全局時鐘管腳輸入,不論它是否為時鐘信号,都必須使用IBUFG或IBUFGDS;如果對某個信号使用了IBUFG或IBUFGDS硬體原語,則這個信号必定是從全局時鐘管腳輸入的。如果違反了這條原則,那麼在布局布線時會報錯。這條規則的使用是由FPGA的内部結構決定的:IBUFG和IBUFGDS的輸入端僅僅與晶片的專用全局時鐘輸入管腳有實體連接配接,與普通IO和其它内部CLB等沒有實體連接配接。另外,由于BUFGP相當于IBUFG和BUFG的組合,是以BUFGP的使用也必須遵循上述的原則。

DLL子產品(delay locked loop),xilinx fpga的底層内嵌功能子產品,完成時鐘高精度,低抖動的倍頻和分頻。

DCM:數字時鐘管理子產品,其配置界面如下圖:

與全局時鐘資源相關的Xilinx原語:BUFG, IBUFG, DCM

       各個管腳的意義可以在help中找到,要說明的是其中的CLK Source選項,External代表輸入的時鐘管腳CLKIN是全局時鐘信号IBUFG或IBUFGDS,這時在頂層子產品中例化的DCM子產品的輸入時鐘必須布線在全局時鐘管腳,否則在布局布線時會出現錯誤。Internal代表不經過IBUFG或IBUFGDS直接将輸入時鐘連接配接至CLKIN管腳。

通過IP核生成DCM子產品,輸入是external,輸入時鐘将自動連接配接BUFG,不需要手動添加,可以從生成的DCM子產品的.v檔案看出:

1 `timescale 1ns / 1ps      2       3 module search_dcm(CLKIN_IN,      4       5                   CLKIN_IBUFG_OUT,      6       7                   CLK0_OUT,      8       9                   CLK2X_OUT,     10      11                   LOCKED_OUT);     12      13 input CLKIN_IN;     14      15 output CLKIN_IBUFG_OUT;//此句表明已經連接配接BUFG,不需要手動添加     16      17 output CLK0_OUT;     18      19 output CLK2X_OUT;     20      21 output LOCKED_OUT;     22      23       24      25 wire CLKFB_IN;     26      27 wire CLKIN_IBUFG;     28      29 wire CLK0_BUF;     30      31 wire CLK2X_BUF;     32      33 wire GND_BIT;     34      35 wire [6:0] GND_BUS_7;     36      37 wire [15:0] GND_BUS_16;      

       如果通過IP核生成DCM子產品,輸入是Internal,輸入時鐘将不會連接配接BUFG,需要手動添加,同樣可以從生成的DCM子產品的.v檔案看出是沒有CLKIN_IBUFG_OUT的輸出的:

1 `timescale 1ns / 1ps      2       3 module MyDCM(CLKIN_IN,      4              RST_IN,      5              CLK0_OUT,      6              CLK2X_OUT,      7              LOCKED_OUT);      8 input CLKIN_IN;      9 input RST_IN;     10 output CLK0_OUT;     11 output CLK2X_OUT;     12 output LOCKED_OUT;     13 wire CLKFB_IN;     14 wire CLK0_BUF;     15 wire CLK2X_BUF;     16 wire GND_BIT;     17 wire [6:0] GND_BUS_7;     18 wire [15:0] GND_BUS_16;      

這裡的CLKIN_IBUFG_OUT輸出是輸入時鐘信号通過IBUFG後的緩存輸出信号,這個信号即 

繼續閱讀