您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 8421BCD码加法器
卓越工程师班第一次大作业用四位全加器构成一位BCD码加法器班级:001111作者:00111116江新远实现方式一:器件一、问题用四位二进制全加器74LS283构成一位8421BCD码加法电路二、74LS283介绍74LS283是TTL双极型并行4位全加器,,特点是先行禁卫,因此运算速度很快,其外形为双列直插。它有两组4位二进制数输入,一位低位向本位的进位输入,有一组二进制输出,一个最高位的进位输出,改器件所完成的4位二进制加法如图所示。4321AAAA4321BBBB1C4321SSSS三、解决思路用四位全加器构成一位8421BCD码的加法电路。两位8421BCD码相加,其和仍应为8421BCD码,如不是8421BCD码则结果错误。①若和小于等于9结果正确,如40100+3→+0011……………………701110111是8421BCD码的7,结果正确。②若和大于9则结果错误,若要得到正确结果,则需加6(011)修正。如60110+7→+0111……………………1310111101在8421BCD码中是非法码,结果错误,如果加6修正后,则产生了进位信号,且本位1101+0110…………1,0011“0011”也是正确的。③若和产生进位,则结果错误,也需加6修正。如81000+9→+1001……………………171,0001虽产生了进位,但本位和不正确,若加6修正1,0001+0110…………1,0111得到正确结果。产生错误的原因是8421BCD码为十进制,逢十进一,而四位二进制数是逢十六进一,故二者进位关系不同。其中刚好相差6,故需加6进行修正。这样,构成两个一位8421BCD相加时,必须由三部分组成:一部分进行加数和被加数相加;第二部分是修正判别,判别是否要加以修正,即产生修正控制信号;第三部分完成加6修正。第一部分和第三部分均由4位全加器实现。第二部分修正判别电路应在8421BCD码相加有进位信号CO产生时,或者和数在10~15的情况下产生修正控制信号F,所以F应为10,11,12,13,14,15mFCO利用图3.2.14所示的卡诺图将和大于9的部分化简得出F:32313231FCOFFFFCOFFFF根据上述分析及F信号产生的逻辑表达式可得到两个一位8421BCD码相加的电路。03P03Q30CICO30P30Q30CICO84218421加数被加数AB8421进数8421和相加1&&&修正判断修正四、quartus仿真五、拓展思考——方案3用加法器实现两个四位二进制数相加并输出为8421BCD码。同样也可以实现两位8421BCD码相加并且输出为8421BCD码。两个四位二进制数相加,若考虑到低位向高位的进位,则其结果为0000~11110,显然从1010开始就不符合8421BCD码的要求,如需8421BCD码输出则要进行修订。考虑到输出可能是两位8421BCD码,则输出为六位,除加法器的四位输出外,增加两位输出D11,D22若和小于10则结果正确,输出即为,若和大于9而小于20则结果错误,若要得到正确结果,则需加6(0110)修正若和大于19而小于30则结果错误,若要得到正确结果,则需加12(1100)修正若和大于29则结果错误,若要得到正确结果,则需加0010(0110+1100=10010)修正。利用真值表列式得:)(23411SSCD23423412313410SSCSSCSSSSSCD实现方式二:VHDL硬件描述设计思路:A和B是两个8421BCD码,它们相加后产生的进位为C,输出的8421BCD码为D。S1和S分别为信号S=A+B,如果S10,则产生进位,c=1;由于S是二进制的,所以最后取S的后四位加6就好。但是为防止S的后四位加6,仍然大于10,故先用S1等于S的后四位加6,然后再取S1的后四位。附代码:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.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)='1')))then//s4大于等于10c=’1’;//c=1;s1=('0'&s(3downto0))+(00110);//s1取S的后四位加6d=s1(3downto0);//d取s1后四位else//如果相加和小于10c=’0’;//c=0d=s(3downto0);//d直接取S的后四位endif;endprocess;endars;所得到的电路实验结果:满足设计要求。
本文标题:8421BCD码加法器
链接地址:https://www.777doc.com/doc-7313940 .html