主要内容

基于ads - b收发器

基于分组的系统在无线通信中很常见。数据通过空中接收,并在计算设备上解码为离散分组数据。对于给定的系统需求,很难设计一个系统并直接在SoC上实现,因为它通常需要在硬件上进行长时间的调试和集成迭代,因为在设计时很难考虑硬件的影响。在本例中,您将根据自动相关监视广播(ADS-B)标准设计基于数据包的飞机跟踪应用程序,该应用程序在FPGA和嵌入式处理器之间进行划分。与传统方法不同,在使用SoC块集在硬件上实现之前,您将使用内存接口模拟应用程序设计,以缩短开发时间。然后,您将通过从模型自动生成的代码在硬件上验证设计。

金宝app支持的硬件平台:

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

  • ZedBoard™+ Analog Devices 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缓冲区的数量会减少样本退出,但会对延迟产生不利影响。

选择“缓冲区数量”值,以便您能够在不影响最大延迟要求的情况下满足Drop samples要求。

对于本例,在ZC706上测量的平均任务持续时间为114us。每个包的持续时间为120us。即使数据包背靠背到达,它们也可以用最少的帧缓冲区进行处理,因为平均而言,任务是在新数据包到达之前处理的。因此,将帧缓冲区的数量设置为可能的最小值3。

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

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

  • 外部I / O:模型的这一部分包含AD9361射频输入和输出块,它们使用一个简化的通道模型相互连接。此外,该区域有连接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以匹配允许的系统容量。

打开逻辑分析仪窗口以查看波形,并注意到内存传输发生在4个样本或16字节的缓冲区中。

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

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

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

硬件需求分析

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

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

设置NumAircraft至990(每163us发送一条新消息),以模拟飞机消息的背靠背到达。修改任务管理器块上的任务规范,以模拟处理器上的更多计算负载。在“模拟”选项卡上,通过将第二行的百分比值设置为100%,第一行的百分比值设置为0,选择第二个分布。这将分配163us的平均任务持续时间,这将导致某些任务执行的时间超过允许的时间。将模拟时间设置为0.1ms并进行模拟。对于990个飞机,消息到达率为990*6.2=每秒6138条消息。因此,丢包要求为6138/105=每秒58条消息或0.1秒内5.8条消息。在逻辑分析器中的模拟通知中,由于删除了18条消息,因此违反了此要求。

在硬件上实现和运行

本节要求的产品如下:下载188bet金宝搏

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

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

  • 点击“查看/编辑内存地图”,在“查看内存地图”界面查看内存地图。单击“Next”。

  • 在“选择项目文件夹”屏幕上指定项目文件夹。单击“Next”。

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

  • 在“验证模型”界面,按“验证模型”,以检查要实施的模型是否兼容。单击“Next”。

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

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

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

  • 关闭外壳以终止合成。

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

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

拷贝文件(fullfile (matlabshared.sup金宝appportpkg.getSupportPackageRoot,“工具箱”,“soc”,...“金宝appsupportpackages”,‘xilinxsoc’,“xilinxsocexamples”,“比特流”,...“soc_ADSB-zc706.bit”),”。/ soc_prj ');

实现在ZedBoard:要在ZedBoard上实现该模型,必须先将模型配置为ZedBoard,并设置如下示例参数。开放模型配置参数,导航到硬件实现选项卡,然后执行以下操作:

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

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

  • 引导到目标硬件资源>FPGA设计(调试)选项卡并启用包括AXI互连监视器

  • 引导到设备详细信息并选择金宝app支持很久在顶部和处理器模型上。

接下来,打开SoC Builder并按照前面针对Xilinx®Zynq®ZC706所述的步骤进行操作。修改拷贝文件用于匹配Zedboard位流“soc_ADSB-Zedboard.bit”的命令。

分析结果

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

总结

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