文章目录
- 实验二 运算器实验
- 一、实验目的
- 二、实验原理
- 三、运算器功能编码
- 四、设置初始状态
- 任务一 算术运算
- 任务二 逻辑运算
- 任务三 移位运算
- 任务四 进位控制与零标志
实验二 运算器实验
一、实验目的
- 完成算术、逻辑、移位运算实验,熟悉ALU运算类型的控制位运用。
- 实验仪器:JTHS-A 计算机组成原理同步互动教学系统
二、实验原理
- 实验中所用的运算器数据通路如图2-4-1所示。
- ALU运算器由CPLD描述。运算器的输出经过2片74LS245三态门与数据总线相连,2个运算寄存器AX、BX的数据输入端分别由4个74LS574锁存器锁存,锁存器的输入端与数据总线相连,准双向I/O输入输出端口用来给出参与运算的数据,经2片74LS245三态门与数据总线相连。
图中AX、BX的写控制由O2~O0编码定义,通过按【单拍】钮完成运算源的数据打入。
三、运算器功能编码
- 表2.4.1 ALU运算器编码表
四、设置初始状态
K23 ~ K0置“0”,灭M23~M0控位显示灯。
任务一 算术运算
1.字算术运算
- (1)字写操作(置数操作)
- 通过“I/O单元”二进制开关向寄存器AX和BX置数,操作步骤如下:
- 通过“I/O单元”二进制开关向寄存器AX和BX置数,操作步骤如下:
- (2)字读操作(运算寄存器AX和BX内容送总线)其中FUN为运算器输出;M为运算控制位:1=算术运算,0=逻辑运算
- (3)字算术运算(不带进位加)
- 令M S2 S1 S0(K15 K13~K11=1011),FUN及总线单元显示AX+BX的结果。
- 令M S2 S1 S0(K15 K13~K11=1010),FUN及总线单元显示AX-BX的结果。
- 令M S2 S1 S0(K15 K13~K11=1011),FUN及总线单元显示AX+BX的结果。
2.字节算术运算
- (1)偶字节写(置数操作)
- 拨动“I/O输入输出单元”开关向寄存器AL和BL置数,操作步骤如下:
- 拨动“I/O输入输出单元”开关向寄存器AL和BL置数,操作步骤如下:
- (2)偶字节读操作(运算寄存器AL和BL内容送总线)
- (3)偶字节减法运算(不带进位加)
- 令M S2 S1 S0(K15 K13~K11=1011),FUN及总线单元显示AL+BL的结果。
- 令M S2 S1 S0(K15 K13~K11=1010),FUN及总线单元显示AL-BL的结果。
任务二 逻辑运算
1.字逻辑运算
- (1)字写操作(置数操作)
- 拨动“I/O输入输出单元”开关向寄存器AX和BX置数,操作步骤如下:
- 拨动“I/O输入输出单元”开关向寄存器AX和BX置数,操作步骤如下:
- (2)字读操作(运算寄存器AX和BX内容送总线)
- (3)字逻辑运算
- 令M S2 S1 S0(K15 K13~K11=0010),为逻辑与,FUN及总线显示AX逻辑与BX的结果。
- 令M S2 S1 S0(K15 K13~K11=0011),为逻辑或,FUN及总线显示AX逻辑或BX的结果。
2.字节逻辑运算
-
(1)偶字节写操作(置数操作)
- 拨动“I/O输入输出单元”开关向寄存器AL和BL置数,具体操作步骤如下:
- 拨动“I/O输入输出单元”开关向寄存器AL和BL置数,具体操作步骤如下:
-
(2)偶字节读操作(运算寄存器AL和BL内容送数据总线)
- ①若运算控制位设为(M S2 S1 S0=0000)则F=AL,即AL内容送到数据总线。
- ②若运算控制位设为(M S2 S1 S0=0111)则F=BL,即BL内容送到数据总线。
-
(3)偶字节逻辑运算
- 令M S2 S1 S0(K15 K13~K11=0010),为逻辑与,FUN及总线显示AL逻辑与BL的结果。
- 令M S2 S1 S0(K15 K13~K11=0011),为逻辑或,FUN及总线显示AL逻辑或BL的结果。
-
(4)奇字写操作(置数操作)
- 拨动“I/O输入输出单元”开关向寄存器AH和BH置数,操作步骤如下:
- 拨动“I/O输入输出单元”开关向寄存器AH和BH置数,操作步骤如下:
-
(5)奇字节读操作(运算寄存器AH和BH内容送总线)
- 关闭AH、BH写使能,令K17=K18=1,按下流程分别读AH、BH。
- ①若运算控制位设为(M S2 S1 S0=0000)则F=AH,即AH内容送到数据总线。
- ②若运算控制位设为(M S2 S1 S0=0111)则F=BH,即BH内容送到数据总线。
- 关闭AH、BH写使能,令K17=K18=1,按下流程分别读AH、BH。
-
(6)奇字节逻辑运算
- 令M S2 S1 S0(K15 K13~K11=0010),为逻辑与,FUN及总线显示AH逻辑与BH的结果。
- 令M S2 S1 S0(K15 K13~K11=0011),为逻辑或,FUN及总线显示AH逻辑或BH的结果。
任务三 移位运算
- 本示例以累加器AX为移位的源与目的寄存器,也就是说移位是通过累加器AX实现的,
- 这种规范的设计理念使我们的运算器能够与通用计算机指令系统相吻合。
1.移位执行过程
- 所谓循环移位,就是指移位时数据的首尾相连进行移位,即最高(最低)位的移出位又移入数据的最低(最高)位。
- 根据循环移位时进位位是否一起参加循环,可将循环移位分为不带进位循环和带进位循环两类。
- 其中不带进位循环是指进位“CY”的内容不与数据部分一起循环移位,也称小循环。
- 带进位循环是指进位 “CY”中的内容与数据部分一起循环移位,也称大循环。
◆不带进位循环左移:各位按位左移,最高位移入最低位。
◆不带进位循环右移:各位按位右移,最低位移入最高位。
◆带进位循环左移:各位按位左移,最高位移入C中,C中内容移入最低位。
◆带进位循环右:各位按位右移,最低位移入C中,C中内容移入最高位。 - 循环移位一般用于实现循环式控制、高低字节的互换,还可以用于实现多倍字长数据的算术移位或逻辑移位。
2.移位运算实例
- ①K23 ~ K0全置“0”,灭M23 ~ M0灯。
- ②累加器AX置数与移位流程
- ③字移位:完成上流程,按下表改变S2(K13)-S0(K11)的状态,再按【单拍】钮,观察AX的移位变化。
- ④字节移位:完成字移位后,改变字长宽度,令W(K6)=0,然后根据下表设置S2(K13)、S0(K11)的电位,再按【单拍】钮,AX进入字节移位状态,观察AL的移位变化。
任务四 进位控制与零标志
1.标志控制原理
图2-4-2 标志位锁存原理图
(1)进位标志CY
运算标志CY是带复位可预置的进位标志,在运算时由M信号控制,当M=1时,按【单拍】按钮,在T4上升沿把当前运算进位或借位打入CY的锁存输出端Q2;当M=0时,由CN位控制CY的“位操作”。当CN=1,按【单拍】按钮,在T4上升沿执行CY的置位、当CN=0,按【单拍】按钮,在T4上升沿执行CY的清零,当M=1,CN、W=00时,每按一次[单拍],执行取反操作;遇M=0、CN=0时,CY保持原始状态。CY的复位端由管理CPU直接控制。
(2)零标志Z
零标志Z是带复位端的运算结果判零标志,取源于运算器输出FUN。当运算输出FUN为0时,zd为“1”,反之为“0”;零标志由M信号控制,当M=1时,按【单拍】按钮,在T4上升沿把当前zd打入Z(零标志)的锁存输出端Q1;当M=0时,零标志Z保持原始状态。
(3)标志位的初始化
标志位的清零端由系统掌控与控位无关,在手动实验中需要清标志时,通过按动【返回】键来实现标志位的初始化。
系统提供CY与Z的状态灯,其显示特征为:进位标志CY=“1”时,灯“亮”反之灯“灭”;零标志Z=“1”时,灯“亮”反之灯“灭”。
2.进位控制实验
①进位控制流程
②进位控制实验
置位操作:当M、CN、XP、W=0100时,按【单拍】按钮,CY=1(灯亮);
清零操作:当M、CN、XP、W=0110时,按【单拍】按钮,CY=0(灯灭);
取反操作:当M、CN、W=100时,每按一次【单拍】按钮,CY=/CY(取反)。(不成工)
3.进位运算实验
①按【返回】键,实现进位及零标志清零。通过“I/O单元”向AX、BX置数。
②进位标志锁存
K23K0置全“0”,关闭M23M0控位灯。令X0、W=11,运算控位M、S2、S1、S0 =1111,按【单拍】按钮,FUN显示带进位加结果,进位标志灯CY亮,表示有进位。
完成上流程,按【单拍】钮,ALU执行A+B+CY的操作,FUN=0002、CY=1(灯亮)。
令S0为0,按【单拍】钮,ALU执行A-B-CY的操作,FUN=FFFB、CY=0(灯灭)。
1.零标志实验
①K23~K0置全“0”,通过“I/O单元”向AX、BX均置数0001h,操作步骤如下:
②零标志锁存
K23K0置全“0”,灭M23M0控位灯。令X0=1,运算控位M、S1=11,按【单拍】按钮,FUN显示算术减结果,其零标志Z的灯亮,表示运算结果为零。
2.标志位的字节运算
令W(K6)=“0”,参照进位与零标志运算流程,ALU按字节方式建立和锁存CY及Z标志。
实验思考
验证表2.4.2 ALU运算器编码表所列的运算功能。
在给定AX=6655h、BX=AA77h的情况下,改变运算器的功能设置,观察运算器的输出,填入下页表格中,并和理论分析进行比较、验证。
表2.4.2 ALU运算器真值表
运算控制 运算表达式 K15 K13 K12 K11 AX BX 运算结果
M S2 S1 S0
带进位算术加 A+B+C 1 1 1 1 6655 AA77 FUN=( 10CC )
带借位算术减 A-B-C 1 1 1 0 6655 AA77 FUN=( BBDE )
带进位左移 RLC A 1 1 0 1 6655 AA77 FUN=( CCAA )
带进位右移 RRC A 1 1 0 0 FUN=( )
算术加 A+B 1 0 1 1 FUN=( )
算术减 A-B 1 0 1 0 FUN=( )
左移 RL A 1 0 0 1 FUN=( )
右移 RR A 1 0 0 0 FUN=( )
取BX值 B 0 1 1 1 6655 AA77 FUN=( AA77 )
AX取反 NOT A 0 1 1 0 6655 AA77 FUN=( 99AA )
AX减1 A-1 0 1 0 1 6655 AA77 FUN=( 6654 )
清零 0 0 1 0 0 FUN=( )
逻辑或 A OR B 0 0 1 1 FUN=( )
逻辑与 A AND B 0 0 1 0 FUN=( )
AX加1 A+1 0 0 0 1 FUN=( )
取AX值 A 0 0 0 0 FUN=( )