人文艺术 > 软件是如何做到控制芯片电路的闭合的?

软件是如何做到控制芯片电路的闭合的?

2020-11-16 19:31阅读(59)

软件是如何做到控制芯片电路的闭合的?一切用电设备的使用结果,都是由电路的闭合通电得到的,芯片也不例外,只是在晶圆上制造了数亿个电路开关而已,然后把这些

1

以往回答过类似问题,软件归根结底,就是二进制代码01,而在电路上的确是没有直接的01的,电路上只有高低电平,所谓的01,是通过显示器显示出来的一种给人看的,方便你理解的东西,电路上并没有什么0和1这个代码,本质上它在硬件电路上还是高低电平,比如可以规定TTL电路高电平是:2.4V-5.0V;而低电平是:0.0V-0.4V。也就是电路上的电压在某个数值范围代表1,某个数值范围代表0,请关注:容济点火器

然后电路上的这些高低电平这些东西,一般是通过触发器这些电路来存储的,比如RS触发器,它是最基本的,可以通过阻容和三极管这些器件来组成,你在电脑上看到的所谓1或者0,在实际电路上它就是电压不同而已。

然后多个触发器组合成移位寄存器这些,通过硬件的晶振发出脉冲来让这些寄存器移位,这样寄存器的状态就可以改变了,你在键盘上下某个命令,就相当于触发某个开关,开关导通了,当然会直接让某个电路状态变化,移位寄存器的01状态也跟着改动,这样电路上就会达到你需要的功能,然后电路状态变化后,又通过液晶这些,把这种变化的状态,显示出来所谓的01给你看,你看到的只是一个符号而已,实际上电路上变化的,还是电压。

然后很多个寄存器再组合起来,就形成了所谓的芯片,讲白了,就是把这些硬件电路做得非常小,集成到一块硅片上去了。

2

纯手打微机原理了解一下????。

除了没配图(纯手机码字配图要奔溃的),我觉得没毛病,哈哈。当然了,大神莫怪,我是想用尽可能通俗的语言去解释,毕竟这不是微机原理课,我也不是数电专家。

1,程序从电路层面看,就是0和1而已。所以本质上,程序只是一串长长的0和1,所以存储程序就是存储0和1。那么在物理上,我们用电压高低表示0和1就可以了。想要存储起来,硬盘就是个好办法,我们可以用磁场的强和弱来表示01,或者用磁极南和北表示01,当然也可以用电场强弱表示0和1,于是科学家就发明了机械硬盘,它是基于磁场来存储的,后来又发明了固态硬盘,它是基于电场来存储的,存储电场高低最好的例子,就是电容。当我们想要读取程序时,就是读取0和1,也就是读取高低电压,或者叫电平,读取高低电平,你简单理解一下,就可以用一排电线,电线的一头连着一个神奇的元件,以机械硬盘为例(基于磁场存储0和1),这个元件可以根据磁盘中磁场的变化,转变成01这种高低电平的变化,然后这些变化的电平通过电线送到另一头的“电平处理机”——硬件。这样子就是读取程序了。

2,那么,软件如何控制硬件呢?就是说,这些输送过去的0和1如何控制硬件呢?它通过另外一种神奇的东西“门电路”。首先,什么叫控制?控制就是我们希望,从程序里读取过来的0和1,能不能让它变成1和0,具体来讲就是01序列的变换,这个变换也是用门电路来实现。比方说,有个叫“与门”的电路,他有两个输入,一个输出。你给他输入两个1时,他就输出1,其他情况都输出0。像这样子的输入输出过程其实就是序列变换,也可以说你是在用软件控制硬件了。你可能要问,要输入10个1或0怎么办啊?那就把门电路组合起来呀,设法让门电路变成10个输入,甚至更多就可以了。

3,那“门电路”是如何实现的呢,从物理的角度,他是用晶体管做成的,晶体管他是一种电子开关,这种电子开关就能做出各种各样的“门电路”,比如上面讲的“与门”。简单说,晶体管是利用硅(或锗)这类半导体的一个重要特性来实现门电路,就是硅的参杂特性,利用这个特性可以用一个小电流(或电压)来控制一个硅半导体的“通电”或“断电”,就达到了“电子开关”的目的(实际造电子开关的材料和方法还有很多种,这里是为了举例),而这个小电流就是控制信号。

