主要内容

使用模拟设备AD9361/AD9364的硬件/软件协同设计QPSK发送和接收

这个例子展示了如何在Zynq无线电平台上实现算法,这些算法是跨ARM和FPGA结构划分的。QPSK发送和接收功能在硬件和软件中实现,并映射到无线电平台,如下图所示。

所需产品:s manbetx 845

  • 万博1manbetx

  • 通信工具箱

  • HDL编码器

  • Xilinx Zyn万博1manbetxq的HDL编码器支持包

  • 嵌入式编码器

  • 万博1manbetxSimulink编码器

  • Xilinx Zynq的嵌入式万博1manbetx编码器支持包

  • 基于Xilinx Zynq的无线电通信工具箱支万博1manbetx持包(此包)

介绍

在此示例中,QPSK系统的发射和接收FPGA实现被组合到一个HDL IP核中,并在Zynq可编程逻辑(PL)上实现。数据编码和解码通过代码生成在Zynq ARM处理器上运行。将一些控制参数添加到FPGA IP核,以显示如何使用从Simulink访问的AXI4 Lite寄存器实时调整设计。万博1manbetx

安装程序

如果您尚未这样做,请确保遵循软硬件协同设计安装在文件中。

硬件生成模型

硬件生成模型用于开发希望在FPGA结构上实现的功能。对HDL优化的QPSK发射机和接收机进行建模,然后在Zynq无线电平台的FPGA结构上实现。在本例中,我们在单板上发送和接收,但是,可以通过移动发送和接收中心频率,并在两个单独的板上使用相同的模型,将本例修改为在频分双工(FDD)中工作。

打开模型。

硬件/软件分区:通常,FPGA的可编程逻辑用于高速信号处理,而ARM用于低速控制功能。在此示例中,QPSK发射和接收物理层前端在可编程逻辑上实现,因为这些包括诸如增益控制、滤波和频率补偿的高速率操作。数据编码和解码的速度要慢得多,并且在ARM上实现,ARM对消息进行解码并发送到主机进行打印。

用于实现FPGA IP核并生成软件接口模型的IP核生成工作流有一些特定要求:

  • HDL子系统的端口不支持复杂的输入和输出。因此,实信号和虚信号必须在子万博1manbetx系统边界处建模。

  • 子系统的数据输入和输出使用单独的数据和有效信号建模。子系统的输入和输出时钟频率必须相等,在Simulink中,数据和有效线路必须以相同的采样率驱动。有效信号还必须在用户逻辑的输入和输出处建模。万博1manbetx

AXI4 lite控制端口txSrcSelect:控制输入txSrcSelect被添加以允许对传输的数据进行某种控制。这个txSrcSelectHDL子系统上的端口用于在变送器的两个不同数据源之间进行选择。如果txSrcSelect端口为true时,发送器的数据源将是存储在FPGA结构上的查找表,接收的数据应类似于在其他QPSK示例中看到的“Hello World 0XX”字符串。如果txSrcSelect端口为false,接收数据的数据源将是ARM处理器,ARM处理器将实时生成样本并将其发送到FPGA结构上的发射器。在这种情况下,消息将为“*Zynq HW/SW Co design*”。消息文本取自工作空间变量txtStr它可以在编译时修改以更改消息。请注意,此字符串的长度必须小于24个字符。

AXI4 lite控制端口rxStreamEnable:控制输入rxStreamEnable添加了确保HDL算法仅在该输入为真时处理数据的。这个rxStreamEnable对于模拟硬件生成模型,端口始终为真。当整个设计在Zynq无线电平台的FPGA结构和ARM处理器上实现时,只有当发射机HDL算法开始传输有效数据时,该值才会设置为真,以确保接收机正确锁定。

您可以运行此模型并确认其操作。双击开关内部Tx开关您可以选择从哪个源进行传输。注意后藤从…起模块用于对天线连接进行建模,并将发送用户逻辑输出处的发送数据传递给接收用户逻辑的输入。

IP核心生成工作流

一旦您对硬件子系统的模拟行为感到满意,就可以开始生成HDL IP核心的过程,将其与SDR参考设计集成,并生成在ARM上运行的软件。

在准备目标时,必须通过调用刀具轨迹。例如:

>>刀具轨迹(“工具名”,“Xilinx Vivado”,“刀具路径”,'C:\Xilinx\Vivado\2019.1\bin\Vivado.bat');

