FPGA的時(shí)鐘資源
掃描二維碼
隨時(shí)隨地手機(jī)看文章
本文將回顧常見(jiàn)的 FPGA 資源,這些資源使我們能夠在整個(gè)系統(tǒng)中有效地生成和分配時(shí)鐘信號(hào)。
在許多情況下,我們需要生成新的時(shí)鐘信號(hào)并在整個(gè)系統(tǒng)中有效地分配它們。現(xiàn)代 FPGA 具有專用的時(shí)鐘管理模塊,使我們能夠執(zhí)行這兩項(xiàng)任務(wù)。
在本文中,我們將首先簡(jiǎn)要回顧有效時(shí)鐘分配和新時(shí)鐘生成的問(wèn)題。然后,我們將看到現(xiàn)代 FPGA 的時(shí)鐘管理模塊可以輕松滿足這兩個(gè)設(shè)計(jì)要求。
1 高效的時(shí)鐘分配
即使在小型數(shù)字設(shè)計(jì)中,時(shí)鐘信號(hào)也可能分布到整個(gè)系統(tǒng)的數(shù)百個(gè)時(shí)鐘元件。這些高扇出時(shí)鐘信號(hào)負(fù)責(zé)同步系統(tǒng)的不同子系統(tǒng)或組件。這就是為什么我們需要特別注意時(shí)鐘網(wǎng)絡(luò)不同路徑引入的延遲。
例如,考慮將時(shí)鐘信號(hào)從節(jié)點(diǎn) A 分配到節(jié)點(diǎn) B 和 C,如下面的圖 1 所示。在該圖中,時(shí)鐘信號(hào)進(jìn)入FPGA,經(jīng)過(guò)緩沖器(圖中的三角形),然后到達(dá)節(jié)點(diǎn)B的寄存器。該路徑具有固有延遲,在波形中用Δb表示。為了將時(shí)鐘從 A 分配到 C,我們可以使用 PCB 走線而不通過(guò) FPGA,但在圖中,F(xiàn)PGA 中分配的時(shí)鐘用于“板上的其他設(shè)備”。該路徑的延遲由Δc表示。由于 Δb 和 Δc 通常不相等,因此節(jié)點(diǎn) B 的寄存器和節(jié)點(diǎn) C 的設(shè)備會(huì)看到略有不同的時(shí)鐘;應(yīng)該具有對(duì)齊邊沿的相同時(shí)鐘之間的這種固定時(shí)間偏移稱為時(shí)鐘偏差。我們可以看到,數(shù)字設(shè)計(jì)中的一個(gè)嚴(yán)重問(wèn)題是以盡可能小的時(shí)鐘偏差在系統(tǒng)中分配高扇出時(shí)鐘信號(hào)。
2 生成新的時(shí)鐘信號(hào)
FPGA 的一個(gè)理想特性可以是修改給定時(shí)鐘信號(hào)以根據(jù)系統(tǒng)要求生成新時(shí)鐘的能力。例如,假設(shè)您設(shè)計(jì)了一塊帶有 FPGA 的電路板。假設(shè) 50 MHz 時(shí)鐘對(duì)電路板來(lái)說(shuō)足夠了,但在 FPGA 中,您需要 200 MHz 時(shí)鐘來(lái)執(zhí)行特定算法。如果您能以某種方式從板上的 50 MHz 時(shí)鐘生成 200 MHz 時(shí)鐘,您就可以避免在您的系統(tǒng)中使用兩個(gè)不同的時(shí)鐘源,而且您也不必在高于所需頻率的情況下運(yùn)行電路板。如果我們回想一些數(shù)字信號(hào)處理 (DSP) 應(yīng)用程序是多速率的并且在算法的不同部分需要不同的時(shí)鐘頻率,我們就可以確定時(shí)鐘合成的另一個(gè)應(yīng)用程序。
現(xiàn)在,讓我們看看 FPGA 的時(shí)鐘相關(guān)資源,這些資源使我們能夠生成新的時(shí)鐘信號(hào)并將其分配到整個(gè)系統(tǒng)中。
3FPGA時(shí)鐘管理資源
今天的 FPGA 集成了強(qiáng)大的時(shí)鐘管理模塊,以促進(jìn)設(shè)計(jì)過(guò)程并降低成本。我們將這些嵌入式時(shí)鐘管理模塊稱為 CMB。不同的供應(yīng)商使用不同的術(shù)語(yǔ)來(lái)指代他們的 CMB。例如,Xilinx 使用時(shí)鐘管理瓦片 (CMT) 或數(shù)字時(shí)鐘管理器 (DCM),Intel 使用眾所周知的術(shù)語(yǔ)鎖相環(huán) (PLL),Microsemi 使用時(shí)鐘調(diào)節(jié)電路。
CMB 可以通過(guò)執(zhí)行時(shí)鐘倍頻和分頻來(lái)生成新的時(shí)鐘信號(hào)。他們可能能夠?qū)⒖删幊滔嘁茟?yīng)用于生成的時(shí)鐘,甚至可以調(diào)整時(shí)鐘的占空比。CMB 不僅可以消除分布在 FPGA 內(nèi)的時(shí)鐘信號(hào),還可以消除分布在 FPGA 外到電路板上其他設(shè)備的時(shí)鐘(例如,到達(dá)圖 1 中節(jié)點(diǎn) C 的時(shí)鐘)。
可編程相移功能的一種應(yīng)用是將時(shí)鐘信號(hào)與輸入數(shù)據(jù)同步。當(dāng)我們處理數(shù)字信號(hào)時(shí),我們必須在數(shù)據(jù)穩(wěn)定的時(shí)刻(最后一次數(shù)據(jù)轉(zhuǎn)換之后和下一次轉(zhuǎn)換之前)對(duì)信號(hào)進(jìn)行采樣。這就是為什么一些 FPGA 為生成的時(shí)鐘的精細(xì)相移調(diào)整提供動(dòng)態(tài)機(jī)制的原因。例如,Xilinx Virtex II Pro 的 CMB 可以應(yīng)用 1/256 時(shí)鐘周期的相移。如果沒(méi)有這種相移能力,時(shí)鐘可能不會(huì)落在數(shù)據(jù)眼圖的中心。
具有占空比調(diào)整功能的 CMB 在需要占空比為 50% 的時(shí)鐘信號(hào)的應(yīng)用中很有幫助。示例是高速通信,例如 LVDS 和雙數(shù)據(jù)速率 (DDR) 接口。如果時(shí)鐘占空比不是 50%,我們可以使用 CMB 的占空比校正功能來(lái)重塑時(shí)鐘信號(hào),使其具有 50% 的占空比。
為了獲得這些特性,F(xiàn)PGA 使用基于鎖相環(huán) (PLL) 或延遲鎖定環(huán) (DLL) 的 CMB。除了 PLL 和 DLL,還有另一組非常重要的時(shí)鐘相關(guān) FPGA 資源:用于在 FPGA 中分配時(shí)鐘信號(hào)的專用緩沖器和路由。這些專用緩沖器和路由使我們能夠擁有一個(gè)低偏斜的時(shí)鐘網(wǎng)絡(luò)。
在本文的其余部分,我們將首先回顧使用 PLL/DLL 實(shí)現(xiàn) CMB 的基本概念。然后,我們將了解英特爾 FPGA 所采用的低偏移時(shí)鐘網(wǎng)絡(luò)。
4基于 DLL 的時(shí)鐘校正
圖 2 顯示了用于補(bǔ)償時(shí)鐘分配延遲的 DLL 的基本框圖。

