SylixOS 基于ZYNQ的时钟频率修改详解
admin
2023-03-16 03:41:13
0
  1. 概述

    本文档以ZYNQ7000平台为例,详细介绍如何去修改ZYNQ的时钟频率。

     

  2. 时钟频率修改流程

    ZYNQ7000的时钟频率修改流程,如图 2.1所示。具体步骤如下:

    步骤一:解除ZYNQ7000的寄存器写锁定;

    步骤二:向对应寄存器写入我们需要设置的PLL倍频值和PLL配置参数;

    步骤三:进行PLL的旁路模式转换和软件重启,使我们刚刚设置的PLL倍频值和PLL配置参数生效;

    步骤四:重新使寄存器处于写锁定状态。

    SylixOS 基于ZYNQ的时钟频率修改详解

    2.1 ZYNQ7000的时钟频率修改流程图

    ZYNQ7000的ARM_PLL_CLK时钟频率修改的具体的代码实现如程序清单 2.1所示。不同平台的解除和锁定写锁定的方式可能不同,对于ZYNQ7000平台,需要写入0xDF0D到SLCR_UNLOCK寄存器解除写锁定,写入0x767B到SLCR_LOCK寄存器可以使相关寄存器的写操作无效。

    程序清单 21 ZYNQ7000的时钟频率修改代码

/*********************************************************************************************************
** 函数名称: zynqPllFeedBackSet
** 功能描述: zynq的ARM_PLL_CLK时钟倍频设置
** 输 入  : NONE
** 输 出  : NONE
** 返  回  : NONE
*********************************************************************************************************/
VOID  zynqPllFeedBackSet (VOID)
{
    UINT32  uiClkCtrl;
    UINT32  uiFeedBackDiv;
    UINT32  uiNum;

    uiNum = read32(ZYNQ_SLCR + SLCR_LOCKSTA);
    if (0 != uiNum) {
       write32(SLCR_UNLOCK_MAGIC, ZYNQ_SLCR + SLCR_UNLOCK);             /*  写入0xDF0D,解除写锁定      */
       uiNum = 0;
    }

    /*
     * 设置ARM_PLL的倍频值
     */
    uiClkCtrl      = read32(ZYNQ_SLCR + ARM_PLL_CTL);
    uiFeedBackDiv  = uiClkCtrl &~ XZYNQ_SLCR_ARM_PLL_CTRL_PLL_FDIV_MASK;
    uiFeedBackDiv |= (SLCR_FEED_BACK_DIV_VALUE << XZYNQ_SLCR_ARM_PLL_CTRL_PLL_FDIV_OFFSET);
    write32(uiFeedBackDiv, ZYNQ_SLCR + ARM_PLL_CTL);

    /*
     * 设置ARM_PLL的配置参数
     */
    uiClkCtrl      = read32(ZYNQ_SLCR + ARM_PLL_CTL);
    write32(SLCR_ARM_PLL_CFG, ZYNQ_SLCR + ARM_CLK_CFG);

    /*
     * 进行PLL的旁路模式转换和软件重启,使我们刚刚设置的PLL倍频值和PLL配置参数生效
     */
    write32(SLCR_ARM_PLL_CTRL_BYPASS_FORCE | uiClkCtrl, ZYNQ_SLCR + ARM_PLL_CTL);
    write32(SLCR_ARM_PLL_CTRL_RESET | uiClkCtrl, ZYNQ_SLCR + ARM_PLL_CTL);
    read32(ZYNQ_SLCR + PLL_STATUS);
    write32(uiClkCtrl &~ SLCR_ARM_PLL_CTRL_RESET, ZYNQ_SLCR + ARM_PLL_CTL);
    write32(uiClkCtrl &~ SLCR_ARM_PLL_CTRL_BYPASS_FORCE, ZYNQ_SLCR + ARM_PLL_CTL);

    if (0 == uiNum) {
        write32(SLCR_LOCK_MAGIC, ZYNQ_SLCR + SLCR_LOCK);                /*  写入0x760B,打开写锁定      */
        uiNum = 1;
    }
}




  1. PLL的频率设置

    ZYNQ7000的时钟频率设置的参数列表,如图 3.1所示。其中PLL_FDIV为PLL的倍频值,PLL CP、PLL RES、LOCK CNT为PLL的配置参数。

    SylixOS 基于ZYNQ的时钟频率修改详解

    SylixOS 基于ZYNQ的时钟频率修改详解

    3.1 PLL频率的参数设置列表

  2. 免责声明

    内部交流文档,仅针对ZNYQ相关平台,若发现相关错误或者建议,请及时联系文档创建者进行修订和更新。

上一篇:weblogic部署war

下一篇:jdk1.8新特性

相关内容

热门资讯

ICC逮捕令致内塔尼亚胡出行受... 【环球网报道】据以色列《新消息报》网站26日报道,由于国际刑事法院(ICC)2024年就以色列在巴勒...
“罗永浩怒斥电视机厂商”戳中了... 7月25日晚,罗永浩发文怒斥当下电视机的产品设计。据都市快报报道,罗永浩表示,他为家中老人换了两次电...
各地各部门坚持人民至上筑牢防汛... 新华社北京7月25日电 题:风雨同舟映初心——各地各部门坚持人民至上筑牢防汛抗洪坚实堤坝新华社记者当...
法院回应LV起诉地产开发商 7月26日,厦门市湖里区人民法院发布情况通报,网传案情“路易威登公司起诉地产开发商,因楼盘外立面四叶...
携程的问题不仅在于垄断,更在于... 国内平台科技企业一般都是通过向B端收费、抽佣获利,尽量给消费者创造一个比较清爽的使用环境。携程算是最...
海信电视用遥控器关闭后打不开 原因可能是遥控器的电池没有装好或者是没电了,需要重新安装一下电池或者更换新的电池试一试;原因可能是电...
电视机突然没电源打不开了 有可能是电视开关的电源线断了;可能是电视在使用时短路;可能是电源插头插座松动;可能是电视内部零件接触...
电热水器下面那个小龙头漏水是怎... 电热水器下面那个小龙头漏水是怎么回事?1、因为安全阀发生了故障或者是已经被损坏了,就会有漏水的现象;...
回答下电脑桌面一片空白怎么恢复 电脑桌面上如果是一片空白,那说明您的电脑图标被隐藏了,想要恢复就要按照如下的三个步骤去操作才行。 第...
澳总理要找特朗普“理论”关税:... 当地时间7月26日,澳大利亚总理阿尔巴尼斯表示,他将直接向美国总统特朗普提出抗议,反对美国新近宣布的...