主要内容

发布14 V2X Sidelink PSCCH和PSSCH吞吐量

这个案例展示了如何测量物理Sidelink共享通道(PSSCH)和物理Sidelink控制通道(PSCCH)吞吐量性能在频率选择衰落和加性高斯白噪声(AWGN)使用LTE工具箱™。

介绍

3 gpp 14版介绍了支持LTE V2X (Vehicle-金宝appto-everything)启用连接车辆服务,目的是提供一个更安全、更清洁、更快捷、更高效的运输。V2X提供了几种操作模式包括Vehicle-to-Vehicle (V2V) Vehicle-to-Infrastructure (V2I)和Vehicle-to-Pedestrian (V2P)直接通信不必依赖网络参与调度。的一些区别方面V2X释放12设备间sidelink是:

  • 低延迟和高可靠性的要求

  • 由于高相对速度大的多普勒频移

  • 非常大量的节点,节点密度高

  • 挑战特别是out-of-coverage同步

这个例子措施发布14 V2X sidelink共享和控制信道吞吐量的信噪比点。信息模型发布12 sidelink设备间(D2D)接口(主要针对允许LTE支持公共安全通信系统),看到的金宝app发布14 V2X Sidelink PSCCH和PSSCH吞吐量的例子。

操作子帧的子帧的基础上为每一个信噪比点,执行以下步骤的吞吐量和提单的计算:

  • 资源网格填充PSCCH和/或PSSCH生成和OFDM调制传输的基带波形

  • 这波形通过一个嘈杂的衰落信道

  • 接收机操作(SC-FDMA解调、信道估计和均衡)

  • 平衡的符号是获得块CRC解码

  • PSCCH的性能和/或PSSCH决定使用块CRC在信道译码器的输出结果

模拟配置

模拟的例子是执行4帧长度的信噪比点。更多数量的NFrames应该用于吞吐量产生有意义的结果。SNRIn可以是一个数组的值或一个标量。

%的帧数来模拟NFrames = 4;%设置一系列涵盖高和低信噪比分提单操作%的条件SNRIn = (5 0 5);

传输配置

最初指定一组高层参数,包括带宽、循环前缀,调制方案和分配的资源块。基线配置是取自“参考测量通道发射机特色”所定义的TS 36.101表A.8.3-1 [2]。模拟一个更现实的V2X传播,介绍了多个HARQ进程和HARQ重发在这个例子。数据率定义的子帧差距sfGap和传输时间间隔创科实业

sfGap = 8;%时间之间的子帧的初始和重传创科实业= 4;%的时间在不同的HARQ过程之间的子帧如果创科实业> sfGap错误(“不能大于sfGap创科实业”);结束%的数量分配资源块(NPRB)和传输块大小(TBS)%如表A.8.3-1 TS 36.101给出的。注意,TBS必须选择%根据TS 36.213节14.1.1和NPRB TS 36.213% 14.1.1.4C节。如果指定一个无效的TBS / NPRB,传播% ModCoding SCI的价值信息是不正确的,这可能%导致SL-SCH解码失败。一个无效的NPRB也可能的结果%在SCI消息和相应PSSCH传输%不同于这里的NPRB指定分配资源。NPRB = 48;%的数量分配资源块(NPRB)TBS = 3496;%的传输块大小%定义的起始RB资源分配。最初的和%的后续传播可以有不同的配置rbStart = [0 0];%定义问题的配置参数ueConfig =结构(“SidelinkMode”,“V2X”);%释放14 V2X模式ueConfig。NSLRB = 50;% 10 mhz带宽ueConfig。DuplexMode =“FDD”;%双工模式ueConfig。CyclicPrefixSL =“正常”;%循环前缀长度ueConfig。调制=“正交相移编码”;%符号调制(“正交相移编码”、“16 qam”)

传播通道配置

结构通道包含通道模型配置参数。

频道=结构;%通道配置结构通道。种子= 6;%通道种子通道。NRxAnts = 2;%的接收天线通道。DelayProfile =“爱娃”;%延迟概要通道。DopplerFreq = 500;在赫兹%多普勒频率通道。MIMOCorrelation =“低”;% Multi-antenna相关性通道。NTerms = 16;%振荡器用于衰落模型通道。ModelType =“GMEDS”;%瑞利衰落模型类型通道。InitPhase =“随机”;%随机初始阶段通道。NormalizePathGains =“上”;%正常化延迟概要文件的权力通道。NormalizeTxAnts =“上”;%正常化传输天线%通道采样率取决于用于OFDM FFT大小%调制器。这可以使用函数lteSLSCFDMAInfo获得。ofdmInfo = lteSLSCFDMAInfo (ueConfig);通道。SamplingRate = ofdmInfo.SamplingRate;

