您可以添加到网摘 让更多人关注此文章:
0 引 言
FFT(快速傅里叶变换)广泛应用于现代数字信号处理的各个领域,如雷达信号处理、卫星通信和多媒体信号处理等。乘法器是。FFT系统中核心单元蝶形运算的重要组成部分,它的性能在很大程度上决定了FFT系统的性能。
本文针对高速高吞吐率FFT系统设计应用,采用IEEE 754标准单精度浮点格式数据,进行了浮点乘法器的芯片设计。在其核心模块24位定点乘法器设计时采用了两种不同的结构进行比较选择,以期达到最佳性能。设计用TSMC 0.18 μm CMOS工艺库实现,系统时钟频率可达250 MHz。
1 IEEE 754单精度浮点格式介绍
IEEE为二进制浮点数的运算开发了一套标准,基本格式宽度为单精度32位,双精度64位。本次设计中选用32位的单精度浮点格式。如图1所示。
32位数据被划分为3个部分:
a)第0位到第22位为数据的尾数部分;
b)第23位到第30位为数据的指数部分;
c)第31位(即最高位)为符号位。
这些部分组合后表达的浮点数据V符合以下关系式:
式中:(一1)s项表示当符号位S为0时数据为正,S为1时数据为负;变量E是一个介于0到255之间的数,由8位指数部分表示,将其减去127后可以使指数项的变化范围为2-127~2+128;换句话说,8位指数部分存储的是偏移后的指数,偏移量为127;M为尾数部分,它和隐含的首位“1”一起组成了浮点数据的尾数部分。
在IEEE 754标准中0的处理比较特殊。32位数据表示“0”时,第1位符号位可以为“1”或“0”,但其余3l位必须全部为0。
2 浮点乘法器系统结构
浮点乘法器系统的结构见图2。
其中预处理单元完成以下操作:
a)判断输入的2个数据是否为0,若有1个为0则最终乘法结果为0,若均不为0可执行后两步操作;
b)将2个输入数据的符号位异或得到最终结果符号,送入符号位寄存器;
c)将2个输入数据的低23位(尾数部分)首位补“1”后送入24位定点乘法器;
d)将2个输人数据的指数部分相加,得到的结果送人指数部分寄存器。
定点乘法器的输入是2个24位的定点数(尾数扩充隐含位“1”),输出的48位结果送入规格化电路。
由于系统设计应用了流水线技术,定点乘法器部分被划分为若干级流水线,所以预处理单元的其他输出数据均需要相同级数的寄存操作,以达到时序上的匹配。符号位寄存器、指数部分寄存器以及判0信号寄存器就是为此设计。
规格化电路是将最终结果再规格化为IEEE 754单精度浮点格式。送入定点乘法器的处理后尾数部分都是1.f,所以2个数相乘一定小于4,输出结果小数点前应有2 bit。若输出结果最高位为“1”,则将结果的最高2位和低23位去掉,剩下的23位作为最终结果的尾数部分。指数部分寄存器结果减去127再加1作为最终结果的指数部分。若最高位为“0”,则将乘积的最高位和低24位去掉,剩下的23 bit作为最终结果的尾数部分。指数部分寄存器输出结果减去127作为最终结果的指数部分。
3 定点乘法器设计
24位定点乘法器是浮点乘法器的核心,它的性能直接决定了整个浮点乘法器系统的性能。为了能达到更好的性能,本次设计采用了两种不同的结构:一种是经典的阵列式结构;另一种是本文结合改进Booth编码设计的树形结构。
3.1阵列式结构定点乘法器
图3是一个4×4阵列式定点乘法器的实例,图中每一个圆为一个1 bit全加器。依据此结构设计的24位定点乘法器可被划分为24级流水线。
阵列式结构的优点是结构规整,适合于流水线处理,但缺点是:流水线深度过深,导致初始时延过长;硬件资源消耗过大。
3.2基于改进Booth编码的树形结构定点乘法器
要降低硬件开销并减少流水线级数最直接有效的方法就是减少部分积个数。本文以减少部分积个数为出发点,利用改进的Booth算法设计了一种树形结构,处理步骤如下:
a)采用改进的Booth再编码方案,一次扫描3位,从而将24位定点乘法运算的部分积由24个压缩至13个;
b)3级压缩将13个部分积逐级压缩到2个;
c)将压缩后的2个部分积相加得到最终结果。
在该结构中,每次部分积压缩可以划分为一级流水线,以提高定点乘法器的处理效率。
本次设计中,在压缩部分积时没有采用常见的全加器,而是采用了一种新型的单元加法器4:2压缩器代替全加器作为求和网的元素。4:2压缩器是通过将具有相同权值的4个部分积减少至2个来提高并行度。
4:2压缩器的逻辑结构见图4,它由4:2压缩单元级联组成。对并行的全加器进行逻辑化简可以得到4:2压缩单元,其逻辑表达式如下:
4:2压缩器的结构规整紧凑,意味着更少的连线和更快的速度。它比其他压缩结构更易于VLSI实现。
利用这种树型结构设计的定点乘法器流水线深度比阵列式结构减小了19级,降低了硬件成本,减小了流水线的初始延时,提高了系统的性能。
4 FPGA验证
在系统硬件结构划分完成后,采用Verilog HDL语言对系统进行RTL(寄存器传输级)级描述,并在Quartus平台下进行了仿真验证。仿真结果如图5所示。将硬件仿真结果与MATLAB中运算结果进行了对比,证明硬件设计正确且运算精度比较高。
5 逻辑综合
本文使用Synopsys的Design Compiler结合TSMC0.18μm CMOS标准单元库进行逻辑综合;使用Mode-lsim进行综合后仿真。
5.1逻辑综合优化
时钟频率的设计目标为250 MHz,设定10%左右的裕量,因此约束时钟定为3.6 ns,具体约束条件如下:时钟周期为3.6 ns;时钟延迟为1.8 ns;时钟抖动和歪斜为0.36 ns;理想路径为clk,reset;不需改变的网络为clk,reset;驱动无限大的网络为clk,reset;面积约束为0;输入延时为0.8 ns;输出延时为0.8 ns。
综合完成后结果如图6所示。
5.2系统综合后仿真
将FPGA(现场可编程门阵列)仿真验证时选取的测试向量作为综合后仿真的测试输入,逻辑综合后的网表作为测试对象,并结合标准延时文件SDF进行综合后仿真,仿真波形如图7所示。
仿真波形图显示系统能稳定地工作在250 MHz时钟下,流水线设计初始时延为28 ns。输出数据与综合前FPGA仿真结果相比,完全一致。
6 版图设计
综合后仿真通过之后,将逻辑综合输出的网表一并送人后端设计工具Apollo进行自动布局布线。此版图不包含PAD的信息,为浮点乘法器的核单元,芯片版图如图8所示。
7 结束语
本文给出了一个可应用于FFT系统的32位浮点乘法器的芯片设计。浮点格式的采用使得本次设计的乘法器具有更高的运算精度以及更宽的运算范围。在本次没计中,采用两种不同结构设计了系统的核心单元定点乘法器,并通过对比选出了更高性能的结构。流水线技术的应用、合理的流水级数的划分使系统可以达到一个比较理想的时钟频率,以实现更高速的数据运算处理。采用Verilog HDL对系统进行RTL描述后,先后进行了FPGA仿真验证、逻辑综合优化以及自动布局布线,完成了浮点乘法器的芯片设计。
|