- Intel FPGA權威設計指南:基于Quartus Prime Pro 19集成開發環境
- 何賓編著
- 6430字
- 2021-10-29 21:33:50
1.3 時鐘網絡和相位鎖相環
本節將介紹 Cyclone 10 GX 器件內部的時鐘網絡和相位鎖相環(Phase-Locked Loop,PLL)。
1.3.1 時鐘網絡類型
Cyclone 10 GX器件內包含以下時鐘網絡,它們按層次化結構組織。
1.全局時鐘(Global Clock,GCLK)網絡
GCLK 網絡用于功能塊(比如,ALM、DSP、嵌入存儲器和 PLL)的低偏移時鐘源。Cyclone 10 GX器件中的I/O元件(I/O Element,IOE)和內部邏輯也能驅動GCLK創建內部生成的全局時鐘與其他高扇出信號,如同步或異步清除和時鐘使能信號。
Cyclone 10 GX器件提供GCLK可以穿越整個器件,如圖1.35所示為10CX220YU484 E5G 的全局時鐘網絡。GCLK 涵蓋器件中的每個 SCLK 主干區域,如圖 1.36 所示為10CX220YU484E5G 的主干時鐘網絡。每個 GCLK 都可以通過符號 GCLK 網絡圖中指示的方向訪問。
通過將時鐘輸入到這些專用時鐘引腳中的一個或 Quartus 分配工具分配全局布線,就可以利用用于時鐘信號的可用專用布線資源。

圖1.35 10CX220YU484E5G的全局時鐘網絡

圖1.36 10CX220YU484E5G的主干時鐘網絡
在專用集成電路(Application Specific Integrated Circuit,ASIC)設計中,設計者必須平衡分布于器件的時鐘延遲。由于Intel FPGA提供了器件寬度的全局時鐘布線資源和專用集成電路的輸入,無須手工平衡時鐘網絡上的延遲。
將設計中的時鐘數量限制到FPGA內可用的專用全局時鐘資源范圍內。時鐘饋送不使用全局布線的多個位置,可能使器件會出現時鐘偏移從而導致時序問題。此外,使用組合邏輯產生內部時鐘也會增加時鐘路徑上的延遲。時鐘線上的延遲可能導致時鐘偏移大于兩個寄存器之間的數據路徑長度。如果時鐘偏移大于數據延遲,則違反寄存器的時序參數(如保持時間要求),導致設計運行不正確。
FPGA 提供的低偏移全局布線資源用以分配高扇出的信號。這些資源有助于實現具有多個時鐘域的大型設計。
很多大型 FPGA 器件提供專用的全局時鐘網絡、區域時鐘網絡和專用的快速區域時鐘網絡。這些網絡被組成分層時鐘結構,允許器件內存在多個低偏移和延遲的時鐘。通常,有幾個專用時鐘引腳用于驅動全局或區域時鐘網絡,PLL 輸出和內部時鐘都可以驅動各種時鐘網絡。
注意,Stratix 10 器件有更新的架構。設計者可以配置該器件的時鐘資源,以創建不同大小的高效率的平衡時鐘樹,范圍為從單個時鐘扇區到整個器件。默認,Quartus 軟件會自動確定時鐘樹的大小和位置。此外,設計者可以通過時鐘域分配或邏輯鎖定區域來直接約束時鐘樹的大小和位置。
為了減少給定時鐘域中的時鐘偏移并確保在該時鐘域中滿足保持時間,將每個時鐘信號分配給 FPGA 內的全局高扇出、低偏移時鐘網絡中的一個。Quartus 軟件自動將全部布線資源分配給高扇出的控制信號、PLL 輸出和饋送器件上的全局時鐘引腳。為了引導軟件將全局布線資源分配給一個信號,在Assignment Editor中展開Global Signal選項。

