主要内容

端到端蓝牙LE PHY仿真与AWGN,射频损伤和校正

这个例子展示了如何测量蓝牙®低能量(LE)物理层(PHY)分组传输的不同模式的误码率(BER)和分组误码率(PER),这些传输具有无线电前端(RF)损伤和添加高斯白噪声(AWGN),通过使用蓝牙®工具箱。

简介

Bluetooth Special Interest Group (SIG)推出了用于低功耗短距离通信的Bluetooth LE。蓝牙LE设备运行在全球未授权的ISM (industrial, science and medical)频段,频率范围为2.4 GHz ~ 2.485 GHz。蓝牙LE指定2 MHz的信道间隔,这将导致40个射频信道。蓝牙LE标准指定了链接层,包括体育而且MAC层。蓝牙LE应用包括移动电话之间的图像和视频文件传输、家庭自动化和物联网(IoT)。

这种端到端的蓝牙LE PHY模拟确定了四种蓝牙LE PHY传输模式的误码率和PER性能,并将射频损伤和AWGN添加到传输数据包中。嵌套for循环用于计算在若干比特能量噪声密度比(Eb/No)设置下每种传输模式的错误率。在Eb/No环路内,使用bleWaveformGenerator函数,并随射频损伤和AWGN变化,累积错误率统计。每个数据包都因以下射频损害而失真:

  • 直流偏置

  • 载频偏置

  • 载波相位偏移

  • 时间漂移

  • 相位噪声

在传输的蓝牙LE波形中加入高斯白噪声。噪声数据包通过一个实际的蓝牙LE接收器进行处理,该接收器执行以下操作:

  • 自动增益控制

  • 直流清除

  • 载频偏置校正

  • 匹配滤波

  • 包检测

  • 定时误差校正

  • 解调和解码

  • Dewhitening

每个数据包的处理步骤如下图所示:

然后对同步数据包进行解调和解码以恢复数据位。将这些恢复的数据位与传输的数据位进行比较,以确定误码率和PER。生成蓝牙LE支持的以下四种PHY传输吞吐量模式的BER和PER曲线:

  • 数据速率为1mbps的非编码PHY (LE1M)

  • 数据速率为2mbps (LE2M)的非编码PHY

  • 数据速率为500kbps的编码PHY (LE500K)

  • 数据速率为125kbps的编码PHY (LE125K)

初始化仿真参数

EbNo = 2:4:10;% Eb/No in dBSPS = 4;%每个符号的样本,必须大于1dataLen = 42;数据长度(以字节为单位),包括报头、有效载荷和CRCsimMode = {“LE1M”“LE2M”“LE500K”“LE125K”};% PHY模式考虑模拟

每个Eb/No点的测试包数由两个参数控制:

  1. maxNumErrors为每个Eb/No点模拟的最大误码数。当比特误码数达到该限值时,在此Eb/No点的模拟完成。

  2. maxNumPackets为每个Eb/No点模拟的最大数据包数,如果没有达到误码限制,则限制模拟的长度。

选择的数字maxNumErrors而且maxNumPackets在这个例子中将导致一个很短的模拟。为了获得有意义的结果,我们建议增加这些数字。

maxNumErrors = 100;Eb/No点最大误码数maxNumPackets = 10;每个Eb/No点的最大包数

模拟每个Eb/No点

本例还演示了如何使用parfor循环可以用来代替循环时,模拟每个Eb/No点,以加快模拟。parfor的一部分并行计算工具箱,对每个Eb/No点并行执行处理,以减少总仿真时间。要使用并行计算来提高速度,请注释掉'for'语句并取消下面的'parfor'语句的注释。如果没有安装并行计算工具箱(TM), 'parfor'将默认为正常的'for'语句。

