與全局時鍾資源相關的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通常用於時鍾網絡以及其他高扇出網絡,如設置/復位和時鍾啟用

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM