一、实验目的
(1)熟悉运算器的读写操作、TEC-8模型计算机的节拍脉冲;
(2)熟悉运算器的数据传送通路;
(3)验证 74LS181 的加、减、与、或功能;
(4)按给定的数据,完成几种指定的算术、逻辑运算。
二、实验仪器设备、试剂或材料
1.TEC-8实验系统
2.逻辑测试笔(在实验箱上方,附件盒中);
三、实验原理
运算器是数据的加工处理部件,是中央处理器(CPU)的重要组成部分。运算器最基本的结构中必须有算术/逻辑运算单元(ALU)、通用寄存器、累加器(ACC)、数据总线(DBUS)等逻辑构件。
CPU在运算器中,将一些运算数据、指令、地址保存在寄存器中。寄存器(Register)是中央处理器的重要组成部分。寄存器是有限存储容量的高速存储器部件,可用来暂存指令、数据和地址。在CPU的算术逻辑部件中,包含的寄存器主要是累加器ACC(寄存器堆)。寄存器堆由几组寄存器组成,其中的寄存器分为通用寄存器、专用寄存器。寄存器的基本单元是D触发器,按用途分为基本寄存器和移位寄存器。基本寄存器由D触发器组成,在CLK时序脉冲作用下,每个D触发器能够寄存一位二进制。
TEC-8模型计算机的运算器部件的主体部分——ALU,由2片4位长度的算术逻辑运算芯片74181,加上7474、74244、74245、7430各1片组成。74181能够进行4位算术逻辑运算,2片74181分别完成低4位运算、高4位运算,二者级联在一起构成一个8位的算术逻辑单元。级联方式就是将低4位74LS181的进位输出引脚/Cn+4,与高4位74LS181的进位输入引脚/Cn连接。

