EE学生搞硬件
提供一个稍微偏门但很有意思的思路:基于FPGA的硬件随机数发生器。真正的随机源可以用环形振荡器或者亚稳态电路来产生熵源,然后通过后处理(比如用哈希函数)输出。你需要设计熵源电路、测试其随机性(可以用NIST测试套件,在PC上跑)、设计后处理模块(如AES算法的一个简化流程)。这个题目涉及模拟电路思想、数字电路设计、随机性测试,创新点可以放在熵源结构改进上。资料学术论文比较多,但核心实现并不庞大,能深刻体现FPGA接近硬件的特性。
提供一个稍微偏门但很有意思的思路:基于FPGA的硬件随机数发生器。真正的随机源可以用环形振荡器或者亚稳态电路来产生熵源,然后通过后处理(比如用哈希函数)输出。你需要设计熵源电路、测试其随机性(可以用NIST测试套件,在PC上跑)、设计后处理模块(如AES算法的一个简化流程)。这个题目涉及模拟电路思想、数字电路设计、随机性测试,创新点可以放在熵源结构改进上。资料学术论文比较多,但核心实现并不庞大,能深刻体现FPGA接近硬件的特性。
图像处理方面,做一个实时视频特效系统怎么样?比如,实时彩色转灰度、二值化、浮雕效果、或者简单的人脸检测(用肤色检测法,不算难)。你需要一个视频输入(HDMI或摄像头)、一个图像处理流水线、一个DDR3缓存控制器(如果做帧处理)、一个视频输出。核心在于设计一个可配置的图像处理流水线架构,不同的算法像插件一样切换。这个难度可控,因为每个小算法都不复杂,但组合起来就是一个很完整的系统,能体现模块化设计思想。而且视觉效果直观,答辩演示很出彩。
神经网络加速的话,别搞太复杂的。实现一个简单的卷积神经网络(CNN)用于手写数字识别(MNIST数据集)就很好。不要在FPGA里训练,只做前向推理。你可以用HLS(高层次综合)来写,会轻松很多。核心模块包括:从外部存储器(如DDR)读取权重和输入数据的控制逻辑、多个并行乘加器(PE)组成的卷积计算单元、激活函数(用查找表实现ReLU)、池化单元。你可以先浮点仿真,再定点化。这个题目创新点可以放在数据复用架构设计或者精度与资源的权衡分析上,能讲出很多东西。
可以考虑用FPGA实现一个简单的数字通信系统,比如QPSK调制解调。这个题目既有理论(通信原理)又有实践(FPGA实现)。发送端:产生伪随机序列 -> 串并转换 -> 映射成星座图 -> 成型滤波(可以用升余弦滤波器,查表法实现比较简单) -> DAC(如果板子有的话)。接收端:同步、解调、判决。难点主要是载波同步和定时同步,但你可以简化,比如用已知导频或者简化算法。这个题目能很好地体现FPGA处理高速数据流的优势,而且MATLAB可以和FPGA联合仿真,资料也多。
毕设选题确实挺头疼的,既要创新又不能太难。我去年做的题目是“基于FPGA的实时图像边缘检测系统”,感觉挺符合你的要求。核心就是用Sobel算子做卷积,重点在于设计流水线结构来处理像素流。你需要用摄像头采集模块(比如OV7670加SCCB配置)、一个FIFO或行缓冲来存储几行图像,然后就是卷积计算单元和VGA显示模块。资料网上很多,重点体会FPGA的并行计算怎么加速这个卷积过程。最后还能用不同阈值显示效果,工作量适中,挺有成就感的。