UWB是如何抗多径的

前言

UWB(Ultra-Wideband)是指超宽带技术,它是一种无线通信技术,使用非常宽的频带来传输数据。它的频带宽度远远超过传统无线通信技术,可以达到几百兆赫兹甚至更高。
UWB技术还可以应用于汽车领域,实现车辆间的碰撞预警和自动驾驶等功能。此外,UWB还可以用于物联网设备的连接和通信,提高设备之间的互操作性和数据传输效率。
总的来说,UWB技术具有高速、高精度和高可靠性的特点,可以应用于多个领域,对于提升无线通信和定位技术有着巨大的潜力。
以上是AI自动生成,觉得写的还不错,纯纯的废话,因为工作需要最近在用NXP的NCJ29D6进行新产品设计。初次接触UWB,将一些学习心得记录下来,主要是写给自己看,遣词造句就不讲究了

一、

UWB抗多径,主要是用ipatov码,分为三组,主要是长度不同,长度分别为31,91,127。目前NXP这边默认用第25组,长度为91的ipatov码。本文为了简单选择长度为31, code index为1的第一组ternary code。代码如下:

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
preamble_31_ternary=[-1,0,0,0,0,1,0-1,0,1,1,1,0,1,-1,0,0,0,1,-1,1,1,1,0,0,-1,1,0,-1,0,0]
preamble_corr=np.correlate(preamble_31_ternary,preamble_31_ternary,"full")
fig,ax=plt.subplots()
ax.plot(preamble_corr)
ax.set_title("Autocorrelation Full")
ticks = ax.set_xticks(np.arange(0,59,5)) # 设置刻度
labels = ax.set_xticklabels(np.arange(0,59,5)-29,rotation = 0,fontsize = 'small') # 设置刻度标签

preamble的特点是自相关函数在完全重合的时候的是完全相关的,哪怕错一位相关性立马降低到0附近,也就非相关。也就是preamble在自身完全重合时是正相关你的,一旦错位就是非相关。结果图如下:在这里插入图片描述

二、利用kaiser窗函数生成UWB脉冲

废话少说,代码如下:

up_sample=10
pulse=np.kaiser(20,14)
plt.plot(pulse)

结果如下:
在这里插入图片描述
uwb分辨多径一个非常巧妙的设计点,在每个uwb脉冲后添零。比如我们uwb单脉冲持续时间是2us,那么补充6us零以后,总脉冲持续时间是8us。那么近距离连个多径,比如多径A和多径B时间上间隔2us,将被完全分开。
补零代码

pulse_padding=np.zeros(80)
pulse_padding[:20]=pulse
plt.plot(pulse_padding)

结果图
在这里插入图片描述

三、一个完整的preamble symbol

preamble_31_tenary=np.kron(preamble_31_ternary,pulse_padding)
plt.plot(preamble_31_tenary)

在这里插入图片描述

四、模拟多径

这里模拟4条路径,路径延迟分别是0,10,20,80,路径延迟0对应主径,路径延迟10样本。UWB一个脉冲持续时间大约2us,再不上6us空闲时间,总共8us。延迟10个样本,对应1us。同理20个样本,对应2us。

preamble_31_tenary_delay_10=np.zeros_like(preamble_31_tenary)
preamble_31_tenary_delay_10[10:]=preamble_31_tenary[:-10]
##delay 20 samples
preamble_31_tenary_delay_20=np.zeros_like(preamble_31_tenary)
preamble_31_tenary_delay_20[20:]=preamble_31_tenary[:-20]
##delay 20 samples
preamble_31_tenary_delay_80=np.zeros_like(preamble_31_tenary)
preamble_31_tenary_delay_80[80:]=preamble_31_tenary[:-80]
preamble_31_tenary_all=preamble_31_tenary+preamble_31_tenary_delay_10+preamble_31_tenary_delay_20+preamble_31_tenary_delay_80
preamble_corr=np.correlate(preamble_31_tenary_all,preamble_31_tenary,"same")
fig,ax=plt.subplots()
ax.plot(preamble_corr)
ax.set_title("Multipath simulation")

在这里插入图片描述
放大局部
在这里插入图片描述
从结果看能清除看到多径本分辨了出来。

四、UWB测量呼吸

从以上UWB的preamble的相关特性上,我们能得出UWB是可以测量震动信号的,信号的震动表现在UWB信号的CIR数据的某个tap数据的摆动。先看视频

利用UWB信号进行呼吸探测

这里人在呼吸的时候会引起胸腔的起伏,这种起伏幅度很低,所以相当于kaiser窗左右微小震动,体现在相关后的数据是相关结果高低起伏,所以我们提取CIR数据,CIR数据也就是preamble相关计算后的数据,所以相当于呼吸会引起CIR的某个tap数据周期性高低起伏,我们只要分析某个tap上是否存在这种高低起伏就可以判断是否存在呼吸信号。

总结

本文详细介绍了UWB分辨多径的机制,主要脉冲信号后的添零以及利用preamble码的自身正交特性。UWB中使用的preamble码长度分为31,91以及127三种,这里我们以31长度的preamble码为例,演示了其自身自相关特性,当完全重合的时候是正相关的,那么怕错一位都是非相关的,这个特性在信号同步,以及分辨多径方面都有非常好的应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值