此示例展示如何在 NI™ USRP™ 无线电的 FPGA 上部署雷达目标仿真算法。

介绍

在本例中,您将从 Simulink® 模型入手,该模型可模拟最多四个雷达目标响应。您将按照分步指南,在 Simulink 中从该模型生成比特流,并使用生成的 MATLAB® 主机接口脚本将其部署到 NI USRP 无线电上。该示例允许您发送线性 FM 雷达脉冲序列,然后在 MATLAB 中捕获并绘制模拟目标距离-多普勒响应。

在这里插入图片描述
有关如何在 NI USRP 无线电的 FPGA 上原型化和部署软件定义无线电算法的更多信息,请参阅目标 NI USRP 无线电工作流程。

设计概述

该示例使用了来自雷达目标仿真器和 HDL 编码器(雷达工具箱)示例的算法。该算法接收线性 FM 脉冲序列,并通过对接收波形应用可变距离延迟、多普勒频移和增益来模拟最多四个目标。然后,该算法以已知的时间偏移重新传输修改后的波形。此设计修改了接口,使您能够将生成的比特流部署到 NI USRP 无线电的 FPGA 上。

在这里插入图片描述

打开 Simulink 模型

Simulink 模型采用硬件建模方式实现目标仿真算法,并使用支持 HDL 代码生成的模块。它采用定点算法,并包含控制模型数据流的控制信号。

从 MATLAB 打开模型。

open_system('wtRADARTargetEmulatorSL');

在这里插入图片描述
该模型为子系统提供数据并保存其输出数据wtRADARTargetEmulatorSL。

打开wtRADARTargetEmulatorSL子系统。

open_system('wtRADARTargetEmulatorSL/wtRADARTargetEmulatorSL');

在这里插入图片描述
数据流经这些块和子系统:

  • AND 块在每个突发的最后一个数据包的最后一个样本上声明突发结束 (EOB) 信号。

  • 该Multiple Target Emulator子系统模拟四个不同目标的响应。

  • 该Sum Channels子系统将来自四个目标的响应合并为单个数据流。

  • 每 256 个有效样本或 EOB 信号被断言时,分组块就会断言最后一个信号。

  • 该区域通过由txTimeOffsetControl retransmission time relative to receive time端口控制的固定值生成从无线电重新传输下一个数据包的时间戳。

打开Multiple Target Emulator子系统。

open_system('wtRADARTargetEmulatorSL/wtRADARTargetEmulatorSL/Multiple Target Emulator');

在这里插入图片描述
该Multiple Target Emulator子系统根据输入enable、delay、inc和gain端口,应用可变时间延迟、可变频移和可变衰减,模拟四个不同目标的响应。操作如下:

  • 当enable为真时,输入数据将提供给可变时间延迟。

  • 可变时间延迟将输入样本缓冲在内存中,缓冲的样本数量由延迟端口指定。

  • 延迟数据与数控振荡器 (NCO) 的输出相乘,以实现可变频率偏移。NCO 由inc端口值控制。

  • 延迟和移位的数据与增益端口值相乘,以实现可变衰减。

open_system('wtRADARTargetEmulatorSL');

在这里插入图片描述
每个目标的输入都被指定为wtRADARTargetEmulatorSL子系统上的输入寄存器端口:e1、e2、e3和e4对应于启用输入端口;d1、d2、d3和d4对应于延迟输入;i1、i2、i3和i4对应于inc输入端口;g1、g2、g3和g4分别对应于四个目标的增益输入端口。

模拟设计

通过仿真模型验证设计。启用四个目标并指定初始雷达截面 (RCS)、距离和速度。

targetEnabled = [true true true true]; % 设置为 true 以模拟目标
targetRCS = [1 2 3 4]; % dBsm 
targetRange = [5e3 15e3 3e3 5e3]; % m 
targetSpeed = [-200 -100 100 200]; % m/s

