FPGA系列之一:Cyclone V中的時鐘資源
阿新 • • 發佈:2018-11-04
之前的專案中更多的是有師兄提供經驗和幫助,追求的是快速上手,所以不管對於硬體電路設計,還是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作為系統唯一的外部輸入時鐘源,圖3
圖4
******注意******
- 常規操作:外部晶振—>時鐘引腳—>PLL—>區域時鐘、各個模組、輸出(待驗證和完善,我也迷)。
- 關於CLK引腳選擇:不是所有的CLK引腳都可以連線到所有的全域性/區域時鐘網路,見圖5。
- 關於PLL:不是所有始終都可以驅動PLL,詳見手冊,如圖6所示。
圖5
圖6
三、時鐘資源的使用、分配
20181101提出
- 疑問:編寫邏輯電路,或者佈局佈線時,我怎麼知道某個時鐘具體使用了哪種、哪個網路?以及怎麼人為地控制使用具體某個網路?
20181102補充
- 除非是時鐘資源(尤其是全域性時鐘資源)緊張,或者需要進行時序優化,否則,一般不用過於關心這些資源怎麼使用的,quartus會根據電路邏輯,自動選擇最優的佈局佈線。
- 實際上,根據硬體電路和邏輯電路,也能推斷出用了多少全域性時鐘、區域時鐘。
- 比如:clk0=50MHz,然後它在幾個always中都被用到,而這幾個always佔用的邏輯資源分佈在不同的區域,那麼這個時鐘應該是全域性時鐘;再比如:clk1=100MHz,它只在一個always裡被使用,或使用它的邏輯資源都在一個區域,那麼clk1應該是區域時鐘。