主要内容

基于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, scientific, and medical)频段,频率范围为2.4 GHz ~ 2.485 GHz。在蓝牙技术中,数据被划分为数据包。每个数据包在79个指定蓝牙通道中的一个上传输。每个通道的带宽为1mhz。由于有不同类型的无线网络在同一未经许可的频段上运行,两个不同的网络有可能相互干扰。为了减少干扰,蓝牙实现了跳频扩频(FHSS)方案,通过使用发射机和接收机都知道的伪随机序列在多个频率通道之间切换载波。

蓝牙标准指定了以下物理层(PHY)模式:

基本利率(BR)—强制模式,采用高斯频移键控(GFSK)调制,数据速率为1mbps。

增强数据速率(EDR)-可选模式,使用相移键控(PSK)调制这两个变量:

  • EDR2M:采用pi/4-DQPSK,数据速率为2mbps。

  • EDR3M:使用8-DPSK,数据速率为3mbps。

数据包格式

PHY模式的空中接口报文格式包括:

访问代码:每个数据包以接入码开始。如果后面有报文头,则访问码长度为72位,否则访问码长度为68位。访问代码由以下字段组成:

  • 序文:序文是由四个符号组成的固定的0 - 1模式。

  • 同步字:同步字是一个64位码字,由蓝牙设备地址的24位下地址部分(LAP)衍生而来。

  • 预告片:预告片是由四个符号组成的固定的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-DH1、3-DH3、3-DH3、3-DH3、3-DH5}中的一个。

  • FLOW: 1位流量控制。

  • ARQN: 1位确认指示。

  • SEQN: 1位序列号。

  • HEC: 8位报头错误检查。

有效载荷: Payload包括可选的Payload头、Payload体和可选的CRC。

警卫:对于EDR报文,守护时间允许蓝牙无线电为从GFSK到DPSK的调制变化做准备。保护时间必须在4.75到5.25微秒之间。

同步:对于EDR报文,同步序列包含1个参考符号和10个DPSK符号。

预告片:对于EDR报文,尾位必须是两个符号的全零模式,{00,00}表示pi/4-DQPSK,{000,000}表示8DPSK。

该图显示了路由模式的报文格式

该图显示了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以确定给定配置所需的有效载荷长度。然后使用有效载荷长度创建用于传输的随机有效载荷。

= getPayloadLength(cfg);负载长度(以字节为单位)octetLength = 8;dataBits = randi([0 1],payloadLength*octetLength,1);%生成随机有效载荷位tx波形=蓝牙波形发生器(dataBits,cfg);%创建蓝牙波形

计算生成的蓝牙符号对应的蓝牙报文持续时间bluetoothPacketDuration函数。

packetDuration = bluetoothPacketDuration(cfg.Mode,cfg.PacketType,payloadLength);

comm.PhaseFrequencyOffset系统(TM)对象用于对蓝牙BR/EDR波形进行基于信道号的频移。在本例中,通过使用dsp。简介(DSP系统工具箱)系统对象,该对象从范围0到60中选择一个随机通道号作为本例中使用的采样速率为60 MHz。

symbolRate = 1e6;符号速率sampleRate = symbolRate * cfg.SamplesPerSymbol;numChannels = 10;%通道数filterSpan = 8*any(strcmp(cfg. cfg)模式,{“EDR2M”“EDR3M”}));%以满足光谱掩模要求创建并配置频偏系统对象pfo = com . phasefrequencyoffset (“SampleRate”, sampleRate);创建并配置频谱分析仪系统对象范围=光谱分析仪(“ViewType”“光谱和谱图”“TimeResolutionSource”“属性”“TimeResolution”1 e-5“SampleRate”sampleRate,“TimeSpanSource”“属性”“时间间隔”2 e - 3“FrequencyResolutionMethod”“WindowLength”“WindowLength”, 512,“AxesLayout”“水平”“YLimits”25 [-40],“AveragingMethod”“奔跑”);%遍历通道数以显示频率偏移packetIdx = 1:numChannels channelNum = randsrc(1,1,0:60);生成随机通道号freqIndex = channelNum - 39;将其想象成一个两面谱卵圆孔未闭。FrequencyOffset = freqIndex*symbolRate;%频移hopped波形= pfo(tx波形(1:(packetDuration+filterSpan)*cfg.SamplesPerSymbol));范围。标题= [“蓝牙频谱”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 =长度(tx波形);txNumberOfFrames = 1e4;bbFileName =“bluetoothBRCaptures.bb”%默认信号接收器是'File'signalSink =“文件”如果比较字符串(signalSink“文件”) sigSink = com . basebandfilewriter (“CenterFrequency”txCenterFrequency,“文件名”bbFileName,“SampleRate”, sampleRate);sigSink (txWaveform);%写入基带文件' bluetoothbrcapture .bb'其他的%用于“ADALM-PLUTO”检查是否安装了pluto的HSP (Hardware Support Package)如果isempty ((“plutoradio.internal.getRootDir”)错误(消息(“comm_demos:常见:NoSupportPackage”ADALM-PLUTO无线电通信工具箱支持包(' < a href = " //www.ru-cchi.com/hardware-support/ 'ADALM-PLUTO无线电支持从通信工具箱')));结束connectedadios = findPlutoRadio;发现ADALM-PLUTO无线电连接到您的计算机radioID = connectedRadios(1).RadioID;sigSink = sdrtx(“冥王星”“RadioID”radioID,“CenterFrequency”txCenterFrequency,“获得”0,“SamplesPerFrame”txFrameLength,“BasebandSampleRate”, sampleRate);将基带数据传输到SDR硬件的过程包含在% try/catch块。这意味着,如果在%传输,SDR System对象使用的硬件资源%被释放。currentFrame = 1;试一试currentFrame <= 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无线电通信工具箱支持包)

选定的参考书目

  1. 蓝牙特别兴趣小组(SIG)。核心系统包[BR/EDR控制器卷]。蓝牙核心规格.版本5.3,卷2。www.bluetooth.com

另请参阅

功能

对象

相关的话题

Baidu
map