主要内容

基于ads - b收发器

基于数据包的系统是常见的无线通信。通过空气接收数据,并在计算设备上作为离散分组数据进行解码。对于给定的系统要求,很难设计系统并直接在SOC上实施,因为它通常涉及调试和集成的长期迭代,因为在设计时难以考虑硬件效果。在此示例中,您将根据自动依赖监视广播(ADS-B)标准,在FPGA和嵌入式处理器之间进行分区设计基于数据包的飞机跟踪应用程序。与传统方法不同,您将在使用SoC Sloc Sets缩短开发时间的硬件上使用内存接口模拟应用程序设计。然后,您将通过从模型中自动生成的代码来验证硬件上的设计。

万博1manbetx支持的硬件平台:

  • Xilinx®Zynq®ZC706评估试剂盒+ Analog Devices®FMCOMMS2/3/4卡。

  • 刨花板™ + 模拟设备FMCOMMS2/3/4卡。

设计任务和系统需求

根据ADS-B标准,消息分组包含总共120位,其具有8位前导码和关于包括其位置和速度的飞行器的112位。对于介绍模式-S信号传播方案和用于跟踪飞机的ADS-B技术,请参阅“使用MATLAB®”示例在“通信工具箱”示例的“飞机跟踪”。

我们的任务是设计一个接收ADS-B信号的系统,并按照以下性能要求进行解码:

  • 延迟时间:0.5秒

  • Drop sample rate: < 1 in 105 messages

  • 吞吐量:0.125 MBps(最大300架飞机的容量)

使用SoC模块集进行设计

设计参数:数据作为样本帧从FPGA跨共享内存传输到处理器。有两个关键的设计参数,框架大小缓冲区数影响上述性能要求。

  • 框架大小:“帧大小”是一个帧中样本的数量。它将用于确定内存通道中的缓冲区大小。

  • 缓冲区数:内存通道中的帧缓冲区数。FPGA算法将数据连续写入内存作为帧缓冲区,然后处理器读取这些帧缓冲区以执行其识别算法任务。

满足系统要求的设计参数选择如下:

设计以满足延迟需求:时延是指FPGA逻辑接收到数据到处理器准备好处理数据的时间间隔。它包括两部分,通过FPGA逻辑的延迟和处理器可用来处理数据的延迟。

通过FPGA逻辑的延迟是通过FPGA处理数据所需的时间。这通常是在MHz范围内运行的时钟周期数的顺序。处理器可用来处理数据的延迟,是由采样通过FIFO和内存帧缓冲区从FPGA传输到处理器所需的时间决定的。如果我们将FPGA FIFO的大小等效为一个帧缓存,那么最大延迟可以写成如下所示:

$最大延迟= (NumberOfBuffers + 1) * (TimeToGatherAFrame)$

由于收集帧的时间与帧大小成正比,因此数据传输中的最大延迟与帧大小和缓冲区的数量成正比。

采集帧的时间对于连续流应用来说是一个常数,等于帧大小乘以FPGA输出采样时间。然而,对于基于异步包的系统,这个时间还取决于包到达的频率。如果您选择的帧大小大于包的大小,那么您可能必须等待一个不确定的时间,以使所有的包必须到达一个帧。如果您选择的包大小小于包大小,那么它将对吞吐量产生不利影响。因此,对于基于异步分组的系统,帧大小等于分组大小是一个合理的选择。这允许每个包在FPGA处理完成后立即传输到处理器,从而减少了延迟。

对于本例,已解码的包长度为112位,封装在4个32位样本中。帧大小是4。

设计满足吞吐量要求:吞吐量是单位时间内输出的数据量。这是FPGA中的数据处理以及处理器的数据传输和处理的函数。对于FPGA逻辑,数据以MHz的时钟频率处理,并且每隔几个时钟周期产生一个输出。对于处理器的数据传输和处理,它是取决于帧大小。一个典型的折衷是,较大的帧大小会导致较高的吞吐量,但会增加延迟。相反,较小的帧大小会导致较低的延迟,但会降低吞吐量。

设计满足下降样品的要求:应用程序可以容忍由于任务执行时间的变化而导致的偶尔数据丢失。当处理器不能立即处理数据时,内存通道中的帧缓冲区会保存数据。因此,增加Frame缓冲区的数量会减少样本退出,但会对延迟产生不利影响。

