基于FPGA的8位移位相加型硬件乘法器的设计
2014-04-29张建妮
张建妮
摘要:乘法器是数字信号处理中非常重要的模块。本文首先介绍了硬件乘法器的原理,在此基础上提出了硬件乘法器的设计方法,最后再利用EDA技术,在FPGA开发平台上,通过VHDL编程和图形输入对其进行了实现,具有实用性强、性价比高、可操作性强等优点。
关键词:硬件乘法器; 加法器; VHDL
中图分类号:TP2 文献标识码:A文章编号:2095-2163(2014)04-0087-04
Abstract:Multiplier is very important in digital signal processing module. In this paper, the principle of the hardware multiplier is introduced at first. Based on it, a design method is put forward.Finally , using EDA technology,the hardware -multiplier is implemented through VHDL programming combining with the input mode of schematic diagram on the FPGA development platform. The design has strong practicability ,high cost-effective, strong operability, etc.
Key words:Hardware-Multiplier; Adder; VHDL
0引言
在数字信号处理中,经常会遇到卷积、数字滤波、FFT等运算,而在这些运算中则存在大量类似ΣA(k)B(n-k)的算法过程。因此,乘法器是数字信号处理中必不可少的一个模块。目前常见的乘法器有纯组合逻辑乘法器和基于可编程逻辑器件(PLD)外接ROM九九表的乘法器。纯组合逻辑构成的乘法器中的最小单元MU主要由与门和全加器构成,工作速度比较快,但当乘法器位数比较多时,硬件资源耗费也较大,同时会产生传输延时和进位延时。而基于PLD外接ROM九九表的乘法器却无法构成单片系统, 实用性编弱。为此,本文将介绍一种基于FPGA8位移位相加型硬件乘法器的设计方法,藉此乘法器的实用性获得了较大提升。同时利用FPGA构成实验系统后,可以用ASIC大型集成芯片来搭建完成,并且具有性价比高、操作性强等众多优点[1]。
1乘法器的实现原理
2硬件乘法器的电路结构
从理论上讲,两个二进制N位操作数相乘,乘积的总宽度为2N,因此需要一个宽度为2N的移位寄存器和加法器。但在实际执行过程中,一是每个部分积的宽度和移位相加的有效宽度都为N位,从资源的利用率角度考虑,仅需N位宽度的加法器即可;二是按照先移位再相加的原理,两个N位操作数则需要2N个时钟周期才能完成整个运算,在此考虑将移位和相加两个运算步骤合并,从速度上就可在N个时钟周期内完成[3]。
移位寄存器则具备移位作用,当加载信号有效时乘数将加载于8位右位寄存器,随着时钟上升沿的到来,乘数即由低位开始逐位移出。
乘法器功能类似一个特殊的与门。有两个输入端口,一个端口用于输入8位并行操作数(被乘数),另一个端口在时钟信号控制下输入由移位寄存逐步移出的串行操作数,并将这两个操作数进行与运算。
加法器用于将本次时钟脉冲控制下得到的8位部分积与锁存于锁存器高8位的前一个时钟脉冲下得到的部分和相加。
3硬件乘法器的设计与实现
在硬件乘法器具体实现过程中采用层次化的设计方法。首先,设计硬件乘法器中各组成电路元件,将其作为底层元件。底层元件的实现主要采用VHDL文本输入方式,并将其封装成元。然后在顶层实体中调用底层元件,顶层实体的设计主要采用图形输入方式,硬件原理图则如图1所示。
在本设计中,以时序逻辑方式实现的8位硬件乘法器的核心器件是8位加法器(ADDER8B)。对于8位加法器有两种实现方案:一种是8位直接宽位加法器,其速度较快,但硬件资源消耗大,对于工业化设计不是最佳实现。第二种方案是用两个4位加法器通过级联构成8位加法器,其实现原理简单,资源利用率高,并且进位速度快。本设计中采用方案二。在具体的实现过程中,首先利用参数化宏功能模块LMP_ADD_SUB实现4位加法器(ADDER4B)并生成相应的元件符号。其后在ADDER8B顶层原理图中调用ADDER4B元件符号并将其级联成8位加法器。即将ADDER8B的8位输入端口拆成[7:4]和[3:0]两个4位,低4位和高4位各为一个4位加法器,再将低4位的进位输出作为高4位的进位输入。
4结果分析
最后在FPGA开发当两个操作数分别为C6和FD时,经过8个时钟上升沿后,就可以得到最终的结果为C3AE。
综上,基于FPGA的移位累加乘法器易于实现且资源占用较少,其缺点是运算速度慢,8位乘法需要8个时钟周期才能得到结果,主要用于运算量较小、实时性要求较低的单片机和微处理器的乘法运算中。如何解决速度和资源利用率这对矛盾,以提高性价比,将是我们下一步研究的重点[2]。
参考文献:
[1]潘松,黄继业.EDA技术实用教程[M].北京:科学出版社,2006.
[2]伞锦辉,常青.基于FPGA的乘法器实现结构分析与仿真.微机处理,2004.06(3):3-6
[3]吴桂军,雷勇.基于时序电路的移位相加型8 位硬件乘法器设计.科技信息,2011.(31):81
[4]黄孜理,汪一鸣.基于乘法器的EDA设计优化及其验证. 微处理机,2008.06(3):8-10