4,那么,为什么电路一闭合,程序就工作起来了呢?前面我们说了,程序控制硬件(或者叫硬件处理程序中的数据),就是把01序列不断地输入到硬件中去处理的过程(其实处理你硬盘上数据的东西,它本身也是个程序,软硬件本质上是一样的)。那么,数据到底是怎么输入的呢?试想一下,你搭建了一个闭合电路,开头是一个硬盘数据读取装置——》然后是导线——》硬件(电平处理机)——》输出装置,把变换后的序列显示出来(比如做了个加法,把结果显示出来)。这个电路在闭合时(或者是在断开时)会做一次加法,然后显示结果,但是之后他就一直显示那个结果,如果你想要做10次加法,也就是做个乘法怎么办呢?难道你要手动不停地“打开”和“闭合”电路吗?(也就是我们要不断产生控制信号,才能自动让电路开合,这里的开合理解成高低电平,并不是真的让电路断电,控制信号就像上文说的那个小电流),这时我们就需要另一种神奇的电路:振荡器,他会交替产生高低电平(这里边其实非常复杂,涉及到触发器,锁存器,上升沿下降沿等众多概念,不再展开)。振荡器的震荡快慢用频率表示,而频率高电路变化起来就快,就是说做10次加法的速度就快。这就是为什么你会听说很多时候,cpu频率越高运算速度就越快。

4,接下来,既然我们造好了门电路,有了振荡器,就可以造各种各样的更复杂电路了,比如通过复杂的门电路组合起来,再加一些其他的基本电路,就可以做出来锁存器(或者叫锁存电路)。听说过CPU的缓存,还有寄存器吧,这些东西就可以用锁存器来造,锁存器相当于内存一样,可以高速存取数据,也就是存取0和1啦,但是计算机的内存并不是用锁存电路来造的,因为内存需要很大,大则几个G,十几个G,而cpu缓存只需要十几到几十M,或者更小,从工程和商业成本的角度,内存是用比cpu缓存速度更慢的元器件来造的。

5,有了cpu,内存,硬盘,再来个主板,把这些硬件组合到一起就变成电脑咯~~

3

我简单泛泛的谈一下。计算机是由晶体管构成,基本的电路原件就是三级管、二极管等等,这些基本原件只有两种状态1和0,1表示电路接通,0表示电路断开。由基本的三级管和二级管组成最小的存储单元,也就是1位,单位是BIT,这个存储位可以显示两种状态1和0,即电路开和关。由8个这样的位组成一个存储单元,这个存储单元称为字节(BYTE)。通过成千上万的1和0,由严谨的逻辑编排形成所谓的软件。举个例子,比如一副图片是怎样显示在显示器中?数字图片由成千上万个1和0组成,CPU从存储器提取这张图片中有规律的1和0,通过显卡投射到显示器的像素点上,从而把图片还原出来,显示器像素点就好比一个灯管,当接收到1(电路开)时像素点就亮,接收到0(电路关)时像素点就灭。同理,由1和0组成的高级软件就会控制电源的开或关,控制电脑关闭或启动诸如此类等等。楼主可能会问CPU为什么会进行加减乘除运算,CPU有一个控制单元,或者称它为逻辑单元(逻辑单元也是由基本的三极管和二极管组成),通过逻辑单元进行加减乘除运算,1(电路开)+0(电路关)=1(电路开),0+0=0(电路关),以此类推,通过二进制运算实现加减乘除。弄懂计算机硬件基本原理,你就不会有疑问了。

4

晶圆上的电路是有格式的。有许多按井字型排列的与非门阵列,是按照可编程逻辑阵列烧写过的。

如上图,这些通路既可以连接、也可以断开,这叫做熔丝技术。用电压控制。烧写器负责执行电路烧写工作。按照事先编写的程序,实现哪些电路是连接的,哪些电路是断开的。这样就形成了不同逻辑的线路。早期的烧写是一次性的,不能更改,现在有了可擦除技术,可以随时更改。

芯片工作时,根据指令集的指挥,建立起电信号和与非门列阵的联系,按软件的工作指令,控制通路的连接和断开,实现运算。

5

