引言:本文我們介紹一下全局時(shí)鐘資源。全局時(shí)鐘是一個(gè)專(zhuān)用的互連網(wǎng)絡(luò),專(zhuān)門(mén)設(shè)計(jì)用于到達(dá)FPGA中各種資源的所有時(shí)鐘輸入。這些網(wǎng)絡(luò)被設(shè)計(jì)成具有低偏移和低占空比失真、低功耗和改進(jìn)的抖動(dòng)容限。它們也被設(shè)計(jì)成支持非常高頻率的信號(hào)。了解全局時(shí)鐘的信號(hào)路徑可以擴(kuò)展對(duì)各種全局時(shí)鐘資源的理解。全局時(shí)鐘資源和網(wǎng)絡(luò)由以下路徑和組件組成:
時(shí)鐘樹(shù)和網(wǎng)絡(luò):GCLK
時(shí)鐘區(qū)域
1. 時(shí)鐘樹(shù)和網(wǎng)絡(luò):GCLK
7系列FPGA時(shí)鐘樹(shù)設(shè)計(jì)用于低偏差和低功耗操作,任何未使用時(shí)鐘的分支都會(huì)被斷開(kāi)。時(shí)鐘樹(shù)還可用于驅(qū)動(dòng)邏輯資源,如復(fù)位或時(shí)鐘啟用,這主要用于高扇出/負(fù)載網(wǎng)絡(luò)。在7系列FPGA結(jié)構(gòu)中,全局時(shí)鐘線的引腳訪問(wèn)不限于邏輯資源時(shí)鐘引腳。全局時(shí)鐘線可以驅(qū)動(dòng)CLB中除CLK引腳以外的引腳(例如:控制引腳SR和CE)。需要非??焖俚男盘?hào)連接和大負(fù)載/扇出的應(yīng)用程序可以從該架構(gòu)中獲益。
2. 時(shí)鐘域
7系列器件通過(guò)使用時(shí)鐘區(qū)域改善時(shí)鐘分布。每個(gè)時(shí)鐘區(qū)域最多可以有12個(gè)全局時(shí)鐘域。這12個(gè)全局時(shí)鐘可以由單片器件或SLR中的32個(gè)全局時(shí)鐘緩沖器的任意組合驅(qū)動(dòng)。時(shí)鐘區(qū)域的尺寸固定為50個(gè)CLB高(50個(gè)IOB),跨越die的左側(cè)或右側(cè)。在7系列器件中,時(shí)鐘主干線將器件分成左側(cè)或右側(cè)。通過(guò)固定時(shí)鐘區(qū)域的尺寸,較大的7系列器件可以有更多的時(shí)鐘區(qū)域。7系列FPGA提供1到24個(gè)時(shí)鐘區(qū)域。
3. 全局時(shí)鐘緩沖器
在7系列器件中有多達(dá)32個(gè)全局時(shí)鐘緩沖器。CCIO輸入可以直接連接到器件同一半的任何全局時(shí)鐘緩沖器。每個(gè)差分時(shí)鐘管腳對(duì)可以連接到PCB上的差分時(shí)鐘或單端時(shí)鐘。當(dāng)用作差分時(shí)鐘輸入時(shí),直接連接來(lái)自差分輸入管腳對(duì)的P側(cè)。當(dāng)用作單端時(shí)鐘輸入時(shí),必須使用管腳對(duì)的P側(cè),因?yàn)橹苯舆B接只存在于該管腳上。有關(guān)管腳命名約定,請(qǐng)參閱UG475:7系列FPGA封裝和引腳輸出規(guī)范。如果單端時(shí)鐘連接到差分管腳對(duì)的P側(cè),則N端不能用作另一個(gè)單端時(shí)鐘管腳。但是,它可以用作用戶I/O。器件上半部分的CMT只能驅(qū)動(dòng)器件上半部分的BUFG,下半部分的CMT只能驅(qū)動(dòng)下半部分的BUFG。類(lèi)似地,只有器件的同一半中的BUFG可以用作對(duì)器件同一半中的CMT反饋。當(dāng)CMT列擴(kuò)展到同時(shí)包含GT和I/O列的區(qū)域時(shí),千兆收發(fā)器(GTs)只能直接連接到MMCMs/PLL。Virtex-7T和Virtex-7XT器件有這些完整的列。Spartan-7、Artix-7、Kintex-7和Zynq-7000器件中的GT和CMT只能使用BUFHs(首選)或BUFGs進(jìn)行連接。全局時(shí)鐘緩沖器允許各種時(shí)鐘/信號(hào)源訪問(wèn)全局時(shí)鐘樹(shù)和網(wǎng)絡(luò)。輸入到全局時(shí)鐘緩沖器的可能來(lái)源包括:
時(shí)鐘輸入
在器件同一半?yún)^(qū)域的時(shí)鐘管理塊(CMT)驅(qū)動(dòng)BUFG
相鄰全局時(shí)鐘緩沖器輸出(BUFGs)
通用互連
區(qū)域時(shí)鐘緩沖器(BUFRs)
7系列FPGA時(shí)鐘輸入可以通過(guò)時(shí)鐘主干列中的垂直時(shí)鐘網(wǎng)絡(luò)間接地驅(qū)動(dòng)全局時(shí)鐘緩沖器。32個(gè)BUFG被分成兩組,每組16個(gè)BUFGs,分別位于器件的頂部和底部。直接連接到BUFGs的任何資源(例如,GTX收發(fā)器)都有一個(gè)頂部/底部限制。例如,頂部的每個(gè)MMCM只能驅(qū)動(dòng)設(shè)備頂部的16個(gè)BUFGs。同樣,底部的MMCMs驅(qū)動(dòng)底部的16個(gè)BUFGs。
所有全局時(shí)鐘緩沖器可以驅(qū)動(dòng)7系列設(shè)備中的所有時(shí)鐘區(qū)域。然而,在一個(gè)時(shí)鐘區(qū)域內(nèi)只能驅(qū)動(dòng)12個(gè)不同的時(shí)鐘。時(shí)鐘緩沖器被設(shè)計(jì)成具有兩個(gè)時(shí)鐘輸入的同步或異步glitch-free2:1多路復(fù)用器。BUFG級(jí)聯(lián)有一個(gè)專(zhuān)用路徑(路由資源),允許兩個(gè)以上的時(shí)鐘輸入選擇。7系列FPGA控制引腳提供廣泛的功能和強(qiáng)大的輸入切換。在7系列FPGA時(shí)鐘結(jié)構(gòu)中,BUFGCTRL多路復(fù)用器和所有派生器可以級(jí)聯(lián)到器件上半部分和下半部分16個(gè)BUFGMUX組內(nèi)的相鄰時(shí)鐘緩沖器,有效地在上半部分創(chuàng)建一個(gè)16個(gè)BUFGMUX(BUFGCTRL多路復(fù)用器)環(huán),在下半部分形成另一個(gè)16個(gè)環(huán)。圖1顯示了級(jí)聯(lián)BUFG的簡(jiǎn)化圖。
圖1、級(jí)聯(lián)BUFGs以下小節(jié)詳細(xì)介紹了7系列FPGA時(shí)鐘緩沖器的各種配置、原語(yǔ)和使用模型。
3.1 全局時(shí)鐘緩沖器原句
表1中的原句是全局時(shí)鐘緩沖器的不同配置。ISE或Vivado設(shè)計(jì)工具管理所有這些原語(yǔ)的配置,約束指南描述了LOC約束。
表1、全局時(shí)鐘緩沖器原句
BUFGCTRL
BUFGCTRL原句框圖如圖2所示,它可以實(shí)現(xiàn)兩路異步時(shí)鐘切換。所有其他全局緩沖語(yǔ)句都可以由BUFGCTRL的某種配置得到。BUFGCTRL有四個(gè)選擇端口:S0、S1、CE0和CE1,另外還有兩個(gè)附件的控制線,IGNORE0和IGNORE1。這六個(gè)信號(hào)用于控制輸入I0和I1。
圖2、 BFUGCTRL原句BUFGCTRL用于在兩路時(shí)鐘輸入之間切換,而不會(huì)產(chǎn)生毛刺。當(dāng)當(dāng)前選擇的時(shí)鐘在S0和S1改變后從高電平轉(zhuǎn)換到低電平時(shí),輸出保持在低電平,直到另一個(gè)(待選擇的)時(shí)鐘從高電平轉(zhuǎn)換到低電平。然后新的時(shí)鐘開(kāi)始驅(qū)動(dòng)輸出,BUFGCTRL的默認(rèn)配置是下降沿敏感型,在輸入切換之前保持在低位。BUFGCTRL還可以對(duì)上升沿敏感,并在輸入切換之前使用INIT_OUT屬性保持在高極性。在某些應(yīng)用中,上述條件是不可取的。斷言IGNORE引腳將繞過(guò)BUFGCTRL來(lái)檢測(cè)在兩個(gè)時(shí)鐘輸入之間切換的條件。換句話說(shuō),斷言IGNORE會(huì)導(dǎo)致MUX在選擇管腳更改時(shí)切換輸入。當(dāng)選擇引腳改變時(shí),IGNORE0使輸出立即從I0輸入切換,而當(dāng)選擇引腳改變時(shí),IGNORE1使輸出立即從I1輸入切換。選擇一個(gè)輸入時(shí)鐘需要一個(gè)“選擇”對(duì)(S0和CE0,或S1和CE1)被斷言為高。如果S或CE沒(méi)有被斷言為高,則所需的輸入將不會(huì)被激活選定。在正常運(yùn)行時(shí),S和CE對(duì)(所有四條選擇線)都不應(yīng)同時(shí)斷言高。通常,“選擇”對(duì)中只有一個(gè)管腳用作選擇線,而另一個(gè)管腳系在高處。真值表如表2所示。
表2、時(shí)鐘資源真值表雖然S和CE都用于選擇所需的輸出,但建議只有S用于無(wú)故障切換。這是因?yàn)楫?dāng)使用CE切換時(shí)鐘時(shí),時(shí)鐘選擇的變化可能比使用S快。CE引腳的建立/保持時(shí)間會(huì)導(dǎo)致時(shí)鐘輸出出現(xiàn)毛刺。另一方面,使用S引腳可以在兩個(gè)時(shí)鐘輸入之間切換,而不考慮設(shè)置/保持時(shí)間。因此,使用S來(lái)切換時(shí)鐘不會(huì)導(dǎo)致毛刺。請(qǐng)參見(jiàn)BUFGMUX_ CTRL。圖3中的時(shí)序圖說(shuō)明了使用BUFGCTRL原語(yǔ)的各種時(shí)鐘切換條件。
圖3、BUFGCTRL原語(yǔ)的時(shí)序圖在事件1之前,輸出O使用輸入I0;BUFGCTRL的其他功能包括:
I0和I1輸入的預(yù)選在配置之后但在設(shè)備運(yùn)行之前進(jìn)行。
配置后的初始輸出可選擇為高或低。
僅使用CE0和CE1的時(shí)鐘選擇(S0和S1綁定高)可以更改時(shí)鐘選擇,而無(wú)需等待先前選擇的時(shí)鐘從高到低的轉(zhuǎn)換。
表3概括了BUFGCTRL原句的屬性。
表3 BUFGCTRL屬性
BUFG
BUFG是一個(gè)時(shí)鐘緩沖器,具有一個(gè)時(shí)鐘輸入和一個(gè)時(shí)鐘輸出。這個(gè)原語(yǔ)基于BUFGCTRL,有些管腳連接到邏輯高或低。圖2-5說(shuō)明了BUFG和BUFGCTRL的關(guān)系。可以手動(dòng)放置約束的位置。
圖4、BUFG和BUFGCTRLBUFG時(shí)序圖如圖5所示。圖中顯示了BUFG引入的時(shí)鐘延遲TBCCKO_O
圖5、 BUFG時(shí)序圖
BUFGCE和BUFGCE_1
與BUFG不同,BUFGCE是一個(gè)具有一個(gè)時(shí)鐘輸入、一個(gè)時(shí)鐘輸出和一條時(shí)鐘使能線的時(shí)鐘緩沖器。這個(gè)原語(yǔ)基于BUFGCTRL,有些管腳連接到邏輯高或低。圖6說(shuō)明了BUFGCE和BUFGCTRL的關(guān)系。LOC約束可用于手動(dòng)放置BUFGCE和BUFGCE_ 1位置。
圖6、 BUFGCE和BUFGCTRLBUFGCE的切換條件類(lèi)似于BUFGCTRL。如果CE輸入在進(jìn)入上升時(shí)鐘邊緣之前為低電平,則隨后的時(shí)鐘脈沖不會(huì)通過(guò)時(shí)鐘緩沖器,并且輸出保持低電平。在進(jìn)入時(shí)鐘高脈沖期間,CE的任何電平變化在時(shí)鐘轉(zhuǎn)換為低之前都沒(méi)有影響。當(dāng)時(shí)鐘被禁用時(shí),輸出保持低。但是,當(dāng)時(shí)鐘被禁用時(shí),它將完成時(shí)鐘高脈沖。由于時(shí)鐘使能線路使用BUFGCTRL的CE引腳,因此選擇信號(hào)必須滿足建立時(shí)間要求。違反此建立時(shí)間可能會(huì)導(dǎo)致毛刺。圖7說(shuō)明了BUFGCE的時(shí)序圖。
圖7、 BUFGCE的時(shí)序圖BUFGCE_1與BUFGCE類(lèi)似,只是其開(kāi)關(guān)條件不同。如果CE輸入在進(jìn)入下降時(shí)鐘邊緣之前是低的,則隨后的時(shí)鐘脈沖不通過(guò)時(shí)鐘緩沖器,并且輸出保持高。在進(jìn)入時(shí)鐘低脈沖期間,CE的任何電平變化在時(shí)鐘變高之前都沒(méi)有影響。當(dāng)時(shí)鐘被禁用時(shí),輸出保持高電平。但是,當(dāng)時(shí)鐘被禁用時(shí),它將完成時(shí)鐘低脈沖。
圖8、BUFGCE_1的時(shí)序圖
BUFGMUX和BUFGMUX_1
BUFGMUX是一個(gè)具有兩個(gè)時(shí)鐘輸入、一個(gè)時(shí)鐘輸出和一條選擇線的時(shí)鐘緩沖器。這個(gè)原語(yǔ)基于BUFGCTRL,有些管腳連接到邏輯高位或高位低。圖9說(shuō)明了BUFGMUX和BUFGCTRL的關(guān)系。LOC約束可用于手動(dòng)放置BUFGMUX和BUFGCTRL位置。
圖9、 BUFGMUX和BUFGCTRL由于BUFGMUX使用CE管腳作為選擇管腳,因此在使用選擇管腳時(shí),必須滿足建立時(shí)間要求。違反此建立時(shí)間可能會(huì)導(dǎo)致毛刺。BUFGMUX的開(kāi)關(guān)條件與上的CE引腳相同BUFGCTRL.圖圖10顯示了BUFGMUX的時(shí)序圖。
圖10、BUFGMUX時(shí)序圖
BUFGMUX_1對(duì)上升沿敏感,在輸入開(kāi)關(guān)之前保持在高電平。圖11顯示了BUFGMUX_ 1的時(shí)序圖。LOC約束可用于手動(dòng)放置BUFGMUX和BUFGMUX_1位置。
圖10、BUFGMUX_1時(shí)序圖
表3、 BUFGMUX屬性
BUFGMUX_CTRL
BUFGMUX_CTRL替換了BUFGMUX_VIRTEX4遺留版本基元.BUFGMUX_CTRL是一個(gè)具有兩個(gè)時(shí)鐘輸入、一個(gè)時(shí)鐘輸出和一條選擇線的時(shí)鐘緩沖區(qū)。這個(gè)原語(yǔ)基于BUFGCTRL,有些管腳連接到邏輯高或低。圖12顯示了BUFGMUX_CTRL和BUFGCTRL的關(guān)系。
圖12、BUFGMUX_CTRL和BUFGCTRLCTRL和MUX選擇管腳。S可以隨時(shí)切換而不會(huì)引起故障。S上的建立/保持時(shí)間用于確定在切換到新時(shí)鐘之前,輸出是否將通過(guò)先前選擇的時(shí)鐘的額外脈沖。如果S如圖2-14所示在設(shè)置時(shí)間TBCCCK_S之前和I0從高變低之前發(fā)生變化,則輸出將不會(huì)傳遞額外的I0脈沖。如果S在S的保持時(shí)間后發(fā)生變化,則輸出將傳遞一個(gè)額外的脈沖。如果S違反建立/保持要求,輸出可能會(huì)傳遞額外的脈沖,但不會(huì)出現(xiàn)故障。在任何情況下,輸出將在慢時(shí)鐘的三個(gè)時(shí)鐘周期內(nèi)更改為新時(shí)鐘。S0和S1的建立/保持要求與時(shí)鐘下降沿有關(guān),而不是與CE0和CE1的上升沿有關(guān)。
BUFGMUX_CTRL的切換條件與BUFGCTRL.圖13顯示了BUFGMUX_CTRL的時(shí)序圖。
圖13、BUFGMUX_CTRL時(shí)序圖BUFGMUX_CTRL原語(yǔ)的其他功能包括:
配置后預(yù)選I0和I1輸入。
初始輸出可在配置后選擇為高或低
原文標(biāo)題:Xilinx 7系列FPGA架構(gòu)之時(shí)鐘資源(三)
文章出處:【微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:haq
-
FPGA
+關(guān)注
關(guān)注
1620文章
21509瀏覽量
598867 -
Xilinx
+關(guān)注
關(guān)注
70文章
2136瀏覽量
120373 -
時(shí)鐘
+關(guān)注
關(guān)注
10文章
1673瀏覽量
130946
原文標(biāo)題:Xilinx 7系列FPGA架構(gòu)之時(shí)鐘資源(三)
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論