每年电赛FPGA赛题一公布,很多队伍第一天就画了特别大的框图,结果四天三夜做不完。想问问有经验的人,拿到题目后第一天应该怎么做减法?哪些模块必须保留,哪些可以先用现成IP或者降指标?怎么判断哪些指标是评委真正会测的,哪些只是题面吓人?有没有一套可复用的第一天决策流程?
2026年电赛FPGA赛题公布后,队伍怎么在第一天就把系统框图砍到能落地的规模?
4 个回答

先说结论:第一天不是画图,是砍图。很多队伍第一天的错误不是想得少,而是想得太全,把四天三夜当四个月用。
我的做法是先别碰EDA,先把题面里的动词和数字圈出来。题面一般有两类信息:一类是功能名词,比如采集、显示、通信;另一类是硬指标,比如采样率、分辨率、延迟、误差范围。真正决定能不能交卷的是后者,前者只是包装。你要做的是把硬指标按「评委一定会测」和「题面吓人但大概率不测」分两堆。怎么分?看指标是否可自动测量、是否写进了评分表常见维度、是否和主功能强绑定。一般来说,采样率、输出精度、响应时间这类能上仪器测的,必须保;而「支持多种模式」「界面美观」「可扩展」这类描述,往往是加分项不是及格线。
分完之后开始砍链路。主链路只留三件事:输入怎么进、核心算法怎么算、结果怎么出。中间所有为了「更通用」而存在的抽象层、参数化配置、多模式切换,第一天全部砍掉。比如题目要求图像处理,那先保摄像头采集加一个最简单的处理加显示,别一上来就搞双缓冲、多分辨率自适应、上位机联调。
第二步是用现成IP换时间。FIR、FFT、CORDIC、DDR控制器、以太网MAC这些,能调IP就别自己写。自己写的价值在于你完全可控,但第一天你缺的不是可控,是时间。把自研留给真正体现你方案特色的那一小块,其余全部用厂商IP或往届验证过的模块。
第三步是降指标。降指标不是作弊,是分阶段交付。第一版先把功能跑通,哪怕采样率只有目标的一半、精度差一点,只要主链路通了,后面三天才有优化空间。最怕的是第一天就追求满指标,结果第三天还在调时序。
判断标准很简单:如果某个模块砍掉后,主功能还能演示,那它第一天就不该存在。框图不是越完整越好,是越接近能跑通越好。你们现在手上有往届的工程模板吗?有的话第一天直接拿它当骨架改,比从零画快得多。

我参加过两届,也带过学弟,个人感觉第一天最值钱的动作是「反向画图」。
别从题目要求正向推模块,而是从演示现场倒推。想象评委坐你对面,他手里有评分表,桌上摆着示波器和电源。他会在五分钟内看什么?大概率是:系统能不能上电、主功能能不能复现、关键指标能不能当场测出来。那你就只保留能支撑这三件事的模块。
具体操作上,我会让队伍先把题目拆成一张纸:左边写「必须现场演示的功能」,右边写「可以事后写进报告的指标」。左边的东西一个都不能少,右边的东西第一天先不管。然后拿往届工程或厂商例程当底座,把主链路搭起来,哪怕跑得丑。
降指标要有底线思维。比如要求100M采样,你先跑10M,但接口和时钟框架要按100M留,这样后面提速只是换参数不是重架构。这个区分很重要:功能可以降,架构不能乱。
至于哪些指标是吓人的,我的经验是,题面里带「自适应」「智能」「多目标」这类词的,第一版基本可以忽略,先把确定性的部分做扎实。你们题目里有没有那种一看就很虚的描述?可以贴出来一起判断。