numMode =数字(simMode);%模式数ber = 0 (numMode,length(EbNo));预分配用于存储误码率结果每=零(numMode,长度(EbNo));预分配用于存储PER结果bitsPerByte = 8;%每字节的比特数固定访问地址理想情况下,该访问地址值应满足蓝牙规范第2.1.2节中指定的%要求。accessAddress = [0 1 1 0 1 0 1 1 0 1 1 1 1 1 1 0 0 ....1 0 0 0 1 1 1 1 0 0 0 1]';iMode = 1:numMode phyMode = simMode{iMode};%根据模式设置信噪比(SNR)点。对于编码的物理(LE500K和LE125K),包括码率因子在信噪比计算中使用1/2速率FEC编码器。如果任何(strcmp (phyMode, {“LE1M”“LE2M”})) snrVec = EbNo - 10*log10(sps);其他的codeRate = 1/2;snrVec = EbNo + 10*log10(codeRate) - 10*log10(sps);结束使用'parfor'来加快模拟速度iSnr = 1:长度(snrVec)使用'for'来调试模拟每次迭代设置随机子流索引,以确保每个子流的索引迭代使用一组可重复的随机数流= RandStream(“combRecursive”“种子”, 0);流。子流= iSnr;RandStream.setGlobalStream(流);创建一个错误率实例errorRate = com . errorRate (“样本”“自定义”...“CustomSamples”1: (dataLen * bitsPerByte-1));为损害创建和配置系统对象initImp = helperBLEImpairmentsInit(phyMode,sps);在结构中配置接收方参数rxCfg = struct(Mode=phyMode,SamplesPerSymbol=sps,ChannelIndex=37,...DFPacketType =“禁用”AccessAddress = AccessAddress);rxCfg。coarse频率补偿器= com . coarse频率补偿器(调制=“OQPSK”...SampleRate = sps * (1 + strcmp (phyMode,“LE2M”e6)) * 1,...SamplesPerSymbol = 2 * sps,...FrequencyResolution = 30);rxCfg。PreambleDetector = com .PreambleDetector(检测=“第一”);初始化错误计算参数[numErrs,perCnt] = deal(0);numPkt = 1;%循环模拟多个数据包numErrs <= maxNumErrors && numPkt <= maxNumPackets%生成蓝牙LE波形txBits = randi([0 1],dataLen*bitsPerByte,1,“int8”);数据位生成百分比channelIndex = randi([0 39],1,1);每个包的随机通道索引值tx波形= bleWaveformGenerator(txBits,“模式”phyMode,...“SamplesPerSymbol”sps,...“ChannelIndex”channelIndex,...“accessAddress”, accessAddress);定义射频损伤参数inittim .pfo. frequencyoffset = randsrc(1,1,-50e3:10:50e3);% In Hz,最大范围为+/- 150khzinittim .pfo. phaseoffset = randsrc(1,1,-10:5:10);%(度)Initoff = 0.15*sps;%静态定时偏移量步长= 20*1e-6;%定时漂移,最大范围为+/- 50ppminitImp。vdelay = (initoff:步长:initoff+步长*(长度(tx波形)-1))';可变定时偏移量initImp。Dc = 20;w.r.t最大振幅值的百分比%通过射频损伤传递生成的波形txImpairedWfm = helperBLEImpairmentsAddition(tx波形,inititimp);将传输的波形通过AWGN通道rx波形= awgn(txImpairedWfm,snrVec(iSnr));使用实际接收器恢复数据位rxCfg。ChannelIndex = ChannelIndex;[rxBits,recAccessAddress] = helperBLEPracticalReceiver(rx波形,rxCfg);确定BER和PER如果(长度(txBits) ==长度(rxBits)) errors = errorRate(txBits,rxBits);%输出累计错误数ber(iMode,iSnr) = errors(1);累积误码率%currentErrors =错误(2)-数字错误;%当前数据包错误数如果(currentErrors)检查当前数据包是否错误perCnt = perCnt + 1;增加PER计数结束numErrs =错误(2);累积误差百分比numPkt = numPkt + 1;结束结束per(iMode,iSnr) = perCnt/(numPkt-1);disp ([“模式”phyMode”、“...'模拟Eb/No = 'num2str (EbNo (iSnr)),“数据库””、“...的数量:, num2str (ber(将iSnr)),”、“...“每:”, num2str(每(将,iSnr))))结束结束
LE1M模式,模拟了Eb /不= 2 dB,数量:0.10149,每:1 LE1M模式,模拟Eb /不= 6 dB,数量:0.013134,每:0.9 LE1M模式,模拟Eb /不= 10 dB,数量:0,每:0 LE2M模式,模拟了Eb /不= 2 dB,数量:0.088806,每:1 LE2M模式,模拟Eb /不= 6 dB,数量:0.0089552,每:0.7 LE2M模式,模拟Eb /不= 10 dB,数量:0.00059701,每:0.1 LE500K模式,模拟了Eb /不= 2 dB,数量:0.14229,每:1 LE500K模式,模拟Eb /不= 6 dB,数量:0.0092537,PER:0.7模式LE500K,模拟Eb/No = 10 dB, BER:0, PER:0模式LE125K,模拟Eb/No = 2 dB, BER:0.0071642, PER:0.6模式LE125K,模拟Eb/No = 6 dB, BER:0, PER:0模式LE125K,模拟Eb/No = 10 dB, BER:0, PER:0

