主要内容

AXI4-Stream接口生成的模型设计

使用HDL Coder™软件,您可以在模型中实现一个简化的流协议。该软件在IP核中生成AXI4-Stream接口。

简化的流媒体协议

要将待测设计(DUT)端口映射到AXI4-Stream接口,请使用简化的AXI4-Stream协议。您不必对实际的AXI4-Stream协议建模,相反,您可以使用简化的协议。当你运行IP核心代在工作流中,生成的HDL代码包含包装器逻辑,该逻辑在简化的协议和实际的AXI4-Stream协议之间进行转换。简化的协议需要更少的协议信号,简化了有效信号和就绪信号之间的握手机制,并支持任意长度的突发。金宝app

对写和读事务使用简化的AXI4-Stream协议。当你想在你的IP核中生成一个AXI4-Stream接口时,在你的DUT接口中,实现以下信号:

  • 数据

  • 有效的

可选地,当您将标量DUT端口映射到一个AXI4-Stream接口时,您可以建模以下信号:

  • 准备好了

  • 其他协议信号,如:

    • TSRTB

    • TKEEP

    • TLAST

    • TID

    • 道明

    • 摘要

数据和有效信号

当数据信号有效时,有效信号被断言。这个图说明了根据简化的流协议的数据和有效信号的关系。当您运行IP核生成工作流时,HDL Coder在HDL IP核中添加了一个流接口模块,该模块将简化的协议转换为完整的axi4流协议。在这个图中,时钟信号用clk表示。

纸浆包建模

当您想要在DUT边界上将数据信号模拟为采样流时,请使用基于采样的模式建模。在基于样本的模式中,可以将数据信号建模为标量或矢量。如果将数据信号建模为向量,则将样本包装尺寸设置为All。在生成的HDL代码中,向量元素被打包在一起,整个向量被视为单个示例。属性可以指定数据如何打包包装方式.看到样品的包装尺寸

模型数据和有效信号金宝app

  1. 包含使用启用的子系统来处理Data信号的算法。

  2. 使用Valid信号控制启用的子系统的启用端口。

例如,您可以直接将Valid信号连接到使能端口。

您还可以在DUT中使用一个控制器,为已启用的子系统生成启用信号。

准备好信号(可选)

下游组件使用背压来告诉上游组件它们还没有准备好接收数据。DUT中的AXI4-Stream接口可以选择包括Ready信号。使用就绪信号:

  • 在AXI4-Stream从接口上施加背压。例如,当下游组件还没有准备好接收数据时,放下Ready信号。

  • 在AXI4-Stream主接口中响应背压。例如,当下游组件Ready信号低时,停止发送数据。

当您使用单个流通道时,默认情况下,HDL Coder生成Ready信号和处理背压的逻辑。背压逻辑将就绪信号连接到DUT使能信号。当输入主备信号低时,DUT被禁用,输出从备信号被驱动低。因为,HDL编码器产生背压逻辑和准备信号,当你使用一个单一的流通道,准备信号是可选的,你不需要在DUT端口建模这个信号。

框图视图说明自动生成的准备信号和背压逻辑。

当您使用多个流通道时,HDL编码器生成一个就绪信号,而不生成背压逻辑。在具有多个流通道的DUT中:

  • 主通道忽略来自下游组件的Ready信号。

  • 从通道就绪信号高,导致上游组件继续发送数据。

没有背压逻辑可能导致数据丢失。为了避免数据丢失,并在从接口上施加背压或响应主接口的背压:

  • 为每个附加流接口建模Ready信号。

  • 将建模的Ready信号映射到附加接口的DUT端口。

当你不建模准备信号时设置目标接口task显示一个警告,其中提供了需要Ready端口的接口名称。如果您的设计不要求施加或响应背压,请忽略此警告。

如果在AXI4-Stream接口中对Ready信号建模,主接口将在取消断言Ready信号后的一个时钟周期内忽略Data和Valid信号。一旦就绪信号被断言,您就可以开始发送数据和有效信号。解除就绪信号断言后,可以再发送一个数据和有效信号。

