0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ZYNQ的时钟管理系统和配置方法

ZYNQ 来源:CSDN 作者:漫步的风暴 2022-11-01 09:18 次阅读

为了将ZYNQ的PS测的两个核运行频率提升到1GHZ,同时正确的配置我的时钟定时器以及时间戳,需要了解ZYNQ的时钟管理系统和配置方法。

1.ZYNQ PS侧的时钟子系统及默认配置

PS_CLK:系统晶振的时钟,这个是PS端的的时钟来源,经过一个叫PLL的锁相环功能部件,输出到ARM PLL和I/O PLL以及DDR PLL,后续的子部件均由这三个时钟源输出。

这里对于cpu的时钟源选择,由寄存器ARM_CLK_CTRL(0XF8000120)控制,该寄存器时钟源选择的描述如下:

这里cpu的时钟源可以选择是IO还是DDR还是ARM的PLL,关于CPU后续时钟的配置,cpu6x4x3x2x1x这些时钟的配置,有一张更清晰的图,如下:

这里经过选择以后,可以控制输出到arm端的分频系数,这个分频系数在13:8位,然后通过24~27位,选择是否使能cpu各个分频的时钟。

这里各个部件的时钟源都是可以选择的,比如QSPI,可以选择是IO还是DDR还是ARM的PLL,然后再去配置自己的时钟,在节能模式下,可以优化时钟的配置,达到降低功耗的目的,这里不去深究,我的目的就是正确的配置时钟。

比如我的PS_CLK是33.3MHZ,经过PLL的倍频,到了1333MHZ,然后经过6bit的可编程分频系数,也就是ARM_CLK_CTRL的13:8位,这里假设是2,这个系数只能是2,4或者更大的数,不能写1或者3.

这之后假如各个cpux的时钟都使能了,得到的结果就是cpu6x4x = 1333MHZ/2 = 667MHZ,这也是默认的CPU主频,其于依照倍数关系自然可以确认。

这里还要注意的就是有一个CLK_621_TRUE,这个是控制cpu测的各个时钟的倍频关系,如果设置为1,则倍频关系为61,否则为421关系,即41,这个默认我们都是配置621模式。

2.设置ZYNQ CPU工作在1GHZ

由上面的配置信息可知,要提高CPU的工作频率,有两个方法,第一是降低分频系数,及上图中的6bit programmable divider,这是由ARM_CLK_CTRL控制的寄存器,第二是提高前面三个的PLL输出频率,由于分频系数,一般都设置为最低的2,所以要提高cpu的频率,只有想办法提高前面PLL的输出频率,默认是输出1333MHZ,I/O是1G,DDR是1066MHZ;如下图中的配置:

这里对应的fdiv是40,有没有办法可以设置更高的fdiv,办法肯定是有的,zynq对时钟部分提供了可编程的特性,在手册中有program model的介绍,这里对fdiv有一个配置表:

各个时钟源,无论arm pll还是io pll还是ddr pll,都需要遵照这个表中的数据去配置,加入我要将arm cpu的运行频率提高为1GHZ,由于前面提到的divider是2,那么pll输出过来的频率需要为2GHZ。

由于PS_CLK为33.3,那就需要fdiv的倍频系数为60,这样可以达到,这个数值,芯片是支持的,只需要配置pll cp为2,pll res为4,lock cnt为250,那么配置这些只需要如下两个寄存器:

ARM_PLL_CTRL----0xF8000100

ARM_PLL_CFG ---- 0xF8000110

其中ARM_PLL_CTRL:

其中18:12位,就是设置fdiv的值,这个值理论上最小为1最大为66,设置60已经接近极限了,下面的几个位是用来配置的时候重启以及设置旁路模式,也需要关注一下;

ARM_PLL_CFG

这个寄存器就是需要按照上面的表,当fdiv为60的时候,pll_cp和pll_res以及lock_cnt的值填写进去。

整体配置思路如下:

设置

ARM_CLK_CTRL----0xF8000120

设置分频为2,选择arm PLL,使能各个倍频输出

ARM_PLL_CTRL----0xF8000100

设置FDIV为60

ARM_PLL_CFG ---- 0xF8000110

设置LOCK PLL_CP PLL_RES分别为250,2,4

具体过程:

step1:确认该寄存器可以解锁锁定

step2:设置以上三个寄存器

step3:将PLL设置为旁路模式

step4:重启PLL,reset置位

step5:重启PLL,reset清零

step6:设置为非旁路模式,使得pll输出工作

经过测试,我校准了udelay,测试了时间戳和sleep等接口,均准确:

CPU Freq Get Test!

cpu freq = 1000.00 Mhz

Sleep[tick] 5S:[5000.000000]ms

Sleep[timestamp] 1S:[994.901318]ms

udelay[100ms]:[100.012590]ms

udelay[100us]:[100.224000]us

CPU频率的计算公式:

cpu frequency = PS_CLK*FDIV/DIVIDER*1.0

3.定时器的时钟来源

在cortex a9的官方手册,以及zynq7000 ug585手册中,时钟定时器的来源为cpu3x2x,所以当主频改变为1GHZ的时候,cpu2x3x的频率也需要修改为499MHZ,这样系统的定时器功能才正常。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    8651

    浏览量

    361815
  • DDR
    DDR
    +关注

    关注

    9

    文章

    677

    浏览量

    64244
  • 定时器
    +关注

    关注

    23

    文章

    3147

    浏览量

    112037

