打印

DSP硬件实现的优化(一)—FPGA中复数乘法器的优化 [

[复制链接]
901|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tianli1980|  楼主 | 2014-9-14 21:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在数字信号处理中,特别是在通信信号处理的应用中,经常会遇到复数乘法器。有些朋友可能会感到奇怪,信号都是实信号,哪来的复数呢?其实在通信信号中,基带信号会被分为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来实现乘法器,那么这种架构未必节省资源。

相关帖子

沙发
zhangmangui| | 2014-9-14 22:24 | 只看该作者
不错  支持一下

使用特权

评论回复
板凳
小木欧尼| | 2014-9-14 23:31 | 只看该作者
lz威武啊

使用特权

评论回复
地板
long009| | 2014-11-30 13:56 | 只看该作者
:handshake

使用特权

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

本版积分规则

482

主题

2214

帖子

11

粉丝