蔣建武,王宜懷
(蘇州大學計算機科學與技術學院,江蘇 蘇州 215006;泰州職業技術學院信息工程學院,江蘇 泰州 225300)
?
Kinetis系列MCU時鐘系統結構與配置研究*
蔣建武1,2,王宜懷1*
(蘇州大學計算機科學與技術學院,江蘇 蘇州 215006;泰州職業技術學院信息工程學院,江蘇 泰州 225300)
內嵌ARM?CortexTM-M核的Kinetis系列微控制器具有復雜的時鐘系統,時鐘系統中多功能時鐘發生器、鎖相環、鎖頻環、晶振系統等功能模塊協調工作時能為應用系統提供穩定的時鐘源。通過對K60時鐘系統的結構和配置方法的剖析,以及對多功能時鐘發生器運行機制的梳理,提出了時鐘源性能的測試方法以及芯片系統各功能模塊時鐘源的選擇方法,為Kinetis相關芯片應用設計過程中的時鐘系統配置以及時鐘源選擇提供了借鑒與參考。
微控制器;時鐘系統;運行機制;多功能時鐘發生器
自2010年Freescale公司推出了基于ARM?CortexTM-M4內核的Kinetis K系列芯片[1]后又推出多款ARM核的32位MCU,2014年又將推出ARM?CortexTM-M4內核與RF收發器相結合應用于無線傳感網的W系列芯片。芯片的功能越強大對其時鐘系統的要求也越高,合理而高效地配置時鐘系統可極大提升嵌入式系統的實時性與穩定性,并在低功耗模式下有效地降低系統功耗。Kinetis系列芯片的時鐘系統具有內外參考時鐘接受寬泛的頻率輸入[1-2],內置多功能的時鐘發生器提供多種的時鐘源備選,強大的門控功能啟停各功能模塊時鐘。復雜而有效的時鐘系統為實現低功耗、高性能、多功能等優異特性提供保證,但其復雜的結構和縝密的配置過程使得掌握并靈活應用時鐘系統為應用系統的開發提供穩定而高效的時鐘具有一定的難度。針對Kinetis系列芯片課題組做了深入的研究,在《嵌入式系統原理與實踐-ARM Cortex-M4 Kinetis微控制器》一書中對MK60DN512ZVMD10(以下簡稱K60)時鐘系統做了闡述[3],很多讀者在應用過程中仍然對時鐘系統的結構與配置有很多困惑;在《FreescalKinetis L系列MCU的時鐘運行機制分析與編程方法》一文中同課題組的朱仕浪分析了MKL25Z128VLK4(以下簡稱KL25)時鐘系統的配置與使用[4]。以下將以K60為例剖析Kinetis系列MCU時鐘系統的結構及其運行機制,給出內外參考時鐘選擇依據與其配置方法,分析MCG模塊各運行模式的特性和模式狀態遷移過程,最后提出各時鐘源性能分析方法并歸納系統模塊對時鐘源的選擇配置方法。
1.1 內部與外部參考時鐘
K60芯片的時鐘系統包含2路內部參考時鐘和2路外部參考時鐘。內部參考時鐘分為高頻4 MHz和低頻32 kHz,可作為MCU的時鐘源或可選外設時鐘MCGIRCLK。1路外部參考時鐘通過系統振蕩器利用外部引腳XTAL與EXTAL接入時鐘系統,支持低頻32 kHz或高頻3 MHz~8 MHz和8 MHz~32 MHz,其可作為MCU的時鐘源或可選外設時鐘OSCERCLK和ERCLK32K[5]。另一路外部參考時鐘通過實時時鐘專用振蕩器RTC OSC(Real Time Clock Oscillator)利用外部引腳XTAL32與EXTAL32接入時鐘系統,該路通常接入32.768 kHz晶振,為RTC模塊提供穩定的RTC時鐘源并為其他外設模塊提供ERCLK32K時鐘源。