信道估计配置

的变量perfectChanEstimator控制信道估计行为。有效的值真正的。当设置为真正的用作估计,一个完美的通道响应,否则一个不完美的估计基于DM-RS收到信号的值。如果perfectChanEstimator将错误的配置结构cec需要参数化信道估计。

%完美的信道估计值的旗帜perfectChanEstimator = false;%定义实际信道估计量的配置结构。请注意,%根据通道延迟资料和多普勒频率,%的操作信噪比,PSSCH调制秩序和分配的数量%的资源块,不同的信道估计参数可能会更好%的性能。cec =结构;%信道估计配置结构cec。PilotAverage =“UserDefined”;%的试点,平均象征cec。FreqWindow = 27个;%频率窗口大小cec。TimeWindow = 1;%的时间窗口大小cec。InterpType =“立方”;% 2 d插值类型

配置吞吐量测量

逻辑变量measureBLERForSCImeasureTputForSLSCH允许测量吞吐量和所有相关接收机处理SCI和SL-SCH分别被禁用。这允许模拟配置测量吞吐量的只有一个频道。禁用其他通道的接收机处理提高执行速度。

measureBLERForSCI = true;measureTputForSLSCH = true;

SCI解码失败时选择接收行为

逻辑变量sciAssumed控制仿真行为的效果控制信道解码对共享信道解码。如果sciAssumed是真的,接收者将假定SCI消息正确解码时尝试共享通道接收。这允许共用信道接收的性能来衡量独立于控制通道的性能。如果sciAssumed是假的,一个控制通道解码失败意味着共用信道解码。注意,如果吞吐量测量上述SCI是禁用的(measureBLERForSCI = false),启用了SL-SCH吞吐量测量(measureTputForSLSCH = true),接收者将假定SCI消息正确解码时测量SL-SCH吞吐量设置无关sciAssumed在这里。

sciAssumed = false;

显示模拟信息

的变量displaySimulationInformation控制仿真的显示信息,如使用的HARQ进程ID和每个子帧的资源分配图。长时间的模拟,建议关闭显示,因为它增加了仿真时间。

displaySimulationInformation = true;

显示V2X Sidelink通信资源池

发射和接受sidelink直接交流的机会与一组定期发生的时域周期称为资源池。一个问题可以配置多个消息,因此对传输和接收多个资源池。一个资源池包含共享和控制子帧和资源池和一个特定的传输被定义为semi-static RRC的组合参数与动态DCI / SCI参数。的PSCCH PSSCH发送同样的子帧,在相邻或不相邻的复审委员会。为了说明V2X资源池的结构,例子使用了类V2XSidelinkResourcePool模型一个资源池,并提供参数和方法来定义一个特定的传输。该方法V2XSidelinkResourcePool.displayPeriod创建一个图显示的位置控制资源池(深蓝色)和共享资源池中的资源池(黄色)。

resourcePool = V2XSidelinkResourcePool;resourcePool.Config。NSLRB = ueConfig.NSLRB;resourcePool.Config。DuplexMode =ueConfig。DuplexMode;如果displaySimulationInformation resourcePool.displayPeriod;drawnow;结束

处理链

