简介
本页简要介绍如何开始使用 Xillybus 或 XillyUSB。这通常是一个快速而简单的流程,不需要太多指导。不过,不同的 FPGA 之间会有一些细小的差别。
这里只涵盖最常见的应用场景和最新的 FPGA。如果本页提供的信息明显不够用,请参阅 Xillybus 的文档页面,那里有更详细和具体的信息。
这里不讨论 Xillinux,因为它的流程略有不同。
概述
开始使用 Xillybus 需要三个步骤:
- 根据演示包(demo bundle)为 FPGA 生成比特流(bitstream)文件。
- 在计算机上安装驱动(这通常不是必需的)。
- 在计算机上执行一个简单测试,以确认 Xillybus 能正常工作(相关说明分别见 Linux 和 Windows 页面)。
之后,你可能希望自己动手创建自定义 IP 核(custom IP core),这个操作可以在 IP Core Factory 上完成。这样你就可以按需选择任意数量的数据流。不过在动手之前,先试用一下演示包会有助于你理解 Xillybus 的工作方式。
Xillybus 与 XillyUSB 的对比
如果你考虑使用 XillyUSB,那么在方案现实可行时,建议改用基于 PCIe 的 Xillybus:PCIe 总线远比 USB 稳定可靠。
只有当 FPGA 必须位于计算机机箱外部时,才应该选择 XillyUSB(例如使用笔记本电脑作为主机时)。
下载演示包和软件
Xillybus 网站上提供下载的所有内容都是完整可用的,包括来自 IP Core Factory 的 IP 核(IP core),以及各种演示包。你不需要申请激活码或类似的东西。不过,IP 核的使用许可范围有限:你只能将 IP 核用于评估。之后,如果还想继续合法使用,则需要购买许可证。因此请务必确保自己了解这些条件。
下载文件分为两个网页:一个是 基于 PCIe 的 Xillybus,另一个是 XillyUSB。请到对应网页下载以下内容:
- 适用于你的开发板的演示包。
- 适用于 Linux 或 Microsoft Windows 的驱动。即使你使用的是 Linux,而且该驱动已经是 Linux 发行版的一部分,也请下载。
- 仅限 Windows 用户:Xillybus 的 Windows 软件包。
- 仅限 XillyUSB 的 Windows 用户:Windows 诊断工具。
所有这些文件都是 .zip 或 .tar.gz 格式。请先把它们解压到本地磁盘。
如果你的开发板不在演示包列表中,就需要对这个演示包进行修改。选择一个基于同一 FPGA 系列的演示包,然后按照 Xilinx 或 Intel FPGA 对应的文档指南操作。
接下来的步骤对于 AMD / Xilinx 和 Altera 会有所不同。
为 AMD / Xilinx 创建比特流
你需要在计算机上安装 Vivado。文档中列出了适合每款 FPGA 的 Vivado 版本。如果你已经装好了 Vivado,不妨直接试一试。如果 Vivado 版本不合适,下面详细描述的流程会失败:系统会报错,提示需要更新版本。如果没有出现类似错误,就说明你的 Vivado 版本没问题。
创建比特流文件的步骤如下:
- 在 Vivado 中,选择 Tools > Tcl Script…,然后找到 xillydemo-vivado.tcl。这个文件位于名为 verilog/ 或 vhdl/ 的子目录中。你大概知道自己会更喜欢哪一种。如果不知道,请选择 verilog/。
- Vivado 随后会新建一个 FPGA 工程。Vivado 的 Tcl 控制台会显示 “INFO: Project created: xillydemo”。
- 然后点击 “Generate Bitstream”。
- Vivado 会开始运行工程的实现过程。该流程结束时,会生成一个可用的比特流文件。这个文件名为 xillydemo.bit。
在实现过程中,Vivado 会产生一些警告,但不应该出现关键警告(Critical Warning),也不应该出现错误。
更详细的说明见这篇文档:Getting started with the FPGA demo bundle for Xilinx。请注意,Vivado 不支持 Virtex-5、Spartan-6 和 Virtex-6。如果你使用的是这些 FPGA 之一,请参阅这篇文档。
不要绕过 Tcl 脚本(script)去创建 FPGA 工程。如果尝试新建工程并导入源文件,很可能无法正常工作。
为 Altera 创建比特流
你需要在计算机上安装 Quartus。文档中列出了适合每款 FPGA 的版本。如果你已经装好了 Quartus,不妨直接试一试。如果 Quartus 版本不合适,下面详细描述的流程会失败:系统会报错,提示需要更新版本。如果没有出现类似错误,就说明你的 Quartus 版本没问题。
创建比特流文件的步骤如下:
- 双击 “xillydemo.qpf” 文件。这个文件位于名为 verilog/ 或 vhdl/ 的子目录中。你大概知道自己会更喜欢哪一种。如果不知道,请选择 verilog/。
- Quartus 随后会打开该 FPGA 工程。
- 点击 “Compile Design”。
- Quartus 会开始运行工程的实现过程。该流程结束时,会生成一个可用的比特流文件。这个文件名为 xillydemo.sof。
在实现过程中,Quartus 也会产生一些警告,但不应该出现关键警告(Critical Warning),也不应该出现错误。
更详细的说明见这篇文档:Getting started with the FPGA demo bundle for Intel FPGA。如果你的 FPGA 早于 V 系列(例如 Cyclone IV),流程会稍长一些。更多信息请参阅这篇文档。
安装 Microsoft Windows 驱动
Xillybus 的 Windows 驱动采用标准方式安装:在装有 FPGA 板卡的计算机上启动系统。不过在开机前,必须先把包含 Xillybus 的比特流加载到 FPGA 中。
首先,将包含驱动的 Zip 压缩包解压到本地磁盘。这个压缩包可以在演示包的下载页面上找到。文件名类似 xillybus-windriver-1.2.0.0.zip。
在“设备管理器”中,应该能看到一个列在 “Other Devices”(其他设备)下的设备。设备的图标会提示它没有正确安装(带感叹号)。右键点击该图标,选择 “Update Driver Software…”(更新驱动程序软件)。接下来选择从计算机中查找驱动文件(“Browse my computer for driver software”)。然后选择名为 “xillybus-windriver-1.2.0.0”(或类似名称)的目录。点击 “Next”(下一步),然后点击 “Install”(安装)。
驱动正确安装后,“设备管理器”中会出现一个名为 “Xillybus” 的新分组。在这个分组内,会有一个标题为 “Xillybus driver for generic FPGA interface” 的设备。该设备的图标不应显示错误(也就是说,图标上没有感叹号)。
如果使用的是 XillyUSB,设备会出现在名为 “Universal Serial Bus controllers”(通用串行总线控制器)的分组下面。驱动文件是 xillyusb-windriver-1.1.2.0-win10.zip。
更多带截图的详细安装步骤,请见 Windows 指南。
安装完 Windows 驱动后,下一步是进行简单测试。相关内容在另一个页面中说明。
为 Linux 安装驱动(?)
Xillybus 驱动已经包含在许多桌面 Linux 发行版中。因此,如果你使用的是 Fedora、Ubuntu 或 Mint,计算机上很可能已经安装了 Xillybus 驱动。
要检查驱动是否已经安装,请在 shell 提示符下输入:
$ modinfo xillybus_core
如果输出有多行:说明驱动已经安装,不需要再做任何事。只有在输出 “modinfo: ERROR: Module xillybus_core not found” 时才需要安装驱动。
如果你想使用 XillyUSB,命令为:
$ modinfo xillyusb
即使驱动已经安装,也建议安装 Xillybus 的 udev 文件。请参见本页末尾。你也可以跳过这一步骤,直接进行简单测试。
如果驱动尚未安装,你有两种选择:
- 把驱动作为内核模块安装。具体方法会在下文介绍。如果你没有自己编译内核(即内核来自发行版或 BSP(板级支持包,Board Support Package)),那么这种方案比较合适。
- 启用内核树内自带的驱动。这种方法需要编译整个内核。如果编译内核本来就是你日常工作流程的一部分,那么这种方案更简单。相关的配置项是 CONFIG_XILLYBUS 和 CONFIG_XILLYBUS_PCIE(或者 CONFIG_XILLYUSB)。
Xillybus 驱动自 v3.12 版本起就已经加入 Linux 内核树。如果你的内核版本为 v4.6 或更高,就没有必要升级驱动:自那以后,驱动没有实质性变化(只有代码风格上的改动)。XillyUSB 驱动则是在 Linux v5.14 中新增的。
更多关于 Linux 入门的信息,请参见相关指南。
编译内核模块
编译 Xillybus 内核模块要求执行编译的计算机上已经安装以下三项内容:
- gcc 编译器
- make
- 与 Xillybus 一起使用的内核对应的内核头文件
Linux 相关指南中介绍了如何检查这些组件是否已经安装,以及如果尚未安装该如何安装。
驱动的编译步骤如下:
$ tar -xzf xillybus.tar.gz $ cd xillybus/module/ $ make make -C /lib/modules/4.15.0/build M=/home/01signal/xillybus/module modules make[1]: Entering directory '/usr/src/linux-headers-4.15.0' CC [M] /home/01signal/xillybus/module/xillybus_core.o CC [M] /home/01signal/xillybus/module/xillybus_pcie.o Building modules, stage 2. MODPOST 2 modules CC /home/01signal/xillybus/module/xillybus_core.mod.o LD [M] /home/01signal/xillybus/module/xillybus_core.ko CC /home/01signal/xillybus/module/xillybus_pcie.mod.o LD [M] /home/01signal/xillybus/module/xillybus_pcie.ko make[1]: Leaving directory '/usr/src/linux-headers-4.15.0'
要安装内核模块,请输入 “make install”(需要 root 权限)。
下次内核启动时,如果总线上存在 Xillybus 设备,驱动就会自动加载。也可以使用 insmod 手动加载驱动。
请注意,打算在嵌入式 Linux 设备上使用 Xillybus 的人可能需要使用交叉编译器。这种情况下,还需要与嵌入式内核对应的内核头文件。
如果你不想使用 “make install”,也可以手动完成同样的事情:把模块文件复制到包含内核模块的目录中。该目录的名称必须包含将要运行 Xillybus 的内核的版本号。
例如:
# cp xillybus_core.ko /lib/modules/4.15.0/kernel/drivers/char/ # cp xillybus_pcie.ko /lib/modules/4.15.0/kernel/drivers/char/
完成上述操作后运行 depmod,让内核知道这些新模块。例如:
# depmod -a 4.15.0-20
udev 文件(Linux)
即使驱动已经安装,也建议安装 Xillybus 的 udev 文件。这样可以让非 root 用户访问 Xillybus。该文件位于包含驱动的软件包(xillybus.tar.gz 或 xillyusb.tar.gz)中。
安装 Xillybus 的 udev 文件只需运行下面这条命令(或类似命令),并以 root 身份执行:
# cp 10-xillybus.rules /etc/udev/rules.d/
是否一切正常?
下一步是确认你的操作都正确,并且 Xillybus 可以在你的硬件上正常工作。相关操作分别见 Linux 和 Windows 页面。