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通常用于時鐘網絡以及其他高扇出網絡,如設定/複位和時鐘啟用
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCM581dvRWYoNHLwEzX5xCMx8FesU2cfdGLwATMfRHLGZkRGZkRfJ3bs92YskmNhVTYykVNQJVMRhXVEF1X0hXZ0xiNx8VZ6l2cssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL3gTMxQmNjFDNzYTO4UmNxYzXzITMwcTM5EzLcBTMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL2M3Lc9CX6MHc0RHaiojIsJye.png)
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:數字時鐘管理子產品,其配置界面如下圖:
各個管腳的意義可以在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後的緩存輸出信号,這個信号即