选择缓冲区值的数量,使得您能够满足丢弃样本要求,而不会影响最大延迟要求。

对于此示例,ZC706上测量的平均任务持续时间为114US。每个数据包持续时间为120us。即使数据包返回回来,也可以通过最小数量的帧缓冲器进行处理,因为平均在新数据包到达之前处理任务。因此,将帧缓冲区的数量设置为最小可能3。

创建一个SoC模型:使用特别提款权模板用于创建无线通信应用程序的SoC模型。

上面的模型是用包围盒来描述的,包围盒将模型分割如下:

  • 外部I / O:模型的这一部分包含AD9361 RF输入和输出模块,这些模块使用简化的通道模型相互连接。此外,该区域还有连接FPGA逻辑的LED模块。

  • FPGA:模型的FPGA部分包含在单独的模型中设计的FPGA算法,并在这里使用模型引用实例化。

  • 记忆:介绍FPGA与处理器之间的内存通道。它模拟HW/SW连接中的延迟。

  • 注册通道:本节介绍处理器配置的三个FPGA寄存器。

  • 处理器:此部分包含连接到处理器模型的任务管理器。任务管理器控制处理器任务的调度。处理器算法和初始化任务在单独的模型中建模,并使用模型引用在此处实例化。

FPGA模型包含ADS-B发射机算法以可变速率传输测试ADS-B包ADS-B接收机算法解码接收到的ADS-B信息。

处理器模型包含处理器算法将所接收的ADS-B数据包解压缩到信息位中,并通过UDP发送块发送到另一个系统以报告飞机信息。处理器算法任务表示为dataTask在任务管理器块中,并指定为事件驱动。任务管理器通过缓冲区就绪事件异步调度数据rdEvent在内存通道中。

初始化函数子系统初始化适当的硬件配置寄存器。AD9361模块设置所附FMC射频板的中心频率、增益模式和基带采样率。其他块模拟ADS-B包检测器数据路径的三种内存映射配置。其中包括输入到接收算法的选择,测试数据包从FPGA发送的周期和检测算法的阈值。

该模型soc_ADSB_UDP_HostPrintout是一个基于主机UDP的接收模型,用于解码ADS-B消息。运行此模型并行于ADSB仿真或部署模型,以显示解码的ADS-B消息,也可选地映射飞机位置。

模拟

运行模型以可视化FPGA和处理器之间的数据传输。数据包到达之间的时间间隔是飞机数量的函数。假设系统要求探测300架飞机,则平均每秒将有300*6.2 = 1860条消息(或每1/1860 = 0.54 ms一条消息)。你可以使用这个变量设置飞机的数量NumAircraft这反过来又设置了初始化函数子系统。默认设置为300以匹配允许的系统容量。

打开Logic Analyzer窗口查看波形,注意内存传输发生在4个样本或16个字节的缓冲区中。

如果需要查看外部内存占用率,请打开Mem控制器块,选择性能选项卡并单击查看性能的情节。选择所有母版并单击创建绘图。该曲线显示了0.125 Mbps的带宽。由于每32us传输4个字节的数据,所以预期的带宽为4/32E-6 = 0.125 Mbps。

使用Simulation Data Inspector,您可以可视化任务执行计划。数据任务由来自FPGA的事件驱动,该事件通知处理器一个数据包已由FPGA解码、写入外部内存并由DMA驱动程序读取。

要查看解码的消息,运行同伴UDP接收模型。该模型将在GUI上显示飞机跟踪信息。

硬件需求分析

如前所述,由于114us的平均任务持续时间小于120us的数据包持续时间,因此在传输到处理器的过程中,消息不会平均丢弃。这可以通过使用信号查看FIFO中丢弃的样本数来确认icFIFODroppedCount在仿真数据检查器中。

SoC模型可用于探索设计空间。考虑最坏的情况,当平面消息被密集接收时,处理器上有更多的计算负载。您可以修改模型设置并模拟并确定在这种更激进的场景中是否丢弃数据包。