注
全局信號分配只能控制是否使用指定的專用資源來提升信號,但是不控制使用哪個資源或使用多少資源。
為了充分利用設計中的布線資源,請確保時鐘信號源(輸入時鐘引腳或內部生成的時鐘)僅用于驅動寄存器的輸出端口。在 Intel 較舊的器件中,如果時鐘信號送到了一個寄存器的數據端口,信號就不能使用專用布線,這將導致性能下降和時鐘偏差問題。通常,允許時鐘信號驅動寄存器的數據端口不被認為是同步設計,并且可能使時序收斂復雜化。
2.區域時鐘(Regional Clock,RCLK)網絡
RCLK網絡為單個RCLK區域內的邏輯提供低時鐘插入延遲和偏移。Cyclone 10 GX器件的IOE和給定區域內的內部邏輯也可以驅動RCLK,以創建內部生成的區域時鐘和其他高扇出信號。
Cyclone 10 GX 器件提供 RCLK,它能穿越芯片的水平方向驅動,如圖 1.37 所示為10CX220YU484E5G的區域時鐘網絡。RCLK覆蓋器件內同一行中的所有SCLK主干區域。

圖1.37 10CX220YU484E5G的區域時鐘網絡
3.外設時鐘(Periphery Clock,PCLK)網絡
外設時鐘網絡由小外設時鐘網絡(Small Periphery Clock,SPCLK)網絡和大外設時鐘(Large Periphery Clock,LPCLK)網絡構成。
PCLK網絡提供了最低的插入延遲和與RCLK網絡相同的偏移。
(1)每個高速串行接口(High-Speed Serial Interface,HSSI)或I/O組有12個SPCLK。SPCLK 覆蓋 HSSI 組中的一個 SCLK 主干區域,以及同一行中彼此相鄰的 I/O 組中的一個SCLK主干區域,如圖1.38所示為10CX220YU484E5G的小外設時鐘網絡。
(2)每個HSSI或I/O組有2個LPCLK。與SPCLK相比,LPCLK有更大的網絡覆蓋空間,如圖1.39所示為10CX220YU484E5G的大外設時鐘網絡。LPCLK覆蓋HSSI組中的一個SCLK主干區域和同一行中彼此相鄰的I/O組中一個SCLK主干區域。

圖1.38 10CX220YU484E5G 的小外設時鐘網絡

圖1.39 10CX220YU484E5G 的大外設時鐘網絡
1.3.2 時鐘資源功能
Cyclone 10 GX器件內的時鐘資源如表1.16所示。
表1.16 Cyclone 10 GX器件內的時鐘資源

續表

續表


圖1.40 Cyclone 10 GX 器件的I/O分配界面
1.3.3 層次化時鐘結構
Intel Cyclone 10 GX器件的三級時鐘網絡層次如圖1.42所示。

圖1.41 10CX220YU4845G版圖中HSSI時鐘引腳的布局位置(左下角)

圖1.42 Cyclone 10 GX器件的三級時鐘網絡層次
每個 HSSI 列和 I/O 列包含時鐘驅動器,如圖 1.43 所示為 10CX220YU4845G 版圖中HSSI列和I/O列的布局,用于將共享總線驅動到相對應的GCLK、RCLK和PCLK網絡。
在每個時鐘鏈接到時鐘布線用于每個HSSI和I/O組之前,Cyclone 10 GX器件的時鐘網絡(GCLK、RCLK 和 PCLK)通過 SCLK 布線。SCLK 的設置是透明的。根據 GCLK、RCLK 和 PCLK 網絡,Quartus 軟件自動布線 SCLK。每個 SCLK 主干都具有一致的高度,與HSSI和I/O組相匹配。在器件中,SCLK主干的個數取決于HSSI和I/O組的數量。
Cyclone 10 GX器件在一個SCLK主干區域中最多提供33個SCLK網絡。SCLK網絡可以在每個行時鐘區域中驅動6個行時鐘。行時鐘是器件核心功能塊、PLL、I/O接口和HSSI接口的時鐘源。6 個信號能布線到每個行時鐘區域。驅動每個 SCLK 的多路選擇器的連接模式將時鐘源限制為SCLK主干區域。每個SCLK可以從GCLK、RCLK、LPCLK或SPCLK線中選擇時鐘資源。
圖1.44給出了每個SCLK主干區域中由GCLK、RCLK、PCLK或GCLK和RCLK反饋時鐘網絡驅動的 SCLK。GCLK、RCLK、PCLK,以及 GCLK 和 RCLK 的反饋時鐘共享相同的 SCLK 布線資源。為了確保 Quartus 成功實現適配,時鐘資源總數不要超過每個SCLK主干區域的SCLK限制。

