赞楼主的创新精神。
正弦信号合成是通信和信号处理领域最基础的话题之一,在诸如,信号源,数字本振,正交变换的基函数生成等方面均有广泛用途。而以上这些又都是通信、仪表、信号处理、雷达电子对抗等领域的基础。
用数字方法来合成正弦信号通常有以下2种方法。
1、波表合成法,即DDS方法,其中包括最基本的全波形查表,对称性波形查表,以及线性插值合成技术,这个方法里面的矛盾是,如果使用插值技术则会用到乘法器,会使得电路的主频下降,但是如果不使用插值技术,ROM表的尺寸会非常巨大,造成可观的功耗。关于DDS的原理和测量、评价方法,比较好的文档是 ADI公司的 A Technical Tutorial on Digital Signal Synthesis 网上有电子版下载。
2、另一种方法是CORDIC的方法,这种方法采用的是坐标旋转技术,这是早年的老式计算器用来计算三角函数和超越函数的办法,以及传统的C语言中math.h的方法,这个方法的优点是不用ROM,不用乘法器,仅使用加法减法和移位,如果计算速度要求不高,可以算的非常精准(代价是算的很慢),我小时候体验过用手持计算器计算正弦函数的漫长等待。这方面的比较经典的文章是,A survey of CORDIC algorithms for FPGA based computers 。是个开信号处理咨询公司的老外写的。
另外,在没有硬件浮点乘法器的CPU上,如果对计算速度有要求,最好还是把算法定点化,如果优化的好一点,甚至可以提升一个数量级的执行速度。
祝好