组成原理模型机说明文档.doc

上传人:苏美尔 文档编号:7200987 上传时间:2020-11-05 格式:DOC 页数:22 大小:1.05MB
返回 下载 相关 举报
组成原理模型机说明文档.doc_第1页
第1页 / 共22页
组成原理模型机说明文档.doc_第2页
第2页 / 共22页
组成原理模型机说明文档.doc_第3页
第3页 / 共22页
组成原理模型机说明文档.doc_第4页
第4页 / 共22页
组成原理模型机说明文档.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《组成原理模型机说明文档.doc》由会员分享,可在线阅读,更多相关《组成原理模型机说明文档.doc(22页珍藏版)》请在三一文库上搜索。

1、此文档为模型计算机的电路说明文档。共分为四个部分。具体如下:第一部分:ALU,PC及I/O部分1PC(74LS161) 图 X-174LS161的计数是同步的,靠 CLOCK 同时加在四个触发器上而实现的。输入部分D0D3都接入数据总线,两片74LS161构成八位。MR接总清零信号,当清零脉冲到达时,芯片内数据将被擦除;LOAD信号由微控制器在T2时译码给出,高电平有效。LDPC由微控制器在T2时译码给出,高电平有效,当此信号变为高电平并保持到T4时,与门7408输出逻辑值1,此时74LS161 的CLK引脚获得脉冲。每次获得脉冲将使中的数据加,即程序计数器的低位增,当低位自增至时产生溢出进位

2、,由RC0向高位进;总线上的数据进入74LS161的条件是LOAD信号是高电平且CLK获得脉冲。当 ENP、ENT 均为高电平时,在时钟脉冲上升沿作用下 D0D3 同时变化,从而消除了异步计数器中出现的计数尖峰。74LS161 的 ENP、ENT 跳变与时钟脉冲无关。图X-274LS245具有双向三态功能,既可以输出,也可以输入数据。AB/AB为高电平时,A0A7为数据输入端,B0B7为数据输出端。CE为片选信号,接信号PC_B,PC_B由微控制器在T2时刻译码产生,当PC_B为高电平且AB/AB为高电平时,数据由DA0DA7 输出至数据总线 74LS273是一种带清除功能的8D触发器, D7

3、D0为数据输入端, Q7Q0为数据输出端,CLK正脉冲触发,低电平清除,用作8位地址锁存器。2存储器(6116)6116为此模型机的RAM,用于存放机器指令和操作数,A0A10为地址线,数据由数据总线至74LS273输入,OE和CE同时接由M17和M16经2-4译码器输出的RAM读写控制信号,WE-R由单片机控制,用于单片机向6116中写入模拟机运行所需的指令及数据。3寄存器(74LS374)74LS374是数据寄存器,输入端D0D7与输出端Q0Q7都接在数据总线上。T4和LDIR同时为高电平的74LS08输出逻辑值1,给CLK一个上升沿的脉冲,此时数据进入寄存器。RI_B,RS_B,RD_B

4、均由微控制器在T2时译码给出,作74LS374的输出允许信号,低电平有效,此时寄存器中的数据输出至总线。4ALU(74LS181)74LS181为运算器,左侧的74LS181负责计算低4位,右侧的74LS181负责计算高4位,CN+4为低4位运算产生的进位,设有两个参与运算的8位无符号整数A和B,A和B的低四位分别接左侧74LS181的A0A3和B0B3,高四位分别接右侧74LS181的A0A3和B0B3。S0S3控制工作方式。M控制运算是逻辑运算还是算术运算。F0F3为运算结果的输出,两组构成八位的运算结果。74LS244只具有单向三态功能,只可以输出。A0A3为数据输入端,Y0Y7为数据输

5、出端。OE为输出允许信号,接信号ALU_B,ALU_B由微控制器在T2时刻译码产生,当ALU_B为低电平时,数据由Y0Y3 输出至数据总线。5I/O部分下图为输入部分,其中开关可以控制数据输入,开关由上到下分别为高到低位,SW-B为245选通信号。SW-B为低电平时,数据可输入到总线。下图为LED输出部分。245默认的数据方向为A到B。LED-B为低电平时选中245,使输出有效。第二部分:微控制部分微程序是英国剑桥大学教授M.V.Wilkes在1951年首先提出的,它是实现程序的一种手段,具体就是将一条机器指令编写成一段微程序。每一个微程序包含若干条微指令,每一条微指令对应一条或多条微操作。在

