前言
为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的实验结果及代码贴至CSDN中,供同学们学习参考。如有不足或描述不完善之处,敬请各位指出,欢迎各位的斧正!
一、实验目的
- 掌握使用算术逻辑运算器 74LS181 进行算术运算、 逻辑运算的方法。
- 掌握基于“累加-移位”原理的串行乘法运算方法。
二、实验环境
操作系统:Win10
实验用软件:Proteus 8
三、实验内容
- 在输入单元(拨码开关) 通过三态门 74LS244 向运算器的总线 BUS 输入参与运算的数据, 并在输出单元(数码管) 显示总线 BUS 的内容;
- 把参与运算的数据AA打入缓存器 DRA 并送入ALU的A输入端,将55打入缓存器 DRB并送入ALU的B输入端;
- 参照表 1 所示的 74LS181 真值表,置 ALU 的控制信号组合(S3, S2, S1, S0, M,CN)进行算术运算和逻辑运算。再令 SW_BUS=1, ALU_OE=0, 观察并且记录运算器 ALU 的输出端 F 和标志位 CF、 SF、 ZF的值。
- 利用“累加-移位”原理,计算二进制数 10101011 和 11010101相乘的结果,并验证是否和手工计算结果一致。
四、实验步骤
一.在输入端(DIPSWC_8)向总线BUS[0…7]输入数据,并在输出端(7SEG-BCD-GRN)输出总线BUS[0…7]的内容
首先将ALU_BUS和ALU_EN拉倒高阻态,防止和SW_BUS上面的数据出现冲突。开始仿真后将SW_BUS拉到低组态,然后通过输入端输入10101010,即0xAA;
通过拨动DRA_CLK时钟信号将信号保存至寄存器中。
同理,输入01010101,即0x55,并拨动DRB_CLK时钟信号,将信号保存至寄存器中
输入结束后将SW_BUS拉高,ALU_CN拉低,ALU_BUS拉低。
将功能控制端S3-S0置位0001,M置零,刷新ALU_OE实现A+B,即0xFF,SF灯亮起
通过ALU_CN对结果进位实现A+B+1,刷新屏幕后得到0x00。
二.
1) 启动运算,首先判断寄存器 Q 的最低位 Qn:
若 Qn=1,说明需要累加,把部分积 A 与被乘数 B 相加,得到新的部分积;若 Qn=0,说
明不需要累加。
2)令加法进位 CF、寄存器 A(保存新的部分积)和寄存器 Q 联合右移一位。
3)计数器自减 1,然后启动下一次运算(返回到第 1)步)。
上述运算循环执行,直到计数器的值减到0,即总共执行了n次循环。此时,乘数Q已经完全右移出寄存器Q,保存在寄存器A和Q中的是2n位乘法结果|P|(绝对值)的高 n 位和低n位。乘积 Pf的符号位则单独处理,由被乘数和乘数的符号位A和B逻辑“异或”得到。
如图3所示,运算器ALU通路中的8位缓存器DRA和DRB就相当于图5中的寄存器A和Q:缓存器 DRA 的 SL=ALU_C,其最低位连接 DRB 的 SL 端,连成一个 16 位移位寄存器。 因为缓存器 DRA 和 DRB 都是由移位寄存器 74LS194 构成,若两个移位寄存器 74LS194 的控 制端信号 S0=0 且 S1=1,则当时钟信号 DRx_CLK 上升沿跳变时,74LS194 全部执行移位操作 Q0Q1Q2Q3=Q1Q2Q3SL。
此时,ALU_C 移入 DRA 最高位,DRA 所有位依次右移,最低位移入 DRB 的最高位,DRB 所有位亦依次右移,即“DRA→DRB”操作。该操作相当于图 5 中的“寄存器 A 和 Q 联合 右移一位”操作。
因为运算器 ALU 通路中只有两个缓存器 DRA 和 DRB,所以,缓存器 DRB 必须同时承 担图 5 中寄存器 B 和 Q 的作用;而且,在串行乘法的运算过程中,需要借助寄存器 REG_0 和 REG_1 作为临时寄存器,在不同运算切换之际用以保存缓存器 DRB 的数据。
在运算器 ALU 通路中,串行乘法的运算过程如下所述。
初始状态:被乘数|X|打入寄存器 REG_0,“0”打入寄存器 REG_1;
乘数|Y|打入缓存器 DRB,而缓存器 DRA 无需初始化(因为第 1)步就赋值“1”)。
1)ALU执行“F=1”,结果“0”打人 DRA;又执行“F=A+1”,结果“1”再打入 DRA。
2)ALU执行“F=A·B”(逻辑与),观察运算结果零标志位ZF(即判断最低位Qn是否为0):
3)若 ZF=0(即 Qn=0),则 REG_1 的值打入 DRA,跳转到第 5)步;若 ZF=1(Qn=1),则 ALU 执行“F=B”,把 DRB 保存的值打入 REG_1。
4)把 REG_0 的值(“被乘数”)打入 DRB,REG_1 的值打入 DRA,ALU 执行“F=A 加 B”
(算术和),运算结果打人 DRA,再把 REG_1 的值打回 DRB。
5)ALU 执行“DRA→DRB”移位(注意 DRA_CLK 和 DRB_CLK 操作的先后顺序)。
6)若乘数所有位都移出 DRB,则运算结束(16 位乘积的高 8 位在 DRA,低 8 位在 DRB);否则,ALU 执行“F=A”,把 DRA 保存的部分积打入 REC_1,返回第 1)步。
最终结果如下:
五、实验结果
须用表格列出74LS181中各控制信号(S3, S2, S1, S0, M,CN)为不同值时,ALU 的输出端 F 和标志位 CF、 SF、 ZF的值。文章来源:https://www.toymoban.com/news/detail-443257.html
S3 S2 S1 S0 | M=0 CN=1 | M=0 CN=0 | M=1 |
---|---|---|---|
0000 | AA 100 | A6 100 | 55 000 |
0001 | FF 100 | 00 011 | 00 010 |
0010 | AA 100 | A6 100 | 55 000 |
0011 | FF 100 | 00 011 | 00 010 |
0100 | 54 001 | 55 001 | FF 101 |
0101 | A9 101 | AA 101 | AA 101 |
0110 | 54 001 | 55 001 | FF 101 |
0111 | A9 101 | AA 101 | AA 101 |
1000 | AA 100 | A6 100 | 55 000 |
1001 | FF 100 | 00 011 | 00 010 |
1010 | AA 100 | A6 100 | 55 000 |
1011 | FF 100 | 00 011 | 00 010 |
1100 | 54 001 | 55 001 | FF 101 |
1101 | A9 101 | AA 101 | AA 101 |
1110 | 54 001 | 55 001 | FF 101 |
1111 | A9 101 | AA 101 | AA 101 |
六、实验总结
- 运算器 74LS181 可以执行无符号数的加法和减法运算么?对于有符号数的算术运算, 运算器 74LS181 是补码运算器还是原码运算器?
答:74LS181组成的运算器运算可以区分有符号数运算和无符号数运算;
对于有符号数的算数运算,74LS181是补码运算器。 - 参与串行乘法运算的两个数据是无符号数还是有符号数?若有符号位,怎么处理?
答:参与串行乘法运算的两个数据是无符号数;
若有符号位,则需先对符号位进行运算,搭配两数绝对值的乘积,进而给出结果。
心得体会:
进行本次实验操作时,实验器件多,连线复杂,多次出现了漏连线、漏标线等情况,而且,哪怕连线完成、实验图做好后,依然不了解这个图的用途及原理。之后,本人通过查阅资料、同学讨论、观看学习视频等等方式,对本次实验有了大概的理解,同时,本次实验步骤复杂,稍不留意就容易前功尽弃,需要我们在做实验时谨慎再谨慎。文章来源地址https://www.toymoban.com/news/detail-443257.html
到了这里,关于计算机组成与体系结构第一次试验:运算器实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!