我是靠谱客的博主 舒适红牛,最近开发中收集的这篇文章主要介绍FPGA学习altera 系列 第二十四篇 BCD转二进制,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天给大侠带来“FPGA学习系列 altera"系列,持续更新。此学习心得是本人之前所写,所用设计软件为Quartus II 13.1,现Quartus II 新版本已更新到19+,以下仅供初学者学习参考。后续会更新其他系列,敬请关注。话不多说,上货。

 

 

对于每一个的小实验,我们都可以把它看作是一个小项目,逐步的去分析,设计,调试,最后完成功能。下面我们就开始我们的“小项目”。

项目名称:BCD转二进制

具体要求:将12位的BCD码转成二进制。 

项目分析:12位的BCD码,表示最大的数值为“999”,故而需要10位的二进制来表示。 

 

 

架构图如下:

 

  • bcd_data[11:0]:输入的BCD码。

  • bin_data[9:0]:输出的二进制数值。

 

 

系统设计:

1. 工程的名称:bcd_to_bin

2. 实现方法:使用组合逻辑实现。

 

设计代码如下:

/*模块名称:bcd_to_bin模块功能:将12位的BCD码转成二进制。作者:郝旭帅邮箱:746833924@qq.com*/module bcd_to_bin (bcd_data, bin_data);    input [11:0] bcd_data;    output [9:0] bin_data;  assign bin_data = 100 * bcd_data[11:8] + 10 * bcd_data[7:4] + bcd_data[3:0];endmodule

 

代码解析:

一位的BCD码由四位的二进制构成,个位对应低四位,十位对应次低四位······,当进行BCD转二进制时,把各个四位乘以“权”(个位乘以1,十位乘以10······),相加即可得到二进制的数值。

 

激励代码如下:

/*模块名称:bcd_to_bin_tb模块功能:为bcd_to_bin模块提供激励信号作者:郝旭帅邮箱:746833924@qq.com*/`timescale 1ns/1psmodule bcd_to_bin_tb;  reg [11:0] bcd_data;    wire [9:0] bin_data;  initial begin    bcd_data = 12'h123;    # 60    bcd_data = 12'h147;    # 60    bcd_data = 12'h258;    # 60    bcd_data = 12'h369;    # 60    bcd_data = 12'h951;    # 60    bcd_data = 12'h753;    # 60    $stop;  end  bcd_to_bin bcd_to_bin_dut(      .bcd_data(bcd_data),       .bin_data(bin_data)    );    endmodule

 

代码解析:

四位的二进制为一个BCD码,也为一个16进制数,故而bcd_data赋值时,采用16进制。

 

仿真波形如下:

 

将bin_data设置成无符号位,将bcd_data设置成十六进制,4位的二进制正好一位十六进制。通过仿真,证明设计正确。

如果设计要求与笔者的设计不同,请自行更改设计,以保证设计的正确性。如果还是有不明白的读者可以发邮件到我邮箱或者加群询问。

 

 

END

 

 

制作人:郝旭帅(QQ:746833924)         

QQ交流群:173560979(进群备注地区+名字)

 

大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!

最后

以上就是舒适红牛为你收集整理的FPGA学习altera 系列 第二十四篇 BCD转二进制的全部内容,希望文章能够帮你解决FPGA学习altera 系列 第二十四篇 BCD转二进制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(83)

评论列表共有 0 条评论

立即
投稿
返回
顶部