主要内容

LTE接收机使用模拟设备AD9361/AD9364

这个例子展示了如何使用Xilinx®Zynq-Based Radio Support Package with MAT万博1manbetxLAB®和LTE Toolbox™来解码主信息块(MIB)并从LTE波形中恢复基本的系统信息。同伴可以产生一个适合接收的信号LTE发射器使用ADIM Devices AD9361 / AD9364例如,如果您有第二个SDR平台。

指的是指导主机-无线电硬件设置有关配置主机以使用基于Xilinx Zynq的无线电支持包的详细信息的文档。万博1manbetx

介绍

LTE工具箱提供了对LTE波形进行解码的功能和工具。此示例显示了如何使用SDR无线电硬件(如基于Xilinx Zynq的无线电)捕获LTE波形,并对其进行解码以恢复基本系统信息。

在LTE中,主信息块(MIB)是在广播信道(BCH)中携带的。MIB提供基本的单元范围设置,包括系统带宽和帧数。本示例对捕获的一组帧的MIB进行解码,然后对每个子帧解码控制格式指示符(CFI),以便告知用户设备(UE)控制区域的大小。然后解码物理下行链路控制信道(PDCCH)。这些步骤是UE与单元关联所必需的第一步。给出了一个鲁棒的小区搜索和系统信息获取过程的具体实例小区搜索,MIB和SIB1恢复(LTE工具箱)

BCH在LTE传输的中间六个资源块(RBS)中传输,因此无论小区带宽如何,都需要仅1.92 MHz的捕获带宽来解码MIB。仅需要帧的子帧#0来解码MIB,但此示例将解调每个整个帧以进行可视化和分析。

设置

这个例子需要LTE工具箱运行。执行本示例前,请确保已完成以下操作:

  1. 配置主计算机以使用基于Xilinx Zynq的无线电的支持包。万博1manbetx看指导主机-无线电硬件设置求助。如果要从单个主机运行两个无线电,则可能需要一些其他步骤。看设置两个无线电连接到一个主机求助。

  2. 确保您有合适的信号接收。这个例子旨在与...合作LTE发射器使用ADIM Devices AD9361 / AD9364例子。

  3. 您可以将此示例与AD936x或FMCOMMS5无线电硬件一起使用。缺省情况下,本例配置为在AD936x下运行。配置FMCOMMS5的样例时,必须使用comm.SDRRxFMCOMMS5对象,不能使用comm.SDRRxAD936x对象。要更新FMCOMMS5的示例,请遵循内联注释中的说明。

