8421BCD码加法器

8421BCD码加法器

ID:39063417

大小:1.66 MB

页数:8页

时间:2019-06-24

8421BCD码加法器_第1页
8421BCD码加法器_第2页
8421BCD码加法器_第3页
8421BCD码加法器_第4页
8421BCD码加法器_第5页
资源描述:

《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))+

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。