从零构建一台计算机.docx

上传人:b****3 文档编号:11531288 上传时间:2023-06-01 格式:DOCX 页数:20 大小:35.75KB
下载 相关 举报
从零构建一台计算机.docx_第1页
第1页 / 共20页
从零构建一台计算机.docx_第2页
第2页 / 共20页
从零构建一台计算机.docx_第3页
第3页 / 共20页
从零构建一台计算机.docx_第4页
第4页 / 共20页
从零构建一台计算机.docx_第5页
第5页 / 共20页
从零构建一台计算机.docx_第6页
第6页 / 共20页
从零构建一台计算机.docx_第7页
第7页 / 共20页
从零构建一台计算机.docx_第8页
第8页 / 共20页
从零构建一台计算机.docx_第9页
第9页 / 共20页
从零构建一台计算机.docx_第10页
第10页 / 共20页
从零构建一台计算机.docx_第11页
第11页 / 共20页
从零构建一台计算机.docx_第12页
第12页 / 共20页
从零构建一台计算机.docx_第13页
第13页 / 共20页
从零构建一台计算机.docx_第14页
第14页 / 共20页
从零构建一台计算机.docx_第15页
第15页 / 共20页
从零构建一台计算机.docx_第16页
第16页 / 共20页
从零构建一台计算机.docx_第17页
第17页 / 共20页
从零构建一台计算机.docx_第18页
第18页 / 共20页
从零构建一台计算机.docx_第19页
第19页 / 共20页
从零构建一台计算机.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

从零构建一台计算机.docx

《从零构建一台计算机.docx》由会员分享,可在线阅读,更多相关《从零构建一台计算机.docx(20页珍藏版)》请在冰点文库上搜索。

从零构建一台计算机.docx

从零构建一台计算机

自动控:

从零开始构建一台计算机

读了Charles的《编码》之后,对我来说,是一次关于数字逻辑和微机原理的一次大洗礼,序中引用了《道德经》中的“大方无隅,大象无形”,全书很好的阐释了这种辩证的朴素唯物主义,再高深的科学也能用最简单的道理描述。

“为学日益,为道日损,损之又损,以至于无为,无为而无不为”,这种治学的境界仿佛一下让我找到了学习的方向。

唉,搞技术牛B的人最后都去读《道德经》和《颈椎病康复指南》了,太有道理了!

有木有!

大家果然是大家,基本上书上的每一句话都是如此朴素而连贯,以至于读这本书的一个周中,每次想做点笔记都不知如何下笔,抽不出重点,每一句话都很传神,按自己的理解写下的东西,回头看看是如此的生涩。

不过这应该是我读过的最好的一本关于专业书,再翻出微机原理、单片机、数字逻辑,发现编这些书的人真装,善于把简单的东西写复杂了。

下面算是这本书的部分读后感,因为很多是在理解基础上的揣测,希望跟大家交流,共同进步。

如果你也是一个自动控,读一遍,相信你也会有很多的感悟。

分下边几个部分说:

一、化繁为简:

计算机功能实现及CPU工作原理。

