摘要:与传统加法器相比,数字串行加法器具有工作频率高、占用资源少、设计灵活等优点。介绍了数字串行加法器的原理,说明了该加法器在FPGA上的实现要点及其在匹配滤波器设计中的应用。
与传统DSP相比,定制DSP具有速度更高、设计灵活、易于更改等优点,常常应用于设计方案和关键算法的验证。
在DSP运算中,加法是最常用的。常见的加法器是位并行的(Bit-parallel),在一个时钟周期内完成加法运算。其速度较高,占用的资源较多。但是,在很多应用中,并不需要这么高的速度,而且希望减小资源消耗。这时可以采用数字串行(Digit-serial)加法器,利用多个时钟周期完成一个完整的加法运算,从而使占用的资源大幅度减少。为了使数字串行加法器具有更广泛的应用范围,设计的关键是要使电路达到尽可能高的工作频率,以取得高的数据吞吐量 (Throughput),从而满足系统其它部分的速度要求。
1 数字串行加法器
在数字串行加法器中,字长为W的操作数被分为P个位宽为N(N能被W整除,P=W/N)的数字,然后从低位开始相加,在P个时钟内完成加法操作。P个时钟周期称为一个采样周期(Sample Period)。
图1 N=2的数字串行加法器
N=2的数字串行加法器结构如图1所示。如果输入操作数的字长为8,那么串行加法器可以在4个时钟周期内完成加法运算。这个加法器只用了两个全加器的资源,比一般的8bit行波进位加法器小。
数字串行加法器的控制也比较简单,输入移位寄存器完成并行-串行转换功能,通过移位操作不断为加法器提供位宽为N的操作数;Control信号指示了新采样周期的开始,此时carry清零;输出移位寄存器完成串行-并行转换,输出计算结果。
对于特定的输入字长,通过选择不同的N,可以实现速度、面积不同的数字串行加法器。这样,设计者可以根据实际情况加以选择,提高了设计的灵活性。
2 高速数字串行加法器在FPGA上的实现
由于数字串行加法器要用P个时钟周期才能完成整个加法操作,因此其工作频率必须足够高。这样,在FPGA上实现时,如何使串行加法器具有尽量高的工作频率就将成为关键问题。下面以Xilinx公司的VirtexE系列FPGA为例,说明如何设计高速数字串行加法器。
图2 2bit全加器连接示意图
VirtexE的一个CLB(Configurable Logic Block)包含两个slice,图2为在一个slice上实现2bit全加器的连接示意图(不相关的逻辑已略去)。
数字串行加法器的结构是行波进位加法器,因此必须尽量减小进位逻辑上的延迟。VirtexE的slice中提供了专用的进位逻辑和布线,充分利用这些资源可以提高加法器的性能。
对VirtexE系列,数字串行加法器应选用奇数位宽,这是因为在VirtexE中一个slice包括两个LUT(查找表)、两个触发器和一些其它的组合逻辑,因此使用一个slice刚好可以实现一个1bit的全加器,使用两个slice可以实现一个3bit的全加器。如果要实现2bit的全加,则需要一个slice完成2bit的相加和保存,另外还需要一个slice中的一个寄存器用来存储进位,这样两个slice整体的利用率就降低很多。数据位宽为 2、4、6、8等偶数时都存在这样的问题。图3为N=3时加法器的布局布线示意图。由于专用的进位链布线资源仅存在于纵向的两个slice之间,所以在实现3bit加法器时,使用纵向相邻的两个slice。
图3 N=3时数字串行加法器布局布线图
加法器的关键路径在进位链上,其延时为:
式中,TCKO为DFF的CLK到XQ/YQ的延时,TBXCY为BX到COUT的延时,TCKCY为CIN到DFF的建立时间。这些延时的数值可以从手册[1]演获得。连线延时包括$Net_Carry_reg和$Net_Carry_out的延时。前者是进位链,延时为0;后者为普通连线,延时约为0.47ns。因此,总延时约为3.31ns,即工作频率约为 300MHz。
为了减小延时、提高工作频率,使用FPGA Editor对布局布线进行精确控制,并把加法器做成硬宏,有利于保证多次实例化时的性能。现将使用宏完成的设计和使用HDL语言完成的设计在工作频率上做一个比较。使用Virtex50E-6pq240器件、xst综合器时,用宏完成的3bit数字串行加法器的最高工作频率为300MHz,而用HDL完成的相同设计的最高工作频率只有186MHz。这是由于设计用HDL输入时,布局布线工具用了3个slice,第一个slice完成2bit全加器,第二个slice完成1bit全加器,第三个slice只用了内部的一个触发器来存储进位,第一、二个slice之间用进位链连接,延时为0,但是第二、三个 slice之间只能使用普通连线,而且第三个slice的输入CIN到触发器的建立时间较大,因而影响了串行加法器的运行速度。
3 数字串行加法器的应用
数字串行加法器可以代替传统加法器用在滤波器、乘法器、累加器等电路的设计中,能大大减小资源占用。下面以在CDMA/WCDMA系统中广泛应用的匹配滤波器为例说明数字串行加法器的应用。
匹配滤波器是一种无源相关技术,它可以快速实现相关器的功能。匹配滤波器的冲激响应为:
可知滤波输出R(t-T)是输入信号的自相关函数。
在CDMA、WCDMA等系统中,匹配滤波使用本地码系列来匹配输入到接收机的采样数据。在滤波器中,本地码序列与接收数据进行相乘、求和操作,得到相关值,相关值越大说明相关程度越高。其工作过程如图4所示。匹配滤波器可以使用移位寄存器和加法器来实现,结构如图5所示,其中,滤波器的系数因子h(n) 为本地码序列,输入x(n)为接收数据,数据每移位一次,滤波器计算一次输出结果。当移动到两个序列相位对齐时,就产生一个相关峰值输出。
系统对匹配滤波的设计要求是:匹配长度为256,输入四路数据,每一路经过7bit量化、速率为7.68MHz,即滤波器的处理速度为4×7.68=30.72MHz。对于这样一个匹配滤波器,有很多种实现方法,例如在高速率下可以通过旋转数据/旋转本地码序列或者通过动态、静态数据互换来简化设计[2]。这些方法都用到一个比较大型的加法树,如果用一般加法器实现,将占用大量的资源,因此有必要加以改进。
设计中用到的加法树有256个7bit输入,计算结果为15bit。采用一般加法器实现的结构如图6(a)所示,在VirtexE中约占1100个 slice,资源消耗过大。为了减小资源消耗、提高设计密度,使用上述3bit数字串行加法器对加法树进行改进,改进后的结构如图6(b)所示。由于减小了加法器的运算宽度,大大降低了使用的逻辑资源,整个加法树大约只用512个slice。
使用数字串行加法树完成加法运算需要的时钟周期与加法器的位宽有关,增加加法器的位宽可以减小运算需要的时钟周期、提高滤波器的数据吞吐量,但是也增加了硬件资源的消耗。所以在处理能力满足的条件下,应该选择比较小的位宽。表1列出了用不同位宽的数字串行加法器实现的加法树的工作频率和占用资源,选用器件为XCV200E-6BG352,综合工具为XST。
对于本设计,如果使用1bit的数字串行加法器,数据经过加法树之后从7bit扩展成15bit,所以数据完全输出需要15个时钟周期。根据这些要求,为了使得滤波器达到30.72MHz的处理速度,1bit的串行加法器必须工作在15×30.72=460.8MHz。如果使用3bit串行加法器,数据完全输出需要15/3个时钟周期,即加法器的工作频率应为5×30.72=153.6MHz。从表1可见,3bit的数字串行加法树可以满足设计要求,而资源占用是一般加法树的50%