【分享】 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的信号说明。

VCU的信号说明

VCU的工作时钟一般是667MHz,由VCU自己内部的PLL产生。

VCU的工作时钟

2.2. Clocking Wizard配置

VCU内部时钟pll_ref_clk来自于外部时钟芯片si570的输出。si570的输出是300MHz的时钟,进入PL后,经过一个Clocking Wizard,产生33MHz给VCU作为pll_ref_clk。

下图展示了VCU的时钟来源,包括从si570到Clocking Wizard的设计。

vivado-clock-input

Clocking Wizard的输入是300MHz。

vivado-clock-wizard-input

Clocking Wizard的输出是33.33MHz。

vivado-clock-wizard-outnput

2.3. 单板时钟

2.3.1. vivado接口属性

PL设计中,来自于外部时钟芯片si570的信号是si570_user。在Vivado的属性设置里,声明了si570_user是300MHz。

vivado-clock-input-freq

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。

vivado超频接口属性

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已经工作在产品规格之外,需要自己承担器件可能损坏的责任。

posted @ 2021-08-09 11:05  HankFu  阅读(741)  评论(1编辑  收藏  举报