圖1 K60時鐘系統
1.2 多功能時鐘發生器
時鐘系統的內部參考時鐘和外部參考時鐘均接入多功能時鐘發生器MCG(Multipurpose Clock Generator),通過MCG模塊通過內部包含的一個鎖頻環FLL(Frequency-Locked Loop)和一個鎖相環PLL(Phase-Locked Loop)實現對相應參考時鐘倍頻,前者可接收內外參考時鐘作為時鐘源,后者僅能使用外部參考時鐘。時鐘系統可選擇PLL輸出(MCGPLLCLK),FLL輸出(MCGFLLCLK),外部參考時鐘和內部參考時鐘4個時鐘源之一作為當前時鐘輸出MCGOUTCLK[6]。
1.3 電源管理器
電源管理器PMC(Power Management Controller)作為獨立的模塊可產生1 kHz的信號作為系統外設時鐘LPO。
1.4 系統集成模塊
以上所產生的多個時鐘信號通過系統集成模塊SIM(System Integration Module)分配到各個指定的系統功能模塊上,例如:WatchDog、USB、Ethernet、SHDC、I2S等[7],時鐘產生電路CG(Clock Generator)也實現了模塊專用的時鐘門控邏輯,允許通過停止供應時鐘信號關閉模塊的功能。同時CG模塊還提供了4個時鐘分頻器(OUTDIV1~OUTDIV4),通過不同分頻使得在同一個MCGOUTCLK時鐘源驅動的情況下4個系統模塊時鐘,即內核/系統時鐘、總線時鐘、FlexBus時鐘和Flash存儲器時鐘可運行在不同的頻率上由此實現各模塊以較低的頻率工作以便降低功耗[8]。
2.1 內部與外部參考時鐘選擇
MCG_C1[CLKS]用于選擇內部與外部參考時鐘源,CLKS=01選擇內部參考時鐘,CLKS=10選擇外部參考時鐘;MCG_C2[IRCS]用于選擇內部快慢參考時鐘,IRCS=0,選擇慢內部參考時鐘32 kHz晶振,IRCS=1,選擇快內部參考時鐘4M晶振;SIM_SOPT2[MCGCLKSEL]用于選擇外部參考時鐘,MCGCLKSEL=0選擇系統振蕩器OSC,MCGCLKSEL=1選擇實時時鐘振蕩器RTC OSC。
2.2 鎖相環與鎖頻環選擇
MCG_C6[PLLS]用于選擇鎖相環FLL和鎖頻環PLL,PLLS=0,選擇FLL,PLLS=1,選擇PLL。MCG_C1[FRDIV]為FLL外部參考時鐘分頻因子,與MCG_C2[RANGE]共同決定取值范圍從1至1 024;MCG_C5[PRDIV]為PLL外部參考時鐘分頻因子,取值范圍從1至25;MCG_C6[VDIV]為PLL壓控晶振(VCO)倍頻因子,取值范圍從24至55。
3.1 MCG時鐘運行模式
時鐘運行模式根據MCG的鎖頻環(FLL)或鎖相環(PLL)工作情況,選用的參考時鐘以及輸出的時鐘是否供給MCGOUTCLK進行定義和分類[9]。例如,PLL工作時,選用外部參考時鐘,并將鎖頻輸出時鐘MCGPLLCLK提供給MCGOUTCLK,此時MCG時鐘模式稱為PEE(PLL外部忙碌);若PLL輸出的時鐘不提供給MCGOUTCLK,而是由外部參考OSCCLK時鐘送到MCGOUTCLK,此時MCG時鐘模式稱為PBE(PLL外部旁路),其它時鐘模式的含義以此類推。MCG共有9種時鐘運行模式:FEI、FEE、FBI、FBE、PBE、PEE、PEE、BLPI、BLPE和STOP,模式切換需要遵守圖2所示的MCG轉換規則,圖中任一狀態可轉換到停止態(STOP),圖示箭頭表明允許的MCG模式轉換方向。9種時鐘運行模式可分為4種工作狀態,即初始態:復位后初始狀態,中間態:MCGOUTCLK時鐘源不是由FLL/PLL輸出提供,而是由相應參考時鐘提供,工作態:MCGOUTCLK時鐘源正常工作時由FLL/PLL輸出,低功耗時由內外參考時鐘提供,停止態:MCG停止工作,表1給出了各種模式與工作狀態的關系[10]。

表1 時鐘運行模式與工作狀態關系

