十进制为87等于二进制为多少,等于多少bcd码与二进制?

十进制数128对应的二进制是多少?8421bcd码是多少?对应的16进制是多少?_百度知道
十进制数128对应的二进制是多少?8421bcd码是多少?对应的16进制是多少?
二进制:128(0)=(b)8421:
0016进制:10(h)
其他类似问题
为您推荐:
8421bcd码的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁101001bcd码等于多少十进制数怎么算的
101001bcd四位二进制码对应一个十进制数不够前面补零
10010010对应2
1001对应9,也就是十进制的29
为您推荐:
其他类似问题
扫描下载二维码verilog实现任意位二进制转换BCD
单片机&嵌入式
单片机应用
嵌入式操作系统
学习工具&教程
学习和开发单片机的必备工具
(有问必答)
(带你轻松入门)
电子元件&电路模块
当前位置: >>
>> 浏览文章
verilog实现任意位二进制转换BCD
一直感觉这是个很简单的问题,直到突然自己连BCD都不太清楚的时候,才发现这没有看起来那么简单,这里介绍里任意位二进制转为BCD的verilog代码,这个转换方法也可以用在C上面,此为原创,转载请注明,谢谢。
基础知识:
BCD:BCD码又称为8421码,
意义:之所以有时候需要将binary转换为BCD,一般是用在本科的实验中,为了将binary显示在数码管中,当然还有很多应用,只是目前我还没有用到。
转换算法:左移加3法
移位加3法的具体原理,在网上感觉也没有人能够说的清楚,以后找到书籍再说吧。下面解释下左移加三算法。这里以8bit二进制数FF做例子。
该算法的操作为上图。下面对上图的操作进行详细的解释:
由于8bit的二进制最大为FF,转换为十进制为255。所以需要使用三个BCD码来表示所有的8bit二进制数。上图的hundreds表示百位的BCD,tens表示十位的BCD,Units表示个位的BCD。算法的操作为一直将binary数据左移,移出的数据按顺序存在hundreds,tens,Units。例如上面的shift1,shift2,shift3操作后,Units变为了0111,至于为何在shift3后进行add3操作,是因为在算法中每一次左移,都要对hundreds,tens和Units进行判断,如果hundreds,tens和Units里面的值大于或等于5,就将hundreds,tens和Units自加3.所以shift3后,Units里面为0111,表示为7,此时不能左移,而是对Units加三操作,所以Units的值从0111变为了1010.值得注意的是,只要hundreds,tens和Units中任意一个的值大于或等于5(0101),就要先进行一次自加三的操作,然后才能继续左移,后面的操作同上。
注意2:n位的binary就需要进行n次左移
注意3:最后一次左移不需要进行add3操作
:& 亲自推导16位的,和24位的binary转换,结果正确,所以该算法适用于任意位binary
to&&BCD,当然这种论断没有足够的理论依据。
verilog代码:
说明:对于8bit及以下的binary,可以使用case语句实现移位加三算法。由于这里说明的是任意位的二进制数,转为BCD,所以我的代码中设计了一个状态机,来控制移位,加三和结束操作。由于代码编写时间仓促,其中或许有些bug。
二进制转BCD
//info: as 2**8=255& change to BCD then this need
3 times of “8421”module b_to_bcd(
parameter&&
b_length&&&&&
parameter&&
bcd_len&&&&&&
parameter&&
&&&&&&&&&&&
= 5'b00001;
parameter&&
shift&&&&&&&&&&&&
= 5'b00010;
parameter&&
wait_judge&& = 5'b00100;
parameter&&
= 5'b01000;
parameter&&
add_3&&&&&&&&&
= 5'b10000;
&&&&&&rst_n;
&&[b_length-1:0]
input&&&&&&state_
output reg&[bcd_len-1:0]
&[b_length-1:0]
&reg_&&&&&
reg &[3:0]
&&&bcd_b, bcd_t,
reg &[3:0]
&&&shift_&&&&&&&&&&&&&&&&&&&&
reg& &[5:0]
&&&c_state,
reg&&&&&&add3_
reg&&&&&&change_
//this is a three section kind of state code
stylealways@(posedge clk or negedge rst_n)
if(!rst_n)
&&&&&&&&&&&&&
c_state &=
&&&&&&&&&&&&
c_state &= n_
//the second sectionalways@(posedge clk or negedge rst_n)
&if(!rst_n)
&&&&&&&&&&&&&&&&
&c_state &=
&&&&&&&&&&&&&&&
&case(n_state)
&&&&&&&&&&&&&&
&&idle:begin
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&if((binary!=0)&&(state_en==1'b1)&&(change_done==0'b0))
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&
n_state &=
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&n_state &=
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
&shift: n_state &= wait_
&&&&&&&wait_judge:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&if(change_done==1'b1)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
n_state &=
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
n_state &=
&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&
&judge:begin&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&if(add3_en)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
n_state &= add_3;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&n_state &=
&&&&&&&&&&&&&&&&&&&&&&&&&&end
&&&&&&&&&&&&&&
&add_3:begin
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
n_state &=
&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&
&default: n_state &=
&&&&&&&&&&&&&&endcase
//the third sectionalways@(posedge clk or negedge rst_n)
if(!rst_n)
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&
shift_time& &= 4'b0;
&&&&&&&&&&&&&&&&&&&&&&&&&
change_done &= 1'b0;
&&&&&&&&&&&&&&&&&&&&&&&&&
add3_en&&&= 1'b0;
&&&&&&&&&&&&&&&&
&&&&&&&&&&
case(n_state)
&&&&&&&&&&
idle:begin
&&&&&&&&&&&&&&&&&&&&&&&&
&shift_time &= b_
&&&&&&&&&&&&&&&&&&&&&&&&&
reg_binary &=
&&&&&&&&&&&&&&&&&&&&&&&&&&bcd_h
&&&&&&&&&&&&&&&&&&&&&&&&&
bcd_t &&& &=
&&&&&&&&&&&&&&&&&&&&&&&&&
bcd_b &&& &=
4'b0;&&&&&&
&&&&&&&&&&&&&&&&&
shift:begin&
&&&&&&&&&&&&&&&&&&&&&
{bcd_h,bcd_t,bcd_b,reg_binary} &=
{bcd_h,bcd_t,bcd_b,reg_binary}&&1;
&&&&&&&&&&&&&&&&&&&&&
shift_time &= shift_time-1;
&&&&&&&&&&&&&&&&&&&&
&if(shift_time==1)
&&& change_done
&&&&&&&&&&&&&&&&&&&&&&else
&&&&&&&&&&&&&&&&&&&&&
change_done &=
&&&&&&&&&&&&&&&&
&&wait_judge:begin
&&&&&&&&&&&&&&&&&&&&&
&if((bcd_h&=4'd5)||(bcd_t&=4'd5)||(bcd_b&=4'd5))
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
add3_en &= 1;
&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
add3_en &= 0;
&&&&&&&&&&&&&&&&&&&&
&if(change_done==1)&&
BCD &= {bcd_h,bcd_t,bcd_b};
&&&&&&&&&&&&&&&&&&
&judge: &add3_en &= 0;
add_3: begin
&&&&&&&&&&&&&&&&&&&&&
&if(bcd_h&=4'd5) bcd_h &= bcd_h + 4'b0011;
else bcd_h &= bcd_h;
&&&&&&&&&&&&&&&&&&&&&
&if(bcd_t&=4'd5) bcd_t &= bcd_t + 4'b0011;
else bcd_t &= bcd_t;
&&&&&&&&&&&&&&&&&&&&&
&if(bcd_b&=4'd5) bcd_b &= bcd_b + 4'b0011;
else bcd_b &= bcd_b;
&&&&&&&&&&&&&&&&&
default: begin
&&&&&&&&&&&&&&&&&&&&&&&&&&
change_done &= 1'b0;
&&&&&&&&&&&&&&&&&&&&&&&&&&
add3_en&&&= 1'b0;
&&&&&&&&&&&&&&&&&
代码的仿真:这里对上面的代码进行了仿真,仿真结果显示上面代码可以实现8bitbinary的BCD转换。
testbench:
reg rst_n;
reg state_
reg& [7:0]
wire [11:0]&BCD;
&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&rst_n=0;&
&&&&&&&&&&&&&&&
state_en = 0;
#100 & binary = 8'h3f;
&#150 & rst_n=1;
state_en =1;
always &#10& clk=~
b_to_bcd u_b_to_bcd
&.clk(clk),
&.rst_n(rst_n),
&.binary(binary),
&.state_en(state_en),
&.BCD(BCD)
仿真结果:二进制的3f=十进制的63
【】【】【】【】
上一篇:下一篇:
CopyRight @
单片机教程网
, All Rights Reserved将ASCII码表示的十进制数转换为二进制数_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
将ASCII码表示的十进制数转换为二进制数
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
你可能喜欢BCD码是二进制编码的十进制码,好绕口,请问是什么意思?_百度知道
BCD码是二进制编码的十进制码,好绕口,请问是什么意思?
提问者采纳
使二进制和十进制之间的转换得以快捷的进行。
其他类似问题
为您推荐:
二进制编码的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 汇编bcd码转换二进制 的文章

 

随机推荐