6、有微程序的系统中,CPU内部有一个控制存储器,用于存放各种机器指令对应的微程序段.当CPU执行机器指令时,会在控制存储器里寻找与该机器指令对应的微程序,取出相应的微指令来控制执行各个微操作,从而完成该程序语句的功能.1.控制台转移上图为由控制台输入转移逻辑,通过下图进行转移。00P(4)20KEW(01)PC-ARPC+1INPUT-BUSBUS-DR1DR1-RAMKRD(00)PC-ARPC+1RAM-BUSBUS-DR1DR1-LED212430202220RP(11)2301电路图中包括两个反向器,两个3输入端与非门,两个D触发器以及一个三态门组成。对于该模块,共有6个输入端,分别为S

7、WA,SWB,P(4),微地址的低两位,以及时序产生的T3。反向器U48的作用是对P(4)进行反向,因为P(4)是由微控器经过3-8译码器给出的控制信号,平时为高电平,所以需要经过反向才能符合要求。U57:A和U57:B为两个相同的3输入端与非门,连接D触发器的S端,任意一个输入为0时,输出为1,不影响D触发器,只有当3个输入端均为1时,才将相应D触发器强制置为1。U46:A和U46:B为两个D触发器时钟信号由T3控制,两个D输入端为微地址低两位,当S端为1时,输入不变;否则,相应输出置为1。U490为一个4输入输出的3态门,输出允许由T3控制,由于时钟在T3时变为高电平,所以需要加上一个反向

8、器才能实现所需要的功能。该模块的工作原理为:由P(4),SWA,SWB来判定是否转移,T3为时序, P(4)平时为高电平,经过反向器以后输入到与非门,使两个与非门都输出为1,连接D触发器的S端,强制置1端无效,微地址的低两位保持原来的输入不变。当P(4)为低电平时,经过反向器到与非门的输入端为1,当SWA,SWB为1时,且时序进行到T3时,相应与非门输出端为0,强制D触发器的输出为1,从而改变了微地址的低两位,从而实现了下一条的转移。2.地址转移上图为地址转移逻辑模块,包括4个3输入端与非门,6个D触发器。U54:A,U54:B,U54:C,U55:A为4个3输入端的与非门,3个输入端分别为T

9、4,P(1)连接一个反向器以及I4,I5,I6,I7。其中I4,I5,I6,I7为微控器外面的地址寄存器IR的高4位。这4个与非门的作用是通过输入端输出控制D触发器的S端,在需要转移地址时对D触发器进行强制置1。P(1)为微控器通过3-8译码器产生的微控制信号,平时为1,经过反向器后为0,经过与非门,使与非门输出为1,不影响D触发器。U52:A,U52:B,U53:A,U53:B,U49:A,U49:B,为6个D触发器,D输入端为微命令的地6位,即下一条微地址,左面是低位,右面是高位,其中低两位由上述的控制台转移的输出端给出,高四位为存储器输出。时钟控制由T4进行,低四位的S端连接四个与非门的

10、输出,R端连接CLR信号,当CLR为低电平时,所有的D触发器输出均为0。该模块的工作原理为:由P(1),I4,I5,I6,I7来判断是否转移,T4为时序。平时P(1)为1,经过反向器后为0,与非门输出为1,对D触发器无影响,微地址不变,此时不进行地址转移。当P(1)为0时,经过反向器的输出为1, I4,I5,I6,I7的任意一位为1时,且T4时序有效时,对应与非门输出为0,强制D触发器输出为1,从而进行了地址的转移。3微地址输入此图为微地址输入模块,其中包括一个74374锁存器以及3个6116存储器。U45为一个74LS374锁存器,它的6个输入端即为微地址,按照我们的设计,6个输入端由单片机

11、来控制,因此ADDR0ADDR5连接的是单片机的6个相应端口,通过编程改变微地址,从而实现微命令的输入。U35,U36,U37为3个6116的RAM,由于PROTEUS 7中没有ROM,所以只能使用该芯片。其中5个控制端为单片机的控制,具体情况会在单片机模块中指出。该模块的工作原理为:首先输入微地址,指明对存储器进行操作的地址单元,然后输入微命令,通过控制信号对WE进行操作,实现微命令的写操作,然后改变微地址的输入,进行下一条微命令的写操作,直到写完所有的微命令为止。4微命令输入上图为微命令输入模块,包括3个控制开关,3个8输入端双向三态门,以及24个LED显示灯。DSW1,DSW2,DSW3

