看看国外大学的FPGA开发项目
据我了解,目前国内很多大学是没有开设FPGA相关课程的,所以很多同学都是自学,但是自学需要一定的目标和项目,今天我们就去看看常春藤盟校Cornell University 康奈尔大学开设的FPGA项目课程,大部分课程是有源码的,而且和国内使用习惯类似都是Verilog开发,还是很有借鉴意义的。
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/
该项目的目标是跟踪人脸的运动,并在 VGA 显示器上显示立方体的投影,该投影会根据用户面部的运动而变化。我们希望用户看起来好像实际上正在看一个 3D 立方体,因此,如果用户将头向右移动,则投影显示为好像用户实际上正在从右侧看一个立方体,并且如果用户靠近相机,那么立方体会变大。
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/ty244_jgs33/ty244_jgs33/index.html
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/ty244_jgs33/FaceTracker1.MP4
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/ty244_jgs33/ty244_jgs33/DE2_TOP.qar
在这个项目中,我们借助 Sony Handycam 和串口通信转变为简单的视频制作单元。该项目的主要焦点是能够提供绿屏效果,最常见于天气新闻。我们将根据阈值提取视频的绿色区域并显示背景图像,例如天气图。
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/jsd46_pag42/jsd46_pag42/
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/jsd46_pag42/jsd46_pag42/index.html
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/jsd46_pag42/jsd46_pag42/videoproduction.zip
主要思想是在 FPGA 板上构建一个能够检测声源位置的系统。并制作了机器人进行控制。
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/jmd242_aps243/576JonAllisite/site/index.html
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/jmd242_aps243/SoundRobot1.MP4
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/jmd242_aps243/576JonAllisite/site/code/
目标是在硬件中设计一个功能强大、通用可定义的图形处理单元 (GPU),可以轻松连接到 CPU 或其他板载硬件,可以提供简单高效的图形功能。GPU 提供很多功能的支持,包括绘制点、矩形、线条、图像(通过位图文件解码)和文本。此外,GPU 还提供双层显示功能,允许用户在底部图形层上绘制透明的顶部覆盖层。
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/Adam_Tom/graphics_engine_12_9_09/index.html
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/Adam_Tom/graphics_engine_12_9_09/code/
最终项目设计一个基本图形卡。目标是设计一个模块,可以接收输入中的几何数据和照明信息并将其显示在 VGA 上。我的组件实现了显卡的几个特定主题:
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/ng292/ng292/index.html
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/ng292/ng292/index.html
KSD 键盘是一款基于 FPGA 的 Karplus Strong 弦乐合成数码钢琴(karplus算法),带有力度反馈感应键。
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/csm44_jck46/index.html
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/csm44_jck46/KeyboardSynth1.MP4
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/csm44_jck46/DE2_TOP.v
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/csm44_jck46/karplus.v
目标是创建一个吉他模拟器,可以对其进行编程,使其快速轻松地播放任何歌曲。为了做到这一点,我们构建了一个系统,允许将吉他上的音符编码到 C 代码中,我们就可以使用计时器并实际重新创建整首歌曲。我们这个项目的动机是能够准确地即时合成整首歌曲的吉他声音。
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/kr334_ask43/kr334_ask43/kr334_ask43/index.html
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/kr334_ask43/GuitarSynth1.MP4
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/kr334_ask43/kr334_ask43/kr334_ask43/entersandman_w_dist.txt
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/kr334_ask43/kr334_ask43/kr334_ask43/Audio_Filter_18bit_float.txt
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/kr334_ask43/kr334_ask43.zip
使用玩经典井字游戏的程度作为适应度函数来模拟进化的随机过程,最终目标是创建完美的井字游戏机(探索 FPGA 上的进化算法)。
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/nic4_sck76/nic4_sck76/index.html
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/nic4_sck76/nic4_sck76/files/
目的是创建一个软件定义的无线电,它可以从射频前端接收 AM 或 FM 调制信号,进行解调后通过以太网将基带信号发送到计算机。基带信号使用软件压缩算法进行编码,提高以太网链路的带宽效率。
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/jfs36_jsm66/jfs36jsm66/index.html
https://code.google.com/archive/p/ece5760-sdr/downloads
在 FPGA 上实现了 JPEG 压缩和 UDP 以太网传输。从摄像机的输入中获取单个灰度帧,使用 JPEG 标准对其进行编码,然后通过以太网将其传输到另一个设备(例如计算机),所有这些都在硬件中进行。
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/jl589_jbw48/jl589_jbw48/index.html
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/jl589_jbw48/jl589_jbw48/
http://www.impulseadventure.com/photo/jpeg-snoop.html
目标是在两个FPGA开发板之间建立以太网连接,并在两个板之间传输视频和音频。音频将在一组扬声器上输出,视频将在接收数据的板卡的 VGA 上显示。这种方案两个板卡像视频聊天一样运行。
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/ts472_mrk99/ts472_mrk99/ts472_mrk99/
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2009/ts472_mrk99/ts472_mrk99/ts472_mrk99/
http://gps.theengineersden.com/index.php/DM9000A
项目很多,从2006~2023年,应该有一部分项目没有展现出来,大部分都有视频介绍,但是我看了一些视频,都是简单演示一下功能,并没有设计思路,所以需要自行查看源码中的文档。