三叔學FPGA系列之一:Cyclone V中的時鍾資源


 


 

之前的項目中更多的是有師兄提供經驗和幫助,追求的是快速上手,所以不管對於硬件電路設計,還是verilog電路編程,甚至是FPGA內部的資源,都沒來得及系統地學習,最近在做算法到電路的實現,正好系統學習,將感悟記於此,如有錯誤,歡迎指出、討論。

 


原創不易,轉載請轉原文,注明出處,謝謝。

 

一、關於時鍾引腳

FPGA芯片一般有好幾組時鍾引腳 CLK [0..N] [p,n],我的理解是:首先,時鍾必須由外部晶振通過CLK引腳輸入到FPGA的時鍾網絡,至於選用哪一組CLK,主要看FPGA哪個bank對時鍾要求最為苛刻;其次,一般用p端,n端由quartus置位三態;再次,對於簡單的系統,只有一組CLK輸入作為系統主時鍾,其他時鍾引腳空置,或者作為某些高帶載能力的時鍾的輸出口(是否可作為輸出口,要看芯片手冊);然后,復雜系統,可以有不同源的時鍾分別從不同CLK引腳輸入,只是猜想,沒實踐過,個人認為這樣不好,因為FPGA的核心就是同步;另外,不要把CLK引腳和全局時鍾、區域時鍾什么的混為一談,一個是時鍾輸入引腳,一個是內部時鍾走線;最后,CLK引腳進去的走線肯定進過優化的(H型銅皮,專用的、直達每個觸發器的布線資源),所以能做到小的抖動和偏斜,帶載能力

圖1  

                  圖2

圖1所示:紅圈為時鍾輸入引腳,當然,從時鍾引腳輸入的時鍾必定首先進入全局時鍾網絡,再進一步驅動區域時鍾,或者由PLL進行分/倍頻==;三個黑色方框內PLL輸出引腳,我的理解是:這幾組引腳的布線也經過了優化,可以使PLL分/倍頻后輸出的時鍾信號質量較好。

圖2所示:CLK9p作為系統唯一的外部輸入時鍾源,需要注意,單端輸入時,只有p端是與內部PLL相連的;CLK1[p,n]作為差分時鍾輸出引腳,由內部PLL驅動,輸出作為AD時鍾。

二、內部時鍾資源

全局時鍾(GCLK)網絡、區域時鍾(RCLK)網絡、外設時鍾(PCLK)(一般出現在集成了某些外設的FPGA中,個人理解)網絡

  1. 全局時鍾:FPGA內部的專用全局時鍾布線資源(圖4上),具有直達每一個觸發器的能力,且布線資源經過優化,時鍾經過它傳輸后具有高扇出、最小的偏斜和抖動等。但也因為是全局布線相較於區域時鍾,會有較大的插入延時(手冊也這么說),而且資源較少(且用且珍惜)。全局時鍾網絡:1)可由CLK引腳、內部PLL、高速串口(HSSI)、普通邏輯電路產生的時鍾(一般不這么干)驅動;2)可驅動所有輸出引腳(尤其是CLK引腳,輸出作為其他芯片的基礎時鍾)、內部PLL、區域時鍾。
  2. 區域時鍾:只在他們自己所在的區域有效(圖4下),相當於區域內的全局時鍾,在區域內,具有全局時鍾的優點,且插入延時比全局時鍾小,布線資源也比較多。區域時鍾網絡:1)可由CLK引腳(注意區域)、內部PLL、高速串口(HSSI)、普通邏輯電路產生的時鍾(一般不這么干)驅動;2)可驅動所有輸出引腳(尤其是CLK引腳,輸出作為其他芯片的基礎時鍾)、內部PLL。
  3. 外設時鍾:沒用到,查手冊。

圖3 

 

圖4

         ******注意******

  1. 常規操作:外部晶振—>時鍾引腳—>PLL—>區域時鍾、各個模塊、輸出(待驗證和完善,我也迷)
  2. 關於CLK引腳選擇:不是所有的CLK引腳都可以連接到所有的全局/區域時鍾網路,見圖5。
  3. 關於PLL:不是所有始終都可以驅動PLL,詳見手冊,如圖6所示。

 

圖5

 

圖6      

三、時鍾資源的使用、分配

20181101提出

  • 疑問:編寫邏輯電路,或者布局布線時,我怎么知道某個時鍾具體使用了哪種、哪個網絡?以及怎么人為地控制使用具體某個網絡?

20181102補充

  • 除非是時鍾資源(尤其是全局時鍾資源)緊張,或者需要進行時序優化,否則,一般不用過於關心這些資源怎么使用的,quartus會根據電路邏輯,自動選擇最優的布局布線。
  • 實際上,根據硬件電路和邏輯電路,也能推斷出用了多少全局時鍾、區域時鍾。
  • 比如:clk0=50MHz,然后它在幾個always中都被用到,而這幾個always占用的邏輯資源分布在不同的區域,那么這個時鍾應該是全局時鍾;再比如:clk1=100MHz,它只在一個always里被使用,或使用它的邏輯資源都在一個區域,那么clk1應該是區域時鍾。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM