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

ITdog905

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

容济点火器

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

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

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


容济点火器

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

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

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,内存,硬盘,再来个主板,把这些硬件组合到一起就变成电脑咯~~


大喵喵666

我简单泛泛的谈一下。计算机是由晶体管构成,基本的电路原件就是三级管、二极管等等,这些基本原件只有两种状态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(电路关),以此类推,通过二进制运算实现加减乘除。弄懂计算机硬件基本原理,你就不会有疑问了。


海军上士

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


万象科技

这个问题如果做详细的回答很麻烦。首先你这个问题是工业控制方面的问题,如果真的弄明白需要一些数字电路和单片机的一些知识。电器方面你有什么问题,请关注心灵的寄存处,将给你做最靠谱的回答。

无论什么软件,芯片都不能直接识别,数字电路的芯片内部的半导体器件只能识别0和1,不同的0和1组合,可以代表不同的事件,无论什么软件,最后送到芯片里的都是0和1的不同组合数据,这个是由软件编译完成的,芯片按逻辑处理这些0和1,最后经输入输出送给外部电路。

你的第一个问题,程序软件只是一种逻辑的人为规定表达形式,芯片不能识别,必须经过编译,转换成不同0和1的代码组合送给芯片,不同0和1的代码组合来对应那些软件不同的语音。最早的计算机语音是汇编语言,那个需要自己查,自己把汇编语言转化成由0123456789ABCDEF构成的代码,比如F0(11110000)表示汇编语言里寄存器R的数输出。现在有了各种编程语言,是为了方便编程,但最后都需要编译成不同的0和1组合。数字电路是能够识别0和1的,因为在数字电路芯片里的半导体器件只有两个状态,开和关,如果用开表示1,那么0就关,如果用高电平表示1,那么低电平就是0。你在芯片的输入端,加了高电平,那么就是加了1,芯片是能够识别的。第二个问题是芯片内部的逻辑电路根据你的程序从第一句到最后一句,需要做什么,送给输入输出电路。完成一次扫描。芯片一次一次一直不停的重复扫描,就按你的软件来动作,达到识别输入,控制输出的目的。


心灵的寄存处

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

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


影子我喔

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

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

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


仁观天下

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


机车的摇篮

一层层实现的,软件已经是在系统里的一个元素,而系统已经被加载到了内存,内存中的空间除了系统外,还有动态空间,这些空间有独立的地址,这些地址分别连接其它器件,软件中的每一次改变都映射在内存中的控制寄存器,寄存器就是每个十字路口的门,你可以通过这些门去芯片的任何地方。


国庆142860452

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


分享到:


相關文章: