新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM系列之時鐘模塊詳述及其分頻系數(shù)的設(shè)定

ARM系列之時鐘模塊詳述及其分頻系數(shù)的設(shè)定

作者: 時間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
S3C2440的時鐘控制單元可以產(chǎn)生如下的時鐘信號:FCLK FOR CPU, HCLK FOR AHB BUS(高速設(shè)備,比如內(nèi)存控制器、中斷控制器、LCD控制器、DMA以及USBhost), PCLK FOR APB BUS(低速設(shè)備,比如WTG、I2C,SDI/MMC,GPIO,RTC,UART,PWM,ADC,SPI)和用于USB的UCLK,共四種分頻率,前三種共用一個PLL。 S3C2440有兩個PLL, 一個用于FCLK,HCLK,和PCLK,叫做MPLL; 而另一個用于USB模塊(固定48MHz),叫做UPLL。時鐘控制邏輯還可以沒有PLL來降低時鐘或者不使每個外設(shè)連接到時鐘以降低電源能耗。

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

-------------------------------------o---------------------------------------------------------


關(guān)于時鐘源選擇的問題,主要時鐘源一個來自于外部晶振(XTlpll),一個來自于外部時鐘(EXTCLK)。時鐘發(fā)生器包括一個連接到外部晶振的振蕩器和兩個鎖相環(huán)(PLL)。 時鐘源的選擇可以通過芯片引腳的狀態(tài)進行配置,即芯片的OM3和OM2引腳。具體分配情況如下表所示:(原理圖中已經(jīng)將OM3和OM2都接地,即00的情況,用的是外部晶振,而且晶振頻率為12MHz)。.



---------------------------o-----------------------------------------------------


具體分頻寄存器設(shè)置時序如下圖所示:(盡管MPLL在系統(tǒng)復(fù)位的時候就開始產(chǎn)生,但是只有有效的設(shè)置好MPLLCON寄存器后才能用于系統(tǒng)時鐘。在此之前,外部時鐘將直接作為系統(tǒng)時鐘。即使不需要改變MPLLCON寄存器的初值,也必須將同樣的值寫入寄存器。設(shè)置完成后,經(jīng)過LOCKTIME的時間,設(shè)置的分頻才能起效果。)


如上圖所示,F(xiàn)CLK的啟動過程:


1、上電幾毫秒后,晶振輸出穩(wěn)定,F(xiàn)CLK=晶振頻率,nRESET信號恢復(fù)高電平后,CPU開始執(zhí)行指令。


2、我們可以在程序開頭啟動MPLL,在設(shè)置MPLL的幾個寄存器后,需要等待一段時間(Lock Time),MPLL的輸出才穩(wěn)定。在這段時間(Lock Time)內(nèi),F(xiàn)CLK停振,CPU停止工作。Lock Time的長短由寄存器LOCKTIME設(shè)定。


3、Lock Time之后,MPLL輸出正常,CPU工作在新的FCLK下。LOCKTIME默認時間為200us。



-----------------------------------------o-------------------------------------------------


時鐘分頻流程如下圖所示:(Fin默認為外部晶振時鐘頻率,12MHz。)


位于時鐘信號發(fā)生器的內(nèi)部MPLL用于將輸出信號和相關(guān)輸入信號在相位和頻率上同步起來。包括上圖所示的一些基本模塊:根據(jù)DC電壓產(chǎn)生相應(yīng)比例關(guān)系頻率的壓控振蕩器VCO,出書P(對輸入頻率Fin進行分頻),除數(shù)M(對VCO的輸出頻率進行M分頻,分頻后輸入到相位頻率探測器PFD),除數(shù)S(對MPLL輸出頻率Mpll進行分頻),相差探測器,charge pump,loop filter。



----------------------------o------------------------------------------------


時鐘頻率的計算關(guān)系:FCLK,HCLK,PCLK.(其中已經(jīng)知道用于USB的UCLK位48MHz。)


一般情況下,這三個始終之間是存在一定的額比例關(guān)系的,默認情況下為1:1:1。但是通常情況下會設(shè)置為1:4:8或者1:3:6。寄存器CLKDIVN用于設(shè)置這三者之間的比例關(guān)系。


