主要内容

使用模拟器件AD9361/AD9364传输和接收LTE MIMO

本示例展示了如何使用Xilinx®zynq无线电支持包的通信工具箱™支持包与MATLAB®和LTE工具箱™一起生成多金宝app天线LTE传输,以便在单个SDR平台上同时发射和接收。图像文件被编码并打包到无线电帧中进行传输,随后在接收时进行解码。下图是这个设置的概念概述:

请参阅引导主机无线电硬件设置文档,详细介绍如何配置主机以使用Xilinx®zynq无线电支持包。金宝app

简介

您可以使用LTE工具箱生成符合标准的基带IQ下行和上行参考测量通道(RMC)波形和下行测试模型(E-TM)波形。可以使用SDR硬件(如基于Xilinx zynq的无线电)调制这些基带波形以进行射频传输。

本示例导入一个图像文件,并将其打包到使用LTE工具箱生成的基带RMC波形的多个无线电帧中。函数创建连续的RF LTE波形重复波形发射机功能与Zynq无线电硬件。基带RMC波形被传输到Zynq无线电上的硬件存储器,并在空中无间隙连续传输。如果您使用能够多通道传输和接收的SDR设备,本例可以使用LTE传输分集生成和传输多天线LTE波形。有关具有多通道支持的设备的概述,请参见金宝appI / O通道

该示例通过使用相同的Zynq无线电硬件平台捕获结果波形。如果有合适的硬件,本例中可以在接收机中使用多通道接收。

示例设置

执行本例前,需要执行以下步骤:

  1. 将您的主机配置为使用基于Xilinx zynq的无线电支持包。金宝app看到引导主机无线电硬件设置

  2. 在运行示例之前,请确保安装了“LTE工具箱”。如果没有安装LTE工具箱,该示例将返回一个错误。您必须拥有LTE工具箱许可证才能运行此示例。

  3. 您可以在AD936x或FMCOMMS5无线电硬件上使用此示例。默认情况下,该示例配置为使用AD936x运行。要为FMCOMMS5配置示例,必须使用com . sdrtxfmcomms5和com . sdrrxfmcomms5对象,而不是com . sdrtxad936x和com . sdrrxad936x对象。要更新FMCOMMS5的示例,请遵循内联注释中的说明。

检查是否安装了LTE工具箱,并且有有效的许可证

