通信人家园

标题: 请问RACH msg4的和RACH msg2的调解有什么区别吗?  [查看完整版帖子] [打印本页]

时间:  2024-5-20 11:46
作者: roskey     标题: 请问RACH msg4的和RACH msg2的调解有什么区别吗?

实录了几组用手机连接srsran基站的5G信号,用matlab自带示例NRCellSearchMIBAndSIB1RecoveryExample解调。

将 nrDCIDecode 中的 rnti 和 nrPDSCHConfig 中的 rnti 改为 raRNTI 可以成功解调并获取到 RAR。将RAR和pcap中对比也是正确的。

但是当我尝试解调RACH msg4的时候,将 nrDCIDecode 中的 rnti 和 nrPDSCHConfig 中的 rnti 改为 tcRNTI 时。PDCCH的 DCI 能解调出来,从 srsran 的 log 中可以看到 PDCCH 使用的是 format=1_0,尝试用 DCI format 1_0 tcRNTI 解析后,用DCI的信息来找到 PDSCH 的符号后,decodeDLSCH 获取的CRC总是错误。

想请问一下各位大能应该怎么解决这个问题呢?


录制时使用的2114.45 MHz 进行的录制。

srsran的配置如下:
  dl_arfcn: 423400  
  band: 1
  channel_bandwidth_MHz: 10
  common_scs: 15     


matlab 中使用的配置如下:
sampleRate = 23.04e6;
fPhaseComp = 0;
refBurst.BlockPattern = 'Case A';
refBurst.L_max = 4;
minChannelBW = 5;


相关的代码和录制文件放在了github上 https: //github.com/roskeys/NRCellSearchMIBAndSIB1RecoveryExample




时间:  2024-5-20 13:57
作者: laozhu

有啥区别
时间:  2024-5-20 16:16
作者: roskey

laozhu 发表于 2024-5-20 13:57
有啥区别

相同的代码,能解调出msg2但是不能解调出msg4。能够确定PDSCH符号的位置,但是解码后CRC不对
时间:  2024-5-20 16:52
作者: oooooooo

是不是CRC长度不一样?
时间:  2024-5-20 20:57
作者: roskey

oooooooo 发表于 2024-5-20 16:52
是不是CRC长度不一样?

没有找到 matlab 中 nrDLSCHDecoder crc 长度的配置项呢,似乎这个长度是固定的24bits

时间:  2024-5-20 21:00
作者: roskey

补充一个星座图,似乎这一步就不太对劲
Snipaste_2024-05-20_11-44-00 (1).png



附件: Snipaste_2024-05-20_11-44-00 (1).png (2024-5-20 21:00, 28.09 KB) / 下载次数 0
https://www.txrjy.com/forum.php?mod=attachment&aid=NjMzNTUzfDE1NGQ4ZThkfDE3MzI0ODQ5ODR8MHww
时间:  2024-5-20 21:34
作者: roskey

roskey 发表于 2024-5-20 21:00
补充一个星座图,似乎这一步就不太对劲

这是前面信道估计的代码
for fpc = fPhaseComp + 1e3*freqSearch
   
    % OFDM demodulate received waveform
    nSlot = 0;
    rxGrid = nrOFDMDemodulate(rxWaveform, nrb, scsCommon, nSlot,...
                                'SampleRate',sampleRate,'CarrierFrequency',fpc);
   
    % Extract monitoring slot from the received grid   
    rxSlotGrid = rxGrid(csetSubcarriers,monSlotsSym,:);
    rxSlotGrid = rxSlotGrid/max(abs(rxSlotGrid(:))); % Normalization of received RE magnitude
   
    % Channel estimation and equalization of PDSCH symbols
    [hest,nVar,pdschHestInfo] = nrChannelEstimate(rxSlotGrid,pdschDmrsIndices,pdschDmrsSymbols);
    [pdschIndices,pdschIndicesInfo] = nrPDSCHIndices(carrier,pdsch);
    [pdschRxSym,pdschHest] = nrExtractResources(pdschIndices,rxSlotGrid,hest);
    pdschEqSym = nrEqualizeMMSE(pdschRxSym,pdschHest,nVar);