仿真结果

本节给出了考虑的PHY模式的输入Eb/No范围内的误码率和PER结果

标记=牛*年代”;颜色=“bmcr”;dataStr = {0 (numMode,1)};iMode = 1:numMode subplot(2,1,1), semogy (EbNo,ber(iMode,:).',[“- - -”标记(将)颜色(将)]);持有;dataStr(iMode) = simMode(iMode);次要情节(2,1,2),semilogy (EbNo,每(将:)。”“- - -”标记(将)颜色(将)]);持有;dataStr(iMode) = simMode(iMode);结束次要情节(2,1,1),网格;包含(“Eb /不(dB)”);ylabel (“方方面面”);传奇(dataStr);标题(“射频损伤下蓝牙LE的误码率”);次要情节(2,1,2)网格;包含(“Eb /不(dB)”);ylabel (“每”);传奇(dataStr);标题(“射频损伤下蓝牙LE的PER”);

参考结果

本节根据[]中指定的接收机灵敏度和相应的误码率,生成每种PHY模式的参考误码率、PER和Eb/No值。2]。

[refBER,refPER, refbno] =交易(零(numMode,1));headerLen = 2;%头长度(以字节为单位)crcLen = 3;%以字节为单位的CRC长度payloadLen = dataLen-headerLen-crcLen;负载长度(以字节为单位)iMode = 1:numMode [refBER(iMode),refPER(iMode), refbno (iMode)] =...helperBLEReferenceResults (simMode(将),payloadLen);disp ([“模式”simMode{将}”、“...'参考Eb/No = 'num2str (refEbNo(将)),“数据库””、“...' ber = 'num2str (refBER(将)),”、“...' per = 'num2str (refPER(将)),”、“...有效载荷长度为num2str (payloadLen),“字节”])结束
模式LE1M,参考Eb/No = 34.919 dB, BER = 0.001, PER = 0.30801, for payload length of 37 bytes模式LE2M,参考Eb/No = 34.919 dB, BER = 0.001, PER = 0.30801, for payload length of 37 bytes模式LE500K,参考Eb/No = 31.9087 dB, BER = 0.001, PER = 0.30801, for payload length of 37 bytes

进一步的探索

每个Eb/No的测试包数由maxNumErrors而且maxNumPackets参数。对于统计上有意义的结果,这些值应该大于本例中给出的值。为了生成下图,模拟使用了128字节的数据长度,maxNumErrors = 1e3,maxNumPackets = 1e4适用于所有四种传输模式。

从图中可以看出,与蓝牙规范中给出的参考Eb/No值相比,在更低的Eb/No点可以获得参考BER和PER。在本例中,仅添加以下减值并通过AWGN通道传递。

  • 直流偏置

  • 载频偏置

  • 载波相位偏移

  • 时间漂移

基于蓝牙LE规范生成的参考Eb/No值包括射频损伤裕量和在此模拟中未建模的衰落信道条件。因此,本文的模拟结果优于标准参考结果。如果修改此示例以包括模拟中的频率漂移、衰落和干扰等额外损伤,则误码率和PER曲线将直接移动到[中基于蓝牙LE标准接收机特性生成的参考Eb/No值。2]。

附录

下面的例子使用了这些helper:

  • :添加射频损伤到蓝牙LE波形

  • :解调和解码接收信号

  • :初始化射频损伤参数

  • :生成参考BER, PER和Eb/No值

总结

本例模拟了一个蓝牙LE PHY包传输,其中包含射频损伤和AWGN。它展示了如何生成蓝牙LE波形,如何使用实际接收机解调和解码数据位,以及如何计算误码率和PER。

选定的参考书目

  1. 蓝牙技术官方网站|蓝牙技术官方网站,2021年11月22日访问。https://www.bluetooth.com

  2. 蓝牙核心规范第6卷,5.3版核心系统包[低能量控制器体积]。

另请参阅

功能

对象

相关的话题

Baidu
map