如何往内固定移位有感觉吗运算器里置数需要拨哪些开关

ALU)、累加器、状态寄存器、通用寄存器组等组成算术逻辑运算单元(ALU)的基本功能为加、减、乘、除四则运算,与、或、非、异或等逻辑操作以及内固定移位有感觉嗎、求补等操作。计算机运行时运算器的操作和操作种类由控制器决定。运算器处理的数据来自存储器;处理后的结果数据通常送回存儲器或暂时寄存在运算器中。与Control Unit共同组成了CPU的核心部分

运算器的处理对象是数据,所以数据长度和计算机数据表示方法对运算器的性能影响极大。70年代微处理器常以1个、4个、8个、16个二进制位作为处理数据的基本单位大多数通用计算机则以16、32、64位作为运算器处理数据嘚长度。能对一个数据的所有位同时进行处理的运算器称为并行运算器如果一次只处理一位,则称为串行运算器有的运算器一次可处悝几位 (通常为6或8位),一个完整的数据分成若干段进行计算称为串/并行运算器。运算器往往只处理一种长度的数据有的也能处理几種不同长度的数据,如半字长运算、双倍字长运算、四倍字长运算等有的数据长度可以在运算过程中指定,称为变字长运算

按照数据嘚不同表示方法,可以有二进制运算器、十进制运算器、十六进制运算器、定点整数运算器、定点小数运算器、浮点数运算器等按照数據的性质,有地址运算器和字符运算器等

它的主要功能是进行算术运算和逻辑运算

运算器能执行多少种操作和操作速度,标志着运算器能力的强弱甚至标志着计算机本身的能力。运算器最基本的操作是加法一个数与零相加,等于简单地传送这个数将一个数的代码求補,与另一个数相加相当于从后一个数中减去前一个数。将两个数相减可以比较它们的大小

左右内固定移位有感觉吗是运算器的基本操作。在有符号的数中符号不动而只移数据位,称为算术内固定移位有感觉吗若数据连同符号的所有位一齐移动,称为逻辑内固定移位有感觉吗若将数据的最高位与最低位链接进行逻辑内固定移位有感觉吗,称为循环内固定移位有感觉吗

运算器的逻辑操作可将两个數据按位进行与、或、异或,以及将一个数据的各位求非有的运算器还能进行二值代码的16种逻辑操作。

乘、除法操作较为复杂很多计算机的运算器能直接完成这些操作。乘法操作是以加法操作为基础的由乘数的一位或几位译码控制逐次产生部分积,部分积相加得乘积除法则又常以乘法为基础,即选定若干因子乘以除数使它近似为1,这些因子乘被除数则得商没有执行乘法、除法硬件的计算机可用程序实现乘、除,但速度慢得多有的运算器还能执行在一批数中寻求最大数,对一批数据连续执行同一种操作求平方根等复杂操作。

實现运算器的操作特别是四则运算,必须选择合理的运算方法它直接影响运算器的性能,也关系到运算器的结构和成本另外,在进荇数值计算时结果的有效数位可能较长,必须截取一定的有效数位由此而产生最低有效数位的舍入问题。选用的舍入规则也影响到计算结果的精确度在选择计算机的数的表示方式时,应当全面考虑以下几个因素:要表示的数的类型(小数、整数、实数和复数):决定表示方式可能遇到的数值范围:确定存储、处理能力。数值精确度:处理能力相关;数据存储和处理所需要的硬件代价:造价高低

两種常用格式:定点格式:定点格式容许的数值范围有限,但要求的处理硬件比较简单;浮点格式:容许的数值范围很大但要求的处理硬件比较复杂。

1、定点数表示法:定点指小数点的位置固定为了处理方便,一般分为定点纯整数和纯小数

2、浮点数表示法:由于所需表礻的数值取值范围相差十分悬殊,给存储和计算带来诸多不便因此出现了浮点运算法。

浮点表示法即小数点的位置是浮动的。其思想來源于科学计数法IEEE754的浮点数(比较特殊)浮点数的规格化:主要解决同一浮点数表示形式的不唯一性问题。规定 否则尾数要进行左移戓右移。

机器零的概念:尾数为0或是阶码值小于所能表示的最小数

3、十进制数串的表示方法:由于人们对十进制比较熟悉,因此在计算機中要增加对十进制运算的支持两种方式:将十进制数变为二进制数运算,输出时再由二进制变为十进制直接的十进制运算。直接运算的表示方法:字符串形式:用于非数值计算领域、压缩的十进制数串:分为定长和不定长两种需要相应的十进制运算器和指令支持。

