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通常用於時鍾網絡以及其他高扇出網絡,如設置/復位和時鍾啟用
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后的緩存輸出信號,這個信號即作為DCM的輸入信號,又以輸出端口的形式供底層需要使用全局時
原文鏈接:http://blog.sina.com.cn/s/blog_75df3ad50100pmi3.html