1. 累加原理
s = a0 + a1 + a2 + a3 + ... + a(L-1)
构成一个累加结果的输入数据为一帧数据,一帧数据所包含的数据个数为帧长度。
累加器的工作原理是:每帧数据周期性地流动,新的数据不断进入累加器与反馈支路相加,实现累加,由捕获寄存器接收捕获信号,输出最终结果。
为保证累加结果的正确,必须使得中间运算结果有足够的位宽。假定输入数据位宽为B,那么最终结果的位宽应为
需要将输入数据以及中间运算结果进行符号位扩展,使位宽足够。
2. 顺序累加器
数据流按帧顺序进入累加器,即第一帧数据进入求和,然后第二帧数据进入求和,依次类推。
顺序累加器设计的关键是使数据流与各控制信号(bypass和capture)对应起来,实现正确累加。
bypass和capture两者周期一致且取决于数据帧长度,默认情况下,Vivado会把累加器采用查找表等逻辑资源实现,同样地也可通过综合属性USE_DSP48的设置将累加器用DSP48实现。
3. 滑动累加器
滑动累加器是指数据流按帧交错顺序进入,此时,在计算每帧数据和时就要求对反馈支路数据进行滑动以实现正确累加。