主要内容

基于ads - b收发器

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

支持硬件平台:

  • Xilinx®Zynq®ZC706评估套件+ Analog Devices®FMCOMMS2/3/4卡。

  • ZedBoard™+ Analog Devices FMCOMMS2/3/4卡。

设计任务和系统要求

根据ADS-B标准,一个消息包包含总共120位,其中有一个8位的序言和112位关于飞机的信息,包括其位置和速度。有关用于跟踪飞机的Mode-S信令方案和ADS-B技术的介绍,请参阅通信工具箱中的“使用MATLAB®跟踪飞机”示例。

我们的任务是设计一个接收ADS-B广播报文并解码的系统,其性能要求如下:

  • 延迟时间:0.5秒

  • 下降抽样率:< 1 / 105消息

  • 吞吐量:0.125 MBps(最多可容纳300架飞机)

利用SoC块集进行设计

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

  • 帧大小:帧大小是一帧中样本的数量。它将用于确定内存中的缓冲区大小。

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

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

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

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

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

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

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

对于本例,解码后的包长度为112位,打包为4个32位样例。帧大小是4。

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

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

选择Number of Buffers值,以便能够满足Drop sample要求而不影响最大延迟要求。

对于本例,在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 Send块发送到另一个系统,用于报告飞机信息。处理器算法任务表示为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毫秒)。您可以使用该变量设置飞机的数量NumAircraft这反过来又设置了周期初始化函数子系统。默认设置为300,以匹配允许的系统容量。

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

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

使用模拟数据检查器,您可以可视化任务执行进度。数据任务由来自FPGA的事件驱动,该事件通知处理器一个包已由FPGA解码,写入外部存储器,并由DMA驱动程序读取。

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

硬件需求分析

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

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

设置NumAircraft到990(每163us一个新消息)模拟飞机消息的背靠背到达。修改task Manager块上的任务规范,以模拟处理器上更多的计算负载。在Simulation选项卡上,通过在第二行设置Percent值为100%,在第一行设置为0%来选择第二个分布。这将分配平均任务持续时间为163us,这将导致某些任务执行所需的时间超过允许的时间。设置模拟时间为0.1ms进行模拟。对于990架飞机,消息到达率为990*6.2 = 6138条消息/秒。因此,丢弃包要求是6138/105 =每秒58条消息或0.1秒5.8条消息。在Logic Analyzer中的模拟通知中,该要求被违反了,因为已经丢弃了18条消息。

在硬件上实现和运行

本节需要以下产品:2022世界杯八强谁会赢?

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

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

  • 点击“View/Edit Memory Map”在“Review Memory Map”屏幕上查看内存映射。单击“Next”。

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

  • 在“选择构建动作”屏幕上选择“构建,加载和运行”。单击“Next”。

  • 点击“验证”以检查在“验证模型”屏幕上实现的模型的兼容性。单击“Next”。

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

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

FPGA综合可能需要30分钟以上的时间才能完成。为了节省时间,你可以按照以下步骤使用预先生成的比特流:

  • 关闭外壳终止合成。

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

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

拷贝文件(fullfile (matlabshared.supportpkg.getSupportPackageRoot,“工具箱”“soc”...“supportpackages”“xilinxsoc”“xilinxsocexamples”“比特流”...“soc_ADSB-zc706.bit”),”。/ soc_prj ');

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

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

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

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

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

接下来,打开SoC Builder,并遵循前面所述的Xilinx®Zynq®ZC706的步骤。修改拷贝文件命令匹配Zedboard位流“soc_ADSB-zedboard.bit”。

分析结果

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

总结

本实例介绍了如何利用SoC Blockset设计基于分组的ADS-B标准,以满足系统需求。通过用内存作为FPGA和处理器之间的接口进行模拟设计,验证了在设计时满足了系统吞吐量和丢包的要求。根据模型在SoC器件上实现了设计,并在硬件上验证了结果。虽然ADS-B不是一个计算密集的标准,但它演示了在SoC设备上实现的基于分组的系统的设计过程是有用的。对于此应用程序或另一个基于包的应用程序的计算密集型需求,您可以遵循相同的设计过程。

另请参阅

Baidu
map