软件跟硬件之间的界限已经越来越模糊了,那么处于这个灰色地带的,就是固件了。这就分成三类工作者。

1、软件工程师一般指做图形界面的程序员,工作内容就是写C++、JAVA、Web等。

2、硬件工程师当然是指玩电路板的,工作内容就是画原理图、PCB等。

3、固件工程师也叫单片机工程师,既写代码(主要是C语言、汇编)又要画电路图。

玩单片机的人,可能会有个疑问,为什么我写的C语言能操作到底层的硬件?其实在《计算机组成原理》已经有很详细的介绍了。

我这里粗略地介绍一下,这个原理。

首先你可以搜索一下“从零开始造电脑”,这位叫Steve的大神,就告诉你,用晶体管可以做出CPU(单片机也是CPU)。

当然,我们现在可不会落后到需要到晶体管来制造电脑。

接下来,你可以看一部叫《乔布斯》的电影,剧中就给你展示苹果公司的第一台计算机。

嘿嘿,看到那些黑色的芯片没有?还有两个大大的变压器。这说明了在大学玩单片机的时代,就相当于回到苹果公司的初始时期!是不是很激动人心?

其实你可以用74系列的逻辑IC、单片机等,来搭建一个属于自己的计算机。这就是说人们把若干个晶体管集成为一块74系列的IC,如果集成度更高呢?那就是手机或者台式机用的多核CPU了。

好,介绍了这些古董之后,就让你有个认识,计算机本质上是N个晶体管的组合,也是数字逻辑芯片的组合,更高级的,就是一块数模混合的芯片,具体形式是由你的工艺决定的。现在回到正题,介绍一下数电的基础知识。

因为CPU主要功能是计算,也就是可以直接运用数学知识来解决问题,这里就举个例子介绍一下,CPU如何计算加法,也就是用数电里的门电路搭一个加法器。

怎样用晶体管搭这些与、或、非门就不说了,不懂的,可以翻书。上图就告诉你,可以用这些门电路搭一个加法器。

怎样输入Ai=0,Bi=1,Ci=0?用74系列的IC的话,可以直接把Ai,Ci接GND,Bi接VCC,就实现加法了。而在CPU内部也是一样可以这样做的,但是CPU可没那么死板,只算常数的加法。

上图中,蓝色箭头指向的1,就是接VCC的,而红色箭头,就是接GND。

在CPU内部,还有ROM,它可以把你要计算的加数和被加数存进去(ROM输出的高低电平,跟你接GND和VCC是一样的效果),而结果则存在寄存器(先暂存,以备后面使用)。

现在有个问题,如果加完之后还要计算乘法(在信号处理领域的卷积运算的核心单元就是乘加器),怎么办?谁来自动完成这个动作?幸好,CPU里面有个叫ALU(算术逻辑单元)来处理这件事情。

这里的控制单元,就把ROM里面的数据取出来,再用选择器,来调用加法器和乘法器,最终把结果存到寄存器中。

如果ROM里面只存数据,那是无法让控制单元知道,你要执行加法还是乘法,要解决这个问题,就需要在ROM里面再划分一个区域,存放指令码。

这个指令码,跟数据是一样,都是0、1的二进制数,只是用途不同,所以起了不同的名字。

其实这个指令码,对应在单片机里面的汇编语言,就是操作码(如:MOV);而操作数就是数据(如:01H)。具体的,可以看看单片机的教材。

根据指令码的设计方法来分,有四种,分别是CISC、RISC、VLIW、TTA,具体区别可以看计算机组成原理。

而PC(程序计数器)就是控制ROM的地址,现在你要知道PC是不能出错的,一旦出错,就意味着单片机不按照你的代码来工作。

现在,我在8位的CPU的ROM里面,第一个地址存了0x03这个指令码来代表加法,而在第二、三个地址存了加数和被加数,然后在第四个地址存了0x05代表乘法,在第五、六个地址存了乘数和被乘数。那么,按照一定的规则来设计控制单元(这个规则可以自己定义的),它就知道0x03是要执行加法。

那么这个规则如何设计?最简单的,就是用与门了,然后输出一个使能信号,让加法器工作,就跟上面的74LS160差不多。

但是CPU可没那么简陋,它可以使用状态机、流水线等,来控制这些基本单元(如:加法器、乘法器),如下图所示。

说到这里,你至少应该知道,我们只要改变ROM的内容,就可以操作CPU内部的ALU,从而操作CPU的各个硬件单元了。

下面给个相对完整一点的ALU内部结构图。

ROM的内容本质上是一些电荷量(电容上有、无电荷,代表二进制的1和0),也就是固件、软件工程师写的代码。而硬件,就是由晶体管搭建的数字、模拟电路(如:单片机内部的比较器、ADC等)。所以硬件是物理器件,不容易更改;而ROM的内容完全可以用烧录器就轻松改变它,修改成本非常低,而且很灵活。

在这里,你很难表述,这些电荷量是软件还是硬件,但是CPU的这种结构,导致了两种不同类型的工作者,我们称他们为软件工程师和硬件工程师。而单片机程序员写的代码,跟硬件密切相关,而且一旦完成之后,很少需要修改的(不像软件工程师修改的那么频繁),我们称之为固件。