确定每个信噪比点的吞吐量,子帧的子帧处理链包括:

  • 更新当前配置- HARQ过程问题带来新的传输数据或此前发送的PSSCH传输的传输数据用不同的冗余版本。这一切都是由HARQ调度程序处理。HARQ缓冲区decState商店负责软译码器结合。

  • ——创建和编码SCI消息SCI消息携带sidelink调度信息。SCI的参数是:优先级指示散文每个包的优先级,ResourceReservation设定更高的层保留资源在接下来的传输块的传输,RIV携带配置信息,TimeGap信号之间的时间间隔的子帧初始传输和重传,ModCoding信号的调制方案用于PSSCH接待和RetransmissionIdx指示是否传输是第一或第二(重传)。然后SCI消息编码和映射的PSCCH传播。SCI的CRC消息PSSCH地身份。

  • 情节——分配资源资源分配第一HARQ过程策划如果displaySimulationInformation国旗是启用的。所有HARQ进程PSSCH相同(橙色)和PSCCH(绿色)资源块分配。PSCCH和PSSCH可以传播在相邻或不相邻的资源块。

  • 创建传输波形,通过数据生成的问题到物理层处理阶段产生SC-FDMA调制波形,包含PSCCH PSSCH物理通道和DRS的信号。

  • 噪声信道建模,通过波形通过衰落信道和添加噪声(AWGN)。

  • 执行盲检测PSCCH -PSCCH资源和循环移位用于发射机的子帧是未知的,所以同步、信道估计和解码为每个执行复审委员会中设置PSCCH块池(所提供的资源V2XSidelinkResourcePool.PSCCHResourceBlockPool所有循环变化,直到SCI成功解码或搜索整个资源池。的时间抵消DM-RS相关性最强峰用于同步。

  • 执行PSCCH信道估计使用执行:PSCCH信道估计lteSLChannelEstimatePSCCH。信道估计也会产生的噪声功率估计可以用于MMSE均衡。

  • 提取PSCCH符号和信道估计:收到PSCCH符号从子帧中提取资源网格,相应的信道估计中提取使用lteExtractResources和提供的指标ltePSCCHIndices

  • 执行PSCCH均衡:PSCCH符号MMSE均衡使用lteEqualizeMMSE与上面的信道估计和噪声估计获得。

  • 执行PSCCH解调使用:使相等PSCCH符号解调ltePSCCHDecode。这个函数执行发射机调制的逆步骤(deprecoding SC-FDMA变换,QPSK符号解调和descrambling)。

  • 执行SCI解码:SCI解码企图使用lteSCIDecode。原来的信息比特数是由SCI的消息lteSCIInfo。如果CRC解码为零和恢复CRC面具是期望值,SCI解码是成功和解码信息转化为相应的消息结构使用lteSCI。面具CRC值提供了PSSCH地身份,NXID

共用信道解码的行为对SCI解码失败是控制的变量sciAssumed。如果sciAssumed是假的,立即SCI解码失败意味着失败解码SL-SCH当前子帧,而不需要进行进一步处理。如果sciAssumed是真的,科学传播的消息被认为是已知的接收机接收的SCI和将使用消息。如果sciAssumed是真的或者SCI解码成功,接收方与SL-SCH解码所得。注意,如果测量是残疾人但是SL-SCH吞吐量SCI提单启用然后传播SCI的消息被认为是已知的接收器。

SL-SCH解码:

  • 得到PSSCH资源分配然后从恢复获得RIV SCI消息解码得到的子信道数和子信道分配给这个传输开始。这结合PSCCH邻接,每个子通道和第一资源分配块的大小提供了分配PSSCH苏格兰皇家银行PRBSet

  • 同步和SC-FDMA解调子帧携带PSSCH:适当的子帧的波形同步使用lteSLFrameOffsetPSSCH。同步的波形SC-FDMA解调的使用lteSLSCFDMADemodulate。注意,尽管控制和共享信道传输相同的子帧,它足以执行同步和SC-FDMA PSCCH只解调。然而,在这个例子中,因为共享和控制通道可以独立地接收,PSSCH同步和SC-FDMA解调。这是使PSSCH接待PSCCH接待时禁用。

  • 执行PSSCH信道估计使用执行:PSSCH信道估计lteSLChannelEstimatePSSCH。信道估计也会产生的噪声功率估计可以用于MMSE均衡。

  • 提取PSSCH符号和信道估计:收到PSSCH符号从子帧中提取资源网格和相应的信道估计中提取使用lteExtractResources和提供的指标ltePSSCHIndices

  • 执行PSSCH均衡:PSSCH符号MMSE均衡使用lteEqualizeMMSE与上面的信道估计和噪声估计获得。

  • 执行PSSCH解调使用:使相等PSSCH符号解调ltePSSCHDecode。这个函数执行发射机调制的逆步骤(deprecoding SC-FDMA变换,正交相移编码或16 qam解调和象征descrambling)。从SCI获得descrambling使用PSCCH CRC解码阶段。

  • 解码Sidelink共享通道(SL-SCH)和存储块CRC错误问题,通过软解码的矢量位lteSLSCHDecode,解码码字并返回块CRC错误用于确定系统的吞吐量。新软缓冲区的内容,harqProcesses .decState (harqID),可以在这个函数的输出第二子帧解码时使用。

%初始化变量用于模拟和分析maxThroughputSLSCH = 0(长度(SNRIn), 1);simThroughputSLSCH = 0(长度(SNRIn), 1);simBLERSCI = 0(长度(SNRIn), 1);%得到所需的HARQ进程数量nHARQProcesses =地板(sfGap /创科实业);%计算HARQ ID为每个传输子帧序列harqProcessSequence = 0 (1, NFrames * 10);h = 1: nHARQProcesses harqProcessSequence(1 +创科实业* (h): sfGap: NFrames * 10) = h;结束%创建部分SCI消息的参数有固定值%的模拟。其他参数,变量值%制定进一步的仿真循环sciMessage =结构(“SCIFormat”,“Format1”);sciMessage。TimeGap= sfGap;%设置根据TBS PSSCH MCS和调制方案[胫,modn] = lteMCS (0:28,“PUSCH”);%根据TS 36.213节14.1.1,imc 28(0),调制%顺序设置为Q ' = min (4, Qm), Qm可以2、4或6。所以改变%的情况Qm ' = 6 (64 qam) Qm”= 4 (16 qam的)modn (strcmpi (modn,64 qam))= {16 qam的};%滤波器有效的传输块大小根据使用的调制方案possibleTBS = lteTBS (NPRB、髂胫);possibleTBS (~ strcmpi (modn ueConfig.Modulation)) = 0;%现在设置根据TBS MCS指数sciMessage。ModCoding= find(possibleTBS==TBS,1) - 1;%图显示创建新的资源分配,如果需要的话如果displaySimulationInformation图;结束%如果SCI提单没有被测量,必须设置,以便sciAssumed%接收机可以假设的科学知识如果(~ measureBLERForSCI) sciAssumed = true;结束rng (“默认”);snrIdx = 1:元素个数(SNRIn)%设置随机数生成器的种子取决于循环变量%,以确保独立随机流rng (snrIdx);%初始化所有HARQ缓冲区的状态harqProcess =结构(“RVIdx”,1“数据”[],“decState”[]);harqProcesses (1: nHARQProcesses) = harqProcess;RVSeq = [0 2];%房车首次传输和重传%设置变量的主循环lastOffset = 0;%初始化总体框架定时偏移量frameOffset = 0;%初始化帧定时偏移量sharedbitTput = [];%成功收到位/子帧的数量txedTrBlkSizes = [];%每个子帧的传输比特数controlErrors = [];%的SCI块错误subframeNo = 0: (NFrames * 1) harqID = harqProcessSequence (subframeNo + 1);如果harqID = = 0%如果没有HARQ过程传输电流%子帧,继续下一个继续结束%更新当前HARQ过程与新的传输数据和重置%接收缓冲区,如果是最初的传播。PSSCH是%传播两次的差距sfGap子帧不分%的成功第一个传播如果harqProcesses (harqID)。RVIdx = = 1 harqProcesses (harqID)。data =兰迪([0,1],TBS, 1);harqProcesses (harqID) .decState = [];结束%设置房车ueConfig。房车= RVSeq (harqProcesses (harqID) .RVIdx);%设置子帧数ueConfig。NSubframePSSCH = subframeNo;%显示运行时信息如果displaySimulationInformation流(“子帧:% d。HARQ过程指数:% d。冗余版本:% d \ n ',harqID subframeNo ueConfig.RV)结束%通道当前子帧的时间通道。InitTime = subframeNo / 1000;%创建一个空的网格资源slgrid = lteSLResourceGrid (ueConfig);%更新传输配置与RB开始startingRB = rbStart (harqProcesses (harqID) .RVIdx);resourcePool.Config。startRB_Subchannel_r14 = startingRB;%计算RIV分配子信道数的和%的起始子通道ueConfig。FirstSubchannelIdx = 0;β= 0;如果strcmpi (resourcePool.Config.adjacencyPSCCH_PSSCH_r14“上”)β= 2;结束lsubCH =装天花板((NPRB +β)/ resourcePool.Config.sizeSubchannel_r14);sciMessage。RIV= resourcePool.encodeRIV(lsubCH,ueConfig.FirstSubchannelIdx);%设置传输指数sciMessage。RetransmissionIdx = harqProcesses (harqID)。RVIdx - 1;%创建SCI和消息sciConfig = ueConfig;sciConfig。PSSCHNSubchannels = resourcePool.Config.numSubchannel_r14;[sciMessage, sciBits] = lteSCI (sciConfig sciMessage);%执行SCI编码(连续波,crc) = lteSCIEncode (sciConfig sciBits);% NXID是相关的16位CRC PSCCH SCI格兰特和%作为PSSCH匆忙的身份ueConfig。NXID= crc;% NXID值存储在“expectedNXID”,这样接收器不会%访问“sciMessage”expectedNXID = ueConfig.NXID;%显示传输的子帧和资源块。请注意%,所有HARQ进程的配置都是一样的%情节没有显示的子帧抵消HARQ进程以外的% 1如果(displaySimulationInformation) & & (harqID = = 1)%指定其他参数所需的资源%池显示sciMessage。FirstSubchannelIdx = ueConfig.FirstSubchannelIdx;sciMessage。SLIndex = 0;resourcePool.displayPeriod (sciMessage 10);drawnow;结束%创建PSCCH码字pscchSymbols = ltePSCCH (cw);%得到PSCCH的资源分配[pscchsf, pscchrb] = resourcePool.getPSCCHResources (setfield (sciMessage,“FirstSubchannelIdx”ueConfig.FirstSubchannelIdx));% #好< SFLD >%选择资源传输sciConfig。PRBSet= pscchrb(:,harqProcesses(harqID).RVIdx);%得到PSCCH象征指数pscchIndices = ltePSCCHIndices (sciConfig);%的PSCCH符号映射到网格slgrid (pscchIndices) = pscchSymbols;%定义一组随机循环移位从{0、3、6、9}% PSCCH传输sciConfig。CyclicShift =兰迪([0 3])* 3;%创建DM-RS符号和指数pscchdrssymbols = ltePSCCHDRS (sciConfig);pscchdrsindices = ltePSCCHDRSIndices (sciConfig);%将PSCCH DRS符号映射到网格slgrid (pscchdrsindices) = pscchdrssymbols;%得到两个传输的资源分配[psschsf, psschrb] = resourcePool.getPSSCHResources (setfield (sciMessage,“FirstSubchannelIdx”ueConfig.FirstSubchannelIdx));% #好< SFLD >%现在选择的资源传播ueConfig。PRBSet= psschrb(:,harqProcesses(harqID).RVIdx);%计算PSSCH资源指数[psschIndices, psschinfo] = ltePSSCHIndices (ueConfig);% SL-SCH和PSSCH连续波= lteSLSCH (ueConfig、psschinfo.G harqProcesses (harqID) . data);psschSymbols = ltePSSCH (ueConfig, cw);slgrid (psschIndices) = psschSymbols;% PSSCH DRS和DRS指数psschdrssymbols = ltePSSCHDRS (ueConfig);psschdrsindices = ltePSSCHDRSIndices (ueConfig);slgrid (psschdrsindices) = psschdrssymbols;% SC-FDMA调制不会使用窗口由于%分段波形结构的性质窗口= 0;%执行sidelink SC-FDMA调制[txWaveform, scfdmaInfo] = lteSLSCFDMAModulate (ueConfig slgrid,窗口);% 25样品添加填充。这是延迟的范围%预期从信道建模(的组合%实现延迟和延迟扩展频道)ntxants =大小(txWaveform, 2);txWaveform = [txWaveform;ntxants 0(25日)];% #好< AGROW >%通过通道模型传递数据rxNoiselessWaveform = lteFadingChannel(通道、txWaveform);%计算噪声增益信噪比= 10 ^ (SNRIn (snrIdx)) / 20);%正常化噪声功率的采样率,%是传输线大小的函数用于OFDM%调制,天线的数量N0 = 1 / (√(2.0 * ntxants *双(ofdmInfo.Nfft)) *信噪比);%建立情况噪音= N0 *复杂(randn(大小(rxNoiselessWaveform)),randn(大小(rxNoiselessWaveform)));%添加情况下接收到的时域波形rxWaveform = rxNoiselessWaveform +噪声;% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -%接收% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -%定义接收机顶级配置rxConfig = [];rxConfig。SidelinkMode = ueConfig.SidelinkMode;rxConfig。CyclicPrefixSL = ueConfig.CyclicPrefixSL;rxConfig。FirstSubchannelIdx = ueConfig.FirstSubchannelIdx;rxConfig。NSLRB = resourcePool.Config.NSLRB;rxConfig。DuplexMode = resourcePool.Config.DuplexMode; rxConfig.TDDConfig = resourcePool.Config.TDDConfig; rxConfig.PSSCHNSubchannels = resourcePool.Config.numSubchannel_r14; rxConfig.PSSCHSubchannelSize = resourcePool.Config.sizeSubchannel_r14; rxConfig.PSSCHAdjacency = resourcePool.Config.adjacencyPSCCH_PSSCH_r14; rxConfig.PSSCHSubchannelPRBStart = resourcePool.Config.startRB_Subchannel_r14; rxConfig.NSubframePSSCH = subframeNo;%设置子帧数%如果SCI提单测量配置:sciDecoded = false;如果measureBLERForSCI%控制信道的盲解码%我们知道当前的子帧包含控制和数据,%,但不知道位置。检查中的SCI消息%的资源池循环直到发现或转变%搜索整个资源池pscchPool = resourcePool.PSCCHResourceBlockPool;%为可能的复审委员会对重建资源pscchPool =重塑(pscchPool 2元素个数(pscchPool) / 2);p = 1;p < = (pscchPool, 2) & & ~ sciDecoded大小% PSCCH DRS V2X传播在两个连续的苏格兰皇家银行rxConfig。PRBSet= pscchPool(:,p);c = [0 3 6 9] rxConfig。CyclicShift = c;(frameOffset, corr) = lteSLFrameOffsetPSCCH (rxConfig rxWaveform);%执行子帧同步如果(frameOffset > 25) | | (frameOffset < 0) frameOffset = lastOffset;结束lastOffset = frameOffset;%对接收的数据获得执行SC-FDMA解调%的资源网格rxSubframe = lteSLSCFDMADemodulate (rxConfig rxWaveform (1 + frameOffset:最终,));%进行信道估计如果(perfectChanEstimator)[命令,巢]= perfectChannelEstimate (rxConfig、通道、噪音frameOffset);其他的[命令,巢]= lteSLChannelEstimatePSCCH (cec, rxConfig rxSubframe);结束%得到当前PRBSet PSCCH候选人,%提取相应的符号和接收%信道估计和均衡执行pscchCandidate = ltePSCCHIndices (rxConfig);[pscchRx, pscchHest] = lteExtractResources (pscchCandidate rxSubframe,命令);pscchSymbols = lteEqualizeMMSE (pscchRx pscchHest,巢);%解调PSCCHcodedsciBits = ltePSCCHDecode (pscchSymbols);%得到释放的有效载荷大小14 V2X SCI消息scilengthinfo = lteSCIInfo (rxConfig);%解码SCI和恢复消息[rxinfo, rxSCIErr rxcrc] = lteSCIDecode (scilengthinfo.Format1 codedsciBits);如果~ rxSCIErr & & (rxcrc = = expectedNXID) sciMessageRx = lteSCI (rxConfig rxinfo);rxConfig。NXID= rxcrc; sciDecoded = true;如果(displaySimulationInformation)流(“SCI解码\ n”);结束打破;结束结束%增加池索引p = p + 1;结束如果~ sciDecoded如果(displaySimulationInformation)流(“SCI解码失败\ n”);结束结束%计算提单所需存储值controlErrors = [controlErrors ~ sciDecoded];% #好< AGROW >结束%如果SCI解码失败和SL-SCH SCI假定%解码,解码SCI消息等于传播% SCI消息。还设置NXID期望值如果(~ sciDecoded) & & (sciAssumed) sciMessageRx = sciMessage;rxConfig。NXID= expectedNXID;结束%如果SL-SCH吞吐量测量配置和科学%成功解码或假设如果SCI解码成功,%执行PSSCH接待和SL-SCH解码如果measureTputForSLSCH如果(sciDecoded | | sciAssumed)%得到PSSCH解码SCI的资源分配%的消息和池配置rxConfig。PRBSet= lteSCIResourceAllocation(rxConfig,sciMessageRx);%执行子帧同步frameOffset = lteSLFrameOffsetPSSCH (rxConfig rxWaveform);如果(frameOffset > 25) | | (frameOffset < 0) frameOffset = lastOffset;结束lastOffset = frameOffset;%对接收的数据获得执行SC-FDMA解调%的资源网格rxSubframe = lteSLSCFDMADemodulate (rxConfig rxWaveform (1 + frameOffset:最终,));%进行信道估计,提取PSSCH收到%符号和相应的信道估计%进行均衡如果(perfectChanEstimator)[命令,巢]= perfectChannelEstimate (rxConfig、通道、噪音frameOffset);其他的[命令,巢]= lteSLChannelEstimatePSSCH (cec, rxConfig rxSubframe);结束[psschRx, psschHest] = lteExtractResources (psschIndices rxSubframe,命令);psschSymbols = lteEqualizeMMSE (psschRx psschHest,巢);%解调PSSCH[~,rxConfig。调制]= lteMCS (sciMessageRx.ModCoding“PUSCH”);如果(strcmpi (rxConfig.Modulation64 qamrxConfig))。调制=16 qam的;结束codedSlschBits = ltePSSCHDecode (rxConfig psschSymbols);%解码SL-SCH,包括软结合到%接收缓冲区并检查CRCrxConfig。NTurboDecIts = 5;%涡轮迭代译码器rxConfig。房车= RVSeq (harqProcesses (harqID) .RVIdx);[~,slschCRC harqProcesses (harqID) .decState] =codedSlschBits lteSLSCHDecode (rxConfig TBS,harqProcesses (harqID) .decState);slschDecoded = ~ slschCRC;其他的%如果SCI解码失败,SL-SCH解码也失败了slschDecoded = false;结束%存储值计算所需的吞吐量sharedbitTput = [sharedbitTput TBS * slschDecoded];% #好< AGROW >txedTrBlkSizes = [txedTrBlkSizes TBS];% #好< AGROW >如果(displaySimulationInformation)如果slschDecoded流(“SL-SCH解码\ n”);其他的流(“SL-SCH解码失败\ n”);结束结束结束%更新RV序列索引下传播harqProcesses (harqID)。RVIdx =国防部(harqProcesses harqID .RVIdx,大小(RVSeq, 2)) + 1;结束如果measureBLERForSCI%计算SCI提单simBLERSCI (snrIdx) = 100 *意味着(controlErrors, 2);%动态在命令窗口中显示结果流(' \ nSNR = %。2 f dB。SCI提单(% %)% d帧(s) = %。4 f % % \ n”,SNRIn (snrIdx)、NFrames simBLERSCI (snrIdx));结束如果measureTputForSLSCH%计算和模拟的最大吞吐量maxThroughputSLSCH (snrIdx) =总和(txedTrBlkSizes);%最大可能的吞吐量simThroughputSLSCH (snrIdx) =总和(sharedbitTput);%模拟吞吐量%动态在命令窗口中显示结果流(' \ nSNR = %。2 f dB。SL-SCH吞吐量(s) = % % d帧。4 f Mbps \ n”,SNRIn (snrIdx) NFrames 1 e-6 * simThroughputSLSCH (snrIdx) / (NFrames * 10 e - 3));流('信噪比= %。2 f dB。SL-SCH吞吐量(% %)% d帧(s) = %。4 f % % \ n”,SNRIn (snrIdx)、NFrames simThroughputSLSCH (snrIdx) * 100 / maxThroughputSLSCH (snrIdx));结束结束
子帧:0。HARQ过程指数:1。冗余版本:0 SCI解码失败SL-SCH解码失败的子帧:4。HARQ过程指数:2。冗余版本:0 SCI解码SL-SCH解码失败的子帧:8。HARQ过程指数:1。冗余版本:2 SCI SL-SCH解码失败的子帧解码:12。HARQ过程指数:2。冗余版本:2 SCI解码SL-SCH子帧解码:16。HARQ过程指数:1。 Redundancy version: 0 SCI decoded SL-SCH decoding failed Subframe: 20. HARQ process index: 2. Redundancy version: 0 SCI decoded SL-SCH decoding failed Subframe: 24. HARQ process index: 1. Redundancy version: 2 SCI decoded SL-SCH decoded Subframe: 28. HARQ process index: 2. Redundancy version: 2 SCI decoded SL-SCH decoded Subframe: 32. HARQ process index: 1. Redundancy version: 0 SCI decoded SL-SCH decoding failed Subframe: 36. HARQ process index: 2. Redundancy version: 0 SCI decoded SL-SCH decoding failed SNR = -5.00 dB. SCI BLER(%) for 4 Frame(s) = 10.0000 % SNR = -5.00 dB. SL-SCH Throughput for 4 Frame(s) = 0.2622 Mbps SNR = -5.00 dB. SL-SCH Throughput(%) for 4 Frame(s) = 30.0000 % Subframe: 0. HARQ process index: 1. Redundancy version: 0 SCI decoded SL-SCH decoded Subframe: 4. HARQ process index: 2. Redundancy version: 0 SCI decoded SL-SCH decoded Subframe: 8. HARQ process index: 1. Redundancy version: 2 SCI decoded SL-SCH decoded Subframe: 12. HARQ process index: 2. Redundancy version: 2 SCI decoded SL-SCH decoded Subframe: 16. HARQ process index: 1. Redundancy version: 0 SCI decoded SL-SCH decoded Subframe: 20. HARQ process index: 2. Redundancy version: 0 SCI decoded SL-SCH decoded Subframe: 24. HARQ process index: 1. Redundancy version: 2 SCI decoded SL-SCH decoded Subframe: 28. HARQ process index: 2. Redundancy version: 2 SCI decoded SL-SCH decoded Subframe: 32. HARQ process index: 1. Redundancy version: 0 SCI decoded SL-SCH decoded Subframe: 36. HARQ process index: 2. Redundancy version: 0 SCI decoded SL-SCH decoded SNR = 0.00 dB. SCI BLER(%) for 4 Frame(s) = 0.0000 % SNR = 0.00 dB. SL-SCH Throughput for 4 Frame(s) = 0.8740 Mbps SNR = 0.00 dB. SL-SCH Throughput(%) for 4 Frame(s) = 100.0000 % Subframe: 0. HARQ process index: 1. Redundancy version: 0 SCI decoded SL-SCH decoded Subframe: 4. HARQ process index: 2. Redundancy version: 0 SCI decoded SL-SCH decoded Subframe: 8. HARQ process index: 1. Redundancy version: 2 SCI decoded SL-SCH decoded Subframe: 12. HARQ process index: 2. Redundancy version: 2 SCI decoded SL-SCH decoded Subframe: 16. HARQ process index: 1. Redundancy version: 0 SCI decoded SL-SCH decoded Subframe: 20. HARQ process index: 2. Redundancy version: 0 SCI decoded SL-SCH decoded Subframe: 24. HARQ process index: 1. Redundancy version: 2 SCI decoded SL-SCH decoded Subframe: 28. HARQ process index: 2. Redundancy version: 2 SCI decoded SL-SCH decoded Subframe: 32. HARQ process index: 1. Redundancy version: 0 SCI decoded SL-SCH decoded Subframe: 36. HARQ process index: 2. Redundancy version: 0 SCI decoded SL-SCH decoded SNR = 5.00 dB. SCI BLER(%) for 4 Frame(s) = 0.0000 % SNR = 5.00 dB. SL-SCH Throughput for 4 Frame(s) = 0.8740 Mbps SNR = 5.00 dB. SL-SCH Throughput(%) for 4 Frame(s) = 100.0000 %

吞吐量结果

仿真结果显示在MATLAB®命令窗口每个信噪比点完成后。他们也在输出数组simBLERSCI,simThroughputSLSCHmaxThroughputSLSCH。为每个模拟信噪比,simBLERSCI存储测量SCI提单,simThroughputSLSCH商店的比特数和测量SL-SCH吞吐量maxThroughputSLSCH存储最大可能SL-SCH吞吐量的比特数。

如果measureBLERForSCI%情节PSCCH / SCI提单plotResults (“科学”,“提单”、通道、SNRIn simBLERSCI);结束如果measureTputForSLSCH%绘制PSSCH / SL-SCH吞吐量plotResults (“SL-SCH”,的吞吐量、通道、SNRIn simThroughputSLSCH * 100. / maxThroughputSLSCH);结束

统计学上有效的结果,仿真应该参加更多的帧。下面的数字显示,SCI提单和SL-SCH吞吐量结果模拟1000帧长与实际信道估计的信噪比范围值。

参考书目

  1. 3 gpp TS 36.213“物理层程序”

  2. 3 gpp TS 36.101”用户设备(UE)无线电发射和接受“

本地函数

这个示例使用这些辅助函数。

  • perfectChannelEstimate:完美的信道估计

  • plotResults:阴谋的结果的例子

%计算完美的信道估计和噪声估计函数[命令,巢]= perfectChannelEstimate (rxConfig、通道、噪音、frameOffset)%使用完美上行信道估计量来计算%都使用SC-FDMA sidelink估计rxConfig。NTxAnts = 1;rxConfig。NULRB = rxConfig.NSLRB;命令= lteULPerfectChannelEstimate (rxConfig、通道frameOffset);noiseGrid = lteSLSCFDMADemodulate (rxConfig、噪音(1 + frameOffset:最终,));巢= var (noiseGrid (:));结束%绘制SCI提单或SL-SCH吞吐量函数plotResults (chName simOpt、通道、xvalues yvalues) fadingDescription = sprintf (' % s % s '、channel.DelayProfile num2str (channel.DopplerFreq));图;情节(xvalues yvalues,* - - - - - -。);v =轴;轴([v(1)(2) -10 110])标题(sprintf (“V2X Sidelink % s % s (% %) % s衰落和AWGN”,simOpt chName fadingDescription));包含(“信噪比(dB)”);ylabel ([simOpt“(%)”]);网格;结束