4、自定义数据表示:标志符数据表示、描述符数据表示区别:标志符与每个数据相连,二者合起来存放在一个存储单元而描述符要和數据分开存放;描述符表示中,先访问描述符后访问数据,至少增加一次访存;描述符是程序的一部分而不是数据的一部分。原码:仳较自然的表示法最高位表示符号,0为正1为负。优点:简单易懂缺点:加减法运算复杂。补码:加减法运算方便减法可以转换为加法。定点小数的补码定点整数的补码,反码:为计算补码方便而引入由反码求补码:符号位置1,各位取反末位加1。移码:用于阶碼的表示两个移码容易比较大小,便于对阶

ASCII码 输入码:用于汉字输入;汉字的存储;字模码:用于汉字的显示。余数处理的两种方法:恢复余数法:运算步骤不确定控制复杂,不适合计算机运算加减交替法:不恢复余数,运算步骤确定适合计算机操作。逻辑数概念:不带符号的二进制数四种逻辑运算:逻辑非、逻辑加、逻辑乘、逻辑异。多功能算术/逻辑运算单元(ALU) 并行进位行波进位加/减法器存在的两个问题:运算时间长,行波进位加/减法器只能完成加法和减法而不能完成逻辑操作,控制端M用来控制作算术运算还是逻辑运算两种运算的区别在于是否对进位进行处理。M=0时对进位无影响,为算术运算;M=1时进位被封锁,为逻辑运算正逻辑中,“1”用高电岼表示“0”用低电平表示,而负逻辑刚好相反逻辑与负逻辑的关系为,正逻辑的“与”到负逻辑中变为“或”即+·互换。

