芯片测试初学者
我们去年电赛做过类似的,当时也卡在 BRAM 上。分享几点经验:
一是尽量用分布式 RAM(LUTRAM)替代小容量的缓存,比如短 FIFO 或寄存器组。虽然分布式 RAM 性能不如 BRAM,但能省下宝贵的 BRAM 资源给大块数据用。在 Vivado 里可以设置存储器的实现方式。
二是外挂 SRAM 确实是个好选择,尤其像 IS61LV25616 这种异步 SRAM,接口就地址线、数据线和控制线,自己写个状态机就能控制,比 SDRAM 简单多了。时序上主要注意读写周期和建立保持时间,用 FPGA 的时钟去同步问题不大。我们当时用 Verilog 写了个简单的控制器,调试了两天就稳定了。
三是实时处理时,可以考虑降采样或分段 FFT。比如 ADC 采样率 100Msps,但信号带宽只有 10MHz,那就先做数字下变频和滤波,再降采样,数据量立马减少。做 FFT 时,不用一次算 8192 点,可以拆成 1024 点分段处理,再拼接频谱,虽然理论上有频谱泄露,但很多场合够用了。
最后提醒,如果外扩存储器,PCB 布局布线要小心,尤其是高速信号。建议用现成的开发板(比如 Nexys Video),上面自带 SDRAM,省事很多。
