基于FPGA 的算术逻辑单元设计
宋泽明,陈文楷
(北京工业大学电子信息与控制工程学院 北京 100022)
摘 要:介绍了一种使用可编程逻辑器件FPGA 和V HDL 语言进行ALU 设计的方法。并在加法器模块的设计中使用了超前进位的方法。使得所设计的ALU 具有很好的稳定性和较高的速度。
关键词:FPGA V HDL ;算术逻辑单元;超前进位
中图分类号:T P 36811 文献标识码:B 文章编号:1004373X (2003)2009603
D esign of AL U Ba sed on FPGA
SON G Zem ing ,CH EN W enkai
(Co llege of E lectrical Info r m ati on and Contro l Engineering ,B eijing U niversity of Techno l ogy ,B eijing ,100022,Ch ina )
Abstract :T h is paper in troduces a mo thod of design ing the ALU based on the p rogramm ab le logic device FPGA and V HDL lan 2guage 1A nd the mo thod of carry lookahead is u sed to design the adder modu le 1T hen ,the ALU system have better stab ility and bet 2ter speed 1
Keywords :FPGA ;V HDL ;ALU ;carry lookahead
收稿日期:20030617
1 引 言
随着可编程逻辑器件的发展,FPGA 的应用已经越来越广泛,且用可编程逻辑器件代替传统的普通集成电路已成为一种发展的趋势。可编程逻辑器件FP 2GA 以其高集成度、高速度、开发周期短、稳定性好而
受到了人们的青睐,并得到了广泛的应用。由于算术逻辑单元(ALU )在运算中对系统性能要求很高,而采用中小规模的集成电路设计的系统既庞大又存在稳定性的问题。因此,用可编程逻辑器件FPGA 来实现算术逻辑单元是一个很好的选择。而硬件描述语言(HDL )是使用可编程逻辑器件的不可缺少的工具,所以本文选用V HDL 语言。并以设计4位算术逻辑单元为例,来实现算术逻辑单元的功能,又通过纯组合逻辑电路和超级进位方法的应用,使得在高速可编程逻辑器件FPGA 的基础上,实现了算术逻辑单元在速度上的进一步优化。2 电路设计
本算术逻辑运算单元可实现与、或、非、异或、逻辑左移、逻辑右移的逻辑运算和加、减、乘、除的算术运算等10种功能,也可以根据需要进行功能的增减,这也体现
出了用V HDL 语言设计硬件系统的灵活性。211 设计思想
该ALU 单元采用模块化设计。共划分了4个模块:控制与逻辑运算电路模块(Con tro l )、加减法电路模块(A ddsub )、乘法电路模块(M u l )和除法电路模块(div )。总体构成如图1所示。
ALU 模块图如图2所示。图中A ,B 为2个4位
的输入;Comm and 为功能选择输入;C I N 为加减法的进位和借位输入;COU T 为加减法的进位和借位的输出;R esu lta 和R esu ltb 为2个4位的输出,乘法时R e 2su ltb 存放积的高4位,R esu lta 存放积的低4位,除法时R esu lta 存放商,R esu ltb 存放余数。212 各模块分析
(1)控制模块(Con tro l ) 该模块对系统的工作进行总体控制。根据对Comm and 输入的信号分析来决定ALU 执行的功能,并进行加减法模块、乘法模块、除法模块的选择和输出的控制。在程序中使用3个CA SE 语句来实现。第1个CA SE 语句控制逻辑运算的实现,第2个CA SE 语句控制加减法模块、乘法模块、除法模块的选择,第3个CA SE 语句控制输出的选择。
(2)加减法模块(A ddsub ) 本设计中减法运算通过加补码的方式由加法器实现,这样可以简化系统的结构。所以该模块就是一个加法器的设计。此外,超
6
9宋泽明等:基于FPGA 的算术逻辑单元设计
图1 总体构成图
前进位(有关超前进位的内容可参阅文献[1]的应用,使得加法器速度受进位限制的问题得到解决
。
图2 ALU 模块
源程序如下:
lib rary ieee ;
u se ieee 1std _logic _11641all ;
en tity addsub is po rt (
opa :in std _logic _vecto r (3dow n to 0);
opb
:in std _logic _vecto r (3dow n to 0);c _i
:in std _logic ;addsub _i :in std _logic ;
resu lt :ou t std _logic _vecto r (3dow n to 0);
c _o
:ou t std _logic );
end addsub ;
arch itectu re rtl of addsub is begin
p rocess (opa ,opb ,c _i ,addsub _i )
variab le s _c :std _logic _vecto r (3dow n to 0); variab le p :std _logic _vecto r (4dow n to 1); variab le g :std _logic _vecto r (4dow n to 1); variab le c :std _logic _vecto r (4dow n to 0); begin
if addsub _i =′1′then --adder p :=opa xo r opb ;
g :=opa and opb ; c (0):=c _i ;
fo r i in 1to 4loop
c (i ):=g (i )o r (p (i )an
d c (i -1)); end loop ;
c _o <=c (4);
s _c :=p xo r c (3dow n to 0);
else
--sub tracto r p :=opa xo r (no t opb ); g :=opa and (no t opb ); c (0):=no t c _i ; fo r i in 1to 4loop
c (i ):=g (i )o r (p (i )an
d c (i -1)); end loop ;
c _o <=no t c (4);
s _c :=p xo r c (3dow n to 0);end if ;
resu lt <=s _c ;end p rocess ;end rtl ;
(3)乘法模块和除法模块(M u l ,D iv ) 乘法、除法
模块也采用了纯组合逻辑电路的设计。比时序逻辑构成的乘除法器在速度上具有优势。编程原理采用通过逐位相加减的方法来实现。乘法模块源程序如下:
lib rary ieee ;
u se ieee 1std _logic _11641all ;u se ieee 1std _logic _un signed 1all ;en tity m u l is po rt (
a :in std _logic _vecto r (3dow n to 0);
b :in std _logi
c _vecto r (3dow n to 0);
7
9《现代电子技术》2003年第20期总第163期信息与安全
q:ou t std_logic_vecto r(7dow n to0)
);
end m u l;
arch itectu re rtl of m u l is
begin
p rocess(a,b)
variab le dou t:std_logic_vecto r(4dow n to0);
variab le d:std_logic_vecto r(4dow n to0);
variab le c:std_logic_vecto r(8dow n to0);
begin
c:="000000000";
dou t:=′0′&a;
m u lti p ly:fo r i in0to3loop
if b(i)=′1′then
d:=dou t+c(8dow n to4);
else
d:=c(8dow n to4);
end if;
c(2dow n to0):=c(3dow n to1);
c(8dow n to3):=′0′&d;
end loop;
q<=c(7dow n to0);
end p rocess;
end rtl;
213 系统仿真
最后采用V HDL语言中的例化语句对上述各模块进行整合,并对其进行仿真,得到了预期的效果。实现了ALU的各项功能。仿真图如图3所示
。
图3 仿真结果
3 结 语
随着EDA技术的发展,可编程逻辑器件FPGA 和V HDL语言在硬件电路设计中,越来越显示出其优越性,本设计即是一个很好的验证。通过实际的应用和日常的实验中的使用,该ALU系统体现出了良好的稳定性,在速度上也能很好的满足系统的要求。
参 考 文 献
[1] 康华光1电子技术基础数学部分[M]1北京:高
等教育出版社,19941
[2] 潘松,王国栋1V HDL实用教程[M]1成都:电
子科技大学出版社,20021
[3] 卢毅,赖杰1V HDL与数字电路设计[M]1北
京:科学出版社,20021
作者简介 宋泽明 男,1976年出生,在读硕士。主要研究方向为智能控制。
陈文楷 男,1946年出生,教授。主要从事电工电子技术教学工作。(上接第90页)
外界交互时,所发送或接受信息的格式转换和语义分析,保证交互的一致性。
(3)外层封装,主要完成交互接口的I DL描述。
(4)已完成的封装单位再通过I DL文件编译、联编或对象注册,达到集成的目的。
5 结 语
分布式数据库领域,在还没有一个完善统一的标准之前,出现很多千差万别的集成产品,集成系统不仅要解决数据库本身异构带来的问题,还要处理运行环境方面的分布异构,使得集成系统实现起来相当复杂。但随着面向对象技术的发展,以及各种功能强大的集成规范的形成,未来的系统集成应该着眼于建立基于标准规范的集成。基于CO RBA的集成系统既可以与COM互操作,又可以与EJB结合,大大提高了现有系统的重用率。
参 考 文 献
[1] 邵佩英1分布式数据库系统及其应用[M]1北
京:科学出版社,20001
[2] Q u say M ahm oud H1Java分布式程序设计
[M]1欧阳光,安锦译1北京:国防工业出版社,
20021
[3] 陈松,李亚伟1深入En terp rise JavaB ean s编程
[M]1北京:中国铁道出版社,20021
[4] 汪芸1CO RBA技术与其应用[M]1南京:东南
大学出版社,19991
89
宋泽明等:基于FPGA的算术逻辑单元设计