在這個(gè)圖中,CLKIN 是我們打算通過(guò)“時(shí)鐘分配網(wǎng)絡(luò)”分配的輸入時(shí)鐘。顧名思義,“可變延遲線”模塊為 CLKIN 引入了一個(gè)可調(diào)延遲并產(chǎn)生 CLKOUT。延遲量由“控制”邏輯決定?!翱刂啤眽K監(jiān)控其輸入并改變延遲,以便 CLKIN 和 CLKFB 兩個(gè)輸入的上升沿對(duì)齊。通過(guò)這種方式,電路補(bǔ)償了時(shí)鐘分配網(wǎng)絡(luò)中的延遲,理論上我們可以消除時(shí)鐘分配的偏差。
請(qǐng)注意,“可變延遲線”不能對(duì) CLKIN 應(yīng)用負(fù)延遲來(lái)補(bǔ)償“時(shí)鐘分配網(wǎng)絡(luò)”的固有延遲。那么,圖2的框圖如何消除時(shí)鐘偏差呢?關(guān)鍵在于時(shí)鐘信號(hào) CLKIN 是周期性的。為了闡明這一點(diǎn),讓我們考慮圖 1 的時(shí)鐘偏移示例。從 A 到 B 的路徑具有 Δb 延遲,因此,我們需要將 -Δb 延遲(即負(fù)延遲)應(yīng)用于節(jié)點(diǎn) A 的時(shí)鐘然后通過(guò)延遲 Δb 的路徑分發(fā)它。我們?nèi)绾我?guī)避造成負(fù)延遲的問(wèn)題?請(qǐng)記住,時(shí)鐘信號(hào)是一個(gè)周期性波形。假設(shè)周期為 T 。我們知道一個(gè)周期為 T 的周期函數(shù) f(t) 滿足
f(t)=f(t+T)
應(yīng)用負(fù)延遲 -Δb,我們有
f(t?Δb)=f(t+T?Δb)
因此,我們可以應(yīng)用 T-Δb 的正延遲,而不是應(yīng)用負(fù)延遲 -Δb。如下圖 3 所示;請(qǐng)注意,圖 3 說(shuō)明了 DLL 應(yīng)用于原始時(shí)鐘信號(hào)的延遲,而圖 1 顯示了由從 A 到 B 以及從 A 到 C 的路徑引起的延遲。
5基于 PLL 的時(shí)鐘去偏斜
我們可以使用 PLL 來(lái)有效消除時(shí)鐘分配網(wǎng)絡(luò)的延遲,而不是使用 DLL。如圖 4 所示。

