如果你对计算机组成原理感兴趣,可以考虑阅读我的专栏
须知
本文仅作学习笔记使用,仅在CSDN网站发布,如果在其他网站发现,均为侵权行为,请举报。作者:小王在努力。
实验要求
基本要求
-
熟悉proteus仿真系统
-
设计并验证4位算数逻辑单元的功能
扩展要求
-
实现ALU输入输出锁存
-
实现8位算数逻辑运算单元
思考内容
思考单总线,双总线和三总线结构在设计上的异同
实验步骤
一、理论分析
计算机的运算器是一种类似于计算器的一个原件,他可以实现数逻运算和位运算,由于本实验要求设计ALU并实现其部分功能。经过选择,我们选取74LS181来实现ALU的功能部分。
74LS181的功能真值表如下:
本实验扩展要求为了实现8位数逻运算,所以会需要两个74LS181芯片。
本实验采用74LS373作为锁存器,来锁存数据,用LED-GREEN作为输出显示。
本实现的功能为:4位数逻运算:A异或B(扩展功能:A-B-1)
8位数逻运算:A异或B(扩展功能:A-B-1)
二、实验方法
按照基本要求,四位二进制算术逻辑运算单元电路:
本电路采用一个74LS181作为ALU核心,名为U2的74LS373作为4位操作数A和4位操作数B的锁存器,名为U5的74LS373作为74LS181的功能输入也就是S4~S0以及M的输入,输出结果用名为U6的74LS181锁存器中,最后74LS181锁存器连接4个LED-GREEN作为输出。
四位二进制的第一个功能:A异或B
四位二进制的第二个功能:A-B-1
扩展:八位二进制算术逻辑运算单元电路:
使用名为U7的74LS373锁存器记录八位操作数A和名为U8的74LS373锁存器记录八位操作数B,由于74LS181只能进行4位的运算,所以我们可以用两个74LS373分别来实现A操作数的第四位和B操作数的低四位运算以及A操作数的高四位和B操作数的高四位运算,分别用U1和U2存储A、B高四位数据和A、B低四位数据,其中名为U4的74LS181作低位运算的进位信号输入到名为U3的74LS181运算器中,两个运算器的S0~S4和M分别由两个锁存器输入,最后的运算结果保存在一个74LS373锁存器,后面接8个LED-GREEN作为输出。
八位二进制的第一个功能:A异或B
八位二进制的第二个功能:A-B-1
三、实验结果分析
我实现的功能为0110,M=1的A异或B所以用数据A:1111和数据B:1010进行实验,计算结果F3~F0=1010,实验结果和计算符合。
扩展功能:A-B-1,操作数A为1111,操作数B为0101,计算结果F3~F0=1001,实验结果与计算符合。
功能 | 模式选择M | 功能选择S3~S0 | 进位CN | 四位输入A | 四位输入B | 四位输出 | 进位输出 |
---|---|---|---|---|---|---|---|
算术A-B-1 | 0 | 0110 | 1 | 1111 | 1010 | 1010 | 0 |
逻辑异或 | 1 | 0110 | X | 1111 | 0101 | 1001 | X |
扩展为8位二进制后,功能A异或B,操作数A:01101110 操作数B:10111001,经过计算F7~F0=11010111,实验结果和计算符合。
扩展功能:A-B-1,操作数A:11101111操作数B:10011001,经过计算F7~F0=01010101,与实验结果符合。
功能 | 模式选择M | 功能选择S3~S0 | 进位CN | 八位输入A | 八位输入B | 八位输出 | 进位输出 |
---|---|---|---|---|---|---|---|
算术A-B-1 | 0 | 0110 | 1 | 01101110 | 10111001 | 11010111 | 0 |
逻辑异或 | 1 | 0110 | X | 11101111 | 10011001 | 01010101 | X |
四、思考问题
-
单总线结构:这种结构的运算器实现一次双操作数 运算要3步,1.A操作数从总线输入 2.B操作数从总线输入 3.输出结果从总线输出,总共要经历三个脉冲才能完成双操作数运算。
-
双总线结构:此时加了一根总线,有了两根总线,只需要两步就可以完成双操作数的运算了 1.A操作数从总线1输入的同时B操作数从总线2输入 2.输出结果暂时放到缓存器中,经过一个脉冲送入总线
-
三总线结构:三总线结构的话就简单了,只需要一步就可以完成双操作数的运算了1.操作数A从总线1输入,操作数B从总线2输入,同时计算结果从总线3输出。
五、问题和解决办法
问题1:接入总线之后,在输入端进行输入的时候,输出端不响应,显示为高阻态。(虽然我没有用总线吧,我采取的是用锁存器输入功能的方法,此处可以改为总线控制)
解决办法:在输入端要加上标号,对应的输出端也要加上标号,这样才能保证输入与输出对应。
加标号的方法:
1.右击一条输入总线的线
2.添加标号
3.输入端的线就有了标号
4.接着给输出端也加上标号
5.此时运行,发现输出不是高阻态了,证明成功了
六、结论
完成了本次实验要求的ALU运算功能电路设计与功能验证实验内容。我学会了熟练使用proteus软件设计电路的同时,增加了对运算器运算过程的了解,了解了74LS181和74LS373芯片的功能以及用法。了解了总线的使用方法,以及对单总线和双总线以及三总线的设计结构上的异同。
后话
- 首先给大家说一下,博主经常在线,如果有什么问题或者想法,可以在下方评论,我会积极反馈的。
- 其次还是要请大家能够多多指出问题,我也会在评论区等候大家!
.