基于 FPGA 的单脉冲技术:算法设计(附源码)

news2024/12/22 20:33:21

一、前言

本例显示了开发单脉冲技术的工作流程的前半部分,其中信号使用数字下变频(DDC)进行下变频。本例中的模型适合在FPGA上实现。本示例重点介绍单脉冲技术的设计,以估计物体的方位角和仰角。

示例的第二部分是基于FPGA的单脉冲技术:代码生成,展示了如何从实现模型生成HDL代码,并验证生成的HDL代码与行为模型相比是否产生了正确的结果。整个算法是使用定点数据类型设计的。该示例展示了如何使用相控阵系统工具箱、DSP HDL 工具箱和定点设计器设计支持 FPGA 的单脉冲技术,以匹配 Simulink中的相应行为模型。为了验证实现模型,该示例将实现模型的仿真输出与行为模型的输出进行比较。

相控阵系统工具箱作为系统对象提供了单脉冲技术的浮点行为模型。DSP HDL工具箱提供下变频滤波所必需的FIR滤波器。

定点设计器提供数据类型和工具,用于开发定点和单精度算法,以优化嵌入式硬件的性能。可以执行位真仿真来观察有限范围和精度的影响,而无需在硬件上实现设计。

单脉冲是一种技术,其中来自天线不同元件的接收回波用于估计信号的到达方向(DOA)。此方向有助于估计对象的位置。该示例使用 DSP HDL 工具箱和定点设计器来设计算法。该技术使用四个光束来测量目标的角位置。所有四个波束同时产生,方位角和仰角的差异是在单个脉冲中实现的,因此得名单脉冲。

二、设计子系统

该算法通过使用支持 HDL 代码生成的 Simulink® 块来实现。该模型假设信号是从 4 元素均匀矩形阵列 (URA) 接收的,因此,该模型有 4 个正弦波作为输入。假设一个 4 元素 URA,则模型由来自 URA 每个元素的 4 个接收通道组成。一旦信号被转换为数字域,DDC模块就会确保降低接收信号的频率,以降低处理的采样率。框图显示了由以下模块组成的子系统。

多通道输入信号

数字下变频

单脉冲和和差分通道

编辑切换为居中

添加图片注释,不超过 140 字(可选)

Simulink 模型有两个分支。顶部分支是单脉冲技术和数字下变频算法的行为浮点模型,底部分支是使用支持 HDL 代码生成的模块的功能等效定点版本。除了绘制两个分支的输出以比较两者外,还计算并绘制了两个输出的总和通道之间的差异或误差。

行为模型的输出具有延迟 (

添加图片注释,不超过 140 字(可选)

) 块。此延迟是必需的,因为实现算法使用 220 个延迟来启用流水线,这会产生需要考虑的延迟。此延迟对于在行为模型和实现模型之间对输出进行时间对齐是必需的。

三、数字下变频 (DDC)

该子系统显示了以80 MHz和近15 MHz载波频率采样的接收信号如何通过DDC下变频为基带,然后传递到单脉冲和差分子系统。DDC 模块是数控振荡器 (NCO) 和一组低通滤波器的组合。NCO 模块提供混合和解调输入信号的信号。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

实现子系统中转向矢量的和差输出处的215 ms延迟补偿了下变频链的延迟。

DDC还包含一组低通滤波器,如图所示。一旦混频,就需要对混频信号进行低通滤波,以消除高频成分。此示例使用级联滤波器链进行低通滤波。NCO为混频器生成高精度正弦波。NCO 块的延迟为 6 个周期。该信号与输入信号混合,并在通过滤波器级时从较高频率转换为相对较低的频率。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

在本例中,输入信号的载波频率为15 MHz,采样频率为80 MHz。下变频过程将采样信号降至几kHz。低通FIR滤波器的系数使用.必须选择系数值以满足所需的通带标准。

编辑

添加图片注释,不超过 140 字(可选)

生成后,系数用于配置FIR滤波器模块。

四、单脉冲和和差分通道

单脉冲算法还必须为不同的元素生成转向矢量。已针对方位角 30 度和仰角 20 度的入射角生成转向矢量。转向矢量被传递到数字比较器,以提供所需的和和差通道输出。然后将下变频信号乘以这些矢量的共轭,如图所示。通过处理和和差通道,可以找到接收信号的DOA。图中显示了比较天线阵列不同元件的转向矢量的数字比较器。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

在图中,数字比较器获取转向矢量,并分别计算不同转向矢量sVA,sVB,sVC和sVD的总和和差。您还可以使用 System 对象计算转向矢量,也可以使用类似于 Simulink 中基于 FPGA 的波束成形:算法设计中所示的方法生成转向矢量。一旦完成了与阵列中每个元素对应的各种转向矢量的和和差,就会计算相应方位角和仰角的和和差通道。从和差单脉冲子系统中,得到3个信号,即和差、方位差和高程差。整个算术以定点数据类型执行。使用此命令打开单脉冲和差通道子系统。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