圖1.43 10CX220YU4845G版圖中HSSI列和I/O列的布局

圖1.44 SCLK主干中的層次化時鐘網絡
1.3.4 時鐘控制塊
每個GCLK、RCLK和PCLK網絡都有自己的時鐘控制模塊。時鐘控制模塊提供了下面的特性:
(1)時鐘源選擇(動態選擇僅適用于GCLK);
(2)時鐘斷電(靜態或動態時鐘使能或禁止僅適用于GCLK和RCLK)。
用于 HSSI 列的時鐘輸入引腳、PLL 計數器輸出和時鐘控制模塊輸入之間的映射如表1.17所示。用于I/O列的時鐘輸入引腳、PLL計數器輸出和時鐘控制模塊輸入之間的映射如表1.18所示。
表1.17 用于HSSI列的時鐘輸入引腳、PLL計數器輸出和時鐘控制模塊輸入之間的映射

表1.18 用于I/O列的時鐘輸入引腳、PLL計數器輸出和時鐘控制模塊輸入之間的映射

1.GCLK控制模塊
設計者可以使用內部邏輯靜態或動態地為 GCLK 選擇時鐘源,以驅動多路復用器選擇輸入,如圖1.45所示。

圖1.45 Cyclone 10 GX器件中的GCLK控制模塊
當動態選擇時鐘源時,可以選擇 PLL 輸出(如 C0 或 C1)或時鐘引腳或 PLL 輸出的組合。
通過使用Quartus軟件中的ALTCLKCTRL IP核,為GCLK網絡多路選擇器設置輸入時鐘源和clkena信號。當使用ACTCLKCTRL IP核動態選擇時鐘源時,使用CLKSELECT[0..1]信號選擇輸入。

注
只能從相同的I/O或HSSI組中切換專用時鐘的輸入。
2.RCLK控制模塊
設計者只能使用 Quartus 軟件生成的配置文件(.sof 或.pof)中的配置位設置靜態控制RCLK控制模塊的時鐘源選擇,如圖1.46所示。

圖1.46 Cyclone 10 GX器件中的RCLK控制模塊
通過在Quartus軟件中使用ALTCLKCTRL IP核,為RCLK網絡輸入時鐘源和clkena信號。
3.PCLK控制模塊
PCLK 控制模塊驅動 SPCLK 和 LPCLK 網絡。驅動 HSSI PCLK,選擇 HSSI 輸出、FPLL輸出或時鐘輸入引腳;驅動I/O時鐘,選擇DPA時鐘輸出、I/O PLL輸出或者時鐘輸入引腳。在 Cyclone 10 GX 器件中,用于 HSSI 列的 PCLK 控制模塊如圖 1.47 所示,用于I/O列的PCLK控制模塊如圖1.48所示。

圖1.47 用于HSSI列的PCLK控制模塊

圖1.48 用于I/O列的PCLK控制模塊
通過在Quartus軟件中使用ALTCLKCTRL IP核,為RCLK網絡輸入時鐘源和clkena信號。
1.3.5 時鐘功耗控制
通過靜態和動態的方法,可以給 GCLK 和 RCLK 網絡斷電。當網絡斷電時,所有由時鐘網絡控制的邏輯都進入關閉狀態,從而降低了器件的總功耗。通過 Quartus 軟件中生成的配置文件(.sof或.pof),將沒有使用的GCLK、RCLK和PCLK網絡斷電。
動態的時鐘使能或禁止特性允許內部邏輯控制 GCLK 和 RCLK 網絡的同步上電和斷電。該功能獨立于PLL,直接應用于時鐘網絡。

