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

转——二进制到 BCD 之战

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    转——二进制到 BCD 之战

    ' U* g" q9 J; w3 w. P6 \9 d. B+ r3 ^7 E! A1 i; R
    经过前面的学习,相信大家已经掌握了软件的基本操作和设计的基本流程,接下来我们尝试从顶层至底层来设计一个BCD转换器。
    1 K4 `- W+ S8 s! t
    在本次设计中,我们使用逐步移位法来实现BCD的转换,在设计FPGA之前,我们先来了解一下BCD转换-逐步移位法的原理:
    / X1 L+ T0 z4 a) I  x5 ~8 T
    逐步移位法的规则是:
    1.  准备一个20比特的移位寄存器;
    2.  二进数逐步左移;
    3.  每个BCD位做大四加三的调整 ;
    4.  二进数全部移完,得到结果;
    在这里,我解释一下,为什么需要一个20比特的移位寄存器,原因是这样子,由于输入信号是8位,如果用无符号来表示的话,输入信号的范围就是0-255,而BCD码就是使用4位来表达一个数字,255有3个数字,所以BCD码的长度就是4*3=12比特,而需要准备的20比特移位寄存器就是12比特的BCD码+8比特的输入信号。
    . J5 K9 @7 \3 V- x; Z
    现在,我们来举一个具体例子来说明逐步位移法:

    1 S/ ~$ w6 M3 o* d1 h# `8 l
      
    第几次数
      
    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顶层架构图:

    * q- P( p( c: H% N. u. M
    Bcd_modify架构图:

    6 g- f& r: E+ ~, `* d" i
    CMP架构图:
    接着我们尝试使用Verilog HDL语音,把上述的倍频电路结构描述出来:
    先把BCD_converter描述出来。
    BCD_converter 的代码如下:

    # @+ F' ^* ?6 d
    接着我们继续新建一个VerilogHDL File,再把bcd_modify描述出来:
    bcd_modify的代码如下:

    : r: s( n* M$ Z$ w$ H( W! b
    最后我们再新建一个VerilogHDL File,再把cmp描述出来
    cmp的代码如下:
    2 G7 y5 \$ j, M$ m0 l
    代码写完之后,我们再新建一个VerilogHDL File,用作test bench(测试程序);
    最后调用Modelsim进行仿真就可以看到仿真波形了,如下图所示:
    6 W1 S' m2 X! P: R
    # z) I; ^7 Y& _8 [
    3 p8 _. V. i. V% w" f3 s4 ~
    如图所示:bin(无符号十进制表达)的值等于bcd(十六进制表达)输出的值;所以本次设计的BCD_converter是成功的。

    ! S; ?$ o) g& [& L0 a/ R5 p
    ! Y+ n9 a; e8 n! E
    ' |- U3 N1 X* t1 _

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-31 05:57 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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