题目:DDS的对称性质——参考时钟是100M,则产生的90MHz与10MHz的正弦信号频率相同,相位相反
DDS的原理大家都知道,在FPGA中的可以调用IP核生成,ISE中DDS的IP核界面如下图所示:
现在的说明的问题是:若产考时钟为fs,那么由DDS生成的fo与fs-fo的两个正弦信号频率相同,均为fo和fs-fo中小于fs/2的一个,而相位相反,若产生余弦信号,则完全相同。
DDS的原理是这样的,有一个频率控制字M,位长为b(通常取为32位),参考时钟为fs,则产生的信号的频率fo=M*fs/2^b .在实现在其实是一个累加的过程,内部b位的累加器每次累加M得到一个相位,然后通过正余弦表去查该相位的正余弦值是多少,然后输出。
这里有一个问题,若参考时钟为100MHz,那么要产生10MHz和90MHz的信号,会怎么样呢?
其实DDS的原理可以在matlab中描述如下:
>> UP=2^32;
>> M10=10*UP/100;
>> M90=90*UP/100;
>> n=1:50;
>> plot(sin(2*pi*M10/UP*n));grid on;hold on;plot(sin(2*pi*M90/UP*n),'r')
由上图可见,10MHz和90MHz的正弦信号的相位正好相差pi,其实这个很容易理解,观察一下两个信号的相位即可:
10MHz的正弦信号的相位是:2*pi*M10/UP*n
90MHz的正弦信号的相位是:2*pi*M90/UP*n
将两者相加等:2*pi*M10/UP*n + 2*pi*M90/UP*n = 2*pi*(M10 + M90)/UP*n
又因为 M10=10*UP/100;M90=90*UP/100; 代入上式中得:
2*pi*(10*UP/100 + 90*UP/100)/UP*n=2*pi*n
即二者的相位和为2pi的整数倍,因此若一个信号的值为sin(x),则另一个信号的值必为sin(2*pi-x)=sin(-x)
由此易知,生成的余弦信号是相同的,因为cos(x)=cos(-x)