主要内容

复苏的IEEE 802.15.4z超宽频信号

这个例子展示了如何实现一个实用的IEEE®802.15.4z™PHY恢复和解码超宽频接收机捕获波形在空气通过使用通信工具箱™库ZigBee®和超宽频。

IEEE 802.15.4z[2]指定一个修正案高脉冲重复频率(合)超宽频PHY从内部IEEE 802.15.4。提供服务[1]。这个修正案引入了一个新的、更高的脉冲重复频率(HPRF)操作模式,使用脉冲重复频率高达249.6 MHz。

设置

这个例子中解码的重复版本HPRF(高脉冲重复频率)超宽频802.15.4z信号在空气中传播。您可以创建传播超宽频信号如下:

rng (7);psduTx =兰迪([0,1],1016,1);cfgTx = = lrwpanHRPConfig(模式“HPRF”PSDULength =长度(psduTx) / 8, SamplesPerPulse = 2);waveTx = lrwpanWaveformGenerator (psduTx cfgTx);

传输的示例使用一个倪™PXI底盘一起两个倪pxie - 5840矢量信号收发器(威仕特)。矢量信号发生器(VSG)一个威仕特传输超宽频波形,和矢量信号分析仪(VSA)威仕特接收超宽频波形。每一个威仕特使用FXUWB10 Taoglas超宽频天线。传播发生在通道3,4.9928 GHz的中心频率和带宽499.2 MHz。VSTs可以操作1 GHz的采样率,奈奎斯特抽样定理是略微满意(2 x 499.2 = 998.4 MHz)。

这两个VSTs使用不同时钟(一个使用内置时钟和其他使用PXI时钟)。这个配置是代表大多数无线链接,两个端点没有同步时钟。

下面垫文件包含接收到的信号,其中包含一个HPRF框架。

负载uwbCapture.mat情节(真实(capturedHPRF),“这”)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象。

概述

IEEE 802.15.4z接收机在这个例子中包括两个部分:一个信号恢复元件和信号解码组件。

信号恢复组件执行频率补偿(包括粗和细),以及时机复苏。

信号解码组件检测到序言开始,确定STS包配置(炒时间戳顺序)的存在和位置,和解码PHY头(PHR)和负载。

最后,解码PSDU是与已知传播PSDU相比,通过超宽频通道计算误码率。

预计这个15.4 z接收机信号:

  • 遵循HPRF 802.15.4z模式。

  • 使用一个序言代码(即91 -象征。、代码指数大于25)。

  • 包含一个有效载荷的长度是不平等从STS段的长度。

频率补偿

因为不同步发射机和接收机,接收到的帧频率偏移存在。散点图显示了这个效果,星座旋转。

散点图(capturedHPRF)

图散点图包含一个坐标轴对象。坐标轴对象标题散点图,包含同相,ylabel正交包含一行对象显示它的值只使用标记。这个对象表示通道1。

频率偏移补偿是一个两步的过程:首先,粗频率补偿,然后执行好频率补偿。

粗频率补偿

粗补偿频率偏移,这个例子使用了comm.CoarseFrequencyCompensatorPAM调制系统对象™,HPRF信号使用三元符号(1,0,- 1)。

rxSPC = 2;%样本/芯片/脉冲,鉴于receive-side A / DFs = 499.2 e6 * rxSPC;coarseFC = comm.CoarseFrequencyCompensator(调制=“帕姆”SampleRate = Fs, FrequencyResolution = 1 e3);[coarseFCsignal,频率]= coarseFC (capturedHPRF);流(“粗频率偏移:%。2 f MHz \ n”1、频率/ e6)
粗频率偏移:2.73 MHz

粗频率补偿的效果清晰可见的星座图,信号旋转的程度显著降低。

散点图(coarseFCsignal)

图散点图包含一个坐标轴对象。坐标轴对象标题散点图,包含同相,ylabel正交包含一行对象显示它的值只使用标记。这个对象表示通道1。

