利用SDR生成和传输蓝牙BR/EDR波形
这个例子展示了如何使用蓝牙®工具箱生成和传输蓝牙®BR/EDR波形。您可以使用ADALM-PLUTO无线电传输蓝牙BR/EDR波形,也可以写入基带文件(*.bb)。
接收发送的蓝牙BR/EDR波形,请参见蓝牙BR/EDR波形接收使用SDR并实现这些设置中的任何一个:
两个SDR平台连接到同一个主机,运行两个MATLAB会话。
两个SDR平台连接到两台主机,运行两个独立的MATLAB会话。
要配置您的主机使用ADALM-PLUTO无线电支持包,请参考引导主机无线电硬件设置模拟设备通信工具箱支持包ADALM-Pluto无线电.
所需的硬件
为了实时传输信号,您需要ADALM-PLUTO无线电和相应的支持包:
有关通信工具箱支持的SDR平台的完整列表,请参阅软件定义无线电(SDR)发现页面.
蓝牙BR/EDR无线电规格
蓝牙(1]是一种短距离无线个人区域网络(WPAN)技术,工作在全球未经许可的ISM (industrial, science, and medical)频段,频率范围为2.4 GHz ~ 2.485 GHz。在蓝牙技术中,数据被划分为分组。每个包在79个指定的蓝牙通道中的一个上传输。每个通道的带宽为1兆赫。由于有不同类型的无线网络在同一未经许可的频段内运行,两个不同的网络有可能相互干扰。为了减少干扰,蓝牙实现了跳频扩频(FHSS)方案,通过使用发射机和接收器都知道的伪随机序列在多个频率通道之间切换载波。
蓝牙标准规定了这些物理层(PHY)模式:
基本利率(BR)—强制模式,采用高斯频移键控(GFSK)调制,数据速率为1mbps。
增强的数据速率-可选模式,使用相移键控(PSK)调制与以下两个变体:
EDR2M:使用pi/4-DQPSK,数据速率为2mbps。
EDR3M:使用8-DPSK,数据速率为3mbps。
数据包格式
PHY模式的空接口报文格式包括以下字段:
访问代码:每个报文以接入码开始。如果后面有报文头,则访问码为72位,否则访问码为68位。访问代码由以下字段组成:
序言:序言是一个固定的0 - 1模式的四个符号。
同步字:同步字是由蓝牙设备地址的24位LAP (lower address part)派生而来的64位码字。
预告片:预告片是由四个符号组成的固定的0 - 1模式。
包的头:报头包含链接控制信息,由以下字段组成:
LT_ADDR: 3位逻辑传输地址。
TYPE: 4位类型代码,指定用于传输的包类型。它可以是{ID, NULL, POLL, FHS, HV1, HV2, HV3, DV, EV3, EV4, EV5, 2-EV3, 2-EV5, 3-EV3, 3-EV5, DM1, DH1, DM3, DH3, DM5, DH5, AUX1, 2-DH1, 2-DH3, 2-DH5, 3-DH3, 3-DH5}中的一个。
FLOW: 1位流量控制。
ARQN: 1位确认指示。
SEQN: 1位序列号。
8位报头错误检查。
有效载荷:有效载荷包括可选的有效载荷头、有效载荷体和可选的CRC。
警卫:对于EDR包,保护时间允许蓝牙无线电为从GFSK到DPSK的调制变化做好准备。保护时间必须在4.75到5.25微秒之间。
同步:对于EDR报文,同步序列包含1个参考符号和10个DPSK符号。
预告片:对于EDR报文,尾位必须是两个符号的全零模式,{00,00}表示pi/4-DQPSK,{000,000}表示8DPSK。
该图显示了BR模式的报文格式
该图显示了EDR模式的数据包格式
蓝牙BR/EDR波形的产生和传输
这个例子展示了如何根据蓝牙规范生成蓝牙BR/EDR波形。利用频谱分析仪可视化了所生成的蓝牙BR/EDR波形的频谱和谱图。您可以通过使用ADALM-PLUTO无线电或将其写入基带文件(*.bb)来传输生成的波形。
蓝牙BR/EDR基带波形生成与可视化
若要配置蓝牙波形发生器用于基本速率传输,请使用bluetoothWaveformConfig
对象。
cfg = bluetoothWaveformConfig;cfg。模式=“品牌”;传输方式为BR, EDR2M和EDR3M之一cfg。PacketType =FHS的;%包类型cfg。SamplesPerSymbol = 60;每个符号的样本百分比cfg。WhitenInitialization = [0, 0, 0, 0, 0, 1, 1);%美白初始化
若要生成蓝牙BR/EDR波形,请使用bluetoothWaveformGenerator
函数。使用getPayloadLength
以确定给定配置所需的有效载荷长度。然后使用有效载荷长度创建用于传输的随机有效载荷。
payloadLength = getPayloadLength (cfg);负载长度(以字节为单位)octetLength = 8;dataBits = randi([0 1],payloadLength*octetLength,1);生成随机有效载荷位txWaveform = bluetoothWaveformGenerator (dataBits cfg);%创建蓝牙波形
计算生成的蓝牙符号对应的蓝牙报文持续时间bluetoothPacketDuration
函数。
packetDuration = bluetoothPacketDuration (cfg.Mode cfg.PacketType payloadLength);
的comm.PhaseFrequencyOffset
系统(TM)对象用于基于通道数对蓝牙BR/EDR波形进行频移。在本例中,波形是通过使用dsp。简介
(DSP系统工具箱)在本例中,选择从0到60的随机通道号作为采样速率的系统对象为60mhz。
symbolRate = 1 e6;%符号率sampleRate = symbolRate * cfg.SamplesPerSymbol;numChannels = 10;%通道数filterSpan = 8 * (strcmp (cfg。模式,{“EDR2M”,“EDR3M”}));%以满足光谱掩模要求创建并配置频偏系统对象卵圆孔未闭= comm.PhaseFrequencyOffset (“SampleRate”, sampleRate);创建并配置频谱分析仪系统对象= dsp范围。简介(“ViewType”,光谱和光谱图,...“TimeResolutionSource”,“属性”,“TimeResolution”1 e-5...“SampleRate”sampleRate,“TimeSpanSource”,“属性”,...“时间间隔”2 e - 3“FrequencyResolutionMethod”,“WindowLength”,...“WindowLength”, 512,“AxesLayout”,“水平”,“YLimits”25 [-40]);在通道数量上循环以可视化频率移动为packetIdx = 1:numChannels channelNum = randsrc(1,1,0:60);生成随机通道号freqIndex = channelNum - 39;将光谱看成是双面的卵圆孔未闭。FrequencyOffset = freqIndex * symbolRate;%频移hoppedWaveform =卵圆孔未闭(txWaveform (1: (packetDuration + filterSpan) * cfg.SamplesPerSymbol));范围。Title = (“蓝牙频谱”cfg。模式,...'通道号的波形= 'num2str (channelNum)];范围(hoppedWaveform);结束释放系统对象释放(范围);
释放(卵圆孔未闭);
发射机处理
指定信号接收器为'File'或'ADALM-PLUTO'。
文件:使用
comm.BasebandFileWriter
写入基带文件的系统对象。ADALM-PLUTO:使用
sdrtx
模拟设备通信工具箱支持包ADALM-Pluto无线电函数来创建comm.SDRTxPluto
模拟设备通信工具箱支持包ADALM-Pluto无线电从SDR硬件传输实时信号的系统对象。
初始化信号接收器所需的参数txCenterFrequency =2445000000;%以Hz为单位,在2.402e9到2.480e9之间变化,间隔为1e6txFrameLength =长度(txWaveform);txNumberOfFrames = 1 e4;bbFileName =“bluetoothBRCaptures.bb”;%默认信号接收器是'File'signalSink =“文件”;如果比较字符串(signalSink“文件”sigSink = com . basebandfilewriter (“CenterFrequency”txCenterFrequency,...“文件名”bbFileName,...“SampleRate”, sampleRate);sigSink (txWaveform);%写入基带文件' bluetoothbrcapturing .bb'其他的%的“ADALM-PLUTO”检查是否安装了pluto硬件支持包如果isempty ((“plutoradio.internal.getRootDir”)错误(消息(“comm_demos:常见:NoSupportPackage”,...“ADALM-PLUTO无线电通信工具箱支持包”,...[' < a href = " //www.ru-cchi.com/hardware-support/ '..." ADALM-PLUTO无线电支持来自通信工具箱 ")));结束connectedRadios = findPlutoRadio;发现ADALM-PLUTO无线电连接到您的计算机radioID = connectedRadios (1) .RadioID;sigSink = sdrtx (“冥王星”,...“RadioID”radioID,...“CenterFrequency”txCenterFrequency,...“获得”0,...“SamplesPerFrame”txFrameLength,...“BasebandSampleRate”, sampleRate);基带数据到SDR硬件的传输包含在% try / catch块。这意味着如果在%传输,SDR系统使用的硬件资源%对象被释放。叫做= 1;试一试而叫做< = txNumberOfFrames%数据传输sigSink (txWaveform);%更新计数器currentFrame = currentFrame + 1;结束抓我释放(sigSink);重新抛出(我);结束结束释放信号接收器释放(sigSink);
在本例中,您可以通过使用ADALM-PLUTO或将波形写入基带文件来生成和传输蓝牙BR/EDR波形。利用频谱分析仪对生成的蓝牙BR/EDR波形进行了频谱和谱图可视化。
进一步的探索
通过改变EDR报文的传输方式,可以实现EDR报文的传输。要解码本例中生成的蓝牙BR/EDR波形,请参见蓝牙BR/EDR波形接收使用SDR.
故障排除
有关SDR硬件故障排除的一般技巧和ADALM-PLUTO无线电的通信工具箱支持包可以在常见问题及解决办法模拟设备通信工具箱支持包ADALM-Pluto无线电.
选定的参考书目
蓝牙特殊兴趣小组(SIG)。“核心系统包[BR/EDR控制器卷]”。蓝牙核心规范.5.3版本,第二卷。www.bluetooth.com