数字信号处理中的基本运算——加法运算

1. 一位全加器

数字信号处理中的基本运算——加法运算_第1张图片

 数字信号处理中的基本运算——加法运算_第2张图片

2. 二进制加法原理 

两个N位二进制补码相加,为防止溢出时导致计算结果错误,可将这两个加数先进行符号位扩展,变为N+1位二进制数,然后相加,结果亦取N+1位,可保证运算结果正确。

数字信号处理中的基本运算——加法运算_第3张图片

数字信号处理中的基本运算——加法运算_第4张图片 

数字信号处理中的基本运算——加法运算_第5张图片 根据多位加法器原理可知,对于两个N bit二进制补码数相加,可利用N个一位全加器搭建而成。

数字信号处理中的基本运算——加法运算_第6张图片 当control为0时,执行A+B;当control为1时,执行A-B。

采用HDL描述多位加法器或多位减法器时,并不需要先构造一个全加器,再按照上述电路图搭建,而是符号位扩展后直接用“+”或“-”即可。

通常情况下,用Vivado综合,加法器会用查找表、进位链等资源实现,但可通过设置综合属性USE_DSP48使得加法器用DSP48实现。

数字信号处理中的基本运算——加法运算_第7张图片

reg sout <= (!op)? (ain+bin):(ain-bin);

 3. 复数加法

在某些场合需要执行复数加法运算。复数加法的原理很简单,实部和实部相加得到和的实部;虚部和虚部相加得到和的虚部。

数字信号处理中的基本运算——加法运算_第8张图片

(a)采用了两个加法器,并行执行实部和虚部的加法

(b)采用一个加法器,通过分时复用,分别求和。显然,前者在速度上有优势,后者在资源上有优势。

4. 加法树和加法链

在很多应用场合都会涉及多个数相加求和。

s = a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9

数字信号处理中的基本运算——加法运算_第9张图片

 左图是一个三级加法树,每级加法器的位宽依次增加,防止溢出导致计算错误。全流水,从输入到输出需要三个时钟周期。显然将此结构推广,如果要求N个数的和,则需要ceil(log2(N))级加法树。

右图是加法链结构,为了正确相加,从输入到输出需要7个时钟周期(Latency)。相较于加法树,此结构时序稍显复杂,但结构中每个加法器的等级是一致的。

你可能感兴趣的:(ZYNQ,数字信号处理,信号处理,fpga开发)