当前位置:文档之家› 计算机基本模型机设计与实现

计算机基本模型机设计与实现

计算机基本模型机设计与实现万红明,李明威——湖北省孝感学院计算机科学系摘要:本科研项目主要在传统模型机的基础上进一步设计且实现模型机的主要组成部件(运算器,存储器,控制器,基本输入输出设备)的基本功能,结合基本硬件资源,充分利用微程序,时序,组合逻辑等控制模型机完成一些基本的指令功能。

关键词:计算机组成原理模型机微指令微程序。

一、模型机的硬件组成计算机是由运算器、存储器、控制器以及输入输出四大主要单元组成。

它们之间通过一条公共的通道进行数据的传递和控制,即总线。

其中运算器主要是负责数据的逻辑和算术运算,存储器的任务就是存放我们编写的机器指令(程序)和一般的数据存储,控制器是根据读取内存中的机器指令从而对相应的指令作出分析,继而对我们的计算机发不同的控制信号。

输入输出单元则是将我们需要运行的程序写入内存,再由机器运行计算得出结果,予以显示输出。

下图为模型机的基本框架:图(1)下面我们就对模型机的硬件设计思路作一些简要的介绍(设计的重点是在微程序的设计上,在后面我们将作祥细的说明。

(1)算术逻辑运算单元我们用的运算器是将两个74LS181进行级联做成一个八位的运算器,并且带有进位功能。

当有进位产生时,在高四位的74LS181上的CN+4端输出一个高电平,经D触发器锁存输出并送致LED显示。

74LS181有多种组合状态,因此会有多种不同的结果。

我们在此只设计实现两个数据相加的功能。

它的输入端直接连着两个锁存器(74LS273),它能够将输入端的数据送进锁存器内锁存,进而将数据送进运算器进行算术或逻辑运算。

运算器运算后的结果将通过一个三态门(74LS245)后才能送到总线与其它的部件交换数据,设计中三态门的作用是使各部件正常工作而互不影响。

(2)存储单元存储器芯片选用的是6116(2K x 8),其数据端接至数据总线,地址由地址锁存器(74LS273)给出。

数据开关经一三态门(74LS245)连至数据总线,分时给出地址和数据。

(3)计数器单元计数器由两片四位的计数器(74LS161)级联组成的,计数值最大为255,这是由于我们的计数器只有八位。

计数器是用来存储即将执行下一条指令的地址的,还可实现程序的跳转。

(4)寄存器单元这里的寄存器只由一个芯片74LS374实现,它是用来保存间接寻址时的内存的有效值和中间运算结果的。

(5)指令寄存器单元指令寄存器是用来存放即将要执行的一条指令,当执行一条指令时,先把它从内存取到指令寄存器。

再由指令寄存器输出的机器指令通过一个专门的组合逻辑电路译出相应指令的微程序首地址,进而再由控制器发出控制信号,完成该指令所要完成的功能。

(6)输入输出控制单元 主要是用来与机器进行人机交流而设的,将人需要表达的意愿通过机器来实现并反馈给人所实现的结果。

二、微控制器及指令系统微程序控制器的基本任务是完成当前指令的翻译和执行,即将当前指令的功能转换成可以控制的硬件逻辑部件工作的微命令序列,完成数据传送和其它各种操作。

该微命令即为微程序,它存储在一种专用的存储器中,称为控制存储器(2716)。

在此还有一个很重要的单元需要说明,就是机器的生命源时序控制。

其框图如图(2)所示。

时序控制电路START STEP CLRTS1TS2TS3TS4图(2)图中 ¢ 为时钟信号,由一方波信号源提供,可产生频率及脉宽可调的方波信号。

当时序工作为连续状态时,它可以产生如图(3)所示的时序信号TS1~TS4。

TS1TS2TS3TS4CPU周期CPU周期图(3)1。

微程序控制原理微程序控制器的原理图见附录(2),微命令寄存器16位,用两片8D 触发器(74LS273)组成,设计中只用了其中的14位。

其中一片的输出信号控制着运算器和内存的工作方式,剩下一片用其低六位通过两片74LS138译码输出产生11条控制信号,还有5条输出端没有使用。

微地址寄存器用的是8位的,设计中只用到它的低五位。

芯片的工作并不是全部只由所对应的控制信号来控制的,大多都是通过与时序信号共同作用来控制的,这主要是为了提高机器的执行效率,让它能在一个CPU 周期内执行更多的操作。

这样也能够大大减少微程序的数量,即充分的利用了机器的资源,而且还减少了对硬件资源的需求。

对于时序T1~T4的安排具体如下:(即在对应时刻时,下列控制信号所对应的器件将执行相关的操作)T1:取微命令和部分B字段的控制信号如:PC-B,CE,W/R ,ALU-B,RS-B,LD(LD 对置数的控制)。

T2:各锁存器的输入端控制如:R0,R1,Ri,AR,IR,Rp,PC以及隐含LD对计数器时钟输入端的控制。

T3:存放指令对应的微程序首地址的寄存器(74LS374)的输入控制端。

T4:向控存送下一条微指令地址的微地址锁存器的输入控制端。

图(4)2。

微程序执行顺序强制改变原理关于微地址的强制跳转的电路图如图(5)所示,当取指阶段到来时,首先在T1时刻会将IR置为“1”,这时微地址锁存器与控存相联接的一个三态门将会被截止,而将中间寄存器74LS374的输入端置为有效,等到T3时刻到来时,通过组合逻辑翻译来的微程序首地址就被送入寄存器里,只等T4时刻到来时,又可将该地址送入微地址锁存器内,从而实现了微地址的跳转。

关于微程序的设计流程及微指令见图(4)和附录一。

图(5)指令与其对应微指令映射表:机器指令微指令首地址指令助记符Q3 Q2 Q1 u5 u4 u3 u2 u1STOP 0 0 0 0 0 0 1 1MOV [addr] , A 0 0 1 00100MOV A , #data 0 1 0 0 1 0 0 0MOV A , [addr] 0 1 1 0 1 0 1 0ADD A , #data 1 0 0 1 1 1 1 0ADD A , [addr] 1 0 1 1 0 0 1 0JMP [addr] 1 1 0 1 1 0 0 0OUT [addr] 1 1 1 1 1 0 1 0根据真值表即可列出组合逻辑的表达式,进而根据表达式作出如图(4)中的组合逻辑图。

3。

指令与微指令的联系及操作过程(1)指令的格式用操作过程下面将给出一个实际例子:实现两个数相加的,将结果存在内存,然后再将此数从内存中取出输出显示。

助记符机器指令:操作码操作数MOV A,54H 0000 0010 0101 0100MOV [91H],A 0000 0001 1001 0001MOV A,65H 0000 0010 0110 0101ADD A,[91H] 0000 0101 1001 0001MOV [92H],A 0000 0001 1001 0010OUT [92H] 0000 0111 1001 0010STOP 0000 0000(注:以上前五条指令中每条占用两个字节的存储单元,最后一条只占用一个字节的存储单元。

)操作步骤如下:(一)、将附录一中的微指令依次从控存的00H单元输入。

这里用来选中控存地址的开关用的是一个总的开关组,如附录三中的右边的一组输入开关。

这里还需要将控制器内的微地址开关和写数开关指“0”,来赋予开关的使用权。

微指令输入完后,再将那些开关恢复为保护状态(即不影响其它部件的工作状态)。

(二)、根据助记符的格式将程序编写好,然后翻译成相应的机器指令。

依次将这些指令通过机器上的拨动开关写入内存。

参照附录(二)或模型机全图,先复位所有的寄存器,然后断开内存与微控制器的控制信号(即断开S-WR1和S-CS1开关),闭合图中的S-WR2和S-CS2开关,再通过图中的可控开关及S按钮开关,输入开关来共同控制输入数据。

可控开关推上去即为选中高电平(“1”),推下来则是低电平(“0”)。

由于复位后,地址寄存器已清零了,所以写第一条指令的操作码时不需要给它送地址数,直接将第一条指令的操作码通过输入开关输入到总路线,再通过两个可控开关来控制存储器的读写。

写第一条指令的操作码时,则需要先将地址数送到地址寄存器,选中内存的下一个地址单元。

这里是通过S按钮将预先送到总线上的地址数(0000 0001)打入到地址寄存器锁存的,接下来的操作就如上面介绍的相同。

(三)、输入完所有微指令和机器指令后,再将所有寄存器清零,这个操作主要是让计数器的计数由00H开始计数。

然后直接启动时序控制开关,将时序置为连续运行方式。

或者启用单步运行态,手动运行程序。

注:输入微地址时,有低五位有效,高三位已全部置0。

输入B,A字段的微代码只占用控存(2)的低6位。

其高两位可用可不用。

关于某些芯片的用法请参考附录(三)。

)(2)指令跳转的实现指令的跳转在程序中是一个很重要的功能,在此将实现程序的跳转的过程将通过电路图(6)来作一下简要的介绍:图(6)当机器执行跳转指令的第二条微指令时,在T1时刻就将LD置为低电平,同时内存中的待跳转的指令地址也同时读到总路线上,这时还需在CLK端送一个正时钟脉冲,才能将总路线上的数送到计数器。

