导师原话是「功能太单一,答辩容易被问倒」。我想保留CAN收发这部分,但不知道往上叠什么才不显得硬凑:加SD卡文件系统?加以太网上传?还是加个简易的实时波形显示?时间只剩三个月,板子是高云GW2A,求有毕设答辩经验的人给个能落地的加法。
2026年FPGA毕业设计选「基于国产高云GW2A的CAN总线数据记录仪」,导师说工作量偏小,加什么模块能既保毕业又能写进简历?
4 个回答

先说结论:别横向堆模块,沿数据链路往深里挖。你现在的链路是「CAN收发→MCU/FPGA拿到数据」,这条链路太短,答辩老师两分钟就问完了。真正能撑住工作量和简历的是把它变成一条完整的数据通路:CAN采集→双缓冲FIFO跨时钟域→SD卡FATFS存储→以太网上传。为什么强调纵向?因为横向加个LCD波形显示,本质还是同一层的东西,老师一问「数据从哪来、存哪去、丢没丢」你就没词了;而纵向每一段都有独立的工程难点可以展开讲。
具体拆一下。CAN那边波特率通常几百k到1M,数据是突发来的;SD卡走SPI或SDIO,写入有延迟抖动,几十毫秒的卡顿很常见。这两者速率不匹配,你就得在中间做FIFO缓冲。而FIFO一跨时钟域,问题就来了:CAN控制器时钟和SD卡时钟不是一个域,读写指针怎么同步、用格雷码还是握手、FIFO满了怎么反压,这些全是可以写进论文一整章的东西。
再往上,SD卡存数据要不要文件系统?如果只是裸扇区写,答辩时老师会问「PC怎么读」,你答不上来就尴尬。上FATFS,虽然移植要花时间,但能讲清楚「为什么用、移植时改了哪几个底层接口」,含金量立刻不一样。以太网上传则是最后一块拼图,重点不在能不能Ping通,而在带宽匹配:采集速率、SD写入速率、网口发送速率三者怎么协调,缓存不够时是丢包还是降采样。
三个月时间,我的建议是:CAN+FIFO+SD卡FATFS这条主线必须做扎实,以太网作为加分项,能做就做,做不动就老实说「预留了接口」。选高云GW2A的话,注意它的IP和参考例程相对少,SD卡和以太网PHY的驱动可能要自己啃时序,前期一定先跑通最小验证,别一上来就全搭。你板子上SD卡是SPI模式还是SDIO,这个会直接影响你后面能讲多少跨时钟域的内容,方便说一下吗?

如果只允许加一个模块,我选SD卡加FATFS存储,而不是以太网,也不是波形显示。理由是:波形显示是给人看的,工作量虚、技术密度低,老师一问「丢帧怎么处理」就露馅;以太网看着高级,但三个月里PHY驱动加协议栈调试很容易翻车,而且它偏通信方向,跟你CAN记录仪的主线有点游离。SD卡存储则是这条链路的自然延伸,数据采了总得落地,逻辑上顺理成章。
更关键的是,存储这一段天然逼你处理跨时钟域和带宽匹配。CAN是突发、SD卡写入是慢且抖动的,中间必须加FIFO;而FIFO读写分属不同时钟域,指针同步、满空判断、反压策略,这些才是能写进论文、也能在面试里展开讲的东西。答辩老师最爱问的「高速数据怎么不丢」,答案就藏在这段缓冲设计里。
所以路线可以定为:先把CAN到FIFO这段调通,保证不丢数据;再接SD卡,先裸写扇区验证速率,再上FATFS让PC能直接读;以太网作为可选加分项,时间够就加,不够就在论文里写清楚预留接口和后续方案。这样主线清晰,工作量也够撑一场答辩。你SD卡打算走SPI还是SDIO,这个决定了后面时序能讲多细。

先说个判断:你导师嫌工作量小,大概率不是嫌你模块少,而是嫌这条链路太短。CAN收发本身在老师眼里就是调个控制器、配个过滤器、读几个寄存器的事,答辩时问两句就到底了。所以你加模块的思路要换一下,不是横向再挂一个外设,而是把数据从产生到落地的整条路走通。
我的建议是沿数据链路纵向加:CAN采集,中间做FIFO缓冲,然后落SD卡文件系统,有余力再谈上传。为什么先SD卡不先以太网?因为以太网在三个月里翻车概率太高,PHY配置、协议栈、上位机联调,任何一环卡住你都交不了差;而SD卡虽然也烦,但它的难点是可控的、可讲清楚的。
关键在中间那段缓冲。CAN数据是突发来的,波特率一般几百k到1M,SD卡写入又有延迟抖动,几十毫秒的卡顿很常见,这两边速率天生不匹配。你必须在中间放FIFO,而FIFO一跨时钟域,真正能写进论文、也能在面试里展开的东西就来了:读写指针怎么同步、用格雷码还是握手、满空判断怎么做、FIFO快满了怎么反压CAN端或者丢帧标记。答辩老师最爱问的「高速数据怎么保证不丢」,答案就藏在这里,而不是藏在「我加了个屏幕」。
落地节奏我建议这样排:先把CAN到FIFO这段调通,用计数器验证不丢包;再接SD卡,先裸写扇区测速率,确认能稳定写入再上FATFS;最后如果还有时间,再考虑以太网或者串口上传。波形显示我不太推荐,工作量看着热闹,技术密度低,老师一问刷新率和丢帧怎么处理就容易露馅。
顺便说一句,高云GW2A的IP和例程跟Xilinx那套不太一样,SD卡控制器这类东西最好先查官方文档确认有没有现成IP,别默认网上例程能直接搬。你现在板子上SD卡是走SPI还是SDIO接口?这个会直接影响你三个月的排期。

先说个可能不太中听但很关键的点:你导师说工作量小,多半不是嫌模块数量少,而是嫌你这条链路的『深度』不够。CAN收发在答辩场景里确实容易两分钟讲完,所以别急着横向再挂个外设,试着把数据从哪来、怎么缓冲、落到哪去这条线拉长。SD卡加FATFS是个很自然的延伸,因为它逼你面对一个真实问题:CAN数据是突发的,SD卡写入又有延迟抖动,两边速率天生不匹配,中间必须塞缓冲。缓冲一跨时钟域,指针同步、满空判断、反压策略这些就有了可讲的东西。
不过这里有个风险要提前说:FATFS本身是现成代码,如果你只是调用它,答辩老师可能追问『文件系统是你写的吗』,那就尴尬了。比较稳的做法是把重心放在FIFO和带宽匹配上,FATFS当作落地手段而不是核心贡献点,讲的时候强调你为了解决丢数据做了哪些设计取舍。
以太网上传不是不能加,但它属于另一个方向的坑:PHY配置、协议栈、上位机联调,三个月里任何一环卡住都可能交不了差。如果时间真的紧,我建议先把CAN到FIFO再到SD卡这一段跑通,保证不丢数据,有余力再谈上传。波形显示这类功能个人感觉性价比偏低,展示效果好看,但技术密度不够,老师一问丢帧怎么处理就容易露馅。你现在板子上的CAN控制器和SD卡接口都调通了吗?这个决定了后面能走多快。
发表回答
登录后可在本页底部提交回答