通过右键单击HDL_-QPSK子系统及其选择HDL代码/HDL工作流顾问.

  • 在步骤1.1中,选择IP核心生成工作流程和适当的Zynq无线电平台可从以下选项中选择:ADI RF SOM、ZC706和FMCOMMS2/3/4、ZedBoard和FMCOMMS2/3/4、ZCU102和FMCOMMS2/3/4、ZC706和FMCOMMS5。

  • 在步骤1.2中,选择接收和发送路径参考设计。可以将参考设计参数保留为默认值。

  • 在步骤1.3中,接口表可用于将用户逻辑信号映射到参考设计中可用的接口信号。在本例中,我们仅使用单个通道,因此通道1连接应连接到相关端口,如下所示。

  • 在步骤1.4中,根据系统的基带采样率,确保DUT合成频率设置为合理的数字。在装运示例中,采样率略高于520ksps,因此1MHz的合成频率就足够了。

  • 步骤2通过进行一些设计检查,为HDL代码生成准备模型。

  • 步骤3执行IP核心的实际HDL代码生成。

  • 步骤4将新生成的IP核心集成到更大的Zynq SDR参考设计中,生成比特流并帮助您将其加载到主板上。

按顺序执行每个步骤以体验完整的工作流,或者,如果您已经熟悉准备和HDL代码生成阶段,请右键单击左侧目录中的步骤4.1并选择运行到所选任务。您不必在步骤2或3中修改任何默认设置。

软件生成模型与模块库

  • 在步骤4.2中,工作流生成Zynq软件生成接口模型和块库运行此任务按钮的默认设置。

软件接口库

该库包含从HDL_QPSK子系统生成的AXI接口块。请注意,这仅公开AXI4 lite控制端口,而不公开数据端口。数据端口位于接收器/发射器块上,代表FPGA用户逻辑和ARM之间的数据接口。如果使用库块,则在下游模型中,您对HDL子系统所做的任何更新都将自动传播到此库,然后在运行工作流时传播到软件生成模型。在本例中,硬件生成模型不包含任何SDR传输或接收块,因此无法填充这些块上的参数ed.使用库块时,必须确保为应用程序正确配置参数。

软件接口模型

软件接口模型可用作Zynq的完整软件目标:外部模式模拟、处理器在环和完整部署的起点。请注意,每次运行步骤4.2时,此生成的模型都将被覆盖,因此建议以唯一名称保存此模型,并在其中开发软件算法。a已提供软件接口模型,该模型显示了您可能决定如何构建此模型,请参见第节在Zynq板上运行软件和硬件.

比特流生成和加载

工作流的其余部分用于为FPGA结构生成比特流并将其下载到电路板。

  • 在步骤4.3中,workflow advisor为FPGA结构生成一个位流。您可以通过勾选选择在外壳中执行此步骤从外部运行构建过程. 此选项允许您在构建FPGA映像时继续使用MATLAB。完成一些基本项目检查后,该步骤将在几分钟内完成,并且该步骤将标记为绿色复选标记。但是,在继续下一步之前,必须等到外部shell显示成功的位流构建。

  • 步骤4.4将比特流下载到设备上。在继续此步骤之前,请调用zynq使用以下语法执行函数,以确保使用无线电硬件的正确物理IP地址设置MATLAB。

>>devzynq=zynq(“linux”,'192.168.3.2',“根”,“根”,“/tmp”);

默认情况下,无线电硬件的物理IP地址为192.168.3.2。如果在硬件设置过程中更改无线电硬件IP地址,则必须提供该地址。

或者,如果要在外部加载位流工作流顾问,创建SDR无线电对象并调用下载图像在对象上的函数。

如果在步骤1.1中选择了ADI RF SOM、ZC706和FMCOMMS2/3/4、ZedBoard和FMCOMMS2/3/4或ZCU102和FMCOMMS2/3/4无线电设备,则创建AD936x无线电对象。

>>无线电设备(‘AD936x’);

如果在步骤1.1中选择了ZC706和FMCOMMS5无线电设备,则创建FMCOMMS5无线电对象。

>>无线电设备(“FMCOMMS5”);

使用与所选无线电设备接口的无线电对象下载比特流。

>>下载图像(收音机、,“FPGAImage”,...'hdl_prj\vivado_ip_prj\vivado_prj.runs\impl_1\system\u top.bit')%生成的位流的路径

QPSK软件接口模型的构建

