zynq7020的arm cortex A9核降频实录

zynq7020的arm核默认配置下运行频率666.666Mhz;DDR3的默认频率为533.333Mhz。好端端的为啥要降频呢,答案是烫!对于只用到PL部分,或者PS部分用得少(不跑os,不做UI等)的情况,降频对于功耗、温度控制来说将是一个有效途径。

操作依据
  1. 数字芯片动态功耗 P 正比于 C*V^2 * f,C是开关等效电容、V电压、f 即开关频率,显然f降,功耗会降。

  2. zynq7000的降频相关教程目前比较少(至少我没有搜到),所以为数不多的参考依据只有看官方的英文手册了。
    手册又多又杂,首先从ug585着手,有一章节专门讲CLOCK的,大家可以去看下。这一章主要讲了PS部分的时钟逻辑树,时钟关系等,但全然没提降频或者变频一事,但反复提到要去datasheet看实际允许频率,还提到一个power management似乎和低功耗有些关联。
    在这里插入图片描述

  3. 承接ug585提到的datasheet,那么多datasheet,我想应该是指da/ac switch特性手册,我们又来到ds187-XC7Z010-XC7Z020-Data-Sheet。70多页翻上翻下,也就只有这个AC switching章节和cpu、ddr频率有点关系,但全是讲Maximum的,吹的全是极限上限频率。这仿佛在告诉我们没有下限?
    在这里插入图片描述

  4. 我们继续回到ug585,看看25.clock章节提到的24.power management,读上读下,没有太多具体操作,只是隐约告诉我们,可以进行一些操作(包括sleep mode,单CPU模式,PL关断等)来降低功耗,比较重要的两段话如下:
    在这里插入图片描述
    这告诉我们,在一些不需要极限性能的场合,可以降低APU、DDR频率来满足功耗需求。

降频操作实录

····上文,ug585的clock告诉我们了时钟关系,dc/ac开关特性高速了极限性能,power management 传达我们可以进行降频操作。但是面对下面的众多时钟具体怎么降一无所知,降了会有什么问题,也一无所知,所以我在这儿记录一下相关过程。

1. 时钟参数介绍

在这里插入图片描述
首先进入上述zynq核的advanced clocking配置界面,我们先认识一下这些参数,
Input Frequency: 输入频率,即PS部分的板载晶振频率,这里不能乱改,要根据实际晶振频率来。
CPU Clock Ratio: CPU时钟比例,有两个选项6:2:1和4:2:1, 参看ug585这是6:2:2:1,和4:2:2:1的简写,大概意思就是CPU频率和次级外设(总线等)以及外设(timer等)比例为6:2:2:1/ 4:2:2:1。ug585的原语是,一个系统性能的瓶颈可能并不总是在于APU部分,很可能在外设上,4:2:1下各级频率相比6:2:1更集中,也即CPU频率一定时(CPU_6x4x),4:2:1的cpu_1x比6:2:1的cpu_1x更高。
override clocks: 勾选了就允许自行配置,取消勾选恢复默认,这里我们勾选。
PLL Divisors :这一栏是3个时钟源的倍频因子,即33.33333M*40 = 1333.3333M

下面component栏即我们实际要操作的各项具体参数
第一列为类型没什么好说的,
第二列为clock source,一共有4个出现的源:ARM_PLL、DDR_PLL、IO PLL、External、 CPU 1X。前3个即手册上的3类clock源,External即外部源,CPU 1X为ARM_PLL的1/6或者1/4(取决于上面的CPU Clock Ratio)这一列我们也不动
第三列First Divisor,分频因子,这一列是我们操作的重点。
第四列即第二分频因子,少部分应用到,此处不动。
后两列显示实际频率和频率范围的。

2. 小试牛刀-------砍一半频率

懒得一个一个调,直接倍频因子集体砍半试试行不行。
在这里插入图片描述
导出hardware在vitis试试:
正常下载运行,flash固化成功,PL逻辑正常,即完成了只使用PL时的基本要求。
在这里插入图片描述
再加个hello world串口试试:
原设置115200下,接收乱码。
在这里插入图片描述
波特率换成一半57600串口接收正常。在这里插入图片描述
原来115200的串口速率变到57600才能匹配,应该是IO速率砍一半导致的。

当然最重要的温度,手摸感觉应该是没有那么烫了,20℃环境连续运行1小时,DDR手感微热,zynq散热盖手感比DDR略热,估摸着40摄氏度左右,但相比于600Mhz下烫手好了很多。

3.实际调节参数

····@ 1. 我的常识是CPU频率要略高于ddr频率,然后一般远高于其他外设频率.
····@ 2.上面串口波特率被砍半,可能其他外设也有这个问题,鉴于外设比较少,且一般外设频率都较低,故默认不降。
····@ 3.倍频因子不是越小越好,需要和分频因子配合出一套频率允许最低值,DDR最低允许200M,CPU应略高于200M。
如下,注意标红部分数值,其他均默认。

实际修改后,CPU频率222.222Mhz,ddr 213.333Mhz, 外设频率默认没变(qspi挺高的200M)。
在这里插入图片描述
结果,串口115200恢复正常:
在这里插入图片描述
固化到qspi-flash试试,功能正常:
在这里插入图片描述

上电一小时试试,
差不多也是温热

其他情况就不试了。

补充2022.4.10 找到一篇关于取消ddr进行固化的教程

知网论文网址
或者
网址
https://www.doc88.com/p-5029631643899.html

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