zoukankan      html  css  js  c++  java
  • C6678的PLL模块设置

    这部分讲解的是Main PLL和 PLL Controller的配置,主要介绍怎样提供DSP核 C66X CorePac需要的工作时钟;C6678除了Main PLL,还有 DDR3 PLL、PASS PLL。

    1、Keystone1架构 C6678: Main PLL and PLL Controller结构图:

    2、 CLKIN 是提供的参考时钟,即输入时钟,经过Main PLL后时钟输出为 PLLOUT,再输入到PLL Controller中,PLL Controller可以通过设置相关寄存器对输入的PLLOUT时钟进行分频,来获取多种不同频率的时钟,满足核心和外设的时钟需求,由图可以看出PLL Controller一共输出了16种不同的时钟;

    3、16种不同的时钟中,SYSCLK1时钟用来作为核C66X CorePac的工作时钟,SYSCLK1时钟频率直接等于PLLOUT,不进行分频,所以C66X CorePac的工作时钟直接等于PLLOUT;其它时钟都具有不同的分频系数,其中只有PLLDIV2、PLLDIV5、PLLDIV8三个分频系数可以通过寄存器进行调整,其它的分频系数都是固定的;这些时钟的具体作用参考data manual;

    4、如何设置核C66X CorePac的工作时钟?例如:输入时钟为100MHZ,怎样设置核C66X CorePac的工作时钟为1000MHZ,即核的工作时钟为输入参考时钟的10倍?

    (1)、核C66X CorePac的工作时钟为SYSCLK1,即等于PLLOUT;当MAIN PLL工作在Bypass Mode时,PLLOUT的值直接等于输入的参考时钟CLKIN;当MAIN PLL工作在PLL Mode时,PLLOUT的值由输入时钟CLKIN、Main PLL的分频系数PLLD、倍增系数PLLM、以及OUTPUTDIVIDE值共同决定,公式如下:

      对于Keystone1架构的芯片,OUTPUTDIVIDE值默认为1,而Keystone2架构的芯片,OUTPUTDIVIDE值默认为0,OUTPUTDIVIDE值通过寄存器SECCTL[22:19]来设置;
      PLLM的值一共有13位,PLLM[12:0],13位被分成两个部分,高位部分PLLM[12:6]由寄存器MAINPLLCTL0[18:12]决定,低位部分PLLM[5:0]由寄存器PLLM[5:0]决定;PLLD的值由寄存器MAINPLLCTL0[5:0]决定;寄存器的具体地址和设置,参考专门介绍PLL的数据手册;
    (2)、当输入参考时钟为100MHZ时,设置核C66X CorePac的工作时钟SYSCLK1为1000MHZ,即PLLOUT等于1000MHZ:
      根据公式设置OUTPUTDIVIDE值为1,PLLM值为19,PLLD值为0,则PLLOUT等于1000MHZ;另外寄存器的设置要满足公式:BWADJ = ((PLLM + 1)>> 1)- 1;BWADJ[11:0]的值由两部分决定,一部分BWADJ[11:8]由寄存器MAINPLLCTL1[3:0]决定,另一部分BWADJ[7:0]由寄存器MAINPLLCTL0[31:24]决定;
      一般PLLM[12:6]都设为0,所以PLLM的值一般由PLLM[5:0]决定,即由寄存器MAINPLLCTL0[5:0]决定;C6678的PLL设置例程很多,可以参考例程代码;
  • 相关阅读:
    一行代码解析复杂JSON文件:利用Android自带的包解析JSON
    人生的真相
    为我的外婆写上我的挽歌
    总结2016 展望2017
    [转贴]使用CryptoAPI解析X509证书和P12证书
    2015这一年的进步
    怎样在WINDOWS下面编译LIBCURL
    LINQ TO SQL 怎样 执行存储过程并返回存储过程的临时表
    C调用OPENSSL做REST服务客户端的例子
    一个CLI的 的例子
  • 原文地址:https://www.cnblogs.com/warmbeast/p/8395241.html
Copyright © 2011-2022 走看看