欢迎来到天天文库
浏览记录
ID:39063417
大小:1.66 MB
页数:8页
时间:2019-06-24
《8421BCD码加法器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、卓越工程师班第一次大作业用四位全加器构成一位BCD码加法器班级:001111作者:00111116江新远实现方式一:器件一、问题用四位二进制全加器74LS283构成一位8421BCD码加法电路二、74LS283介绍74LS283是TTL双极型并行4位全加器,,特点是先行禁卫,因此运算速度很快,其外形为双列直插。它有两组4位二进制数输入,一位低位向本位的进位输入,有一组二进制输出,一个最高位的进位输出,改器件所完成的4位二进制加法如图所示。三、解决思路用四位全加器构成一位8421BCD码的加法电路。两位8421BCD码相加,其和仍应为8421BCD码,
2、如不是8421BCD码则结果错误。①若和小于等于9结果正确,如4 0100+ 3 → +0011………… …………7 01110111是8421BCD码的7,结果正确。②若和大于9则结果错误,若要得到正确结果,则需加6(011)修正。如6 0110+ 7 → +0111………… …………13 10111101在8421BCD码中是非法码,结果错误,如果加6修正后,则产生了进位信号,且本位 1101
3、 +0110 ………… 1,0011“0011”也是正确的。③若和产生进位,则结果错误,也需加6修正。如8 1000+ 9 → +1001………… …………17 1,0001虽产生了进位,但本位和不正确,若加6修正 1,0001 + 0110 ………… 1,0111得到正确结果。产生错误的原因是8421BCD码为十进制,逢十进一,而四位二进制数是逢十六进一,故二者进位关系不同。其中刚好相差6,故需加6进行修正。
4、这样,构成两个一位8421BCD相加时,必须由三部分组成:一部分进行加数和被加数相加;第二部分是修正判别,判别是否要加以修正,即产生修正控制信号;第三部分完成加6修正。第一部分和第三部分均由4位全加器实现。第二部分修正判别电路应在8421BCD码相加有进位信号CO产生时,或者和数在10~15的情况下产生修正控制信号F,所以F应为利用图3.2.14所示的卡诺图将和大于9的部分化简得出F:根据上述分析及F信号产生的逻辑表达式可得到两个一位8421BCD码相加的电路。四、quartus仿真五、拓展思考——方案3用加法器实现两个四位二进制数相加并输出为842
5、1BCD码。同样也可以实现两位8421BCD码相加并且输出为8421BCD码。两个四位二进制数相加,若考虑到低位向高位的进位,则其结果为0000~11110,显然从1010开始就不符合8421BCD码的要求,如需8421BCD码输出则要进行修订。考虑到输出可能是两位8421BCD码,则输出为六位,除加法器的四位输出外,增加两位输出D11,D22若和小于10则结果正确,输出即为,若和大于9而小于20则结果错误,若要得到正确结果,则需加6(0110)修正若和大于19而小于30则结果错误,若要得到正确结果,则需加12(1100)修正若和大于29则结果错误,
6、若要得到正确结果,则需加0010(0110+1100=10010)修正。利用真值表列式得:实现方式二:VHDL硬件描述设计思路:A和B是两个8421BCD码,它们相加后产生的进位为C,输出的8421BCD码为D。S1和S分别为信号S=A+B,如果S>10,则产生进位,c=1;由于S是二进制的,所以最后取S的后四位加6就好。但是为防止S的后四位加6,仍然大于10,故先用S1等于S的后四位加6,然后再取S1的后四位。附代码:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.
7、all;entityfhomework1isport(a,b:instd_logic_vector(3downto0);c:outbit;d:outstd_logic_vector(3downto0));endfhomework1;architecturearsoffhomework1issignals,s1:std_logic_vector(4downto0);beginprocess(a,b)begins<=('0'&a)+('0'&b);//两个相加,保证位数相同if(s(4)='1'or(s(3)='1'and(s(2)='1'ors(1)=
8、'1')))then//s4大于等于10c=’1’;//c=1;s1<=('0'&s(3downto0))+
此文档下载收益归作者所有