五、将实现模型的结果与行为模型进行比较

要将实现模型的结果与行为模型的结果进行比较,请运行创建的模型以显示结果。您可以通过单击“播放”按钮或在 MATLAB® 命令行上调用 sim 命令来运行 Simulink 模型。使用示波器块比较输出帧。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

编辑切换为居中

添加图片注释,不超过 140 字(可选)

编辑切换为居中

添加图片注释,不超过 140 字(可选)

编辑切换为居中

添加图片注释,不超过 140 字(可选)

这些图显示了和和差通道的输出。这些通道可以馈送到估计器,以指示物体的角度/方向。

六、总结

此示例演示了如何设计 FPGA 就绪算法、自动生成 HDL 代码以及在 Simulink 中验证 HDL 代码。该示例说明了DDC和单脉冲馈电系统的Simulink模型设计,并使用相控阵系统工具箱中的等效行为模型作为黄金参考来验证结果。除了行为模型之外,该示例还演示了如何使用支持 HDL 代码生成的 Simulink 模块创建用于实现的子系统。它还将实现模型的输出与相应行为模型的输出进行了比较,以验证两种算法在功能上是否等效。

一旦实现算法在功能上被验证为等效于黄金参考,HDL Coder 可用于 Simulink 到 HDL 代码生成,HDL 验证器™可用于生成协同仿真模型 (HDL Coder™) 测试台。这个由两部分组成的系列的第二部分展示了如何从实现模型生成 HDL 代码,并验证生成的 HDL 代码是否产生与浮点行为模型和定点实现模型相同的结果。

七、程序

使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)

下载方式一:基于FPGA的单脉冲技术:算法设计资源-CSDN文库

下载方式二:基于 FPGA 的单脉冲技术:算法设计

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】hash:unordered_map和unordered_set的底层结构

hash 哈希概念哈希冲突哈希函数哈希冲突的两种解决方法之闭散列哈希冲突的两种解决方法之开散列开散列和闭散列的比较 哈希概念 在c98中还并没有提出哈希这样的结构,只有以红黑树为底层结构的map,set系列,这样使得查询时的效率 l o g 2 N lo…

c语言修炼第二章--分支与循环

目录 前言 2.1分支语句 2.1.1什么是语句 2.2分支语句 2.2.1if语句的语法形式 2.2.2悬空else问题 2.2.3if书写形式的对比 2.3switch语句 2.3.1switch的语法形式 2.3.2 switch与break的关系 2.3.3 switch与default的关系 前言 小伙伴们端午安康吖!今天我们…

Mac菜单栏快捷开关 One Switch

One Switch是一款简单易用的 macOS 应用程序,它可以帮助用户快速地切换和管理 Mac 电脑的各种系统设置。这款应用程序提供了一个干净简洁的界面,让用户可以快速地启用或禁用诸如 Wi-Fi、蓝牙、Night Shift、暗色模式、Do Not Disturb 等功能。用户可以通…

建立无需build的vue单页面应用SPA框架

vue、react这种前端渲染的框架,比较适合做SPA(Single Page Application)。如果用ejs做SPA,js代码控制好全局变量冲突不算严重,但dom元素用jquery操作会遇到很多的名称上的冲突(tag、id、name)。…

运动蓝牙耳机怎么选、好用的运动蓝牙耳机推荐

在快节奏的现代生活中,运动成为了释放压力、保持健康和放松身心的重要方式。跑步、健身、骑行等各类运动成为了人们日常生活中不可或缺的一部分。然而,一场精彩的运动体验离不开动感的音乐伴奏。为了满足人们对高品质音乐的追求,一款出色的运…

nvm安装、管理多个node版本

1、官网下载nvm https://github.com/coreybutler/nvm-windows/releases 2、解压ZIP,双击nvm-setup.exe(假如以前安装了node.js,把以前的卸载了再安装nvm) 3、安装nvm 注意:这一步的nodejs目录需要手动创建 4、安装完毕,设置下载镜…

OpenCV动态人物识别代码

