导师看完开题说纯跑通PYNQ例程不算工作量,让我加硬件加速模块。但板子只有Pynq-Z2,资源很紧。加自定义卷积IP怕时序收不了,加视频通路又觉得太水。有没有人做过类似毕设,最后是怎么平衡毕业要求和工作量的?答辩老师到底看什么?
2026年FPGA毕设选了「基于Zynq的实时人脸检测」,导师说工作量不够,加什么模块才能既保毕业又能写进秋招简历?
12 个回答

加个自研3×3卷积IP走AXI-Stream,再配个视频缩放/灰度预处理通路,答辩就够讲了。资源紧就限制并行度,先保时序再谈性能。简历写「自研IP+系统集成」比「跑通PYNQ例程」值钱多了。你板子现在跑多少MHz?

Pynq-Z2 资源确实紧,但加个 3×3 卷积 IP 走 AXI-Stream 正好卡在「能做完又显工作量」的位置。答辩重点看系统闭环和资源时序报告,不是看你跑多快。你导师有没有限定必须做人脸这块?

加个自研3×3卷积IP走AXI-Stream,工作量就立住了。答辩主要看系统闭环和时序资源报告,不是看你跑多快。资源紧就砍并行度,先保时序。简历上「自研IP+系统集成」比「跑通PYNQ例程」强太多。

先说一条最省事但答辩绝对够用的思路:别加卷积,加一个自研的图像预处理 IP。灰度化加 3×3 中值或高斯,走 AXI-Stream 进出,DMA 一边接 DDR 一边接你的 IP,人脸检测那部分继续用 PYNQ 上跑软的或者调用现成模型。为什么这么选?因为 Pynq-Z2 那点 LUT/DSP 跑卷积加速很容易在时序上翻车,但一个 3×3 滑窗加移位寄存器的流水线,几百个 LUT 加两三个 DSP 就能收,时钟跑到 100MHz 以上问题不大。答辩老师看的不是峰值性能,是这条数据通路你自己设计、自己约束、自己验证过,时序报告和资源占用能拿得出手。简历上就写「设计并集成 AXI-Stream 图像预处理 IP,完成 DMA 到 DDR 的数据闭环,Vivado 综合时序收敛」,比「在 PYNQ 上部署人脸检测」有辨识度。你板子现在综合出来主频大概能到多少?

先说结论:加一个自研的 3×3 卷积加速 IP,走 AXI-Stream 进出,前面接灰度或缩放预处理,后面接 DMA 回 DDR。你导师嫌「纯跑例程不算工作量」,本质上要看到的是你自己设计的数据通路,而不是又一个调用库函数的脚本。Zynq 这边资源紧,但 3×3 窗口用行缓存加移位寄存器实现,几百个 LUT 加几个 DSP 就能收,别一上来就想搞 7×7 或多通道并行,砍并行度先保时序,100MHz 左右收敛问题不大。答辩老师看的其实是三点:系统闭环有没有跑通、时序和资源报告能不能拿出手、这条通路是不是你设计的。简历上「设计并集成 AXI-Stream 图像预处理 IP,完成 DMA 到 DDR 数据闭环,时序收敛」比「部署人脸检测模型」值钱得多。你现在板子跑多少 MHz,导师有没有限定必须做人脸这块?

先说个很实际的判断:你导师嫌工作量不够,不是嫌你跑得慢,而是没看到属于你自己的 RTL。所以能立刻把局面救回来的,是加一块自研的 3×3 卷积加速 IP,走 AXI-Stream 进出,前面挂灰度或缩放,后面用 DMA 把结果搬回 DDR。Pynq-Z2 的 LUT/DSP 确实紧张,但 3×3 滑窗用行缓存加移位寄存器搭流水线,资源开销并不吓人,把并行度压到 1 或 2,100MHz 左右收敛是常见结果。答辩老师一般看三样:系统闭环能不能演示、时序和资源报告拿不拿得出手、这条数据通路是不是你亲手设计的。你板子现在跑多少 MHz,人脸那部分是打算继续留软的吗?

先说个容易被忽略的风险点:你加模块的目的不是让导师点头,而是让答辩现场有东西可演示、简历上有东西可讲。这两件事其实可以一次满足。做法上我建议先别碰卷积,先加一条自研的视频预处理通路:RGB 转灰度加 3×3 中值滤波,AXI-Stream 进 AXI-Stream 出,中间用行缓存加移位寄存器搭三级流水。为什么先选这个?因为中值滤波没有乘法,纯比较器和寄存器,Pynq-Z2 上几百个 LUT 就能收,时序压力比卷积小得多,你大概率第一次综合就能过。等这条通路跑通了、DMA 到 DDR 的闭环也验证过了,再考虑要不要在灰度后面接一级 3×3 卷积做边缘增强——这时候你手里已经有可复用的 AXI-Stream 框架和 testbench,加卷积只是换一个计算核,风险是可控的。替代做法也有:把卷积换成 Sobel 或者简单的阈值二值化,工作量同样成立,因为答辩看的是你设计的数据通路,不是算法有多花哨。一个小例子:有同学就是灰度加中值加二值化三级流水,答辩时拿时序报告和资源占用表一摆,老师问的全是握手信号怎么处理、行缓存边界怎么对齐,根本没人问他为什么不做深度学习。所以别一上来就冲最难的,先把闭环打通。你现在的工程里 DMA 那块是现成的还是也要自己配?

