单片机初学者
分享一下我们的‘偷懒’但有效的思路。我们当时FPGA资源很紧张(用的是小容量的Artix-7),所以追求最大程度的复用。我们没有做动态重配置那么复杂,而是做了一个‘超级’解调内核。这个内核以I/Q数据流和一组配置参数(来自MicroBlaze)为输入。内部其实是一个大的状态机,但数据通路是固定的,包含:一个可重配置的环路滤波器(用于锁相或锁频)、一个查找表(存储不同调制方式的判决边界或星座图)、以及一个可旁路的坐标旋转(CORDIC)模块。对于FSK,我们把CORDIC配置成频率鉴别器模式;对于PSK,配置成相位误差检测模式;对于QAM,则用查找表直接做判决。匹配滤波器是公共的,系数可重载。听起来有点‘四不像’,但写好了参数化代码,用宏定义来区分不同调制方式下的硬件结构,综合工具会优化掉不用的部分。好处是代码维护一份,切换调制方式就是改一下控制寄存器的值。要注意的是,测试要充分,确保每种模式下的时序都能满足。