%检查是否安装了LTE工具箱,是否有有效的许可证如果isempty(ver(lte的)))%检查LST安装错误(“zynqRadioLTEReceiver: NoLST”'请安装LTE工具箱以运行此示例。');elseif~许可证(“测试”'lte_toolbox'%检查是否存在有效的许可证错误(“zynqRadioLTEReceiver: NoLST”“运行此示例需要LTE工具箱的有效许可证。”);结尾

接收器设计:系统架构

LTE接收器的一般结构可以描述如下:

  1. 使用SDR硬件捕获适当数量的LTE信号帧

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

  3. 执行盲小区搜索以确定小区标识

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

  5. OFDM对接收的信号进行解调,得到一个LTE资源网格

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

  7. 解码每个捕获帧的MIB,以确定整个单元范围的设置

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

  9. 重复以上所有步骤所需的次数

该实施例绘制捕获波形的功率谱密度,并且对于每个帧,显示所接收的LTE资源网格,估计的信道和均等的PBCH符号的赖名。

接收方设置

方法中定义的参数控制接收方处方结构。接收机的采样率为1.92 MHz,这是捕获6个资源块(RBs) LTE带宽的标准采样率。6 RBs相当于1.4 MHz的信号带宽。您可能希望增加rx.numCaptures参数来捕获更多的帧突发。每次捕获5帧LTE帧。

%用户定义的参数rxsim.radiofrontendsamplere = 1.92e6;%配置为1.92 MHz捕获带宽rxsim。RadioCenterFrequency = 2.45 e9;rxsim。RadioChannelMapping = 1;rxsim。FramesPerCapture = 5;%捕获的连续LTE帧数rxsim.numcaptures = 1;%捕获次数%派生参数samplesPerFrame=10e-3*rxsim.RadioFrontEndSampleRate;%LTE帧周期为10 msCaptureTime = rxsim.framespercapture * 10e-3;%LTE帧周期为10 ms

此示例使用无线电硬件通信使用comm.SDRRxAD936x系统对象。

rxsim。SDRDeviceName =“AD936x”%要更新FMCOMMS5的示例,请将| rxsim.SDRDeviceName |设置为%|'fmcomms5'|。无线电= sdrdev(rxsim.sdrdevicename);sdreceiver = sdrrx(...rxsim。SDRDeviceName,...'IP地址''192.168.3.2'...“BasebandSampleRate”,rxsim.radiofrontendsamplate,...'中心罚款',rxsim.RadioCenterFrequency,...'channelmapping', rxsim。RadioChannelMapping,...'outputdatatype''双倍的'...'gainsource'“AGC快速攻击”...“ShowAdvancedProperties”是的,...“BypassUserLogic”,真正的);%Spectrum Viewer设置spectrumScope = dsp。简介(...“SampleRate”,rxsim.radiofrontendsamplate,...“SpectrumType”的功率密度...“SpectralAverages”10...'ylimits',[-130 -20],...“头衔”“基带LTE信号频谱”...“YLabel”'功率谱密度');

LTE设置

MIB解码的参数包含在结构中eNB.。假设FDD双工模式和普通循环前缀长度。对于MIB解码,假设有四个cell-specific reference port (CellRefP)。实际的CellRefP个数由MIB提供。

eNB.DuplexMode ='FDD';enb.CyclicPrefix='普通的';enb。CellRefP = 4;

信号的采样率控制捕获带宽。捕获的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.RadioFrontEndSampleRate);如果isempty(eNB.ndlrb)错误('不支持采样率。万博1manbetx万博1manbetx支持的速率为%s。”...'1.92 MHz, 3.84 MHz, 7.68 MHz, 15.36 MHz, 30.72 MHz');结尾fprintf('\nSDR硬件采样率配置为捕获%d LTE RBs \n', enb.NDLRB);
SDR硬件采样率被配置为捕获6个LTE RB。

使用特定于特定于特定的参考信号的信道估计配置。保守的9×9平均窗口用于最小化噪声的效果。

cec。FreqWindow = 9;%资源元素(REs)中的频率平均窗口cec。TimeWindow = 9;res中的%time平均窗口cec.interpype ='立方体'%三次插值cec。PilotAverage ='用户自定义'%飞行员平均方法cec。InterpWindow =“居中”%插值窗口方法cec.Interpwinsize = 3;%同时内插最多3个子帧

信号捕获和处理

一个while循环被用来捕获和解码LTE帧的突发。对于捕获的每一帧,将对MIB进行解码,如果成功,则对每一个子帧的CFI和PDCCH进行解码,并显示信道估计和均衡的PDCCH符号。

%为均衡PDCCH符号设置星座图查看器星座= comm.ConstellationDiagram (“头衔”'均衡的PDCCH符号') ;%信道估计图的句柄channelEstimatePlot=图(“可见的”“关闭”); enbDefault=enb;rxsim.numCaptures%设置默认LTE参数eNB = enbdefault;%特别提款权捕获fprintf('\ nstarting一个新的rf捕获。\ n'% rx波形持有|rxsim。FramesPerCapture|连续帧值连续基带LTE样本的%。RX波形=捕获(SDR接收器、捕获时间、,'秒');%显示捕获突发的功率谱密度spectrumScope (rxWaveform);%执行频率偏移校正frequencyOffset = lteFrequencyOffset (enb rxWaveform);rxWaveform = lteFrequencyCorrect (enb rxWaveform frequencyOffset);fprintf('修正了%g Hz的频率偏移'frequencyOffset)%执行盲单元搜索以获取单元标识和时间偏移%使用“PostFFT”SSS检测方法来提高速度cellSearch。SSSDetection =“后FFT”;cellSearch。MaxCellCount = 1;[NCellID, frameOffset] = lteCellSearch (rxWaveform, enb cellSearch);fprintf('检测到%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);%执行4 CellRefP的信道估计,目前我们没有%了解eNodeB的CellRefP。[命令,巢]= 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 '执行MIB Decode for frame %i of %i in burst…\n'...框架+ 1,numFullFrames)%从接收到的资源网格的每个帧中提取子帧#0%和频道估计。enb.NSubframe=0;rxsf=rxGrid(:,frame*LFrame+(1:Lsf));hestsf=hest(:,frame*LFrame+(1:Lsf),:,);% PBCH解调。提取资源元素(REs)从所接收的网格和频道对应于PBCH的%%估计解调网格。假设4个细胞特定参考%PBCH解码的信号最初我们不知道实际值。enb。CellRefP = 4;pbchIndices = ltePBCHIndices (enb);[pbchRx, pbchHest] = lteExtractResources (pbchIndices、rxsf hestsf);mib, ~, ~, nfmod4 CellRefP] = ltePBCHDecode (pbchHest, enb, pbchRx巢);%如果PBCH解码成功CellRefP~=0,则更新信息如果~CellRefP fprintf('没有检测到帧的PBCH。\ n');继续结尾% PBCH解码成功后,对MIB进行解码,获取系统%包括系统带宽在内的信息enb = lteMIB (mib, enb);enb。CellRefP = CellRefP;百分比从ltepbchdecode.%合并函数的nfmod4值输出%LTEPBCHDECODE,作为从MIB建立的NFRAME值%是系统帧号模数4。enb.NFrame=enb.NFrame+nfmod4;fprintf(`成功的MIB解码。\n `)fprintf('帧号:%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(eNB,CEC,RXSF);% PCFICH解调。提取PCFICH对应的REs%从接收网格和信道估计用于解调。pcfichIndices = ltePCFICHIndices (enb);[pcfichRx, pcfichHest] = lteExtractResources (pcfichIndices、rxsf hestsf);[cfiBits, recsym] = ltePCFICHDecode (pcfichRx, enb pcfichHest, nestsf);% CFI解码enb。CFI = lteCFIDecode (cfiBits);fprintf('子帧%D,解码的CFI值:%d。\ n',sf,enb.CFI);% PDCCH解调。提取与PDCCH对应的REs%从接收网格和信道估计用于解调。pdcchindices = ltepdcchindices(eNB);[pdcchrx,pdcchhest] = lteextractresources(pdcchindices,rxsf,hestsf);[pdcchbits,pdccheq] = ltepdcchdecode(eNB,pdcchrx,pdcchhest,nestsf);释放(星座);星座(PDCCHEQ);暂停(0);允许星座重绘结尾%绘制CellRefP 0和接收天线之间的信道估计值focalframeIdx =帧* LFRAME +(1:LFRAME);设置(0,'curratfigure',信道,监督者);ChannelEstimatePlot.visible =.'在';冲浪(ABS(hest(:,focalframeidx,1,1)));Xlabel('OFDM符号索引');ylabel (“子载波索引”);Zlabel('震级');头衔(“信道幅度频率响应的估计”);结尾rxsim.numCaptures= rxsim.numCaptures-1;结尾释放(sdrReceiver);%释放SDR接收器对象释放(spectrumScope);%释放频谱分析仪对象释放(星座);%释放星座图对象
开始新的射频捕获建立与硬件的连接。此过程可能需要几秒钟。修正了3.02934 Hz的频率偏移。检测到17的细胞身份。正在为突发中的第1帧(共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。正在为突发中的第2帧(共4帧)执行MIB解码。。。成功的MIB解码。帧号:701。子帧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。正在为突发中的第3帧(共4帧)执行MIB解码。。。成功的MIB解码。帧号:702。子帧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解码。帧号:703。子帧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。

尝试的东西

同伴的例子LTE发射器使用ADIM Devices AD9361 / AD9364可以用来传输一个符合标准的LTE波形,通过这个例子可以部分解码。在附带的示例中,尝试更改单元标识和初始帧号,并观察本示例中检测到的单元标识和帧号。

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

排除示例故障

用于排除SDR硬件故障的一般技巧可以在常见问题和修复