雷达编程实战之功耗优化技术(低功耗)

本篇文章以xWRL6432为例,首先介绍了芯片内部的电源管理框架,在产品业务处理流程的不同阶段,我们可以对不同电源域进行相应的开/关来降低功耗。然后介绍了不同的硬件电源参考设计对芯片功耗的影响,又着重介绍了线性调频脉冲相关参数在雷达性能功耗之间的取舍关系,帮助嵌入式工程师根据不同项目的指标要求来选择合适的线性调频脉冲参数。最后介绍了在帧间空闲以及深度睡眠模式下,降低功耗的一些方向,指导嵌入式工程师根据实际的应用情况来有效的降低产品功耗。

目录

电源管理框架

低功耗的硬件设计选项 

针对低功耗的线性调频脉冲设计优化 

降低帧间空闲和深度睡眠状态下的功耗 

降低空闲状态下的功耗

降低深度睡眠模式下的功耗 


电源管理框架

具有低功耗管理的芯片架构会运行雷达器件完全或部分关闭特定电源域,下图以xWRL6432的电源域架构的方框图。

以此芯片为例, 每个电源域的主要元器件如下:

  • RF_ANA_PD(射频模拟电源域):功率放大器(PA);低噪声放大器(LNA);混音器;中频滤波器(IF);模数转换器(ADC);合成器;40MHz晶体振荡器(OSC)。
  • FEC_PD(前端控制电源域):Cortex-M3 处理器(包括存储器);数字前端 (DFE)。
  • APPSS_PD(应用子系统电源域):Cortex-M4F 处理器;应用存储器组;通用外设(看门狗、UART、I2C、SPI、RS232...)。
  • HWASS_PD(硬件加速器电源域):硬件加速器 (HWA);HWA 的存储器。
  • AON_PD(常开电源域):实时时钟 (RTC);电源、复位和时钟管理 (PRCM) 寄存器。

下图展示了典型的雷达应用流程。

应用流程的状态定义如下。

  • 突发(Burst): 线性调频脉冲序列。xWRL6432 器件具有两根发射天线,因此典型的 突发可能在一根或两根天线上发射。
  • 帧(Frame):由一系列突发后跟数据处理组成的时间段。帧在定义的间隔上是周期性的。
  • 线性调频脉冲间空闲(Interchirp Idle):线性调频脉冲之间的时间段。
  • 突发间空闲(Interburst Idle):突发之间的时间段。
  • 帧间空闲(Interframe Idle):从帧结束与下个帧开始之间的时间段。
  • 数据处理(Data Processing):器件处理前一帧中收集的雷达数据的时间段。

电源管理可以根据应用流程的不同状态,配置不同电源域处于打开或者关闭的状态,从而达到有效功率最优解。电源管理根据应用流程的不同状态,大体可以分为三个模式,第一个是运行模式(或用),是指器件发出线性调频脉冲或处理线性调频脉冲数据时。第二种是空闲模式,当器件未主动发出线性调频脉冲或处理数据时,便会进入空闲状态。第三种是深度睡眠,深度睡眠状态是 xWRL6432 在已经处于帧间空闲状态时的一个应用程序驱动选项。在这三种状态中,在活动状态下的数据采集子状态中,器件具有最高功率级别,深度睡眠则是器件中可能的最低功耗状态设计状态下,图为不同状态下各个电源域的开光状态。

不同电源模式下的电源域状态
电源域活动(发出线性调 频脉冲)活动(数据处理)线性调频脉冲间空闲突发间空闲帧间空闲深度睡眠
RF_ANA_PD打开关闭(晶体振荡器 开启)开启(PA、LNA 关闭)关闭(晶体振荡器 开启)关闭(晶体振荡器 开启)关闭
FEC_PD打开关闭开启(数字前端时 钟选通)开启(数字前端时 钟选通 )开启(整个子系统 时钟选通)关闭
APPSS_PD开启(PLL 关闭)开启(在数字 PLL 上运行)开启(PLL 关闭)开启(PLL 关闭)开启(在晶体时钟 上运行)关闭
HWASS_PD开启(HWA 时钟 选通)打开打开开启(HWA 时钟 选通)关闭关闭
AON_PD打开打开打开打开打开打开

下面的代码是一个进入数据处理之前,关闭某些电池域的函数lowpower以及重新启动线性调频脉冲序列的函数recoverpower。

