NI为位于指定硬件终端上的特定Xilinx IP开放AXI(Advanced eXtensible Interface,高级可扩展接口)协议。AXI协议是用于互连用于高性能和高频应用程序的IP函数块的标准工业级总线接口。AXI协议共有三种类型:AXI4、AXI4-Lite和AXI4-Stream。

注: LabVIEW FPGA模块的AXI协议支持随终端变化。Xilinx IP函数选板仅显示FPGA设备终端支持的IP。关于接口和FPGA设备支持的详细信息,见IP数据表。

FPGA VI中的AXI和4线IP接口

AXI协议类似于信号连接的LabVIEW 4线握手协议。AXI协议与LabVIEW 4线握手协议的主要区别是:在单周期定时循环中互连IP时的信号命名和反馈节点的放置。

Xilinx IP中的AXI信号的输入/输出接线端遵循常规命名规范: m/s + 协议 + 名称 + tdata/tvalid/tready。其中m为主控块或生成值的节点,s表示从控块或消费值的节点。例如,信号名称m_axis_signal_tvalid。其中m表示主控、axis表示AXI Stream协议、signal表示信号名称及tvalid表示有效。

通过NI IP创建的AXI信号的命名规范与Xilinx IP类似,但省略了axis关键词:m/s + 信号名称 + tdata/tvalid/tready

AXI至AXI互连

下列程序框图为两个AXI4-Stream IP块之间互连的概念性配置。

流向下方数据流的信号与4线握手协议中的信号功能一致。它们通知下方数据流块关于来自上方数据流块数据的有效性信息。例如,假设两个简单块的输入信号为x,输出信号为y。只要m_y_tdata输出包含有效的y数据,IP块1m_y_tvalid输出为TRUE。

LabVIEW 4线握手协议和AXI Stream协议的主要区别在于反馈信号的含义,其通过流向处理链上方的数据线表示。AXI信号通知上方数据流块当前周期的读取状态,4线信号通知上方数据流块下一个周期的读取状态。采用AXI接口,块将tready信号置为无效,以通知上方数据流的计数部分,当前时钟周期不能接收数据。下图的定时框图的最初几个时钟周期描述了上述场景。注意,tready信号被重置为有效前,tdata的值保持。

上图的定时框图中的后续时钟周期内,主控将tvalid信号置为无效,中止传输。

在LabVIEW的单周期定时循环内与AXI IP交互时,IP块 1 (AXI)的输出信号通过反馈节点连接至下方数据流IP块 2 (AXI)。反馈节点与之前路径中的寄存器功能一致。s_x_tready信号置为无效时,反馈节点将临时存储数据,直至从控块准备就绪接收新数据。

采用AXI4-Stream协议,从控块准备就绪生成有效数据前,主控块不允许等待。实现遵从AXI协议的块时,只要关联的tready信号保持置为无效,该块必须重复生成相同的输出(有效值)。此外,需要使用“或(OR)”门控触发握手进程。如下列程序框图所示。

4线至AXI互连

4线至AXI互连与AXI至AXI互连在寄存器的使用上类似。下列程序框图显示了连接4线IP块中的一条信号至AXI IP块的方法。

AXI至4线互连

AXI至4线互连与4线至4线互连在寄存器的使用上类似,但需要使用“与(AND)”门控以遵从4线协议要求,即仅当下方数据流块准备就绪输出时,可提供有效数据。如下列程序框图所示。