一、1 時鐘脈沖信號
時鐘脈沖信號:按一定的電壓幅度,一定的時間間隔連續(xù)發(fā)出的脈沖信號。時鐘脈沖信號是時序邏輯的基礎,它用于決定邏輯單元中的狀態(tài)何時更新。數字芯
片中眾多的晶體管都工作在開關狀態(tài),它們的導通和關斷動作無不是按照時鐘信號的節(jié)奏進行的。
1.2 時鐘脈沖頻率
時鐘脈沖頻率:在單位時間(如1秒)內產生的時鐘脈沖個數。
1.3 信號產生-晶振
晶振全稱晶體振蕩器,是用石英晶體經精密切割磨削并鍍上電極焊上引線做成。這種晶體有一個很重要的特性,如果給他通電,他就會產生機械振蕩,他們有一
個很重要的特點,其振蕩頻率與他們的形狀,材料,切割方向等密切相關。由于石英晶體化學性能非常穩(wěn)定,熱膨脹系數非常小,其振蕩頻率也非常穩(wěn)定,由于控制幾何尺寸可以做到很精密,因此,其諧振頻率也很準確。
晶體振蕩器時鐘的優(yōu)點包括結構簡單和噪聲低,以及可為客戶提供精確的定制頻率等方面;但另一方面,它的缺點也比較明顯,例如其頻率僅由晶體決定,通常是特定晶體被制成客戶所需的振蕩器,導致生產成本高、交貨周期較長,不利于客戶加快產品上市時間,而且難以獲得非標準的頻率。
1.3 信號產生-鎖相環(huán)
PLL(鎖相環(huán))合成器是一種更為復雜的系統(tǒng)時鐘源。通用PLL合成器需要一個外部晶體并包含一個能夠對晶體的特定頻率加倍或分頻的集成鎖相環(huán)(PLL)電路。
1.3 信號產生-對比
典型的系統(tǒng)時鐘振蕩器源通常采用石英晶振,而更復雜的系統(tǒng)時鐘振蕩器源則是由PLL合成器提供。
1. 對于特定的時鐘頻率,采用PLL合成器可使用較便宜以及較低頻率晶振來代替昂貴的高頻晶振;
2. 對于需要多個時鐘頻率的系統(tǒng),采用PLL合成器通過分頻即可實現,而此時采用晶振模塊則需要多個不同頻率的晶振。
因此相對于晶體振蕩器模塊,通過PLL合成器提供精確時鐘具有成本更低、占板面積更小等一系列優(yōu)點。
二.時鐘體系
2.1 2440時鐘體系
①晶振多少Hz》》》12MHz
②PLL有哪些?????? ? MPLL,和UPLL
③PLL=>時鐘?????? ? MPLL產生了FCLK、HCLK、PCLK;UPLL產生了UCLK
④時鐘做什么?
S3C2440可以使用外部晶振(XTIpll)(默認為12MHZ)和外部時鐘(EXTCLK)兩種方式輸入時鐘信號。它由跳線OM[3:2]決定。 S3C2440 默認的工作主頻為12MHz
(晶振頻率),S3C2440有兩個PLL:MPLL和UPLL。通過MPLL會產生三個部分的時鐘頻率:FCLK、HCLK、PLCK。UPLL則負責產生USB所需時鐘UCLK。
三.1 時鐘初始化流程
1、上電幾毫秒后,晶振輸出穩(wěn)定,FCLK=晶振頻率,nRESET信號恢復高電平后,CPU開始執(zhí)行指令。
2、我們的程序開頭啟動MPLL,設置MPLL的寄存器
3、在設置MPLL的寄存器后,需要等待一段時間(LockTime),MPLL的輸出才穩(wěn)定。在這段時間(Lock Time)內,FCLK停振,CPU停止工作。Lock Time的長短由寄存器LOCKTIME設定。
4、Lock Time之后,MPLL輸出正常,CPU工作在新的FCLK下。
四、代碼編寫
#define CLKDIVN 0x4c000014????????????????????????? ? 定義CLKDIVN位置
#define MPLLCON 0x4c000004????????????????????????? ? 定義MPLLCON位置
#define MPLL_405MHz (127<<12)|(4<<4)|(1<<0)????????? ?設置MPLL在405MHz下需要哪些位,直接左移得到
clock_init:
????ldr r0, =CLKDIVN??????????????????????????????? ? 之前的都錯了,ldr偽指令是把CLKDIVN放入r0
????mov r1, #0x5????????????????????????????????????? 設置HDIVN為10.FCLK/4;PDIVN為0,HCLK/2。FCLK:HCLK:PCLK = 1:4:8
????str r1, [r0]????????????????????????????????????? 設置好后,存入CLKDIVN寄存器
????mcr p15,0,r0,c1,c0,0????????????????????????????? note中的進入異步模式
????orr r0,r0,#0xc0000000
????mcr p15,0,r0,c1,c0,0
????ldr r0, =MPLLCON??????????????????????????? ? ? ? ?設置PLL輸出:把r0中放入MPLLCON
????ldr r1, =MPLL_405MHz???????????????????????????????r1設置好位
????str r1, [r0]????????????????????????????????????? ?存入寄存器MPLLCON
????mov pc, lr
? ? ? ? ? ? ?
?
?