用VHDL设计快速BCD码加法器

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用VHDL 设计快速BCD 码加法器

Ξ

The D esign of Rap id Adder Usi ng VHDL

南京邮电学院 (南京210003) 张生平 薛 梅

【摘 要】 介绍了一种多位BCD 码快速加法器的设计方法,并给出了3位BCD 码加法器的V HDL 源程序和在Foundati on Series 3.1i 环境中的模拟结果。

关键词:VHDL ,BCD ,程序【Abstract 】 T h is p ap er in troduces a w ay fo r design ing rap id adder ,and an exam p le of 32b it 2BCD 2adder is p rovided in V HDL ,and also the si m u lati on resu lt in Foundati on Series 3.1i is given .

Keywords :VHSI C Hardware D escr iption Language ,B i nary Coded D ec i m a l ,program

通常对BCD 操作数进行计算的方法是将BCD 输入变换成二进制数,按正数的二进制格式进行计

算,然后把二进制数计算结果变换回BCD 符号。例如加法运算,首先按二进制格式进行运算,然后进行修正。再用中规模集成电路设计多位BCD 数加法器,采用二进制加法器(如74283)构成BCD 加法器然后进行级连,或直接用BCD 加法器(如M C 14560)进行级连。这样构成的加法器,位数增加,速度显著降低。随着可编程逻辑器件的出现,可以将多位的BCD 加法器做到可编程器件内部,图

1

图1 BCD 数直接相加示意图

所示为3位BCD 加法器的设计方法示意图。其设计

思想如下:两个BCD 数A 和B 是12位(按二进制)的操作数,代表000-999之间的十进制数。首先将A 、B 按二进制数相加得和数E ,并通过加法生成了进位C 4、C 8、C 12。然后,利用每个4位数组上加6(0110)来调整加法结果E ,得到调整结果F ,并生成进位D 4、D 8、D 12,结合以上两次运算结果和进位,产生和数和进位位。和产生的基本思想为:两个BCD 数相加,同时计算出直接按二进制相加和需进行十进制调整的两种结果,然后按位在两种结果中选择其一作为和数。选择的依据为:在按二进制加和十进制调整时,只要其中之一出现进位或两者都出现进位,则和应取调整后的结果;若按二进制加和十进制调整均无进位,则和数应取按二进制加的结果。

以下给出3位BCD 码加法器的V HDL 源程序以及在Foundati on Series 3.1i 环境中的仿真结果(见图2)。

3位BCD 码加法器的V HDL 源程序如下:lib rary IEEE ;

u se IEEE .std logic 1164.all ;u se IEEE .std logic un signed .all ;en tity bcdadd 3is po rt (

a :in STD LO G I C V ECTO R (11

dow n to 0);

b :in STD LO G I C V ECTO R (11dow n to 0);

22・电子工程师

计算机应用 V ol .27N o .6 2001

Ξ收稿日期:2001—03—27

图2 3位BCD 加法器仿真结果

sum :ou t STD LO G I C V ECTO R (11dow n to 0);

c :ou t STD LO G I C );en

d bcdadd 3;

arch itectu re bcdadd 3 arch of bcdadd 3is begin

p rocess (a ,b )

variab le e 04:std logic vecto r (4dow n 2to 0);

variab le e 48:std logic vecto r (4dow n 2to 0);

variab le e 812:std logic vecto r (4dow n to 0);

variab le f 04:std logic vecto r (4dow n 2to 0);

variab le f 48:std logic vecto r (4dow n 2to 0);

variab le f 812:std logic vecto r (4dow n to 0);begin

e 04:=(’0’&a (3dow n to 0))+b (3dow n to 0);

e 48:=(’0’&a (7dow n to 4))+b (7dow n to

4)+e 04(4);

e 812:=(’0’&a (11dow n to 8))+b (11dow n to 8)+e 48(4);

f 04:=(’0’&e 04(3dow n to 0))+"0110"; f 48:=(’0’&e 48(3dow n to 0))+"0110"+f 04(4);

f 812:=(’0’&e 812(3dow n to 0))+"0110"+f 48(4);

if (e 812(4)=’1’o r f 812(4)=’1’)then sum (11dow n to 8)<=f 812(3dow n to 0);

else

sum (11dow n to 8)<=e 812(3dow n to 0)+f 48(4);

end if ;

if (e 48(4)=’1’o r f 48(4)=’1’)then

sum (7dow n to 4)<=f 48(3dow n to 0);

else

sum (7dow n to 4)<=e 48(3dow n to 0)+f 04(4);

end if ;

if (e 04(4)=’1’o r f 04(4)=’1’)then

sum (3dow n to 0)<=f 04(3dow n to 0);

else

sum (3dow n to 0)<=e 04(3dow n to 0);

end if ;

c <=e 812(4)o r f 812(4); en

d p rocess ;end bcdadd 3 arch ;

根据以上思路,很容易实现多位BCD 数相加。且运用上述设计方法,BCD 数位数增加更能体现出其优越性。将利用上述设计方法设计的BCD 码加法器做到FPGA 中,占用资源相对较少,且运算速度较快。

参 考 文 献

1 李琼瑞.国外最新应用电路设计精选.北京:电子工业出

版社,1998年9月

2 边计年.用V HDL 设计电子线路.北京:清华大学出版

社,2001年9月

3 侯伯亨,顾新.V HDL 硬件描述语言数字逻辑电路设计.

西安:西安电子科技大学出版社,1999年9月

4 张豫滇,谢劲草.电子电路设计与实验技术.南京:南京邮

电学院,2001年3月 ■

《电子工程师》愿做广大电子工程师们的知心朋友

32・张生平,等:用VHDL 设计快速BCD 码加法器

相关文档
最新文档