如果不建模Ready信号,HDL编码器生成信号和相关的背压逻辑。这个图说明了根据简化的流协议,Data、Valid和Ready信号之间的关系。当您运行IP核生成工作流时,HDL Coder在HDL IP核中添加了一个流接口模块,该模块将简化的协议转换为完整的axi4流协议。在这个图中,时钟信号用clk表示。

例如,如果您在DUT中有先进先出(FIFO)来存储一帧数据,以便向上游组件施加反压力,则基于FIFO Full信号建模Ready信号。

请注意

如果启用延迟平衡,编码器将在就绪信号上插入一个或多个延迟。禁用就绪信号路径的延迟均衡。

TLAST信号(可选)

DUT上的AXI4-Stream接口可以选择建模TLAST信号,该信号用于指示一帧数据的结束。如果你不建模这个信号,HDL编码器为你生成它。在AXI4-Stream Slave接口上,传入的TLAST信号被忽略。在AXI4-Stream Master接口上,当有效样本数达到默认帧长度值时,断言自动生成的TLAST信号。默认帧长度值可以使用目标接口表中的AXI4-Stream接口选项设置。看到的,ax4流数据的接口选项

当IP核有一个AXI4 Slave接口时,默认帧长度值存储在IP核的一个可编程寄存器中。您可以在运行时更改默认的帧长度。当默认的帧长度寄存器在一帧中间被改变时,TLAST计数器状态被重置为零,并且TLAST信号被提前断言。您可以在IP核生成报告中找到可编程TLAST寄存器的地址。

框架建模

当您希望将数据信号模拟为DUT边界上的帧时,请使用基于帧的模式建模。在基于帧的模式下,将数据信号建模为矢量,并设置样本包装尺寸为None。看到样品的包装尺寸

基于框架的模式对于软硬件系统交互的建模和仿真以及软件驱动程序代码的生成都很有帮助。

数据和有效的信号建模要求

当您将向量端口映射到AXI4-Stream接口时:

  • 连接每个DUT输入矢量数据端口到aSerializer1D块。

    Serializer1D块必须有一个ValidOut端口,并且Ratio设置为向量位宽。

  • 连接每个DUT输出矢量数据端口到aDeserializer1D块。

    Deserializer1D块必须有一个ValidIn端口,并且Ratio设置为向量位宽。

  • 将每个映射到AXI4-Lite接口的标量端口连接到率转换块。

    这个比率率转换块中的比率必须匹配Serializer1DDeserializer1D块。

  • 每个映射到外部端口的标量端口必须与流算法子系统具有相同的采样时间。

流算法子系统遵循与将标量端口映射到AXI4-Stream接口的模式相同的Data和Valid信号建模模式。看到在Simulink中建模数据和有效信号金宝app

例子

要将向量端口映射到AXI4-Stream接口,请打开hdlcoder_sfir_fixed_vector.slx模型。在hdlcoder_sfir_fixed_vector.slx模型中,symmetric_fir块是流算法子系统。

多流通道模型设计

当你运行IP核心代工作流中,您可以将多个标量DUT端口映射到AXI4-Stream Master和AXI4-Stream Slave通道。当您使用向量端口时,您最多可以将端口映射到一个AXI4-Stream主通道和一个AXI4-Stream从通道。

请注意

如果您使用多个流通道,HDL编码器生成Ready信号,但不生成背压逻辑。如果你想让你的设计处理背压,在你的设计模型准备信号。

想要了解更多,请看生成带有多个AXI4流和AXI4主接口的HDL IP核

有多个样品率的模型设计

当您运行IP Core Generation工作流时,对于具有多个采样率的设计,请使用HDL Coder软件。当您将接口端口映射到AXI4- stream主接口或AXI4- stream从接口时,要使用多个采样速率,请将映射到这些AXI4接口的DUT端口映射为以设计的最快速率或比设计速率慢的速率运行。

HDL编码器以比模型设计速率慢的速率运行映射到AXI4-Stream主接口和从接口的DUT端口:

  • 每N个时钟周期,在第一个周期将AXI4-Stream主通道有效信号设置为高。例如,如果设计速率比慢速率DUT端口快8倍,每8个时钟周期的第一个时钟周期有效信号是高的。

  • 在AXI4-Stream从接口上断言反向压力,以确保传入数据以每N个时钟周期一个数据帧的速率流。例如,如果设计速率比慢速率DUT端口快8倍,则第一帧在时钟周期1时流,第二帧在时钟周期9时流,以此类推。

