0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA学习系列:32. 如何实现二进制转十进制的设计

电子工程师 来源:未知 作者:王淳 2018-09-20 09:38 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

设计背景:

二进制转十进制在设计应用中十分的广泛。尤其在AD转化中是必须所用到的一个小知识点,学习二进制转十进制的方法显的非常的重要。今天就和笔者来学习二进制转十进制的方法,通过简单的学习来掌握这么一门知识。

设计原理:

本次的设计主要是一个简单的二选一数据选择器,我们的设计主

二进制中只有 0 和 1 两个状态,可以表示 0、1 两种状态的电 子器件很多,如开关的接通和断开,晶体管的导通和截止、磁元 件的正负剩磁、电位电平的低与高等都可表示 0、1 两个数码。使 用二进制,电子器件具有实现的可行性。

二进制数的运算法则少,运算简单,使计算机运算器的硬件结 构大大简化。由于二进制 0 和 1 正好和逻辑代数的假(false)和 真(true)相对应,有逻辑代数的理论基础,用二进制表示二值 逻辑很自然。电子器件中,所有的数据都是用二进制来表示的。

2.BCD

BCD 码(Binary-Coded Decimal)亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~910个 数码。BCD 码是一种二进制的数字编码形式,用二进制编码的十 进制代码。BCD 码这种编码形式利用了四个位元来储存一个十进 制的数码,使二进制和十进制之间的转换得以快捷的进行。

3.实现方法

1)10求余法