表2 時鐘配置推薦值
3.2 MCG運行狀態切換編程方法
由圖2 MCG模式狀態圖可知系統復位后首先進入默認FEI運行模式,該模式使用內部32 kHz慢參考時鐘,640倍倍頻后可得20.97 MHz時鐘信號,可滿足系統基本運行的需求。當需要更高的頻率(例如配置為100 M網卡,系統時鐘至少50 MHz,K60數據手冊5.3.1節[2]),必須使用FLL或PLL倍頻。與FLL相比,PLL具有防噪聲、防抖動的功能,具有更高的精度;所以系統啟動后一般配置切換到PEE(PLL外部忙碌)模式。以下將以表2中給出的常用推薦時鐘配置為例介紹MCG時鐘模式FEI->FBE->PBE->PEE的狀態切換過程[11]。

圖2 MCG模式狀態圖
對K60芯片MCG進行狀態切換時需要滿足以下基本條件[1]:
(1)Core/system bus≤100 MHz;(2)bus clock≤50 MHz,且必須是Core/systembus的整數分頻;(3)Flash bus≤25 MHz,且必須是bus clock的整數分頻;(4)FlexBus≤bus clock。
對時鐘源的配置按照以下步驟完成:
(1)將外部時鐘分頻為2 MHz~4 MHz之間的一個頻率,輸入給PLL,該分頻因子由MCG_C5寄存器的PRDIV決定。(2)PLL內部的壓控振蕩器VCO(Voltage-Controlled Oscillator)將輸入的時鐘倍頻,倍頻后即得到MCGOUTCLK[12]。(3)通過SIM模塊的SIM_CLKDIV1寄存器,將MCGOUTCLK時鐘分頻成不同的時鐘域,供內核、系統、總線、FlexBux和Flash使用。
圖3給出了一個PLL初始化FEI->FBE->PBE->PEE狀態切換的執行實例。關于MCG模式狀態切換路徑的選擇是一個比較復雜的過程,對此研究將另文分析,在此不再贅述。

圖3 PLL初始化執行流程
4.1 時鐘源頻率測量方法
外部參考時鐘可直接測量外部接入引腳XTAL和XTAL32;在K60芯片中PTA6可以配置為TRACE_CLKOUT功能用于輸出當前時鐘MCGOUTCLK和內核時鐘Core/System CLK;FlexBus時鐘可通過將PTC3配置為FB_CLKOUT輸出;RTC實時時鐘RTCCLK可將PTE26配置為RTC_CLKOUT輸出。在Kinetis L系列MCU芯片中PTC3可配置為CLKOUT功能,用于輸出總線時鐘Bus Clock、LPO、內部參考時鐘MCGIRCLK、外部參考時鐘OSCERCLK;RTC_CLKOUT輸出功能通過配置PTE0實現[13]。
4.2 實驗數據分析
實驗數據在蘇州大學飛思卡爾嵌入式中心SD-FSL-K60-C評估板上完成,利用TEK TDS2024B示波器測量。實驗中通道1(CH1)測量外部參考輸入ETAL,通道2利用SIM_SOPT2[TRACECLKSEL]將TRACE_CLKOUT分別配置成MCGOUTCLK和Core/System CLK,通道3測量系統FlexBus信號FB_CLK;圖4中外部參考時鐘50 MHz,MCGOUTCLK以PLL為時鐘源,配置為96 MHz,MCGOUTCLK∶Core/SystemCLK∶BusCLK∶FlexBus∶FlashBus=4∶2∶2∶2∶1;圖5中外部參考時鐘50MHz,MCGOUTCLK以PLL為時鐘源,配置為192.3MHz,MCGOUTCLK∶Core/SystemCLK∶BusCLK∶FlexBus∶FlashBus=4∶2∶2∶2∶1。

圖4 時鐘源測試數據1

圖5 時鐘源測試數據2
K60時鐘系統為系統功能模塊和外設模塊提供了10多個內部時鐘源供各功能模塊使用,各時鐘源具體含義可參見表3。
各模塊根據系統設計的要求可通過表4所示的配置寄存器設置各自的時鐘源。除了以上通用的時鐘源,為了滿足一些特殊模塊(Ethernet、USB、SDHC和I2S)的時鐘要求,還為其各自設置了一個獨立的時鐘源接口,可直接外接信號供相應模塊使用,各時鐘源的配置方法詳見表3[10]。串行通信模塊UART0和UART1使用Core/system clock時鐘源,其他串口模塊使用Bus clock時鐘源[14]。

