2 总体指导
2.1 入门
原则上,使用 Vivado 按照目标平台对应的入门指南(Getting Started guide)来搭建 Block Design 流程项目即可:
-
对于 Xillinux 套件:Zynq-7000 的 Xillinux 入门
-
对于 PCIe 套件:AMD FPGA 演示套件入门
在遵循这些指南时,请务必使用 blockdesign/ 子目录中的 xillydemo-vivado.tcl 脚本。
重要
的:
本指南 不 与 Xillybus 网站上的教程“面向 C/C++ 程序员的 FPGA 协同处理”配套使用。
两者在技术细节以及提供的示例项目上存在多处差异。为避免混淆,建议坚持使用本指南(用于 Block Design 流程)或网站教程(用于
Verilog / VHDL 设计)。
生成和使用比特文件(bitfile)的方式与上述入门指南中描述的方式相同:可直接从套件“开箱即用”地生成比特文件,这些指 南中描述的环回测试(loopback test)也同样有效。但请注意,可寻址流(seekable stream)xillybus_mem_8 在 Block Design 流程中无法工 作,如第 4.3 节所述。
Block Design 流程的不同之处在于,与 Xillybus IP 核的接口是在 Vivado 的区段设计工具(block design tool)中完成的:生成项目后, 在 Vivado 左侧菜单栏中选择“Open Block Design”即可打开区段设计(block design)。
对于基于 PCIe 的设计(即非 Xillinux),会显示以下图表:
使用 Xillinux 时,“Open Block Design”会打开 Zynq 处理器的环境——在与 Xillybus 相关的任务中,不应 修改 此区段设计部分。而应双击打开标记为“blockdesign”的区块,该区块会显示以下框图:
2.2 区段设计中的关键元素
Xillybus 区段设计中有几个值得注意的关键元素:
-
Xillybus 流端口(“from_host_*”和“to_host_*”): 这些是标准的 AXI Stream 端口,由最简信号集合组成:TDATA、TVALID 和 TREADY。 区段设计中每个端口名称的前缀为“from_host”或“to_host”,用以标识接口方向。端口名称的其余部分为主机上呈 现的设备文件名(device file name),去掉“xillybus”前缀。
例如,在 Linux 主机上名为 /dev/xillybus_write_32 的设备文件,或在 Windows 计算机上名 为 \\.\xillybus_write_32 的设备文件,可通过区段设计中名为 from_host_write_32 的端口进行访问。
-
环回(Loopbacks):初始状态下,from_host_write_32 连接到 to_host_read_32,from_host_write_8 连接到 to_host_read_8。这样,任何写入设备文件 xillybus_write_32 的数据都会环回到 xillybus_read_32。write_8 / read_8 这对也是如此。这种环 回正是入门指南中描述的“Hello world”测试能够工作的原因。
若要集成应用逻辑,应使用 Vivado 的区段设计 GUI 移除相应的环回连接,并将连接改为应用逻辑的合适 AXI Stream 端 口。
-
在某些情况下,名为 xillybus_smb 和 xillybus_audio 的流连接到上层层级,因为这些流用于支持板卡的音频接口。应忽略这 些流(即将其视为区段设计中通往处理器设计层次的其他信号)。
-
每个 Xillybus 流的“*_open”端口:每个 AXI Stream 端口都有一个对应的带 _open 后缀的端口。当主机上相应的 Xillybus 设 备文件处于打开状态时,该信号为高电平(’1’)。该信号可选用于复位连接到该流的应用逻辑,以便在每次设备文件打开时使应用逻辑处于 已知状态。
-
时钟向导(stream_clk_gen)模块:为应用逻辑生成时钟,该时钟基于 Xillybus 接口的时钟。Xillybus IP 核的所有 AXI Stream 端口均与该模块的输出同步。
建议不要对此模块做任何更改,除非是输出时钟的频率。特别地,该模块的名称必须保持不变(stream_clk_gen),因为与 设计实现(时序约束)相关的某些脚本会通过名称引用此模块的输出。
请参见下文第 3.2 节。
-
外部端口,例如 GPIO_LEDS[0:3]:连接到区段设计上层层级的端口。不应改动这些连接,但其中的信号可以被区段内的模 块采样。例如,在 Xillinux 套件中,ap_clk 连接到上层层级,但也可在区段设计视图内部使用。
注意没有用于 mem_8 流的端口。可寻址流(seekable streams)不会在框图中呈现。有关更多信息,请参见第 4.3 节。
