新聞中心

S3C2443時鐘管理

作者: 時間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
S3C2443有兩個PLL用來產(chǎn)生內(nèi)部時鐘,分別是MPLL和EPLL,其中MPLL為包括ARM,AHB和APB的總體功能模塊產(chǎn)生內(nèi)部時鐘,而EPLL為比如是USB,I2S和camera等這些具體的模塊產(chǎn)生時鐘,我們可以通過軟件編程來控制這個兩個PLL的工作頻率,可以關(guān)閉和開啟內(nèi)部時鐘源來減少功耗

本文引用地址:http://m.butianyuan.cn/article/201611/316686.htm

1.MPLL和EPLL時鐘源的選擇

從上圖可知主要的時鐘源來之外部晶振(XTI)或者外部時鐘(EXTCLK),時鐘產(chǎn)生器由MPLL和EPLL組成,這兩個PLL的作用是可以產(chǎn)生S3C2443所需要的高頻時鐘信號。由OM[0]來決定MPLL是選擇XTI還是EXTCLK來作為時鐘源,而OM[0]是由硬件設(shè)計來確定,下圖是我們項目OM[0]的設(shè)計部分:

在此設(shè)計中,OM[0]=1,根據(jù)下表

可知MPLL的時鐘源是由XTI提供,如下圖所示:

由上面左圖可知EXTCLK是通過0R的電阻直接接地的,所以EPLL只能選擇XTI來作為EPLL的時鐘源的,再根據(jù)下圖:

我們可知,CLKSRC[8]=0,CLKSRC[7]=X,這里X可以是0或者1,這是需要在startup.s中做相應(yīng)的設(shè)置的。

2.PLL(phase-locked-loop)

S3C2443的PLL主要由PFD(phase difference detector,相位差檢測器)、charge pump(電荷泵)、VCO(voltage controlled oscillator壓控振蕩器)和off-chip loop filter(外部環(huán)路濾波器)。

PFD:又稱為相比比較器,它的作用是檢測輸入信號和輸出信號的相位差,并將檢測出的相位差信號轉(zhuǎn)換為電壓信號輸出。

Charge pump:電荷泵轉(zhuǎn)變PFD的電壓輸出信號成一定比例的電壓值發(fā)送給VCO和off-chip loop filter。

Off-chip loop filter:PFD輸出的電壓信號,進入charge pump后,可能會有高頻雜波,通過Off-chip loop filter 可以輸出VCO需要一個穩(wěn)定的電壓,在這里,Off-chip loop filter采用典型的RC低通濾波。

VCO:輸出電壓進入VCO,引起振蕩器 頻率的變化,壓控振蕩器的輸出頻率隨其輸入電壓的改變而改變,當Fref和Fvco沒有差別的時候,電壓就會保持穩(wěn)定下來,PFD就停止輸出電壓信號給charge pump,這樣PLL系統(tǒng)時鐘就穩(wěn)定了。

3.改變PLL設(shè)置

S3C2443在平常的工作模式中,我們可以通過來寫PMS的值來改變PLL的輸出頻率,當我們通過軟件來寫PMS的值時,PLL的鎖存(lock time)被自動插入,在這個lock time期間,PLL是沒有產(chǎn)生有效的時間給S3C2443的,在lock time過后,PLL才產(chǎn)生有效和穩(wěn)定的clock給SYSCLK,見下圖。

PMS分別指的是PDIV、MDIV和SDIV,而PDIV是值PLL main divider value,MDIV是指PLL pre-divider value,SDIV是指PLL post-divider value,控制MPLL和EPLL時鐘的寄存器MPLLCON和EPLLCON否有這幾個值的定義。

4.系統(tǒng)時鐘控制

由下圖可知ARMCLK是ARM920T的內(nèi)核時鐘,也是S3C2443的CPU時鐘;HCLK是內(nèi)部AHB bus和比如是內(nèi)存控制器、中斷控制器、LCD控制器等外圍設(shè)備的基準時鐘;PCLK是內(nèi)部APB bus和比如是WDT、IIS、I2C等外圍設(shè)備的基準時鐘;DDRCLK是MDDR內(nèi)存的data strobe時鐘。

4.1 MPLL的時鐘控制

從上圖可知,MSysClk是ARMCLK、HCLK、PCLK、DDRCLK這些時鐘的基準時鐘,而ARMCLK、HCLK、PCLK、DDRCLK這些時鐘到底有什么關(guān)系呢,通過對CLKDIVO控制寄存器的設(shè)置可以得到它們之間不同的比值關(guān)系,見下表

4.2 EPLL的時鐘控制

從上圖可知EPLL的時鐘ESYSCLK被用作不同的外圍控制器提供基準時鐘,通過divider的分頻可以得到不同外圍控制所需要的時鐘,而這個分頻值是通過對CLKDIV1寄存器的配置來實現(xiàn)的,也可以通過編程SCLKCON寄存器來關(guān)閉或者開啟不同外圍控制器的時鐘。

在stop和sleep模式,EPLL將被自動關(guān)閉,在退出stop和sleep模式的時候,如果SCLKCON寄存器中相關(guān)位被使能的情況下,那么EPLL將為使能的外圍控制器產(chǎn)生時鐘。

5. 上電復(fù)位PLL時鐘的啟動流

在電壓源提供所需要的電壓給系統(tǒng)上電復(fù)位后,晶體振蕩器在幾毫秒之內(nèi)起振,剛開始的時候MPLL和EPLL都是停止的。當nRESET在晶振時鐘穩(wěn)定后釋放(由低電平變?yōu)楦唠娖?,PLL開始是使用PLL的輸入時鐘Fin作為SYSCLK時鐘的,系統(tǒng)上電復(fù)位后,必須通過軟件來配置MPLLCON和EPLLCON使用每個PLL,也即通過寫MPLLCON和EPLLCON的PDIV、MDIV和SDIV值,接著會自動插入PLL的lock time,lock time之后,PLL的輸出時鐘Fout就是作為SYSCLK時鐘來使用了,這些動作一般是在startup.s函數(shù)中初始化的,見下圖



關(guān)鍵詞: S3C2443時鐘管

評論


技術(shù)專區(qū)

關(guān)閉