设置NumAircraft到990(每163us每163us的新留言)模拟返回到返回的平面消息到达。修改任务管理器块上的任务规范,以模拟处理器上的更多计算负载。在“模拟”选项卡上,通过在第二行上设置百分比为100%和第一行0%来选择第二个分发。这为163us的平均任务持续时间分配,这将导致某些任务执行时间超过允许的时间。将模拟时间设置为0.1ms并模拟。对于990个平面,消息到达率为990 * 6.2 =每秒6138条消息。因此,下降数据包要求是每秒6138/105 = 58条消息,或0.1秒内的5.8条消息。在逻辑分析仪中的仿真通知后,此要求违反为18条消息已被删除。

实现并运行硬件

本节要求的产品如下:s manbetx 845

要在受支持的SoC板上实现该模型,请使用万博1manbetxSoC建设者工具。默认情况下,模型将在上面实现Xilinx®Zynq®ZC706评估试剂盒因为它配置了那个板。打开SoC建设者,选择Simulink工具条中的“System on Chip”选项卡,然后单击“万博1manbetxConfigure, Build, and Deploy”按钮。一旦SoC Builder打开,遵循以下步骤:

  • 在“设置”屏幕上选择“构建模型”。单击“下一步”。

  • 点击“查看/编辑内存地图”,在“查看内存地图”界面查看内存地图。点击下一步'。

  • 在“选择项目文件夹”屏幕上指定项目文件夹。点击下一步'。

  • 在“选择构建操作”屏幕上选择“构建,加载和运行”。点击下一步'。

  • 在“验证模型”界面,按“验证模型”,以检查要实施的模型是否兼容。点击下一步'。

  • 在“构建模型”屏幕上单击“构建”开始构建模型。当FPGA合成开始时,外部外壳将打开。点击下一步'。

  • 在“连接硬件”界面单击“测试连接”,测试主机与SoC板的连通性。单击“Next”进入“Run Application”界面。

FPGA合成可能需要超过30分钟才能完成。要节省时间,您可能希望按照以下步骤使用提供的预生成的比特流:

  • 关闭外壳以终止合成。

  • 通过在下面运行命令,将预生成的比特流复制到项目文件夹中,然后

  • 点击“加载并运行”按钮,加载预生成的比特流并在SoC板上运行模型

copyfile(完整文件(matlabshared.supp万博1manbetxortpkg.getSupportPackageRoot,“工具箱”“soc”......“万博1manbetxsupportpackages”'xilinxsoc'“xilinxsocexamples”'比特流'......'soc_adsb-zc706.bit'),”。/ soc_prj ');

ZedBoard上的实现:要在ZedBoard上实现该模型,必须先将模型配置为ZedBoard,并设置如下示例参数。开放模型配置参数,导航至硬件实现标签并执行以下操作:

  • 选择ZedBoard从顶部和处理器模型的“硬件板”下拉列表中。

  • 导航目标硬件资源>FPGA设计(顶级)选项卡中,使包括MATLAB作为AXI主IP用于基于主机的交互和集合IP核时钟频率(MHz)4 MHz。

  • 导航目标硬件资源>FPGA设计(调试)标签和启用包括AXI互连监视器

  • 导航设备详细信息并选择万博1manbetx支持很久在顶部和处理器模型上。

接下来,打开SoC Builder并按照以前用于上面的Xilinx®Zynq®ZC706所示的步骤。修改拷贝文件命令匹配zedboard bitstream'soc_adsb-zedboard.bit'。

分析结果

要启用处理器任务评测,请打开配置参数并导航到硬件实现>硬件板设置>处理器上的任务分析然后选择“在SDI上显示”和“保存到文件”。将模拟停止时间设置为10秒,并在外部模式下运行模型。模拟完成后,打开模拟数据检查器(SDI)并导航到最新运行和添加信号DataReadTask的阴谋。可以看到,仿真模型准确地预测了应用程序在硬件上的执行情况。

总结

这个例子展示了如何使用SoC Blockset来设计基于分组的ADS-B标准以满足系统需求。通过模拟以存储通道作为FPGA与处理器接口的设计,验证了在设计时满足了系统的吞吐量和丢包要求。根据模型在SoC设备上实现了设计,并在硬件上验证了结果。虽然ADS-B不是一个计算密集型的标准,但它有助于演示用于SoC设备上实现的基于分组的系统的设计过程。对于这个应用程序或另一个基于包的应用程序,您可以按照相同的设计过程来满足更多计算密集型需求。