首页 > 代码库 > 二进制转BCD
二进制转BCD
什么是BCD码?
BCD码称为二进码十进数或BCD码(Binary-Coded Decimal)亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。
BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧,最常用于会计系统的设计里,因为 会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免却使电脑作浮点运算时所耗费的时 间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。
Bin转BCD比较常见的方法是:除法取余的方法来实现
这种方法虽然能够实现功能,达到bin2bcd的目的,但是占用的逻辑资源确实相当的多,所以为了对其进行优化,就要考虑到运用移位的方法来实现这个目的。
Bin2bcd移位算法原理:
此处要介绍的是二进制转BCD码的硬件实现,采用左移加3的算法,具体描述如下:
(此处以8-bit 二进制码为例)
1、左移要转换的二进制码1位
2、左移之后,BCD码分别置于百位、十位、个位
3、如果移位后所在的BCD码列大于或等于5,则对该值加3
4、继续左移的过程直至全部移位完成
举例:将十六进制码0xFF转换成BCD码
实现代码:
module bin2bcd( input [7:0] binary,//最多能表示255 output reg [3:0] Hundreds, output reg [3:0] Tens, output reg [3:0] Ones );integer i;always @(binary)begin Hundreds = 4‘d0; Tens = 4‘d0; Ones = 4‘d0; for( i=7; i>=0 ;i=i-1) begin if(Hundreds >=5) Hundreds = Hundreds+3; if(Tens >=5) Tens = Tens+3; if(Ones >=5) Ones = Ones+3; Hundreds = Hundreds <<1; Hundreds [0] = Tens[3]; Tens = Tens <<1; Tens [0] = Ones[3]; Ones = Ones <<1; Ones [0] = binary[i]; endendendmodule
二进制转BCD
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。