提供了一个软件接口模型,该模型显示了如何修改生成的模型,以便为QPSK示例进行设置。此接口模型允许您在中运行模型监视和调谐模式或完全部署。

打开模型。

请注意,在软件接口模型中,AD936x变送器块处理帧到采样序列化。

设置要在ARM处理器上运行的软件模型

应用程序模型是按照软硬件协同设计工作流,第配置软件接口模型.

  • 该型号已配置为使用基于Xilinx Zynq-7000的板目标为以下硬件运行:ADI RF SOM ZedBoard和FMCOMMS2/3/4 ZC706和FMCOMMS2/3/4/5

  • 如果您使用的是ZCU102和FMCOMMS2/3/4,请双击所选硬件板目标块以更改配置,以使用Xilinx Zynq UltraScale+MPSoC ZCU102 IIO无线板目标。

  • 该模型连续发送和接收数据,因此已配置为从发送中断运行。这确保了ARM和FPGA同步运行,并意味着软件将以帧速率由调度时钟驱动。

为了确保ARM处理器的有效使用,通过使用For迭代器子系统和MATLAB功能块一次连接50帧,将传输帧大小增加到10000。随后的速率转换块强制For迭代器子系统的数据速率与传输数据速率相匹配。

  • 变送器底流未连接到止动块,因为在磨合时切换电源开关可能会发生底流监视和调谐模式。这是由于监视和调谐模式寄存器写入。请参阅下面关于使用UDP块运行模型以控制硬件的部分。

  • 这个rxStreamEnableAXI4 lite控制端口延迟2个帧周期。这确保发射机在接收机之前运行,以获得最稳健的性能。

  • 由于QPSK接收机包含二次下采样操作,因此使用用户逻辑输出处的有效信号将有效采样率降低到时钟率的一半。在该模型中,ARM处理器的帧速率因此被设置为采样率乘以帧大小的一半。出于同样的原因,接收机的帧大小是发射机的一半。

  • 接收超时已设置为200$\mu$s、 相对于帧周期而言,它很小。

在Zynq板上运行软件和硬件

监视和调谐模式允许您从Simulink模型控制配置。设计运行后,通过切换Tx开关在ARM或FPGA结构的数据源之间切换万博1manbetx。

一旦ARM解码了QPSK消息,它就会使用软件接口模型中的UDP发送块通过以太网链路将结果发送回主机。已使用主机“192.168.3.1”的默认IP地址配置UDP发送块。如果在硬件设置过程中更改了IP地址,则必须提供该地址。提供了一个简单的UDP接收模型,可用于接收解码数据并在诊断查看器中显示结果。

打开模型。

您还可以完全部署设计以在板上运行,并断开与Simulink的连接。在Simulink工具栏中,单击万博1manbetx构建、部署和启动. 在此模式下,您将无法调整参数。

使用UDP块控制用户逻辑

监视和调谐模式要求在硬件上运行的软件中包含一些开销,以处理主机和主板之间的通信。如软件接口模型所示,ARM和FPGA发送器源之间的切换导致传输下溢。提供了一个替代接口模型,显示UDP块如何n可以用作需要较少开销的替代切换机制。

打开模型。

在此模型中,交换机已被UDP接收块取代,该块将能够接收UDP数据包并输出源选择值。对模型作了一些进一步的修改。

  • 变送器下溢现在已连接到一个停止块,当检测到下溢时,该停止块将导致模型退出。硬件启动时,已使用一个阶跃源在前十帧期间对溢出信号进行选通。变送器执行缓冲时,可能会出现一些下溢,然后在r接收器在两帧后启动。接收器初始化将导致处理器上的一次性负载,这可能导致下溢。

  • UDP接收块的默认输出值为0,因此在UDP接收块和多路复用器之间放置了一个反相器,以确保发射机使用FPGA发射源启动。在Simulink工具栏中,单击万博1manbetx构建、部署和启动. 一旦模型部署到硬件上,就可以使用UDP发送器源来驱动传输源选择。

提供了一个简单的UDP变送器模型,可用于通过以太网链路在硬件上驱动传输源选择。发射机型号中的UDP发送块已使用无线电“192.168.3.2”的默认IP地址进行配置。如果在硬件设置过程中更改了IP地址,则必须提供该地址。此模型中包含UDP接收块。它可用于接收解码数据并在诊断查看器中显示结果。

打开模型。

此模型已配置为运行单个步骤并发送包含源select值的单个UDP数据包。将源选择设置为所需的源,然后单击播放发送UDP控制数据包。