uint8_t lowpower(void)
{uint8_t result = 0;result += waveGenStop();result += waveTxDisable();result += RC7711B_WriteRegSPI(ANA_CFG8_ADDR,0x0F00);  // base band disableresult += RC7711B_WriteRegSPI(ANA_CFG18_ADDR,0x0000); // PLL Disableresult += RC7711B_WriteRegSPI(ANA_CFG22_ADDR,0x0000); // RX TX LO disablereturn result;
}
uint8_t recoverpower(void)
{uint8_t result = 0;result += RC7711B_WriteRegSPI(ANA_CFG8_ADDR,0x0F1F);  // 基带使能[4:0]:ch1234 pow en[bit4]; [ch4 ch3 ch2 ch1]使能对应bit[3 2 1 0]result += RC7711B_WriteRegSPI(ANA_CFG18_ADDR,0x0007); // PLL Enable [2:0]result += RC7711B_WriteRegSPI(ANA_CFG22_ADDR,0xFF80); // RX TX LO使能,详见手册	result += waveTxEnable();result += waveGenStart();return result;
}

低功耗的硬件设计选项 

以xWRL6432 器件为例,可以为其提供 1-3 个不同的电源电压轨。这种灵活性使系统能够进行定制,硬件设计工程师选择是以降低功耗为目的还是以降低BOM 成本为设计优先级。下图展示了可用于为 xWRL6432 提供电源轨的四种拓扑。


针对低功耗的线性调频脉冲设计优化 

在 xWRL6432 可能进入的所有不同状态中,活动模式(特别是活动模式期间的线性调频脉冲频率扫描行为)是功耗最大的。由于线性调频脉冲频率扫描行为会打开高功率射频放大器来发送和接收雷达波,因此这种行为的功耗最大。既如此,用户便可通过减少频率扫描所花费的时间和/或降低频率扫描时的功耗来降低总体功耗,但是这种调整会对雷达的性能产生影响,下面介绍了各参数对性能的影响。

  • 增加帧之间的时间:增加帧之间的时间会增加延迟并可能提高跟踪性能。如果帧之间的时间很长,则可能无法跟踪快速移动的物体,有效帧周期会受到直接的影响。
  • 减少线性调频脉冲间空闲和突发间空闲中花费的时间:对于角度估计而言,无论线性调频脉冲使用不同的发送器,还是在时分多路复用 (TDM) 和二进制相位调制 (BPM) 方案中(一次只有 一个发射),减少空闲时间都有好处,但是对测速来说,减低Tc会引起速度分辨率更粗。
  • 缩短线性调频脉冲频率扫描时间:雷达范围缩小,可视场边缘更明显。这个方向涉及到一些性能上的取舍,我们后边会详细介绍。
  • 减少发送器/接收器的数量:减少发送/接收通道的数量将直接降低雷达器件的角分辨率。此外,移除发送/接收对将减小测量的 SNR,从而减小雷达可检测到给定目标的最大距离。发送/接收通道越多,对同一突发的观察就越多,因此可以提高给定突发的精度。
  • 降低发射功率:降低输出功率可能会缩小器件可检测的最大距离。器件广播的功率大小将决定器件可接收的功率大小。一旦接收到的功率降至器件的本底噪声以下,器件将无法再准确检测目标。输出功率的下降可以在一定程度上通过 CFAR 阈值范围内的等效下降得到补偿,但不能无限度地进行补偿。一旦CFAR阈值范围变得过低,误报检测就会掩盖真实检测。

下表中的方案二针对方案一提高了采样率,采样同样的点数只需要用一半的时间,但是距离分辨率会变得更粗,如果采用方案二,更快的采样率加上更高的调频斜率,将会在不牺牲任何性能的情况下,降低功率。


降低帧间空闲和深度睡眠状态下的功耗 

降低空闲状态下的功耗

帧间空闲状态是器件中的一种软件可编程状态。在此模式下,器件要么等待来自外部主机的命令,要么通过 SPI 或 CAN 接口传输捕获的样本。器件中未在进行雷达处理或数据采集,同时器件的振荡器电路和可能的 PLL(取决于所使用的主机接口外设)已启动并正在运行。在帧间空闲状态下,用户可以将器件的一些部分断电或进行时钟选通,从而降低功耗。xWRL6432 允许使用如下所示的序列关闭以下外设。


