轉載至:https://www.cnblogs.com/zuilangsanshu/p/9888608.html
FPGA芯片一般有好幾組時鍾引腳 CLK [0..N] [p,n],我的理解是:首先,時鍾必須由外部晶振通過CLK引腳輸入到FPGA的時鍾網絡,至於選用哪一組CLK,主要看FPGA哪個bank對時鍾要求最為苛刻;其次,一般用p端,n端由quartus置位三態;再次,對於簡單的系統,只有一組CLK輸入作為系統主時鍾,其他時鍾引腳空置,或者作為某些高帶載能力的時鍾的輸出口(是否可作為輸出口,要看芯片手冊);然后,復雜系統,可以有不同源的時鍾分別從不同CLK引腳輸入,只是猜想,沒實踐過,個人認為這樣不好,因為FPGA的核心就是同步;另外,不要把CLK引腳和全局時鍾、區域時鍾什么的混為一談,一個是時鍾輸入引腳,一個是內部時鍾走線;最后,CLK引腳進去的走線肯定進過優化的(H型銅皮,專用的、直達每個觸發器的布線資源),所以能做到小的抖動和偏斜,帶載能力。
- 全局時鍾:FPGA內部的專用全局時鍾布線資源,具有直達每一個觸發器的能力,且布線資源經過優化,時鍾經過它傳輸后具有高扇出、最小的偏斜和抖動等。但也因為是全局布線相較於區域時鍾,會有較大的插入延時(手冊也這么說),而且資源較少(且用且珍惜)。全局時鍾網絡:1)可由CLK引腳、內部PLL、高速串口(HSSI)、普通邏輯電路產生的時鍾(一般不這么干)驅動;2)可驅動所有輸出引腳(尤其是CLK引腳,輸出作為其他芯片的基礎時鍾)、內部PLL、區域時鍾。
- 區域時鍾:只在他們自己所在的區域有效,相當於區域內的全局時鍾,在區域內,具有全局時鍾的優點,且插入延時比全局時鍾小,布線資源也比較多。區域時鍾網絡:1)可由CLK引腳(注意區域)、內部PLL、高速串口(HSSI)、普通邏輯電路產生的時鍾(一般不這么干)驅動;2)可驅動所有輸出引腳(尤其是CLK引腳,輸出作為其他芯片的基礎時鍾)、內部PLL。
******注意******
- 常規操作:外部晶振—>時鍾引腳—>PLL—>區域時鍾、各個模塊、輸出。
- 關於CLK引腳選擇:不是所有的CLK引腳都可以連接到所有的全局/區域時鍾網路。
- 關於PLL:不是所有始終都可以驅動PLL,詳見手冊。
*********************************************************************************************************
Altera 的 Cyclone IV 器件 PLL 具有時鍾倍頻和分頻、相位偏移、可編程占空比和外部時鍾輸出,進行系統級的時鍾管理和偏移控制。 Altera 的 Quartus II 軟件無需任何外部器件,就可以啟用 Cyclone IV PLL 和相關功能。本文將介紹如何設計和使用 Cyclone IV PLL 功能。PLL 常用於同步內部器件時鍾和外部時鍾,使內部工作的時鍾頻率比外部時鍾更高,時鍾延遲和時鍾偏移最小,減小或調整時鍾到輸出( TCO)和建立( TSU)時間。
Cyclone IV E 器件提供了多達 15 個專用時鍾管腳 (CLK[15..1]),以用於驅動高達 20 個GCLK 時鍾網絡和 4 個時鍾鎖相環單元(PLL)。 其中 EP4CE6 和 EP4CE10 為 2 個 PLL。
1. 時鍾網絡
GCLK 時鍾網絡驅動整個器件,並對器件各象限提供時鍾。 器件中的所有資源(I/O 單元、邏輯陣列模塊(LAB)、專用乘法器模塊以及 M9K 存儲器模塊)都能夠將 GCLK 用作時鍾資源。這些全局網絡資源可用於控制信號,例如:由外部管腳驅動的時鍾使能及清零信號。另外,內部邏輯也能夠驅動 GCLK,以用於內部生成的 GCLK 和異步清零、時鍾使能,或者其它具有高扇出的控制信號。時鍾控制模塊( Clock Control Block) 用於驅動 GCLK 網路, 它們處於芯片的頂端、底部、 左側及右側四邊, 每邊為 5 個, 共 20 個, 位於靠近 FPGA 全局時鍾的輸入腳。
時鍾輸入信號通過時鍾控制模塊后抖動和時延會被優化。 時鍾控制模塊的輸入信號可以分別為專用時鍾管腳(CLK1~15), 雙功能時(DPCLK 和 CDPCLK), PLL 的輸出和 FPGA 內部的邏輯信號。
2. PLLs
Cyclone IV E 提供了 4 個 PLLs(EP4CE6 和 EP4CE10 只有 2 個 PLLs)為設備提供強大的時鍾管理和外部系統時鍾管理及高速的 IO 通信, 通過時鍾輸入, 產生不同頻率和不同相位的時鍾信號供系統使用。
PLL 的時鍾輸入可以是 PLL 所在的 Bank 的四個時鍾輸入管腳, FPGA 內部產生的信號不能驅動 PLL。 Cyclone IV PLLs 產生的時鍾可以為單端時鍾信號或差分時鍾信號, 可以通過GCLKs 網絡直接驅動 FPGA 外部的 IO 口。每一個Cyclone IV PLL 均采用 M/(N* 后縮放計數器) 縮放因子為 PLL 輸出端口提供時鍾合成輸出。輸入時鍾由預縮放因子 N 分頻, 然后乘以反饋因子 M。控制環路驅動 VCO以匹配 fIN (M/N)。每一個輸出端口均有一個唯一的后縮放計數器,對高頻 VCO 進行分頻。對於不同頻率的多個 PLL 輸出, VCO 值是輸出頻率的最小公倍數,以滿足其頻率規格。例如,如果一個 PLL 所要求的輸出頻率是 33 和 66 MHz, 那么 Quartus II 軟件會將VCO 設置為 660 MHz(33 和 66 MHz 在 VCO 頻率范圍內的最小公倍數)。然后,后放大計數器會降低每個輸出端口的 VCO 頻率。每一個 PLL 上均有一個預縮放計數器 N 和一個乘法計數器 M,范圍從 1 到 512。由於計數器 N 僅用於計算分頻,因此該計數器不使用占空比控制。此外,每個 PLL 上有五個用於驅動 GCLK 或外部時鍾輸出的通用后縮放計數器。這些后縮放計數器的范圍從 1 到512,並具有 50% 的占空比設置。后縮放計數器的范圍從 1 到 256,具有非 50% 的占空比設置。設計所選擇的高/ 低計數值的總和,將用於給定計數器分頻值的選擇。Quartus II 軟件根據輸入到 ALTPLL 宏功能的輸入頻率、乘法和除法值來自動選擇相應的縮放因子。