也就是說,如果CLKDIVN設(shè)置為0x5,那么比例即為1:4:8,前提是CAMDIVN[9]為0.也就說如果主頻FLCK是400MHz,按照1:4:8的設(shè)置,那么HLCK是100MHz,PLCK是50MHz。講到這里主題也該突出,說到最后,問題的關(guān)鍵就是如何計算FCLK了吧?。?!



--------------------------------ooo------------------------------------------


現(xiàn)在的CPU主頻都是通過倍頻的技術(shù)實現(xiàn)的,下面就描述下如何個倍頻法:


1. MPLL. 對于S3C2440來說,常用的輸入Fin主要有兩種頻率:12MHz和16.935MHz。CPU通過MDIV、PDIV和SDIV進行倍頻得到MPLL,即FCLK。公式如下所示:


Mpll = (2 * m * Fin) / (p * 2^S)


m = (MDIV + 8), p = (PDIV + 2), s = SDIV; 1<=M<=248,1<=P<=62


理論上,我們可以通過設(shè)置任意值而得到我們想要的頻率,然而由于實際存在種種的約束關(guān)系,設(shè)置一個適當(dāng)?shù)念l率不容易,手冊中推薦了如下的設(shè)置值:


例如,假設(shè)輸入時鐘FIN=16.9344M,MDIV=110, PDIV=3, SDIV=1,利用上面的公式,F(xiàn)CLK=2*16.9344*(110+8)/((2+3)*2)=399.65 MHz。


2. UPLL.上面已經(jīng)詳細的描述了MPLL的設(shè)置過程。下面著重描述USB的使用頻率UPLL的設(shè)置。需要對UPLLCON寄存器設(shè)置,如上上圖所示。同樣也可以通過查表。


Upll = (m * Fin) / (p * 2^S)


m = (MDIV + 8), p = (PDIV + 2), s = SDIV


需要注意的是CLKDIVN寄存器的第三位DIVN_UPLL用來設(shè)置USB時鐘UCLK和UPLL的關(guān)系,如果UPLL已經(jīng)是48Mhz了,那么這一位應(yīng)該設(shè)置為0,表示1:1的關(guān)系,否則是1:2的關(guān)系。由于目標(biāo)USB只需要48MHz的頻率,所以源頻率,即UPLL只能為48或者96。



--------------------------------ooo------------------------------------------


講到這里,重點都說了哇,不多還有些特別的東西需要提出來下。


1. 在arm的體系中,還存在一個概念,叫做慢時鐘模式的概念,即將時鐘減半或者關(guān)閉,以減少能源消耗??梢酝ㄟ^CLKSLOW和CLKDIVN寄存器相互配合實現(xiàn)。如下圖所示:


2. arm體系中很多模塊都需要時鐘,要是能夠?qū)⒉恍枰褂脮r鐘的外設(shè)的時鐘共用給關(guān)了,也能減少消耗,在arm中提供了這樣的寄存器給予定制,即CLKCON寄存器。


3. 專門用于相機時鐘設(shè)定的寄存器CAMDIVN。如下圖所示,在分頻時候用到了HCLK4_HALF、HCLK3_HALF。


沒了~~~


------------over----------------------------------------


樣例程序如下:


[PLL_ON_START; //設(shè)置CLKDIVN的值在PLL鎖存時間LOCKTIME之后有效。


;Configure FCLK:HCLK:PCLK
ldrr0,=CLKDIVN
ldrr1,=CLKDIV_VAL;CLKDIV_VAL=7,7=1:3:6. Fclk:Hclk:Pclk
strr1,[r0]



;Configure UPLL //UPLL
ldrr0,=UPLLCON
ldrr1,=((U_MDIV<<12)+(U_PDIV<<4)+U_SDIV) ; //Fin = 12.0MHz, UCLK = 48MHz
strr1,[r0]



;Configure MPLL //MPLL
ldrr0,=MPLLCON
ldrr1,=((M_MDIV<<12)+(M_PDIV<<4)+M_SDIV) ; //Fin = 12.0MHz, FCLK = 400MHz
strr1,[r0]
]



END.!!!



關(guān)鍵詞: ARM系列時鐘模塊分頻系

評論


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

關(guān)閉