碎碎思 · 4月12日

国外大学生都用FPGA做什么项目(十四)

image.png

  • 看看国外大学的FPGA开发项目

据我了解,目前国内很多大学是没有开设FPGA相关课程的,所以很多同学都是自学,但是自学需要一定的目标和项目,今天我们就去看看常春藤盟校Cornell University 康奈尔大学开设的FPGA项目课程,大部分课程是有源码的,而且和国内使用习惯类似都是Verilog开发,还是很有借鉴意义的。

项目链接

https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/

项目介绍

2007 开发板 CycloneII

System-on-Chip Toolkit - 片上系统工具包

该项目是为软件和硬件工具包设计,目标是实现功能齐全的片上计算机系统。需要准确设计所有不同的子系统和体系结构系统,这些子系统和体系结构系统必须组合在一起才能使程序在这样的系统上运行。下面是系统的演示配置图,该系统支持用户通过 PS2 键盘输入和通过 VGA 显示器输出。

image.png

  • 项目介绍
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/ib54/SysToolkitwebsite/index.html
  • 代码链接
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/ib54/SysToolkitwebsite/SysOnChipToolkit.zip

FPGA BBQ Stick video game - BBQ 串视频游戏

image.png

一款由 USB 鼠标控制的名为 BBQ 串的视频游戏。这款视频游戏背后的中心思想是借助烧烤棒捕捉美味的烧烤肉丸。你抓到的越多,你就会变得越胖,得分也越高。

image.png
image.png

  • 项目介绍
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/ms882_yc292/ms882_yc292/appendix.htm
  • 视频链接
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/pictures/BBQstick.MP4
  • 代码链接
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/ms882_yc292/ms882_yc292/appendix_files/

Real time Edge extraction - 实时边缘提取(Sobel)

image.png
image.png

实时SOBEL边缘检测。

image.png

  • 项目介绍
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/hc454_gtc32/hc454_gtc32/index.html
  • 视频链接
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/pictures/EdgeDetection.MP4
  • 代码链接
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/hc454_gtc32/hc454_gtc32/#appendix

Real time Spectrograph - 实时频谱仪

实时频谱图项目可以计算音频信号的频谱并在标准 VGA 监视器上显示。

image.png

  • 项目介绍
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/tjs49aw259/index.html
  • 视频链接

https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/pictures/SpectroTedCompressed.MP4

https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/pictures/SpectrogramCompressed.MP4

  • 代码链接
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/tjs49aw259/#appendix

Real time, Single Image, Random Dot Stereogram - 实时、单图像、随机点立体图

image.png

一个实时、单图像、随机点立体图(SIRDS)生成平台。我们的平台可以从深度图(记录到图像中每个像素的距离)生成 3D 立体图像。

image.png

  • 项目介绍
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/awh24_mdj23/awh24_mdj23/index.html
  • 视频链接

https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/pictures/Stereogram.MOV

https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/pictures/Stereogram.jpg

  • 代码链接
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/awh24_mdj23/awh24_mdj23/sirds.v

Real time audio pitch shifter - 实时音频变调器

image.png

基音移位可以使用各种数字音频处理技术在FPGA上实时执行。可以对信号进行快速傅立叶变换(FFT),在频域中对其进行更改,然后进行逆FFT。这被称为频域基音偏移。

  • 项目介绍
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/dah64_dp239/index.htm
  • 视频链接
https://people.ece.cornell.ed...
  • 代码链接
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/dah64_dp239/index.htm

FPGA Paint - FPGA 绘画

image.png

使用 NIOS II CPU 进行鼠标移动检测和 VGA 进行显示,在 FPGA 实现画笔应用程序。

image.png

  • 项目介绍
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/rc437_mj288/rc437_mj288/rc437_mj288/index.html
  • 视频链接
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/pictures/RanjaniCompressed.MP4
  • 代码链接
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/rc437_mj288/rc437_mj288/rc437_mj288/source/PaintBrush.zip

Parallelized Knuth-Morris-Pratt Search Algorithm - Knuth-Morris-Pratt 搜索算法并行化

image.png

