FPGA的時鐘資源
掃描二維碼
隨時隨地手機看文章
本文將回顧常見的 FPGA 資源,這些資源使我們能夠在整個系統(tǒng)中有效地生成和分配時鐘信號。
在許多情況下,我們需要生成新的時鐘信號并在整個系統(tǒng)中有效地分配它們。現(xiàn)代 FPGA 具有專用的時鐘管理模塊,使我們能夠執(zhí)行這兩項任務。
在本文中,我們將首先簡要回顧有效時鐘分配和新時鐘生成的問題。然后,我們將看到現(xiàn)代 FPGA 的時鐘管理模塊可以輕松滿足這兩個設計要求。
1 高效的時鐘分配
即使在小型數(shù)字設計中,時鐘信號也可能分布到整個系統(tǒng)的數(shù)百個時鐘元件。這些高扇出時鐘信號負責同步系統(tǒng)的不同子系統(tǒng)或組件。這就是為什么我們需要特別注意時鐘網(wǎng)絡不同路徑引入的延遲。
例如,考慮將時鐘信號從節(jié)點 A 分配到節(jié)點 B 和 C,如下面的圖 1 所示。在該圖中,時鐘信號進入FPGA,經(jīng)過緩沖器(圖中的三角形),然后到達節(jié)點B的寄存器。該路徑具有固有延遲,在波形中用Δb表示。為了將時鐘從 A 分配到 C,我們可以使用 PCB 走線而不通過 FPGA,但在圖中,F(xiàn)PGA 中分配的時鐘用于“板上的其他設備”。該路徑的延遲由Δc表示。由于 Δb 和 Δc 通常不相等,因此節(jié)點 B 的寄存器和節(jié)點 C 的設備會看到略有不同的時鐘;應該具有對齊邊沿的相同時鐘之間的這種固定時間偏移稱為時鐘偏差。我們可以看到,數(shù)字設計中的一個嚴重問題是以盡可能小的時鐘偏差在系統(tǒng)中分配高扇出時鐘信號。
2 生成新的時鐘信號
FPGA 的一個理想特性可以是修改給定時鐘信號以根據(jù)系統(tǒng)要求生成新時鐘的能力。例如,假設您設計了一塊帶有 FPGA 的電路板。假設 50 MHz 時鐘對電路板來說足夠了,但在 FPGA 中,您需要 200 MHz 時鐘來執(zhí)行特定算法。如果您能以某種方式從板上的 50 MHz 時鐘生成 200 MHz 時鐘,您就可以避免在您的系統(tǒng)中使用兩個不同的時鐘源,而且您也不必在高于所需頻率的情況下運行電路板。如果我們回想一些數(shù)字信號處理 (DSP) 應用程序是多速率的并且在算法的不同部分需要不同的時鐘頻率,我們就可以確定時鐘合成的另一個應用程序。
現(xiàn)在,讓我們看看 FPGA 的時鐘相關資源,這些資源使我們能夠生成新的時鐘信號并將其分配到整個系統(tǒng)中。
3FPGA時鐘管理資源
今天的 FPGA 集成了強大的時鐘管理模塊,以促進設計過程并降低成本。我們將這些嵌入式時鐘管理模塊稱為 CMB。不同的供應商使用不同的術語來指代他們的 CMB。例如,Xilinx 使用時鐘管理瓦片 (CMT) 或數(shù)字時鐘管理器 (DCM),Intel 使用眾所周知的術語鎖相環(huán) (PLL),Microsemi 使用時鐘調節(jié)電路。
CMB 可以通過執(zhí)行時鐘倍頻和分頻來生成新的時鐘信號。他們可能能夠將可編程相移應用于生成的時鐘,甚至可以調整時鐘的占空比。CMB 不僅可以消除分布在 FPGA 內的時鐘信號,還可以消除分布在 FPGA 外到電路板上其他設備的時鐘(例如,到達圖 1 中節(jié)點 C 的時鐘)。
可編程相移功能的一種應用是將時鐘信號與輸入數(shù)據(jù)同步。當我們處理數(shù)字信號時,我們必須在數(shù)據(jù)穩(wěn)定的時刻(最后一次數(shù)據(jù)轉換之后和下一次轉換之前)對信號進行采樣。這就是為什么一些 FPGA 為生成的時鐘的精細相移調整提供動態(tài)機制的原因。例如,Xilinx Virtex II Pro 的 CMB 可以應用 1/256 時鐘周期的相移。如果沒有這種相移能力,時鐘可能不會落在數(shù)據(jù)眼圖的中心。
具有占空比調整功能的 CMB 在需要占空比為 50% 的時鐘信號的應用中很有幫助。示例是高速通信,例如 LVDS 和雙數(shù)據(jù)速率 (DDR) 接口。如果時鐘占空比不是 50%,我們可以使用 CMB 的占空比校正功能來重塑時鐘信號,使其具有 50% 的占空比。
為了獲得這些特性,F(xiàn)PGA 使用基于鎖相環(huán) (PLL) 或延遲鎖定環(huán) (DLL) 的 CMB。除了 PLL 和 DLL,還有另一組非常重要的時鐘相關 FPGA 資源:用于在 FPGA 中分配時鐘信號的專用緩沖器和路由。這些專用緩沖器和路由使我們能夠擁有一個低偏斜的時鐘網(wǎng)絡。
在本文的其余部分,我們將首先回顧使用 PLL/DLL 實現(xiàn) CMB 的基本概念。然后,我們將了解英特爾 FPGA 所采用的低偏移時鐘網(wǎng)絡。
4基于 DLL 的時鐘校正
圖 2 顯示了用于補償時鐘分配延遲的 DLL 的基本框圖。
在這個圖中,CLKIN 是我們打算通過“時鐘分配網(wǎng)絡”分配的輸入時鐘。顧名思義,“可變延遲線”模塊為 CLKIN 引入了一個可調延遲并產(chǎn)生 CLKOUT。延遲量由“控制”邏輯決定?!翱刂啤眽K監(jiān)控其輸入并改變延遲,以便 CLKIN 和 CLKFB 兩個輸入的上升沿對齊。通過這種方式,電路補償了時鐘分配網(wǎng)絡中的延遲,理論上我們可以消除時鐘分配的偏差。
請注意,“可變延遲線”不能對 CLKIN 應用負延遲來補償“時鐘分配網(wǎng)絡”的固有延遲。那么,圖2的框圖如何消除時鐘偏差呢?關鍵在于時鐘信號 CLKIN 是周期性的。為了闡明這一點,讓我們考慮圖 1 的時鐘偏移示例。從 A 到 B 的路徑具有 Δb 延遲,因此,我們需要將 -Δb 延遲(即負延遲)應用于節(jié)點 A 的時鐘然后通過延遲 Δb 的路徑分發(fā)它。我們如何規(guī)避造成負延遲的問題?請記住,時鐘信號是一個周期性波形。假設周期為 T 。我們知道一個周期為 T 的周期函數(shù) f(t) 滿足
f(t)=f(t+T)
應用負延遲 -Δb,我們有
f(t?Δb)=f(t+T?Δb)
因此,我們可以應用 T-Δb 的正延遲,而不是應用負延遲 -Δb。如下圖 3 所示;請注意,圖 3 說明了 DLL 應用于原始時鐘信號的延遲,而圖 1 顯示了由從 A 到 B 以及從 A 到 C 的路徑引起的延遲。
5基于 PLL 的時鐘去偏斜
我們可以使用 PLL 來有效消除時鐘分配網(wǎng)絡的延遲,而不是使用 DLL。如圖 4 所示。
在這種情況下,使用“電壓控制振蕩器”代替“可變延遲線”。反饋回路調整振蕩器的頻率,使兩個時鐘信號 CLKIN 和 CLKFB 具有對齊的邊沿。
我們可以很容易地穩(wěn)定一個 DLL 的反饋回路;然而,對于 PLL,情況并非如此,因為時鐘分配網(wǎng)絡將在 PLL 的反饋環(huán)路內。這就是為什么基于 DLL 的結構更容易適用于時鐘校正應用程序的原因。另一方面,在合成新的時鐘信號時,PLL 更加靈活。
根據(jù)我們的討論,我們可以使用 FPGA 的 CLB 來消除圖 1 的時鐘分布偏移,如下面圖 5 的簡化框圖所示。請注意,CMB 不僅可以對分布在 FPGA 內的時鐘信號進行去偏斜,還可以對進入板上其他設備的時鐘進行去偏斜。
我們看到 CMB 可用于合成新的時鐘信號?,F(xiàn)在,讓我們看看另一組與時鐘相關的 FPGA 資源:可用于在 FPGA 中分配時鐘信號的專用緩沖器和路由。
6與時鐘相關的緩沖器和路由
這些資源負責分配具有低偏斜的高扇出時鐘信號。瀏覽這些緩沖區(qū)和路由的細節(jié)可能會讓人不知所措,但我們將簡要回顧一些重要的概念。為了以相等的傳播延遲將時鐘信號分配到芯片的所有部分,我們可以使用一種稱為 H 樹的特殊路由形式。您可以在圖 6 中看到一個示例。
您可以輕松驗證從 CLK-in 到每個矩形(代表時鐘元素)是否有類似的路徑。因此,理論上,所有時鐘元件將看到相同的時鐘信號。圖 7 顯示了一些英特爾 FPGA 用于分配全局時鐘信號 (GCLK) 的 H 樹。
GCLK 在整個器件中驅動,用作功能塊的低偏移時鐘源,例如自適應邏輯模塊 (ALM)、數(shù)字信號處理 (DSP) 子電路、嵌入式存儲器和 PLL。
除了 GCLK,英特爾 FPGA 中還有區(qū)域時鐘 (RCLK) 網(wǎng)絡。如圖 8 所示,這些 RCLK 僅被驅動到芯片的一個象限中。
Intel 設備還具有分布在芯片較小區(qū)域內的外圍時鐘 (PCLK) 網(wǎng)絡。下面的圖 9 顯示了一個示例。
現(xiàn)在,覆蓋所有這些網(wǎng)絡,我們得到如圖 10 所示的網(wǎng)絡。
如圖 8 和 9 所示,F(xiàn)PGA 具有僅分布在芯片的一個區(qū)域中的專用時鐘路由。這些被稱為時鐘區(qū)域。請注意,不同的設備具有不同的時鐘區(qū)域。還要注意,我們需要一些緩沖器來沿我們上面討論的專用路徑有效地分配時鐘信號。您可以在器件數(shù)據(jù)表中找到詳細信息,但圖 11 顯示了一個示例。該圖顯示了 Xilinx 7 系列 FPGA 的一個時鐘區(qū)域。BUFG、BUFH、BUFR是三個時鐘相關的緩沖器,如圖所示。