表3 K60內部時鐘源
Kinetis系列MCU的時鐘系統可以通過內外參考時鐘將頻率信號源接入芯片,由多功能時鐘發生器MCG為各功能模塊提供多個時鐘源,利用門控模塊啟停系統功能模塊時鐘和時鐘分配機制為各功能模塊在滿足要求的前提下選擇較低的工作頻率,用以保證其能穩定工作且功耗降低。關于MCG運行模式遷移選擇以及時鐘的有效性與電源模式(即低功耗模式)的關系等問題將在后繼的工作中進一步分析研究。
[1]Freescale. K60 Sub-Family Reference Manual Rev.6,2011[EB/OL]. http://www.Freescale.com.
[2]Freescale. K60 Sub-Family Data Sheet Rev.6,2011[EB/OL]. http://www.Freescale.com.
[3]王宜懷,吳瑾,蔣銀珍. 嵌入式系統原理與實踐-ARM Cortex-M4 Kinetis微控制器[M]. 北京:電子工業出版社,2012:3.
[4]Freescale. KL25 Sub-Family Reference Manual Rev.3,September 2012[EB/OL]. http://www.Freescale.com.
[5]徐毅,陳書明. 一種低功耗的混合諧振時鐘分布機制[J]. 微電子學與計算機,2010,10:87-90,95.
[6]張艷,韓雁,霍明旭,等. 基于EPA協議的精確時鐘同步方法[J]. 傳感技術學報,2009,22(7):978-982.
[7]蔣善鋒,王麗芳,蔣澤軍. Windows時鐘機制的實時擴展研究[J]. 微電子學與計算機,2013(8):116-119,123.
[8]許劍新,馮冬芹. 基于本地時鐘自校正的無線傳感器網絡同步方法[J]. 傳感技術學報,2008,21(8):1448-1452.
[9]苗匯靜,孫桂華,王立新. 通用有源濾波器設計[J]. 電子器件,2012,25(5):549-553.
[10]張海龍,馬鐵華,謝銳,等. 基于MCU和CPLD的微型動態應力存儲測試系統[J]. 電子器件,2014,37(1):123-126.
[11]陳大峰,白瑞林,鄒駿宇. 嵌入式設備的精確時鐘同步技術的研究與實現[J]. 計算機工程與應用,2013(4):82-86.
[12]朱小冬,王世明. 多時鐘域處理器構架的性能和功耗分析[J]. 計算機工程,2005,31(24):75-77.
[13]Freescale. KL25 Sub-Family Data Sheet Rev.3,September 2012[EB/OL]. http://www.Freescale.com.
[14]楊劍新,胡向東,李媛. 一種分布控制雙時鐘FIFO的設計與實現[J]. 計算機工程與科學,2013(5):1-8.

蔣建武(1979-),男,高級工程師,蘇州大學在讀博士。主要研究方向為嵌入式系統、物聯網技術,47955024@qq.com;

王宜懷(1962-),男,博士、博導,蘇州大學計算機科學與技術學院教授,蘇州大學嵌入式仿生智能研究所副所長,蘇州市政協委員,中國軟件行業協會嵌入式系統分會理事。主要研究方向為嵌入式系統、傳感網與智能控制技術,Yihuaiw@suda.edu.cn。
ResearchonClockSystemStructureandConfigurationofKinetisSeriesMCU*
JIANGJianwu1,2,WANGYihuai1*
(1.School of Computer Science and Technology,Soochow University,Suzhou Jiangsu 215006,China;2.Department of Electronic and Information Engineering,Taizhou Polytechnic College,Taizhou Jiangsu 225300,China)
Kinetis series of MCUs embedded the core of ARM?CortexTM-M contains a complex clock system. At the time of each functional module in the clock system which includs multi-function clock generator,phase-locked loop,frequency-locked loopand crystal vibration system,coordinated work,the clock system can provide a stable clock source for the application system. Based on the analysis of the structure and configuration method of K60 clock system and the MCG operating mechanism,the testing method of clock source performance and the clock source selection method of each function modules are proposed. All of above provides references for Kinetis related chips clock system configuration in the process of application design as well as the clock source selection.
MCU(Micro Control Unit);clock system;MCG(Multiple Clock Generator)
項目來源:國家自然科學基金項目(61070169);泰州職業技術學院碩博基金項目(TZYBS-14-5)
2014-08-27修改日期:2014-09-28
TP368.1
:A
:1005-9490(2014)06-1172-05
10.3969/j.issn.1005-9490.2014.06.033