杜老师:
您好,在拜读您的书的同时,发现在讲解极性环的章节,所用的FPGA例程中,程序按照8M的时钟进行设计,仿真的testbench却是用的50M的时钟,而NCO此时的频率为12.5M,但同样把载波2M的DQPSK信号解调了输来,环路滤波的输出也比较平滑,我改用书中要求的8M时钟,去生成2M的NCO输出,同样解调出了原始信号,但是环路滤波的的输出波形,出现了周期性的小鼓包。
问题一:12.5M的NCO是如何解出来2M载波的输入信号的,且环路滤波的输出平滑?
问题二:2M的NCO同样解调出来了信号,但是NCO输出波形出现了周期性小鼓包,为什么锁定了不是平滑的直线?
希望杜老师在百忙之中能有余帮忙解答一下疑问,感激不尽,先谢谢您了!
A:
FPGA程序设计时采用了一个系统时钟的同步设计。或者说系统有一个主时钟,其它时钟都是由这个时钟分频或倍频产生的。
程序中按8M设计,NCO为2M的载波。在仿真时,如果输入为50M的时钟,则NCO自动生成12.5M了。
FPGA处理的仅是一串数字,因此,如果FPGA程序设计中使用一个主时钟,仿真时,只要给出时钟信号,内部电路就会按数据的输入顺利依次处理。对于行为仿真来讲,仿真时的TESTBENCH无论是8M还是50M,输出的数据波形应该完全一致。
程序中的数据速率与系统时钟如果有一定的倍数关系,仿真时只要与按照这个关系设定数据速率就应该得到完全一致的波形。
祝愉快!
杜勇