我们队报了今年电赛FPGA方向,板子选的是安路EG4S20,想做多路串口采集加SD卡存储。现在离比赛一个月,队员只会流水灯和串口回环。想请教有经验的人:这一个月应该先练哪个模块,每天怎么排时间,SD卡文件系统要不要自己写?还是直接找现成源码改?
2026年电赛FPGA赛道,队伍用安路EG4S20做「多路串口+SD卡存储的数据采集器」,赛前一个月该按什么顺序练模块才不临时抱佛脚?
3 个回答

先说结论:一个月时间别想着把每个模块都练到精通,按串口多路接收→SD卡SPI写入→整合联调这个顺序走,中间留出至少五天专门做合板调试。你们现在只会流水灯和回环,其实起点不算差,串口回环说明收发状态机已经摸过了,多路无非是把单路的状态机复制成多实例,再加一个轮询或仲裁逻辑把数据打上通道号送进FIFO。这一步建议花一周,重点是练跨时钟域和FIFO满时的丢弃策略,别等整合时才发现数据打架。
第二周攻SD卡。这里有个取舍要提前想清楚:FATFS本身是C写的,跑在软核上很自然,但安路EG4S20上你们如果用纯逻辑实现SPI写扇区,就别碰文件系统了,直接按扇区裸写,比赛时把数据按固定格式存,赛后用读卡器加脚本解析,反而更稳。要上FATFS一般得配软核,这会引入新的工具链风险,一个月内不划算,除非队里已经有人跑通过软核。用现成开源SPI初始化代码改是可以的,但一定要自己抓波形验证CMD0、CMD8、ACMD41这几步的时序,SD卡初始化对时钟和延时敏感,抄来的代码换个卡就挂是常事。
最后一周整合,重点练状态机和跨模块数据流:采集、缓存、写卡三段用FIFO解耦,想清楚写卡慢的时候数据往哪放、丢了怎么标记。每天建议上午攻新模块、下午调波形、晚上留一小时复盘记录问题。追问一句:你们板子上有没有跑软核的打算,还是准备全逻辑实现?这个直接决定SD卡那块要不要自己写文件系统。

先说我的判断:这一个月真正要练的不是「模块」,而是「数据从串口进、经过缓冲、再落到SD卡」这条链路能不能稳定跑通。所以顺序上我赞成先多路串口,但目的不是把串口调得多花哨,而是借它把FIFO、跨时钟域、通道仲裁这几个后面一定会用到的东西先摸熟。你们现在会单路回环,多路无非是多开几个接收状态机,加一个轮询把数据打上通道号塞进FIFO,重点盯FIFO快满时是丢包还是反压,这个策略现在不定,整合时一定打架。
第二段攻SD卡,这里有个容易踩的坑:别一上来就想着FATFS。纯逻辑写SPI扇区其实不复杂,初始化发CMD0、CMD8、CMD17/24那一套,难的是时序容错和上电重试。我的建议是先用固定扇区裸写,数据加个简单包头和校验,赛后拿读卡器配脚本解析,比赛现场反而少一个故障点。FATFS能上就上,但前提是队里已经有人把软核跑通过,否则一个月内引入新工具链风险太大,安路那套软核加SDK的坑不少。
时间上我会留出至少四五天专门合板联调,别把整合压到最后两天。另外提醒一句,先确认你们板子的SD卡座是SPI模式接线还是SD模式,这个直接决定你前期能不能少走弯路。你们队里现在有人碰过软核吗?

先给结论:这一个月的主线不是「模块清单」,而是「一条数据从串口进、经过缓冲、落到SD卡」的链路。你们只会流水灯和回环,说明状态机和时序概念有了,缺的是跨模块的数据流经验,所以练习顺序要围绕这条链路排,而不是按外设逐个攻。
第一段给多路串口,大概一周到十天。重点不在「多开几个接收状态机」,那部分是体力活。真正的难点是:多路数据同时来的时候往哪放、放满了怎么办。建议先做两路,用一个简单轮询把数据打上通道号塞进FIFO,然后故意制造一路高速持续发、另一路间歇发的场景,观察FIFO快满时你是丢包还是反压。这个策略现在不定死,整合阶段一定打架。跨时钟域如果串口采样时钟和系统时钟不同源,同步器该加就加,别省。
第二段攻SD卡,给一周半左右。这里有个取舍要先想清楚:文件系统要不要自己写。我的判断是不要从零写,但也不建议直接抓一份源码闭眼改。常见做法是纯逻辑实现SPI扇区读写,初始化那套命令走通后,按固定扇区裸写,数据自己加包头和校验,赛后拿读卡器配脚本解析。这条路故障点少,比赛现场不用赌文件系统。FATFS是C写的,一般要配软核才能跑,会引入新的工具链风险,一个月内不划算,除非队里已经有人把软核跑通过。如果确实需要电脑直接读文件,可以找现成轻量实现改,但要留出至少三天专门调它,别放在最后一周。
最后留五到七天做整合联调,这段时间不要排任何新模块。整合时最容易出问题的是复位时序和上电顺序:SD卡上电初始化需要时间,串口可能先来数据,你的缓冲得能扛住这段空窗。建议整合前就把「上电后多久开始收数据、SD卡没准备好时数据往哪去」写成一条明确规则。
每天怎么排,个人感觉不用太细,上午调模块、下午做仿真和记录、晚上复盘第二天要验证什么,比精确到小时的计划表更抗变化。另外仿真别跳过,跨时钟域和FIFO满这些场景在板子上复现很费时间,仿真里先跑通能省很多抓波形的时间。
你们现在SD卡部分是完全没碰过,还是有人跑过SPI读写单个扇区?这个起点不同,第二段的排法会差不少。
发表回答
登录后可在本页底部提交回答