01signal.com

在 Microsoft Windows 上使用 Xillybus 进行 “Hello, world” 测试

Xillybus 的 “Hello, world” 测试

这是 Xillybus 快速入门的第三步:包含 Xillybus 的比特流(bitstream)已经加载到 FPGA 中,驱动也已安装到主机上。现在该做一次简单测试了。这个测试的目的是确认设备文件已经正确创建,并且能够正常工作。

本页讨论 Windows 主机上的 Xillybus。Linux 下的相关内容请参见类似页面

下面重点讨论基于 PCIe 的 Xillybus,但 XillyUSB 的情况也几乎完全相同。不同之处列在本页末尾。

更多相关信息,请参阅在 Windows 主机上开始使用 Xillybus

PCIe 设备能被检测到吗?

“设备管理器”中会显示已被检测到的 PCIe 设备。这一点在前面安装驱动时已经介绍过了。

在安装驱动之前,Xillybus 设备会出现在 “Other Devices”(其他设备)的列表中。安装完成后,该设备会出现在名为 “Xillybus” 的分组下。如果“设备管理器”中两者都没有出现,说明 FPGA 没有被识别为 PCIe 设备:这很可能是 FPGA 出了问题。常见原因之一是弄混了 FPGA 中加载的是哪一个比特流。

关于这一主题,Windows 快速入门指南中有截图和更详细的说明。

驱动是否正常启动?

下一步是检查驱动的状态。这要在“设备管理器”中完成:右键点击 Xillybus 分组中的设备图标(设备名称是 “Xillybus driver for generic FPGA interface”),然后选择 “Properties”(属性)。此时会弹出一个窗口。请在标题为 “Device status”(设备状态)的文本框中查看内容。那里的文字应该是 “The device is working properly”(设备工作正常)。这说明驱动已成功初始化 Xillybus,并创建了必要的设备文件。

如果显示的文本是别的什么,说明驱动在初始化过程中出了问题。这通常是 FPGA 的逻辑有问题,尤其是在 FPGA 中的 PCIe 模块被错误配置的情况下。例如,如果你修改了演示包(demo bundle)中 PCIe 模块的参数,就可能导致这类错误。

关于该问题的更多信息,可以在 Windows 事件查看器(Event Viewer)中找到。Xillybus 驱动的消息可以进行过滤:创建一个自定义视图,让它显示来自 “Xillybus” 这一来源的消息。具体做法在Windows 快速入门指南中有详细说明。

“Hello, world”

驱动会创建五个设备文件:\\.\xillybus_read_8、\\.\xillybus_read_32、\\.\xillybus_write_8、\\.\xillybus_write_32 和 \\.\xillybus_mem_8。请注意,如果你在 IP Core Factory 创建自定义 IP 核(custom IP core),那么设备文件的数目、名称和属性都可以自行选择。

但目前 FPGA 中加载的是演示包。我们来试一下其中两个设备文件。这些设备文件实际上是操作系统对象(object),但访问它们可以和访问普通文件一样。对于不熟悉 Windows 底层编程的人来说,\\.\ 这部分可能看起来有些奇怪。不过,用户空间软件(通常是 DLL)访问硬件的方式正是如此。

演示包中 read_8 与 write_8 之间有一个回环(loopback)连接。也就是说,当计算机向 write_8 写入数据时,FPGA 会通过 read_8 把完全相同的数据返回。这个回环只是为了演示而存在,没有其他实际用途。

测试方式如下:在计算机上打开两个命令提示符(Command Prompt)窗口。在这两个命令提示符窗口中,把当前目录切换到 “precompiled-demoapps”。这个目录位于 “xillybus-windowspack” 目录内。还记得我在快速入门中建议过,要随演示包一起下载 xillybus-windowspack.zip。

在第一个命令提示符窗口中输入:

$ streamread \\.\xillybus_read_8

然后在第二个命令提示符窗口中输入:

$ streamwrite \\.\xillybus_write_8

现在在第二个命令提示符窗口中输入任意内容,然后按 ENTER。同样的内容会出现在第一个命令提示符窗口中。这展示了文本是如何被写入设备文件、进入 FPGA,最后又返回计算机的。

你可以按 CTRL-C 来停止这两个程序。

这两个程序的源代码可以在 demoapps 子目录(来自同一个 zip 压缩包)中找到。程序用 C 语言编写,演示了如何通过标准 I/O API 访问 Xillybus 的设备文件Windows 快速入门指南中还介绍了如何编译这些程序。

虽然这个例子很简单,但理解它的工作原理很重要。尤其要理解 FPGA 中的逻辑是如何实现这一过程的。这正是把你自己的逻辑整合进去的起点。

XillyUSB

如果你使用的是 XillyUSB,上述所有内容同样适用,但有几点不同。

XillyUSB 提供了一个名为 showdiagnostics 的工具,用于检查与 FPGA 之间的物理连接质量。强烈建议使用这个工具,以确保底层原始数据链路(raw data link)没有任何错误。即使 XillyUSB 看起来运行得很正常,也必须做这项检查。原因是 USB 3.0 协议会掩盖底层原始数据链路上的错误,但这些错误仍然可能导致偶发的、看起来像 bug 的问题。

没有理由容忍这类错误。解决办法通常很简单,例如换用计算机上的另一个 USB 插口。

其他不同之处:

本页由机器从英文翻译而来。如有疑问,请参阅原文
Copyright © 2021-2026. All rights reserved. (dcc38493)