我们组今年电赛想用安路FPGA做信号源,题目要求输出正弦波、方波、三角波,频率能到10M以上。现在纠结DDS波形存储器用ROM查表还是CORDIC实时计算,查表简单但波形存储占BRAM,CORDIC省资源但写起来怕时序跑不过。有没有用国产FPGA做过类似题目的同学?你们最后用的哪种方案?另外评委会不会追问相位累加器的位宽和SFDR指标?求有经验的大佬指点一下备赛重点。
2026年了,电赛用国产FPGA做信号源,DDS直接查表还是用CORDIC算法?哪个更容易拿奖?
4 个回答

直接查表吧,BRAM做10M正弦波绰绰有余,CORDIC这题用不上还容易给自己挖坑。评委真要问SFDR,你查表还能说清楚量化误差,CORDIC答不好反而露怯。相位累加器位宽往大了做,32位起步,滤波电路比算法重要多了。

先别急着选算法,把题目要求拆开看。10M以上输出,安路FPGA的BRAM容量对正弦、方波、三角波三种波形根本不构成压力,一张表存1024点,每点12位,总共才12Kbit,哪怕你存四张表也才50Kbit,完全够用。CORDIC省的那点资源在这类题目里没有意义,反而要花大量时间调流水线时序,万一在赛场上跑不到100MHz,你连改的余地都没有。查表方案的核心是相位累加器,位宽建议32位,这样频率分辨率能到0.01Hz级别,评委问起来你也能从容应对。输出端记得加LC低通滤波,用示波器看波形毛刺,这是拿分关键。评委大概率会问SFDR,你就答量化位数决定本底噪声,查表法加抖动可以改善杂散,这些提前背熟。另外提醒一句,安路的IP核和Xilinx不一样,ROM初始化文件格式要提前试通,别到比赛当天才发现加载不了。个人感觉查表拿奖概率高,CORDIC适合那些题目要求调相或调频连续变化的场景,你们这个固定波形真用不上。你们现在手头有安路的开发板吗?建议先跑一遍ROM查表加滤波的完整流程,把时序余量测出来。

查表。别听网上吹CORDIC,电赛信号源题目的核心是稳定输出和指标好看,不是省资源。相位累加器做32位,ROM存1024点正弦波,输出加二阶低通滤波,这套组合在10M频率下完全够用,而且调试时间短,把省下的时间拿去写报告和测指标。CORDIC的连续相位优势在这题里体现不出来,你输出的是固定波形,不是调制信号。评委问位宽就答精度和频率分辨率的关系,问SFDR就答量化噪声和滤波器设计,这些都能在备赛时背熟。唯一要注意的是安路FPGA的BRAM配置方式,提前看手册,别在初始化文件上翻车。你们现在备赛时间够吗?如果还有两三周,建议把查表方案跑通后再考虑要不要加CORDIC做加分项。

说实话,这题用CORDIC属于自找麻烦。安路FPGA的BRAM容量足够存三张波形表,正弦、方波、三角波各1024点,每点16位,总共才48Kbit,资源占用不到5%。CORDIC流水线做到10M输出,内部时钟得跑到100M以上,安路的时序收敛没你想的那么轻松,赛场上万一跑不满频,你连退路都没有。查表方案唯一要注意的是相位累加器位宽,建议直接上32位,这样频率控制字精度高,输出频率误差小,评委问起来你也有话说。SFDR方面,12位量化加抖动处理,实测能到60dBc以上,这个指标在电赛足够拿分。备赛重点放在输出滤波电路上,用LC低通把时钟噪声滤干净,示波器看波形会好看很多。另外ROM初始化文件用mif格式,安路的软件支持没问题,但记得提前验证一下。你们要是有余力,可以在查表基础上加个调相功能,用相位累加器输出做偏移,这样评委问起来你还能展示扩展能力。
发表回答
登录后可在本页底部提交回答