注
不可以動態地使能/禁止驅動 PLL 的 GCLK 或 RCLK 網絡。當工作頻率很高時,動態門控時鐘會影響芯片性能。
如果GCLK或RCLK網絡的輸出驅動PLL輸入,則不能使用時鐘控制模塊的時鐘使能和禁止電路。帶有時鐘使能和禁止電路的clkena實現如圖1.49所示。

圖1.49 帶有時鐘使能和禁止電路的clkena實現
在時鐘網絡級而不是在 PLL 輸出計數器級上支持 clkena 信號。這使得即使在不使用PLL時也可以關閉時鐘。此外,也可以使用clkena信號來控制PLL的專用外部時鐘。
一個關于時鐘網絡使用方法的Verilog HDL描述如代碼清單1-16所示。
代碼清單1-16 一個關于時鐘網絡使用方法的Verilog HDL描述


該設計是典型的異步時鐘網絡。此外,在 Quartus 的“Assignment Editor”標簽頁中,設置時鐘clk1和clk2使用的資源,如圖1.50所示。

圖1.50 “Assignment Editor”標簽頁
對該設計適配后的網表結構如圖 1.51 所示。從圖中可知,輸入時鐘經過 IO_IBUF 后傳遞給 CLKCTRL,然后送給觸發器的時鐘輸入端 CLK。clk2 使用的 CLKCTRL 塊如圖 1.52所示,clk1使用的CLKCTRL塊如圖1.53所示。

圖1.51 異步時鐘網絡適配后的網表結構

圖1.52 clk2使用的CLKCTRL塊

圖1.53 clk1使用的CLKCTRL塊
1.3.6 相位鎖相環
PLL為器件時鐘管理、外部系統時鐘管理和高速I/O接口提供強大的時鐘管理與綜合。Cyclone 10 GX器件包含兩類PLL:
(1)FPLL,可用作小數PLL或整數PLL;
(2)I/O PLL,只能用作整數PLL。
FPLL位于HSSI 組中收發器塊的附近。每個HSSI組包含兩個FPLL。設計者在傳統的整數模式或者小數模式下可以獨立配置每個FPLL。在小數模式下,FPLL可以使用三階Δ-∑調制。每個FPLL有4個C計數器輸出和一個L計數器輸出。
I/O PLL位于I/O組中的硬件存儲器控制器和LVDS串行化器/解串行化器(SERDES)塊的附近。每個I/O組包含一個I/O PLL。I/O PLL能工作在傳統的整數模式。每個I/O PLL有 9 個 C 計數器輸出。在一些指定的器件封裝中,可以在 I/O 組中使用未在設計中綁定的I/O PLL。這些I/O PLL必須從FPGA核或者通過同一I/O列中另一個I/O PLL的專用級聯連接來獲取其參考時鐘源。
1.PLL特性
Cyclone 10 GX器件具有最高密度的6個FPLL和6個I/O PLL。Cyclone 10 GX器件的PLL如表1.19所示。
表1.19 Cyclone 10 GX器件的PLL特性

續表


注
(1)提供的輸入時鐘抖動在輸入抖動容限規范。
(2)最小相移由 VCO 周期除以 4(對于 FPLL)或 8(對于 I/O PLL)確定。對于度數增量,Cyclone 10 GX器件可以以至少45°(對于I/O PLL)或90°(對于FPLL)的增量移動所有輸出頻率。根據頻率核分頻因子,較小的角度增量是可能的。
2.PLL架構
FPLL經過優化,可用作收發器發送PLL和合成參考時鐘頻率,其架構如圖1.54所示。可以按下面方式使用它:
(1)減少電路板上所需振蕩器的數量;
(2)通過從單個參考時鐘源合成多個時鐘頻率,減少FPGA中使用的時鐘引腳;
(3)補償時鐘網絡延遲;
(4)用于收發器的發送時鐘。
I/O PLL經過優化,用于存儲器接口和LVDS SERDES,其架構如圖1.55所示。可以按下面方式使用它:
(1)減少電路板上所需的振蕩器數量;
(2)通過從單個參考時鐘源合成多個時鐘頻率,減少FPGA中使用的時鐘引腳;
(3)簡化外部存儲器接口和高速LVDS接口的設計;
(4)由于I/O PLL與I/O緊密耦合,因此可以簡化時序收斂;
(5)補償時鐘網絡延遲;
(6)零延遲緩沖。

