3 demo bundle 的实现

3.1 概述

实现 Xillybus demo bundle 并生成比特流文件(bit stream file,SOF)有三种可行方法:

  • 直接使用 bundle 中的项目文件。这是最简单的方法,适用于 demo bundle 列表中已有的开发板。

  • 修改文件以适配不同的 FPGA。适用于使用其他开发板和/或其他 FPGA 的情况。更多信息见第 4.4 节。

  • 从头搭建 Quartus 项目。在将 demo bundle 与现有应用逻辑集成时可能需要这样做。详见第 4.3 节。

本节其余部分详细说明第一种工作流程,这是最简单且最常用的方法。另外两种工作流程基于第一种,其差异已在上述各节 中说明。

重要 的:
评估用 bundle 的配置以简单性而非性能为优先。对于需要持续、连续数据流的应用(尤其是高带宽场景),可以实现显著 更好的结果。针对这些场景,可通过 web 应用轻松构建并下载定制 IP 核。

3.2 文件结构

bundle 包含以下目录:

  • core – Xillybus IP 核存储于此

  • instantiation templates – 包含 IP 核的实例化模板(Verilog 和 VHDL)

  • verilog – 包含 demo bundle 的项目文件及 Verilog 源代码(位于 ’src’ 子目录)

  • vhdl – 包含 demo bundle 的项目文件及 VHDL 源代码(位于 ’src’ 子目录)

  • pcie_core(仅 PCIe bundle) – 在构建 bundle 其他部分之前,需要在此处构建 Altera 的 PCIe IP 核。

  • quartus-essentials(仅 XillyUSB bundle) – Verilog 和 VHDL 项目共用的各种文件。

请注意,每个 demo bundle 针对特定开发板,如下载该 bundle 的网站页面所列。如果使用其他开发板,或者开发板上添加 或移除了某些配置电阻,则必须相应修改约束文件(constraints file)。

另请注意,vhdl 目录中包含 Verilog 文件,但通常无需对这些文件做重大修改。

Xillybus IP 核与应用逻辑之间的接口位于 xillydemo.v 或 xillydemo.vhd 文件中(分别在相应的 ’src’ 子目录中)。要尝试使用您自己的数 据与 Xillybus 交互,请编辑此文件。

3.3 构建 demo bundle

3.3.1 打开项目

根据您的偏好,双击 ’verilog’ 或 ’vhdl’ 子目录中的 ’xillydemo.qpf’ 文件。Quartus 将启动并使用正确的设置打开项目。

如果使用的是系列 V(例如 Cyclone V)或系列 10(例如 Arria 10)FPGA,请继续阅读第 3.3.3 节。否则,请按 下一节所述构建 PCIe 模块。

3.3.2 构建 PCIe 模块(Arria II 和系列 IV FPGA)

重要 的:
请注意,本小节不适用于系列 V 及更高版本的 FPGA。

如果使用 12.0 之后的 Quartus 版本,则需要手动编辑 megafunction variation 文件。否则,MegaWizard Plug-In Manager 将拒绝接受该文件。

如果需要编辑,请用文本编辑器打开 pcie_core/ 目录中的文件(例如 pcie_core/pcie_s4_4x.v)。将所有出现的旧 Quartus 版本号替换为当前使用的版本号。只需更改版本数字即可(例如将 12.0 替换为 15.0)。

通常,需要修改如下或类似的行:

// megafunction wizard: %IP Compiler for PCI Express v12.0%

以及

// Retrieval info: <MEGACORE title="IP Compiler for PCI Express" version="12.0"

可能还有

// Generated using ACDS version 12.0 178

从 Quartus 中启动 MegaWizard Plug-In Manager:

  • Quartus 14 及更高版本:打开命令提示符窗口(Linux 中打开终端)。确保 Quartus 实用程序在可执行路径中(通常为 /some/path/quartus/bin/)。输入 “qmegawiz” 启动 MegaWizard Plug-In Manager。

  • Quartus 13 及更早版本:在 Tools 菜单中选择 MegaWizard Plug-In Manager。

