新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > S3C2443時鐘管理

        S3C2443時鐘管理

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

        本文引用地址:http://www.104case.com/article/201611/316686.htm

        1.MPLL和EPLL時鐘源的選擇

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

        在此設計中,OM[0]=1,根據下表

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

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

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

        2.PLL(phase-locked-loop)

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

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

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

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

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

        3.改變PLL設置

        S3C2443在平常的工作模式中,我們可以通過來寫PMS的值來改變PLL的輸出頻率,當我們通過軟件來寫PMS的值時,PLL的鎖存(lock time)被自動插入,在這個lock time期間,PLL是沒有產生有效的時間給S3C2443的,在lock time過后,PLL才產生有效和穩定的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.系統時鐘控制

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

        4.1 MPLL的時鐘控制

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

        4.2 EPLL的時鐘控制

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

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

        5. 上電復位PLL時鐘的啟動流

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



        關鍵詞: S3C2443時鐘管

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 昆明市| 辰溪县| 嘉义市| 慈利县| 昂仁县| 乳山市| 项城市| 盐城市| 和龙市| 鸡泽县| 湟中县| 乳山市| 萝北县| 左权县| 墨脱县| 定南县| 民丰县| 万源市| 兴隆县| 南充市| 孝义市| 南城县| 万州区| 大兴区| 中阳县| 霍邱县| 平南县| 策勒县| 大化| 东城区| 南康市| 颍上县| 汤阴县| 招远市| 开江县| 上杭县| 辽阳县| 阿拉尔市| 民勤县| 林芝县| 新余市|