紧接着在T2时刻到来时,产生一个正脉冲与LD取反后的高电平相与正好构成计数器所需要的脉冲,从而将计数器内的指令地址改变,待要执行下条指令时,取到指令寄存器内的操作码就不再是上一条指令紧接着的下一条指令的操作码了,而是给计数器置数的那一个地址对应指令的操作码,从而达到指令跳转功能。

三、结语通过这次对模型机的设计使大家能够在完成基本部件课程的基础之上进一步提高创新能力,知识的综合运用能力和分析问题、解决问题的能力。

同时也为以后在学习计算机其它课程中打下坚实的硬件基础。

完整的建立了计算机的整机概念,可使实验内容和理论教学有机的结合起来,有效地提高实验教学水平,使大家能够对理论与实践融会贯通,达到较好效果。

参考文献:[1] 唐朔飞,计算机组成原理,高等教育出版社1999[2] 倪继列,刘新民微机原理与接口技术(第二版)电子科技大学出版社2004[3] 曹汉房,数字电路与逻辑设计(第三版)华中科技大学出版社1999[4] 西安唐都科教仪器公司实验指导书2002Design and Implementation of the basic computer model(Li Mingwei, Wan Hong-ming,Liu Xiaoning)―Xiaogan, Hubei Institute of Computer Science Department Abstract :The research mainly in the traditional model based on further design model is realized, the main components (calculator.Memory controller, the basic input-output equipment), the basic functions of the basic combination of hardware resources, make full use of micro-program.Timing, controlled model combinational logic to complete some basic command functions.Keywords : Computer architecture model plane Micros Micro procedures.字段安排表:微指令表:A 段 A 段选中控制信号B 段 B 段选中控制信号0 0 0 0 0 0 0 0 1 R0 0 0 1 PC 0 1 0 R10 1 0 PC-B 0 1 1 Ri 0 1 1 1 0 0 AR 1 0 0 ALU-B 1 0 1 IR 1 0 1 RS-B 1 1 0 Rp 1 1 0 LD 1 1 11 1 1S3 S2 S1 S0 M CNWR CEA B 下一条微地址当前地址u5 ~ u1取机器指令0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 1 00H 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 01H 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 02H 停机(STOP ) 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 03H 将累加器A 的内容存到内存中某一地址单元中(MOV A ,[addr]) 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 1 04H 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 1 0 05H 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 06H 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 07H 取立即数存于A 中 (MOV A ,#data ) 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 01 08H 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 09H 取内存一地址的数到累加器A(MOV A ,[addr])0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 1 1 0AH 0 0 0 0 0 0 1 0 0 1 1 0 0 10 1 1 0 0 0BH 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 0 1 0CH 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0DH 加一立即数,结果存于累加器A(ADD A ,#data )0 0 0 0 0 0 0 11 0 0 0 1 0 0 1 1 1 1 0EH 0 0 0 0 0 0 1 0 0 1 0 0 0 11 0 0 0 0 0FH 0 0 0 1 0 0 0 1 0 1 1 1 0 0 1 0 0 0 1 10H 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 11H 加某一地址内的数,结果存于累加器A (ADD A ,[addr])0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 1 12H 0 0 0 0 0 0 1 00 1 1 0 0 1 1 0 1 0 0 13H 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 1 0 1 14H 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 1 0 15H 0 0 0 1 0 0 0 1 0 1 1 1 0 0 1 0 1 1 1 16H 0 0 0 0 0 0 0 10 0 1 1 0 1 0 0 0 0 0 17H 程序跳转 (JMP [addr]) 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 1 18H 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 19H 将某一地址中的数输出显示(OUT [addr])0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 1 1 1AH 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 1 1 0 0 1BH 0 0 0 0 0 0 0 1 1 0 0 1 0 11 1 1 0 1 1CH 0 0 0 0 0 0 1 01 1 00 0 00 0 0 0 01DH运算器74LS181的功能表如下所示:存储器(6116)的功能表如下:CE W/R 存储器的工作状况 1 任意状态 无效 0 0 存储器为写状态 1 存储器只读状态锁存器(74LS273)的功能表如下:输入D输出Q 清除(CLR ) 时钟(CLK )D 0 x x 0 1 ↑ 1 1 1 ↑ 0 0 1 0 xQ 0寄存器(74LS374)的功能表如下: 输出控制(RS-B ) 时钟(CLK )输入D 输出Q 0 ↑ 1 1 0 ↑ 0 0 0 0 x Q 0 1 x xz三态门(74LS245)的功能表如下: 使能G 方向控制DIR 操作0 0 B 数据至A 总路线 0 1 A 数据至B 总路线1 x隔开S3S2S1S0 M=0(算术运算)M=1(逻辑运算) Cn =1(无进位) Cn =0(有进位)0 0 0 0 F=A F=A+1 F=A 0 0 0 1 F=A|B F= (A|B)+1 F=B A | 0 0 1 0 F=A|B F=(A|B )+1 F=A B 0 0 1 1 F=0-1 F=0 F=0 0 1 0 0 F=A+A B F=A+A B+1 F=AB 0 1 0 1 F= A B +(A|B) F= A B +(A|B)+1 F=B 0 1 1 0 F=A-B-1 F=A-B F=A ○+B 0 1 1 1 F= A B -1 F= A B F= A B 1 0 0 0 F=A+AB F=A+AB+1 F=A +B 1 0 0 1 F=A+B F=A+B+1F=B A 1 0 1 0 F=AB+(A|B ) F=AB+(A|B )+1 F=B 1 0 1 1 F=AB-1 F=AB F=AB 1 1 0 0 F=A+A F=A+A+1 F=1 1 1 0 1 F=A+( A|B ) F=A+( A|B )+1 F=A+B 1 1 1 0 F=A+( A|B ) F=A+( A|B )+1 F=A+B 1 1 1 1 F=A-1 F=A F=A位计数器(74LS161)的功能表如下:输入(P3 P2 P1 P0) 输出(Q3 Q2 Q1 Q0)工作 清除 MR 置数 PE 时钟CLK 使能 Q3 Q2 Q1 Q0 动态进位CEP CET 1 1 ↑1 1 — — 计数1 0 X X P3 P2 P1 P0 — 数据预置 ↓0 X X X X 0 0 0 0 — 清除1 X X X X 1 1 1 1 正脉冲 —可擦可编只读存储器(2716)的功能表如下:模式 PD/PGM OE Vpp/V Vcc/V 输出 读 0 0 +5 +5 数据读出 未选中 X 1 +5 +5 高阻 功率下降 1 X +5 +5 高阻 编程 正脉冲 1 +25 +5 数据输入 程序校验 0 0 +25 +5 数据读出 程序禁止 0 1 +25 +5 高阻时序控制的功能表如下:STEP STOP START工作状态 0 0 一正脉冲 停机 1 产生连续的时序10 停机 1单步运行。

相关主题