动态人物识别代码 int main() {// 打开视频文件或摄像头VideoCapture cap("vtest.avi");// VideoCapture cap(0); // 使用默认摄像头if (!cap.isOpened()){std::cout << "无法打开视频文件或摄像头流" << std::endl;return -1;}// 读取第一帧…

幽灵依赖是什么,pnpm出现的意义,使用pnpm创建一个vue3项目

什么是幽灵依赖&#xff08;幻影依赖&#xff09; 比如我们创建一个全新的vue3项目 然后我们正常地通过npm install来下载依赖 然后我们发现&#xff0c;node_ modules文件夹下的很多依赖&#xff0c;我们在package.json中明明没去声明却都下载下来了 那么这些没声明却下载…

SQL-游标-查询

/***DB版本&#xff1a;SQL Server 2022***/ --切换数据库 use MyDatabase--创建游标(scroll&#xff1a;滚动游标) declare mycur cursor scroll for select EmpNo from Employee--打开游标 open mycur --提取第一行 fetch first from mycur --提取最后一行 fetch last from m…

ansible自动化安装及简单操作

目录 一、运行机制 二、安装 1.下载ansible 2.配置免密 3.修改配置文件 4.创建主机清单 5.远程安装 6.远程卸载 一、运行机制 Ansible&#xff1a; ansible的核心模块 Host Inventory&#xff1a;主机清单&#xff0c;也就是被管理的主机列表 Playbooks&…

实战打靶集锦-021-glasgowsmile

提示&#xff1a;本文记录了博主的一次曲折的打靶经历。 目录 1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 手工访问4.2 目录枚举4.3 手工探查4.4 搜索EXP4.5 joomlascan4.6 用户猜测与密码爆破4.7 构建反弹shell 5. 提权5.1 优化shell5.2 枚举系统信息5.3 探查/etc/pass…

虚拟机VMware+Ubuntu配置DPDK环境并运行Helloworld

虚拟机VMwareUbuntu配置DPDK环境并运行Helloworld 文章目录 虚拟机VMwareUbuntu配置DPDK环境并运行Helloworld安装虚拟机虚拟机中安装DPDK运行Helloworld 首先需要强调的是&#xff0c;版本的影响很大&#xff0c;有可能会因为版本不匹配而导致无法成功配置DPDK环境。 安装虚拟…

【Leetcode -637.二叉树的层平均值 -671.二叉树中第二小的节点】

Leetcode Leetcode -637.二叉树的层平均值Leetcode -671.二叉树中第二小的节点 Leetcode -637.二叉树的层平均值 题目&#xff1a;给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10^(- 5) 以内的答案可以被接受。 示例 1&#xff1…

TCP服务器的C#实现

1、TCP实现类 internal class TcpServer{public Socket ServerSocket { get; set; }public Dictionary<string,Socket> Sockets { get; set; } new Dictionary<string,Socket>();public byte[] SendBuffer { get; set; }public byte[] ReceiveBuffer { get; set; …

Qt消息对话框

一、头文件及类型 #include<QMessageBox> 二、错误、信息、提示、警告演示 错误对话框 QMessageBox::critical(this,"critical","错误"); 信息对话框 QMessageBox::information(this,"info","信息"); 提问对话框 if(QMessageBo…

发布自己的第一个抖音小程序

结构与微信小程序一样 内嵌H5网页&#xff0c;适用于任何平台&#xff0c;同样也是使用web-view组件 <web-view src"https://some-domain/some/path"></web-view> 相比起来&#xff0c;它比微信小程序更加简化&#xff0c;开发会更方便了。 API查询地…

超越Java 7,迎接Java 8时代!掌握这些新特性提升你的编程技能!

大家好&#xff0c;我是小米&#xff0c;一个热衷于技术分享的小伙伴。今天&#xff0c;我将向大家介绍Java 8中的一些新特性。Java 8作为一次重大更新&#xff0c;引入了许多令人激动的新功能&#xff0c;让我们的编码变得更加简洁高效。接下来&#xff0c;我们将详细介绍这些…

【暂时解决】radio单选框的change事件执行两次

项目场景&#xff1a; 简单的单选框场景 选择国内地区&#xff0c;省市县的下拉框就显示&#xff0c;选择国外地区就隐藏。 问题描述 当我使用radio的change事件时&#xff0c;会执行两次 javascript&#xff1a; $(input[typeradio][nameoptionsRadios]).change(function …

黑产科普丨揭秘游戏黑灰产业链

自今年起&#xff0c;游戏版号已恢复常态化发放&#xff0c;游戏行业在官方发文肯定、重获资本青睐、AI降本增效等多方助力下持续回暖。暑期档将至&#xff0c;游戏厂商为了抢占更多的市场份额&#xff0c;占据更多的玩家视野&#xff0c;将有大量的游戏选择在这个时间上线。 …

datax-Oracle新增writeMode支持

1.在com.alibaba.datax.plugin.writer.oraclewriter.OracleWriter中注释此内容,以让oracle支持writeMode模式 2.在com.alibaba.datax.plugin.rdbms.writer.util.WriterUtil中,增加对oracle的判断,将getWriteTemplate修改为如下内容 public static String getWriteTemplate(List…