算术运算单元ALU的设计与实现
这是2018年大三时的一个课程设计,在这里把相关技术和用到的知识分享给大家。(由于编者水平有限可能存在错误的地方,欢迎大家指正)题目给出的要求如下:
推荐大家一个靠谱的论文检测平台。重复的部分有详细出处以及具体修改意见,能直接在文章上做修改,全部改完一键下载就搞定了。他们现在正在做毕业季活动, 赠送很多免费字数,可以说是十分划算了!地址是:https://www.paperpass.com/
一、设计题目及要求
要求:
1.进行两个四位二进制数的运算。
2.算术运算:A+B,A-B,A+1,A-1
3.逻辑运算:A and B,A or B,A not, A xor B
注意:从整体考虑设计方案,优化资源的利用
二、设计过程及内容
2.1总体设计
ALU算术运算单元由以下几个部分构成:
图1 ALU运算单元系统结构图
为了尽可能减少资源的使用(或以相同的资源增加更多的功能),在此系统的基础上,增加基于寄存器的分时复用输入模块进行改进。
图2 基于分时复用方法的ALU运算单元结构
①输入模块
该模块用于两个四位二进制数的输入。通过使用实验箱的拨码开关,输入高低电平,表示二进制的 1和0,四组拨码开关组合可以表示一个四位二进制数。
②逻辑运算单元
该模块用于两个四位二级制数的逻辑运算。通过列出一位二进制数逻辑运算的真值表(含有四种不同的逻辑运算功能),得出了一位二进制数逻辑运算单元的表达式(已使用卡诺图化简)。将按照逻辑表达式连接好的多个一位二进制逻辑运算单元进行组合,可得到多位二进制数逻辑运算单元。
通过使用“真值表+卡诺图”的方法将所有的逻辑运算的表达式融合在一起进行化简,可以最大化减少使用门电路的数量。使用子模块组合的方式可将逻辑运算单元由一位扩展到多位,进而增加了模块的可扩充性。
图3 逻辑运算单元结构示意图
③算术运算单元
该模块用于计算两个四位二进制数的加减法运算。使用4位超前加法器74283实现加法功能。根据计算机组成原理的相关知识,减法可以视为补码的加法运算,即A-B=A+B_补=A+B_反+1,因此在实现加法运算的基础上进行改进,可以得到所有的算术运算功能。
该模块的实现过程为,使用2个功能控制线对输入的4个经过不同处理的B数据进行选择(不同处理包括原码输入、对输入的原码取补码、直接视为1、直接视为-1的补码),通过一个74283加法器,输出计算结果。
④功能控制模块
该模块实现了对运算类型的选择。通过对一根功能选择线置不同的电平实现了算术运算功能和逻辑运算功能的选择。从系统的角度来看,功能选择线有三个,F_3 F_2 F_1,F_3实现了运算类型选择,F_2 F_1实现了对每种运算类型4种不同功能的选择,具体分类见表1。