1. 程式人生 > 其它 >【分享】 MPSoC的VCU超頻

【分享】 MPSoC的VCU超頻

目錄

1. 超頻介紹

很多晶片可以暫時超頻使用。 當然,出於良品率、長期可靠性考慮,廠家官方都不建議超頻使用。

Xilinx的器件質也能超頻。幾年前,當Zynq-7000剛面世時,通過修改PLL的設定,7020的A9的頻率被超頻到1GHz後,也能正常執行。

最近有人問到MPSoC的VCU能不能超頻。檢查Vivado裡的VCU設計後,確認通過簡單步驟,VCU也能超頻。這是黑客操作。請確保電源有足夠的供電、單板有足夠的散熱能力。超頻後,VCU已經工作在產品規格之外,工程師需要承擔器件可能損壞的責任。如果在產品中使用,一定要注意在高溫、低溫等極端情況下,是否能正常工作。

2. VCU正常設計

2.1. VCU時鐘

VCU編解碼器內部使用時鐘pll_ref_clk,所有外部AXI介面使用其它時鐘。如果調整內部時鐘pll_ref_clk,不會影響外部介面時鐘,也不會引起時序問題。所以非常方便。

VCU的訊號如下。

VCU的訊號說明。

VCU的工作時鐘一般是667MHz,由VCU自己內部的PLL產生。

2.2. Clocking Wizard配置

VCU內部時鐘pll_ref_clk來自於外部時鐘晶片si570的輸出。si570的輸出是300MHz的時鐘,進入PL後,經過一個Clocking Wizard,產生33MHz給VCU作為pll_ref_clk。

下圖展示了VCU的時鐘來源,包括從si570到Clocking Wizard的設計。

Clocking Wizard的輸入是300MHz。

Clocking Wizard的輸出是33.33MHz。

2.3. 單板時鐘

2.3.1. vivado介面屬性

PL設計中,來自於外部時鐘晶片si570的訊號是si570_user。在Vivado的屬性設定裡,聲明瞭si570_user是300MHz。

2.3.2. vivado約束

vivado約束檔案裡,也指定了si570_user的週期是3.333ns,對應的頻率是300MHz。

set_property PACKAGE_PIN AH12 [get_ports {si570_user_clk_p[0]}]
set_property IOSTANDARD LVDS [get_ports {si570_user_clk_p[0]}]

create_clock -period 3.333 [get_ports si570_user_clk_p]

3. 超頻步驟

Vivado會檢查VCU的時鐘。如果VCU的時鐘超出規格,會報錯。

超頻的核心訣竅是欺騙Vivado,向Vivado宣告一個假的時鐘頻率。比如實際輸入頻率是300MHz,我們在設計中卻告訴它是200MHz。那麼在後續的倍頻操作中,Vivado會以200MHz計算出產生667MHz的倍頻分頻係數,實際得到的頻率就是667*(300/200),也就是1000MHz。

測試時,打算把VCU的頻率超頻到933MHz。VCU的配置裡,已經把VCU的頻率,改為712MHZ。因此要把輸入頻率,降低933/712=1.310倍,也就是改為300/1.310=228.9MHz,對應的週期4.368。

3.1. vivado介面屬性

在Vivado的屬性設定裡,把si570_user的頻率,從300MHz,改為228.9MHz。

3.2. vivado約束

vivado約束檔案裡,也指定了si570_user的週期是4.368ns,對應的頻率是933MHz。

set_property PACKAGE_PIN AH12 [get_ports si570_user_clk_p]
set_property IOSTANDARD LVDS [get_ports si570_user_clk_p]

create_clock -period 4.368  [get_ports si570_user_clk_p]

4. 結論

編譯Vivado工程,更新PetaLinux工程的HDF檔案,再產生Linux檔案。單板能正常啟動,編碼4K檔案時,幀率能夠顯著提升。

最後,再次宣告,超頻後,VCU已經工作在產品規格之外,需要自己承擔器件可能損壞的責任。