细频率补偿

第二步是使用comm.CarrierSynchronizer调制(PAM)精细频率补偿。

fineFC = comm.CarrierSynchronizer(调制=“帕姆”SamplesPerSymbol = rxSPC);[fineFCsignal,阶段]= fineFC (coarseFCsignal);散点图(fineFCsignal)

图散点图包含一个坐标轴对象。坐标轴对象标题散点图,包含同相,ylabel正交包含一行对象显示它的值只使用标记。这个对象表示通道1。

事实上,补偿信号收敛于x相互重合,HPRF信号是真实的。一些复杂的噪声。

时间恢复

的另一个后果缺乏同步发射机和接收机之间的采样率偏移,导致符号是取样相对有效和实例不同符号持续时间。

时间恢复补偿这种影响。“早期的后期”选择同步算法,是申请三元符号(1,0,- 1)与一个Buttterworth过滤器脉冲形状(IIR)。

fineFCsignalReal =实际(fineFCsignal);symbolSync = comm.SymbolSynchronizer(调制=PAM /相移键控/ QAM的SamplesPerSymbol = rxSPC TimingErrorDetector =早期的后期(non-data-aided)”);recoveredHPRF = symbolSync (fineFCsignalReal);

由于大量的噪音,星座基本上是连续的x设在而形成三个不同的云在三元符号。

散点图(recoveredHPRF)

图散点图包含一个坐标轴对象。坐标轴对象标题散点图,包含同相,ylabel正交包含一行对象显示它的值只使用标记。这个对象表示通道1。

在这个阶段,信号恢复完成剩下的这个例子着重于解码恢复波形。

序言检测

接收到的超宽频波形始于一个未知的实例。实际接收执行序言检测发现PHY帧的开始。为此,示例使用comm.PreambleDetector to定位同步(同步)。

然而,同步字段可能由许多可能的代码序列。接收者不使用任何transmit-side信息和考虑所有可能的代码,直到检测到同步字段。

此外,频率补偿可能会引入相位模糊。也就是三元超宽频信号的极性会倒。因此,序言检测方法还可以解决相位模糊组合通过考虑所有可能的阶段。