在這種情況下,使用“電壓控制振蕩器”代替“可變延遲線”。反饋回路調(diào)整振蕩器的頻率,使兩個(gè)時(shí)鐘信號(hào) CLKIN 和 CLKFB 具有對(duì)齊的邊沿。
我們可以很容易地穩(wěn)定一個(gè) DLL 的反饋回路;然而,對(duì)于 PLL,情況并非如此,因?yàn)闀r(shí)鐘分配網(wǎng)絡(luò)將在 PLL 的反饋環(huán)路內(nèi)。這就是為什么基于 DLL 的結(jié)構(gòu)更容易適用于時(shí)鐘校正應(yīng)用程序的原因。另一方面,在合成新的時(shí)鐘信號(hào)時(shí),PLL 更加靈活。
根據(jù)我們的討論,我們可以使用 FPGA 的 CLB 來(lái)消除圖 1 的時(shí)鐘分布偏移,如下面圖 5 的簡(jiǎn)化框圖所示。請(qǐng)注意,CMB 不僅可以對(duì)分布在 FPGA 內(nèi)的時(shí)鐘信號(hào)進(jìn)行去偏斜,還可以對(duì)進(jìn)入板上其他設(shè)備的時(shí)鐘進(jìn)行去偏斜。

我們看到 CMB 可用于合成新的時(shí)鐘信號(hào)?,F(xiàn)在,讓我們看看另一組與時(shí)鐘相關(guān)的 FPGA 資源:可用于在 FPGA 中分配時(shí)鐘信號(hào)的專用緩沖器和路由。
6與時(shí)鐘相關(guān)的緩沖器和路由
這些資源負(fù)責(zé)分配具有低偏斜的高扇出時(shí)鐘信號(hào)。瀏覽這些緩沖區(qū)和路由的細(xì)節(jié)可能會(huì)讓人不知所措,但我們將簡(jiǎn)要回顧一些重要的概念。為了以相等的傳播延遲將時(shí)鐘信號(hào)分配到芯片的所有部分,我們可以使用一種稱為 H 樹的特殊路由形式。您可以在圖 6 中看到一個(gè)示例。

您可以輕松驗(yàn)證從 CLK-in 到每個(gè)矩形(代表時(shí)鐘元素)是否有類似的路徑。因此,理論上,所有時(shí)鐘元件將看到相同的時(shí)鐘信號(hào)。圖 7 顯示了一些英特爾 FPGA 用于分配全局時(shí)鐘信號(hào) (GCLK) 的 H 樹。

GCLK 在整個(gè)器件中驅(qū)動(dòng),用作功能塊的低偏移時(shí)鐘源,例如自適應(yīng)邏輯模塊 (ALM)、數(shù)字信號(hào)處理 (DSP) 子電路、嵌入式存儲(chǔ)器和 PLL。
除了 GCLK,英特爾 FPGA 中還有區(qū)域時(shí)鐘 (RCLK) 網(wǎng)絡(luò)。如圖 8 所示,這些 RCLK 僅被驅(qū)動(dòng)到芯片的一個(gè)象限中。

Intel 設(shè)備還具有分布在芯片較小區(qū)域內(nèi)的外圍時(shí)鐘 (PCLK) 網(wǎng)絡(luò)。下面的圖 9 顯示了一個(gè)示例。

現(xiàn)在,覆蓋所有這些網(wǎng)絡(luò),我們得到如圖 10 所示的網(wǎng)絡(luò)。

如圖 8 和 9 所示,F(xiàn)PGA 具有僅分布在芯片的一個(gè)區(qū)域中的專用時(shí)鐘路由。這些被稱為時(shí)鐘區(qū)域。請(qǐng)注意,不同的設(shè)備具有不同的時(shí)鐘區(qū)域。還要注意,我們需要一些緩沖器來(lái)沿我們上面討論的專用路徑有效地分配時(shí)鐘信號(hào)。您可以在器件數(shù)據(jù)表中找到詳細(xì)信息,但圖 11 顯示了一個(gè)示例。該圖顯示了 Xilinx 7 系列 FPGA 的一個(gè)時(shí)鐘區(qū)域。BUFG、BUFH、BUFR是三個(gè)時(shí)鐘相關(guān)的緩沖器,如圖所示。