设置模型应用的相对增益所基于的最大增益。这可以避免由于定点数据类型造成的不必要的信号损失,并且可以通过使用无线电前端的无线电增益来计算。指定maxGain为空可在辅助函数中使用计算出的最高实际增益helperRadarTargetSimulationSetup。

maxGain = [];

使用辅助函数在 MATLAB 中设置模型所使用的目标仿真参数helperRadarTargetSimulationSetup。

sl_in = helperRadarTargetSimulationSetup(targetEnabled,targetRCS,targetRange,targetSpeed,maxGain);

运行 Simulink 模型。

sl_out = sim("wtRADARTargetEmulatorSL.slx");### Searching for referenced models in model 'wtRADARTargetEmulatorSL'.
### Total of 1 models to build.
### Building the rapid accelerator target for model: wtRADARTargetEmulatorSL
### Successfully built the rapid accelerator target for model: wtRADARTargetEmulatorSL

处理模拟输出数据并使用辅助函数绘制距离多普勒响应helperVisualizeRadarTargetSimulation。

创建距离多普勒响应对象来处理数据
在这里插入图片描述

设置环境和无线电

要使用 Wireless Testbench™ 连接 NI USRP 无线电,您必须首先安装并配置其他工具箱、支持包和第三方工具。更多信息,请参阅NI USRP 无线电安装指南。

如果您之前未保存过无线电硬件的无线电设置配置,请使用此radioSetupWizard功能打开“无线电设置”向导并按照步骤操作。要查看之前保存的无线电设置配置,请使用此radioConfigurations功能。

配置模型以生成 IP 核

首先,使用(HDL Coder)函数设置 Xilinx® 工具链。指定 Vivado® bin 目录的路径。更多信息,请参阅设置第三方工具。hdlsetuptoolpath

>> hdlsetuptoolpath('ToolName','Xilinx Vivado','ToolPath','/opt/Xilinx/Vivado/2021.1/bin');

在Simulink 工具条的“应用”选项卡中,选择“HDLCoder”。打开“HDL 代码”选项卡并按照以下步骤操作:# 确保子系统已在“代码”选项wtRADARTargetEmulatorSL中固定。要固定此选项,请在 Simulink 模型中选择子系统,然后单击固定图标。# 在“输出”>“IP 核”选项中选择“IP 核”。wtRADARTargetEmulatorSL

在这里插入图片描述
配置 HDL 代码生成设置

要打开“配置参数”窗口,请点击“HDL 代码”选项卡中的“设置”。然后,请按照以下步骤操作:

在HDL 代码生成面板的基本选项中,确保将语言设置为Verilog。默认情况下,HDL Coder 会在文件夹中生成 Verilog 文件hdlsrc。您可以选择其他位置。如果您进行了任何更改,请点击应用。
在这里插入图片描述
在HDL 代码生成 > 目标 > 工作流设置中,单击浏览并选择要保存生成的项目文件的项目文件夹。

在HDL 代码生成 > 目标 > 工具和设备设置中,将目标平台设置为USRP X410。如果您使用的是其他 USRP 无线电,请选择相应的目标平台并相应地调整参考设计参数。

在“HDL 代码生成”>“目标”>“参考设计设置”中,将“参考设计”设置为X1_200 10GigE,或者如果您使用的是其他 USRP 无线电,则设置为所需的参考 FPGA 映像。使用以下值设置参考设计参数:

  • 外部存储器- 设置为PL DDR Buffer通过无线电上的内存缓冲区传输样本。此设置可确保 MATLAB 和无线电之间的样本连续。

  • 输入流的数量- 设置为1,因为 DUT 连接到一个数据输入流。

  • 输出流的数量- 设置为1,因为 DUT 连接到一个数据输出流。

  • 天线数量- 设置为1,因为 DUT 有一个无线电接收和发射通道。

  • 采样率 (S/s) - 设置250e6为无线电支持的目标模拟器硬件所需的基带采样率。有关支持的采样率列表,请参阅NI USRP 无线电中的基带采样率。

  • BlockID - 设置为任意 32 位十六进制数。默认值为12345678。

  • DUT 时钟源- 设置为Radio。此选项选择无线电前端的主时钟速率 (MCR) 作为 DUT 时钟。

  • 流端口 FIFO 长度(样本) - 设置为Auto。

  • 寄存器端口 FIFO 长度(样本) - 设置为Auto。

