PCLK和HCLK的英文全称叫hclk是什么时钟

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
[计算机]FLCK、HCLK和PCLK的关系
下载积分:700
内容提示:[计算机]FLCK、HCLK和PCLK的关系
文档格式:PDF|
浏览次数:140|
上传日期: 05:15:55|
文档星级:
该用户还上传了这些文档
[计算机]FLCK、HCLK和PCLK的关系
官方公共微信&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!9285人阅读
linux/unix(138)
嵌入式系统(42)
一、对clock的基本认识
1 s3c2410的clock & power
management模块包含三个部分:clock control、usb control、power
control。现在的关注点是clock control。
2、s3c2410有两个pll(phase locked
loop,锁相环,在高频中学过,可以实现倍频,s3c2410的高频就是由此电路产生的)。其中一个是MPLL,M即为main,用来产生三种时钟信号:Fclk(给CPU核供给时钟信号,我们所说的s3c2410的cpu主频为200MHz,就是指的这个时钟信号,相应的,1/Fclk即为cpu时钟周期)、Hclk(为AHB
bus peripherals供给时钟信号,AHB为advanced high-performance bus)、Pclk(为APB
bus peripherals供给时钟信号,APB为advanced peripherals
在这里,需要了解一下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。而s3c2410还只能支持AMBA 2
specification,这个版本包含AMBA 2 AHB Interface、AMBA 2 APB
Interface。也就是在s3c2410的框图中看到的两种总线接口。需
要注意的是,这两种总线所连的外设是有区别的。AHB总线连接高速外设,低速外设则通过APB总线互连。显然,对不同总线上的外设,应该使用不同的时钟信
号,AHB总线对应Hclk,APB总线对应Pclk。那么事先就应该弄清楚,每条总线对应的外设有那些,这样在设置好时钟信号后,对应外设的初始化的值
就要依此而确定了。
bus上的外设有LCD controller(CONT代表controller,控制器)、USB Host
CONT、ExtMaster、Nand CONT和nand flash boot loader、bus CONT、interrupt
CONT、power management、memory
CONT(sram/nor/sdram等)。
bus上的外设有UART、USB device、SDI/MMC、Watch Dog Timer、bus
CONT、spi、iic、iis、gpio、rtc、adc、timer/pwm。
3、主时钟源来自外部晶振或者外部时钟。复位后,MPLL虽然默认启动,但是如果不向MPLLCON中写入value,那么外部晶振直接作为系统时钟。
EDUKIT-III的外部晶振有两个,一是用于系统时钟,为12MHz;一个用于RTC,为32.768KHz。以前实验没有向MPLLCON写入数
值,所以系统时钟都是12MHz。从这里也可以发现一个问题,如果外部晶振开始没有焊上,那么系统是无法正常启动的。因为按照上述规则,复位后还没有写入
MPLLCON,这时又没有可以使用的时钟源,所以不会启动。也就是硬件完成后,这个12MHz的晶振是一定要焊上的,才能进行后续的硬件测试工作。
二、clock设置的步骤
首先应该读懂下一段:
during the power-
&The crystal
oscillator begins oscillation within several
milliseconds.
&When nRESET is
released after the stabilization of
&the PLL starts
to operate according to thedefault
configuration.
is commonly known to be unstable after power-
&so Fin is fed
directly to FCLK instead of the Mpll&(
PLL output)
&before the
software newly configures the PLLCON.
user does&not
&want to change
the&default
PLLCON&register
&after&reset
user shouldwrite
value into PLLCON&register
The PLL restarts the lockup sequence toward
&frequency only
after the software configures the PLL with
&frequency.
can be configured as PLL output&(
&immediately
after locktime
这个主要是基于PLL的特点。简单的描述就是,上电复位后,几个ms后晶振起振。当OSC时钟信号稳定之后,nRESET电平拉高(这是硬件自动检测过
程)。这个时候,PLL开始按照默认的PLL配置开始工作,但是特殊性就在于PLL在上电复位后开始是不稳定的,所以s3c2410设计为把Fin在上电
复位后直接作为Fclk,这是MPLL是不起作用的。如果要想是MPLL起作用,那么方法就是写入MPLLCON寄存器值,然后等待LOCKTIME时间
后,新的Fclk开始工作。下面把这些步骤分来来描述,软件步骤部分结合程序进行。
1、上电几个ms后,晶振输出稳定。Fclk=晶振频率。nRESET恢复高电平后,cpu开始执行指令,这完全是硬件动作,不需要软件设置。
2、第一步软件工作: 设置P M S divider control,也就是设置MPLLCON寄存器。
关于PMS,可以看Figure
7-2.寄存器MPLLCON的设置呢,其实有一定的规则,并非你想要的每个Fclk频率都可以得到。官方推荐了一个表PLL VALUE
TABLE,要按照这个进行。否则的话,就需要自己按照公式推算,但是mizi公司并不保证你的设置是合适的。所以,如果想要工作在200MHz,还是按照vivi的推荐值即可。
&set P M S
divider control
&&&&&&&&mov
&#CLK_CTL_BASE
vMPLLCON_200
&&&&&&&&str
&#oMPLLCON]
其中,MDIV=0x5c,PDIV=0x04,SDIV=0x00.公式Mpll(Fclk)=(m&Fin)/(p&(2^s))【m=MDIV+8,
p=PDIV+2,s=SDIV】
3、第二步软件工作: 设置CLKDIVN。
这一步是设置分频系数,即Fclk为cpu主频,Hclk由Fclk分频得到,Pclk由Hclk分频得到。假设Hclk是Fclk的二分频,Pclk是
Hclk的二分频,那么分频系数比就是Fclk:Hclk:Pclk=1:2:4.那么Hclk为100MHz,总线时钟周期为10ns。Pclk为
&change clock
&&&&&&&&mov
&#CLK_CTL_BASE
&&&&&&&&mov
&#vCLKDIVN
&&&&&&&&str
&#oCLKDIVN]
4、第三步软件工作: CLKDIVN的补充设置
CPU bus mode has to be changed from the fast bus mode to the
asynchronous bus mode&using
&following
instructions.
MMU_SetAsyncBusMode
CPU bus mode is the fast bus mode,
&the CPU will
operate by the HCLK.
&feature can
be used to change the CPU frequency as a half without affecting the
看了上段话,只需要翻译出来就可以了。
&MMU_SetAsyncBusMode
&set asynchronous
MMU_SetAsyncBusMode
5、第四步软件工作:等待locktime时间,让新的Fclk生效
&&&&&&&&mov
&#CLK_CTL_BASE
&&&&&&&&str
&#oLOCKTIME]
6、对外设的影响
在这个实验中,主要是有两个需要改变,一个外设是UART,一个外设是SDRAM。
(1)UART,它是接在APB总线上,所以对应的时钟信号为Pclk,现在为50MHz。如果想要设置波特率为115200bps,那么根据公式
UBRDIV0=(int)(PCLK/(bps*16))-1计算,应该为26。如果放到程序中,那么应该注意形式。具体如下:
UART_BAUD_RATE)
(2)SDRAM,主要的影响因素为刷新频率。前面在SDRAM中没有具体分析,现在可以详细说明。使用了两片HY57V561620CT-H,查看手册其刷新频率为8192
cycles/64ms,所以刷新周期64ms/5us。看寄存器REFRESH的各个位的设置情况:
&REFEN[23]:开启自动模式,设为1
&TREFMD[22]:设为Auto refresh模式,设为0
&Trp[21:20]:看看RAS precharge
Time,查看SDRAM手册,发现-H系列此参数至少为20ns,现在Hclk对应的时钟周期为10ns,所以至少应该为2个clock。可以设为00
&&& &Tsrc:
Semi Row Cycle Time,也就是RAS Cycle
Time,至少65ms,所以至少得6.5clock,按照可选值,应该设置为11
&Refresh[10:0]:
公式refresh period = (2^11 - refresh_count
+1)/Hclk,由此推导出refresh_count=2^11+1-refresh
period*Hclk。带入数值,计算得出f4,这个数值要用四舍五入,减少误差。
&其余的保留值,均设置为0
由此得出该寄存器的值应该为0x008c04f4。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1608213次
积分:18276
积分:18276
排名:第373名
原创:139篇
转载:653篇
评论:351条
(4)(1)(2)(2)(1)(4)(1)(1)(1)(4)(2)(2)(3)(6)(3)(3)(16)(14)(13)(4)(12)(1)(3)(14)(8)(2)(1)(8)(5)(16)(1)(1)(3)(1)(1)(3)(2)(1)(3)(1)(5)(2)(1)(5)(1)(15)(4)(8)(3)(6)(2)(21)(14)(56)(17)(13)(10)(6)(15)(7)(1)(8)(10)(6)(14)(16)(10)(9)(1)(7)(4)(1)(6)(5)(27)(66)(25)(18)(50)(7)(9)(7)(4)(3)(20)(1)(5)(11)(3)(2)(4)(4)(2)(2)(2)(1)(2)(5)(4)(5)(1)(3)(4)(12)(1)(1)(2)(1)(2)6278人阅读
杂项(17)
S3C2440 FCLK、HCLK、PCLK的配置&&
&&& 三星官方搭载的wince系统的FLCK值为400MHz,HCLK值为100MHz、PCLK值为50MHz。那么这些值通过什么方法计算出来呢?大概过程如下,这些值在外部晶振12MHz的基础上通过PLL的作用倍频到我们需要的核心频率如400MHz,由于该频率过高,需要通过对预分频器进行适当的设置获取外围设备能够正常工作的频率如HCLK 100MHz、PLCK 50MHz。
在这里有必要说明FCLK、HCLK、PCLK的含义,FCLK为内核时钟,HCLK为总线时钟(包括USB时钟),PCLK为I/O接口时钟(如常用的SPI、I2C、UART的时钟配置都是通过PCLK时钟为基准的)。
在WINCE6.0 BSP中,设置MPLLCON与设置CLKDINV的代码如下:
;设置MPLLCON
ldr&&&& r0, = MPLLCON
ldr&&&& &r1, = ((92 && 12) + (1 && 4) + 1)
str&&&& r1, [r0]
MPLLCON的配置是用来确定FCLK频率的,计算公式如下:
图1 计算FLCK
从&ldr&&&& &r1, = ((92 && 12) + (1 && 4) + 1) &该代码中可以看到数值存在移位操作,即92&&12、1&&4,这个可以参考图2各预分频值的配置。
图2 MDIV、PDIV、SDIV
MDIV的配置在MPLLCON的[19:12]位,因此配置MDIV的值需要左移12位。同样的道理,配置PDIV值需要左移4位,SDIV值需要左移0位(左移0位相当于不用偏移,废话,嘻嘻)。
那么根据图1计算FLCK的公式,计算过程如下:
FCLK=2*(92+8)*()/(3+2^1)=0MHz
&&& 当FCLK得到正确的配置后,这时就需要对HCLK、FCLK进行配置了,即进行预分频操作,该配置过程很见到,只需要对CLKDIVN简单配置一下就OK了。
CLKDIVN寄存器内容如图3。
;设置CLKDIVN
ldr r0,=CLKDIVN
ldr r1,=0x5
str r1,[r0]
在bsp中CLKDIVN的配置值为0x5,即FCLK:HCLK:PCLK=1:4:8。相对应的频率将会是400MHz、100MHz、50MHz。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:511365次
积分:5651
积分:5651
排名:第3691名
原创:138篇
转载:75篇
评论:40条
(1)(1)(1)(3)(2)(1)(5)(2)(8)(12)(19)(9)(5)(4)(3)(1)(1)(2)(2)(9)(10)(6)(8)(37)(14)(5)(10)(2)(9)(12)(11)(2)

我要回帖

更多关于 中国的英文全称是什么 的文章

 

随机推荐