找回密码
 注册
关于网站域名变更的通知
查看: 441|回复: 1
打印 上一主题 下一主题

转——二进制到 BCD 之战

[复制链接]
  • TA的每日心情
    开心
    2019-11-20 15:00
  • 签到天数: 2 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2019-4-11 13:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

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

    x
    转——二进制到 BCD 之战

    1 ~; k4 b# z3 U0 a5 L) K7 G  P2 l% M; x8 z6 r. V, d
    经过前面的学习,相信大家已经掌握了软件的基本操作和设计的基本流程,接下来我们尝试从顶层至底层来设计一个BCD转换器。

    + o0 b  k; j  a1 ^( {, u
    在本次设计中,我们使用逐步移位法来实现BCD的转换,在设计FPGA之前,我们先来了解一下BCD转换-逐步移位法的原理:
    1 q0 l# y; J, u" V* o$ p1 t
    逐步移位法的规则是:
    1.  准备一个20比特的移位寄存器;
    2.  二进数逐步左移;
    3.  每个BCD位做大四加三的调整 ;
    4.  二进数全部移完,得到结果;
    在这里,我解释一下,为什么需要一个20比特的移位寄存器,原因是这样子,由于输入信号是8位,如果用无符号来表示的话,输入信号的范围就是0-255,而BCD码就是使用4位来表达一个数字,255有3个数字,所以BCD码的长度就是4*3=12比特,而需要准备的20比特移位寄存器就是12比特的BCD码+8比特的输入信号。

    1 z9 H# X  J/ }" |$ o7 G
    现在,我们来举一个具体例子来说明逐步位移法:
      w0 l" W- ^5 I. o1 X" n& v4 e
      
    第几次数
      
    BDC2[11:8]
    BCD1[7:4]
    BCD0[3:0]
    Bin[7:0]
    0
    10100101
    1
    1
    01001010
    2
    10
    10010100
    3
    101
    00101000
    3
    1000
    00101000
    4
    1
    0000
    01010000
    5
    10
    0000
    10100000
    6
    100
    0001
    01000000
    7
    1000
    0010
    10000000
    7
    1011
    0010
    10000000
    8
    1
    0110
    0101
    0000000
    由上表知:
    Bin= 10100101 = 165
    BCD= 0001_0110_0101 = 1_6_5 = 165;
    由此可知,逐步位移法是可以把二进制码转变成BCD码的。
    现在我们开始设计BCD converter的架构图:
    BCD  converter顶层架构图:

    4 ^; h: A. |$ D# W
    Bcd_modify架构图:

    5 Y( v* |  e" R' b  e
    CMP架构图:
    接着我们尝试使用Verilog HDL语音,把上述的倍频电路结构描述出来:
    先把BCD_converter描述出来。
    BCD_converter 的代码如下:
    4 e" u% w' S0 W/ ^3 a
    接着我们继续新建一个VerilogHDL File,再把bcd_modify描述出来:
    bcd_modify的代码如下:

    0 a% d4 X( O0 ^/ r
    最后我们再新建一个VerilogHDL File,再把cmp描述出来
    cmp的代码如下:
    - w: W# b4 {; N" C/ O: S, u. \0 E
    代码写完之后,我们再新建一个VerilogHDL File,用作test bench(测试程序);
    最后调用Modelsim进行仿真就可以看到仿真波形了,如下图所示:
    ) I1 B6 z1 R" F# V

    7 b6 x$ \! D/ G9 V% r
    3 [- }  Q, j- @. k1 Q
    如图所示:bin(无符号十进制表达)的值等于bcd(十六进制表达)输出的值;所以本次设计的BCD_converter是成功的。
    ) p8 q8 Q, B# l% e5 Z. T; Z8 H, S) y8 A
    & L7 m. \6 b* R# t
    . b9 ~+ X& |/ ^% ~" V# w

    该用户从未签到

    2#
    发表于 2019-4-11 15:34 | 只看该作者
    这个方法不错
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-29 19:43 , Processed in 0.109375 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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