在HDL 代码生成 > 目标 > 目标设置中,目标频率默认设置为无线电支持的最大 MCR。

单击“应用”。
在这里插入图片描述
有关更多信息,请参阅配置 HDL 代码生成设置。

配置目标接口

  • 在HDL Code选项卡中,单击Target Interface以打开 IP Core 编辑器。

  • 在“接口映射”选项卡中,单击重新加载端口接口映射选项Reload IP core settings and interface mapping table from model:
    在这里插入图片描述

  • 将 DUT 的输入寄存器指定为写入寄存器。

  • 为输入和输出流接口分配数据、有效、就绪、最后、突发结束 (EOB)、hastime 和时间戳信号。
    在这里插入图片描述
    每个流接口数据输入和输出端口都有一个选项菜单。要重新传输接收到的样本,请将源和接收器连接选项设置为Radio。对于这些adcDataIn选项,请将流缓冲区大小设置为32768,这是默认设置。缓冲区大小必须是 2 的幂,以确保最佳利用 FPGA RAM 资源。缓冲区大小根据样本数量指定。
    在这里插入图片描述
    单击以下按钮验证接口映射Validate IP core settings and interface mapping:
    在这里插入图片描述

生成并加载比特流

要从 IP 核生成比特流,首先从“构建比特流”菜单中打开部署设置,并确保选中“在外部运行构建过程”选项。此设置是默认设置,可确保比特流构建在外部 Shell 中执行,从而允许您在构建 FPGA 映像时继续使用 MATLAB。
在这里插入图片描述
在这里插入图片描述
点击“构建比特流”即可创建 Vivado IP 核项目并构建比特流。基本项目检查完成后,诊断查看器会显示一条Build Bitstream Successful消息以及警告消息。但是,您必须等到外部 shell 显示比特流构建成功后才能继续下一步。比特流构建过程可能需要几个小时。在显示构建成功提示之前关闭外部 shell 将终止构建。成功构建比特流后,此项目的比特流将以名称生成x4xx.bit,并位于build_X410_X1_200/build_X410_X1_200工作目录的文件夹中。

在“构建比特流”中,打开“部署设置”。在“程序目标设备”设置中,设置 IP 地址。默认值为 192.168.10.2。如果您在使用“无线电设置”向导设置硬件时更改了默认 IP 地址,请相应地设置 IP 地址。
在这里插入图片描述
要将比特流加载到收音机上,有两个选项:

  • 在后续步骤中使用生成的主机接口脚本加载比特流,该脚本调用该programFPGA函数。

  • 现在通过单击“构建比特流”菜单中的“编程目标设备”将比特流加载到设备上。

如果您的无线电设备是 USRP X310,则编程大约需要五分钟。对于其他无线电设备,则只需不到一分钟。有关更多信息,请参阅生成比特流和编程 FPGA。

生成和修改主机接口脚本

要生成 MATLAB 脚本,以便连接到无线电并在其上运行已部署的设计,请点击“HDL 代码”选项卡中的“主机接口脚本”。这将生成一个接口脚本文件和设置函数文件,它们特定于 IP 核的目标接口映射。更多信息,请参阅运行和验证硬件实现。

运行主机接口脚本

此示例提供了两个现成的实时脚本,用于连接、配置和控制部署在 FPGA 上的目标仿真算法的无线电设备。您可以选择使用单个无线电设备运行和验证 DUT,或者使用第二个无线电设备发送测试信号并接收响应。

在单无线电上运行并验证 DUT

打开RADARTargetEmulator_SingleDevice.mlx。运行此实时脚本,从 MATLAB 发送雷达脉冲序列,将脉冲序列接收到目标模拟器 DUT 中,发送目标模拟器响应,并将响应捕获到 MATLAB 中。
在这里插入图片描述
绘制响应图,并叠加目标位置和恒虚警率 (CFAR) 目标检测结果,以验证被测器件 (DUT) 的运行情况。该图显示了示例输出。
在这里插入图片描述