时间:  2024-5-20 21:34
作者: roskey

roskey 发表于 2024-5-20 21:00
补充一个星座图,似乎这一步就不太对劲

PDSCH 的配置沿用了SIB1的配置

function [pdsch,K_0] = hSIB1PDSCHConfiguration(dci,NSizeBWP,DMRSTypeAPosition,pat)

    pdsch = nrPDSCHConfig();
    pdsch.NSizeBWP = [];
    pdsch.NStartBWP = [];
   
    pdsch.RNTI = 65535; % SI-RNTI

    % Configure PDSCH from DCI message
    pdsch.VRBToPRBInterleaving = dci.VRBToPRBMapping;
    % Configure the PDSCH VRB set as specified by the DCI message
    pdsch.PRBSetType = 'VRB';
    [Lrbs,RBstart] = hDecodeRIV(NSizeBWP,dci.FrequencyDomainResources);
    pdsch.PRBSet = RBstart + (0Lrbs-1));
   
    % Select applicable PDSCH time domain resource allocation table based
    % on RNTI and CORESET pattern (TS 38.214 Table 5.1.2.1.1-1)
    % SI-RNTI Type0 Common
    restables = hPDSCHTimeAllocationTables();
    restable = restables{pat};
    restable = restable(restable.rowIndex==(dci.TimeDomainResources+1),:);
    resalloc = restable(restable.DMRSTypeAPosition==DMRSTypeAPosition,:);

    K_0 = resalloc.K_0;
   
    pdsch.MappingType = resalloc.PDSCHMappingType;
    pdsch.SymbolAllocation = [resalloc.S resalloc.L];
   
    % Configure PDSCH from MIB / SSB
    pdsch.NID = [];                                     % Cell identity (TS 38.211 Section 7.3.1.1)
    pdsch.DMRS.DMRSTypeAPosition = DMRSTypeAPosition;
    pdsch.DMRS.NIDNSCID = [];                           % Cell identity (TS 38.211 Section 7.4.1.1)
   
    % Configure PDSCH from other relevant rules
    % TS 38.214 Section 5.1.3.1
    pdsch.Modulation = 'QPSK';
    % TS 38.211 Section 7.4.1.1
    pdsch.DMRS.NSCID = 0;
    % TS 38.214 Section 5.1.6.2
    pdsch.NumLayers = 1;
    pdsch.DMRS.DMRSPortSet = 0;
    pdsch.DMRS.DMRSConfigurationType = 1;
    pdsch.DMRS.DMRSLength = 1;
    L = pdsch.SymbolAllocation(2);
    if (L==2)
        pdsch.DMRS.NumCDMGroupsWithoutData = 1;
    else
        pdsch.DMRS.NumCDMGroupsWithoutData = 2;
    end
    if (strcmpi(pdsch.MappingType,'A'))
        pdsch.DMRS.DMRSAdditionalPosition = 2;
    else % 'B'
        switch L
            case {2,4}
                pdsch.DMRS.DMRSAdditionalPosition = 0;
            case 7
                pdsch.DMRS.DMRSAdditionalPosition = 1;
        end
    end
   
    pdsch.DMRS.DMRSReferencePoint = 'PRB0';
   
    pdsch.EnablePTRS = false; % TS 38.214 Section 5.1.6.3
   
end

function [Lrbs,RBstart] = hDecodeRIV(NSizeBWP,RIV)
   
    Lrbs = floor(RIV / NSizeBWP) + 1;
   
    RBstart = RIV - ((Lrbs - 1) * NSizeBWP);
   
    if (Lrbs > NSizeBWP - RBstart)
        
        Lrbs = NSizeBWP - Lrbs + 2;
        RBstart = NSizeBWP - 1 - RBstart;
        
    end
   
end





通信人家园 (https://www.txrjy.com/) Powered by C114