内部总线,总线分类:内部总线、外部总线(系统总线)、通信总线总线又可分为单向总线和双向总线。带锁存器的总线可实现总线的复用运算器包括ALU、阵列乘除器件、寄存器、多路开关、三态缓冲器、数据总线等逻辑部件。运算器的设计主要是围绕着ALU和寄存器同数据总线之間如何传送操作数和运算结果而进行的。运算器的三种结构形式:单总线结构的运算器:这种结构的主要缺点是操作进度较慢但控制电蕗比较简单。双总线结构的运算器三总线结构的运算器:三总线结构的运算器的特点是操作时间快。

  中央处理器(CPUCentral Processing Unit)是一块超夶规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)它的功能主要是解释计算机指令以及处理计算机软件中的数据。中央處理器主要包括运算器(算术逻辑运算单元ALU,Arithmetic Logic Unit)和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)它与內部存储器(Memory)和输入/输出(I/O)设备合称为电子计算机三大核心部件。

  本文主要介绍继电器是如何组成cpu的具体的跟随小编一起来了解一下。

  一、从电池、开关和继电器开始

  上图左上角是一个很普通的电路由电池、开关电流表和灯泡组成。这个是初中物理学過的上图右上角是对左上角电路的简单变形,用VCC代替了电池用接地符号实现了回路。相当于把电池拆开来画了电路功能是一样的。夲文此后的电路图一般都采用VCC和接地表示电源因为你会发现只有这样的画法能够让我们方便理解之后的电路图。

  然后往下看第三個电路图,那个圈圈里圈着个K的蓝色的东西表示的是继电器。当继电器左侧有电流通过时右侧的电路就断开;反之则联通。(对应地也有那种左侧有电流通过时,右侧的电路就联通;反之则断开的继电器稍后会用到)这个电路想让你知道的是,可以用继电器实现这樣的功能:控制左侧的电路的通断即可改变右侧电路的通断。换个方式说就是左侧的电路通断情况决定了右侧的电路的通断情况。再往抽象了说就是左侧电路代表了“输入”(Input)这个概念,右侧电路代表了“输出”(Output)这个概念继电器则代表了“计算”(或者“算法”、“处理”等)(CPU)这个概念。硬件就是用这种电器设备的固有物理性质提供了最初的计算能力

  再往下看第四个电路图,它和苐三个的区别就在于用VCC和接地符号代替了电池初次看电路,我们有必要经历一次从电池到VCC和接地符号的过渡以后的电路图,我们将直接使用VCC和接地符号请务必在此处适应这样的画法。

  然后是最下边这个电路和第四个电路相比,它用一个“非门”的符号代替了“繼电器、右侧电路电源和继电器的接地”这三个符号也就是说一个“非门”实际上就是“继电器、右侧电路电源和继电器的接地”这三個东西的组合,而且画的时候省略了电源和接地符号

  之前在学校里学数字电路,我就是想不明白逻辑门的电源在哪儿整个电路的通路在哪儿,所以一直学不好现在有个这个电路图,感觉一切豁然开朗

  二、用继电器做个与门

  刚刚我们用继电器做出了“非門”。可以看到只要用一个继电器就可以了与门的电路如下图所示。

  与门由两个继电器(这两个继电器用的都是跟做非门的继电器通断情形相反的那种)构成只有当两个继电器左侧都通电时,右侧电路才能联通这样就实现了“与”的功能。“与门”的符号是一个躺着封口的U形

  注:本文里我做的电路图片都是GIF格式的,你可以在浏览器里看到随着开关的开闭输入和输出电路上的灯泡是如何变囮的。每个图上都有()标识我的博客地址不过每个GIF图的最后一帧都去掉了这个标识。这样看到一帧没有标识的时候,就知道下一帧將是GIF图的第一帧了

  三、用继电器做个或门

  “非门”、“与门”做出来了,“或门”也就不难理解了直接上图大家体会吧。(導线交叉的地方如果有个红点,表示是联通的否则就是互不相干的)“或门”的符号像一个子弹。

  四、用继电器做个异或门

  “异或门”的功能是:左侧的两个输入电路一个联通另一个不联通时右侧电路联通;否则右侧电路不联通。这次先画符号大家可以先洎己尝试用继电器画“异或门”,锻炼一下思维然后再向下看答案。

  答案揭晓!“异或门”的实现如下图所示乍看很复杂,其实昰有逻辑的最右边的两个继电器其实是一个“或门”,最左边两个继电器是两个“非门”中间两上两下共四个继电器,是两个“与门”这样就好理解了。AB两个输入电路为A通、B不通的时候整个“异或门”会通过下方的路线使灯泡亮;若A不通、B通,则会通过上方的线路使灯泡亮其他情况灯泡都不会亮。

  振荡器能够不断地输出0、1、0、1、0、1、0、1……这样的信号这种东西虽然一时说不上有什么用,不過一定是有用到的时候的振荡器做起来也简单得离谱。看下图所示电路

  把非门的输出端连到输入端上。当输出为1时输入也就成叻1,那么输出就得变成0;然后输入也跟着变成0这样输出又变回了1。循环翻转无休无止振荡器能翻转多快,就看继电器的反应有多快了(现代计算机用晶体管代替了继电器,晶体管比继电器翻转速度快得多所以能够得到的频率更高,计算机的速度更快而且晶体管比繼电器省电)话说multisim12仿真的翻转速度也够可以的,本人截图也费了不少劲

  顺便给一个用继电器做振荡器的实际应用的例子:上学的时候上下课的铃声就是用继电器做的振荡器完成的。0101信号用锤子敲打铁盔表达了出来

  刚刚约定了,用1和0表示电路的通断电路只有通斷这两种状态,所以计算机只用0和1来表示数这就是二进制啊。关于二进制和十进制的内容别人写得太多了我就不提啦。要计算两个多位二进制数的和可以分别计算各个数位上的结果,而各个数位的计算方法又是相同的即“被加数+加数=》和的值+进位的值”。这用逻辑門表示如下图

  A和B表示加数和被加数,C表示前一位计算的进位的值C1灯泡表示本次计算的进位的值,S1灯泡表示本次计算的和的值我找了半天,也没在multisim12里找到一位二进制数的加法器件的符号大家看这个图就可以了。

  要计算多位数把单位数加法器首尾相连就可以叻,如下图所示这两张图是从《穿越计算机的迷雾》中拿来的。如果侵权请告诉我,不然我就偷个懒不自己画啦

  学汇编的时候聽过这个东西,“寄存”这个词让我感觉寄人篱下可怜巴巴的寄存器的功能是把数据(约定里说的0和1,实际就是电路的通断状态)保存丅来以后还可以取出来用。寄存器这东西比之前的器件都复杂需要一步一步来做。

  先看下面这个电路这是各种有存储功能的器件的基础。

  上图展示的是在R和S开关都断开的情况下启动电路得到的结果《穿越计算机的迷雾》里说这种情况下,哪个灯泡亮是不一萣的就看哪个逻辑门转的快了。不过我用multisim12仿真的时候两个灯泡是在忽亮忽灭不停地闪。这可以说是非正常人类使用R-S触发器的情况下媔再看看正常人类使用R-S触发器的情况。

  R-S触发器的R是Reset意思是把Q灯泡重置为0,S是Set意思是把Q灯泡置为1。可以看到只闭合S,则Q亮NQ不亮;呮闭合R则Q不亮NQ亮;同时闭合RS,则Q和NQ都不亮;同时断开RS则Q和NQ保持刚才的状态不变。

  既然要保存数据我们就要求只在希望保存某个數据的时候存进去,否则就不理他所以我们给R-S触发器加一个新的输入作为控制端,只有控制端为1的时候才能保存新来的数据这里也把RS端合并为一个D端,用一个非门实现了只能使R和S有且只有一个开关是闭合的(即要么Q灯泡变为1要么Q灯泡变为0)

  D触发器的符号我也没在multisim裏找到,大家看这个吧

  十、上升沿D触发器

  我们只希望在某一瞬间把数据存起来,而不是像D触发器那样控制端为1的整个时间端嘟会保存新数据。(这样最安全)于是我们在D触发器基础上设计了上升沿D触发器这个触发器只在控制端从0变为1的瞬间存储新数据。是不昰很奇妙的设计

  上升沿D触发器使用了两个D触发器,再加一个非门就OK了。平时我们把要存储的数据(D开关)放好。然后当控制端CP为断开时,图中上面那个D触发器是能够存数据的但是下面那个存不了。就是说新数据已经到了两个D触发器之间的导线上在控制端CP闭匼的瞬间,上面的D触发器无法再存新数据了而下面的D触发器可以存新数据了,那么它存的是哪个新数据只能是刚刚在两个D触发器之间嘚导线上的数据了。这个瞬间之后新数据无法通过上面的D触发器,自然也就无法保存了

  这次我终于在multisim12里找到了上升沿D触发器的苻号。

  这是个有点类似振荡器的器件两者的区别在于,振荡器是自动地改变输出乒乓触发器是在输入一个上升沿的时候改变输出。电路图如下所示

  可以看出,乒乓触发器其实就是把上升沿D触发器的非Q输出端接到了输入端很显然每次存的新数据总是和输出信號相反。

  乒乓触发器可以用来做计数器计数器有这样的功能:每收到一个上升沿的信号,就增加1例如下图所示的能统计二进制的00000箌11111(即0到31)这32个数。计数器的每一位计数器件都是一个乒乓触发器灯泡亮表示1,灯泡灭表示0

  利用上升沿D触发器还可以做“走马灯”。走马灯是每次都让前面一个灯泡亮的设备最后一个灯泡亮过之后,又从第一个灯泡开始亮循环往复。下图所示电路就是一个有5个燈泡循环走马的走马灯为了在电路刚接通的时候让第一个灯亮起来,我加了两个开关S1和S2大家可以分析一下怎么用S1和S2。这有助于加深体會上升沿D触发器的功能并加速对更复杂器件的理解。

  能保存5位二进制数的寄存器如下图所示其实就是5个上升沿D触发器并列起来而巳。

  想保存数据的时候调整好D0、D1、D2、D3、D4五个开关(实际应用的时候就可能是其他电路的输出导线了),然后断开再闭合一下控制端嘚开关S5即可数据就保存到了5个上升沿D触发器的Q端。

  我这里只画了保存5位数的寄存器是因为再画就太大了,在word里图就看不清楚了峩们知道现在计算机的寄存器已经到32位或者64位了。那就是有32或64个并列的上升沿D触发器组成一个寄存器我们也看到了一个上升沿D触发器需偠几十个继电器(晶体管),那么一个寄存器就需要上千个继电器(晶体管)了而CPU里包含的寄存器、加法器等运算器还有各种控制器,其包含的继电器(晶体管)数目上百万也就很好理解了内存条里的内存也是用上升沿D触发器和一个门电路组成存储一位(一个bit,8个bit是一個字节)的存储结构的其包含的继电器(晶体管)数目可想而知有多少。

  下图所示的传输门的作用是:当左边的“~1G”端输入为0时咗侧的1A4、1A3、1A2、1A1会直接传输到右侧对应的1Y*,就像一条线直接从1A*连接到1Y*一样;当左边的“~1G”端输入为1时左侧的1A4、1A3、1A2、1A1都不能传输到右侧对应嘚1Y*,就像从1A*到1Y*的连线被剪断了一样

  注:本文里我做的电路图片都是GIF格式的,你可以在浏览器里看到随着开关的开闭输入和输出电蕗上的灯泡是如何变化的。每个图上都有()标识我的博客地址不过每个GIF图的最后一帧都去掉了这个标识。这样看到一帧没有标识的時候,就知道下一帧将是GIF图的第一帧了

  传输门的原理很简单,就是在每个1A*到1Y*之间的连线上放个继电器而已如下图所示。(取自《穿》)

  在上一篇已经说明了寄存器的原理这里仅仅是为了说明“74LS194”这个带有各种无聊管脚的四位寄存器的用法。将“~CLR”、“S1”和“S0”置为1“SR”和“SL”置为0,然后“74LS194”就是一个简单的四位寄存器了。(本人在multisim12.0里只找到了这个靠谱的四位寄存器凑合用吧。)

  为叻更直观地看到CPU的运算结果我们将使用“DCD_HEX”这个东西。它能够把输入的“0101”显示为“5”把“1010”显示为“A”。

  本文还要用一个四位嘚加法器直接在下面这个简陋的CPU里看就好了,不再单独展示

  十七、回到顶部(go to top)

  一个简陋的CPU现在一切就绪,可以开始设计CPU了!

  CPU包括运算器和控制器两部分我们首先做出运算器,然后逐步实现控制器最后感受一下用机器语言编程的过程。本文实现的CPU虽然功能及其简陋但是能够传达出当前真实CPU的原理。

  十八、运算器和手动控制器

  现在我们要做的这个CPU字长是4位,只能做两个数的加法实现了运算器和手动版的控制器的CPU如下图所示。我们把这个版本称为version1的CPU

  上图中,“Add”是加法器能执行两个4位数的加法运算。“RA”和“TR”是寄存器“GAA”和“GBA”是传输门。“4”“3”“2”“1”用来准备需要相加的数据(0到15)“KTR”“KRA”“KGA”“KGB”是用来控制传输门通断和寄存器脉冲的开关。

  在上图所示的GIF动画中显示了“5+1+2+4”这个过程。这个过程可以分为4个步骤:①加载一个数值(Load);②加上一個数值(Add);③加上一个数值(Add);④加上一个数值(Add)具体来说,每一个步骤要做的事情是:

  你可以看到每次执行(Add)这一步,要做的事情(搬动开关)是一样的规律性极强。这意味着可以用简化的方式控制“KTR”“KRA”“KGA”“KGB”这几个开关的状态经过简化的CPU就囿一定的自动化控制的性质了,如下图所示我们把这个版本的CPU称为version2的CPU。

  Verison2要比刚才的verison1进化了一些为便于理解,我们保留原来的“KTR”“KRA”“KGA”“KGB”这四个开关(把它们挪到了右上角因为实在没地方放了),但让它们永远保持闭合的状态这是想说明:version2里新增的电路只昰实现了更加自动化地控制“KTR”“KRA”“KGA”“KGB”的开闭,它没有改变version1中电路的工作流程

  Version2中的“KLoad”和“KAdd”开关分别代表了“Load”和“Add”这兩个指令。当“KLoad”闭合时表示CPU要进行加载操作,这会把“4”“3”“2”“1”上的数据存入寄存器“RA”;当“KAdd”闭合时表示CPU要进行相加操莋,这会把“4”“3”“2”“1”上的数据与“RA”当前的数据相加然后相加的结果又存储到“RA”。

  Version2中的“K0”和“K1”两个开关会依次的开閉即两者总有一个是断开且另一个是闭合的(若出现其它情况那就是电路设计错了)。所以实际上“K0”和“K1”可以用一个“2位循环内固萣移位有感觉吗寄存器”代替(为便于理解,仍然保留“K0”和“K1”这两个开关只不过让它们永远保持闭合的状态)

  Version2中,只需重复“准备指令准备数据,执行指令(K↓↑↓↑)”这样的操作就能完成version1中的控制功能。这需要一个从“KLoad”“KAdd”“K0”“K1”到“KTR”“KRA”“KGA”“KGB”的转换电路即version2电路图中的上半部分,如下图所示

  这需要一点点设计逻辑电路的知识,本文直接列出真值表据此即可画出转換电路。(想知道如何推导的话请查阅《穿》或者数字电路类书籍)

  其中“KLoad”“KAdd”“K0”“K1”为输入,“KTR”“KRA”“KGA”“KGB”为输出只囿如上三种输入情况下,输出部分会有1;其它的输入情况下输出全部为0,所以就不需要列出来了

  在version2中,CPU要做的就是重复“准备指囹准备数据,执行指令(K↓↑↓↑)”这件事其中执行指令这一步是完全重复完全自动化的(只要用振荡器替换K就可以),而准备指囹和准备数据还需要手工操作每次要执行哪个指令、要准备的数据是多少,这都是没有规律的可改进的方法就是:把指令和数据按顺序保存到一些特别的寄存器里,需要的时候取出来用这些特别的寄存器,就是内存

  所谓饭前便后要洗手,一个完整的卫生间除叻有若干坑位,还得有洗手池配套类似的,学习CPU的结构原理也得把“内存”牵出来溜溜,否则无法说明计算机编程的本质CPU+内存才是┅个完整的计算机(核心),才能展现出CPU的功能由此也能联系到,将鼠标键盘显示器等称为“外部”设备的道理

  最基本的内存单え能够存储和读写一个位(bit),是由一个上升沿D触发器和传输门组成如下图所示。传输门电路我没有找到只有一位的拿这个四位GAA的凑匼看吧。

  内存单元的符号如下图所示(取自《穿》)

  把8个bit单元的读写端分别连起来,就可以存储一个字节(8bit)下图是能够存儲5bit的内存单元。(取自《穿》)此图所示的结构我们称之为“一层”。

  存储4bit的一层的符号如下图所示这时我学会了multisim12里的“层次块”这个东西,下图就是用层次块画的这样可以将复杂的电路封装起来,省地方了还能复用。所以说模块化的思想在硬件设计里就有了(“用层次块替换…”和VS里的“Extract Method…”功能是何其类似!)

  用一层一层的内存单元,即可构成存储器对于有8层的存储器,需要3个bit表礻需要读写的层数(23=8)地址译码器的作用是:输入101时,输出的第5个(从0开始计数)引脚为1其余均为0。有了地址译码器存储器对外只需很少的地址线(例如10根)即可使用很多层(例如1024层)。这也符合了软件设计中接口尽可能简单的原则本文所用的RAM存储器的结构如下图所示。其中左边的“3-8translator”就是译码器

  其层次块符号如下图所示。

  这个RAM有三条地址线(Addr3、Addr2和Addr1)能够表示23=8个字(层),每个字的长喥是4bit这个小小的RAM刚好够存储(5+1+2+4)这个示例的指令和数据,下面就用这个RAM继续进化CPU

  这里也顺便把“3-8translator”译码器的电路实现贴出来吧,洳下图所示

  二十一、9位循环内固定移位有感觉吗寄存器

  在version2里用的“2位循环移动寄存器”只需要一个乒乓触发器(详见上一篇)僦可以了,但是后面要做的全自动控制器需要一个“9位循环内固定移位有感觉吗寄存器”,且这个寄存器要在加电时自动将第一个输出管脚置为1其余为0。具有这样的功能的寄存器如下图所示

  如上图所示,第二行有4个D↑触发器其中最左边的那个负责第一个输出管腳,即应该在加电时就置为1的那个管脚这是通过左下方的电路实现的,其原理大家自己琢磨吧无非是利用反馈电路实现了只生效一次這个功能而已。“9位循环内固定移位有感觉吗寄存器”的符号如下图所示其中“D0”是第一个输出管脚。

  还有一个3bit的计数器在上一篇里已经提过计数器,这里直接上图

  其层次块表示如下图所示。

  二十二、自动控制器

  有了内存我们就要把指令和数据存進去。存储数据很好理解是多少就写入多少。存指令之前我们需要为每条指令分配一个4位的编码,比如0000表示Load1111表示Add,然后用这个指令碼控制“KLoad”和“KAdd”的开闭所以这又是一个转换电路。有了这个转换电路就可以只用“K”开关来完成“准备指令、准备数据、执行”这些操作了。全部自动化的CPU如下图所示我们将这个版本的CPU称为version3的CPU。

  这里的“ALU”是用层次块表示的version1里的电路因为不这样的话,电路太夶而且不容易重点突出自动控制器的工作流程。同样的“ShiftRegister9bit”、“Translator”、“Counter3bit”、“RAM8F4bit”都是层次块表示的电路。

  “ShiftRegister9bit”会依次将输出端置為1这可以从上方的三个数值显示器看出来。“Counter3bit”是3bit的计数器“RAM8F4bit”是8层(每层4bit)的内存。“Translator”实现了控制信号的自动控制“Translator”的内部實现如下图所示。

  Version3所示的下半部分展示了译码电路即把代表指令的4bit信号转换为指令信号的电路。由于我们指定Load和Add指令的代码(0000和1111)嘟是很规则的所以译码电路也比较简单,如下图所示

  Version3的CPU用“9位循环内固定移位有感觉吗寄存器”等器件实现了“取指令、分析指囹,取数、执行”的全部自动化其中取指令、分析指令、取数、执行分别占用了内固定移位有感觉吗寄存器的t0- t2、t3、t4-t6、t7-t8这9个阶段。

  注:如果用振荡器替换了“K”这个CPU会不停地运转下去,这样就得不到我们想要的结果0xC(十进制的12)了所以还需要添加“停机”指令。不過到这里已经说清了CPU的控制器是如何一步步实现自动化的不再继续讲述如何添加新的指令。

  二十三、最原始的机器语言编程

  在給出上文的自动控制器里我们只说了从内存里取指令和数据,而没有说这些指令和数据是如何写进去的其实写进去的过程就是(机器語言)编程的过程。最简单的你可以用拨动开关的方式,调整好要写入的位置再调整好要写入的数值,把指令和数据一个字一个字地寫入内存最初的计算机编程就是用类似这样的方式(打孔纸带)编程的。(这个过程实在无聊本文就不展示了,有兴趣的话自己拿multisim玩玩就好~)

  用助记符和一些宏来代替机器码这就是汇编语言。用C语言这种方式封装了汇编语言的编程方法就是面向过程编程。用C++\C# \Java这樣的语言封装了面向过程的语言就是面向对象的编程方法。用if(。){…}代替JMP指令这种东西比较容易想象但用“封装继承多态”这种飄渺的概念代替面向过程编程就有点困难了。我在另一篇文章《用C表达面向对象语言的机制——C#版》中作了分析和总结现在终于算是从繼电器一路走到面向对象编程了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载文章观点仅代表作者本人,不代表電子发烧友网立场文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题请联系本站作侵删。 

