前言
本文是對S5PV210芯片手冊中啓動部分的翻譯,原文位於《S5PV210 RISC Microprocessor User's Manual, Revision 1.10》第二部分“系統”中的第三章“時鐘控制器”。
本章講述S5PV210支持的時鐘管理單元(CMU)。系統控制器(SYSCON)管理S5PV210中的CMU和電源管理單元(PMU)。
1.1 時鐘域
S5PV210由三個時鐘域組成,稱爲主系統(main system, MSYS),顯示系統(display system, DSYS),和外設系統(peripheral system, PSYS),如圖3-1所示。
•MSYS域由Cortex A8處理器, DRAM內存控制器(DMC0 and DMC1), 3D,
內部SRAM (IRAM和IROM), INTC, 和 配置接口(SPERI)組成。Cortex A8僅支持同步模式,因此必須與200MHz AXI總線同步運行。
• DSYS域由顯示相關的模塊組成,包括FIMC, FIMD, JPEG, 和多媒體IP (所有在X,
L和T模塊中提到的其它IP),如圖3-1所示。
• PSYS域用於安全、I/O外設,和低功耗音頻播放。
• 每個總線系統分別以200 MHz(最大),166 MHz和133 MHz運行。兩個不同的域之間有異步總線橋(BRG)。
1.2 時鐘聲明
圖3-2顯示了S5PV210中的時鐘分類。S5PV210中的頂層時鐘包括:
•來自時鐘管腳的時鐘:XRTCXTI, XXTI,
XUSBXTI和XHDMIXTI;
•來自CMU的時鐘(例如,ARMCLK, HCLK, PCLK等等);
•來自USB PHY的時鐘;
•來自GPIO管腳的時鐘。
1.2.1 來自時鐘管腳的時鐘
下面的時鐘由時鐘管腳提供。但是,你可以禁止時鐘管腳。
•XRTCXTI:指定一個來自由XRTCXTI和XRTCXTO管腳提供的32,768 KHz晶振pad的時鐘。RTC使用這個時鐘作爲實時時鐘的源。
•XXTI:指定一個來自由XXTI和XXTO管腳提供的晶振pad的時鐘。當USB
PHY不是用於商業集 (譯者注:commercial set, 不確定這麼翻譯是否正確) 時,CMU和PLL使用這個時鐘來產生其它時鐘模塊(APLL, MPLL, VPLL, 和EPLL)。輸入頻率範圍12 ~ 50 MHz。推薦使用24
MHz晶振,因爲iROM被設計成基於24MHz輸入時鐘。
•XUSBXTI:指定一個來自由XUSBXTI和XUSBXTO管腳提供的晶振pad的時鐘。這個時鐘供應給APLL,
MPLL, VPLL, ELL, 和USB PHY。關於USB PHY時鐘的跟多信息,參考8.4章節 “USB控制器”和8.5章節“USB HS OTG”。推薦使用24 MHz晶振,因爲iROM被設計成基於24MHz輸入時鐘。
•XHDMIXTI:指定一個來自由XHDMIXTI和XHDMIXTO管腳提供的27 MHz晶振pad的時鐘。VPLL或HDMI PHY 產生54MHz時鐘用於TV編碼。
• XXTI和XXTO使用寬範圍OSC pads;
• XUSBXTI和XUSBXTO使用寬範圍OSC pads;
• XHDMIXTI和XHDMIXTO使用寬範圍OSC
pads;
• XRTCXTI和XRTCXTO使用OSC
pads用於RTC;
• ARMCLK指定Cortex A8的時鐘 (最高達1GHz);
• HCLK_MSYS指定MSYS時鐘域的AXI時鐘,如圖3-1所示。最高運行頻率爲200 MHz。
• PCLK_MSYS指定MSYS時鐘域的APB時鐘,如圖3-1所示。最高運行頻率爲100
MHz。
• HCLK_DSYS指定DSYS時鐘域的AXI/AHB時鐘,如圖3-1所示。最高運行頻率爲166 MHz。
• PCLK_DSYS指定DSYS時鐘域的APB時鐘,如圖3-1所示。最高運行頻率爲83 MHz。
• HCLK_PSYS指定PSYS時鐘域的AXI/AHB時鐘,如圖3-1所示。最高運行頻率爲133 MHz。
• PCLK_PSYS指定PSYS時鐘域的APB時鐘,如圖3-1所示。最高運行頻率爲66 MHz。
• 特定時鐘制定了所有除了總線時鐘和處理器核時鐘之外的所有時鐘。
1.2.2 來自CMU的時鐘
CMU使用來自時鐘pads (XRTCXTI, XXTI, XUSBXTI和XHDMIXTI),四個PLL(APLL, MPLL, EPLL和VPLL),USB PHY和HDMI PHY時鐘產生內部中頻時鐘。這些時鐘中,有些可以被選擇,預分頻,提供給相應的模塊。推薦爲APLL, MPLL, EPLL 和VPLL使用24 MHz的輸入時鐘源。
爲了產生內部時鐘,使用了下列的組件:
• APLL使用FINPLL(參考圖3-1)作爲輸入,產生30
MHz ~ 1 GHz;
• MPLL使用FINPLL作爲輸入,產生50
MHz ~ 2 GHz;
• EPLL使用FINPLL作爲輸入,產生10
MHz ~ 600 MHz;
• VPLL使用FINPLL或SCLK_HDMI27M作爲輸入,產生10 MHz ~ 600 MHz,這個PLL產生54 MHz的視頻時鐘;
•USB OTG PHY使用XUSBXTI,產生30 MHz和48 MHz;
•HDMI PHY使用XUSBXTI或XHDMIXTI,產生54MHz;
在典型的S5PV210用用中,
• Cortex A8和MSYS時鐘域使用APLL(ARMCLK, HCLK_MSYS和PCLK_MSYS);
• DSYS和PSYS時鐘域
(HCLK_DSYS, HCLK_PSYS, PCLK_DSYS和PCLK_PSYS)和其它外設時鐘域 (audio IPs, SPI等等)使用MPLL和EPLL;
• 視頻時鐘使用VPLL;
時鐘控制器允許繞過PLL用於低速時鐘。它同時使用軟件連接/斷開來自各個模塊的時鐘,以降低功耗。
1.3 時鐘關係
時鐘具有下列關係:
•MSYS時鐘域
−
freq(ARMCLK) = freq(MOUT_MSYS) / n, where n = 1 ~ 8
− freq(HCLK_MSYS) = freq(ARMCLK) / n, where n = 1 ~ 8
− freq(PCLK_MSYS) = freq(HCLK_MSYS) / n, where n = 1 ~ 8
− freq(HCLK_IMEM) = freq(HCLK_MSYS) / 2
• DSYS時鐘域
− freq(HCLK_DSYS) = freq(MOUT_DSYS) / n, where n = 1 ~ 16
− freq(PCLK_DSYS) = freq(HCLK_DSYS) / n, where n = 1 ~ 8
• PSYS時鐘域
− freq(HCLK_PSYS) = freq(MOUT_PSYS) / n, where n = 1 ~ 16
− freq(PCLK_PSYS) = freq(HCLK_PSYS) / n, where n = 1 ~ 8
− freq(SCLK_ONENAND) = freq(HCLK_PSYS) / n, where n = 1 ~ 8
高性能運行時的值:
• freq(ARMCLK) = 1000 MHz
• freq(HCLK_MSYS) = 200 MHz
• freq(HCLK_IMEM) = 100 MHz
• freq(PCLK_MSYS)
= 100 MHz
•
freq(HCLK_DSYS) = 166 MHz
•
freq(PCLK_DSYS) = 83 MHz
•
freq(HCLK_PSYS) = 133 MHz
•
freq(PCLK_PSYS) = 66 MHz
•
freq(SCLK_ONENAND) = 133 MHz, 166 MHz
• PLL
−APLL可以驅動MSYS域和DSYS域。它可產生高達1 GHz的時鐘,49:51佔空比;
−MPLL可以驅動MSYS域和DSYS域。它可供應的時鐘,高達2 GHz,40:60佔空比;
−EPLL主要用於產生音頻時鐘;
−VPLL主要用於產生視頻系統運行時鐘,54
MHz;
−典型地,APLL驅動MSYS域,MPLL驅動DSYS域。
注意:儘管有方程可以用於選擇PLL的值,我們強烈推薦只使用PLL值推薦表中的值。如果你必須使用其它值,請聯繫我們。
1.3.1 APLL PLL PMS推薦值
1.3.2 MPLL PLL PMS推薦值
1.3.3 EPLL PLL PMS推薦值
1.3.4 VPLL PLL PMS推薦值
1.4 時鐘產生
圖3-3顯示了時鐘產生邏輯的框圖。一個外部晶振時鐘連接到振盪放大器。PLL將輸入低頻轉換爲S5PV210要求的高頻時鐘。時鐘產生模塊也包括一個內建邏輯來穩定每個系統復位後的時鐘頻率,因此在時鐘穩定之前需要一些時間。
圖3-3也顯示了兩類時鐘多路複用器。灰色的時鐘多路複用器代表無干擾時鐘多路複用器,如果時鐘選擇改變它不會產生毛刺。白色的時鐘多路複用器代表非無干擾時鐘多路複用器,當時鍾源改變時會有毛刺。在使用每個時鐘多路複用器時,必須特別小心。
對於無干擾多路複用器,應該保證當時鍾選擇從一個改到另一個時,兩個時鐘源都在運行。如果不是這樣,時鐘改變並不能完全完成,導致時鐘輸出會有未知狀態。
對於非無干擾多路複用器,當時鍾選擇改變時會可能有一個毛刺。爲避免毛刺信號,在改變時鐘源之前,推薦禁止非無干擾多路複用器的輸出。在時鐘修改完成之後,用戶可以重新使能非無干擾時鐘多路複用器的輸出,從而不會有因爲時鐘改變而產生的毛刺。屏蔽非無干擾多路複用器的輸出由時鐘源控制寄存器處理。
圖3-3中顯示的時鐘分頻器在括號中說明了可能的分頻值。這些分頻值可以由時鐘分頻寄存器在運行時決定。一些時鐘分頻器只有一個分頻值,用戶無法改變它們,在時鐘分頻寄存器中無相應的域。
1.5 時鐘配置過程
當時鍾配置改變時須遵循下述規則:
•無干擾多路複用器的所有輸入必須在運行;
•當一個PLL斷電,不應選擇這個PLL的輸出。
基本的SFR配置流程:
a.打開一個PLL(一旦打開任何PLL,別去關閉它)
(1). (A,M,E,V)PLL_CON[31]
= 1; // PLL上電 (參考(A, M, E, V) PLL_CON SFR)
(2). wait_lock_time; //
等待直到PLL鎖定
(3). (A, M, E, V)PLL_SEL = 1; //
在PLL輸出時鐘穩定之後,選擇PLL輸出時鐘代替輸入參考時鐘(參考CLK_SRC0 SFR第0, 4, 8, 12位)
b.修改PLL PMS值
Set PMS values; //
設置PDIV, MDIV和SDIV的值(參考(A, M, E, V) PLL_CON SFR)
c. 修改系統時鐘分頻器的值
CLK_DIV0 [31:0] = target value0;
d. 爲特殊時鐘修改分頻器的值
CLK_DIV1 [31:0] = target value1;
CLK_DIV2 [31:0] = target value2;
時鐘門控 S5PV210可以禁止每個不需要IP的時鐘運行。這降低了動態功耗。
1.6 特殊時鐘描述
1.6.1 特殊時鐘表
所有可能的時鐘源包括XXTI, XUSBXTI, SCLK_HDMI27M, SCLK_USBPHY, SCLK_HDMIPHY, SCLKMPLL, SCLKEPLL和SCLKVPLL。
a. XXTI和XUSBXTI分別表示外部晶振;
b. SCLK_USBPHY表示USB PHY 48 MHz輸出時鐘;
c. SCLK_HDMI27M表示HDMI PHY (HDMI
27 MHz參考時鐘)輸出;
d. SCLK_HDMIPHY表示HDMI
PHY (PIXEL_CLKO)輸出時鐘;
e. SCLKMPLL, SCLKEPLL和SCLKVPLL分別表示MPLL, EPLL和VPLL的輸出時鐘。
1.7 寄存器描述
系統控制器控制PLL,時鐘發生器,電源管理單元(PMU),和其它系統獨立單元。這部分講述使用系統控制器內部的特殊功能寄存器(SFR)如何控制這些部分。別去修改任何保留區域。保留區域的值修改會導致未定義行爲。
1.7.1 寄存器映射
寄存器映射表詳見手冊P367
~ 370。
特殊功能寄存器有幾個部分組成。
>
地址爲0xE010_0XXX的SFR控制時鐘相關邏輯。它們控制三個PLL的輸出頻率,時鐘源選擇,時鐘分頻比,和時鐘門控;
> 地址爲0xE010_2XXX的SFR控制軟件復位;
> 地址爲0xE010_3XXX的SFR控制IEM模塊;
> 地址爲0xE010_6XXX的SFR控制S5PV210系統;
> 地址爲0xE010_7XXX的SFR包含雜項寄存器;
> 地址爲0xE010_8XXX的SFR控制電源管理模塊;
詳細的寄存器描述參見手冊的P371 ~ 416。