open("./RADARTargetEmulator_SingleDevice.mlx")

使用外部刺激运行 DUT

打开RADARTargetEmulator_MultiDevice.mlx。运行此实时脚本,在一个无线电的后台线程中模拟雷达场景。同时,在 MATLAB 主线程中,将第二个无线电配置为基带收发器,以发射雷达脉冲序列并捕获响应。
在这里插入图片描述
您还可以使用此方法来模拟其他无线电硬件的目标响应。

open("./RADARTargetEmulator_MultiDevice.mlx")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/92627.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/92627.shtml
英文地址,请注明出处:http://en.pswp.cn/web/92627.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyTorch 深度学习实战教程-番外篇04:卷积层详解与实战指南

标签:# 深度学习 #人工智能 #神经网络 #PyTorch #卷积神经网络 相关文章: 《Pytorch深度学习框架实战教程01》 《Pytorch深度学习框架实战教程02:开发环境部署》 《Pytorch深度学习框架实战教程03:Tensor 的创建、属性、操作与…

LeetCode 面试经典 150_数组/字符串_分发糖果(15_135_C++_困难)(贪心算法)

LeetCode 面试经典 150_数组/字符串_分发糖果(15_135_C_困难)题目描述:输入输出样例:题解:解题思路:思路一(贪心算法):代码实现代码实现(思路一(贪…

配置timer控制 IO的输出(STC8)

使用STC8的Timer控制IO输出 STC8系列单片机具有多个定时器,可以用于精确控制IO口的输出状态。以下是使用Timer0和Timer1控制IO输出的方法。 初始化Timer0 配置Timer0为16位自动重装模式,用于周期性控制IO输出: /************************ 定时…

【Python练习】086. 编写一个函数,实现简单的DHCP服务器功能

086. 编写一个函数,实现简单的DHCP服务器功能 086. 编写一个函数,实现简单的DHCP服务器功能 安装依赖库 示例代码 代码说明 示例输出 注意事项 扩展功能 DHCP服务器功能实现方法 依赖库安装 基本功能实现 功能说明 运行方法 注意事项 扩展功能 086. 编写一个函数,实现简单的…

生产环境Tomcat运行一段时间后,如何测试其性能是否满足后续使用

要测试生产环境中已运行一段时间的Tomcat性能是否满足后续使用需求,需从基础监控、负载压力测试、配置合理性校验、稳定性验证等多维度入手,结合工具和实际业务场景定位瓶颈,确保其能应对未来可能的流量增长。以下是具体方法和步骤&#xff1…

Qt中的设计模式:经典的MVC,MVP和MVVM

Qt中的设计模式:经典的MVC,MVP和MVVM 前言 ​ 笔者这里最近正在研究经典的三大 Model/View 框架,不得不说,我先前的确写过Qt在这里的体现,但是,笔者认为之前的文章中,我只是机械的memcpy的Qt的…

Windows浮动ip怎么配置

Windows浮动IP怎么配置,达到IP漂移的效果,方法肯定是有的,这里我推荐一款好用的高可用Vip漂移软件PanguVip,我们先看下最终达到的效果图,如下所示PanguVip软件免费下载百度网盘为您提供文件的网络备份、同步和分享服务…

[langchain] Sync streaming vs Async Streaming

我不太清楚langchain中的sync stream 和 async steam有什么关系和区别sync stream from langchain.chat_models import init_chat_model from langchain_deepseek.chat_models import ChatDeepSeek import dotenv dotenv.load_dotenv()messages [ ("system", &quo…

nginx下lua的实现机制、Lua错误处理、面向对象

nginx下lua的实现机制 nginxlua概述 nginx:功能由模块提供。 http模块、events模块,mail模块。 处理http请求的时候,可以利用模块做一些功能:eg:登录校验,js合并,数据库访问,鉴权。 …

Axure基于中继器实现的组件库(导航菜单、动态表格)

摘要 本文将为您详细介绍基于 Axure 的中继器组件库中的 9 个独特组件,这些组件不仅能够极大地提升您的原型设计效率,还能为您的项目增添令人惊叹的交互效果和视觉呈现。 引言 在当今快速发展的数字产品设计领域,原型设计工具的革新不断推动着…

Kafka 生产者与消费者分区策略全解析:从原理到实践

一、生产者分区策略1.1 分区好处(1)便于合理使用存储资源,每个Partition在一个Broker上存储,可以把海量的数据按照分区切割成一块一块数据存储在多台Broker上。合理控制分区的任务,可以实现负载均衡的效果。&#xff0…

高频面试点:深入理解 TCP 三次握手与四次挥手

在网络通信的世界里,TCP(Transmission Control Protocol,传输控制协议)是确保数据可靠传输的基石。其中,三次握手建立连接、四次挥手断开连接的过程,更是 Java 秋招面试中的高频考点。今天,我们就深入剖析这两个关键过程,结合原理、代码示例与面试真题,帮你吃透知识点…

k8s-nfs实现创建sc的两种方式

法一:基于 官方 NFS CSI 插件 法二:基于 nfs-subdir-external-provisioner 法一 官方 NFS CSI 插件 大致步骤# 安装 NFS sudo apt update sudo apt install -y nfs-kernel-server # 创建共享目录 sudo mkdir -p /data/nfs sudo chmod 777 /data/nfs # 配…

n8n 入门指南:更适合跨境出海搞钱的AI智能体

如果你最近刷到 AI 圈的分享应该会发现——n8n 又火起来了。其实 n8n 早在 2020 年左右就被程序员玩过一波,当时很多人拿它做网站自动发邮件、消息转发之类的“流程自动化”。但那时候 AI 还没这么卷,大家也没觉得多有用。n8n为什么最近又翻红&#xff1…

【数据分享】各省农业土地流转率(2010-2023)

数据介绍土地流转是推动农业规模化、现代化发展的关键机制。为助力相关研究,现分享一份覆盖全国30个省级行政区、时间跨度为2010-2023年的农业土地流转率面板数据集。本数据直接提取自权威统计年报,具有较高的参考价值。一、数据概览覆盖范围&#xff1a…

音视频时间戳获取与同步原理详解

引言:为什么音视频同步如此重要? 在音视频技术领域,"同步"是决定用户体验的核心要素。想象一下观看电影时画面与声音错位0.5秒的场景:角色说话时嘴唇动作与声音不匹配,爆炸场景的视觉冲击先于音效到达——这…

Day38--动态规划--322. 零钱兑换,279. 完全平方数,139. 单词拆分,56. 携带矿石资源(卡码网),背包问题总结

Day38–动态规划–322. 零钱兑换,279. 完全平方数,139. 单词拆分,56. 携带矿石资源(卡码网),背包问题总结 今天的是几道经典的“完全背包”题目。前两道题目,要区分求的是“价值”,还…

应用层Http协议(1)

应用层Http协议(1) 在互联网世界中,HTTP(HyperText Transfer Protocol,超文本传输协议)是一个至关重要的协议。它定义了客户端(如浏览器)与服务器之间如何通信,以交换或传…

elementui input无法输入问题

背景。开发小程序。自定义表单在pc段设置好input输入框属性后。 在小程序端无法输入原因:长度受限制,导致input组件的maxlength属性认为长度是0导致无法输入任何值。看解释是应为遇到空字符串等情况会设置为0解决。因为未找到设置maxlength为0处&#xf…

算法_python_学习记录_02

算法学习和视频学习过程中,有许多前几天还不知道的知识点,现在一点一点归纳整理出来,稳步前进,前进~ 20_贪心算法系列题 00_参考文档 详解贪心算法(Python实现贪心算法典型例题)_顺序贪婪算法-CSDN博客P…