本文使用进位选择的结构实现补码加法器,并且对比了使用内部逻辑实现和使用专用DSP单元实现时的性能差别。当然Xilinx FPGA中的DSP单元可以直接实现48位的运算,本文主要目的是验证进位选择结构加法器的实现和性能对比,这种结构可以运用到更大位宽的加法中。
在大位宽的加法运算中,将宽度大的数据截取为多段,然后分段计算是常常采用的做法。该方法可以提高每段加法的运行速度,但是高段加法需要在低段加法完成之后才能运行。进位选择加法器的结构如下图,主要策略是面积换速度。低段加法的进位不是0就是1,所以可以同时分别计算出进位为0和1时的高段加法的结果。最后根据低段加法的进位,选择不同的高段加法结果,然后再拼接到一起。
由于输入的运算数都是二进制补码,所以不需要额外的输入来区分加法和减法。但是在分段计算时需要注意以下方面。
1. 高段加法运算为有符号运算,低段加法需要当作无符号加法进行处理。因为二进制补码加法在计算时,除了符号位需要处理外,运算过程就是简单的逐位累加、进位。所以在分段相加时,最高段当作有符号运算处理,低段按照无符号加法处理。
2. 使用低段加法的进位位作为选择信号,将高段结果和低段结果拼接起来。为了提高速度,该拼接过程可以使用一级寄存器。
这种架构的加法运算的速度更快。一般情况下,由于FPGA内部的DSP使用大量的专用路径和资源,使用DSP实现加法运算的速度更快,占用布线资源更少。当然,位宽较小的加法运算更适合使用通用逻辑来实现。这没有一个明确的标准,通常