Tpream = 5;%手册,迭代规范;阈值可以增加直到1代码检测Tnoise = 0.01;%用于能量检测,对规范序言探测器的阈值Tzero = 25/100;% 0符号振幅阈值,最高比例的振幅,应该高于噪音cfgRcv = = lrwpanHRPConfig(模式“HPRF”SamplesPerPulse = rxSPC);%创建一个对象跟踪received-frame属性preambleCodesHPRF = 25:32;preambleDet = comm.PreambleDetector;syncFound = false;codeIdx = preambleCodesHPRF (1) 1;hprfPreambleDurations = [16、24、32、48、64、96、128、256];~ syncFound & & codeIdx <马克斯(preambleCodesHPRF)%考虑所有代码,直到检测codeIdx = codeIdx + 1;极性= [1]%考虑所有极性,直到检测%从传播创建同步代码:代码=极性* lrwpan.internal.HRPCodes (codeIdx);spreadingFactorHPRF = cfgRcv.PreambleSpreadingFactor;%扩散因子,L(总是4 HPRF模式)序言= 0(长度(代码)* spreadingFactorHPRF, 1);序言(1:spreadingFactorHPRF:结束)=代码;释放(preambleDet);preambleDet。序言=序言;meanCorr =意味着(abs(过滤器(flipud(序言),1,recoveredHPRF (recoveredHPRF > Tnoise))));preambleDet。阈值= Tpream * meanCorr;[preamPos, corrMat] = preambleDet (recoveredHPRF);durationIdx =找到(元素个数(preamPos) > hprfPreambleDurations, 1,“最后一次”);如果~ isempty (durationIdx) cfgRcv。PreambleDuration = hprfPreambleDurations (durationIdx);syncFound = true;打破;%中发现,没有必要去探索其他的极性结束结束结束如果syncFound流(“发现同步代码# % d。”,codeIdx);cfgRcv。CodeIndex = codeIdx;%跟踪确认帧特征其他的错误(“不同步字段中输入数据。);结束
发现同步代码# 25。
%片剩余获取与集成和转储(帧长度是未知,现在,在PHR)recoveredHPRF = recoveredHPRF / max (abs (recoveredHPRF));%正常化振幅frameStart = preamPos(1)长度(序言)+ 1;ternarySymbols =极性* recoveredHPRF (frameStart:结束);ternarySymbols (abs (ternarySymbols) < Tzero) = 0;ternarySymbols (ternarySymbols > Tzero) = 1;ternarySymbols (ternarySymbols < -Tzero) = 1;

Start-of-Frame分隔符

start-of-frame分隔符(陕西林业局)遵循同步(同步)。HPRF模式,陕西林业局字段的长度可能是4、8、16、32符号。接收方不使用任何transmit-side信息和搜索所有可能的陕西林业局。

%检测陕西林业局通过识别匹配chip-by-chip基础上的95%berThr = 1 - 95/100;sfdFound = false;sfdStart = 1 +(序言)* cfgRcv.PreambleDuration长度;sfdNum = 0:4从表15-7c %陕西林业局值cfgRcv。SFDNumber = sfdNum;陕西林业局= lrwpan.internal.getSFD (cfgRcv);spreadedSFD =陕西林业局。*中*极性;spreadedSFD = spreadedSFD (:);bitErrs =总和(spreadedSFD ~ = ternarySymbols (sfdStart: sfdStart +长度(spreadedSFD) 1));sfdBER = bitErrs /长度(spreadedSFD);如果sfdBER < berThr sfdFound = true;打破;结束结束如果sfdFound流(“发现陕西林业局# % d。”,sfdNum);其他的警告(“同步后没有发现陕西林业局。”)结束
发现陕西林业局# 0。

STS

炒的时间戳顺序(STS)包配置也未知的接收器。也就是说,它不知道是否STS和有效载荷存在和顺序。同样,它是未知多少STS段存在,他们的长度是什么。

接收方推断这些问题的答案通过识别STS缺口。

numChipsPerGap = 512;%部分15.2.9 [2]。sfdEnd = sfdStart +长度(spreadedSFD) - 1;gapStarts = [];idx = sfdEnd + 1;idx < = (ternarySymbols) -numChipsPerGap长度+ 1如果~任何(ternarySymbols (idx: idx + numChipsPerGap-1))%长512芯片的差距如果~ isempty (gapStarts) & & idx = = gapStarts(结束)+ 512%的框架发现,不视为STS差距gapStarts(结束)= [];ternarySymbols = ternarySymbols (1: idx);打破;结束gapStarts = [gapStarts idx];% #好< AGROW >idx = idx + numChipsPerGap;%的差距继续;结束%到最后一个非零,避免毫无意义的比较nextIncr =找到(ternarySymbols (idx + 1: idx + numChipsPerGap), 1,“最后一次”);如果isempty (nextIncr) nextIncr = numChipsPerGap;结束idx = idx + nextIncr + 1;结束stsAfterSFD = ~ isempty (gapStarts) & & gapStarts (1) = = sfdEnd + 1;如果cfgRcv isempty (gapStarts)。STSPacketConfiguration = 0;其他的cfgRcv。NumSTSSegments = max(1,元素个数(gapStarts) 1);% 1段如果帧结束的差距cfgRcv。STSPacketConfiguration = 0 + (cfgRcv.NumSTSSegments>0) + ~stsAfterSFD;% STSPacketConfiguration = 3不支持万博1manbetx结束%最后差距不开始在结束的象征,因为过去的l - 1符号无足轻重如果stsAfterSFD cfgRcv。STSSegmentLength = (diff(gapStarts(1:2))-numChipsPerGap + spreadingFactorHPRF-1)/numChipsPerGap;% 512年单位芯片elseif~ isempty (gapStarts) cfgRcv。STSSegmentLength = (length(ternarySymbols)-gapStarts -numChipsPerGap + spreadingFactorHPRF-1)/numChipsPerGap;% 512年单位芯片结束如果cfgRcv。STSPacketConfiguration fprintf(“发现% d STS段长度% d (s);STS % d。\ n”包配置,cfgRcv。NumSTSSegments cfgRcv。STSSegmentLength, cfgRcv.STSPacketConfiguration) stsLen = numChipsPerGap*(cfgRcv.NumSTSSegments+1) + cfgRcv.NumSTSSegments * cfgRcv.STSSegmentLength * 512;其他的流(“没有发现STS。\ n”);stsLen = 0;结束
发现1 STS段长度(s) 64;STS包配置是1。

PHR

PHY头(PHR)包含信息,如体育服务数据单元的长度(PSDU)。HPRF模式,报头和有效载荷可能遵循两种调制变体,根据平均脉冲重复频率(脉冲),这可以是124.8或249.6 MHz。每个调制变体使用不同长度和不同的象征guardband格式(参见图15-11b-e[2])。

此外,PHR的符号长度也由约束卷积编码的长度,这是3或7中15-10c-f(见表[2])。

如果~ stsAfterSFD phrStart = sfdEnd + 1;其他的phrStart = sfdEnd + 1 + stsLen;结束%需要找到调制类型(124.8 vs 249.6 MHz)% Guarbands区分因素(分别为75%和50%的符号)numPHRBits = 19;minSymbolDuration = 16;%在芯片中,所有的数据速率、编码的组合% PHR将跨度至少19 x16芯片。检查范围内% guarband统计:numZeros =总和(0 = = ternarySymbols (phrStart: phrStart + numPHRBits * minSymbolDuration-1));zerosPct = numZeros / (numPHRBits * minSymbolDuration);mode249MHz = zerosPct < (50 + (75 - 50) / 2) / 100;如果mode249MHz cfgRcv。MeanPRF = 249.6;其他的cfgRcv。MeanPRF = 124.8;结束%,确定卷积编码使用约束% 3或7长度,使用不同的符号映射(表15-10c-f [2])。CL = 7 [3] cfgRcv。ConstraintLength = CL;isPHR = true;[cwPHR, phrEnd] = helperUWBHPRFDemod (isPHR、ternarySymbols phrStart, cfgRcv);[secdedPass, PSDULength] = helperUWBPHRDecode (cwPHR cfgRcv, CL);如果secdedPass cfgRcv。PSDULength = PSDULength;打破;结束结束

有效载荷

PHR解码标识意味着脉冲重复频率和约束长度。因此,负载可以解码并与已知PSDU传播。

payloadStart = phrEnd + 1;decodedPSDU = helperUWBPayloadDecode (ternarySymbols payloadStart、cwPHR cfgRcv);[~,误码率]= biterr (psduTx decodedPSDU);流(“比特误码率:% 0.2 f \ n ',ber)
误比特率:0.00

误比特率为零,即使芯片出错率较高(1%)在陕西林业局识别。这些芯片错误纠正的传播和重复执行的HPRF调制方案,以及卷积和Reed-Solomon合PHY的编码。

引用

1。“IEEE标准低速率的无线网络,”在IEEE Std 802.15.4-2020 IEEE Std 802.15.4-2015(修订),pp.1 - 800, 2020年7月23日,DOI: 10.1109 / IEEESTD.2020.9144691。

2。“IEEE标准低速率无线Networks-Amendment 1:增强超宽带(UWB)等物理层(物理)和相关技术,“在IEEE Std 802.15.4z-2020 IEEE Std 802.15.4-2020(修正案),pp.1 - 174, 2020年8月25日,DOI: 10.1109 / IEEESTD.2020.9179124。

相关的话题