运行程序的机器处理器拥有自己的指令集,由微程序与之对应,微程序存储在处理器的控制器单元的存储模块。软件代码被编译为机器指令指令,执行机器指令时由操作系统控制送入内存,并等待送入处理器执行。当指令被读入处理器,通过译码指令的操作码部分找到该机器指令对应的微程序入口地址,微指令通过处理器中控制器的微程序控制器译码执行,执行过程中控制器对处理器的算数逻辑单元、内存等硬件芯片发出高低电平信号,配合处理器时钟脉冲信号在逻辑电路的与或非中完成一条指令的执行。软件的执行就是在操作系统的控制下很多条指令的执行。//@过去与今天:代码怎么来驱动电路内部的开或者关呢

6

芯片是通过半导体晶体管中的PN结实现电路开关状态变化的,存储程序是通过存储芯片对存储介质进行读写的。我们用的软件,在存储介质上其实就是磁针的不同状态(机械硬盘)或者浮置栅极存储的状态(SSD)。

1、半导体晶体管是如何忠实地执行软件的?

众所周知,芯片就是半导体材料做成上亿的晶体管排列组合而成。晶体管最重要的控制开关也就是PN结。由于PN结的存在,才有了半导体的说法。就是正向电压导通,反向电压断开。原理如下:

①、半导体的特性

所谓的PN结就是采用不同的掺杂工艺,通过扩散作用,将P型半导体与N型半导体制作在同一块半导体基片上,在它们的交界面就形成空间电荷区称为PN结。PN结具有单向导电性

  • 正向导通:我们的电源一端接P区(空穴较多的P型半导体这一边),一端接N区(自由电子较多的N型半导体这一边)。如果这个时候加载一个合适的正向电压在PN节上,也就是P区电压高于N区电压,那么P区的空穴和N区的电子都会向中间的沟道(耗尽层)运动,沟道就会变小,电阻相应就变得很小了,电路就接通了。
  • 反向断开:如果在PN结加载一个合适的反向电压,即N区电压高于P区电压。那么,N区的电子都向电源的正极运动,P区的空穴都向电源的负极运动。所以,导致中间的沟道就会变得更宽。电阻就变大了,电路就无法接通了。

芯片上的晶体管正是利用这个特性来做的,比如:二极管、三极管、场效应管。


②、计算机芯片执行程序

计算机芯片我们看起来很聪明,但追踪到二进制层面,其实它只是做简单的数学运算(加减乘除)。其他操作都是通过转化成数学运算来实现的。在晶体管里面是如何实现的呢?它就是通过CMOS电路中的与非门电路来实现的。我们都知道与非门可以实现以下功能:

  • 与 门:只有两个输入都是高电位时,输出端才有高电位。也就可以实现计算机的与运算“&”。即:0&0=0;0&1=0;1&0=0;1&1=1;
  • 非门:输出电位始终和输入电位相反,输入是高电位,输出就是低电位。这就实现了计算机需要的非运算“~”,即:0~=1;1~=0;
  • 或门:只要输入端有1个是高电位,输出端就是高电位。也就实现了计算机的或运算“|”,即:0|0=0;0|1=1;1|0=1;1|1=1;

以上是三个最基本的逻辑运算和晶体管组成的与非门的关系。更多的运算都是通过这三种基本运算组合而来。

2、计算机系统是如何从加电开始运行的?

我们购买回来的计算机通常包含了CPU、内存、主板、硬盘、外设等。这些硬件里面都内置了控制硬件的微码

  • CPU:里面包含CPU的基础指令集,要想在该CPU上运行的软件,最终都必须编译成该CPU支持的指令集。同时
  • 内存:内存里面有SPD芯片,它里面存储了这条内存的参数,以便和CPU、主板协同工作。
  • 主板:X86架构都有南桥和北桥两大主要芯片,还有FSB总线。这里负责控制外设、负责数据传输给CPU。里面集成了微系统。
  • 硬盘:硬盘的电路板上有主控芯片和缓存,控制数据到达硬盘后该如何存储,也控制读取指令该如何去读数据。

有了这些微码程序,计算机硬件就是非常顺畅地协同工作了。当我们接通电源,并按下开机按钮,计算机主板的启动电路会触发主板开始按照微码工作。当自检各硬件正常后,按顺序加载硬盘启动分区的数据,操作系统就放置在这里。操作系统也就顺利被载入内存,开始工作。后面就不多说了,大家都清楚。


3、硬盘是如何存储软件的?

软件在计算机看来就是0和1组成的数据。我们现在用的很多都是固态硬盘,但早年用的是机械硬盘。他们存储数据的方式有些许不同。

①、机械盘存储读写数据

