一、实验0——ROM仿真
1、实验目的
(1)掌握ROM的工作原理;
(2)画出逻辑电路图及布出美观整齐的接线图;
(3)掌握ROM读出原理。
2、总体设计
存储元由有否二极管组成,若有,由于二极管导通那么数据线上可以读出1;如果没有二极管,数据线上输出接地电平,读出0。
3、详细设计
4、实验结果与分析
(1)0000(0)
(2)0001(1)
(3)0000(0)
(4)0110(6)
5、小结与心得体会
通过对ROM仿真的学习,我基本了解了ROM的工作原理以及ROM的读出原理,并对自己的后四位学号(0106)进行存储输出,也同时重新复习了Multisim的基本操作,为后续的实验打下基础。
二、实验1—— 验证74LS181运算和逻辑功能
1、实验目的
(1)掌握算术逻辑单元(ALU)的工作原理;
(2)熟悉简单运算器的数据传送通路;
(3)画出逻辑电路图及布出美观整齐的接线图;
(4)验证4位运算功能发生器(74LS181)组合功能。
2、总体设计
ALU能进行多种算术运算和逻辑运算。4位ALU-74LS181能进行16种算术运算和逻辑运算。功能表如下(“/”表示求反):
方式 | M = 1 逻辑运算 | M = 0算术运算 | |
S3 S2 S1 S0 | 逻辑运算 | CN=1 (无进位) | CN=0 (有进位) |
0 0 0 0 | F=/A | F=A | F=A加1 |
0 0 0 1 | F=/(A+B) | F=A+B | F=(A+B)加1 |
0 0 1 0 | F=(/A)B | F=A+/B | F=(A+/B)加1 |
0 0 1 1 | F=0 | F=负1(补码形式) | F=0 |
0 1 0 0 | F=/(AB) | F=A加A(/B) | F=A加A/B加1 |
0 1 0 1 | F=/B | F=(A+B)加A/B | F=(A+B)加A/B加1 |
0 1 1 0 | F=AÅB | F=A减B减1 | F=A减B |
0 1 1 1 | F=A/B | F=A(/B)减1 | F=A(/B) |
1 0 0 0 | F=/A+B | F=A加AB | F=A加AB加1 |
1 0 0 1 | F=/(AÅB) | F=A加B | F=A加B加1 |
1 0 1 0 | F=B | F=(A+/B)加AB | F=(A+/B)加AB加1 |
1 0 1 1 | F=AB | F=AB减1 | F=AB |
1 1 0 0 | F=1 | F=A加 A | F=A加A加1 |
1 1 0 1 | F=A+/B | F=(A+B) 加 A | F=(A+B)加A加1 |
1 1 1 0 | F=A+B | F=(A+/B) 加 A | F=(A+/B)加A加1 |
1 1 1 1 | F=A | F=A减1 | F=A |
ALU-74LS181引脚说明
引 脚 | 说 明 |
M 状态控制端 | M=1逻辑运算;M=0算术运算。 |
S3 S2 S1 S0运算选择控制 | S3 S2 S1 S0决定电路执行哪一种算术 |
A3 A2 A1 A1 | 运算数1,引脚3为最高位 |
B3 B2 B1 B0 | 运算数2,引脚3为最高位 |
Cn 最低位进位输入 | Cn = 0有进位;Cn = 1无进位; |
Cn+4 本片产生的进位信号 | Cn+4 = 0有进位;Cn+4 = 1无进位; |
F3 F2 F1 F0 | F3 F2 F1 F0运算结果,F3为最高位 |
3、详细设计
(1)74LS181芯片及其引脚介绍
① A0、A1、A2、A3、B0、B1、B2、B3 为数据输入端,均为低电平有效,其中 A3和B3是高位;
② S0、S1、S2、S3为控制端,控制两个四位输入数据的运算;
③ F0、F1、F2、F3为输出端,以四位二进制形式输出运算的结果;
④ CN负责处理进入芯片前进位值,CN4记录运算后的进位;
⑤ M控制芯片的运算方式,包括算术和逻辑运算
(2)绘制电路图
分析:组件a的前四个开关分别与74LS181的A0、A1、A2、A3端相连,对应数据A,由组件U1显示;后四个开关分别与74LS181的B0、B1、B2、B3端相连,对应数据B,由组件U2显示;组件J16的6个开关分别与 S0、S1、S2、S3、CN、M端相连,控制芯片的运算模式;最后由组件U3将结果显示输出,以十六进制形式显示两个输入的数据的运算结果。
4、实验结果与分析
(根据测试的16组数据按数据1和数据2的异同分为4组,演示每组的第1个)
(1)S3S2S1S0=0000,数据1=AH,数据2=5H:
① M=0,CN=1:
② M=0,CN=0:
③ M=1:
(2)S3S2S1S0=0100,数据1=FH,数据2=1H:
① M=0,CN=1:
② M=0,CN=0:
③ M=1:
(3)S3S2S1S0=1000,数据1=FH,数据2=FH:
① M=0,CN=1:
② M=0,CN=0:
③ M=1:
(4)S3S2S1S0=1100,数据1=5H,数据2=5H:
① M=0,CN=1:
② M=0,CN=0:
③ M=1:
(5)验证74LS181型4位ALU的逻辑算术功能
S3 S2 S1 S0 | 数据1 | 数据2 | 算术运算(M=0) | 逻辑运算(M=1) | |
CN=1(无进位) | CN=0(有进位) | ||||
0 0 0 0 | AH | 5H | F=AH | F=BH | F=5H |
0 0 0 1 | AH | 5H | F=FH | F=0H | F=0H |
0 0 1 0 | AH | 5H | F=AH | F=BH | F=5H |
0 0 1 1 | AH | 5H | F=FH | F=0H | F=0H |
0 1 0 0 | FH | 1H | F=DH | F=EH | F=EH |
0 1 0 1 | FH | 1H | F=DH | F=EH | F=EH |
0 1 1 0 | FH | 1H | F=DH | F=EH | F=EH |
0 1 1 1 | FH | 1H | F=DH | F=EH | F=EH |
1 0 0 0 | FH | FH | F=EH | F=FH | F=FH |
1 0 0 1 | FH | FH | F=EH | F=FH | F=FH |
1 0 1 0 | FH | FH | F=EH | F=FH | F=FH |
1 0 1 1 | FH | FH | F=EH | F=FH | F=FH |
1 1 0 0 | 5H | 5H | F=AH | F=BH | F=FH |
1 1 0 1 | 5H | 5H | F=AH | F=BH | F=FH |
1 1 1 0 | 5H | 5H | F=4H | F=5H | F=5H |
1 1 1 1 | 5H | 5H | F=4H | F=5H | F=5H |
5、小结与心得体会
通过使用Multisim来验证74LS181运算和逻辑功能,我基本掌握了对于如何设计一些简单的数据通路,同时通过查询资料和回顾数字逻辑与数字系统课程的知识明白了74LS181的工作原理及其功能,进而能根据ALU的实验原理,控制开关的不同状态,从而完成相应的逻辑和算术运算功能。
三、实验2—— 验证74LS181运算和逻辑功能
1、实验目的
(1)熟练掌握算术逻辑单元(ALU)的应用方法;
(2)进一步熟悉简单运算器的数据传送原理;
(3)画出逻辑电路图及布出美观整齐的接线图;
(4)熟练掌握有关数字元件的功能和使用方法。
(5)熟练掌握子电路的创建及使用。
2、总体设计
(1)实验原理
本实验仿真单总线结构的运算器,原理如下图所示:
(2)设计步骤
在设计的电路图中,上右下三方的8条线模拟8位数据总线;K8产生所需数据;74244层次块为三态门电路,将部件与总线连接或断开,且总线上只能有一个输入;两个74273层次块作为暂存工作寄存器DR1和DR2;两个74374层次块作为通用寄存器组(鉴于电路排列情况,只画出两个通用寄存器GR1和GR2,如果可能的话可设计4个或8个通用寄存器);众多的开关作为控制电平或打入脉冲;众多的8段代码管显示相应位置的数据信息;核心为8位ALU层次块。
3、详细设计
4、实验结果与分析
(1)说明整个电路工作原理;
答:通过DSWPK-8将数据以二进制形式送入主线。当X1(74244)的G端为低电平时允许电流通过输入到总线上,再转入到其他74244上;当G端为低电平时在分别传入到暂存储存器(74273),或者是通用寄存器(74374)中。8位的ALU(8BIT_ALU_BLOCK)作为整个电路的核心,可以进行逻辑运算和算术运算,存入寄存器的数据可以送往ALU上进行相应运算,并将结果送回寄存器并显示。
(2)说明74LS244N的功能及其在电路中作用,及输入信号G有何作用;
答:作用是选择控制由高低电平组成的数据。当G=0时,74LS244N元件可以导通,使数据到达下一个元器件,因此74LS244N起到了控制数据传输的作用,输入信号G相当于控制导通的开关。
(3)说明74LS273N的功能及其在电路中作用,及输入信号CLK有何作用;
答:作用是暂存数据。74LS273N在电路中将要传送到8位ALU进行运算的数据先储存起来。CLK是时钟信号,在电路中CLK上升沿触发,因此在CLK端的信号刷新时便可以将数据存入74LS273N中。
(4)说明74LS374N的功能及其在电路中作用,及CLK和OC有何作用;
答:作用是作为通用储存器存数据。当OC=0时,从总线送过来的数据才能进入74LS374NR,而CLK作为时钟周期,在电路中CLK上升沿触发,因此在CLK端的信号刷新时便可以将数据存入74LS273N中。有需求时还可以将待使用数据送入到74LS244N中,然后再次输送到上面的两个暂存储存器中进行其他运算。
(5)DSWPK-8产生任意数据存入通用寄存器GR1;
答:步骤如下:
①DSWPK-8产生数据;
②使X1的G端处于低电平,数据传入总线;
③使X3的OC端处于低电平;
④使X3的CLK端产生上升沿电平,存储来自总线的数据;
(6)DSWPK-8产生任意数据存入通用寄存器GR2;
答:步骤如下:
①DSWPK-8产生数据;
②使X1的G端处于低电平,数据传入总线;
③使X3的OC端处于低电平;
④使X3的CLK端产生上升沿电平,存储来自总线的数据;
(7)完成GR1+GR2→GR1;
答:步骤如下(产生两个数据分别存入X2和X9两个锁存器):
*暂存数据一
①DSWPK-8产生数据;
②使X1的G端处于低电平,数据传入总线;
③使X3的OC端处于低电平;
④使X3的CLK端产生上升沿电平,存储来自总线的数据;
*暂存数据二
①更改DSWPK-8输入的数据;
②使X10的OC端处于低电平;
③使X10的CLK端产生上升沿电平,存储来自总线的数据;
④使X1的G端处于高电平,关闭总线上的输入;
*将数据一和数据二存入锁存器X2和X9
①使X11的G端处于低电平,数据传入总线;
②使X6的G端处于低电平;
③使X2的CLK端产生上升沿电平,存储来自总线的数据;
④使X6的G端处于高电平;
⑤使X11的G端处于高电平,关闭总线上的输入;
⑥使X13的G端处于低电平,数据传入总线;
⑦使X8的G端处于低电平;
⑧使X9的CLK端产生上升沿电平,存储来自总线的数据;
⑨使X8的G端处于高电平;
⑩使X13的G端处于高电平,关闭总线上的输入;
*做相应运算
①使S0、S1、S2、S3 分别为 1、0、0、1(加法);
②使Cin端为1(无进位);
③使M端为0(算术运算);
④使X7的G端处于低电平,数据传入总线;
⑤重置X3的CLK端;
⑥使X3的CLK端产生上升沿电平,存储来自总线上的数据(A9+13=BC);
(8)完成GR1-GR2→GR2;
答:步骤如下(存数步骤同上一问):
*做相应运算
①使S0、S1、S2、S3 分别为 0、1、1、0(减法);
②使Cin端为0(有进位);
③使M端为0(算术运算);
④使X7的G端处于低电平,数据传入总线;
⑤重置X10的CLK端;
⑥使X10的CLK端产生上升沿电平,存储来自总线上的数据(E7-93=54);
(9)完成GR1∧GR2→GR1;
步骤如下(存数步骤同上一问):
*做相应运算
①使S0、S1、S2、S3 分别为 1、1、0、1(逻辑且);
②使M端为1(逻辑运算);
③使X7的G端处于低电平,数据传入总线;
④重置X3的CLK端;
⑤使X3的CLK端产生上升沿电平,存储来自总线上的数据(A6∧35=24);
(10)完成GR1∨GR2→GR2;
答:步骤如下(存数步骤同上一问):
*做相应运算
①使S0、S1、S2、S3 分别为 0、1、1、1(逻辑并);
②使M端为1(逻辑运算);
③使X7的G端处于低电平,数据传入总线;
④重置X10的CLK端;
⑤使X10的CLK端产生上升沿电平,存储来自总线上的数据(B6∨35=B7);
(11)完成GR1⊕GR2→GR1;
步骤如下(存数步骤同上一问):
*做相应运算
①使S0、S1、S2、S3 分别为 0、1、1、0(异或);
②使M端为1(逻辑运算);
③使X7的G端处于低电平,数据传入总线;
④重置X3的CLK端;
⑤使X3的CLK端产生上升沿电平,存储来自总线上的数据(A6⊕35=93);
(12)~GR1→GR2;(“~”表示逻辑非运算)
答:步骤如下:
*暂存数据
①DSWPK-8产生数据;
②使X1的G端处于低电平,数据传入总线;
③使X3的OC端处于低电平;
④使X3的CLK端产生上升沿电平,存储来自总线的数据;
*将数据存入锁存器X2
①使X11的G端处于低电平,数据传入总线;
②使X6的G端处于低电平;
③使X2的CLK端产生上升沿电平,存储来自总线的数据;
④使X6的G端处于高电平;
⑤使X11的G端处于高电平,关闭总线上的输入;
*做相应运算
①使S0、S1、S2、S3 分别为 0、0、0、0(逻辑非);
②使M端为1(逻辑运算);
③使X7的G端处于低电平,数据传入总线;
④重置X10的CLK端;
⑤使X10的CLK端产生上升沿电平,存储来自总线上的数据(~07=F8);
(13)~GR2→GR1。
答:步骤如下:
*暂存数据
①DSWPK-8产生数据;
②使X1的G端处于低电平,数据传入总线;
③使X10的OC端处于低电平;
④使X01的CLK端产生上升沿电平,存储来自总线的数据;
*将数据存入锁存器X2
①使X11的G端处于低电平,数据传入总线;
②使X6的G端处于低电平;
③使X2的CLK端产生上升沿电平,存储来自总线的数据;
④使X6的G端处于高电平;
⑤使X11的G端处于高电平,关闭总线上的输入;
*做相应运算
①使S0、S1、S2、S3 分别为 0、0、0、0(逻辑非);
②使M端为1(逻辑运算);
③使X7的G端处于低电平,数据传入总线;
④重置X3的CLK端;
⑤使X3的CLK端产生上升沿电平,存储来自总线上的数据(~C6=39);
5、小结与心得体会
通过对运算器的设计学习,基本掌握了算术逻辑单元(ALU)的应用方法,理解了简单运算器的数据传送原理,了解了有关数字元件的功能和使用方法。除此以外还首次接触到子电路的创建及使用。虽然设计过程很复杂,但通过查阅相关资料和连接电路图的过程中不断学习,也对运算器的设计有了一个初步的认识。
四、实验3—— 字发生器及跑马灯
1、实验目的
了解字发生器的使用方法。
2、总体设计
通过设定字发生器的数据,使探针依次点亮,形成跑马灯。
3、详细设计
(1)字发生器简介
字信号发生器(Word Generator)可以采用多种方式产生32位同步逻辑信号,用于对数字电路进行测试,是一个通用的数字输入编辑器。
(2)调出字发生器及其内部参数设置控制面板
单击“仿真/仪器/字发生器”,得到如左图所示的字信号发生器的图标。在字信号发生器的左右两侧各有16个端口,分别为0~15和16~31的数字信号输出端,下面的R表示输出端,用以输出与字信号同步的时钟脉冲;T表示输入端,用来接外部触发信号。
双击字信号发生器图标,便可以得到如右图所示的字信号发生器内部参数设置控制面板。
(3)绘制电路图
(4)设置字信号发生器内部参数
控件设置为“循环”,触发方式选择“内部”,显示选择“二进制”,设置好开始点和终止点,将16位二进制码依次输入,让其循环显示16行数据,从而得到跑马灯的显示效果。
4、实验结果与分析
分析:字信号发生器的每一个端口(0-15、16-31)代表二进制的一个数,0是二进制中的最低位,31是二进制数的最高位,每个端口控制与其相连的设备。将字信号发生器的低十六位的16个端口按顺序与16个灯泡分别连接起来,高十六位不接线(悬空),然后在字信号发生器内部参数设置控制面板里进行数据设置,设置好开始点、终止点以及循环方式和频率等,让其循环显示16行数据,最后进行仿真测试,从而得到跑马灯的效果。
5、小结与心得体会
通过对跑马灯的设计学习,首次接触到了字信号发生器二进制码与字信号发生器引脚的对应关系,并通过对指导书的学习了解了字信号发生器的使用方法及其控制面板的相关参数设置。本实验相对比较简单,同时也为实验四模拟微程序实现指令过程通过字信号发生器送入信号打下基础。
五、实验4—— 验证74LS181运算和逻辑功能
1、实验目的
模拟微程序实现机器语言指令。
2、总体设计
字发生器的一行输出数据可以作为一条微指令用字发生器的输出取代实验3中的控制开关,模拟微指令自动执行实现一条机器语言指令。
3、详细设计
字信号发生器的指令对应表
4、实验结果与分析
(1)产生任意数据存入通用寄存器GR1;
将数据“05”存入GR1,对应微指令如下图。
演示如下图。
(2)产生任意数据存入通用寄存器GR2完成GR1+GR2→GR1;
将数据“07”存入GR2并完成算术加运算后存入GR1,对应微指令如下图。
演示如下图(05+07=0C)。
(3)完成GR1-GR2→GR2;
将数据“07”和“01”存入GR1和GR2并完成算术减运算后存入GR2,对应微指令如下。
演示如下图(07-01=06)。
(4)完成GR1∧GR2→GR1;
将数据“08”和“03”存入GR1和GR2并完成逻辑与运算后存入GR1,对应微指令如下。
演示如下图(0000 1000∧0000 0011=0000 0000)。
(5)完成GR1∨GR2→GR2;
将数据“07”和“03”存入GR1和GR2并完成逻辑并运算后存入GR2,对应微指令如下。
演示如下图(0000 0111∨0000 0011=0000 0111)。
(6)完成GR1⊕GR2→GR1;
将数据“02”和“01”存入GR1和GR2并完成逻辑并运算后存入GR1,对应微指令如下。
演示如下图(0000 0010⊕0000 0001=0000 0011)。
(7)~GR1→GR2;(“~”表示逻辑非运算)
将数据“0E”存入GR1并完成逻辑非运算后存入GR2,对应微指令如下。
演示如下图(~0000 1110=1111 0001)。
(8)~GR2→GR1。
将数据“05”存入GR2并完成逻辑非运算后存入GR1,对应微指令如下。
演示如下图(~0000 0101=1111 1010)。
5、小结与心得体会
此题是实验2的进阶,通过引入实验1中学习的字信号发生器,将实验2中的所有开关替换,字信号发生器中的每一个二进制数与字信号发生器的每个端口相对应,一行输出数据就相当于一个微指令,据此将实验二的基本操作对应编译为“微程序指令”,并按照一定的顺序将指令送入芯片引脚,从而达到模拟微指令自动执行实现机器语言指令的效果。此题的困难在于字信号发生器指令的编写,由于字信号发生器有32个引脚,对应32位指令,因此每一条指令都比较冗长,编写过程中需要耐心根据电路原理,对照运算的步骤,一步步在草稿纸上把指令编写出来,并标上指令控制的电路位置,以便于维护指令更正错误以及修改指令实现不同的运算模式。