什么是硬件以及什么是软件相关推荐

  1. 【STM32-V7】STM32H743XIH6开发板,丰富软件资源,强劲硬件配置,大量软件解决方案持续更新中(2020-07-22)

    [STM32-V7]STM32H743XIH6开发板,丰富软件资源,强劲硬件配置,大量软件解决方案持续更新中(2020-07-22) 参考文章: (1)[STM32-V7]STM32H743XIH6开 ...

  2. EasyNVR智能云终端硬件与EasyNVR解决方案软件综合对比

    背景分析 互联网视频直播越来越成为当前视频直播的大势,对于传统的安防监控,一般都是局限于内网,无法成批量上云台.传统的海康和大华的平台虽然可以通过自身私有协议上云平台 集总管控,但是往往只是支持自身的 ...

  3. 为什么谈及硬件,必言软件?软硬件协同让开源世界“阴阳调和”

     作者:Muhammad Ahmad,希捷科技高级工程师,开源战略主管 数据即价值.但是,仅仅拥有可用的数据并不意味着可以充分利用数据价值.企业要思考一个关键问题:我们如何发掘数据中蕴藏的却又难以触及 ...

  4. 计算机主机系统构成,一个完整的计算机系统通常是由()构成。A.硬件B.主机C.软件D.操作系统...

    一个完整的计算机系统通常是由()构成.A.硬件B.主机C.软件D.操作系统 更多相关问题 [判断题] 灭火救援业务训练是公安消防部队官兵进行技.战术的训练活动.() [单选] <劳动合同法> ...

  5. 硬件堡垒机、软件堡垒机、云堡垒机品牌怎么选?

    硬件堡垒机.软件堡垒机.云堡垒机品牌怎么选? 作为一个运维leader,硬件堡垒机.软件堡垒机.云堡垒机我都用过,现在市面上的堡垒机品牌有很多,价格相差比较大,但选购堡垒机并非越贵的就越好,而是要综合 ...

  6. 运维老鸟总结_硬件堡垒机、软件堡垒机、云堡垒机品牌怎么选?

    作为一个运维leader,硬件堡垒机.软件堡垒机.云堡垒机我都用过,现在市面上的堡垒机品牌有很多,价格相差比较大,但选购堡垒机并非越贵的就越好,而是要综合考量各项指标与运维团队本身的契合度,以及在实际 ...

  7. 硬件看门狗和软件看门狗

    看门狗分硬件看门狗和软件看门狗.硬件看门狗是利用一个定时器电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零(俗称"喂狗"),因此程序正常工作时,定时器总不能溢出 ...

  8. 硬件程序员和软件开发程序员相比,哪一个就业发展前景比较好呢?

    计科专业毕业从事软件开发,也有和硬件工程师打交道,从人员数量相比硬件工程师和软件工程师无法比较.毕竟硬件主要在开始阶段,一旦可以用了后续人手会少许多,其实单纯的比较软件和硬件没有多大的意义,任何一种岗 ...

  9. 嵌入式软件硬件比例_嵌入式做硬件方向好还是软件方向好?

    利益相关:利益相关 先放结论Q:现在学硬件方向好还是软件方向好? A:建议偏软件! 下面咱们详细说说为什么. 硬件开发就是做电路板或者电路原理图,一般把原理图叫做设计,PCB叫做版图或layout在芯 ...

  10. 搞硬件工资比搞软件的低?

    最近看到一件电子业界悲剧:一位博士毕业的高才生,在硅谷排名前十的一家半导体公司工作近20年,最近工资被他女儿超过了.他女儿加州理工本科毕业,在Facebook工作了2年. 这不禁让人想到了那个老生常谈 ...

最新文章

  1. clock函数返回负值~ (转)
  2. Ember——在构建Ember应用程序时,我们会使用到六个主要部件:应用程序(Application)、模型(Model)、视图(View)、模板(Template)、路由(...
  3. kill Signal
  4. 继英伟达最小边缘超算,英特尔再推10倍VPU,终端AI芯片竞争加剧
  5. wordpress引入php文件,WordPress主题制作之模板文件的引入方法,wordpress模板
  6. 设计模式:依赖倒置原则
  7. 用户空间与内核空间数据交换的方式(1)------debugfs
  8. 华为公开“一种芯片堆叠封装及终端设备”专利
  9. bug-Both weights and assigned values must be a sequence of numbers when assigning to values of <clas
  10. 梁肇新-豪杰超级解霸
  11. Mac:小米手机刷机
  12. Python3: 超简单个性动态二维码制作
  13. vs code git 编辑器中拉取(pull) 的时候报错 [rejected] v1.0.0 -> v1.0.0 (would clobber existing tag)
  14. 中国VR/AR技术的日渐成熟,带动行业领域巨大发展!
  15. stirling formula prove
  16. 【论文精读】A Survey on Deep Learning for Named Entity Recognition
  17. LoadRunner12 进行协议顾问分析时浏览器选择问题
  18. 12操作系统面临的安全威胁安全脆弱性基本概念
  19. stem课程是什么意思
  20. 网络教育学位证计算机考试包括什么区别,远程网络教育学历和学位证书有什么区别...

热门文章

  1. VS问题:该依赖项是由项目系统添加的,不能删除。
  2. 《和空姐一起的日子》语录
  3. 【数学】固定弦长公式
  4. 门户通专访李进斌:火车头采集器-站长的伴侣
  5. 基于SSM开发的商品出入库系统
  6. web前端之sass简介
  7. wltp和nedc续航差多少_电动汽车续航里程测试中,NEDC、WLTP、EPA哪种最真实?
  8. C#如何正确的释放资源
  9. polkits存在内存泄漏现象
  10. 2023年长租公寓行业研究报告