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

2023-11-12

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

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

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

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

 根据图中,假如 我们执行一条语句  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构成的数据编码,当它被烧写到芯片的时候,这颗芯片上的运行方式就已经固定死了(注意此时的固定死就包括各种逻辑参数都是一种常量,当常量之间不同组合就变成了变量),另外对于“烧写”这个词等理解完后面的东西,这些也将迎刃而解。

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Kotlin快速入门

    kotlin kotlin 完全兼容 java 可以和java互相调用 2017年谷歌正式将其作为android开发的第一语言 kotlin编译后产生与java编译后相同的class字节码文件 基础语法 第一个代码 hello world
  • Method的invoke()方法的使用

    public Object invoke Object obj Object args throws IllegalAccessException IllegalArgumentException InvocationTargetExcep
  • idea插件开发入门

    前言 最近想研究一款自动在idea中定位缺陷及发送JIRA的快捷工具 方便提升报自动化脚本的bug的效率 因为idea插件学习是必不可少了 沉淀小结如下 idea插件开发入门 插件用途 工程创建 配置文件 Action实现 开发语法 常用对

随机推荐

  • js三种获取数组的最后一个元素的方法

    一 pop 方法 pop 方法 删除数组最后一个元素 并返回该元素 所以利用这个方法可以取到数组的最后一个 同理shift 可以取到数组的第一个元素 shift 删除数组第一个元素 并返回该元素 let arr 1 2 3 let ele
  • css background image size,html - css background image content size - Stack Overflow

    body margin 0 height 100vh top box text align center height 20 border 1px solid blue background red two area display inl
  • https http 重定向 302 303

    笔者在项目中曾经遇到过这样的情况 就是整个web应用使用的https协议 但是其中某一个表单提交单服务器端 服务器返回了一个重定向的响应 但是此时浏览器直接被拦截 没有做重定向处理 F12打开一看 是因为在https的请求中 混杂着http
  • 解决docker下载安装速度慢的问题

    1 进入etc docker 目录 root iZwz98nzsodcbigjqrrmxmZ cd etc docker 2 在该目录下新建daemon json文件 registry mirrors https docker mirror
  • git 查看远程分支在不同的终端看到的分支不同的解决方法

    多人协作开发的时候 有时候有很多分支 并且在有些分支在a电脑删除之后 在b电脑查看当前分支 居然还有那个被删除掉了的分支 git fetch prune origin 直接执行这行代码 之后再查看一下远程分支 git branch a a
  • SpringBoot在K8s下实现优雅停机

    在K8s中 当我们实现滚动升级之前 务必要实现应用级别的优雅停机 否则滚动升级时 还是会影响到业务 本文介绍SpringBoot应用实现优雅停机 此次教程基于SpringBoot 2 5 0 1 加入必要依赖
  • 简单理解常量、常量池、运行时常量池和字符串常量池

    1 常量 常量在java中就值的是一般的字面量 比如字符串 整数 浮点数等等数据 简单理解java中什么叫常量 2 常量池 也叫静态常量池或者class文件常量池 说常量池一定要指明是编译器产生的 它的组成为字面量和符号引用 3 运行时常量
  • 决策树模型——鸢尾花分类

    构建一个决策树分类模型 实现对鸢尾花的分类 1 lris数据集介绍 鸢尾花数据集是机器学习领域中非常经典的一个分类数据集 数据集全名为 Iris Data Set 总共包含150行数据 每一行由4个特征值及一个目标值 类别变量 组成 其中4
  • 先进API生产力工具eqable HTTP,一站式开发调试工具推荐

    简介 Reqable是什么 Regable Fiddler Charles Postman Reqable是HTTP一站式开发 调试国产化解决方案 拥有更便捷的体验 更先进的协议 更高效的性能和更精致的界面 Reqable是一款跨平台的专业
  • 【日常积累】HTTP和HTTPS的区别

    背景 在运维面试中 经常会遇到面试官提问http和https的区别 今天咱们先来简单了解一下 超文本传输协议HTTP被用于在Web浏览器和网站服务器之间传递信息 HTTP协议以明文方式发送内容 不提供任何方式的数据加密 如果攻击者截取了We
  • 【Python】类与对象进阶

    类与对象有三大特性 封装 多态和继承 其中类和对象之间也涉及到很多的细节和方法 例如方法的分类 对象的权限等等 所有类和对象的进阶还有很多的知识点需要学习 目录 权限 私有属性和私有方法 继承 单继承 多继承 多态 实例 类与对象的内存理解
  • 利用Python消费RocketMQ消息队列数据

    语言 python3 6 环境 centos 7 1 安装 rocketmq python 地址见 https pypi org project rocketmq pip install rocketmq 2 安装rocketmq clie
  • 【定量分析、量化金融与统计学】R语言:多元线性回归实例

    今天来做一个R语言的多元线性回归的实例 题目是这样的 练习 度假村排名 旅游胜地 专门介绍高级度假和住宿的杂志 Spas 在 读者选择 评选的世界20家独立海滨精品酒店中榜上有名 所显示的数据是这些酒店根据Resorts温泉年度读者选择调查
  • Springboot整合RestTemplate发送http请求

    据技术选型总结常见的三种方式发送http请求 本文介绍Springboot整合RestTemplate发送http请求方式 其他两种如下链接 java原生发送http请求 程序三两行的博客 CSDN博客 HttpClient和OkHttp发
  • java语言简介

    什么是Java语言 一种面向对象的语言 编写程序的开始就是编写类的开始 class 用于定义类 一种平台无关的语言 必须程序运行的解释环境 真正的运行步骤为 javac编译 java解释执行 一种健壮的语言 吸收了C C 语言的优点 但是去
  • Idea安装配置Maven【简述】

    Maven 是一个管理和构建Java项目的工具 它主要的生命周期 编译 测试 打包 发布 Maven项目可以在不同IDE使用 比如 Idea 和 eclipse 他们自身的项目是不能互通的 然而使用Maven构建的项目可以在这两个不同平台使
  • C++ Primer 学习笔记 第四章 表达式

    表达式由运算对象组成 对表达式求值得到一个结果 字面值和变量是最简单的表达式 其结果就是字面值和变量的值 把一个运算符和一个或多个运算对象组合起来可以生成较复杂的表达式 C 定义了一元运算符 二元运算符和三元运算符 作用于一个运算对象的运算
  • oracle语句中截取字符,Oracle中字符串截取最全方法总结

    substr 函数 截取字符串 语法 SUBSTR string start length string 表示源字符串 即要截取的字符串 start 开始位置 从1开始查找 如果start是负数 则从string字符串末尾开始算起 leng
  • 剑指offer:中等部分

    剑指offer 中等部分 001 求1 2 n 求 1 2 n 要求不能使用乘除法 for while if else switch case等关键字及条件判断语句 A B C 示例 1 输入 n 3 输出 6 示例 2 输入 n 9 输出
  • 晶振与软件的关系(深度理解)

    晶振是电路中非常常见的一个元件 常常被人们称为芯片的心脏 确实如此 没有了晶振 可以说一般情况下芯片就无法工作 可编程器件通常来说就是能够通过编程后来执行的芯片 例如各种单片机等等 通常来说我们称软件即是芯片的灵魂 那么如此 作为一个实体的