降低深度睡眠模式下的功耗 

深度睡眠状态下的功耗主要取决于两个因素:深度睡眠期间保留的存储器容量和 IO 引脚的状态。

要保留内容的存储器越大,深度睡眠模式下的功耗越高。xWRL6432 器件可以通过减少深度睡眠模式中保留的存储器容量来节省功耗。

xWRL6432 中存在各种数字外设 IO(例如 SPI、UART、CAN-FD、I2C 或 LIN 等),用于传输数据、下载映像或与外部 MCU 建立连接。由于深度睡眠状态下的功耗非常低,因此任何悬空节点都可能导致严重的电流泄漏。因此,当 xWRL6432 器件处于深度睡眠模式时,必须适当地将这些 IO 置于其相关的上拉/下拉或高阻抗状态。


十六宿舍 原创作品,转载必须标注原文链接。

©2023 Yang Li. All rights reserved.

欢迎关注 『十六宿舍』,大家喜欢的话,给个👍,更多关于嵌入式相关技术的内容持续更新中。

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

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

相关文章

mysql面试题5:索引、主键、唯一索引、联合索引的区别?什么情况下设置了索引但无法使用?并且举例说明

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:说一说索引、主键、唯一索引、联合索引的区别? 索引、主键、唯一索引和联合索引是数据库中常用的索引类型,它们有以下区别: 索引:索引是一种数…

一文带你搞懂Redis持久化

Redis持久化 Redis的数据是存储在内存的,当程序崩溃或者服务器宕机,那么内存里的数据就会丢失。所以避免数据丢失的情况,需要将数据保存到其他的存储设备中。 Redis提供两种方式来持久化,分别是 RDB(Redis Database)&#xff1a…

字符串函数(二)—— 长度受限制的字符串函数

✨博客主页:小钱编程成长记 🎈博客专栏:进阶C语言 🎈相关博文:字符串函数(一) 字符串函数(二)—— 长度受限制的字符串函数 3.长度受限制的字符串函数3.1 strncpy&#x…

Redis配置和优化

Redis配置和优化 一 、Redis介绍二、关系数据库和非关系数据库2.1、关系型数据库2.2、 非关系型数据库2.3、 非关系型数据库的产生背景2.4、 关系型数据库和非关系型数据库区别2.5、 总结 三、缓存概念3.1、系统缓存3.2、 缓存保存位置及分层结构3.2.1、DNS缓存3.2.2、 应用层缓…

MySql进阶篇---006:存储引擎,索引,SQL优化,视图、存储过程、变量、流程控制、游标、存储函数、触发器

1. 存储引擎 1.1 MySQL体系结构 1).连接层 最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证…

Java大数 -- BigInteger类

在java语言中,每一种整数类型都有自己的上限和下限,如果要想对非常大的整数做运算,就需要使用BigInteger类。特别在做算法题传入一个数值型的字符串时。 1.包 import java.math.*; 2.构造方法 public BigInteger(String str){...} BigInte…

10.1select并发服务器以及客户端

服务器&#xff1a; #include<myhead.h>//do-while只是为了不让花括号单独存在&#xff0c;并不循环 #define ERR_MSG(msg) do{\fprintf(stderr,"%d:",__LINE__);\perror(msg);\ }while(0);#define PORT 8888//端口号1024-49151 #define IP "192.168.2.5…

三等分功分器[波导]设计详细教程

想必大家通过阅读相关文献可以发现三等分实现可以有很多不同的方法&#xff0c;这里采用的是先不等分再等分的方式&#xff0c;仅供参考。 主要指标 中心频率为280GHz&#xff0c;采用WR-3频段的标准波导&#xff0c;将2:1不等功率分配耦合器与3dB等功率分配耦合器级联&#…

动态规划:两个数组的dp问题(C++)

动态规划&#xff1a;两个数组的dp问题 前言两个数组的dp问题1.最长公共子序列&#xff08;中等&#xff09;2.不同的子序列&#xff08;困难&#xff09;3.通配符匹配&#xff08;困难&#xff09;4.正则表达式&#xff08;困难&#xff09;5.交错字符串&#xff08;中等&…

【NLP的python库(03/4) 】: 全面概述