应出现以下(或类似)窗口:

选择 “Edit an existing custom megafunction variation”,然后单击 Next。

接下来,一个窗口(此处未显示)要求选择要编辑的自定义 megafunction variation 文件。选择 pcie_core 目录中的 pcie_c4_1x.v(或类似)文件(只有一个合适的文件存在)。通常,从起始点向上导航一级目录即可找到要进入的目录。

在显示 “Loading MegaWizard...” 的提示后,将出现如下窗口:

如果 MegaWizard 拒绝打开文件, 并显示 “Specify a valid MegaWizard-generated variation file”,则可能由以下原因导致:
您正在使用较新的 FPGA(例如 Cyclone V)。这种情况下完全无需构建 PCIe 模块。
variation 文件未正确编辑以将 Quartus 版本号更改为当前版本。请参考本小节开头的内容。
如果 MegaWizard 因文件无效而拒绝它,编辑文件后再次尝试加载将无济于事。必须退出 MegaWizard 程序并从命令提 示符重新调用,否则即使文件已正确编辑,MegaWizard 仍将继续拒绝该文件。

打开的窗口及其显示的参数因 FPGA 系列而异(标题为 “IP Compiler for PCI Express” 以外的名称也是正常的)。

无需做任何更改。只需单击 “Finish”。将出现一个窗口显示进度(此处显示其最终状态):

完成后,单击 Exit。之后 可能 会立即出现以下窗口,询问是否将 Quartus IP(QIP) 文件添加到项目中。

建议的回答是“No”,因为将 QIP 文件添加到项目中间接添加了一个不必要的 SDC 文件,其中包含的约束无论如何都会被忽 略。尽管将此 QIP 文件包含在项目中无害,但它会在编译期间导致大量警告,通常是 SDC 文件中每个被忽略的约束对应两条警告。

3.3.3 设计文件的编译

在 Quartus 主窗口中,单击 “Compile Design” 以创建 FPGA 比特流文件。请注意,在某些 Quartus 版本中,默认的编译过 程可能设置为 “Rapid Recompile”,此时任务窗格中只允许 “Rapid Recompile”。如果是这种情况,请将其更改为 “Compilation”,然后继 续。

该过程会产生 20–50 条警告(取决于 QIP 文件是否包含在项目中),但最终应显示对话框 “Full Compilation was successful”。

必须验证没有生成任何错误或 Critical Warning(Quartus 主窗口底部的选项卡指示每种类型的消息数量)。

过程结束后,编程文件可在 xillydemo.sof 中找到。

3.4 编程 FPGA

在早期开发阶段,建议通过 JTAG 加载 FPGA。通常使用 USB Blaster / Altera Download Cable(板载或外部)完成。请参 考您开发板的说明,了解如何通过 JTAG 加载 FPGA。

对于 XillyUSB 项目,可以随时加载和重新加载 FPGA,即使在 USB 接口连接到正在运行的计算机时也是如此。

对于 PCIe 项目,必须在计算机上电之前将比特文件加载到 FPGA 中:计算机在上电时期望 PCIe 外设处于正常状态,并且 可能无法容忍之后的任何意外。

因此,只要主机正在运行,就不要重新加载 FPGA。尽管 PCIe 规范要求支持热插拔,主 板通常不会预期 PCIe 卡消失然后重新出现。因此,某些主板可能无法正确响应。然而,在操作系统运行时重新加载 FPGA 在某些主板上是可行的。

Xillybus 的驱动程序设计为能够妥善响应热插拔,但无法保证计算机的整体稳定性。相关讨论请参见此页面:

https://xillybus.com/doc/hot-reconfiguration

如果 FPGA 上电时与计算机同时从闪存加载,必须确保 FPGA 加载足够快,以便 BIOS 扫描总线时 PCIe 设备已就绪。