1 引言

重要 的:
由于公众兴趣相对较低,面向 SoCKit 的 Xillinux 正逐步淡出:它开箱即用,无已知问题,但其实现仅限于较为陈旧的 Quartus II 13.0sp1 用于构建 FPGA 配套包。预计未来不会对此做出改变。对 Cyclone V SoC(尤其是 SoCKit)的整体支持也十分有 限。

1.1 Xillinux 发行版

Xillinux 是一套完整的、基于 Ubuntu 12.04 LTS 的图形化 Linux 发行版,专为 SoCKit 开发板设计,旨在作为软硬件混合项目的快速开发 平台。与任何 Linux 发行版类似,Xillinux 包含一系列软件,提供与个人桌面 Linux 系统大致相同的功能。但与常见 Linux 发行版不 同,Xillinux 还集成了一些硬件逻辑,尤其是 VGA 适配器。

该发行版针对经典的键盘、鼠标和显示器配置进行了优化。同时,它也允许通过 USB UART 端口进行命令行控制,但此功能 主要用于问题排查。

Xillinux 也是实现设备 FPGA 逻辑结构体与 ARM 处理器上运行的用户空间应用程序之间集成的快速启动开发平台。借助其包含的 Xillybus IP 核(IP core)及驱动,仅需具备基础的编程与逻辑设计技能,即可完成 FPGA 逻辑与 Linux 软件协同工作的应用程序设计。

附带的 Xillybus IP 核免去了处理内核编程底层细节以及应用程序逻辑与处理器之间接口的麻烦,为应用程序设计者提供了一 个简单而高效的工作环境。

1.2 Xillybus IP 核

Xillybus 是一种基于 DMA 的端到端解决方案,用于在 FPGA 与运行 Linux 或 Microsoft Windows 的主机(host)之间传输数据。它向 FPGA 逻辑设计者和软件编程者均提供了简单直观的接口。该方案适用于个人计算机和嵌入式系统,底层传输可采用 PCI Express 总线 (bus),也可用于基于 ARM 的处理器,通过 AMBA 总线(AXI3/AXI4)进行接口。

如上图所示,FPGA 上的应用程序逻辑只需与标准 FIFO 交互。

例如,向图中的下方 FIFO 写入数据时,Xillybus IP 核会在 FIFO 的另一端检测到数据可供传输。随后,IP 核从 FIFO 中读 取数据并发送至主机(host),使用户空间软件可读取这些数据。数据传送机制对 FPGA 内部的应用程序逻辑是透明的,后者仅需与 FIFO 交互即可。

在另一端,Xillybus IP 核利用 AXI 总线实现数据流,在处理器核心的总线上产生 DMA 请求。

主机(host)上的应用程序与设备文件交互,这些设备文件的行为类似于命名管道(named pipe)。Xillybus IP 核及驱动高 效且直观地在 FPGA 中的 FIFO 与主机上对应的设备文件之间传输数据。

用户可通过在线 Web 应用即时构建符合其规格的 IP 核。流的数量、方向及其他属性均由用户定义,以在带宽性能、同步性 及设计简便性之间达到最优平衡。

按照本指南完成准备工作后,建议访问 https://xillybus.com/custom-ip-factory 构建并下载您自定义的 IP 核。

本指南说明了如何快速搭建 Xillinux 发行版(其内含 Xillybus IP 核)。该 IP 核可挂接到用户提供的数据源(data source) 和数据接收器(data sink)上,用于真实应用场景的测试。它并非演示套件,而是一个功能完整的入门设计,可直接用于执行有用的任 务。

将现有 IP 核替换为针对特定应用定制的 IP 核是一个快速过程,只需替换一个二进制文件并实例化一个模块即可。

对于好奇的读者,附录 A(参见Xillybus Linux 主机应用程序编程指南)提供了关于 Xillybus IP 核实现方式的简要说明。