图2.3标识出了本实验所用的运算器数据通路图。参与运算的数据首先通过实验台操作板上的8个二进制数据开关SD7-SD0来设置,然后输入到双端口通用寄存器组中。
双端口寄存器组由1片可编程器件EPM7064实现,里面包含4个8位通用寄存器(R0、R1、R2、R3)、 4选1选择器A、4选1选择器B、2-4译码器(上图虚线框内的部分集成在1片EPM7064中),用于保存参与运算的数据,向ALU提供两个运算操作数A和B,并保存运算后的结果。4个寄存器通过4选1选择器A向ALU的A端口提供A操作数,通过4选1选择器B向ALU的B端口提供B操作数。2-4译码器产生信号LR0、LR1、LR2和LR3,用以选择保存运算数据结果的寄存器,其控制信号中RD1、RD0用于选择送ALU的A端口(左端口)的通用寄存器。RS1、RS0用于选择送ALU的B端口(右端口)的通用寄存器。
TEC-8模型机中的运算器操作在1个机器周期内(含1组T1、T2、T3)完成。在T1期间,产生2个8位参与运算的数A和B(对加法运算来说,A是被加数,B是加数);产生控制运算类型的信号M、S3、S2、S1、S0和CIN;产生控制写入Z标志寄存器的信号LDZ、控制写入C标志寄存器的信号LDC、将运算的数据结果送往数据总线DBUS的控制信号ABUS。这些控制信号保持到T3结束。在T2期间,根据控制信号,算术逻辑单元对A、B端口的8位数完成某种运算功能(加、减、与、或和数据传送等)。在T3的上升沿,保存运算的数据结果到一个8位寄存器中,同时保存进位标志C和结果为0标志Z。
运算得到的数据结果在信号ABUS为“1”时,送往数据总线DBUS(D7~D0)。需强调的是:数据总线DBUS有4个信号来源:运算器(受信号ABUS控制)、存储器(受信号MBUS控制)、数据开关(受信号SBUS控制)和中断地址寄存器(受信号IABUS控制)。在每一时刻只允许其中一个信号源送往数据总线,即在每一时刻信号ABUS、MBUS、SBUS、IABUS中最多只能有1个有效,对于无效信号,必须显式地给其赋值“0”。
运算后的标志结果在T3的上升沿保存进位标志位C和结果为0标志位Z。加、减法运算同时影响C标志和Z标志,与、或逻辑运算只影响Z标志。
表 2.174LS181 算术/逻辑运算功能表(只摘选本实验实际用到的)
运算方式选择 | M=1 逻辑运算 | M=0 算术运算 | |
S3 S2 S1 S0 | CIN=1 | CIN=0 | |
0 0 0 0 | A (F=A) | A加1 | |
0 1 1 0 | A减B | ||
1 0 0 1 | A加B | ||
1 0 1 0 | B (F=B) | ||
1 0 1 1 | A·B(A and B) | 1 | |
1 1 1 0 | A+B (A or B) | ||
1 1 1 1 | A (F=A) |
四、实验内容与步骤
(一)运算器组成实验(微程序控制方式)
作为“独立”控制方式脱机运算器实验的对比,TEC-8将运算器功能测试相关步骤“固化”,并通过微程序控制方式将各个环节所需操作控制信号写成微代码存放于控存中,只需将模型机设置成“微程序”控制方式,且将操作模式开关设置为SWCSWBSWA=101,即“运算器组成实验”,按一下QD按钮进入该模式,即可根据微操作控制信号进行相关操作,并完成本实验项目。
实验任务:在微程序控制器方式下,对下述7组数据进行加、减、与、或运算。
① A=0F0H, B=10H ⑤ A=0FFH, B=0AAH
② A=10H, B=0F0H ⑥ A=55H, B=0AAH
③ A=03H, B=05H ⑦ A=0C5H, B=61H
④ A=0AH, B=0AH
实验步骤
1.实验准备
将“控制转换”开关拨到“微程序”位置(下方,微程序灯亮);
将“微程序控制器”右侧的“编程开关”拨到“正常”位置(注:后续所有实验都如此);
将单微指令开关DP拨到向上(1)位置。打开电源。
2.用逻辑测试笔测试节拍脉冲信号T1、T2、T3
(1)将逻辑测试笔的一端(小头)插入TEC-8实验台(右上角)上的“逻辑测试笔”上面的插孔中,另一端(大头)插入实验台左下角“时序”模块“T1”插孔中。注意笔的两端不要插反。
(2)按复位按钮CLR,使时序信号发生器复位。
(3)按一次逻辑测试笔框内的Reset按钮(实验台上方中间,蓝色方形按钮),使逻辑测试笔上的脉冲计数器复位,2个黄灯D1、D0均灭。
(4)按一次启动按钮QD,这时指示灯D1、D0的状态应为01B,指示产生了一个T1脉冲;
如果再按一次QD按钮,则指示灯D1、D0的状态应当为10B,表示又产生了一个T1脉冲;
继续按QD按钮,可以看到在单周期运行方式下,每按一次QD按钮,就产生一个T1脉冲。逻辑测试笔最多能够测试3个连续脉冲。
(5)用同样的方法测试T2、T3。
3. 进行加、减、与、或实验
(1)设置加、减、与、或实验模式
按复位按钮CLR,使TEC-8实验系统复位。指示灯μA5~μA0显示00H。
将操作模式开关SWCSWBSWA设置为101,进入“运算器组成实验”操作模式。
按一次QD按钮,产生一组节拍脉冲信号T1、T2、T3,进入加、减、与、或实验。
(2)设置数A
指示灯μA5~μA0显示0BH。在数据开关SD7~SD0上设置数A。在数据总线DBUS指示灯D7~D0上可以看到数据设置的正确不正确,发现错误需及时改正。
设置数据正确后,按一次QD按钮,将SD7~SD0上的数据写入R0,进入下一步。
(3)设置数B
指示灯μA5~μA0显示15H。这时R0已经写入,在指示灯B7~B0上可以观察到R0的值。在数据开关SD7~SD0上设置数B。
设置数据正确后,按一次QD按钮,将SD7~SD0上的数据写入R1,进入下一步。
(4)进行加法运算
指示灯μA5~μA0显示16H。指示灯A7~A0显示被加数A(R0),指示灯B7~B0显示加数B(R1),D7~D0指示灯显示运算结果A+B。按一次QD按钮,进入下一步。
(5)进行减法运算
指示灯μA5~μA0显示17H。这时指示灯C(红色)显示加法运算得到的进位C,指示灯Z(绿色)显示加法运算得到的结果为0信号。指示灯A7~A0显示被减数A(R0),指示灯B7~B0显示减数B(R1),指示灯D7~D0显示运算结果A-B。按一次QD按钮,进入下一步。
(6)进行与运算
指示灯μA5~μA0显示18H。这时指示灯C(红色)显示减法运算得到的进位C,指示灯Z(绿色)显示减法运算得到的结果为0信号。
指示灯A7~A0显示数A(R0),指示灯B7~B0显示数B(R1),指示灯D7~D0显示运算结果A and B。按一次QD按钮,进入下一步。
(7)进行或运算
指示灯μA5~μA0显示19H。这时指示灯Z(绿色)显示与运算得到的结果为0信号。指示灯C保持不变。指示灯A7~A0显示数A(R0),指示灯B7~B0显示数B(R1),指示灯D7~D0显示运算结果A or B。按一次QD按钮,进入下一步。
(8)结束运算
指示灯μA5~μA0显示00H。这时指示灯Z(绿色)显示或运算得到的结果为0信号。指示灯C保持不变。
按照上述步骤,对要求的7组数据进行运算。
- 根据实验结果填写表2.2。
操作数 | 加法运算 | 减法运算 | 与运算 | 或运算 | |||||||
数A | 数B | 运算 结果 | C | Z | 运算 结果 | C | Z | 运算 结果 | Z | 运算 结果 | Z |
0F0H | 10H | 00H | 1 | 亮 | F0H | 10H | F0H | ||||
10H | 0F0H | 00H | E0H | 10H | F0H | ||||||
03H | 05H | 08H | FFH | 01H | 07H | ||||||
0AH | 0AH | 14H | 00H | 0AH | 0AH | ||||||
0FFH | 0AAH | 00H | 55H | AAH | FFH | ||||||
55H | 0AAH | FFH | FFH | 00H | FFH | ||||||
0C5H | 61H | 26H | 64H | 41H | E5H |
注意:进位信号C是运算器ALU最高进位“/Cn+4”信号的反,即Cn+4(有进位为1,无进位为0)。进位 C 只在加法运算和减法运算时产生;74LS181算术运算用补码表示法,减法运算采用补码运算方式,即先求得[-减数]的补码,然后和被减数的补码相加的方式完成。较大的数减去较小的数,或者2个相等的数相减时会产生进位(借位)。运算产生的进位在 T3 的上升沿进入寄存器中保存。
- 实验问答题
结合实验现象,对每一实验步骤(参见表2.3)中下述信号所起的作用进行解释:M、S0、S1、S2、S3、CIN、ABUS、LDC、LDZ、SEL3、SEL2、SEL1、SEL0、DRW、SBUS。并说明在该步骤中,哪些信号是必需的,哪些信号不是必需的,哪些信号必需采用实验中使用的值,哪些信号可以不采用实验中使用的值。
控制 信号 | M | S3 | S2 | S1 | S0 | CIN | ABUS | LDC | LDZ | RD1 | RD0 | DRW | SBUS | RS1 | RS0 | |
1 | 送数 | 操作模式1100;数据开关SD7~SD0置二进制数A; 按1次QD按钮 (数A写入寄存器R0) | 1 | 1 | ||||||||||||
2 | 数据开关SD7~SD0置二进制数B;按1次QD按钮 (数B写入寄存器R1); 然后,将操作模式改为1101 | 1 | 1 | 1 | ||||||||||||
3 | 加法 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||||||||
4 | 减法 | 1 | 1 | 1 | 1 | 1 | 1 | |||||||||
5 | 与 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||||||||
6 | 或 | 1 | 1 |
备注:
(1)表中信号值为“1”表示高电平,信号值为空默认值为“0″;
(2)几个实验步骤的运算器控制信号,请参考上页中ALU表(表2.1)的运算逻辑功能,请解释六个步骤相应的控制信号的具体功能。
【思考题】
1. 为什么在ALU的A端口和B端口的数据确定后,在数据总线DBUS上能够直接观测运算的数据结果,而标志结果却在下一步才能观测到?
答:因d为标志信号通常只有在系统正常运行时才会产生,而在上电后需要一段时间才能检测到它们的存在。
五、实验结果与分析
1.设定操作数A为F0H,操作数B为10H,相应操作数在A端口和B端口的显示结果如图1所示。