如果isempty(版本(lte的))检查LST安装错误(“zynqRadioLTEMIMOTransmitReceive: NoLST”...“请安装LTE工具箱以运行此示例。”);elseif~许可证(“测试”“LTE_Toolbox”检查是否有有效的许可证。错误(“zynqRadioLTEMIMOTransmitReceive: NoLST”...“需要LTE工具箱的有效许可证才能运行此示例。”);结束

该示例配置整个示例中显示的所有作用域和图形。

%图像绘图的设置句柄如果~ (“imFig”“var”) || ~把手(imFig) imFig =图;imFig。NumberTitle =“关闭”;imFig。Name =“形象策划”;imFig。可见=“关闭”其他的clf (imFig);%清晰数字imFig。可见=“关闭”结束通道估计图的设置句柄如果~ (“hh”“var”|| ~把手(hest) hest =数字(“可见”“关闭”);hh。NumberTitle =“关闭”;hh。Name =信道估计的其他的clf (hh);%清晰数字hh。可见=“关闭”结束%设置频谱查看器光谱分析仪(...“SpectrumType”的功率密度...“SpectralAverages”10...“YLimits”, [-130 -40],...“标题”“接收基带LTE信号频谱”...“YLabel”“功率谱密度”);为均衡的PDSCH符号设置星座图查看器星座图(“标题”“均衡PDSCH符号”...“ShowReferenceConstellation”、假);

默认情况下,示例使用具有两个通道的AD936x设备。如果您使用的是FMCOMMS5射频卡,请设置txsim。SDRDeviceName“FMCOMMS5”而不是“AD936x”.此设置还允许以后使用四个通道。

初始化SDR设备Txsim = struct;为发射机创建空结构txsim。SDRDeviceName =“AD936x”设置SDR设备如果要更新FMCOMMS5的示例,请设置|txsim。SDRDeviceName |,% | |“FMCOMMS5”。radio = sdrdev(txsim.SDRDeviceName);创建SDR设备对象

运行示例

您可以通过在MATLAB命令窗口中输入此示例的脚本名称来运行此示例:

zynqRadioLTEMIMOTransmitReceiveAD9361AD9364ML

下面几节解释了这个示例的设计和体系结构,以及在执行代码时可以看到的内容。

发射机设计:系统架构

LTE发射机的总体结构由以下步骤组成:

  1. 导入并将图像转换为二进制数据流。

  2. 使用LTE工具箱生成基带LTE信号,将二进制数据流打包到下行共享信道(DL-SCH)的传输块中。

  3. 使用SDR硬件准备传输的基带信号。

  4. 将基带数据发送到SDR硬件进行上采样并以所需的中心频率连续传输。

设置SDR发射机

txsim结构控制SDR发射器系统对象的属性。默认情况下,示例使用具有两个通道的AD936x设备。如果您的设备使用FMCOMMS4射频卡,则只有一个通道。集txsim。NTxAnts为1。

如果你设置了txsim。SDRDeviceName“FMCOMMS5”在前一节中,示例自动选择了四个通道。

txsim。RC =“R.7”%基本RMC配置,10mhz带宽txsim。NCellID = 88;细胞标识txsim。NFrame = 700;初始帧数txsim。TotFrames = 1;%要生成的帧数txsim。DesiredCenterFrequency = 2.45e9;中心频率(以Hz为单位)开关txsim。SDRDeviceName情况下“AD936x”txsim。NTxAnts = 2;%发射天线个数% txsim。NTxAnts= 1;情况下“FMCOMMS5”txsim。NTxAnts = 4;否则错误(未知SDR设备:%s, txsim.SDRDeviceName);结束% txsim。NTxAnts= 1;

为了直观地看到在单通道上使用多通道传输和接收的好处,可以降低发射机增益参数以损害接收波形的质量。例如,设置txsim。升-20;降-10根据天线配置调整此值。

% TX增益参数:txsim。增益= -10;

创建具有指定属性的SDR发射器系统对象。

sdrTransmitter = sdrtx(txsim.SDRDeviceName);

准备镜像文件

该示例从图像文件读取数据,将其缩放以进行传输,并将其转换为二进制数据流。

传输图像的大小直接影响传输图像数据所需的LTE无线电帧数。的比例因子量表= 0.5需要5次LTE无线电帧传输。增加缩放因子会导致更多的帧传输;减小缩放因子可以减少帧数。

输入图像文件并转换为二进制流fileTx =“peppers.png”%镜像文件名fData = imread(fileTx);从文件中读取映像数据尺度= 0.5;%图像缩放因子origSize = size(fData);%原始输入图像大小scaledSize = max(floor(scale.*origSize(1:2)),1);计算新的图像大小heightIx = min(圆(((1:scaledSize(1)) -0.5)。/规模+ 0.5),origSize (1));widthIx = min(圆(((1:scaledSize(2)) -0.5)。/规模+ 0.5),origSize (2));fData = fData(height,widthIx,:);调整图像大小imsize = size(fData);存储新的图像大小binData = dec2bin(fData(:),8);转换为8位无符号二进制trData =重塑((binData- .' 0 ')。1[])。”;%创建二进制流

本例显示要传输的图像文件。当成功接收并解码图像文件时,示例将显示接收到的图像。

%绘图传输图像图(imFig);imFig。可见=“上”;次要情节(211);imshow (fData);标题(“传播形象”);次要情节(212);标题(“接收到的图像将出现在这里……”);集(gca),“可见”“关闭”);%隐藏轴甘氨胆酸组(findall (,“类型”“文本”),“可见”“上”);%取消隐藏标题暂停(1);%暂停绘制Tx图像

生成基带LTE信号

本例使用TS36.101附录A.3中定义的默认配置参数[1]添加一个空格来生成RMClteRMCDL(LTE工具箱).配置结构中的参数rmc可根据需要定制。示例生成基带波形,eNodeBOutput,一个完整的资源网格,txGrid,以及RMC的完整配置lteRMCDLTool(LTE工具箱).该示例使用从输入图像文件创建的二进制数据流trData作为传输编码的输入,并将其打包到物理下行共享通道(PDSCH)中的多个传输块中。生成用于传输的帧数取决于导入图像文件时的图像缩放集。

%创建RMCrmc = lteRMCDL(txsim.RC);的大小计算所需的LTE帧数图像数据%trBlkSize = rmc.PDSCH.TrBlkSizes;txsim。TotFrames = ceil(numel(trData)/sum(trBlkSize(:)));自定义RMC参数rmc。NCellID = txsim.NCellID;rmc。NFrame = txsim.NFrame;rmc。TotSubframes = txsim.TotFrames*10;每帧10个子帧rmc。CellRefP = txsim.NTxAnts;配置单元参考端口数rmc.PDSCH.RVSeq = 0;用虚拟数据填充子帧5rmc。OCNGPDSCHEnable =“上”;rmc。OCNGPDCCHEnable =“上”如果在两个通道上传输启用发送分集如果rmc。CellRefP >= 2 rmc.PDSCH.TxScheme =“TxDiversity”;rmc.PDSCH.NLayers = txsim.NTxAnts;rmc.OCNGPDSCH.TxScheme =“TxDiversity”结束流(\n生成LTE传输波形:\n')流('将图像数据打包到%d帧(s).\n\n', txsim.TotFrames);将图像数据打包到一个LTE帧中。[eNodeBOutput,txGrid,rmc] = lteRMCDLTool(rmc,trData);
生成LTE传输波形:将图像数据打包成5帧(s)。

为传播做好准备

发射机使用transmitRepeat从基于zynq的无线电平台上的DDR存储器连续循环传输基带LTE波形的功能。该示例显示了基于天线数量的发射机应用的信道映射。

sdrTransmitter。BasebandSampleRate = rmc.SamplingRate;% 15.36 Msps默认RMC (R.7)%,带宽为10mhzsdrTransmitter。CenterFrequency = txsim.DesiredCenterFrequency;sdrTransmitter。增益= txsim.增益;sdrTransmitter。ShowAdvancedProperties = true;sdrTransmitter。BypassUserLogic = true;应用TX通道映射如果txsim。NTxAnts == 2 fprintf(设置通道映射为“[12]”。\n\n);sdrTransmitter。ChannelMapping = [1,2];elseiftxsim。NTxAnts == 4 fprintf(设置通道映射为“[1 2 3 4]”。\n\n);sdrTransmitter。ChannelMapping = [1,2,3,4];其他的流(“设置通道映射为“1”。\n\n”);sdrTransmitter。ChannelMapping = 1;结束%缩放信号以获得更好的功率输出。powerScaleFactor = 0.8;如果txsim。NTxAnts >= 2我= 1:txsim。NTxAntseNodeBOutput(:,i) = eNodeBOutput(:,i).*(1/max(abs(eNodeBOutput(:,i)))*powerScaleFactor);结束其他的eNodeBOutput = eNodeBOutput.*(1/max(abs(eNodeBOutput))*powerScaleFactor);结束将传输信号强制转换为int16——%这是SDR硬件的本机格式。eNodeBOutput = int16(eNodeBOutput*2^15);
设置通道映射为“[12]”。

使用SDR硬件进行重复传输

transmitRepeat功能将基带LTE传输传输到SDR平台,并将信号样本存储在硬件存储器中。该示例在空中连续无间隙地传输波形,直到发射器系统对象被释放。该功能将显示确认传输已成功启动的消息。

transmitRepeat (sdrTransmitter eNodeBOutput);
##建立硬件连接。这个过程可能需要几秒钟。波形传输已成功启动,并将无限重复。##调用release方法停止传输。

接收机设计:系统架构

LTE接收机的总体结构由以下步骤组成:

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

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

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

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

  5. 对接收到的信号进行信道估计。

  6. 解码PDSCH和DL-SCH,从每个无线电帧的传输块中获得传输数据。

  7. 重新组合接收到的传输块数据,形成接收到的图像。

这个示例绘制了捕获波形的功率谱密度,并显示了估计通道、均衡的PDSCH符号和接收到的图像的可视化。

设立SDR接收器

rxsim结构控制SDR接收器系统对象的属性。接收机的采样率为15.36MHz,这是LTE带宽为50个资源块时的标准采样率。50rbs相当于10mhz的信号带宽。

用户自定义参数——配置与发送器相同Rxsim = struct;rxsim。RadioFrontEndSampleRate = sdrTransmitter.BasebandSampleRate;%配置为相同的采样率% as发射机rxsim。RadioCenterFrequency = txsim.DesiredCenterFrequency;rxsim。NRxAnts = txsim.NTxAnts;rxsim。FramesPerCapture = txsim.TotFrames+1;要捕获的LTE帧数。比传输多捕获1帧LTE帧%允许定时偏移环绕…rxsim.numCaptures= 1;捕获的百分比导出参数samplesPerFrame = 10e-3*rxsim.RadioFrontEndSampleRate;% LTE帧周期为10毫秒captureTime = rxsim。FramesPerCapture * 10e-3;% LTE帧周期为10毫秒

为用于图像传输的设备创建一个具有指定属性的SDR接收器系统对象。

rxsim。SDRDeviceName = txsim.SDRDeviceName;sdrReceiver = sdrrx(rxsim.SDRDeviceName);sdrReceiver。BasebandSampleRate = rxsim.RadioFrontEndSampleRate;sdrReceiver。CenterFrequency = rxsim.RadioCenterFrequency;sdrReceiver。OutputDataType =“双”;sdrReceiver。ShowAdvancedProperties = true;sdrReceiver。BypassUserLogic = true;配置RX通道映射sdrReceiver。ChannelMapping = 1:rxsim.NRxAnts;

设置LTE接收机

该示例通过假设传输的PDSCH属性是已知的来简化LTE信号接收。FDD双工模式和一个正常的循环前缀长度,以及四个单元特定的参考端口(CellRefP)用于主信息块(MIB)解码。CellRefP的实际编号由MIB提供。有关如何执行盲LTE单元搜索和从LTE波形中恢复基本系统信息的详细示例,请参见LTE接收机与模拟设备AD9361/AD9364的例子。

enb。PDSCH = rmc.PDSCH;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)错误(不支持采样率。金宝app金宝app支持的速率是%s。...1.92 MHz, 3.84 MHz, 7.68 MHz, 15.36 MHz, 30.72 MHz);结束流(\nSDR硬件采样率配置为捕获%d个LTE RBs。\n', enb.NDLRB);
SDR硬件采样率配置为捕获50个LTE RBs。

信道估计被配置为使用特定于小区的参考信号来执行。使用9 × 9的平均窗口来最小化噪声的影响。

信道估计配置结构cec。PilotAverage =“UserDefined”导频符号平均的类型cec。FreqWindow = 9;%频率窗口大小在REscec。TimeWindow = 9;%时间窗口大小在REscec。InterpType =“立方”% 2D插值类型cec。InterpWindow =“中心”插补窗口类型cec。InterpWinSize = 3;插值窗口大小%

捕获和处理信号

该示例使用while循环捕获和解码LTE帧的突发。由于LTE波形在循环中通过空气连续传输,因此接收器捕获的第一帧不能保证是第一传输帧。这意味着帧可能会按顺序被解码。为了使接收到的帧能够按照正确的顺序重新组合,它们的帧号必须确定。MIB包含当前系统帧号的信息,因此需要对其进行解码。在确定帧号之后,本例解码PDSCH和DL-SCH并显示均衡后的PDSCH符号。在子帧5中不传输数据;因此,在解码时忽略子帧的捕获数据。绘制捕获波形的功率谱密度(PSD)以显示接收到的LTE传输。

当LTE帧已成功解码时,该示例将逐帧显示检测到的帧号以及每个子帧的均衡PDSCH符号星座。该示例还显示每帧单元参考点0和接收天线之间的信道幅值频率响应的估计。

enbDefault = enb;rxsim.numCaptures设置LTE默认参数enb = enbDefault;% SDR捕获流(\n开始一个新的射频捕获。\n\n% rx波形包含|rxsim。FramesPerCapture|连续帧值连续基带LTE样本的%。rx波形=捕获(sdrReceiver, captureTime,“秒”);如果rxsim。NRxAnts > 1光谱仪。ShowLegend = true;打开频谱分析仪的图例spectrumScope。ChannelNames = cellfun(@(x) [“SDR通道”num2str (x)], num2cell (1:4),“UniformOutput”、假);结束显示捕获脉冲的功率谱密度spectrumScope。SampleRate = rxsim.RadioFrontEndSampleRate;spectrumScope (rxWaveform);对已知单元ID执行频率偏移校正frequencyOffset = lteFrequencyOffset(enb, rx波形);rx波形= lteFrequencyCorrect(enb, rx波形,frequencyOffset);流('\n修正了%i Hz的频率偏移。'frequencyOffset)%执行盲小区搜索以获得小区标识和定时偏移%使用'PostFFT' SSS检测方法来提高速度cellSearch。SSSDetection =“PostFFT”;cellSearch。MaxCellCount = 1;[NCellID,frameOffset] = lteCellSearch(enb, rx波形,cellSearch);流('检测到单元格标识%i.\n', NCellID);enb。NCellID = NCellID;%来自lteCellSearch同步捕获的样本到LTE帧的开始,并修剪%不完整框架的一部分的任何样本。rx波形= rx波形(frameOffset+1:end,:);tailSamples = mod(length(rx波形),samplesPerFrame);rx波形= rx波形(1:end-tailSamples,:);enb。NSubframe = 0;流('修正了%i个样本的时间偏移。\n'frameOffset)% OFDM解调rxGrid = lteOFDMDemodulate(enb, rx波形);%执行通道估计4 CellRefP,目前我们不做知道eNodeB的CellRefP。[hest,nest] = lteDLChannelEstimate(enb,cec,rxGrid);sfDims = lteResourceGridSize(enb);Lsf = sfDims(2);每子帧的OFDM符号的百分比LFrame = 10*Lsf;每帧OFDM符号的百分比numFullFrames = length(rx波形)/samplesPerFrame;rxDataFrame = 0 (sum(enb.PDSCH.TrBlkSizes(:)),numFullFrames);recFrames = 0 (numFullFrames,1);rxSymbols = [];txSymbols = [];对于每一帧解码MIB, PDSCH和DL-SCH帧= 0:(numFullFrames-1) fprintf(\n对帧%i的帧%i执行DL-SCH解码...框架+ 1,numFullFrames)从接收到的资源网格的每一帧中提取子帧#0%和渠道估算。enb。NSubframe = 0;rxsf = rxGrid(:,frame*LFrame+(1:Lsf),:);hestsf = hest(:,frame*LFrame+(1:Lsf),:,:);% PBCH解调。提取资源元素(REs)%对应于接收网格和通道中的PBCH%估计网格解调。enb。CellRefP = 4;pbchIndices = ltePBCHIndices(enb);[pbchRx,pbchHest] = lteExtractResources(pbchIndices,rxsf,hestsf);[~,~,nfmod4,mib,CellRefP] = ltePBCHDecode(enb,pbchRx, pbchest,nest);%如果PBCH解码成功CellRefP~=0,则更新信息如果~ CellRefP流('帧未检测到PBCH。\n');继续结束enb。CellRefP = CellRefP;% From ltePBCHDecode解码MIB以获得当前帧号enb = ltimib (mib,enb);结合函数输出的nfmod4值% ltePBCHDecode,作为从MIB建立的NFrame值%是系统帧数对4的模。enb。NFrame = enb.NFrame+nfmod4;流('成功解码MIB。\n')流('帧号:%d.\n', enb.NFrame);eNodeB传输带宽可能大于%捕获带宽,因此限制处理带宽enb。NDLRB = min(enbDefault.NDLRB,enb.NDLRB);存储接收的帧号recFrames(frame+1) = enb.NFrame;处理帧内的子帧(忽略子帧5)Sf = 0:9如果科幻小说~ = 5忽略子帧5提取子帧enb。NSubframe = sf;rxsf = rxGrid(:,frame*LFrame+sf*Lsf+(1:Lsf),:);使用CellRefP的正确数目执行信道估计[hestsf,nestsf] = lteDLChannelEstimate(enb,cec,rxsf);PCFICH解调。提取PCFICH对应的REs%从接收的网格和信道估计解调。pcfichIndices = ltePCFICHIndices(enb);[pcfichRx, pcfichest] = lteExtractResources(pcfichices,rxsf,hestsf);[cfiBits,recsym] = ltePCFICHDecode(enb,pcfichRx, pcfichest,nestsf);% CFI解码enb。CFI = lteCFIDecode(cfiBits);%获取PDSCH指数[pdschIndices,pdschIndicesInfo] = ltePDSCHIndices(enb, enb.)PDSCH enb.PDSCH.PRBSet);[pdschRx, pdschHest] = lteExtractResources(pdschIndices, rxsf, hestsf);%执行解编码,层反映射,解调和%对接收到的数据使用的估计解码器%通道[rxEncodedBits, rxEncodedSymb] = ltePDSCHDecode(enb,enb.)PDSCH pdschRx,...pdschHest nestsf);将解码的符号附加到流rxSymbols = [rxSymbols;rxEncodedSymb {}):;% #好< AGROW >%传输块大小outLen = enb.PDSCH.TrBlkSizes(enb.NSubframe+1);解码下行链路共享信道(DL-SCH)[decbits{sf+1}, blkcrc(sf+1)] = lteDLSCHDecode(enb,enb。PDSCH,...outLen rxEncodedBits);% #好< SAGROW >%重新编码传输的PDSCH符号用于EVM计算%编码传输的DLSCHtxRecode = lttedlsch (enb,enb. pdsch,pdschIndicesInfo.G,decbits{sf+1});调制传输PDSCHtxRemod = ltePDSCH(enb, enb。PDSCH txRecode);解码传输的PDSCH[~,refSymbols] = ltePDSCHDecode(enb, enb.)PDSCH txRemod);将编码符号添加到流中txSymbols = [txSymbols;refSymbols {}):;% #好< AGROW >释放(星座);释放先前的星座图星座(rxEncodedSymb {:});%图当前星座暂停(0);允许星座重绘结束结束重新组合已解码的位流(获取已解码的传输块数据。\n');Rxdata = [];I = 1:长度(十位)如果我~ = 6忽略子帧5Rxdata = [Rxdata;decbits{我}{}):;% #好< AGROW >结束结束存储接收帧中的数据rxDataFrame(:,frame+1) = rxdata;绘制cellrefp0和接收天线之间的信道估计focalFrameIdx = frame*LFrame+(1:LFrame);图(hh);hh。可见=“上”;focalFrameIdx冲浪(abs(命令(:,1,1)));阴影;包含(OFDM符号索引);ylabel (“副载波指数”);zlabel (“级”);标题(《信道幅值频率响应估计》);结束rxsim.numCaptures= rxsim.numCaptures-1;结束一旦接收完成,释放发射器和接收器对象释放(sdrTransmitter);释放(sdrReceiver);
开始一个新的射频捕获。##建立硬件连接。这个过程可能需要几秒钟。修正了-1.957750e-01 Hz的频率偏移。检测到88的单元格标识。修正了43665个样本的定时偏移。执行DL-SCH Decode for frame1 of 5 in burst: Successful MIB Decode。帧数:704。检索已解码的传输块数据。执行DL-SCH Decode for frame2 of 5 in burst: Successful MIB Decode。 Frame number: 700. Retrieving decoded transport block data. Performing DL-SCH Decode for frame 3 of 5 in burst: Successful MIB Decode. Frame number: 701. Retrieving decoded transport block data. Performing DL-SCH Decode for frame 4 of 5 in burst: Successful MIB Decode. Frame number: 702. Retrieving decoded transport block data. Performing DL-SCH Decode for frame 5 of 5 in burst: Successful MIB Decode. Frame number: 703. Retrieving decoded transport block data.

结果确认与显示

为了确定接收数据的质量,该示例计算传输数据和接收数据之间的误码率(BER)。然后将接收到的数据转换为图像并显示出来。

确定第一个发送帧的索引(最低接收帧数)[~,frameIdx] = min(recFrames);流('\n重新组合接收到的数据块:\n');decodedRxDataStream = 0 (length(rxDataFrame(:)),1);frameLen = size(rxDataFrame,1);将接收到的数据块(按正确顺序)重新组合成连续的流currFrame = mod(frameIdx-1,numFullFrames)+1;获取当前帧索引decodedRxDataStream((n-1)*frameLen+1:n*frameLen) = rxDataFrame(:,currFrame);frameIdx = frameIdx+1;增量帧索引结束%执行EVM计算如果~isempty(rxSymbols) evmCalculator = com . evm ();evmCalculator。MaximumEVMOutputPort = true;[evm.RMS,维生素。Peak] = evmCalculator(txSymbols, rxSymbols);流(' EVM峰值= %0.3f%%\n', evm.Peak);流(' EVM RMS = %0.3f%%\n', evm.RMS);其他的流(未解码传输块。\n);结束%进行误码率(BER)计算bitErrorRate = com . errorrate;err = bitErrorRate(decodedRxDataStream(1:length(trData)), trData);流('误码率(BER) = %0.5f.\n',犯错(1));流('误码数= %d.\n'犯错(2));流('传输比特数= %d.\n'长度(trData));从接收到的数据重新创建映像流(从接收到的数据构造图像。\n);STR =重塑(sprintf(' % d ',decodedRxDataStream(1:length(trData))), 8, []).';Decdata = uint8(bin2dec(str));receivedImage =重塑(decdata,imsize);%图接收图像如果存在(“imFig”“var”&&把手(imFig)%如果TX图形打开图(imFig);次要情节(212);其他的图;次要情节(212);结束imshow (receivedImage);标题(sprintf ('接收图像:%dx%d天线配置', txsim。NTxAnts rxsim.NRxAnts));
接收数据块重组:EVM峰值= 7.025% EVM RMS = 0.812%误码率(BER) = 0.00000。误码数= 0。传输比特数= 1179648。从接收到的数据构造图像。

值得尝试的事情

默认情况下,本例使用两个天线来传输和接收LTE波形。根据您的硬件,您可以修改SDR发射机和接收机以使用单个或四个天线。为了观察信号接收和处理后的EVM和BER的差异,可以降低发射机增益。检查所显示的接收图像中是否有错误。

故障处理

有关针对Xilinx zynq无线电的SDR硬件故障排除和通信工具箱支持包的详细信息,请参见金宝app常见问题及修复

选定的参考书目

  1. 3gpp ts 36.191。用户设备(UE)无线电发射和接收。第三代伙伴计划;技术规范集团无线接入网;改进的通用地面无线电接入(E-UTRA)。