圖1.54 Cyclone 10 GX器件內FPLL的架構
時鐘反饋模式補償時鐘網絡延遲,使 PLL 時鐘輸入上升沿與時鐘輸出的上升沿對齊。在設計中,選擇用于時序關鍵時鐘路徑的補償類型。
當然,并不是總是需要 PLL 補償。除非確定需要補償,否則應將 PLL 配置為直接(無補償)模式。直接模式可提供最佳的 PLL 抖動性能,避免對補償時鐘資源不必要的消耗。默認,時鐘反饋模式是直接補償模式。
3.控制信號
復位信號可以用來控制PLL的工作和重同步,使用鎖定信號用于觀察PLL的狀態。
1)復位
器件的輸入引腳或者內部的邏輯能夠驅動這些輸入引腳。當復位信號為高電平時,復位PLL計數器、清除PLL的輸出,并且將PLL設置為失鎖狀態。VCO返回它正常的設置。當復位信號為低時,PLL重新同步到它的輸入時鐘源。
每次 PLL 失鎖時,都必須置位復位信號,以保證 PLL 輸入和輸出時鐘之間正確的相位關系。通過Quartus參數編輯器,在出現失鎖條件后,設置PLL自動復位。
在下面條件下,必須包含復位條件:
(1)PLL重配置或者使能切換時鐘;
(2)在失鎖條件后,必須保證PLL輸入和輸出時鐘的相位關系。

注
(1)如果 FPGA 轉換到用戶模式時 PLL 的輸入時鐘沒有切換或不穩定,則在輸入時鐘穩定且符合規范后復位PLL,即使啟用了自復位功能。
(2)在重新配置PLL或者外部時鐘源后PLL無法鎖定到參考時鐘,則在輸入時鐘穩定且符合規范后復位PLL,即使啟用了自復位功能。
(3)對于 FPLL,當器件上電后,必須在 FPLL 上電校準過程完成后復位FPLL(pll_cal_busy信號無效)。
2)鎖定
鎖定檢測電路為內核邏輯提供信號,該信號指示反饋時鐘在相位和頻率上鎖定到參考時鐘。