先说一个反直觉的判断:第一天真正该做的不是减法,是「给每个模块标价」。
很多队伍砍框图砍不动,是因为没有统一的价签。你说这个通信模块要不要留,队友说留吧以后可能有用,于是留下;你说这个界面要不要做,队友说做了好看,于是留下。吵到最后谁也没错,只是没人算过账。四天三夜是固定预算,每留一个模块就要从别处扣时间,所以第一天的核心动作是把「留不留」翻译成「花多少小时、占谁的工」。
我的做法是拿张纸,左边列模块,右边写三列:谁来做、预计几小时、如果砍掉会丢什么分。第三列最关键,也是大多数人偷懒不写的。写完你会发现,很多模块砍掉的代价是「报告少写一段」,而保留的代价是「主链路晚半天联调」——这种账一算就清楚了。
哪些模块必须先保?我的经验是保「评委十分钟内能看到的链条」。评委通常不会陪你跑完整流程,他上电、按一下、看波形或屏幕,就下判断了。所以输入采集、核心处理、结果输出这条主链一个都不能断,哪怕跑得慢、精度低。反过来,那些藏在主链之外、只在特定模式下才触发的功能,第一天一律先划走。
现成IP的取舍也有个原则:能用别人调通的,就别自己从头写。串口、FIFO、时钟管理、DDR控制器这类,厂商例程和IP核基本能覆盖,你花一天自研的收益远低于花一天调通主链。但要注意,用IP不等于不管它,你得知道它的接口时序和复位要求,否则联调时出问题你连从哪查都不知道。
降指标这件事,我建议按「接口不降、参数可降」来操作。比如要求高速采样,你可以先跑低频,但时钟树、数据位宽、接口协议按目标留好,后面提速只是改分频系数;如果第一天就把接口做窄了,提速等于重做架构,那才是真完蛋。
判断指标是不是吓人,有个土办法:看它能不能被一台普通仪器当场测出来。能测的,大概率会测,必须保;不能测或者测起来很麻烦的,往往是题面凑字数或者加分项。
你们队现在几个人、分工大概是怎么定的?这个直接决定第一天能砍到多狠。

先说一个容易被忽略的前提:第一天做减法的对象其实不是框图,是「不确定性」。框图大不大只是表象,真正让队伍四天三夜做不完的,是那些你到第三天还不知道能不能跑通的东西还挂在主链路上。所以我的建议是别急着画系统图,先花一两个小时列一张「未知清单」:哪些模块你没做过、哪些接口你没调过、哪些指标你没测过。然后按「未知程度」排序,而不是按功能重要性排序。
这一步为什么关键?因为电赛FPGA题的坑往往不在功能本身,而在跨时钟域、时序收敛、外设驱动这些你平时靠例程绕过去的地方。一旦这些地方在第三天突然出问题,你前面堆的所有功能都得陪葬。反过来,如果你第一天就把最不确定的那一环先做个最小验证,比如先让ADC数据进FIFO再出来,哪怕只是跑个环回,你对整个系统的信心就完全不一样了。
具体怎么落地?我的做法是三条线并行但优先级不同。第一条是主链路,输入到输出必须当天能通,哪怕用最笨的方法,比如状态机硬写、参数写死、分辨率降到题面要求的一半,先让它动起来。第二条是未知项验证,挑一到两个你最没底的模块做独立实验,不接主链路,单独测。第三条才是加分项和报告素材,第一天基本不碰,最多记个TODO。
关于现成IP,我的态度是能用就用,但要分清两类:一类是厂商给的硬核IP,比如PLL、DDR控制器、高速收发器,这些别自己写,直接用,把时间省下来;另一类是软核或者开源模块,用之前先确认它的接口和你的时钟域能不能对上,否则省下的时间会在联调时加倍还回去。
至于怎么判断哪些指标评委真会测,我的经验是看它能不能在十分钟内用桌上仪器复现。采样率、输出幅度、响应延迟这类,示波器和电源一搭就能看;而「支持多种协议」「可扩展架构」这种描述,通常只在报告里被扫一眼。所以第一天砍的时候,凡是不能当场测的,先降级或砍掉。
最后补一句,减法做完一定要让全队对着同一张纸确认一遍,谁负责哪块、砍掉的东西记在哪,不然后面有人偷偷加回来,第一天就白干了。你们队现在几个人、有没有已经调过的板子?这个会直接影响第一天能并行几条线。
发表回答
登录后可在本页底部提交回答