SOC時鐘配置

2021-10-08 04:38:05 字數 2562 閱讀 3240

soc的時鐘產生單元(

cgu)通過外部輸入時鐘和內部相位鎖相環(

pll)和分頻選擇邏輯產生用於片內的不同頻率的時鐘。片內時鐘頻率的改變通過配置

ahb匯流排全域性控制模組單元內部鎖相環暫存器實現。

cgu單元內部包含三個鎖相環,分別產生系統主時鐘、

ddr物理層時鐘、乙太網物理層時鐘,其配置暫存器位於

ahb匯流排全域性控制模組。

cgu模組還產生

1553

模組時鐘與

uart

時鐘。

鎖相環採用

65nm

工藝庫中的

pllsm65llfrac

鎖相環,其最高輸出頻率為

1.6ghz

,包含小數配置模式和整數配置模式,該時鐘管理單元內部的鎖相環採用整數配置模式,使用者可配置引腳如表

1所列。

表1 普通鎖相環可配置引腳

引腳名稱

方向位寬

說明refdiv(分頻器)i6

鎖相環分頻係數

fbdiv(倍頻器)i12

鎖相環倍頻係數

鎖相環時鐘用foutvco表示,晶振輸入時鐘用clkin表示,倍頻器係數用fbdiv表示,分頻器係數用refdiv表示,主時鐘用mainpll表示,ddr3時鐘用ddrpll表示,乙太網時鐘用enetpll表示。鎖相環配置公式如下:

鎖相環時鐘:foutvco = clkin * fbdiv / refdiv;

主時鐘:mainpll = clkin * fbdiv / (2*refdiv);

ddr3時鐘:ddrpll = clkin * fbdiv / (2*refdiv);

乙太網時鐘:enetpll = clkin * fbdiv / (6*refdiv);

需要注意的地方:輸出時鐘的範圍為400mhz ≤ foutvco ≤ 1600mhz;對於配置訊號refdiv、fbdiv的要求:1 ≤ refdiv ≤ 63;16 ≤ fbdiv ≤ 1600;通過檢查鎖相環狀態暫存器獲知鎖相環是否鎖定,此時再對鎖相環進行配置操作。

主鎖相環的配置:

主鎖相環產生系統主時鐘,對於主時鐘鎖相環的原理分析知道其滿足:

mainpll = clkin * fbdiv / (2*refdiv)。

配置步驟:

讀取全域性控制模組主鎖相環暫存器,檢視鎖相環狀態暫存器

lock

位資訊(0x40c00008

暫存器的第21位

),直到讀出該位為

0x1;

對主鎖相環暫存器的bypass位寫0x1操作(0x40c00008

暫存器的第

20位),對主鎖相環暫存器的lock位寫0x1操作(0x40c00008

暫存器的第

21位);

配置主鎖相環暫存器的主時鐘倍頻係數(fbdiv)和主時鐘分頻係數(refdiv),mainpll = clkin * fbdiv / (2*refdiv),配置主頻為400mhz,則fbdiv = 0xa0,refdiv = 0x5(fbdiv為暫存器的19-8位,refdiv為暫存器的5-0位);

等待主鎖相環暫存器頻率鎖存完成,通過迴圈讀取lock可知,如果lock位讀出為0,表示頻率鎖存完成;

向主鎖相環暫存器的bypass位寫入0,表示時鐘為鎖相環模式,非旁路模式。

ddr鎖相環配置:

ddr鎖相環產生系統ddr3時鐘,對於ddr鎖相環的原理分析知道其滿足:

ddrpll = clkin * fbdiv / (2*refdiv)。

配置步驟:

讀取全域性控制模組ddr鎖相環暫存器,檢視鎖相環狀態暫存器

lock

位資訊(0x40c0000c

暫存器的第21位

),直到讀出該位為

0x1;

對ddr鎖相環暫存器的bypass位寫0x1操作(0x40c0000c

暫存器的第

20位),對主鎖相環暫存器的lock位寫0x1操作(0x40c0000c

暫存器的第

21位);

配置ddr鎖相環暫存器的ddr時鐘倍頻係數(fbdiv)和ddr時鐘分頻係數(refdiv),ddrpll = clkin * fbdiv / (2*refdiv),配置主頻為533mhz,則fbdiv = 0x215,refdiv = 0x32(fbdiv為暫存器的19-8位,refdiv為暫存器的5-0位);

等待ddr鎖相環暫存器頻率鎖存完成,通過迴圈讀取lock可知,如果lock位讀出為0,表示頻率鎖存完成;

向ddr鎖相環暫存器的bypass位寫入0,表示時鐘為鎖相環模式,非旁路模式。

根據時鐘模組暫存器位址在記憶體分配圖中的分布,將其位址定義為整型巨集定義,將暫存器定義為各位各個功能位域的結構聯合體。這樣子將整型位址轉換成暫存器的結構聯合體指標,就能夠通過暫存器位域去編寫底層驅動了,圖1表示巨集定義暫存器的定義和型別轉換,圖2表示暫存器結構聯合體定義。

圖1

圖2

系統時鐘配置

define rcc rcc typedef rcc base 我們先定義乙個結構體指標rcc base,我們知道指標就是位址空間,我們確定了乙個結構體的首位址,那麼這個結構體的大小隨之確定了,這個結構體的成員將會按首位址依次排列,並逐個占用位址空間.訪問乙個結構體指標成員我們用rcc cr.rcc...

基本時鐘配置

task 上一節中提到了延時函式,延時函式的基本原理就是cpu每執行一條語句需要一定固定的時間,而提供這個時間基準的就是微控制器的時鐘訊號。時鐘訊號 於一定的時鐘源,它們是時鐘源經過被選擇和分頻產生的。時鐘源由一定的硬體電路產生,例如晶振和其他各種振盪器。時鐘源類似於人體的心臟 汽車的發動機。而在g...

如何配置DSI時鐘頻率

description 計算dsi資料速率的方式,以及如何配置時鐘clk的方式 keyword dsi data rate mipi clk solution 1 dsi vdo mode下的資料速率data rate的計算公式為 data rate width vsa vbp vfp height...