peng_blog

二进制转换BCD码

2
阅读(1187)

    应用:

    用fpga实现对数码管显示,以前通常的方法是进行整除和取余进行运算,但是fpga并不擅长乘法除法运算,所以可以用BCD码来转换。

    BCD码:通俗的可以理解为用四位二进制数表示一位十进制数字。例如,256就可以用bcd码表示为:0010_1001_0110

    因此在数码管显示中,也就是把256各位分出来,就可以用bcd码来表示,下面说一种二进制转换bcd码的方法。

    加3移位法:

    bcd码中只有0~9十进制数,但是在四位二进制中是16进制进1,因此在移位过程中要对二进制进行判断,当在移位之后的状态Qn+1大于9,要对Qn加6才可以。例如1000移位大于9加6为0001_0110,对应bcd码中的16。

     我们也可以在移位之前进行判断,如果移位之前的Qn数据大于4,说明Qn+1会溢出,所以可以+3再进行移位,例如1000大于4,加3为1011然后再进行移位0001_0110,16和刚才结果是一样的。

    简单的说,判断的目的是防止下一次移位,发生数据溢出的情况

    思路:  

    代码可以总结为三个部分:移位,加二进制数,判断(最后一次不需要判断)

    例如15  ---  1111

            (1)移位    0000_0000         加    0000_0001        判断    0000_0001

            (2)移位    0000_0010         加    0000_0011        判断    0000_0011

            (3)移位    0000_0110         加    0000_0111        判断    0000_1010         

            (4)移位    0001_0100         加    0001_0101    

   Modelsim仿真图片:2017-04-29_180336.png

    Verilog代码:



代码

bcd.rar