48bits进位选择补码加法器的两种实现方法的性能对比

    本文使用进位选择的结构实现补码加法器,并且对比了使用内部逻辑实现和使用专用DSP单元实现时的性能差别。当然Xilinx FPGA中的DSP单元可以直接实现48位的运算,本文主要目的是验证进位选择结构加法器的实现和性能对比,这种结构可以运用到更大位宽的加法中。

    在大位宽的加法运算中,将宽度大的数据截取为多段,然后分段计算是常常采用的做法。该方法可以提高每段加法的运行速度,但是高段加法需要在低段加法完成之后才能运行。进位选择加法器的结构如下图,主要策略是面积换速度。低段加法的进位不是0就是1,所以可以同时分别计算出进位为0和1时的高段加法的结果。最后根据低段加法的进位,选择不同的高段加法结果,然后再拼接到一起。

    由于输入的运算数都是二进制补码,所以不需要额外的输入来区分加法和减法。但是在分段计算时需要注意以下方面。

    1. 高段加法运算为有符号运算,低段加法需要当作无符号加法进行处理。因为二进制补码加法在计算时,除了符号位需要处理外,运算过程就是简单的逐位累加、进位。所以在分段相加时,最高段当作有符号运算处理,低段按照无符号加法处理。

    2. 使用低段加法的进位位作为选择信号,将高段结果和低段结果拼接起来。为了提高速度,该拼接过程可以使用一级寄存器。

    这种架构的加法运算的速度更快。一般情况下,由于FPGA内部的DSP使用大量的专用路径和资源,使用DSP实现加法运算的速度更快,占用布线资源更少。当然,位宽较小的加法运算更适合使用通用逻辑来实现。这没有一个明确的标准,通常我会把14bits以上的加法用DSP实现。

    我使用3个加法单元实现了上述进位选择48bits二进制补码加法器,将工作时钟频率设置为400MHz,使用Xilinx的A7-2器件实现。使用OOC的方式进行布线,当使用通用逻辑实现时,其时序结果如下:最慢路径的建立时间裕量有0.315ns左右。

    使用OOC的方式进行布线,当使用专用DSP实现时,其时序结果如下:最慢路径的建立时间裕量有1.049ns左右。

    显然,使用DSP时工作速度更快,其时钟频率还有很大的提升空间。

    接着对比以下资源消耗情况。当使用通用逻辑实现时,其资源消耗如下。

    当使用DSP实现时,资源消耗如下。

    可以看到,使用DSP时,除了多用了3个DSP单元外,Slice中LUT、Registers的使用量大幅降低,逻辑消耗的LUT大幅降低。所以,在设计中,将部分运算使用DSP实现,可以有效降低通用逻辑消耗,减小布线压力。

    以下链接是我上传的两个工程的源码。

    https://download.csdn.net/download/yinyeyy/12522365

   

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
行波进位补码加法器是一种用于进行二进制补码加法的电路。它通过使用多个全加器和进位选择器来实现。下面是行波进位补码加法器的工作原理: 1. 输入:行波进位补码加法器有两个输入,即两个加数和一个进位输入。加数可以是正数、负数或零。进位输入表示前一位的进位。 2. 全加器:行波进位补码加法器使用多个全加器来执行每一位的加法运算。全加器有三个输入:两个加数位和前一位的进位。它有两个输出:和位和进位输出。 3. 行波进位:行波进位补码加法器中的全加器按位连接,每个全加器的进位输出连接到下一个全加器的进位输入。这样,进位会从低位传递到高位,形成行波进位。 4. 进位选择器:行波进位补码加法器还包括一个进位选择器,用于选择每一位的进位进位选择器根据前一位的进位和两个加数位的值来确定当前位的进位。如果前一位的进位为0,则选择第一个全加器的进位输出作为当前位的进位;如果前一位的进位为1,则选择第二个全加器的进位输出作为当前位的进位。 5. 输出:行波进位补码加法器的输出是每一位的和位和最高位的进位输出。和位表示两个加数位相加的结果,进位输出表示是否有进位产生。 通过使用多个全加器和进位选择器,行波进位补码加法器可以实现对两个二进制补码进行加法运算。它可以处理正数、负数和零,并且可以正确处理进位
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值