圖1.55 Cyclone 10GX 器件內I/OPLL的架構
4.計算公式
在整數模式下,Cyclone 10 GX器件的PLL輸出頻率與其輸入參考時鐘源的比例因子為M/(N×C)。輸入時鐘除以預標定因子 N,然后乘以反饋因子 M,控制回路驅動壓控振蕩器(Voltage Controlled Oscillator,VCO)以匹配 fin× (M/N)。
Quartus軟件會根據提供給I/O PLL IP核的輸入頻率、乘法和除法值,自動選擇合適的比例因子。
1)預標定計數器N和乘法計數器M
每個PLL有一個預標定計數器N和一個乘法計數器M。計數器M和N不使用占空比控制,因為這些計數器的唯一目的是計算分頻。
2)后標定計數器C
每個輸出端口有一個唯一的后標定計數器 C。對于具有不同頻率的多個后標定計數器 C輸出,VCO設置為輸出頻率的最小公倍數,它滿足頻率規范。例如,如果來自一個I/O PLL所要求的輸出頻率為55MHz和100MHz,則Quartus軟件將VCO設置為1.1GHz(VCO工作頻率范圍內 55MHz 和 100MHz 的最小公倍數)。然后,后標定計數器 C 縮小每個輸出端口的VCO頻率。
3)后標定計數器L
FPLL有一個額外的后標定計數器L。后標定計數器L使用M/(N×L)標定因子合成來自它時鐘源的頻率。后標定計數器 L 產生一個差分時鐘對(0°和 180°)并且驅動 HSSI 時鐘網絡。
4)Δ-∑調制器
Δ-∑調制器(Delta-Sigma Modulator,DSM)與乘法計數器M一起使FPLL能夠以分數模式操作。DSM 基于周期到周期來動態地改變乘法計數器 M 因子。不同的乘法計數器 M因子允許“平均”乘法計數器M因子為一個非整數。
5)小數模式
在小數模式中,乘法計數器 M 的值等于 M 反饋因子和小數值之和。小數值等于K/232,其中K是0~(232-1)之間的一個整數。
6)整數模式
對于運行在整數模式的FPLL,M是一個整數值并且禁用DSM。I/O PLL只能工作在整數模式。
7)相移
可編程的相移允許FPLL和I/O PLL產生帶有固定相移的輸出時鐘。PLL的VCO頻率決定了相移的精度。最小的相移增量是VCO周期的1/8(對I/O PLL)或1/4(對FPLL)。例如,如果I/O PLL的VCO頻率為1000MHz,125ps的相位步進是可能的。
根據設計者在IP核內所輸入用戶指定的相移值,Quartus軟件自動調整VCO頻率。
8)占空值
可編程占空比功能允許I/O PLL以可變占空比生成時鐘輸出。僅有I/O PLL后標定計數器C支持該功能,FPLL不支持可編程的占空比特性,只有固定的50%占空比。
I/O PLL C 計數器的值決定了占空比的精度。精度為 50%除以后標定計數器的值。例如,如果C0 計數器是10,對于5%~90%范圍內的占空比,步長為5%是可能的。如果 I/O PLL是外部反饋模式,則設置驅動fbin引腳的計數器的占空比為50%。
根據在IO PLL IP核參數編輯器中所輸入要求的占空比,Quartus軟件自動調整VCO頻率。此外,將可編程占空比與可編程相移進行組合,可以生成精確的非重疊時鐘。
5.PLL級聯
Cyclone 10 GX 器件支持 PLL 到 PLL 級聯。PLL 級聯合成比一個 PLL 更多的時鐘頻率。如果在設計中級聯 PLL,則源(上游)PLL 必須具有低帶寬設置,而目標(下游)PLL必須具有高帶寬設置。在級聯時,源 PLL 的輸出用作目標 PLL 的參考時鐘(輸入)。級聯PLL 的帶寬設置必須不同。如果級聯 PLL 的帶寬設置相同,則級聯 PLL 可以放大某些頻率的相位噪聲。
Cyclone 10 GX器件僅支持I/O PLL到I/O PLL級聯應用。在該模式下,上游I/O PLL和下游I/O PLL必須位于同一I/O 列中。
Cyclone 10 GX器件的FPLL不支持核心應用的PLL級聯模式。
6.時鐘切換
時鐘切換特性允許PLL在兩個參考輸入時鐘inclk0和inclk1之間進行切換。該特性用于時鐘冗余或雙時鐘域應用,如果前一個時鐘停止運行,系統將轉向冗余時鐘。該設計可以在時鐘不再切換時自動執行時鐘切換,也可以根據用戶控制信號extswitch自動執行時鐘切換。
Cyclone 10 GX器件的PLL支持下面的時鐘切換模式,包括:
1)自動切換
時鐘檢測電路監視當前參考時鐘。如果當前參考時鐘停止切換,則參考時鐘自動切換到inclk0或inclk1時鐘。
2)手動時鐘切換
使用 extswich 控制時鐘切換信號。當 extswitch 信號脈沖保持至少 3 個時鐘周期的低電平用于切換到inclk時,PLL的參考時鐘從inclk0切換到inclk1,反之亦然。
3)帶手動覆蓋的自動切換
此模式結合了自動切換和手動時鐘切換。當 extswitch 信號變低時,它會覆蓋自動時鐘自動切換功能。只要extswitch信號為低電平,就會阻止進一步的切換操作。
一個包含兩個PLL的Verilog HDL描述如代碼清單1-17所示。
代碼清單1-17 一個包含兩個PLL的Verilog HDL描述


思考與練習1-8:對該設計處理后,在Chip Planner中觀察所使用I/O PLL和FPLL的布局。