在芯片手冊里,“時鐘管理單元 (Clock Management Unit)“的簡稱為 CMU 。CMU_ XXX 表示“XXX 模塊內(nèi)的 CMU ”,比如CMU_CPU等。
對于PC來說, CPU 、內(nèi)存、主板、聲卡、顯卡等,這些功能部件由不同的芯片組成, 在實(shí)體上是相互獨(dú)立的 。在嵌入式系統(tǒng)里,一塊芯片內(nèi)往往集成了多種功能比如Exynos 4412 上面既有CPU,還有音頻 /視頻接口、 LCD 接口、 GPS 等模塊 這類芯片被稱為 SoC,即 System on Chip,譯為芯片級系統(tǒng)或片上系統(tǒng)。
一、Exynos4412的時鐘體系
不同的模塊往往工作在不同的頻率下,一個芯片上采用單時鐘設(shè)計(jì)基本是不可能實(shí)現(xiàn)的 ,在 SoC設(shè)計(jì)中采取多時鐘域設(shè)計(jì) 。4412的時鐘域有5個, 如下圖所示:
這 5個時鐘域名如下 (下文中的 BLK 表示 block ,模塊 ):
①CPU_BLK :
內(nèi)含 Cortex-A9 MPCore處理器、 L2 cache 控制器、CoreSight (調(diào)試用 )。CMU_CPU用于給這些部件產(chǎn)生時鐘 。
② DMC_BLK :
內(nèi)含 DRAM 內(nèi)存控制器 (DMC)、安裝子系統(tǒng) (Security sub system )、通用中斷控制器 (Generic Interrupt Controller,GIC) 。CMU_DMC 用于給這些部件產(chǎn)生時鐘。
③ LEFTBUS_BLK 和 RIGHTBUS_BLK:
它們是全局的數(shù)據(jù)總線,用于在 DRAM 和和其他子模塊之間傳輸數(shù)據(jù)。
④ 其他BLK : 在上圖中,用畫筆圈起來的模塊 。
CMU_TOP用于給這些模塊產(chǎn)生時鐘。
Exynos4412有3個初始時鐘源:
① XRTCXTI引腳 :接 32KHz的晶振,用于實(shí)時鐘 (RTC) 。
② XXTI引腳 :接12M ~50 MHz的晶振, 用于向系統(tǒng)提供時鐘,也可以不接。
③ XUSBXTI引腳 :接24MHz的晶振 ,用于向系統(tǒng)提供時鐘。
在友善之臂的開發(fā)板中, XRTCXTI 上沒有外接晶振,系統(tǒng)時鐘來源是XUSBXTI引腳上接的24MH 晶振,如下圖所示:
從原理圖上可知, 4412開發(fā)板外接24MHz的晶振;但是4412的CPU頻率可達(dá)1.4GHz。 可以想象,一定有硬件部件把24MHZ的頻率提升為1.4GHZ,這個部件被稱為PLL(鎖相環(huán)) 。4412內(nèi)部其他部件也要工作于一定頻率,比 UART 、DDR等,也應(yīng)該有PLL把24MHZ的頻率提高后供給它們。
4412有4個PLL :APLL 、MPLL 、EPLL 和 VPLL ;2個 PHY :USB PHY 和 HDMI PHY (PHY:物理層, 一般指與外部信號接口的芯片 ):
① APLL:用于 CPU_BLK ;作為 MPLL 的補(bǔ)充,它也可以給 DMC_BLK 、LEFTBUS_BLK 、RIGHTBUS_BLK 和 CMU_TOP 提供時鐘。
② MPLL:用于DMC_BLK 、LEFTBUS_BLK 、RIGHTBUS_BLK 和 CMU_TOP
③ EPLL :主要給音頻模塊提供時鐘
④ VPLL :主要給視頻系統(tǒng)提供54MHz時鐘, 給 G3D(3D圖形加速器 )提供時鐘。
⑤ USB PHY :給 USB 子系統(tǒng)提供 30MHz 和 48MHz 時鐘 。
⑥ HDMI PHY :產(chǎn)生 54MHz 時鐘 。
二、Exynos4412中設(shè)置PLL的方法(以APLL為例)
APLL時鐘流程圖
以上圖為例,里面涉及3個概念:
① MUX:多路復(fù)用,即從多個輸入源中選擇一個
② PLL:把低頻率的輸入時鐘提高后輸出
③ DIV:分頻器,把高頻率的輸入時鐘降頻后輸出
由APLL的時鐘流程圖可知, 它的時鐘來源可以是 XXTI引腳上接的晶振,也可以是 XUSBXTI 引腳上接的晶振,通過上圖左邊的MUX來選擇,這個MUX的輸出被稱為FINPLL。
通過設(shè)置APLL的寄存器 (根據(jù)公式選擇參數(shù)值 ),可以把FINPLL提高為某個頻率輸出,假設(shè)為1.4GHz ,在圖上它被命名為FOUTAPLL。
繼續(xù)往右看圖,里面有多個DIV ,可以設(shè)置對應(yīng)的寄存器把頻率降下來。 CPU可以工作于1.4GHz,但是其他模塊不能工作于這么高的頻率所以要把頻率降下來。
設(shè)置 PLL 的流程如下: 的流程如下:
① 設(shè)置PLL的 P、M、S值,這是根據(jù)期望得到的頻率用公式計(jì)算出來
② 設(shè)置PLL的其他控制參數(shù)
③ 使能PLL
④ PLL會等待一段時間使時鐘穩(wěn)定
⑤ 設(shè)置MUX ,選擇PL 所輸出的時鐘
簡單地說就是: 先設(shè)置,再啟動,后使用。
第 5點(diǎn)意味著:如果當(dāng)前正使用該P(yáng)LL,那么先設(shè)置 MUX 改用其他時鐘源或禁止使用此 PLL,設(shè)置完P(guān)LL后再設(shè)置MUX改回原來所使用的PLL時鐘。
三、PLL寄存器
4個PLL的寄存器功能是相似的,這些寄存器可以分為6類,如下圖所示:
PLL的寄存器分類
以APLL為例:
(1) APLL_LOCK (地址 : 0x10044000 )
APLL_LOCK
說明:設(shè)置APLL的參數(shù)并使能它后, APLL 并不能立刻輸出穩(wěn)定的時鐘 ,它需要經(jīng)歷一個鎖定的時間 (lock time) 。APLL的最大鎖定時間是: (270 x PDIV) 個周期。 所以 APLL_LOCK 設(shè)置為 (270 x PDIV) 就可以了。
PDIV在后面的APLL_CON1寄存器中介紹
(2) APLL_CON0 (地址 : 0x10044100 )(這里只列出了有用的幾位)
APLL_CON0
根據(jù) M、P、S的值,可以算出APLL的輸出時鐘:
FOUT = MDIV x FIN / (PDIV x 2 ^ SDIV)
M、P、S的值不能亂取,需要滿足一些限制條件(請參考芯片手冊 ),芯片手冊里給出了推薦的取值。
(3) APLL_CON1( 地址 : 0x10044104)(這里只列出了有用的位)
APLL_CON1
該寄存器用于設(shè)置 BYPASS 模式,即APLL是直接輸出FIN時鐘,還是提升頻率后再輸出時鐘;也用于設(shè)置AFC(自動頻率控制 )功能,暫時無需理會。該寄存器取默認(rèn)值即可。
(4) CLK_SRC_CPU (地址 : 0x10044200)
CLK_SRC_CPU
參考上面的APLL時鐘流程圖:
① BIT[0] 控制第1個MUX (即 MUXAPLL) ,用 于選擇是使FIN還是 APLL 的輸出時鐘,這個輸出被稱為 MOUTAPLL。
② BIT[16]控制 第2個 MUX( 即 MUXCORE) ,用于選擇 MOUTAPLL 還是 SCLKMPLL 。其中 SCLKMPLL 由下面的 MUXMPLL 控制。
③ BIT[24]控制第3個MUX( 即 MUXMPLL) ,用于選擇 FINPLL 還是 FOUTMPLL ,這個輸出被稱為SCLKMPLL 。其中, FOUTMPLL來自MPLL 的輸出。
④ BIT[20]控制第4個 MUX( 即 MUXHPM) ,用于選擇 MOUTAPLL還是 SCLKMPLL 。
(5) CLK_MUX_STAT_CPU (地址 : 0x10044400) :
CLK_MUX_STAT_CPU
用于讀取 CLK_SRC_CPU寄存器里所設(shè)置的MUX 狀態(tài)。
(6) CLK_DIV_CPU0 (地址 : 0x10044500),CLK_DIV_CPU1( 地址 : 0x10044504)
CLK_DIV_CPU
參考上面的APLL時鐘流程圖,以 CPU 的工作頻率 ARMCLK 為例,根據(jù)上圖計(jì)算ARMCLK的頻率:
ARMCLK = MUXCORE的輸出 / DIVCORE / DIVCORE2
= MOUTCORE / (CORE_RATIO + 1) / DIVCORE2
= MOUTCORE / (CORE_RATIO + 1) / (CORE2_RATIO + 1)
MOUTCORE表示MUXCORE的輸出,在MUXAPLL為1、MUXCORE為0時,它等于“MDIV x FIN / (PDIV x 2 ^ SDIV),即APLL的輸出FOUT”
(7) CLK_DIV_STAT_CPU0 (地址 : 0x10044600),CLK_DIV_STAT_CPU1( 地址 : 0x1004 604)
用于判斷設(shè)置分頻參數(shù)后,分頻器輸出是否已經(jīng)穩(wěn)定。
(8) CLK_GATE_IP_CPU(地址 : 0x10044900)
CLK_GATE_IP_CPU
用于控制是否給某個模塊提供時鐘 ,暫時不用理會 。
好了,Exynos的時鐘系統(tǒng)暫時介紹到這里,下一節(jié)開始做和時鐘相關(guān)的試驗(yàn)了。
上一篇:Exynos4412裸機(jī)程序,時鐘操作
下一篇:Exynos4412按鍵檢測(輪詢方式)
推薦閱讀
史海拾趣
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 穩(wěn)壓器到底有哪些作用?如何選擇穩(wěn)壓器
- 穩(wěn)壓器有哪些使用規(guī)范?如何選擇穩(wěn)壓器的功率
- 穩(wěn)壓器如何安裝?4種必須掌握的穩(wěn)壓器接線方法
- 變壓器的保護(hù)有哪些?變壓器過負(fù)荷要求了解嗎
- 飽和變壓器有哪些特點(diǎn)?飽和/非飽和變壓器有什么區(qū)別
- 短路阻抗對變壓器有哪些影響?如何維護(hù)變壓器
- 如何進(jìn)行變壓器減容?短路阻抗和變壓器有什么關(guān)聯(lián)
- 如何測量變壓器各繞組電壓?變壓器減容是怎么回事
- 隔離變壓器的工作原理是什么?隔離變壓器如何選型
- 隔離變壓器對電源有影響嗎?隔離變壓器應(yīng)用方法介紹
- 【XILINX 主題分享月】 低功耗資料大搜集!
- ST電機(jī)評測有獎大作戰(zhàn):領(lǐng)取任務(wù)卡,一起啃電機(jī)驅(qū)動難題!
- 下載汽車電氣化精品文章,贏【體脂秤、羅技鼠標(biāo)、手持風(fēng)扇】,開啟MPS汽車技術(shù)進(jìn)階之旅!
- 看MCU精品課程,讓你立馬變身考試達(dá)人!
- ADI有獎下載活動之20:基于NDIR和PID的ADI氣體探測器解決方案和新產(chǎn)品
- 關(guān)注 PI 最新 SCALE-iDriver IC產(chǎn)品系列 答題有好禮!
- 【分享成長,10月有獎】EEWORLD優(yōu)秀主題/回復(fù)第15期活動開始啦!??!
- 來英飛凌旗艦店,探尋秋日好物!
- 用 TI 汽車電子方案充充電吧,看你止步不前還是勇往直前!
- 移植Linux-3.4.2到TQ2440上
- 基于TQ2440的busybox根文件系統(tǒng)制作
- 51單片機(jī)學(xué)習(xí)——9--溫度傳感器DS18B20
- 51單片機(jī)學(xué)習(xí)——4--數(shù)碼管顯示
- 51單片機(jī)學(xué)習(xí)歷程《一》——跑馬燈
- 隨著人工智能的發(fā)展 CTA認(rèn)為需要建立統(tǒng)一的智能醫(yī)療標(biāo)準(zhǔn)
- NTU和JTC共同開發(fā)智能車測試中心
- 納雷科技發(fā)布77GHz汽車前向170米毫米波雷達(dá)
- 無PCB(PCB-less)的霍爾鎖存器在汽車座椅電機(jī)定位的解決方案
- 直流馬達(dá)的車身電子應(yīng)用