当您将AXI4-Stream接口DUT端口映射到设计中的最快速率时,有效信号总是高的,以确保在AXI4-Stream从接口上没有背压。

当设计具有多个采样率的模型时,所有AXI4-Stream主接口映射的DUT端口必须以相同的速率运行。所有AXI4-Stream从接口映射的DUT端口必须以相同的速率运行。

想要了解更多,请看多速率IP核生成

ax4流数据的接口选项

当您在具有矢量数据的模型上运行IP Core Generation工作流时,您可以通过使用样品的包装尺寸.将向量数据作为示例处理时,可以使用包装方式选择。

当您在一个模型上运行IP Core Generation工作流时,该模型具有AXI4 Stream接口,没有映射到任何信号TLAST,可以指定TLAST的寄存器值DefaultFrameLength选择。

默认的帧长度

当您不建模TLAST信号时,为AXI4 Stream Master接口指定默认帧长度(TLAST)值。在生成的IP核中为您创建TLAST信号,当有效样本的数量计数到默认帧长度计数器中的值时,该信号被断言。当生成的IP核具有AXI4从接口时,HDL编码器生成默认帧长度作为可编程寄存器。当默认的帧长度寄存器在一帧中间被改变时,TLAST计数器状态被重置为零,并且TLAST信号被提前断言。有关更多信息,请参见TLAST信号(可选).当您不选择生成默认的AXI4从接口默认的帧长度是作为一个常量生成的,而不是作为一个可编程寄存器。

样品的包装尺寸

指定向量数据是作为样本处理还是作为帧处理。

  • 一个也没有。这是默认值。当指定None时,向量被视为帧,向量元素一个接一个地流化。例如,当输入是第一个时钟周期中的6乘1向量时,第一个向量元素流化,第二个向量元素流化,以此类推。要使用此模式,模型必须包含用于输入的Serializer块和用于输出的反序列化块。的包装方式样品的包装尺寸设置为None。

  • 所有人。当您指定All时,向量被打包在一起并在单个时钟周期中流化。例如,当输入是一个6乘1的向量时,所有向量元素都打包在一起,并在单个时钟周期中进行流处理。在这种情况下,可以使用包装方式选择。

包装方式

属性时,指定如何打包向量元素样品的包装尺寸设置为“所有”。打包模式适用于AXI4-Stream从通道和主通道。在主通道上,数据使用位对齐或幂2对齐格式打包。在从通道上,数据将根据主通道的打包格式进行解包。

  • 对齐。在这种模式下,向量元素直接挨在一起。如果打包的位宽小于AXI4-Stream通道宽度,那么打包的数据将用零填充以匹配通道宽度。

    例如:

    • AXI4-Stream通道宽度为256位。

    • 向量是30位长,有4个向量帧。总的数据宽度是120位。

    当打包模式设置为位对齐时,AXI4-Stream数据的打包如图所示

    填充零位对齐的矢量数据

  • 2的幂排列。在这种模式下,向量元素首先用零填充到两个边界的最接近的幂次。然后,将填充元素打包在一起。如果打包的向量位宽小于AXI4-Stream通道宽度,则打包数据将被填充以匹配通道宽度。

    例如:

    • AXI4-Stream通道宽度为256位。

    • 向量是30位长,有4个向量帧。总的数据宽度是120位。

    当打包模式设置为2对齐的功率时,AXI4-Stream数据被打包,如图所示:

    向量数据的2次方

    每个位宽为30的向量元素都被填充位宽为2的零,以将其扩展到32,即最接近2边界的幂次。

限制

将标量或矢量DUT端口映射到AXI4-Stream接口时:

  • 赛灵思公司®Zynq®-7000或英特尔®第四的®Prime必须是你的目标平台。

  • Xilinx Vivado®或英特尔Quartus Prime必须是您的合成工具。

  • 处理器/ FPGA同步一定是自由奔跑。

当您使用基于框架的建模时,您不能使用除Data和Valid之外的协议信号。例如,不支持Ready和TLAST。金宝app

相关的话题

相关的话题