|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
炼狱传奇-BCD转二进制之战 @& s& ~ Y# z4 a7 b* S
在前面的《炼狱传奇-二进制到BCD之战》,我们已经学会了如何把二进制的数据转换成BCD码,现在,我们就反过来思考,设计一个电路架构,把BCD码转换成二进制码。在数学中,我们都知道随便一个数,比如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,下面我们可以尝试一下数学证明:, l. `9 i, U! `# S* ?
若有一个二进制码等于abcd,转成十进制码等于a*8+b*4+c*2+d;左/ z1 b3 D2 h9 `* h6 l% \
移移位等到二进制码等于abcd0,转成十进制码等于a*16+b*8+c*4+d*2; }" i& b9 Q* n- ?; W2 ]
所以2*abcd=abcd0,同理可得10*abcd=(abcd0)+(abcd000)。; x F; r* U& A! {
既然二进制码左移1位加上左移3位等于二进制码乘以10,那么我们是否, D" `( f& G0 {+ V* W
可以利用移位来代替乘法的运算呢,下面我们就来设计一个电路架构图,来实现
q/ ]. q; p& x1 Q16位BCD码转成14位二进制码的功能。
5 @6 V. S( N6 K' D+ q
' D6 C+ y; J$ c7 o r |
|