将需要换的字除然后对10求余得出数各个 位上的字。8b1000_0000(10中的128将此数 字对10余,“8“8”赋最低的4将 此数字(128)10得出12(在FPGA计算,自取整, 对10,然得出位“2把“2”赋给低的4。将此 数字(128)除以100,得出1,对10余,然得出位“1把“1”赋给另外的4位。这样就转换出了BCD码。

这类方法中,利用了大量的除法和求余,占用了大量的逻辑资 源。但是,实现比较简单,如果芯片的逻辑资源足够的话,可以 采取使用这种方法。

2)大四加三法

进行移位,然后进行判断。如果大于四,则加三。最后得出们想要的BCD(下是按转换7讲解的

架构图如下

bin_data[7:0]:输入的二进制数据。

bin_data[11:0]:输出的BCD码(输入的二进制数据为8位,最大 8’b1111_1111(255),四位表示一个BCD故而12

设计代码:

设计模块

module bin_to_bcd(bin, bcd);

input [7:0] bin;

output [11:0] bcd;

wire [19:0] shift_reg [5:0];

assign shift_reg[5] = {9'b0,bin,3'b0};

bcd_modify u1(.bcd_in(shift_reg[5]), .bcd_out(shift_reg[4]));

bcd_modify u2(.bcd_in(shift_reg[4]), .bcd_out(shift_reg[3]));

bcd_modify u3(.bcd_in(shift_reg[3]), .bcd_out(shift_reg[2]));

bcd_modify u4(.bcd_in(shift_reg[2]), .bcd_out(shift_reg[1]));

bcd_modify u5(.bcd_in(shift_reg[1]), .bcd_out(shift_reg[0]));

assign bcd = shift_reg[0][19:8];

endmodule

module bcd_modify(bcd_in, bcd_out);

input [19:0] bcd_in;

output [19:0] bcd_out;

wire [19:0] bcd_reg;

bcd_sigle_modify u1(.bcd_in(bcd_in[19:16]), .bcd_out(bcd_reg[19:16]));

bcd_sigle_modify u2(.bcd_in(bcd_in[15:12]), .bcd_out(bcd_reg[15:12]));

bcd_sigle_modify u3(.bcd_in(bcd_in[11:8]), .bcd_out(bcd_reg[11:8]));

assign bcd_reg[7:0] = bcd_in[7:0];

assign bcd_out = {bcd_reg[18:0],1'b0};

endmodule

module bcd_sigle_modify(bcd_in, bcd_out);

input [3:0] bcd_in;

output reg [3:0] bcd_out;

always @ (*)

begin

if (bcd_in > 4)

bcd_out = bcd_in + 3;

else

bcd_out = bcd_in;

end

endmodule

测试模块

`timescale 1ns/1ps

module tb();

reg [7:0] bin;

wire [11:0] bcd;

initial begin

bin = 255;

#500 bin = 20;

#500 bin = 125;

#500 $stop;

end

bin_to_bcd bin_to_bcd_dut(

.bin(bin),

.bcd(bcd)

);

endmodule

仿真图:

从仿真中可以看出本次设计的正确性,测试中我们输出的二进制和为8个1也就是255,转化为10进制后 按16进制显示,也就是255,通过验证设计正确。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 二进制
    +关注

    关注

    2

    文章

    809

    浏览量

    43222
  • BCD
    BCD
    +关注

    关注

    1

    文章

    99

    浏览量

    32486
  • 十进制
    +关注

    关注

    0

    文章

    68

    浏览量

    13876

原文标题:FPGA学习系列:32. 二进制转十进制的设计

文章出处:【微信号:FPGAer_Club,微信公众号:FPGAer俱乐部】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    SN系列4位二进制全加器:快速进位的高效之选

    SN系列4位二进制全加器:快速进位的高效之选 引言 在电子电路设计领域,加法器是实现算术运算的基础组件,其性能直接影响到整个系统的运算速度和效率。TI的SN系列4位
    的头像 发表于 04-23 13:05 170次阅读

    4位二进制全加器:SN54/74系列的技术剖析与应用指南

    4位二进制全加器:SN54/74系列的技术剖析与应用指南 在电子设计领域,加法器是实现数字运算的基础组件,而4位二进制全加器在众多数字电路设计中扮演着重要角色。今天,我们就来深入探讨德
    的头像 发表于 04-23 13:05 174次阅读

    SN54F283和SN74F283:4位二进制全加器的技术解析

    SN54F283和SN74F283:4位二进制全加器的技术解析 在电子电路设计中,加法器是实现算术运算的基础组件。今天我们来深入了解一下德州仪器(TI)的SN54F283和SN74F283 4位
    的头像 发表于 04-23 10:15 256次阅读

    CD4089B:高性能CMOS二进制速率乘法器的设计与应用

    CD4089B:高性能CMOS二进制速率乘法器的设计与应用 在电子设计领域,对于能够实现精确脉冲速率控制和多样化运算功能的器件需求始终存在。CD4089B作为一款高性能的CMOS二进制速率乘法器
    的头像 发表于 04-18 14:45 130次阅读

    深入剖析 DM74LS283:4 位快速进位二进制加法器

    深入剖析 DM74LS283:4 位快速进位二进制加法器 在电子设计领域,加法器是实现数字运算的基础元件之一。今天我们要深入探讨的是 Fairchild 公司的 DM74LS283 4 位快速进位
    的头像 发表于 04-10 16:40 311次阅读

    探索 DM7445:BCD 到十进制解码器/驱动器的实用指南

    探索 DM7445:BCD 到十进制解码器/驱动器的实用指南 在电子设计领域,解码器/驱动器是实现数字信号转换和驱动的关键组件。今天,我们将深入探讨 FAIRCHILD SEMICONDUCTOR
    的头像 发表于 04-10 16:40 237次阅读

    74HC283 4位二进制全加器:设计利器深度解析

    JEDEC标准7A。它能够实现两个4位二进制数(An和Bn)与一个进位输入(CIN)的相加操作,运算结果以二进制
    的头像 发表于 04-08 16:15 258次阅读

    CDx4HC283与CDx4HCT283:4位二进制全加器的技术解析与应用指南

    CDx4HC283与CDx4HCT283:4位二进制全加器的技术解析与应用指南 在数字电路设计领域,加法器是实现数值运算的基础元件之一。今天我们要深入探讨的CDx4HC283和CDx4HCT283
    的头像 发表于 01-30 17:20 858次阅读

    十进制计算机硬件体系结构及“独值”量化逻辑运算革命(一)

    采用“独值”量化逻辑理论设计十进制数字计算机,十进制网络计算机,十进制模拟计算机,十进制模糊计算机,实现计算机类型多样化,计算机使用进位制系
    的头像 发表于 01-29 09:13 1147次阅读
    <b class='flag-5'>十进制</b>计算机硬件体系结构及“独值”量化逻辑运算革命(一)

    德州仪器4位二进制全加器:SN54/74系列的技术剖析

    德州仪器4位二进制全加器:SN54/74系列的技术剖析 在数字电路设计中,加法器是实现算术运算的基础组件。德州仪器的SN54283、SN54LS283、SN54S283、SN74283
    的头像 发表于 01-28 17:05 804次阅读

    CDx4HC283和CDx4HCT283:高速CMOS逻辑4位二进制全加器的详细解析

    CDx4HC283和CDx4HCT283:高速CMOS逻辑4位二进制全加器的详细解析 在电子设计领域,加法器是数字电路中最基本的运算单元之一,用于实现二进制数的加法运算。今天要给大家介绍
    的头像 发表于 01-19 14:50 524次阅读

    解析CD54/74AC283与CD54/74ACT283:4位二进制加法器的卓越之选

    解析CD54/74AC283与CD54/74ACT283:4位二进制加法器的卓越之选 在电子设计领域,加法器是实现数字运算的基础组件。今天我们要深入探讨的是德州仪器(Texas
    的头像 发表于 01-08 16:55 766次阅读

    德州仪器4位二进制全加器:SN54/74283系列深度解析

    德州仪器4位二进制全加器:SN54/74283系列深度解析 在数字电路设计领域,加法器是构建复杂算术逻辑单元的基础组件。德州仪器(TI)的SN54/74283系列4位二进制全加器凭借其
    的头像 发表于 12-23 15:45 1116次阅读

    二进制查找(Binary Search)介绍

    二进制查找(Binary Search)用于在已排序的数组中执行二进制查找的函数。 int binary_search(int arr[], int size, int target
    发表于 12-12 06:54

    二进制数据处理方法分享

    时,我们如何去解析数据并且应用它们。本次的技术分享文章,我们就从如何传输数据和解析二进制数据来一步一步剥丝抽茧,搞清楚他的运作原理和二进制数据的数据结构。
    的头像 发表于 07-30 15:41 2624次阅读
    <b class='flag-5'>二进制</b>数据处理方法分享