晶振与软件的关系(深度理解)

晶振与软件的关系(深度理解)

晶振是电路中非常常见的一个元件,常常被人们称为芯片的心脏,确实如此,没有了晶振,可以说一般情况下芯片就无法工作。

晶振与软件的关系(深度理解)

        可编程器件通常来说就是能够通过编程后来执行的芯片,例如各种单片机等等,通常来说我们称软件即是芯片的灵魂。那么如此,作为一个实体的芯片有了心脏,有了灵魂,那这两个是怎么能够支撑芯片实现功能的呢。

        说到这里,我们都知道通常写的各种软件程序都会被编译器等工具编译成汇编语言,而到了汇编语言这一层,就开始了十分有趣的过程。由于之前学习高级语言的关系,刚开始的时候很多人会认为汇编语言和高级语言几乎没区别,不就是换了一个形式嘛,前段时间的时候我也一直这么认为什么指令 形参 什么的 带入高级语言的逻辑而已,其实,这样类似的分析并不是完全正确。从汇编语言开始,就完全不同于高级语言了,因为汇编语言有一个特殊的地方,指令集就是一串活的编码,这句话可能会很费解,但是接下来就知道怎么回事了。

        我们都知道汇编是由指令和寄存器,数据,等构成。比如指令 ,如下图

晶振与软件的关系(深度理解)

 根据图中,假如 我们执行一条语句  MOV  R3,17  

那么 我们此处先不管T1和T2的区别,我们以T1指令为例,将Rd变成二进制放在对应的bit[10:8]为011,imm8对应的数17转换成二进制为0001 0001,。

综上 此条指令对应的整个二进制码为 0010 0011 0001 0001 即:

        0010 0011 0001 0001   就是指令 MOV  R3,17 对应的二进制码。

        可以看到 指令MOV及其包含的数就是一条16位的操作码。我们就实现了将汇编指令变成二级制操作码。其实到这里,这个二进制的操作码就是令程序员闻之色变的机器码。

        我们都知道,指令是一条一条执行的,那么也就是说这一条一条执行的就是机器码,从这开始,就出现了更底一层的东西,因为从这层开始,已经完全不是程序的事了,因为这时已经变成了数字电子技术!

        机器码,一串由0和1构成的数据编码,当它被烧写到芯片的时候,这颗芯片上的运行方式就已经固定死了(注意此时的固定死就包括各种逻辑参数都是一种常量,当常量之间不同组合就变成了变量),另外对于“烧写”这个词等理解完后面的东西,这些也将迎刃而解。

        既然每条指令都是以常量的方式被加载到芯片里,那么他又是怎么运行起来的呢。在这里,我们想一下最开始的计算机是什么样的,没错,就是计算机的鼻祖——打孔纸带计算机,大家可以去搜一下相关的,就不过多说了。而当时如果要识别纸带上由孔组成的一条条指令要怎么办呢法很多,只要能让纸带运行起来,那么这个计算机就变活了。到这里,相信有的已经明白了或者有些朋友早就明白了。晶振就是提供芯片运行程序的驱动。网上很多都说晶振提供基准时间什么的,但是准确度不是很高。晶振配合芯片内的震荡电路完全就是用来驱动程序一步一步往下走的。换一个数字电子技术上的说法,要实现多位加法,是不是得需要触发器,而这触发器的功能就相当于中间没有时间间隔或者时间间隔很小的晶振(触发器中的脉冲功能就类似晶振的脉冲,反着说也一样的)

        没有晶振,程序将无法运行,而不是因为没有时钟源,因为它本身已经失去了运行的动力,而这就是为什么晶振被称为芯片的心脏(当然内部没有程序的或者用震荡电路就可以运行的就不需要晶振啦)。

        其实文中说了那么多就是得出这一个结论,可能前面讲的过于长,后边的过于简短。 文中难免会有个人理解不到或者个别错误的地方,望能理解,可结合更多资料进行扩展阅读。

嵌入式软硬件爱好者

晶振与软件的关系(深度理解) 微信公众号 晶振与软件的关系(深度理解) 一张手册走天下。嵌入式单片机/Linux/Openw

来源:F_ly

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年9月11日
下一篇 2022年9月11日

相关推荐