(一步步跟进,为什么机器能执行代码?

能知道人的意思?

其实计算机工作就那么简单的道理,聪明的人类啊!

智慧不可复制!

二、柳暗花明:

代数运算及基本逻辑器件的物理实现。

(你是不是也在纳闷机器怎么能算数?

能存储?

能计时?

三、大彻大悟:

神奇的二进制世界。

(当你打开这扇大门,你将无法自拔…)

四、闲玩:

用继电器手工打造一台计算机的可行性分析。

(作为一个自动控,亲爱的,真想送你一台手工打造的电脑,让你聊天、看电影…幸福的事情,到底有多大的可能性完成这项工作呢)

一、化繁为简:

计算机功能实现及CPU工作原理

该部分分成四个方面叙述,其中第三部分关于CPU原理的物理实现,是全书最精彩的部分,也是计算机工作最基本的原理。

计算机功能的实现其实就是CPU与外围接口电路交互的过程。

在交互当中CPU的两大任务是存取数据和处理数据。

1、我们从两个角度看待这种交互的作用:

一是从诸如单片机、ARM、PLC之类的智能控制核心构成都是类似的,只是应用的场合和由于接口不同导致的功能差异。

CPU通过控制字、标志位的读取写入、和三总线的操作、接口驱动程序的执行实现对AD、PWM、定时器计数器、中断等接口的控制,我们从应用的角度屏蔽了CPU实现上述过程的细节,其实就是那两大任务。

接口通过中断、查询(CPU查询标志位,标志位展示系统运行状态,由系统动作后生成)、DMA等方式实现对CPU的资源利用。

接口电路作用于外设,从而实现功能。

拿智能汽车的工作过程,CPU通过对控制字的赋值实现接口的工作方式调整,道路信息被AD采集(相当于编码),CPU根据标志位的跳变,读取相应寄存器中数据,经过PID运算,向PWM接口的寄存器赋值,使PWM输出不同占空比的方波,实现对舵机和电机(要经过惦记驱动电路)。

总之这些控制核心的功能实现就是CPU与接口电路交互的过程,接口是CPU实现不同功能、面向不同外设的窗口,是CPU的手足,CPU是执行代码,体现人的意志的机构。

CPU与接口,接口与外设(或其他芯片)、数字电路的信号线连接其实暗含着编码的原理,编码就是交流,机器的信号线连接是“合理意思”的体现,是功能实现的前提。

因为机器间这种“交流”是智能的也是机械的,有利于我们利用它。

从我们的多媒体计算机的角度看待CPU的作用,与之交互的除了接口之外,更多的声卡、网卡、鼠标、键盘等这些外部设备,CPU通过寻址,对这些设备进行存取数据(信息编码)的操作,CPU处理传回的数据经过功能部件之后,被翻译成我们能够识别的声音、图像信息,(当然这个过程少不了中断、查询标志位等过程)我们都熟悉了计算机的多媒体功能,从没认真思考过为什么能实现这些功能。

当然存取数据是有顺序的,这就是代码规定的,人的意志的体现,不同的代码经过译码后,不同的逻辑电路被依次打开并工作,相应出一系列的动作,这样就呈现给了我们多彩有序的信息。

2、CPU发挥处理数据和存取数据的原理是什么呢?

译码后对内和对外的操作!

其原理就在于,在由最简单的累加器延伸过来的CPU模型中,在振荡器连接的计数器的驱动下,CPU通过地址线(计数器输出线)在RAM中寻址,通过复杂的译码电路对代码进行译码,输出相应的控制信号,对内由代码指定的功能,通过控制位使相应的功能电路工作,控制电路执行流向,仅仅由一个累加器就可以实现加法,在加法基础上实现减法、乘法、跳转等功能(当然现在的机器对这些运算直接用硬件支持)。

对外,向PC中填入操作数的地址值,替代计数器顺序地址输入,通过“发地址线、读写控制线、数据线动作”三线合作,找到译码后控制信号决定的动作对象,读入CPU内部的累加器,进行相应的操作(累加器其实就是算术逻辑运算单元,可以进行代数、逻辑运算,也可以把读进来的数发往别的地方)

总之,通过三总线实现对所有外部设备的操作,实现数据存取(由于CPU内部也有寄存器,所有也涉及内部数据存取。

)。

通过内部逻辑开关实现不同形式的数据处理)。

3、CPU这些原理,对内数据处理,对外(内)数据存储怎么由硬件实现的呢?

我们从100个数累加的模型来看“自动操作的原理”、“CPU与外设交互的原理”“代码如何执行来体现人的意志”,“汇编语言的产生”“CPU的性能指标、术语的理解”。

(实现自动累加、顺序代码实现、任意地址操作,复杂代码实现)

①自动操作的源头:

人是勤奋的,也是慵懒的。

有了这些器件,如何让他们自动运行呢,我们已经用加法器和锁存器制作了累加器,也知道每一次手动输入、控制的麻烦。

如果把要累加的数放在RAM里呢,就不用手工输入了呀,对!

我们用振荡器连接计数器,计数器的输入连接RAM的地址断,这样就能将RAM的数逐地址取出,振荡器同时连接锁存器,这样每次加一,之前的上升沿使上次的结果锁存。

这就是程序自动执行的源头!

我们发现它是有缺点的,就是停不下,数量有限,不能减法。

②我们怎么样才能随意的进行两数的累加而不是机械的一直从头加到尾呢?

我们怎样才能分别计算50对数的和然后方便利用和查看呢?

将结果回存到RAM!

,我们不能指望加法器能自动完成我们的想法。

我们需要制定加法器的规则,也就是代码!

我们另外用了一片代码RAM(存储带我们意思的操作码,指令码!

如ADD20H),在数据RAM在同一计数器地址驱动下,逐条的同步执行。

这些码暗含这加法器应该对数据RAM中对应的数据进行的操作。

③那代码是人的意志,是编码是交流,是说给机器听的,那机器怎么能听懂呢?

其实不然,这种懂是有条件的,我们需要复杂的译码电路对代码的指令码进行运算,产生控制信号,使某些电路的使能打开并工作,使电路的功能选择,从而使电路的执行流向发生变化,实现我们想要的功能。

比如执行了LOAD之后,二选一选择器工作,将RAM数据直接存入锁存,而不在累加器逗留,执行了ADD则直接累加,执行了SUB,反相器使能打开,加法器变减法,执行了STORE,RAM写操作使能打开,数据由锁存器回存至RAM。

执行了ADDWITHCARRY,进位锁存器中的数将作为累加器的输入,这样我们实现了多字节加法,减法同理。

我们已经看到代码的执行需要译码电路和功能电路的硬件支持。

这是汇编语言的雏形,所以我们说汇编语言是底层语言,需要大量的硬件支持。

至此我们了解了CPU进行数据处理,对内操作的原理。

④我们发现,目前为止,RAM中的数据和代码同步执行,而且在计数器的驱动下,是顺序执行不能回头,顺序运算顺序存储。

我们想用的数不但离散存储而且不能查看。

本来在代码RAM中只占一个字节,现在我们给它加上两个字节(假设是十六根地址线),存储它的操作地址(寻址出来拉!

),这样的指令可以不管当前驱动RAM寻址的计数器的值,操作任意的空间,实现它肯定需要硬件支持,其实道理很简单,译码后我们选择给RAM的地址是来自计数器的当前值还是来自代码后边的操作地址值(在锁存器中),这只需要译码后的一个控制信号就可以用21选择器来实现。

这样我们虽然用了三个字节的地址,光取指令就要三个机器周期,但是我们实现了利用代码对任意空间RAM的操作,也就不再不要两片RAM来分别存储代码和数据了。

(实际系统中给RAM的寻址信号来自于程序计数器PC(可以通过计数器置位信号任意赋值(如JMP指令),或者通过选择器寻址任意空间(操作码后的操作数地址),这就是地址线信号的三大来源。

一些指令的执行周期不同,我们可以想象,或许通过译码马上可以确定它是几个字节几个周期的指令,产生控制信号,逻辑指定该指令只能执行几次PC+1,进行几次读写操作,执行完响应后,PC是正确的值,而不至于PC一直随着机器周期计数,诸如单字节多周期的指令就会导致有代码被隔过去)。

至此我们了解了对外操作,任意地址存取数据的基本原理。

(发地址线、发控制信号、数据线存取数据)其实我们越来越发现译码电路其实是CPU的主要的实现人工智能的部件。

⑤我们有时需要在RAM中添加程序,但是顺序添加很容易产生覆盖,我们在别的地方添加还希望它能够顺序之前的执行,这就引入了JMP,译码之后,产生控制信号,计数器通过清零信号、置位信号有效被直接赋值。

⑥当然我们想要的情况下跳转更加有用,这就引入了条件跳转。

比如乘法运算的时候,A*N就得相加N次,但是直接摞程序是件繁琐的事情,我们可以一次之后用JMP,但是缺点是停不下来啊,我们就要寻找一种机器能识别的跳转条件。

我们硬件上只增加了一个锁存器,这个锁存器中的数只有当八位加法器输出全零时才是0(与非门而已),我们叫它零锁存器。

利用进位锁存器,和零锁存器增加了四条条件跳转指令。

这两个锁存器用于判断(在可以进行逻辑运算的ALU中实现),就是所谓的标志位。

把很多标志位集合到一个寄存器中,叫做标志位寄存器如MCS-51中的PSW。

乘法实现的步骤是FF与乘数相加相当于减一,它与加法器合作,与JMPIFNOTZERO合作完成跳转。

当然我们可以通过加法实现乘法(实际上以加法为基础可以实现四则、开方、三角函数、对数,无论是整数还是浮点数等一切数学运算),但是如果硬件(功能部件和译码电路)上支持的话,我们实现这些运算将是一句代码的事情,速度非常快,我们可以想像计算器的原理了,硬件支持,按键触发逻辑电路使能。

 

⑦以上代码的添加,一次次证明了,底层语言需要复杂的译码逻辑电路和内部功能电路的支持,当硬件越来越复杂,一些原本需要软件拆分实现的功能,现在可以由硬件直接完成。

当一台CPU成型,它所支持的所有的代码组成了汇编语言。

它是机器码的助记符,是仅次于机器码的最底层语言。

是一种计算机能理解(当然是通过译码电路)的语言,是一种编码,通过这个我们向它传递我们的意思。

 

⑧大彻大悟:

我们以上其实就构造了一台计算机,它的基本构成是CPU(由振荡器、计数器、累加器、译码逻辑电路、功能电路等)、存储器(RAM),输入设备、输出设备(我们可以用开关和灯泡代替)。

其实很简单的道理:

我们的累加器-----ALU(算数逻辑运算单元,扩展后可以逻辑运算)

我们十六位驱动RAM的计数器-----程序计数器PC(用于寻址、可被赋值)---与来自内部锁存器的地址信号,共同供给地址线。

连接计数器的振荡器频率----主频(时钟周期与机器周期和指令周期要区分开)

连接RAM的地址线(计数器输出、或选择器赋值)-----寻址空间

RAM的大小----内存大小(因为不是所有的地址线都分配给存储器,所以寻址空间并不等于内存大小)

一次从RAM中取数据的长度----你的电脑是几位机?

字长,数据线宽度,代表一次可以存取N位数据,CPU内部通用寄存器有N位,RAM要并联N次。

(注意64位机代表数据总线宽度为64,而不是地址总线宽度,64根地址线寻址的空间是不可想象的,没有那么大,一般64位机的地址总线是32,而且并不是所有地址线都给了存储器,就是说内存不一定为4GB)

我们通过清零信号将计数器清零并用于寻址,从头执行!

-----机器复位

我们不希望像上面那样一条条的执行,有时等待,这就催生了-----流水线

取指令在执行周期中占了很久,CPU对外寻址无论是RAM还是ROM都需要挺多的时间,所以我们在CPU内设置了一块内存,批量将要执行的代码取进来,这种技术就叫做-----高速缓存CACHE

为什么要三线配合进行取数?

因为地址线就内部选择线,拿RAM举例,其实一片8*1的RAM的结构是三八译码器,八个锁存器,一个8-1选择器。

地址线经过三八译码器,选择一个锁存器的保持位(要清楚触发器的条件保持、改写功能),同时地址线选择该锁存器的输出通过选择器,数据总线可以通过选择器将锁存器的内容取走。

那控制信号呢?

RAM的写操作使能,是三八译码器的使能信号,必须有效才能从对RAM进行操作。

所以必须三线配合,控制线打开仓库(CS)并确定是取货还是放货物(W/R),地址线选择货物,数据线运走货物。

什么是标志位---上文中的进位锁存器和零锁存器完整叙述了其原理。

什么是寻址?

既然CPU要存取数据,三线配合内外找放数就是寻址呗!

从外部取数会降低执行速度,所以CPU中出现了通用寄存器,如MCS-51中的A/B,CPU通过寄存器找到存储器中的单元地址,再通过这个地址找到该单元里面的数据,叫间接寻址。

movAx,[Bx]

直接给出目的操作数的地址叫直接寻址!

movA3ah

直接给出操作数叫做立即寻址如movA#3ah

这些,指令译码后都对应不同的电路实现,不同的相应动作。

什么是时钟?

什么是地址线?

时钟端就是保持位!

写入的钥匙!

锁存的信号枪!

触发的信号!

地址线就是选择线(译码器中选择谁通过)、译码线(译码器中选择产生使能)、宏观上是地址经过译码使某些逻辑电路(芯片或者芯片内部)的使能有效,逻辑电路工作。

总之就是选择。

 

4、CPU原理应用,即各项功能的实现(CPU与外部功能部件交互的典型过程)。

①总线的意义及CS片选。

总线(设计要符合传输要求,带宽限制是物理因素)的控制权一般是在CPU手中的,DMA可以越过CPU获得总线的控制权,实现对存储器的快速操作。

我们将CPU、存储器、总线、外围功能电路集合在一起叫做主板。

我们知道了总线的分布就可以方便地进行扩展,实现各种功能。

总线结构:

EISAPCI等。

我们知道如果地址线是八位的,它的寻址范围小,但是它可以16位寻址,我们只需要制作译码电路,两次发送RAM地址即可。

按我们之前的分析,读写线(控制线)、地址线、数据线需要与许多设备连接时,这样一发地址必然造成紊乱,所以我们要CS片选信号,我们需要单独的地址译码器产生CS信号,这样地址线就分成了选择芯片和选择存储空间的两类,若是还剩余地址线,为了避免地址的重复浪费,我们对CS译码器的使能进行译码,这样每一个存储空间都有唯一的地址。

当CS无效的时候,输出管脚处于不0不1的高阻状态,多线叠加没事。

这种状态为数据线复用和存储器的集成提供了条件。

 

②文本、图像的显示实现(包含ASC的发展历程)。

实现文本图像显示的过程就是CPU与显卡交互的过程,显示器毫无主动性可言,可看作接口显卡的外设,是显卡展示功能的平台,一个拥有一定像素点(总数为分辨率,利用率可调)的屏幕而已。

显卡则是一个嵌入式处理器。

CPU将编码数据给显卡,显卡翻译成像素点数据,通过RS232发送给显示器显示出来,对文本,显卡的工作相当于从图形上对ASC进行编码,实现与受者的互动。

下面是具体交互:

对于字符的显示:

CPU把ASC发送到显卡的RAM,七位ASC作为地址信号,作用在叫做“字符生成器”的只读存储器ROM中,该ROM按照ASC表固化了所有字符的像素点阵,不同字符对应不同的01阵列,ROM输出给显示器直接显示字符(光标后,光标的位置存储在专用寄存器)。

输出多少个像素点要看ROM中固化的阵列(即显卡所支持的分辨率,规定了每行多少个字符,每个字符用多少像素点的阵列),屏幕的分辨率也是可调的,二者要协调,我们调大屏幕的分辨率,而显卡输出的像素点不变,所有会有黑边。

对于图像的显示,我们直接往RAM中发送像素点信息,如果一个比特代表一个像素点的信息黑白色,我们需要分辨率个比特来表示一屏幕的图像,但是我们不希望全黑白,起码要像黑白电视机一样显示灰色吧,我们用一个字节来表示一个像素点的信息,它有256中灰度。

那我们想要彩色呢,用三个字节来存储像素点信息,分别表示红绿蓝三原色的强度。

这就要求了更大的RAM,和扮演像素点信息生成器的ROM、显示器的共同支持。

(由于图像的显示需要定时刷新,我们看到的屏闪就是刷新时间的问题,所以我们一般不占用CPU资源,而是直接用DMA。

其实我们发送的一帧图像的像素点信息(直接来自于RAM或者来自ROM译码),存储在显存,所以屏幕的分辨率(支持的像素点数)跟显存是有关系的。

在LCD控制器的作用下ROM把RAM中的字符和控制字符翻译成一定形式的像素点信息,然后存到显存,把图像像素点信息直接存到显存)。

③键盘输入数据的实键盘实现数据的输入也是CPU与键盘接口的交互,键盘拥有按键个开关,每个按键按下会产生一个唯一的扫描码(直接产生ASC是不现实的)

编码的产生是由于计数器和译码器、选择器共同作用的结果,一旦选择其输出唯一,说明此时有按键按下,此刻的计数值就是扫描码(扫描时间足够快),选择器输出作为中断信号也作为锁存计数值的触发信号,这样有按键按下,扫描码被锁存,同时向CPU申请中断,CPU跳转到中断向量处执行中断服务子程序(一旦有中断先执行RTS后跳转,个人认为该地址在ROM等不易失存储器),程序中规定CPU对接口中的寄存器进行寻址,然后取数,接着根据中端程序中预先设置好的表把扫描码翻译成ASC,然后继续处理,比如发送到显卡RAM将其显示。

④内存及开机程序执行。

我们知道内存(RAM,ROM)是CPU可以直接操作的存储空间,RAM易失,ROM只读(也可以进行编程,PROM一次性编程,EPROM重复编程,用于存放一些基本的中断程序、用户代码等、引导性初始代码,FLASH闪存也是断电不失的,可以代替EPROM)。

我们需要一种即可以读取又可以写入的存储器,CPU有了办公桌(RAM),又有了文件柜(RAM是只能把文件拿出来,不能放进去)。

这样磁盘就诞生了,CPU是不能直接对磁盘进行操作的,需要执行一段程序,将文件拿到办公桌处理(执行ROM中的代码也要先放到办公桌上,但可以直接操作ROM),磁盘数据确实是以文件为单位进行处理的,对文件的操作是操作系统的基本功能。

哇,CDE都是磁盘哦...开机(想象一下,无论是单片机还是计算机都是从ROM或者FLASH等可直接操作固化程序的存储器开始的,ARM从FLASH中的BOOTLOODER初始程序中开始),BOIS(就是一个ROM)固化的程序调入RAM执行,它包括了对硬件的基本操作程序(中断服务程序等),他是直接对硬件操作的接口,执行它,硬件自检、CPU初始化、开中断、调入操作系统程序(单片机应该是将用户程序逐条调入RAM,中断是执行时才跳转到ROM),然后将控制权交给CPU,设定它从RAM的哪个地址开始执行,计算机应该是从操作系统程序,单片机应该是从main。

操作系统的印象:

操作系统提供给用户友好的界面,诸如文件存取的技术语言屏蔽,轻点鼠标,它就知道你的意思,将该动作翻译成代码让CPU执行,如双击应用程序,它把程序的代码从磁盘调入RAM供CPU执行,它还实时管理、分配系统的资源。

⑤串行通信的实现。

就是按位发送数据而已(在帧中)。

实现通信的前提。

通过控制字设定发送双方的波特率相同、数据格式相同、信号线连接合理(可以想象“可以发送”信号与状态标志寄存器的“缓冲区为空”是对应的)。

接收方检错,具体有溢出错误(还没读取就被覆盖)、奇偶校验错误等。

其工作的过程同样是CPU与接口、通信双方接口的交互。

物理连线。

拿基于ARM7的S3C44B0X为例,接收方的RTS与发送方的CTS相连(提醒发送方可以发送数据了),RxD与发送方的TxD相连接收数据。

所以若是一个串行口要实现全双工通信,必须要有两套这样的连接,表现在RS232接口中,就是对应的线“交叉”,为什么会出现RS232标准串行接口呢?

这个道理与其他的接口出现道理也是类似的,就是这个连线是固定的,而且繁琐,而且用处广泛,我们自然引出这样的接线集合,方便使用。

可以想象,9针的RS232接口中必有两根“握手信号”线、两根发送接收线,一根地线,这是必不可少的。

基本原理。

串口的硬件其实是可以想象的,有寄存器或者“缓冲区”保存要发送或接收的字节,这些字节接收还是输出都是通过移位寄存器一位一位地进行,当然移位锁存器的触发信号来自于“波特率发生器”(一个分频器而已),以实现一定速率处理数据。

功能实现。

有了物理连线和硬件支持,我们通过控制字赋值和查询状态标志位来编写包括中断服务子程序在内的接口程序实现通信过程。

(空和满状态下可以向CPU申请中断,以实现数据的连续发送、接收。

 

这些是一些基本的工作过程,从中能体会到更加复杂和工作的执行过程也是这么个理儿...CPU中的译码电路对不同代码译码,输出控制信号,改变了时钟驱动下的机械执行,这是实现一切人工智能的王道。

要相信任何响应、任何的时序在译码后的控制信号的控制下都是可以实现的,任何看似多余和机械的动作都是可以理解的,与或非逻辑可以造出加法器,条件保持逻辑可以造出触发器,条件逻辑可以造出选择器,我们很惊讶于这种逻辑创造,这是我们能理解的逻辑,要知道很多不是我们想明白就能明白的,当我们力不能及,就只能选择相信了。

这很正常...我们境界不够,但是至少我们马不停蹄。

二、柳暗花明:

代数运算及基本逻辑器件的物理实现。

其实物理实现代数运算的根本在于,高低电平在开关(继电器、晶体管控制的通断)逻辑电路(门、串并联电路)中的传递关系(类似PLC的前身,继电器系统)可以完全模仿01跳变在逻辑运算、代数运算中体现的与或非等逻辑和选择、条件保持等逻辑。

若输入的高低电平与输出的高低电平与数学二进制码正好对应,就相当于用物理实现了数学(逻辑)。

这就相当于可以进行逻辑运算的计算机啊!

进而就实现了二进制代数运算的计算机啊!

(例如买猫用的控制面板)。

这一部分,我们将看到由继电器构成的基本逻辑电路都实现了那些功能。

基本的与或非逻辑:

制作了加法器(半加器、全加器),实现了代数运算。

条件保持逻辑:

实现了触发器锁存器、N位锁存器(保持位、时钟端--写操作位)、存储器、分频器、计数器(不要拘泥于最后一位clk),条件逻辑也能实现芯片(逻辑电路)的工作使能端设置。

选择逻辑:

实现了21选择器、81选择器(三个选择位--地址线,使一个三输入与门的两位为1,另一位为数据线)、译码器。

下边两种逻辑都以与或非为基础。

来见识这些逻辑的神奇吧~~~

1、以布尔代数为基础的01逻辑运算,及它的继电器实现:

与非门。

除了数字和编码信息,01在逻辑学中也相当重要。

逻辑学是数学与哲学的奇特结合(苏格拉底的死分析),目的就是求真假,求真理。

理性的人总是用逻辑思考的,如三段论。

如果我们找到了用数学描述逻辑的方法,就找到了用数学方法描述大脑工作。

传统数学处理数字,它诸如交换律在内的众多规则根深蒂固,以至于大家都不觉得那是一种规则。

布尔的天才就是将代数从数的概念中抽离,不操作数,而是操作集合(类)。

为了好理解,我认为布尔代数其实是事件论,加号代表的事件是:

两件事情至少发生一件,乘法代表两件事情必须同时发生(交集)。

分别对应口语中的ORANDNOT。

布尔代数定义了01的数学语言描述了上述的ORAND,01代表真假,即事情是否发生。

结果也为01,表示描述的事件是否发生。

所以就有了:

1+1=1,1+0=1,0+1=1,0+0=0;1*1=1,其余都为0.

我们试图用编码物理的方法实现以上的逻辑,即01代表通断即高低电平,+*代表串并联,结果的01代表输入的高低电平,即灯泡的亮灭。

继电器利用电流实现开关,看似是间接多余

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2