机械硬盘由电机、磁头、盘片和控制电路组成。控制电路负责和主板进行通讯,包括接收请求、读写缓存等。盘片上布满微小的磁针,它是存储数据的最小颗粒,磁针指向北就是1,磁针不指向北就是0。 磁头就是磁感应头,电机负责盘体的转动和磁头的移动。

  • 读操作时:磁盘控制器接收到指令,首先看看高速缓存中有没有,如果没有,磁盘就会开始高速旋转,磁头则在盘片上方以固定半径扫描盘片。按照指令要求进行寻道,当找到相应地址后,磁头感应到盘片上的磁针状态,并将它转化为电信号由硬盘控制芯片传导给内存。
  • 写操作时:磁盘控制器接收到指令,首先将数据写入高速缓存,得到磁盘响应时,盘体开始旋转,磁头寻找到对应位置。找到位置后,磁头开始磁化改变磁针的状态。按要求全部改完后,将写完状态反馈给控制器。


②、SSD盘存储读写数据

SSD盘主要有主控制器、存储单元、缓存等组成。主控制器有嵌入式处理器,负责做ECC校验、磨损平衡、坏块映射、缓存控制、垃圾回收等等。存储单元主要采用的是NAND闪存,NAND存储数据的方式就是通过控制器对浮置栅极存储进行加压,当浮置栅极存储电荷增多,达到4V以上,则表示已编程,当没有充电或者电压阀值低于4V时,就表示已擦除。同时,已编程的单元,又以相位状态不同或者电压高低不同来表示数据的0,1

  • 读操作时:只需要对相应的存储块进行加电压,感应电压或者相位就可以读取数据。
  • 写操作时:也是通过对相应的存储块进行加电压,改变相应块的相位或者电压就可以完成写入。

因为SSD盘不需要机械转动,速度比机械盘快了很多。所以,现在更多人使用的是SSD盘。


总结

总之,软件在计算机底层就是0和1组成的指令集合。而0和1的指令集合是通过CPU芯片里面的晶体管来实现运算和控制的。晶体管最重要的组件就是半导体PN结,它帮计算机实现了各种逻辑运算。至于存储数据,无论是机械盘还是SSD,最终都是将数据0和1对应物理介质的磁针状态或者浮置栅极存储状态来对应表示。

感谢阅读!我是数智风,用经验回答问题,欢迎关注评论。

7

首先得有一个让软件运行的最基本硬件环境,而这个最基本的硬件运行环境叫基础守护程序硬件系统,它监控底层软件参数的变化或外部给予的的变化量,当监测到预先设计的软件参数变化后,守护硬件系统会根据设计做出相应的反应输出,可以是题主说的输出开关量,也可以通过D/A输出模拟量。

但不管输出如何,软件运行得先有一个相应的硬件环镜让软件的守护程序部分先运行起来。比如通用PC计算机的ROM,硬件一加电,最先运行计算机的ROM就是守护程序,由它来接受外部的指令翻译成机器硬件能执行的0和1机器指令,或者把硬件的控制权移交给更高级的软件系统,如UNlX、Dos、Windows、Mac OS等以实现更高级的应用。

8

大家都知道在数字电路中都是高低电平的,在实际控制中也是一样的,只有两种状态,举个简单例子,当三级管工作在截止和饱和状态时,就相当于一个开关,通过控制集电极的电平即可控制三极管的状态;在数字电路中有个叫做数模转换器的元器件,即输入数字量可以转换成你想要的模拟量。如下图

9

一堆人都没回答到要点上,软件是无法控制芯片电路闭合的,软件只是控制芯片电路的闭合顺序,电路的闭合都来自于初始电脉冲,它可以是鼠标点击和移动产生的电信号,也可以是无线电磁波,也可以来自声卡,或者内部计时器,一个程序的运行就是一个初始电脉冲控制第一个晶体管电平变化开始,程序内容则是所有晶体管的动作顺序和逻辑

10

芯片都有很多针脚吧?每个针脚都有定义,内部逻辑功能都是通过硬件实现的,也都是固定的,将多个针脚通断实现的逻辑功能的组合定义成指令,我理解的不知道对不对,一组指令集就相当于一组接口函数,我们编程就是调用这些接口函数,从而控制部分针脚的通断,从而实现内部逻辑功能,我们读取部分针脚的电压值,将得到内部逻辑功能实现的结果,按照编定的程序不停的循环这个过程,最后得到程序所需要的结果。