毕设开题时觉得垃圾分类有AI有FPGA很唬人,结果做到后面发现模型是PyTorch训练完直接量化丢给Vitis AI,加速器用的是官方DPU IP,自己写的只有摄像头采集和HDMI输出。现在答辩老师明确说要现场改逻辑验证是不是自己做的,我连DPU的接口时序都没细看。有没有类似经历的,最后一周怎么补才能不被挂?
2026年FPGA毕业设计选了「基于Zynq的智能垃圾分类」,答辩前发现模型是调库的、加速器是现成IP,老师要求现场改一行代码跑通,该怎么救?
5 个回答

先说结论:答辩前一周你不可能把DPU内部时序补成专家,但完全来得及把「你确实做过」这件事讲圆。老师要现场改一行代码,本质不是考你会不会写DPU驱动,而是验证三件事:你知不知道数据从哪来到哪去、你能不能定位问题、你有没有自己动手的部分。所以策略要反过来——别去啃DPU手册,先把自己那部分做扎实,再把边界说清楚。
第一步,画出完整数据流。摄像头sensor→VDMA/视频通路→DDR里的一帧图像→DPU输入张量(量化后的int8)→DPU输出→后处理(softmax/argmax)→分类结果→HDMI叠加显示。这条链上每一环谁负责,你要能指着代码说出来。重点搞清楚三样:图像是怎么从内存喂进DPU的(一般是Vitis AI的runner或xir接口,输入tensor的内存布局是NHWC还是NCHW、量化scale是多少),输出怎么解析的(分类得分数组怎么取最大值),以及PL侧你到底写了什么(采集、DMA配置、显示时序)。这三块是你唯一能现场改的东西,也是老师最可能下手的地方。
第二步,准备几个「可改点」。比如后处理里的置信度阈值、argmax的类别映射表、HDMI上文字叠加的位置或颜色、摄像头分辨率/帧率的配置寄存器。把这些参数从代码里提出来变成宏或变量,现场老师让你改,你改一个立刻能看到画面变化,这就够了。千万别让老师去改DPU的IP配置,那地方你解释不清,风险也大。
第三步,答辩话术要诚实但有结构。别说「模型是我训的」,说「模型基于公开数据集和迁移学习训练,量化部署用了Vitis AI工具链,我负责的是数据通路搭建、后处理逻辑和系统集成」。把工作量落在系统级:视频采集、DMA搬运、软硬协同、显示叠加,这些是真东西,讲得出细节就不虚。老师如果追问DPU时序,你可以说「DPU作为AXI从设备挂在总线上,我通过寄存器配置和DMA交互,具体内部流水线没有深入,但我清楚接口层面的握手和数据格式」——承认边界,比硬编强。
最后一周的优先级:数据流图 > 后处理代码 > 可改参数 > 系统联调录像。录一段你改参数前后结果变化的视频,答辩时能放就放,比嘴说有用。你现在用的Vitis AI是哪个版本、DPU配的是哪个型号(B4096还是别的)?这决定了输入输出接口细节,最好确认一下。
另外提醒一句:老师现场改代码,改完要能重新综合/加载才算数,如果你用的是PetaLinux+DPU的完整镜像,改后处理逻辑可能只需重新编译应用层,那很快;如果改到PL逻辑,重新生成bitstream可能十几分钟,现场不一定等得起。提前想好哪类改动是秒级的,心里有数就不慌。

别慌,老师要的不是你重写DPU,是确认这系统你能动。一周时间够你做一件事:把后处理那段代码彻底吃透——DPU吐出来的分类得分数组在哪、怎么取最大值、怎么映射成类别名、怎么送到HDMI显示。这四个点你闭着眼能改,现场就不怕。
同时把数据流图背下来:摄像头→DMA→DDR→DPU输入→DPU输出→后处理→显示。老师问哪一环,你能指到文件和行号。DPU内部时序答不上来没关系,直说「IP是官方提供的,我负责接口配置和系统集成」,诚实比硬撑强。
最后录一段改参数前后画面变化的视频,答辩时主动放,比解释半天管用。你这套是跑在PetaLinux上的还是裸机?这会影响现场改完能不能快速重新验证。

