2303|1

69

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

炼狱传奇—二进制到 BCD 之战 [复制链接]

炼狱传奇-二进制到BCD之战
经过前面的学习,相信大家已经掌握了软件的基本操作和设计的基本流程,接下来我们尝试从顶层至底层来设计一个BCD转换器。
在本次设计中,我们使用逐步移位法来实现BCD的转换,在设计FPGA之前,我们先来了解一下BCD转换-逐步移位法的原理:
逐步移位法的规则是:
1.  准备一个20比特的移位寄存器;
2.  二进数逐步左移;
3.  每个BCD位做大四加三的调整 ;
4.  二进数全部移完,得到结果;
在这里,我解释一下,为什么需要一个20比特的移位寄存器,原因是这样子,由于输入信号是8位,如果用无符号来表示的话,输入信号的范围就是0-255,而BCD码就是使用4位来表达一个数字,255有3个数字,所以BCD码的长度就是4*3=12比特,而需要准备的20比特移位寄存器就是12比特的BCD码+8比特的输入信号。
现在,我们来举一个具体例子来说明逐步位移法:
  
第几次数
  
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顶层架构图:

Bcd_modify架构图:

CMP架构图:
接着我们尝试使用Verilog HDL语音,把上述的倍频电路结构描述出来:
先把BCD_converter描述出来。
BCD_converter 的代码如下:
                              
接着我们继续新建一个VerilogHDL File,再把bcd_modify描述出来:
bcd_modify的代码如下:
最后我们再新建一个VerilogHDL File,再把cmp描述出来
cmp的代码如下:
代码写完之后,我们再新建一个VerilogHDL File,用作test bench(测试程序);
最后调用Modelsim进行仿真就可以看到仿真波形了,如下图所示:

如图所示:bin(无符号十进制表达)的值等于bcd(十六进制表达)输出的值;所以本次设计的BCD_converter是成功的。

此帖出自FPGA/CPLD论坛

最新回复

  详情 回复 发表于 2015-10-9 13:10
点赞 关注(1)
 

回复
举报

1891

帖子

2

TA的资源

纯净的硅(中级)

沙发
 
此帖出自FPGA/CPLD论坛
个人签名
分享铸就美好未来。。。




 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表