Knuth-Morris-Pratt 算法(算法导论中有详细介绍)的高度并行化和模块化版本.

  • 项目介绍
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/cd247_rmz8/cd247_rmz8/index.html
  • 在线示例
http://en.wikipedia.org/wiki/Knuth–Morris–Pratt_algorithm
  • 代码链接

https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/cd247_rmz8/cd247_rmz8/rmz8cd247project.zip

https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/cd247_rmz8/cd247_rmz8/rawpacket.zip

UDP Network Hardware - UDP 网络硬件

完整硬件 UDP协议栈的实现。包括完整的 IPv4 协议和用于 MAC 地址解析的 ARP 协议。

image.png

  • 项目介绍
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/mjk64_hmm32_jdp45/mjk64_hmm32_jdp45/index.html
  • 代码链接
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/mjk64_hmm32_jdp45/mjk64_hmm32_jdp45/#appa

3D WireMesh Generator - 3D 线网格生成器

image.png

FPGA 上创建硬件转换单元和 3D 光栅化系统。

image.png

image.png

  • 项目介绍
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/ms883_sa453/ms883_sa453/index.html
  • 代码链接
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/ms883_sa453/ms883_sa453/index.html#h5

Light Source Motion Tracking - 光源运动跟踪

image.png

准确检测运动并报告相机视图中移动光源的速度。

image.png

  • 项目介绍
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/pl328/pl328/index.html
  • 代码链接
http://home.comcast.net/~pinghonglu/DE2_CCD_detect_noos.zip

Laser tracker - 激光跟踪仪

image.png

使用 FPGA 锁定并跟踪激光笔或小型光源。

image.png
image.png

  • 项目介绍
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/bjc54_wh84/bjc54_wh84/index.html
  • 代码链接
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/bjc54_wh84/bjc54_wh84/code/laser_tracker.zip

FPGA Jezzball - FPGA 杰兹球

image.png

游戏的目标是通过画线切断球可以漫游的区域,将弹跳的球困在尽可能小的空间内。要玩这个游戏,将鼠标移动到想要绘制线条的位置。如果单击鼠标左键,则会从该点绘制一条垂直线;如果单击右键,则会绘制一条水平线。如果该线到达两侧边界而球未击中该线,则该线将成为球的新边界。

image.png

  • 项目介绍
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/nry6/nry6/index.html
  • 代码链接
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/nry6/nry6/DE2_NIOS_HOST_MOUSE_VGA.zip

FPGA DSO - 数字示波器

image.png

在 FPGA 上创建数字示波器。

image.png

  • 项目介绍
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/chc58/index.htm
  • 代码链接
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/chc58/DSO.zip

Programmable Discrete Graphics Hardware - 可编程GPU

创建一个可编程图形处理单元(GPU),可以在硬件中编码,甚至可以生成对象和边缘。

  • 项目介绍
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/bc226/576_report05_website/index.html
  • 文档介绍
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/bc226/576_report05_website/576_report05.pdf
  • 代码链接

https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/bc226/576_report05_website/576_lab5.zip

https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/bc226/576_report05_website/576_lab5_dev.zip

SimpleGPU - 简单GPU

image.png

创建一个简单的图形处理器(GPU)。能够使用 NIOS 2 编写简单的软件命令,通过硬件和辅助支持软件将其显示在显示器上。

image.png
image.png

  • 项目介绍
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/jas328_asl45/jas328_asl45/index.htm
  • 代码链接
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/jas328_asl45/jas328_asl45/code/

3D wiremesh - 3D 丝网

image.png

尝试使用 VGA 在 320 x 240 像素分辨率下显示 FPGA 上实现的超级任天堂娱乐系统 (SNES) 中游戏 Starfox(失败了,代码也删除了)。

image.png

  • 项目介绍
https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2007/hkc2_zk29/hkc2_zk29/index.htm
  • 代码链接

总结

项目很多,从2006~2023年,应该有一部分项目没有展现出来,大部分都有视频介绍,但是我看了一些视频,都是简单演示一下功能,并没有设计思路,所以需要自行查看源码中的文档。

原文:OpenFPGA
作者:碎碎思

相关文章推荐

更多FPGA干货请关注FPGA的逻辑技术专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
10519
内容数
515
FPGA Logic 二三事
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息