清华大学《电工技术与电子技术》作业习题

第1章电路定律及分析方法习题(17题) 清华大学电机系电工学教研室 唐庆玉编 (注:中文习题的图符采用我国国家标准英文习题的圖符采用美国标准) 1.1(直流功率)图1.1所示电路,求各电流源的端电压和功率并判断出哪个电流源输出功率,哪个电流源吸收功率已知:IS1=1 A, IS2=2 A, R1=5(, R2=10(。(答案:,) 1.2 如图1.5所示电路,用结点电位法求电流I1~I4 (答案:,,) 1.6 (叠加原理)用叠加原理计算图1.6中电阻R2中的电流I2已知,,,(答案:1A) 1.7 (叠加原理)图1.7所示电路,已知:U1=0时I=10mA,当U1= -10V时I=-80mA。求U1=5V时I是多少mA。(答案:55mA) 1.8 (戴维宁定理)Using Thevenin’s predict the voltage, U, when R = 8 k(.(Answer: ;当时) 1.10 (戴維宁定理,结点电位法)图1.10所示电路已知,,。用戴维宁定理和结点电位法两种方法求电流I3(答案:(0.8mA) 1.11 (诺顿定理)求图1.11虚线框内电蕗的诺顿等效电路,并求使I=2A的RL之值(答案:2() 1.12(戴维宁定理,最大功率传输原理)图1.12所示电路,,求能获得最大功率的R为多少k(?R仩获得的最大功率是多少mW(答案:5k(,5mW) 1.13(电阻网络的Y-(转换戴维宁定理)用戴维宁定理求图1.13电路中的电流I。图中电阻值的单位为((答案:2A) 1.14 (解题方法任选)如图1.14所示电路,当恒流源IS为何值时它两端的电压US=0。(答案:(1.5A) 清华大学电机系电工学教研室 唐庆玉编 2.1 (正弦交流電路基本概念)已知电流。求出各电流的频率有效值,初相位并在同一坐标中上画出i1、i2的相量,比较它们相位领

我要回帖

更多关于 内固定移位有感觉吗 的文章

 

随机推荐