打印

DSP硬件FPGA中复数乘法器的优化

[复制链接]
644|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Flower1|  楼主 | 2018-12-7 10:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DSP硬件FPGA中复数乘法器的优化


      在数字信号处理中,特别是在通信信号处理的应用中,经常会遇到复数乘法器。有些朋友可能会感到奇怪,信号都是实信号,哪来的复数呢?其实在通信信号中,基带信号会被分为I,Q两路,然后用QPSK/DQPSK进行调制。接收端解调后又会得到两路信号。
       所以一般来说为了表示和运算方便,一般把I路信号当成实部,Q路信号当成虚部。打个比方,输入信号(I,Q两路)进行FFT变换为频率信号后(有实部和虚部)表示为a+b*i和另一个复数(cosx+sinx*i,表示为c+d*i)进行相乘,等效为时域上I,Q两路信号的移相。那么此时就用到了复数乘法器。粗浅的看上去,一个复数乘法器需要4个乘法器,3个加法器(减法其实就是补码加法):
(a+b*i)*(c+d*i) = (a*c - b*d) + (b*c + a*d)*i = x + y*i

但是该式子可以化简成:
其中x 可以等效为
a*c - b*d + (b*c - a*d) - (b*c - a*d)

于是化简为
a*c - b*c + a*d - b*d + (b*c - a*d) = (c+d)*(a-b) + (b*c - a*d) = x


由于x的计算中已经包含了b*c和a*d的结果,因此只需算出x即可算出y。算出x只需要3个乘法器即可。如此节省了一个乘法器。
       如果使用了FPGA的DSP48作为乘法器的话,那么这种优化方法是非常有效的,因为省去了其中一个DSP48。当然,如果是使用Xilinx的IPCORE并且use DSP48来实现复数乘法器的话,Xilinx生成的乘法器也是差不多这种架构。但是如果是在ASIC设计或者是使用LUT来实现乘法器,那么这种架构未必节省资源。


相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

623

主题

887

帖子

6

粉丝