<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/201611/317000.htm

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


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



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


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


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


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


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


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



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


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


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



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


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


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


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


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


          現(xiàn)在的CPU主頻都是通過倍頻的技術實現(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ù)念l率不容易,手冊中推薦了如下的設置值:


          例如,假設輸入時鐘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的設置過程。下面著重描述USB的使用頻率UPLL的設置。需要對UPLLCON寄存器設置,如上上圖所示。同樣也可以通過查表。


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


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


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



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


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


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


          2. arm體系中很多模塊都需要時鐘,要是能夠將不需要使用時鐘的外設的時鐘共用給關了,也能減少消耗,在arm中提供了這樣的寄存器給予定制,即CLKCON寄存器。


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


          沒了~~~


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


          樣例程序如下:


          [PLL_ON_START; //設置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.!!!



          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();