主要内容

LTE接收机使用软件定义无线电

本示例演示如何从无线LTE下行链路波形中恢复主信息块(MIB)和基本系统信息。本例还展示了如何使用具有单天线或多天线的软件定义无线电(SDR)接收LTE波形。

简介

sdr_receive_diagram_published.png

在LTE中,广播通道BCH (broadcast channel)承载MIB。MIB提供基本的单元范围设置,包括系统带宽和帧数。本例从捕获的帧中解码MIB,然后为每个子帧解码控制格式指示符(CFI),它将控制区域的大小通知给用户设备(UE)。然后,示例继续解码物理下行链路控制通道(PDCCH)。UE需要将这些步骤与单元相关联。有关显示单元搜索和系统信息获取过程的示例,请参见Cell搜索,MIB和SIB1恢复(LTE工具箱)

LTE传输将BCH包含在中间的六个资源块(RBs)中。因此,无论单元带宽如何,捕获的波形带宽只需为1.92 MHz就可以解码MIB。尽管MIB只存在于一个帧的子帧0中,这个示例解调了每个帧以进行可视化和分析。

本示例支持用于LTE波形捕获的这些sdr。

  • ADALM-Pluto来自模拟设备通信工具箱支持包

  • USRP™嵌入式系列无线电通信工具箱支持包中的USRP™E310/E312

  • Xilinx®Zynq®基于无线电的通信工具箱支持包中的AD936x/FMCOMMS5

  • USRP™无线电通信工具箱支持包中的USRP™N300/N310/N320/N321/B200/B210/X300/X310

另外,如果SDR无法用于波形捕获,则该示例支持导入带有预捕获波形的文件。

示例设置

在运行示例之前,请确保为您打算使用的SDR安装了适当的支持包,并设置了硬件。

ReceiveOnSDR场的rxsim结构确定该示例是从空中接收波形还是从MAT文件导入波形。

rxsim。ReceiveOnSDR =

如果使用SDR接收LTE波形,而SDR检测不到LTE波形,则可以通过使用LTE发射机使用软件定义无线电(LTE工具箱)

中定义的参数rxsim结构控制接收器。接收器的采样速率为1.92 MHz,这是捕获6 RBs LTE带宽的标准采样速率。6rbs相当于1.4 MHz的信号带宽。若要捕获更多帧,请增加rxsim。NumCaptures参数值。默认情况下,该示例在每次执行时捕获五个LTE帧。

中指定预捕获波形的文件名文件名变量。确认MAT文件包含numCaptures变量,radioSampleRate变量,capturedData变量。每一列的captureData表示一个捕获天线和的第三维captureData表示捕获数。

文件名=“capturedLTERCDLWaveform.mat”

如果您选择ReceiveOnSDR场的rxsim结构,配置SDR接收所需的变量。如果您使用能够多通道接收的SDR设备,请尝试增加rxsim。NumAntennas到你的特别提款权支持的价值。

如果rxsim。ReceiveOnSDR rxsim。SDRDeviceName =“AD936x”用于波形接收的% SDRrxsim。RadioIdentifier =“192.168.3.2”%用于标识无线电的值,例如IP地址、USB端口或序列号rxsim。RadioSampleRate =1.92 e6%配置为1.92e6 Hz捕获带宽rxsim。RadioCenterFrequency =2450000000%中心频率,单位为Hzrxsim。FramesPerCapture =8要捕获的连续LTE帧数rxsim。NumCaptures =1执行SDR捕获的百分比rxsim。NumAntennas =1%接收天线数%派生参数captureTime = (rxsim。1)* 10e-3;将捕获帧增加1以说明未捕获的完整帧其他的rx =负载(文件名);rxsim。NumCaptures = rx.numCaptures;rxsim。RadioSampleRate = rx.radioSampleRate;结束

接收器设计:系统架构

按照以下步骤了解LTE接收器的工作原理。

  1. 如果使用SDR,则捕获LTE信号的适当帧数。

  2. 确定并修正接收信号的频率偏移。

  3. 通过执行盲单元搜索确定单元标识。

  4. 将捕获的信号同步到LTE帧的开始。

  5. 通过OFDM解调接收到的信号提取LTE资源网格。

  6. 对接收到的信号执行信道估计。

  7. 通过解码每个捕获帧的MIB来确定单元范围的设置。

  8. 解码捕获信号中每个子帧的CFI和PDCCH。