12、为3个控制开关,控制微命令的输入。从左到右分别为从高位到低位。U42,U43,U44为3个8输入端双向三态门,AB/BA信号端为1,表示由A端向B端传输数据。片选有效信号由一个逻辑门控制。它们的24个输出端为24位微命令,它们连接24个LED显示灯以及6116存储器。D15D38为24个LED显示灯,用于显示24位微命令,为1时灯亮,为0时灯灭。该模块的工作原理为:由输入端输入微命令,经过三态门输出到LED灯进行显示,以及到6116存储器进行存储。5微控制输出上图为微控制信号的输出模块,包括3个锁存器,3个3-8译码器,以及若干个反向器。U32,U33,U58为3个锁存器,只是使用的芯片不同,

13、左边两个为74LS273,右边一个为74LS175,CLK端由T2控制,MR端由CLR控制,即CLR为0时,锁存器清零。U38,U39,U40为3个3-8译码器,E1,E2,E3为1,0,0。输入端为A,B,C字段,译码的情况如下:由于LDR0,LDDR1,LDDR2,LDIR,LDAR以及LDPC均为高电平有效,所以需要在输出前加上一个反向器。该模块的工作原理为:由存储器输出的前18位为控制信号,经过锁存器的锁存,其中,高9位直接输出,剩余9为需要经过3-8译码器的译码输出,具体输出入上图所示。第三部分:自动输入本系统若使用开关拨代码及微程序,则由于数据量较多且容易拨错,致使调试效率低下。因

14、此用一个AT89C51来自动写入代码及微程序,省却拨动开关的时间。下面是具体电路及写入51的代码,经验证可正确写入及读出。1 AT89C51部分下图为写入程序的AT89C51引脚图。其中P0脚提供微程序;P1.7为地址寄存器提供时序信号;P1.5P1.0为微地址寄存器提供微地址;P2提供各种控制信号(各控制信号用途见代码注释);P3提供程序/地址。因AT89C51引脚有限,因此有些脚要复用。其中P0口在一个周期内提供24位微程序,根据片选信号分别写入不同存储器;P3分时复用。2微程序存储写入部分下图为微地址寄存器(74LS374)与三个微程序存储器(6116)的连接示意图。其中ADDR0ADD

15、R7与上图AT89C51的ADDR0ADDR7相对应。用来提供微地址。而三个微程序存储器的读允许,写允许,片选分别与上图的P2.7P2.3相对应。其中微地址寄存器的T与上图的T相对应,用来提供时序信号,以保证其正确运行。微地址寄存器默认设置为输出允许。首先由单片机提供微地址,然后由T提供一个脉冲,使之写入374。这时总线上位微地址信号。为微程序的写入提供地址。下图为三个74LS245(三态门)相连,用来同时给三个微程序存储器写入微程序,写入时三个245的片选都被选中,即数据可以通过这三个三态门。首先三个微程序存储器的地址可由上面步骤给出。然后再由单片机写入数据。AT89C51每次写8位数据,然

16、后配合下面三个6116存储器的片选,写有效,分别写入数据。3存储器写入部分下图为写入主存程序的电路。包含一个74LS245,一个74LS273(地址寄存器),一个6116主存储器,其中蓝色粗线为总线。它将这三个部件都连接了起来。向主存写程序时先将LDRAM置为低电平,再通过R7R0写入地址,这时TR脚发过来一个脉冲,使地址写入地址寄存器(74LS273),然后再通过R7R0写入数据,这时WE-RAM脚置低电平,数据就写入6116了。其中片选默认为有效,读允许默认为无效。写完程序后可把SW15, SW18 ,SW10,SW9拨至左边,以使其按照信号正常工作。4代码部分具体代码如下:#includ

17、e reg51.hsbit OE =P27;/控制微控器里三个6116(RAM)的输出sbit WE =P26;/控制微控器里三个6116(RAM)的写入sbit CS2=P25;/控制微控器里三个6116(RAM)的片选sbit CS1=P24;sbit CS0=P23;sbit t=P22;/给微地址寄存器写入地址提供时序信号sbit WE_RAM=P21;/为主存储器提供写允许信号sbit LDRAM=P20;/给主存储器写入地址或数据的74LS245的允许信号sbit tr=P17;/为主存储器提供地址的74LS273的时序信号#define n 100/用于提供延时的变量void d

18、elay(void)/延时功能函数char i,j;for(i=0;in;i+)for(j=0;jn;j+)void init(void)/初始化函数OE=1;WE=1;CS2=1;CS1=1;CS0=1;WE_RAM=1;LDRAM=1;t=0;void main(void)char c225= 0x01,0x01,0x00,0x00,0x00,0x01,0x95,0x00,0x00,0x01,0x01,0x01,0x01,0x02,0x00,0x00,0x01,0x01,0x00,0x01,0x00,0x07,0x00,0x07,0x06;/微程序的高八位数据char c125= 0x81