一、说明 Python 对自然语言处理库有丰富的支持。从文本处理、标记化文本并确定其引理开始&#xff0c;到句法分析、解析文本并分配句法角色&#xff0c;再到语义处理&#xff0c;例如识别命名实体、情感分析和文档分类&#xff0c;一切都由至少一个库提供。那么&#xff0c;你…

加入PreAuthorize注解鉴权之后NullPointerException报错

记录一次很坑的bug&#xff0c;加入PreAuthorize注解鉴权之后NullPointerException报错&#xff0c;按理来说没有权限应该403报错&#xff0c;但是这个是500报错&#xff0c;原因是因为controller层的service注入失败&#xff0c;然而我去掉注解后service注入成功&#xff0c;并…

初级篇—第三章多表查询

文章目录 为什么需要多表查询一个案例引发的多表连接初代查询笛卡尔积&#xff08;或交叉连接&#xff09;的理解 多表查询分类等值连接 vs 非等值连接自连接 vs 非自连接内连接VS外连接 SQL99语法实现多表查询内连接的实现外连接的实现左外连接右外连接满外连接 UNION的使用7种…

Mysql高手养成——第一章:索引知识,浅尝性能分析

&#x1f4e3; &#x1f4e3; &#x1f4e3; &#x1f4e2;&#x1f4e2;&#x1f4e2; 我是小冷 侧重后端的全栈工程师&#xff0c;有关技术问题需要讨论交流的直接私信即可 ⏩当前专栏&#xff1a;mysql高手养成系列- 第一章 索引与浅尝性能分析 ✏️高质量技术专栏专栏链接:…

解决前端二进制流下载的文件(例如:excel)打不开的问题

1. 现在后端请求数据后&#xff0c;返回了一个二进制的数据&#xff0c;我们要把它下载下来。 这是响应的数据&#xff1a; 2. 这是调用接口的地方&#xff1a; uploadOk(){if(this.files.length 0){return this.$Message.warning("请选择上传文件&#xff01;&#xff…

vite跨域proxy设置与开发、生产环境的接口配置,接口在生产环境下,还能使用proxy代理地址吗

文章目录 vite的proxy开发环境设置如果后端没有提供可以替换的/mis等可替换的后缀的处理办法接口如何区分.env.development开发和.env.production生产环境接口在生产环境下&#xff0c;还能使用proxy代理地址吗&#xff1f; vite的proxy开发环境设置 环境&#xff1a; vite 4…

Lua学习笔记:require非.lua拓展名的文件

前言 本篇在讲什么 Lua的require相关的内容 本篇需要什么 对Lua语法有简单认知 对C语法有简单认知 依赖Visual Studio工具 本篇的特色 具有全流程的图文教学 重实践&#xff0c;轻理论&#xff0c;快速上手 提供全流程的源码内容 ★提高阅读体验★ &#x1f449; ♠…

ChatGPT的截图识别功能测评:开启图像中的文字与信息的新纪元

文章目录 根据截图&#xff0c;识别菜品根据截图&#xff0c;识别数学公式根据截图生成前端UI代码可视化图像复现案例一案例二 更多可以使用的方向 制作人&#xff1a;川川 辛苦测评&#xff0c;如果对你有帮助支持一下书籍&#xff1a;https://item.jd.com/14049708.html 根据…

微信小程序,动态设置三级联动, 省市区街道

1.第一步 传parentId0 查询省份 2.第二步 选择省份,传pathId选择省份的pathId, 不传parentId,会查询出 市/县数据 3.第三步 根据选择县的parentId 查询街道数据,传parentId选择的县id 4.选择结果回显 显示所选择的 path 以/分割 取最后一级<van-dropdown-menu…

wustctf2020_name_your_cat

wustctf2020_name_your_cat Arch: i386-32-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x8048000)32位&#xff0c;开了NX和canary int shell() {return system("/bin/sh"); }有个后门函数 unsigned int…

【量化】量化原理浅析

前言 模型在端侧运行时&#xff0c;会追求模型保持原有精度的同时&#xff0c;让模型的运行速度更快。基本方向为模型压缩和加速&#xff0c;着力于减少网络参数量、降低计算复杂度。可通过以下方式实现&#xff1a; 针对网络结构本身进行改进&#xff0c;常用的3x3的卷积的叠加…