先说个可能让你意外的事实:答辩老师要你现场改一行代码,大概率不是想验证DPU是不是你写的,而是想确认这条链路你摸过。所以别把最后一周花在啃DPU手册上,那是无底洞,你补不完,补了也用不上。真正能救命的是把整条数据流画成一张图,然后对自己说清楚每一环的文件名和函数名。具体怎么练:拿张A4纸,从sensor采集开始写,一路写到HDMI上叠字显示,中间标出DDR里那帧图像的地址、DPU输入张量的内存布局、量化scale从哪来、输出数组怎么argmax、类别名数组存在哪个.h里。这张图画到你闭着眼能默写,现场老师随便指一环你都能翻到对应代码,你就赢了一半。第二步,挑一个绝对安全的改动点提前练熟。最稳的是后处理里的置信度阈值或者类别映射表,比如把「可回收」和「其他垃圾」的判定阈值从0.5改成0.7,或者把某个类别的显示名改掉。这种改动不碰DPU、不碰量化、不碰硬件配置,改完重新编译跑一遍就能看到画面标签变化,风险极低。你要做的是提前把「改哪一行、编译要多久、怎么重新烧录验证」这条路径走顺,现场才不会卡在环境上。第三步,准备一套诚实的边界话术。DPU内部时序、AXI事务、指令调度这些答不上来很正常,直接说「这个IP是Vitis AI官方提供的,我负责的是接口配置和系统集成,内部微架构我没有深入」。老师一般不会再追,因为他知道本科生做这个就是集成。反过来,如果你硬编一些细节被追问两句就露馅,那才真扣分。这里有个取舍你要想清楚:一周时间,是拿去赌「我能不能把DPU讲成专家」,还是拿去保证「我负责的部分滴水不漏」。前者期望收益极低,后者几乎稳赚。另外提前录一段改参数前后的对比视频,答辩时主动放出来,比嘴解释管用十倍。你这套是跑在PetaLinux上的还是裸机?这决定了你改完代码重新验证的耗时,裸机可能几分钟,带Linux镜像可能要重打包,差别很大。

别想着补DPU了,一周不够。把后处理那段代码吃透就行:DPU输出的是个分数数组,你怎么取最大、怎么映射成类别名、怎么送到HDMI,这四个点闭眼能改,现场就不慌。再准备一处最安全的改动,比如改置信度阈值或者类别显示名,提前把改完重新编译烧录的流程走一遍。老师问DPU内部就直说是官方IP,你负责集成。你板子上是PetaLinux还是裸机?

这事我劝你先把心态摆正:老师要现场改一行代码,考的不是你会不会写DPU,而是这条链路到底有没有从你手里过一遍。你现在焦虑的根源是把「工作量」理解成了「代码行数」,觉得模型是调库的、IP是现成的,所以心虚。但毕设评审里,一个本科生把摄像头采集、VDMA通路、DPU调用、后处理、HDMI叠加这一整条pipeline跑通,本身就是合格的系统集成工作。老师心里清楚DPU不是学生写的,他要防的是「整套都是别人给的、你只是按了运行键」这种情况。
所以最后一周别去啃DPU手册了,那是无底洞,七天连AXI-Stream的握手时序都看不完。你要做的是把「我确实动过这套系统」变成可现场演示的事实。具体分两层:第一层是讲清楚数据从哪来、到哪去——摄像头sensor出来经过什么接口进DDR,DDR里那帧图像怎么被喂进DPU的输入tensor,量化scale从哪个文件读的,DPU吐出来的得分数组存在哪块内存,后处理怎么argmax、怎么映射成「可回收/厨余/有害/其他」这四个中文类别,最后怎么叠到HDMI画面上。这条链你拿张纸从左边画到右边,每一环标上文件名和函数名,画到能默写,老师随便指一环你都能翻到对应代码,你就赢了一大半。
第二层是准备一个绝对安全的改动点。别选DPU配置、别选量化参数、别选时钟约束,那些一改就可能整条链路崩,现场救不回来。最稳的是后处理里的置信度阈值或者类别显示名——比如把判定阈值从0.5改成0.7,或者把「其他垃圾」的显示字符串改掉。这种改动只碰你写的C代码或Python脚本,重新编译烧录一遍就能看到画面变化,风险极低。你要做的是提前把「改完→重新编译→烧录→跑起来→画面变了」这个流程完整走三遍,掐表看要多久,现场才不会手忙脚乱。
还有个细节很多人忽略:老师可能会问「这个改动为什么会导致画面变化」。你得能顺着答出来——阈值提高意味着低置信度的帧不再输出类别、显示unknown,这是后处理逻辑决定的,跟DPU无关。这种回答显示你理解的是整条数据流而不是背代码。
至于DPU内部时序,被问到就诚实说「这是官方IP,我负责的是接口配置和系统集成,内部微架构我没有深入」,这比硬编强得多。老师最烦的是不懂装懂。
最后提醒一句:录一段改参数前后画面变化的视频,答辩时主动放出来,比嘴上解释半天有用。你这套是跑在PetaLinux上还是裸机?这直接影响现场改完能不能快速重新验证,如果是PetaLinux,重新编译设备树和app的时间要提前算进去。
发表回答
登录后可在本页底部提交回答