集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1522|回复: 2

BCD转二进制

[复制链接]
zxw123 发表于 2021-8-17 17:43:35 | 显示全部楼层 |阅读模式
在数学中,我们都知道随便一个数,比如 5468 = 5*1000+4*100+6*10+8,
所在 BCD 码转成二进制码最基本的方法就是:
     a_b_c_d = a*1000 + b*100 + c*10 +d
这种算法是最常规的一种算法,里面需要用到乘法器跟加法器,下面我会介
绍一种算法,这种算法仅仅需要用到加法就可以完成 BCD 转二进制的功能。
在介绍这种算法之前,我先来解释一个小小的问题:二进制码左移移位等于
未左移的二进制码*2,例如有二进制码 101001,转成十进制等于 41,左移一位
得到 1010010,转成十进制等于 82,下面我们可以尝试一下数学证明:
若有一个二进制码等于 abcd,转成十进制码等于 a*8 + b*4 + c*2 + d;左
移移位等到二进制码等于 abcd0,转成十进制码等于 a*16 + b*8 + c*4 + d*2;
所以 2*abcd = abcd0,同理可得 10*abcd = (abcd0) + (abcd000)。
既然二进制码左移 1 位加上左移 3 位等于二进制码乘以 10,那么我们是否
可以利用移位来代替乘法的运算呢,下面我们就来设计一个电路架构图,来实现
16 位 BCD 码转成 14 位二进制码的功能。
因为我们本次设计是 4 位 bcd 码转换成二进制码, 所以我们首先需要 4 组移
位寄存器用于乘 10 运算, 第一个 bcd 码发往 FPGA 的时候, 先直接寄存在 part_a,
第二个 bcd 码发往 FPGA 的时候,直接寄存在 part_b,而且把 part_a 里面的数乘
10, 第 3 个 bcd 码发往 FPGA 的时候, 直接寄存在 part_c,而且把 part_a 和 part_b
里面的数乘 10,第四个 bcd 码发往 FPGA 的时候,直接寄存在 part_d,而且把
part_a、part_b、part_c 里面的数乘 10;而二进制码则等于 part_a + part_b +
part_c + part_d 的值。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
zhangyukun 发表于 2021-8-18 09:55:20 | 显示全部楼层
BCD转二进制
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-23 19:45 , Processed in 0.059210 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表