19、,0xed,0xc0,0xe0,0xb0,0xa2,0x9a,0xe0,0x10,0xed,0xed,0xed,0xed,0x82,0xe0,0xa0,0xed,0xed,0xa0,0x80,0x20,0x0a,0xd1,0x0a,0x8a;/微程序的中八位数据char c025= 0x10,0x82,0x48,0x04,0x05,0x06,0x01,0x0d,0x01,0x83,0x87,0x8e,0x96,0x01,0x0f,0x15,0x92,0x94,0x17,0x01,0x18,0x01,0x81,0x10,0x11;/微程序的低八位数据char ram11=0x00,0x10,0x

20、0a,0x20,0x0b,0x30,0x0b,0x40,0x00,0x00,0x01;/主存储器里的数据及指令char i;init();WE=0;for(i=0;i=24;i+)P1=i;/P1口用来提供微程序地址t=!t;/微地址寄存器的时序信号P0=c2i;/P0口用来提供微程序,先提供高八位程序CS2=0;/选中高八位的存储器delay();/延时CS2=1;/片选无效P0=c1i;CS1=0;/选中中八位存储器delay();CS1=1;/片选无效P0=c0i;CS0=0;/选中低八位存储器delay();CS0=1;/片选无效t=!t;WE=1;CS2=0;CS1=0;CS0=0;

21、OE=0;P0=0x00;/置微地址为0x00for(i=0;i25;i+)/显示微程序数据,用来检查是否输入有误P1=i;t=!t;t=!t;delay();P1=0x01;t=!t;t=!t;delay();LDRAM=0;tr=0;for(i=0;i11;i+)P3=i;/提供主存储器地址tr=!tr;tr=!tr;/将地址写入地址寄存器P3=rami;/提供主存储器数据或指令WE_RAM=0;/主存储器写有效delay();WE_RAM=1;P3=0x00;tr=!tr;tr=!tr;LDRAM=1;while(1)此代码在Keil Version2中编译为*.hex文件,然后加载到P

22、roteus中的AT89C51,便可运行。第四部分:时序及控制如图所示,此为时序信号的发生器。具体分析见下:设D触发器U21:A,U21:B,U22:A,U29:B分别为Dtrigger1,Dtrigger2,Dtrigger3,Dtrigger4。相应的管脚为Qn,n,Dn,Sn,Rn;与Q1相连的脚有:T10,T20一脚,D2;与Q2相连的脚有T30一脚,D3;与2相连的脚有T20一脚;与Q3相连的脚为D4;与3相连的脚有T30一脚,T40脚。即当Rn脚为1,即无效时T10=1T20=Q1&2T30=Q2&3T40=3=Q3且D1=1;D2=Q1;D3=Q2,D4=Q3,Qn=Dn & C

23、LKn;开始时,D1=1,但因CLK1未送入脉冲,于是D1无效,致使Q1=0,即T10=1;此时状态表如下:D1 Q1D2 Q2 D3 Q3 D4 T10 T20 T30 T401 0 0 0 0 0 0 1 0 0 0当CLK1送入脉冲后,D1有效,于是Q1=1;此时状态如下:D1 Q1D2 Q2 D3 Q3 D4 T10 T20 T30 T401 1 1 0 0 0 0 0 1 0 0当CLK2送入脉冲后,D2有效,于是Q2=1;此时状态如下:D1 Q1D2 Q2 D3 Q3 D4 T10 T20 T30 T401 1 1 1 1 0 0 0 0 1 0当CLK3送入脉冲后,D3有效,于是

24、Q3=1;此时状态如下:D1 Q1D2 Q2 D3 Q3 D4 T10 T20 T30 T401 1 1 1 1 1 1 0 0 0 1当D4为1时,且CLK4=1,使Q4=1,再当SIGNAL=1时,使R1R3都为0;此时Dtrigger1Dtrigger3都清0,状态又回到第一个。如此往复,便形成了CPU的时序。下图为时序的部分控制电路:其中T10T40相当于U60,U27:A,U27:B,U61引出的引脚,其引出的线路与触发器的Q端相与即可控制时序的停止。即当为0时,Q为0,可使T1T4都为0。单步执行与连续执行的开关定义,如图当开关拨至STEP时,输出T1T2T3T4后停在T1,在继续给一个START信号后再输出一组T1至T4

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

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1