用VHDL设计快速BCD码加法器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 码加法器