基于AD9361/AD9364模拟器件的软硬件协同设计QPSK收发
这个例子展示了如何在Zynq无线电平台上实现算法,这些算法被划分在ARM和FPGA结构上。QPSK发射和接收功能分别在硬件和软件上实现,并映射到无线电平台,如下图所示。
所需产品:下载188bet金宝搏
金宝app
通信工具箱
高密度脂蛋白编码器
Xilinx Zyn金宝appq的HDL编码器支持包
嵌入式编码器
金宝app仿真软件编码器
Xilinx Zynq嵌入式编金宝app码器支持包
Xilinx zynq无线电通信工具箱支持包(金宝app此包)
简介
在本例中,QPSK系统的发送和接收FPGA实现被组合到一个HDL IP核中,并在Zynq可编程逻辑(PL)上实现。数据编码和解码通过代码生成在Zynq ARM处理器上运行。一些控制参数被添加到FPGA IP核,以显示如何使用从Simulink访问的AXI4-Lite寄存器实时调整设计。金宝app
设置
如果您还没有这样做,请确保您遵循硬件-软件协同设计的安装在文档中。
硬件生成模型
硬件生成模型用于开发希望在FPGA结构上实现的功能。hdl优化的QPSK发射机和接收机建模,然后在Zynq无线电平台的FPGA结构上实现。在这个例子中,我们在一块单板上发射和接收,但是,这个例子可以修改为在频分双工(FDD)中工作,方法是将发射和接收中心频率分开,并在两块单独的板上使用相同的模型。
硬件/软件划分:一般来说,FPGA的可编程逻辑用于高速率的信号处理,而ARM用于较慢速率的控制功能。在本例中,QPSK发送和接收物理层前端是在可编程逻辑上实现的,因为这些包括增益控制、滤波和频率补偿等高速率操作。数据编码和解码的速度要慢得多,并且是在ARM上实现的,ARM将消息解码后发送到主机进行打印。
用于实现FPGA IP核和生成软件接口模型的IP核生成工作流有一些特定的要求:
在HDL子系统的端口上不支持复杂的输入和输出。金宝app因此,实信号和虚信号必须在子系统边界处建模。
子系统的数据输入和输出使用单独的数据和有效信号进行建模。子系统的输入和输出时钟速率必须相等,在Simulink中,数据和有效线路必须以相同的采样速率驱动。金宝app有效信号还必须在用户逻辑的输入和输出处建模。
axis -lite控制端口txSrcSelect:控制输入txSrcSelect
添加以允许对传输的数据进行某些控制。的txSrcSelect
端口用于在两个不同的数据源之间为发射机进行选择。如果txSrcSelect
端口为true,发射器的数据源将是存储在FPGA fabric上的查找表,接收到的数据应该类似于其他QPSK示例中看到的“Hello World 0XX”字符串。如果txSrcSelect
端口为false,则接收到的数据的数据源将是ARM处理器,ARM处理器将实时生成样本并将其发送到FPGA fabric上的发射器。在这种情况下,信息将是“*Zynq HW/SW Co-design*”。消息文本取自工作空间变量txtStr
可以在编译时对其进行修改以更改消息。注意,该字符串的长度必须小于24个字符。
AXI4-lite控制端口rxStreamEnable:控制输入rxStreamEnable
,以确保HDL算法仅在该输入为真时处理数据。的rxStreamEnable
端口总是true,用于模拟硬件生成模型。当整个设计在Zynq Radio平台的FPGA结构和ARM处理器上实现时,只有当发射器HDL算法已经开始传输有效数据时,这个值才会被设置为true,以确保接收器正确锁定。
您可以运行该模型并确认其操作。双击开关内部Tx开关您可以选择从哪个源进行传输。请注意,转到而且从块用于模拟天线连接,并将发送用户逻辑输出端的传输数据传递到接收用户逻辑的输入端。
IP核生成流程
一旦您对硬件子系统的模拟行为感到满意,您就可以开始生成HDL IP Core的过程,将其与SDR参考设计集成,并生成在ARM上运行的软件。
在为目标定位做准备时,必须通过调用设置Xilinx工具链hdlsetuptoolpath
.例如:
> > hdlsetuptoolpath (“ToolName”,“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代码生成。
第四步将新生成的IP核心集成到更大的Zynq特别提款权参考设计,生成比特流,帮助你加载到董事会。
按顺序执行每个步骤以体验完整的工作流程,或者,如果您已经熟悉准备和HDL代码生成阶段,请右键单击左侧目录中的步骤4.1并选择运行到选定的任务
.在步骤2或步骤3中,您不应该修改任何默认设置。
软件生成模型和块库
在步骤4.2中,工作流生成了一个Zynq软件生成接口模型和一个块库。单击
运行此任务
按钮,使用默认设置。
软件接口库
该库包含从HDL_QPSK子系统生成的AXI Interface块。注意,这只公开了AXI4-lite控制端口,而不公开数据端口。数据端口出现在接收器/发射器块上,代表FPGA用户逻辑和ARM之间的数据接口。如果您在下游模型中使用库块,那么当您运行工作流时,您对HDL子系统所做的任何更新都将自动传播到这个库,然后传播到软件生成模型。在本例中,硬件生成模型不包含任何SDR传输或接收块,因此无法填充这些块上的参数。使用库块时,必须确保为应用程序正确配置参数。
软件接口模型
软件接口模型可以作为针对Zynq的完整软件开发的起点:外部模式模拟、处理器在环和完全部署。注意,这个生成的模型将在每次运行步骤4.2时被覆盖,因此建议将这个模型保存在一个唯一的名称下,并在其中开发软件算法。提供了一个软件接口模型,它展示了您可以如何决定构建这个模型,请参阅部分在Zynq板上运行软件和硬件.
位流生成和加载
工作流的其余部分用于为FPGA结构生成位流,并将其下载到电路板上。
在步骤4.3中,工作流顾问为FPGA结构生成一个位流。您可以通过勾选所选选项来选择在外部shell中执行此步骤
在外部运行构建过程
.此选择允许您在构建FPGA映像时继续使用MATLAB。在完成一些基本的项目检查后,该步骤将在几分钟内完成,并且该步骤将被标记为绿色复选标记。但是,必须等到外部shell显示成功的位流构建后才能继续下一步。
步骤4.4下载比特流到设备上。在继续此步骤之前,调用
zynq
函数,以确保MATLAB设置为正确的无线电硬件的物理IP地址。
>> devzynq = zynq(“linux”,“192.168.3.2”,“根”,“根”,“/ tmp”);
默认情况下,无线硬件的物理IP地址为192.168.3.2。如果在硬件设置过程中更改了无线电硬件IP地址,则必须提供该地址。
另外,如果你想加载外的比特流工作流的顾问,创建一个SDR无线电对象并调用downloadImage
函数在对象上。
如果在步骤1.1中,您选择了ADI RF SOM, ZC706和FMCOMMS2/3/4, ZedBoard和FMCOMMS2/3/4,或ZCU102和FMCOMMS2/3/4无线电设备,创建一个AD936x无线电对象。
>> radio = sdrdev(“AD936x”);
如果在步骤1.1中选择了ZC706和FMCOMMS5无线电设备,则创建一个FMCOMMS5无线电对象。
>> radio = sdrdev(“FMCOMMS5”);
下载比特流使用无线电对象接口选定的无线电设备。
> > downloadImage(广播,“FPGAImage”,...“hdl_prj \ vivado_ip_prj \ vivado_prj.runs \ impl_1 \ system_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,双击“Selected Hardware Board Target”块以更改配置,以使用Xilinx Zynq UltraScale+ MPSoC ZCU102 IIO Radio板目标。
该模型不断地发送和接收数据,因此它已被配置为从Transmit中断运行。这确保了ARM和FPGA在同步运行,并意味着软件将由帧速率的调度tick驱动。
为了确保ARM处理器的有效使用,通过使用For迭代器子系统和MATLAB函数块一次连接50帧,传输帧大小已增加到10000帧。随后的速率转换块强制来自For迭代器子系统的数据速率与传输数据速率匹配。
由于源开关在磨合时拨动时可能会发生下流,发射机下流尚未连接到停止块
监视和调优
模式。这是由于增加了所需的处理监视和调优
模式寄存器写入。请参阅下面使用UDP块运行模型来控制硬件的部分。
的
rxStreamEnable
AXI4-lite控制端口延迟2帧周期。这确保了发射器在接收器之前运行,以获得最健壮的性能。
由于QPSK接收器包含两次操作的下采样,用户逻辑输出处的有效信号用于将有效采样率降低到时钟速率的一半。在模型中,ARM处理器的帧速率因此被设置为采样速率乘以帧大小的一半。由于同样的原因,接收机的帧大小是发射机的一半。
接收超时时间已设置为200S,它相对于帧周期很小。
在Zynq板上运行软件和硬件
监视和调优
模式允许您从Simulink模型控制配置。金宝app一旦设计运行,从胳膊或采购数据之间切换Tx开关切换的FPGA结构。
一旦ARM解码了QPSK消息,它就会使用软件接口模型中的UDP发送块通过以太网链路将结果发送回主机。UDP发送块已经使用主机的默认IP地址“192.168.3.1”配置。如果在硬件安装过程中更改了IP地址,则必须提供该地址。提供了一个简单的UDP接收模型,可用于接收解码数据并在诊断查看器中显示结果。
您还可以完全部署设计以在板上运行,与Simulink断开连接。金宝app2 .在“Si金宝appmulink”工具栏中单击构建、部署和启动.在此模式下,您将无法调优参数。
使用UDP块控制用户逻辑
监视和调优
Mode需要在硬件上运行的软件中包含一些开销,以处理主机和单板之间的通信。从软件接口模型中可以看到,在ARM和FPGA发射源之间切换会导致发射下流。提供了一个可供选择的接口模型,展示了如何将UDP块用作需要较少开销的替代交换机制。
在这个模型中,开关已经被UDP接收块所取代,它将能够接收UDP包并输出源选择值。对模型作了进一步的修改。
发射机下流现在已经连接到一个停止块,这将导致模型退出每当检测到下流。当硬件启动时,已使用Step源对前十帧周期的溢出信号进行门控。在发送端执行缓冲时可能会遇到一些下流,然后在接收端两帧后开始时再次出现下流。接收初始化将导致一次性加载的处理器可能会导致下溢。
UDP Receive块的默认输出值为0,因此在UDP Receive块和多路复用器之间放置了一个逆变器,以确保发射机与FPGA发射源一起启动。2 .在“Si金宝appmulink”工具栏中单击构建、部署和启动.一旦模型部署到硬件上,就可以使用UDP发送源来驱动发送源的选择。
提供了一个简单的UDP发送器模型,可用于通过以太网链路驱动硬件上的发送源选择。在发射器模型中发现的UDP发送块已经使用无线电的默认IP地址“192.168.3.2”进行了配置。如果在硬件安装过程中更改了IP地址,则必须提供该地址。UDP接收块包括在这个模型中。它可用于接收解码后的数据并在诊断查看器中显示结果。
此模型已配置为运行单个步骤,并发送包含源选择值的单个UDP包。设置源选择为您想要的源,并单击播放发送UDP控制包。