FPGA 上的新手项目?

电器工程 FPGA 设计 视频文件 验证日志
2022-01-05 05:56:58

我距离完成我的第一个大学数字逻辑设计课程还有两周的时间,显然不会有期末项目——只是一个乏味的期末考试。

因此,就像任何好奇的学生都会做的那样,我研究了 FPGA 到底是什么,以及我在课堂上被灌输了什么。我决定完成一个简单的 FPGA 项目。我正在使用 Basys2 Spartan-3E FPGA,我熟悉数字逻辑并使用 ISE 来推动逻辑门,但我不知道 VHDL/Verilog(我相信我可以轻松掌握它)。

有人对初学者有任何项目想法吗?我做了很多实验室演示,但没有什么太花哨的。

4个回答

我发现 Pong Chu 的“FPGA Prototyping By Verilog Examples:Xilinx Spartan-3 Version”是一本很有帮助的书。它适用于与您提到的不同的 Spartan-3 板,但应该仍然有用。

如果您愿意走这条路,还有一个 VHDL 版本

从外观上看,您有VGA。视频总是让我对我的经历感兴趣:)

这是您可能想尝试的计划(不需要帧缓冲区):

  1. 获得纯色VGA屏幕显示
  2. 显示从黑色到纯色的水平渐变
  3. 现在从黑色垂直渐变为红色,水平从黑色渐变为绿色 3a。(制作更有趣的算法指定背景,您可以实时渲染)
  4. 创建一个简单的精灵引擎,它将在任意位置覆盖一个小的任意形状 - 您可以使用 1 个 BRAM 作为精灵数据
  5. 显示几个不同的精灵(每个 1 个 BRAM)
  6. 创建一些更新逻辑以使精灵四处弹跳(并相互反弹)-向精灵逻辑添加碰撞检测。
  7. 创建一个可以用开关控制的“桨”精灵,用它来阻止精灵离开屏幕
  8. 添加一些评分机制

我认为这应该都适合250E。(在 FPGA 方面,VGA 时钟很慢,因此您可以使用 DCM 乘以 4-8 倍,这将允许一个精灵引擎在多个精灵实例上多路复用)

这个由 Hamster 编写的免费在线课程非常棒,并且在编写时考虑了Basys 2Nexys 2

我个人使用了 Basys 2,并通过这门课程学到了很多东西。它涵盖了 Basys 板的所有方面以及完成课程之外的大多数项目的许多概念。

与其他所有事情一样,从一个hello world项目开始,在这种情况下 - 闪烁 LED - 并使其周期变量只是为了好玩。

为此,您需要学习如何在 Verilog/VHDL 中构建计数器。这是学习 HDL 复杂性的良好开端,因为您将学习如何:

  1. 推断硬件操作 - 使用 RTL 代码而不是门级代码。您将学习如何使用 RTL 代码设计可预加载、可复位的向上/向下计数器。
  2. 学习如何进行同步设计——这是大多数 FPGA 的优点,也是几乎所有数字系统设计的基础。
  3. 了解如何与外界交互 - 使用 FPGA 的 I/O。这将教您如何在 FPGA 上配置和实现事物。

完成后,转到opencores并开始破解更大的项目。您会在这里找到我们的一些成员的许多其他有趣的项目,包括您的。:)