2.对操作数A和B进行加法运算,即为F0H+10H,结果如图2所示。

3.对操作数A和操作数B进行减法运算,即为F0-10H,结果如图3所示。

4.对操作数A和操作数B进行与运算,即为F0H&10H,结果如图4所示。

5.对操作数A和操作数B进行或运算,即为F0H\\10H,结果如图5所示。

6.尝试设定操作数A为20,在数据总线D7~D0的结果如图6所示。

7.尝试设定写自己学号23,在数据总线D7~D0的结果如图7所示。

8.对操作数A和操作数B进行加法运算,即为20H+23H,结果如图8所示。

9.对操作数A和操作数B进行减法运算,即为20H-23H,结果如图9所示。

10.对操作数A和操作数B进行与运算,即为20&23,结果如图10所示。

11.对操作数A和操作数B进行或运算,即为20\\23,结果如图11所示。

回答实验问答题:结合实验现象,对每一实验步骤(参见表2.3)中下述信号所起的作用进行解释:M、S0、S1、S2、S3、CIN、ABUS、LDC、LDZ、SEL3、SEL2、SEL1、SEL0、DRW、SBUS。并说明在该步骤中,哪些信号是必需的,哪些信号不是必需的,哪些信号必需采用实验中使用的值,哪些信号可以不采用实验中使用的值。
回答【思考题】:为什么在ALU的A端口和B端口的数据确定后,在数据总线DBUS上能够直接观测运算的数据结果,而标志结果却在下一步才能观测到?
在一个典型的计算机系统中,ALU(算术逻辑单元)是执行算术和逻辑运算的关键组件之一。ALU的A端口和B端口是用于输入操作数(数据)的接口,而数据总线(DBUS)是用于在计算机内部各个组件之间传输数据的通道。
当ALU的A端口和B端口的数据确定后,ALU会立即开始执行运算操作,将结果放在其输出端口。因此,可以通过数据总线(DBUS)直接观测到运算的数据结果。
然而,标志结果(也称为状态标志)是指示运算结果的特定条件的标志,例如溢出、零结果等。这些标志通常存储在特殊的寄存器中,而不是直接放在数据总线上。在进行运算后,ALU会更新这些标志寄存器,但它们可能需要一些时间来更新。
在计算机的内部时钟信号的控制下,ALU的结果和标志更新将被同步到其他组件,包括将标志结果存储在特定寄存器中。因此,标志结果需要在下一步的操作中才能从相应的寄存器中观测到。
总之,数据结果可以直接通过数据总线(DBUS)观测到,因为ALU在执行运算时立即将结果放在数据总线上。而标志结果则需要在下一步的操作中才能观测到,因为它们需要在特定的寄存器中更新并与系统的时钟同步。