打印

请教:从系统时钟 到底是什么意思啊?谢谢!

[复制链接]
9175|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
星星电灯|  楼主 | 2007-4-21 11:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教:
系统时钟 ,指令周期,时钟周期,外部晶振,内部晶振

这几个东西,很久了,还是没有弄懂,
请各位大哥帮帮我。

问题1:
系统时钟 是什么意思?
他是由外部晶振来决定的吗?

我的芯片的 MIPS 为 48 ,这个 MIPS 和系统时钟有关系吗?

问题2:
指令周期 是什么意思?
它是由什么来决定的
是由外部晶振决定的,还是 芯片自己本身决定的?
我的芯片的 MIPS 为 48 ,这个 MIPS 和指令周期有关系吗?


问题3:
时钟周期 是什么意思?
它是由什么来决定的
是由外部晶振决定的,还是 芯片自己本身决定的?
我的芯片的 MIPS 为 48 ,这个 MIPS 和时钟周期有关系吗?

问题4:
到底我的系统是使用外部晶振,还是外部晶振,
是由什么来决定的呢?
是不是在把 hex 烧写到芯片时有选项可以选择的?

问题5:
倍频,是不是只有使用内部晶振才有这个功能?


谢谢!

相关帖子

沙发
turmary| | 2007-4-21 13:17 | 只看该作者

我认为

没有倍频时,(或外部或内部)晶振频率等于时钟周期.
指令周期根据机器的不同相当于一个或数个时钟周期.
典型的8051有单指令周期指令INC有12个时钟周期.

系统时钟有时也指时钟周期.

使用特权

评论回复
板凳
星星电灯|  楼主 | 2007-4-21 14:01 | 只看该作者

谢谢大哥,还是有几个问题不明白

非常非常感谢大哥,
还是有几个问题不明白

问题1:
我在上书上看到:
振荡周期:指振荡源的周期
时钟周期:为振荡周期的两倍=振荡周期P1+振荡周期P2
机器周期:含 6 个时钟周期
指令周期:完成一条指令的全部时间


假设我用我 外部晶振 为 12MHZ
那么振荡周期为 1/12000 秒 ,是吗?
那么时钟周期为 2/12000 秒, 是吗?


问题2:
指令周期和晶振是没有关系的,是吗?
也就是说程序执行的快和慢是和晶振的大小没有关系的,是吗?
只和 芯片本身的 MIPS 有关,是吗?


问题3:
PLL 是什么意思?
一位大哥时钟周期和 PLL 的设置有关

问题4:
一位大哥说
时钟周期=一个有效的机器周期

可是书上写着  机器周期:含 6 个时钟周期
到底谁对啊?


问题5:
大哥能看懂这段代码吗?
/////系统时钟初始化
void Oscillator_Init()
{
    int i;
    SFRPAGE   = CONFIG_PAGE;
    OSCXCN    = 0x66;
    for (i = 0; i < 3000; i++);  // Wait 1ms for initialization
    while ((OSCXCN & 0x80) == 0);
    PLL0CN    = 0x04;
    CCH0CN    &= ~0x20;
    SFRPAGE   = LEGACY_PAGE;
    FLSCL     = 0x90;
    SFRPAGE   = CONFIG_PAGE;
    CCH0CN    |= 0x20;
    PLL0CN    |= 0x01;
    PLL0DIV   = 0x02;
    PLL0FLT   = 0x2F;
    PLL0MUL   = 0x09;
    for (i = 0; i < 15; i++);  // Wait 5us for initialization
    PLL0CN    |= 0x02;
    while ((PLL0CN & 0x10) == 0);
    CLKSEL    = 0x02;
    OSCICN    = 0x00;
}



谢谢!

使用特权

评论回复
地板
jxmemail| | 2007-4-21 22:50 | 只看该作者

多看书

问题1正确,
问题2不对。指令周期固定的是他所用的机器周期个数,不论晶震的频率是多少,1条指令所用的机器周期数是固定的。但是机器周期确与晶振的频率直接相关,如51型片,1个机器周期=12个晶振振荡周期。这样指令周期变与振荡周期相关。如1条指令固定用4个机器周期(SYCLK),1SYCLK=12CLK(晶振周期),这样一个指令周期=4SYCLK(机器周期)=48CLK(晶振周期),这里固定的只是“4”,最终还是却绝于CLK(晶振周期)。
问题3
PLL为锁相环(Phrase lock loop),是一种分频和倍频电路。
你写的程序因该是8051F系列单片机的时钟配置子程序。
void Oscillator_Init()
{
    int i;
    SFRPAGE   = CONFIG_PAGE;//切换到配置时钟的特殊功能寄存器(SFR)
                               所在的页)
    OSCXCN    = 0x66;       //这句好像是配置外部时钟用的,具体是所                           使    用的外部时钟类型选择。
    for (i = 0; i < 3000; i++);  // Wait 1ms for initialization
    while ((OSCXCN & 0x80) == 0);//等待外部晶振启动并稳定
    PLL0CN    = 0x04;            //PLL使用外部晶振作为振荡源 
    CCH0CN    &= ~0x20;          //好像是关闭内部晶振
    SFRPAGE   = LEGACY_PAGE;    //切换SFR页
    FLSCL     = 0x90;           
    SFRPAGE   = CONFIG_PAGE;
    CCH0CN    |= 0x20;       //配置PLL参数,主要是驱动电流什么的
    PLL0CN    |= 0x01;       //
    PLL0DIV   = 0x02;        //PLL分频系数
    PLL0FLT   = 0x2F;   
    PLL0MUL   = 0x09;        //PLL倍频系数
    for (i = 0; i < 15; i++);  // Wait 5us for initialization
    PLL0CN    |= 0x02;
    while ((PLL0CN & 0x10) == 0);
    CLKSEL    = 0x02;       //使用PLL作为系统时钟源
    OSCICN    = 0x00;       //这个时间长了,不记得了。
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

74

主题

121

帖子

1

粉丝