高速数字串行加法器及其应用
发布时间:2008/5/26 0:00:00 访问次数:932
来源:电子技术应用 作者:钟信潮 薛小刚 王 诚
摘要:与传统加法器相比,数字串行加法器具有工作频率高、占用资源少、设计灵活等优点。介绍了数字串行加法器的原理,说明了该加法器在fpga上的实现要点及其在匹配滤波器设计中的应用。
关键词:加法器 位并行 数字串行 fpga 匹配滤波器与传统dsp相比,定制dsp具有速度更高、设计灵活、易于更改等优点,常常应用于设计方案和关键算法的验证。
在dsp运算中,加法是最常用的。常见的加法器是位并行的(bit-parallel),在一个时钟周期内完成加法运算。其速度较高,占用的资源较多。但是,在很多应用中,并不需要这么高的速度,而且希望减小资源消耗。这时可以采用数字串行(digit-serial)加法器,利用多个时钟周期完成一个完整的加法运算,从而使占用的资源大幅度减少。为了使数字串行加法器具有更广泛的应用范围,设计的关键是要使电路达到尽可能高的工作频率,以取得高的数据吞吐量(throughput),从而满足系统其它部分的速度要求。
1 数字串行加法器在数字串行加法器中,字长为w的操作数被分为p个位宽为n(n能被w整除,p=w/n)的数字,然后从低位开始相加,在p个时钟内完成加法操作。p个时钟周期称为一个采样周期(sample period)。
n=2的数字串行加法器结构如图1所示。如果输入操作数的字长为8,那么串行加法器可以在4个时钟周期内完成加法运算。这个加法器只用了两个全加器的资源,比一般的8bit行波进位加法器小。
数字串行加法器的控制也比较简单,输入移位寄存器完成并行-串行转换功能,通过移位操作不断为加法器提供位宽为n的操作数;control信号指示了新采样周期的开始,此时carry清零;输出移位寄存器完成串行-并行转换,输出计算结果。
对于特定的输入字长,通过选择不同的n,可以实现速度、面积不同的数字串行加法器。这样,设计者可以根据实际情况加以选择,提高了设计的灵活性。
2 高速数字串行加法器在fpga上的实现
由于数字串行加法器要用p个时钟周期才能完成整个加法操作,因此其工作频率必须足够高。这样,在fpga上实现时,如何使串行加法器具有尽量高的工作频率就将成为关键问题。下面以xilinx公司的virtexe系列fpga为例,说明如何设计高速数字串行加法器。
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。
加法器的关键路径在进位链上,其延时为:
tcko+t$net_carry_reg+tbxcy+t$net_carry_out+tckcy
=1.0+t$net_carry_reg+0.54+t$net_carry_out+1.3
=2.84+t$net_carry_reg+t$net_carry_out
式中,tcko为dff的clk到xq/yq的延时,tbxcy为bx到cout的延时,tckcy为cin到dff的建立时间。这些延时的数值可以从手册获得。连线延时包括$net_carry_reg和$net_carry_out的延时。前者是进位链,延时为0;后者为普通连线,延时约为0.47ns。因此,总延时约为3.31ns,即工作频率约为 300mhz。
为了减小延时、提高工
来源:电子技术应用 作者:钟信潮 薛小刚 王 诚
摘要:与传统加法器相比,数字串行加法器具有工作频率高、占用资源少、设计灵活等优点。介绍了数字串行加法器的原理,说明了该加法器在fpga上的实现要点及其在匹配滤波器设计中的应用。
关键词:加法器 位并行 数字串行 fpga 匹配滤波器与传统dsp相比,定制dsp具有速度更高、设计灵活、易于更改等优点,常常应用于设计方案和关键算法的验证。
在dsp运算中,加法是最常用的。常见的加法器是位并行的(bit-parallel),在一个时钟周期内完成加法运算。其速度较高,占用的资源较多。但是,在很多应用中,并不需要这么高的速度,而且希望减小资源消耗。这时可以采用数字串行(digit-serial)加法器,利用多个时钟周期完成一个完整的加法运算,从而使占用的资源大幅度减少。为了使数字串行加法器具有更广泛的应用范围,设计的关键是要使电路达到尽可能高的工作频率,以取得高的数据吞吐量(throughput),从而满足系统其它部分的速度要求。
1 数字串行加法器在数字串行加法器中,字长为w的操作数被分为p个位宽为n(n能被w整除,p=w/n)的数字,然后从低位开始相加,在p个时钟内完成加法操作。p个时钟周期称为一个采样周期(sample period)。
n=2的数字串行加法器结构如图1所示。如果输入操作数的字长为8,那么串行加法器可以在4个时钟周期内完成加法运算。这个加法器只用了两个全加器的资源,比一般的8bit行波进位加法器小。
数字串行加法器的控制也比较简单,输入移位寄存器完成并行-串行转换功能,通过移位操作不断为加法器提供位宽为n的操作数;control信号指示了新采样周期的开始,此时carry清零;输出移位寄存器完成串行-并行转换,输出计算结果。
对于特定的输入字长,通过选择不同的n,可以实现速度、面积不同的数字串行加法器。这样,设计者可以根据实际情况加以选择,提高了设计的灵活性。
2 高速数字串行加法器在fpga上的实现
由于数字串行加法器要用p个时钟周期才能完成整个加法操作,因此其工作频率必须足够高。这样,在fpga上实现时,如何使串行加法器具有尽量高的工作频率就将成为关键问题。下面以xilinx公司的virtexe系列fpga为例,说明如何设计高速数字串行加法器。
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。
加法器的关键路径在进位链上,其延时为:
tcko+t$net_carry_reg+tbxcy+t$net_carry_out+tckcy
=1.0+t$net_carry_reg+0.54+t$net_carry_out+1.3
=2.84+t$net_carry_reg+t$net_carry_out
式中,tcko为dff的clk到xq/yq的延时,tbxcy为bx到cout的延时,tckcy为cin到dff的建立时间。这些延时的数值可以从手册获得。连线延时包括$net_carry_reg和$net_carry_out的延时。前者是进位链,延时为0;后者为普通连线,延时约为0.47ns。因此,总延时约为3.31ns,即工作频率约为 300mhz。
为了减小延时、提高工