各種時鐘/ PLL,FCLK、HCLK、PCLK,AHB/APB (S3C2410)

把網友的總結一下,歸納如下:


1、PLL(鎖相環)
    爲了降低電磁干擾和降低板間佈線要求,芯片外接的晶振頻率通常很低(這塊板子用的12MHz),通過時鐘控制邏輯的PLL提高系統使時鐘。鎖相環起到的是倍頻的作用,鎖相環的使用有鎖定和連接的過程。(有的芯片鎖定連接過程是自動完成的比如S2440,有的則需要手動編程實現鎖定和連接,總之PLL屬於一種片上外設,不同廠家的產品使用上略有不同)

    以S2410爲例,其內部有兩個鎖相環: MPLL、UPLL,分別爲MCU和USB控制器產生時鐘信號,其中MPLL未連接之前MCU直接使用震盪源作時鐘信號,連接後則改用MPLL倍頻後的震盪源作時鐘信號;而UPLL因爲是爲USB設備提供時鐘信號,所以規定必須是48MHz或96MHz。


2、分頻器

    S2410有四種時鐘信號(從UPLL分出來的UCLK,從MPLL分出來的FCLK/HCLK/PCLK)。UCLK(比爲48MHz)是供給USB的,FCLK是供給MCU的,HCLK供給AHB,PCLK供給APB。

FCLK 與MPLL的頻率一樣。我們所說的S2410的CPU主頻爲200MHz,就是指的這個時鐘信號,相應的,1/FCLK即爲CPU時鐘週期。

HCLK 可以設置爲FCLK或FCLK/2 ,即通過設置相應得寄存器CLKDIVN中的對應位HDIVN即可,其中HDIVN爲0時對應FCLK,爲1時對應FCLK/2

PCLK可以設置爲HCLK或HCLK/2 ,即通過設置相應得寄存器CLKDIVN中的對應位PDIVN即可,其中PDIVN爲0時對應HCLK,爲1時對應HCLK/2



3、AHB/APB

AHB與APB的地位相當於PC中的南北橋,是兩道獨立的片內總線。AHB:advanced high-performance bus;APB: advanced peripherals bus。 在這裏,需要了解一下AMBA system architecture了。簡單的說,AMBA是一種協議,這種協議已經稱爲片上組織通信的事實上的標準(the de facto standard for on-chip fabric communication)。下面給出英文描述:

The AMBA protocol is an open standard, on-chip bus specification that details a stategy for the interconnection and management of functional blocks that makes up a system-on-chip(SoC).It facilitates "right-first-time" development of embedded processors with one or more CPU/signal processors and multiple peripherals. The AMBA protocol enhances a resuable design methodology by defining a common backbone for SoC modules.

需要知道的是,AMBA總線是ARM提出的一種解決方案,它並非唯一的規範,但是因爲ARM的廣泛使用,AMBA總線也就成爲了事實上的規範了。現在AMBA總線最新爲AMBA 3 specification版本,包括AMBA 3 AXI Interface、AMBA 3 AHB Interface、AMBA 3 APB Interface、AMBA 3 ATB Interface。而S2410還只能支持AMBA 2 specification,這個版本包含AMBA 2 AHB Interface、AMBA 2 APB Interface。也就是在S2410的框圖中看到的兩種總線接口。

這兩種總線所連的外設是有區別的。AHB總線連接高速外設,低速外設則通過APB總線互連。顯然,對不同總線上的外設,應該使用不同的時鐘信號,AHB總線對應HCLK,APB總線對應PCLK。弄清楚每條總線對應的外設,在設置好時鐘信號後,對應外設的初始化的值依此而確定。

bus上的外設有LCD controller、USB Host CONT、ExtMaster、Nand CONT和nand flash boot loader、BUS CONT、interrupt CONT、power management、memory CONT(sram/nor/sdram等)。

APB bus上的外設有UART、USB device、SDI/MMC、Watch Dog 、BUS CONT、SPI、IIC、IIS、GPIO、RTC、ADC、Timer/PWM。

4、Fin

指CPU外圍接的晶振本身的頻率,通常爲12MHz。

注意:

1. Although the MPLL starts just after a reset, the MPLL output (Mpll) is not used as the system clock until the software writes valid settings to the MPLLCON register. Before this valid setting, the clock from external crystal or EXTCLK source will be used as the system clock directly. Even if the user does not want to change the default value of MPLLCON register, the user should write the same value into MPLLCON register”

復位後,MPLL雖然默認啓動,但是如果不向MPLLCON中寫入value,那麼外部晶振直接作爲系統時鐘。 EB110-4的外部晶振有兩個,一是用於系統時鐘,爲12MHz;一個用於RTC,爲32.768KHz。若實驗沒有向MPLLCON寫入數值,系統時鐘是12MHz。(從這裏也可以發現一個問題,如果焊板子時外部晶振開始沒有焊上,那麼系統是無法正常啓動的。因爲按照上述規則,復位後還沒有寫入 MPLLCON,這時又沒有可以使用的時鐘源,所以不會啓動。也就是硬件完成後,這個12MHz的晶振是一定要焊上的,才能進行後續的硬件測試工作。)
   上電覆位後,幾個ms後晶振起振。當OSC時鐘信號穩定之後,nRESET電平拉高(這是硬件自動檢測過程)。這個時候,PLL開始按照默認的PLL配置開始工作,但是特殊性就在於PLL在上電覆位後開始是不穩定的,所以S2410設計爲把Fin在上電覆位後直接作爲FCLK,這是MPLL是不起作用的。如果要想是MPLL起作用,那麼方法就是寫入MPLLCON寄存器值,然後等待LOCKTIME時間後,新的FCLK開始工作。

即使不想改變MPLLCON寄存器的值,也要重新賦值一下。

.

.

.

.

.

.

.

TIPS:

1、FCLK PCLK HCLK:

http://blog.csdn.net/vrix/archive/2009/07/28/4386400.aspx

2、北郵人論壇:

http://bbs.byr.cn/article/Embedded_System/2561

3、BootLoader中PLL的初始化代碼分析:

http://blog.csdn.net/formerman/archive/2009/07/26/4380126.aspx

4、關於時鐘及分頻的討論:

http://www.linuxforum.net/forum/showflat.php?Cat=&Board=driver&Number=664181&page=&view=&sb=&o=&fpart=all&vc=1

5、從PC總線到ARM的內部總線:

http://blog.csdn.net/thewayma/archive/2009/06/22/4286891.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章