u-boot移植與分析記錄之二【S5PV210芯片手冊時鐘控制器部分的翻譯】


前言


  本文是對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:指定一個來自由XXTIXXTO管腳提供的晶振pad的時鐘。當USB PHY不是用於商業集 (譯者注:commercial set, 不確定這麼翻譯是否正確) 時,CMU和PLL使用這個時鐘來產生其它時鐘模塊(APLL, MPLL, VPLL, 和EPLL)。輸入頻率範圍12 ~ 50 MHz。推薦使用24 MHz晶振,因爲iROM被設計成基於24MHz輸入時鐘。

  XUSBXTI:指定一個來自由XUSBXTIXUSBXTO管腳提供的晶振pad的時鐘。這個時鐘供應給APLL, MPLL, VPLL, ELL, 和USB PHY。關於USB PHY時鐘的跟多信息,參考8.4章節 “USB控制器”和8.5章節“USB HS OTG”。推薦使用24 MHz晶振,因爲iROM被設計成基於24MHz輸入時鐘。

  XHDMIXTI指定一個來自由XHDMIXTIXHDMIXTO管腳提供的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 PHYHDMI 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);

    • DSYSPSYS時鐘域 (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





發佈了33 篇原創文章 · 獲贊 8 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章