先说个很多人开题时没想明白的点:导师说工作量不够,往往不是嫌你算法不够新,而是看不到属于你的 RTL。所以别急着上多通道卷积或者 7×7,先问自己一句——答辩那天你打算演示什么?如果只能演示一个 PYNQ notebook 里跑出来的框,那确实悬。
我建议的加模块顺序是:先补一条自研的 AXI-Stream 图像预处理通路,灰度加 3×3 中值或简单锐化,用行缓存加移位寄存器搭三级流水。理由很实在——没乘法,纯比较器和寄存器,Pynq-Z2 上几百 LUT 就能收,第一次综合大概率就过,时序压力远小于卷积。等这条通路跑通、DMA 到 DDR 的闭环验证过、testbench 也写了,再考虑在灰度后面挂一级 3×3 卷积做边缘增强。这时候你手里已经有可复用的 AXI-Stream 框架和验证环境,加卷积只是换计算核,风险可控。
另一个容易被忽略的维度是答辩提问。老师大概率会问你行缓存深度怎么算、边界像素怎么处理、AXI-Stream 反压怎么应对。这些如果你只跑了例程,是答不上来的;但只要你亲手写过一遍滑窗,这些都是自然长在脑子里的。
替代做法也有:把卷积换成 Sobel,或者做双路并行分别出水平和垂直梯度,工作量看着更饱满,资源也不会爆。
你现在人脸那部分是打算继续留软的,还是想一起搬进 PL?

先说个容易被忽略的坑:你怕的时序收不了,多半是因为一开始就想把卷积做得太漂亮。Pynq-Z2 这块板子跑 3×3 卷积,只要你不搞多通道并行、不堆 DSP,一般 100MHz 收敛是能过的。真正会翻车的是那种「一上来上 7×7 或者 stride 可配的全功能加速器」,那才是综合报红、时序违例的常客。所以我的建议是反着来:先做一条能跑通的最小闭环,再谈性能。
具体点,先加一条 AXI-Stream 的灰度加 3×3 卷积通路。灰度用加权平均,纯乘法器加移位,卷积核固定成 Sobel 或者拉普拉斯这种系数,别做可配置。行缓存加移位寄存器搭三级流水,输出直接进 DMA 回 DDR。这条通路你亲手写 RTL、写约束、写 testbench,就是实打实的工作量。答辩的时候你能说清楚:数据从 DDR 怎么进来、AXI-Stream 怎么握手、行缓存怎么避免读同一行、时序报告 WNS 是多少、资源用了多少 LUT 多少 DSP。这些比「我跑通了 PYNQ 的人脸检测」有说服力得多。
简历也顺:设计并集成 AXI-Stream 图像卷积加速 IP,完成 DMA 到 DDR 数据闭环,Vivado 综合时序收敛。秋招面试官看到这句,至少会问你握手信号和行缓存,而不是问你调了哪个库。你现在人脸那部分是准备继续留软的,还是打算也往 PL 搬?

先说一个判断:导师说工作量不够,通常不是嫌你算法不新,而是开题报告里看不到属于你的 RTL 和约束文件。所以加模块的目标不是把 FPS 做高,而是让答辩现场有一条你自己设计、自己约束、自己验证过的数据通路跑起来。
沿这条主线想下去,加什么其实是被约束反推出来的。Pynq-Z2 的 LUT 和 DSP 都紧张,你如果一上来做多通道并行卷积,综合报红几乎是必然,然后你会花两周去修时序,最后什么也没演示成。反过来,如果先做一条 3×3 单并行度的卷积通路,行缓存加移位寄存器搭三级流水,系数固定成 Sobel 或拉普拉斯,不进配置寄存器,资源开销通常只有几百 LUT 加几个 DSP,100MHz 上下收敛是常见结果。这条通路走 AXI-Stream 进出,前面接灰度或缩放,后面接 DMA 回 DDR,人脸检测那部分继续留在 PS 侧跑软的都行。
关键在取舍顺序。先保闭环,再保时序,最后才谈性能。闭环指的是数据从 DDR 经 DMA 进你的 IP,算完再回 DDR,PS 能读到正确结果,这条链路你能在答辩时用示波器或者打印帧号讲清楚。时序指的是 Vivado 综合实现后的 WNS 和资源报告,能拿出手、没有大面积违例。性能反而是最不重要的,答辩老师一般不会追问你做到多少帧,但会问行缓存深度为什么这么定、AXI-Stream 的 tready 反压你怎么处理。
简历上怎么写也是同一套逻辑。「设计并集成 AXI-Stream 图像预处理 IP,完成 DMA 到 DDR 数据闭环,Vivado 时序收敛」比「在 PYNQ 上部署人脸检测模型」值钱,因为前者体现的是你能独立走完 RTL 到系统集成的流程。秋招面试官看到前者会问你握手协议、跨时钟域、约束怎么写,这些都是能聊二十分钟的料。
你现在板子上跑的是哪个 PYNQ 镜像版本,人脸那部分是打算整个留软的吗?这个会影响你 IP 挂在哪一级总线上。
发表回答
登录后可在本页底部提交回答