PLL(Phase Locked Loop)是ADSP-BF53x的内核和时钟设置的机制,叫做锁相环。通过PLL配置当前处理器工作的内核和系统时钟。
输入时钟送给ADSP-BF53x后,通过DF设置是否对输入时钟分频,然后将根据MSEL的值对时钟进行倍频,倍频后将时钟送给VCO,由VCO根据设置的分频系数,分出内核时钟和系统时钟。
MSEL占用6Bit,最大可设置64倍倍频。通常情况下,该倍频频率不要超过芯片允许的最大频率。
内核时钟分频系数占2Bit,最大可设置8倍分频,当为00时,内核时钟等于VCO时钟。设置的内核时钟不要超过芯片允许的最高频率。
系统时钟分频系数占4bit,最大进行15倍的分频。设置的系统时钟不要超过133MHz。
寄存器 | 功能 |
PLL_DIV | PLL分频寄存器,设置系统时钟和内核时钟分频系数 |
PLL_CTL | PLL控制寄存器,设置VCO倍频系数和一些控制开关 |
PLL_STAT | PLL状态寄存器,获取芯片当前工作的状态 |
PLL_LOCKCNT | PLL计数器,用于设置计数时钟 |
*pPLL_DIV = pssel; //设置系统时钟分频系数,内核不做分频
asm("ssync;"); //系统同步
new_PLL_CTL = (pmsel & 0x3f) << 9; //将VCO倍频系数移位至需设置的位置
*pSIC_IWR |= 0xffffffff; //将系统中断唤醒使能
if (new_PLL_CTL != *pPLL_CTL) //判断是否已经配置过倍频系数
{
*pPLL_CTL = new_PLL_CTL; //配置倍频系数
asm("ssync;"); //系统同步
asm("idle;"); //将处理器设置为空闲
}
配置完PLL后,系统必须将系统设置为空闲后,系统再一次唤醒后,设置的值才会生效。
代码实现了将内核时钟配置为16倍倍频,将系统时钟配置为3倍分频。板卡上输入时钟为25MHz,所以VCO时钟配置后为25*16 =400MHz,内核时钟没有做分频,所以内核时钟等于VCO时钟,也为400MHz,系统时钟为400/3=133MHz。
运行代码后,处理器的内核时钟会运行在400MHz,系统时钟运行在133MHz。
「该帖子被 andy 在 2011-06-08 20:00:47 编辑过」