该示例绘制了捕获波形的功率谱密度,并显示了接收到的LTE资源网格、估计信道和每帧均衡的PBCH符号的可视化。

特别提款权的硬件配置

此示例使用与所选无线电相关的对象与无线电硬件通信。例如,AD936x收音机使用comm.SDRRxAD936x(Xilinx zynq无线电通信工具箱支持包)对象。

如果rxsim。ReceiveOnSDR如果(rxsim匹配。SDRDeviceName, (“AD936x”“FMCOMMS5”“冥王星”“E3xx”) sdrReceiver = sdrrx(...rxsim。SDRDeviceName,...CenterFrequency = rxsim。RadioCenterFrequency,...BasebandSampleRate = rxsim.RadioSampleRate);如果(rxsim匹配。SDRDeviceName, (“AD936x”“FMCOMMS5”“E3xx”sdrReceiver])。ShowAdvancedProperties = true;sdrReceiver。BypassUserLogic = true;sdrReceiver。IPAddress = rxsim.RadioIdentifier;其他的sdrReceiver。RadioID = rxsim.RadioIdentifier;结束其他的%表示USRP特别提款权sdrReceiver = comm.SDRuReceiver (...= rxsim平台。SDRDeviceName,...CenterFrequency = rxsim.RadioCenterFrequency);[sdrReceiver。MasterClockRate sdrReceiver。DecimationFactor] =...hGetUSRPRateInformation (rxsim.SDRDeviceName rxsim.RadioSampleRate);如果(rxsim匹配。SDRDeviceName, (“B200”“B210”])%根据需要更改USRP B200/B210的序列号sdrReceiver。SerialNum = rxsim.RadioIdentifier;其他的sdrReceiver。IPAddress = rxsim.RadioIdentifier;结束sdrReceiver。EnableBurstMode = true;sdrReceiver。SamplesPerFrame = 10 e - 3 * rxsim.RadioSampleRate;sdrReceiver。NumFramesInBurst = rxsim。FramesPerCapture + 1;将捕获帧增加1以说明未捕获的完整帧结束sdrReceiver。OutputDataType =“替身”;numSamplesToCapture =装天花板(captureTime * rxsim.RadioSampleRate);sdrReceiver。ChannelMapping = 1: rxsim.NumAntennas;结束

设置频谱分析仪显示接收到的波形。

spectrumScope =简介(...SampleRate = rxsim。RadioSampleRate,...SpectrumType =“能量密度”...Title =“基带LTE信号频谱”...YLabel =“功率谱密度”);

LTE的设置

enb结构包含解码MIB的参数。该示例假设频分双工(FDD)、正常循环前缀长度和四个特定于单元格的参考端口(CellRefP)用于MIB解码,因为这些值是未知的。MIB提供了的实际值CellRefP

enb。DuplexMode =“FDD”;enb。CyclicPrefix =“正常”;enb。CellRefP = 4;

信号的采样率控制捕获的带宽和波形中RBs的数量。该示例使用一个查找表来确定RBs的数量。

%带宽:{1.4 MHz, 3 MHz, 5 MHz, 10 MHz, 20 MHz}SampleRateLUT = [1.92 3.84 7.68 15.36 30.72]*1e6;Ndlrblut = [6 15 25 50 100];enb。NDLRB = NDLRBLUT (SampleRateLUT = = rxsim.RadioSampleRate);如果rxsim。ReceiveOnSDR流(\nSDR硬件采样率配置为捕获%d个LTE RBs.\n", enb.NDLRB);结束

cec结构控制信道估计参数。为了减少噪声对导频估计的影响,使用保守的9 × 9导频平均窗口。

cec。FreqWindow = 9;资源元素的频率平均窗口(REs)cec。TimeWindow = 9;REs的时间平均窗口cec。InterpType =“立方”%三次插值cec。PilotAverage =“UserDefined”%导频平均法cec。InterpWindow =“中心”插值开窗方法cec。InterpWinSize = 3;同时插值最多3个子帧

信号捕获与处理

为了捕获和解码LTE帧的爆发,该示例使用循环。对于每个捕获的帧,示例解码MIB,如果解码成功,则解码每个子帧的CFI和PDCCH。对于每一个成功解码的子帧,示例显示信道估计和均衡的PDCCH符号。

为均衡的PDCCH符号设置星座图查看器,为信道估计图设置数字句柄。

星座= comm.ConstellationDiagram (“标题”“均衡PDCCH符号”);channelEstimatePlot =图(“可见”“关闭”);

存储默认的解码参数。

enbDefault = enb;samplesPerFrame = 10 e - 3 * rxsim.RadioSampleRate;% LTE帧周期为10毫秒

进行LTE接收机处理。

我= 1:rxsim。NumCaptures设置默认的LTE参数enb = enbDefault;% rx波形持有|rxsim。FramesPerCapture|连续编号%帧价值的连续基带LTE样本。如果rxsim。ReceiveOnSDR%特别提款权捕获流(“开始一个新的射频捕获。”) rx波形= capture波形(sdrReceiver,numSamplesToCapture);其他的rxWaveform = rx.capturedData(:,:我);结束显示捕获脉冲的功率谱密度spectrumScope (rxWaveform);释放(spectrumScope);执行频率偏移校正frequencyOffset = lteFrequencyOffset (enb rxWaveform);rxWaveform = lteFrequencyCorrect (enb rxWaveform frequencyOffset);流(修正了%g Hz的频率偏移。\nfrequencyOffset)执行盲小区搜索以获取小区标识和定时。使用“PostFFT”二次同步信号(SSS)检测提高速度的方法cellSearch。SSSDetection =“PostFFT”;cellSearch。MaxCellCount = 1;[NCellID, frameOffset] = lteCellSearch (rxWaveform, enb cellSearch);流("检测到%i.\n的单元格标识", NCellID);enb。NCellID = NCellID;从lteCellSearch %同步捕获的样本到一个LTE帧的开始,并修剪掉属于不完整帧的任何样本。。rxWaveform = rxWaveform (frameOffset + 1:最终,);tailSamples =国防部(长度(rxWaveform), samplesPerFrame);rxWaveform = rxWaveform (1: end-tailSamples,:);enb。NSubframe = 0;% OFDM解调rxGrid = lteOFDMDemodulate (enb rxWaveform);%执行通道估计[命令,巢]= lteDLChannelEstimate (cec, enb rxGrid);sfDims = lteResourceGridSize (enb);Lsf = sfDims (2);% OFDM符号每子帧LFrame = 10 * Lsf;% OFDM符号每帧numFullFrames = (rxWaveform) / samplesPerFrame长度;对于每一帧,解码MIB和CFI帧= 0:(numFullFrames-1) fprintf(\n在burst中执行帧%i的MIB解码…\n...框架+ 1,numFullFrames)从接收到的资源网格的每一帧中提取子帧0%和渠道估计。enb。NSubframe = 0;rxsf = rxGrid(:,帧* LFrame + (1: Lsf):);hestsf =命令(:,帧* LFrame + (1: Lsf):,:);% PBCH解调。提取与PBCH相对应的REs%接收网格和信道估计网格解调。假设% 4细胞特异性参考信号的PBCH解码作为初始%,该值未知。enb。CellRefP = 4;pbchIndices = ltePBCHIndices (enb);[pbchRx, pbchHest] = lteExtractResources (pbchIndices、rxsf hestsf);mib, ~, ~, nfmod4 CellRefP] = ltePBCHDecode (pbchHest, enb, pbchRx巢);%如果PBCH解码不成功,转到for-的下一次迭代%循环如果~ CellRefP流("没有检测到帧= %d.\n"、框架);继续结束% PBCH解码成功,解码MIB,获取系统%信息,包括系统带宽enb = lteMIB (mib, enb);enb。CellRefP = CellRefP;从ltePBCHDecode %%合并函数的nfmod4值输出% ltePBCHDecode,与从MIB建立的NFrame值相同%系统帧数模4。enb。NFrame = enb.NFrame + nfmod4;流(" MIB Decode.\n成功")流("帧号:%d.\n", enb.NFrame);eNodeB传输带宽可以大于%捕获带宽,因此限制用于处理的带宽enb。NDLRB = min (enbDefault.NDLRB enb.NDLRB);处理帧内的子帧科幻小说= 0:9%提取子帧enb。NSubframe =科幻小说;rxsf = rxGrid(:,帧* LFrame +科幻* Lsf + (1: Lsf));使用正确的数量执行通道估计% CellRefP[hestsf, nestsf] = lteDLChannelEstimate (cec, enb rxsf);物理CFI信道(PCFICH)解调提取REs%对应的PCFICH从接收的网格和解调信道估计。pcfichIndices = ltePCFICHIndices (enb);[pcfichRx, pcfichHest] = lteExtractResources (pcfichIndices、rxsf hestsf);[cfiBits, recsym] = ltePCFICHDecode (pcfichRx, enb pcfichHest, nestsf);% CFI解码enb。CFI = lteCFIDecode (cfiBits);流("子帧%d,已解码CFI值:%d.\n"科幻,enb.CFI);% PDCCH解调。提取PDCCH对应的REs%从接收到的网格和信道估计解调。pdcchIndices = ltePDCCHIndices (enb);[pdcchRx, pdcchHest] = lteExtractResources (pdcchIndices、rxsf hestsf);[pdcchBits, pdcchEq] = ltePDCCHDecode (pdcchRx, enb pdcchHest, nestsf);释放(星座);星座(pdcchEq);结束绘制cellrefp0和接收天线之间的信道估计focalFrameIdx =帧* LFrame + (1: LFrame);图(channelEstimatePlot);focalFrameIdx冲浪(abs(命令(:,1,1)));包含(“OFDM符号指数”);ylabel (“副载波指数”);zlabel (“级”);标题(信道震级频率响应的估计);结束结束

修正了-2.48294 Hz的频率偏移。
检测到一个编号为17的细胞。
对突发的4帧中的第1帧进行MIB解码…
成功的MIB解码。
帧数:705。
子帧0,解码CFI值:3。子帧1,解码CFI值:3。子帧2,解码CFI值:3。子帧3,解码CFI值:3。子帧4,解码CFI值:3。子帧5,解码CFI值:3。子帧6,解码CFI值:3。子帧7,解码CFI值:3。子帧8,解码CFI值:3。子帧9,解码CFI值:3。
对突发的4帧中的第2帧进行MIB解码…
成功的MIB解码。
帧数:706。
子帧0,解码CFI值:3。子帧1,解码CFI值:3。子帧2,解码CFI值:3。子帧3,解码CFI值:3。子帧4,解码CFI值:3。子帧5,解码CFI值:3。子帧6,解码CFI值:3。子帧7,解码CFI值:3。子帧8,解码CFI值:3。子帧9,解码CFI值:3。
在burst中对帧3 / 4进行MIB解码…
成功的MIB解码。
帧数:707。
子帧0,解码CFI值:3。子帧1,解码CFI值:3。子帧2,解码CFI值:3。子帧3,解码CFI值:3。子帧4,解码CFI值:3。子帧5,解码CFI值:3。子帧6,解码CFI值:3。子帧7,解码CFI值:3。子帧8,解码CFI值:3。子帧9,解码CFI值:3。
对突发的4帧中的4帧进行MIB解码…
成功的MIB解码。
帧数:700。
子帧0,解码CFI值:3。子帧1,解码CFI值:3。子帧2,解码CFI值:3。子帧3,解码CFI值:3。子帧4,解码CFI值:3。子帧5,解码CFI值:3。子帧6,解码CFI值:3。子帧7,解码CFI值:3。子帧8,解码CFI值:3。子帧9,解码CFI值:3。

{

如果rxsim。ReceiveOnSDR释放(sdrReceiver);结束释放(星座);释放星座图对象

进一步的探索

  • 传输标准兼容的LTE波形LTE发射机使用软件定义无线电(LTE工具箱).然后你可以用这个例子解码波形。在附带的示例中,尝试更改单元格标识和初始帧号,并在此示例中观察检测到的单元格标识和帧号。如果使用受支持的多通道SDR,请尝试在附带示例中增加天线数量,以可视化使用多通道传输/接收的好处。

  • 本例仅对基本的系统信息进行解码。有关如何健壮地解码更多物理通道的示例,请参阅Cell搜索,MIB和SIB1恢复(LTE工具箱)的例子。

特别提款权故障排除

本地函数

函数波形= captureWaveform (sdrReceiver numSamplesToCapture)返回给定的复值的列向量对象和标量NUMSAMPLESTOCAPTURE值。对于com . sdrureceiver对象,使用突发捕获技术来%获取波形如果isa (sdrReceiver“comm.SDRuReceiver”)波形=复杂(零(numSamplesToCapture,length(sdrReceiver.ChannelMapping)));samplesPerFrame = sdrReceiver.SamplesPerFrame;我= 1:sdrReceiver。NumFramesInBurst波形(samplesPerFrame*(i-1)+(1:samplesPerFrame),:) = sdrReceiver();结束其他的波形=捕获(sdrReceiver numSamplesToCapture);结束结束
Baidu
map