原文标题:ZYNQ7000 时钟配置方法

文章出处:【微信号:ZYNQ,微信公众号:ZYNQ】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    玩转Zynq连载28——[ex50] 第一个Zynq系统工程“Hello Zynq

    Zynq,而是如何新建Zynq系统模块、配置PS的参数、导出硬件、新建软件工程并且在线板级运行起来。流程很重要,大家在开始的时候总要先走一遍流程了解开发的全貌,然后再细细把玩,逐个精
    发表于 09-30 12:57

    使用Zynq PL结构时钟驱动代码没有反应是为什么?

    错误。然后,我在SDK中编程PS端,led闪烁正确的频率!我的问题,当锁定Zynq PL时钟? PS程序之后?需要多长时间?是不是意味着,PL配置期间LED闪烁错误,在非易失性Flas Boot中编程PS期间(或之后)闪烁?谢谢
    发表于 08-27 15:09

    STM32时钟配置(超频配置

    STM32时钟配置(超频配置),时钟三种不同的时钟源可被用来驱动系统
    发表于 08-10 06:00

    配置STM32F407系统时钟方法

    STM32F4的系统时钟非常重要,涉及到整个系统的运行结果,无论是什么操作,都需要时钟信号,不同型号的微控制器的默认系统
    发表于 08-12 06:23

    系统时钟配置

    STM32学习笔记(1) —— 系统时钟配置(RCC)和研究生导师做项目,开始接触STM32。本科也接触过STM32,但是学的不够系统。现在开始系统
    发表于 08-12 06:58

    STM32F407系统时钟配置时钟方法

    STM32F407系统时钟配置时钟方法一,采用官方库提供的配置(这里外部晶振25MHz,
    发表于 08-12 08:19

    如何使用HSE配置系统时钟

    STM32入坑(六)配置RCC时钟HSE简介原理所用GPIO配置方法插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants
    发表于 12-10 07:16

    在Vivado中配置ZYNQ的Clock Configuration时,发现时钟频率不能修改

    配置ZYNQ的一些外设的时钟时,在Clock Configuration中无法修改时钟频率的解决比如,在这里,想修改QSPI的时钟频率,发
    发表于 01-18 23:08

    STM32时钟系统时钟树和时钟配置函数介绍及系统时钟设置步骤资料

    本文档的主要内容详细介绍的是STM32时钟系统时钟树和时钟配置函数介绍及系统
    发表于 10-11 08:00 22次下载
    STM32<b class='flag-5'>时钟</b><b class='flag-5'>系统</b><b class='flag-5'>时钟</b>树和<b class='flag-5'>时钟</b><b class='flag-5'>配置</b>函数介绍及<b class='flag-5'>系统</b><b class='flag-5'>时钟</b>设置步骤资料

    ZYNQ的启动原理和配置

    在ps的控制下,可以实现安全或非安全的配置所有ps和pl。通过zynq提供的JTAG接口,用户可以在外部主机的控制下对zynq进行配置zynq
    的头像 发表于 05-15 11:41 7266次阅读
    <b class='flag-5'>ZYNQ</b>的启动原理和<b class='flag-5'>配置</b>

    STM32F4_ RCC系统时钟配置及描述

    STM32F4_RCC系统时钟配置及描述
    的头像 发表于 04-07 14:24 5247次阅读
    STM32F4_ RCC<b class='flag-5'>系统</b><b class='flag-5'>时钟</b><b class='flag-5'>配置</b>及描述

    Zynq UltraScale+ MPSoC解密学习2】Zynq UltraScale+的电源系统

    目录一、电源优化方法1.1 功能禁用1.2 动态功耗管理 (Dynamic Power Management)1.3 频率缩放1.4 时钟门控1.5 使用PL加速二、四大功耗域及PMU2.1 电池
    发表于 11-06 21:06 6次下载
    【<b class='flag-5'>Zynq</b> UltraScale+ MPSoC解密学习2】<b class='flag-5'>Zynq</b> UltraScale+的电源<b class='flag-5'>系统</b>

    32单片机 时钟 HSE配置系统时钟(五)

    32单片机时钟相关知识使用HSE配置系统时钟,可以用来控制灯的亮灭快慢
    发表于 11-23 18:21 8次下载
    32单片机 <b class='flag-5'>时钟</b> HSE<b class='flag-5'>配置</b><b class='flag-5'>系统</b><b class='flag-5'>时钟</b>(五)

    STM32入坑(七)使用HSI配置系统时钟

    STM32入坑(七)使用HSI配置系统时钟简介原理用到的GPIO配置方法及程序注意事项简介名称:使用HSI
    发表于 11-26 18:51 65次下载
    STM32入坑(七)使用HSI<b class='flag-5'>配置</b><b class='flag-5'>系统</b><b class='flag-5'>时钟</b>

    如何配置SWM系列系统时钟

    如何配置SWM系列系统时钟
    的头像 发表于 09-18 16:35 415次阅读
    如何<b class='flag-5'>配置</b>SWM系列<b class='flag-5'>系统</b><b class='flag-5'>时钟</b>?