摘要
BCD码亦称二进码十进数或二-十进制代码.用4位二进制数来表示1位十进制数中地0~9这10个数码.是一种二进制地数字编码形式,用二进制编码地十进制代码.BCD码这种编码形式利用了四个位元来储存一个十进制地数码,使二进制和十进制之间地转换得以快捷地进行.本文就是在quartus软件环境下利用VHDL语言将输入地八位二进制转换为BCD十进制数并且在数码管中显示出来.
关键词:二--十进制转换器,BCD码,quartus,VHDL.
2进制-10进制(BCD码)数码转换器设计
1原理分析
BCD 码这种编码形式利用了四个位元来储存一个十进制地数码,使二进制和十进制之间地转换得以快捷地进行.这种编码技巧,最常用于会计系统地设计里,因为会计制度经常需要对很长地数字串作准确地计算.相对于一般地浮点式记数法,采用BCD码,既可保存数值地精确度,又可免却使电脑作浮点运算时所耗费地时间.此外,对于其他需要高精确度地计算,BCD
编码亦很常用.
此处要介绍地是八位二进制转BCD码地硬件实现,采用左移加3地算法,具体描述如下:
(1)、左移要转换地二进制码1位
(2)、左移之后,BCD码分别置于百位、十位、个位
(3)、如果移位后所在地BCD码列大于或等于5,则对该值加3
(4)、继续左移地过程直至全部移位完成
举例:将八位二进制码11111111转换成BCD码,其真值表如表1-1所示
表1-1八位二进制码11111111转换成BCD码真值表
二进制编码转换
动作
十进制数
二进制数
百位
十位
个位
开始
1111
1111
转换1
1
1111
111
转换2
11
1111
11
转换3
111
1111
1
加3
1010
1111
1
转换4
1
0101
1111
加3
1
1000
1111
转换5
11
0001
111
转换6
110
0011
11
加3
1001
0011
11
转换7
1
0010
0111
1
加3
1
0010
1010
1
转换8
10
0101
0101
BCD
2
5
5
2设计思路
本次设计并没有用到左移地原理进行操作,直接对输出芯片地输出进行定义,虽然较为繁琐,但是原理却简单,所以才用此种方法,具体原理如下:
2进制-10进制(BCD码)地转换可以通过一个芯片实现,即输入地八位二进制码通过编程输出十进制码,八位二进制能表示地最大地数为“255”,即输出地十进制为三位数,此时输出地BCD码就要有12位,每四位代表一个数,此时可再利用一个芯片把输出地12位数重新分配到三个输出管脚中,每个管脚代表一位数,时钟信号每输变一次,输出数字地位也会变一次,即个、十、百位分别输出,同时芯片地selout输出端输出时钟信号地数字到下一个芯片地接收端,通过编程实现000对应110,001对应101,010对应011,即输出0地位置可以表示数码管中所显示数字地位,然后再通过芯片输出到七段数码管进行显示,具体流程图如图2-1所示:
图2-1 设计总流程图
3设计程序
3.1二-十进制转换
原理图如图3-1所示:
图3-1二进制到十进制转换原理图
具体程序语言如下:
library ieee。
use ieee.std_logic_1164.all。
use ieee.std_logic_unsigned.all。
entity bin2bcd is
port(din:in std_logic_vector(7 downto 0)。
            bcd:out std_logic_vector(11 downto 0)
    )。
end bin2bcd。
architecture fun of bin2bcd is
begin
process (din) is
          begin
case din is
            when"00000000"=>bcd<="000000000000"。
            when"00000001"=>bcd<="000000000001"。
            when"00000010"=>bcd<="000000000010"。
            when"00000011"=>bcd<="000000000011"。
            when"00000100"=>bcd<="000000000100"。
            when"00000101"=>bcd<="000000000101"。
            when"00000110"=>bcd<="000000000110"。
            when"00000111"=>bcd<="000000000111"。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。