晶振:其作用是产生原始的时钟频率,这个频率经过频率发生器的倍频或分频后就成了电脑中各种不同的总线频率;其本身不振荡但和外电路产生谐振。
一般来讲系统都会有2个锁相环。这里就拿三星的S3C2440来作为例子吧。S3C2440有2个锁相环(PLL--- phase locked loop),一个是MPLL,一个是UPLL;MPLL用于CPU及其他外围器件。UPLL用于USB提供48MHz.外部时钟源,经过MPLL处理后能够得到三种不同的系统时钟。他们分别是FCLK,HCLK,PCLK三种频率,这三种频率分别有不同的用途。
FCLK是为CPU提供时钟信号,主频时钟,用于ART920T内核。
HCLK是为AHB总线提供的时钟信号,主要用于高速外设,比如内存控制器,中断控制器,LCD控制器,DMA以及USB主模块等。
PCLK是为APB总线提供的时钟信号,主要用于低速外设,比如看门狗,UART控制器,IIS,I2C,SDI/MMC,GPIO,RTC and SPI。
当系统上电或者复位时后,MPLL就可以工作,但此时MPLL的值并不是系统时钟,因为此时MPLL寄存器还没初始化,还是个无效的值,所以系统选择外部时钟晶振作为系统时钟。因此系统上电及复位后,必须向MPLL寄存器写入一个值,尽管这个值可能就是寄存器中的旧值。
LOCKTIME寄存器:用于设置MPLL启动后稳定前所需等待的时间(Lock time),一般使用默认值。
MPLLCON/UPLLCON寄存器设置:MDIV 主频控制位,PDIV 预分频控制位,SDIV 后分频控制位
Mpll(FCLK) = (2 * m * Fin)/(p*2s)
Upll = (m * Fin)/(p*2s)