《EDA课程设计算术逻辑运算单元ALU.docx》由会员分享,可在线阅读,更多相关《EDA课程设计算术逻辑运算单元ALU.docx(6页珍藏版)》请在三一办公上搜索。
1、EDA课程设计算术逻辑运算单元ALU题目: 燕 山 大 学 EDA课程设计报告书 算术运算逻辑单元ALU 姓名: 班级: 学号: 成绩: 一、设计题目及要求 题目名称:算术运算单元ALU 要求: 1进行两个四位二进制数的运算; 2算术运算:A+B, A-B, AB; 3逻辑运算:A and B, A or B, A not, A xor B; 4. 用数码管显示算术运算结果,以LED指示灯显示逻辑运算结果。 1总体设计的文字描述,即由二、设计过程及内容 1.整体设计思路 (1)根据设计要求将题目划分为五个模块。包括两个逻辑运算模块,两个算术运算模块,和一个控制模块。其中逻辑运算模块为A and
2、 B和A or B,A not和A xor B;算术模块为AB,AB。 因为需要进行四位二进制数的运算,因此用A4,A3,A2,A1表示四位二进制数A,用B4,B3,B,B1表示四位二进制数B,用C4,C3,C2,C1表示四位二进制数C。其中A,B为输入,C为输出。 2 2分模块设计 A+B和A-B模块 A+B可以直接通过74283 两个四位二进制数加法器实现。A-B可以看作A+,即A加B的补码来实现。同时再设计一个转换控制端M。M=0时实现A+B,M=1时实现A-B。最后再设计一个总的控制端K1,K1=1时模块正常工作,K1=0时不工作。做加法时,C0为进位输出,C0输出1表示有进位,做减法
3、时,C0为借位输出,C0输出1表示有借位。通过74283五位输出,进入译码器将五位变成八位输出,在通过数码管显示。实现A+B,例:011101111110则数码管应显示14。实现A-B例:110001100110则数码管显示06。 A+B,A-B总原理图如下: 3 A+B,A-B分原理图如下: 译码器原理图如下: 4 扫描电路原理图如下: 5 A+B仿真图: A- B仿真图: 6 AXB模块 AXB模块采用乘数累加被乘数的次的原理来实现乘法功能。乘数输入端为A0A3,被乘数输入端为B0B3。当乘数和被乘数均输入时,乘数进入到加法器中与默认值0000相加,相加的结果在时钟信号CLK的第一个脉冲时
4、存入置数器74161中;在第一个时钟信号到来时,计数器74161计数一次,并将输出输入到比较器7485中,与被乘数作比较,如果两者不相等,则7485输出为0,通过非门转化为1,使乘数可以继续输入到加法器74283中进行累加;当下一个时钟信号到来时,计数器计数一次,然后乘数累加一次。当计数器的数值与被乘数的大小相等时,比较器7485输出1,通过非门转化为0,使乘数停止输入。当加法器中相加的结果有几位时,通过cout段输出到另一计数器中,计数器的输出为乘法运算结果的高四位输出,加法器的最后输出为运算结果的低四位输出。最后的运算结果转化为十进制,将高位的数值乘以16再加地位的数值即可。 AXB原理图
5、: 7 AXB仿真图: A and B和A or B模块 8 A and B模块通过四个二输入与门实现,A or B通过四个二输入或门实现。同时设计一个转换控制端M,当M1时,A and B模块工作,M0时,A or B模块工作。最后设计一个总的控制端K3,K31时模块正常工作,K30时模块不工作。最后,在C1,C2,C3,C4 四个输出端接LED指示灯,当输出1时,指示灯亮,输出0时,灯不亮。 A and b,A or B的原理图如下: A and B仿真图: 9 A or B仿真图: 10 A not和A xor B模块 A not直接通过四个非门实现, A xor B直接通过四个异或门实
6、现。同时设计一个转换控制端M,当M1时,A非工作;当M0时,A异或B工作。另外再设计一个总的控制端K4。当K41时,模块正常工作;当K40时,模块不工作。最后,在C1,C2,C3,C4 四个输出端接LED指示灯,当输出1时,指示灯亮,输出0时,灯不亮。 A not,A xor B原理图如下: 11 A not仿真图: A xor B仿真图: 12 控制模块 控制模块可以通过一个二线四线译码器来实现,依次控制上述总的控制端K1,K2,K3,K4。从而可以分别实现各个模块的功能。 译码器真值表 输入端 输出端 S1 S0 K1 K2 K3 K4 0 0 1 0 0 0 0 1 0 1 0 0 1
7、0 0 0 1 0 1 1 0 0 0 1 控制模块原理图如下: 13 控制模块仿真图: 三、设计结论 在这次的EDA设计中,我们学习到了EDA的设计基本步骤和设计方法。主要是对EDA的设计软件MAXplusII的基本操作,有了一定的了解。了解到如何将软件里设计好的文件,是用下载应用到硬盘中,进而实现它的实际作用。 这两周的学习,让我们感受到,我们的专业是注重实际操作的。有些问题也是看不出来的,需要不断的动手操作,在实践中才能发现问题。然后我们要不断改进,修正做错的地方,才能做的更好。而我们在这过程中,要一起努力,一起讨论,共同研究,谁也不可能一个人就解决所有的问题。同时我们也要主动承担起应尽
8、的责任,身为团队中的一员,就不能将所有的事都丢给队友。这就是团队精神。在实现如何让四位二进制数相加减的结果,在数码管显示时,我们遇到麻烦,经过老师的指导,以及小组成员讨论,最终我们通过采取真值表的方法,将由74283的五位输出转化为八位输出,最终实现数码管的显示。 14 两周的紧张课设,让我们学习到很多,在乘法模块的设计中,从完全没有思路到渐渐出来雏形,经历了很多波折。一开始的思路是利用移位相加原理,但是在时钟信号的控制和输出的控制中出现问题,最后不得不放弃;后来又想到用乘数累加的方法,最后实现了乘法的运算,但是只是数值较小的乘法运算,这是一点不足。 于我们个人而言,这次的学习,还让我们明白,作为一个科技工作者,要严谨,认真,耐心。即使是一个简单的电路,也要认真地思索电路,不怕繁琐,耐心做事。即使面对困难,也不退缩。要提高思考问题、解决问题的能力,增强动手能力和创新意识。 这两周过的很充实,我们也学会了很多东西。在此感谢学校安排这样的课程,感谢指导老师的指导! 15