% Lab 1 % create empty resource grid clc clear %variables mu=0;% NR numerology, 0,1,2,3,4 SCS=15*2^mu; %kHz NumRBs=4; %frequency scale CPref="normal"; symPerSlot=14; BWPSize=NumRBs*SCS*12*0.001; %used BW size FR='FR1'; % 'FR1' or 'FR2' %% create grid for slot carrier = nrCarrierConfig("CyclicPrefix",CPref,"SubcarrierSpacing",SCS,"NSizeGrid",NumRBs,'NSlot',1); grid=nrResourceGrid(carrier); info = nrOFDMInfo(carrier); % Get OFDM information for the specified carrier configuration. numSlotsPerFrame=info.SlotsPerFrame; numSym=symPerSlot*numSlotsPerFrame; %number of total symbols in frame %display grid figure(1) clf mesh(abs(grid)) view(2) axis xy; title("Resource grid"); ylabel("Subcarrier"); xlabel("OFDM Symbol"); figure(2) clf imagesc([0 carrier.SymbolsPerSlot-1],[0 carrier.NSizeGrid*12-1],abs(grid(:,:,1))); axis xy; title("Resource grid"); ylabel("Subcarrier"); xlabel("OFDM Symbol"); %% create grid for frame figure(3) clf RBgrid = []; for nslot = 0:(numSlotsPerFrame - 1) carrier.NSlot = nslot; slotGrid = nrResourceGrid(carrier); % ind = nrSRSIndices(carrier,srs); % sym = nrSRS(carrier,srs); % slotGrid(ind) = sym; RBgrid = [RBgrid slotGrid]; end mesh(abs(RBgrid)) view(2) axis xy; title("Resource grid for Frame"); ylabel("Subcarrier"); xlabel("OFDM Symbol"); figure(4) clf imagesc([0 (carrier.SymbolsPerSlot*carrier.SlotsPerFrame)-1],[0 carrier.NSizeGrid*12-1],abs(RBgrid(:,:,1))); axis xy; title("Resource grid for Frame"); ylabel("Subcarrier"); xlabel("OFDM Symbol"); %% waveform SCScarrier=nrSCSCarrierConfig("NSizeGrid",NumRBs,"SubcarrierSpacing",SCS); bwp = nrWavegenBWPConfig("NSizeBWP",NumRBs,'NStartBWP',SCScarrier.NStartGrid+0,"SubcarrierSpacing",SCS); ssb=nrWavegenSSBurstConfig("Enable",0); pdcch = nrWavegenPDCCHConfig("Enable",0); pdsch = nrWavegenPDSCHConfig("Enable",0); pusch = nrWavegenPUSCHConfig("Enable",0); pucch = nrWavegenPUCCH0Config("Enable",0); srs = nrWavegenSRSConfig("Enable",0); figure(5) clf RBgridUL=nrULCarrierConfig("SCSCarriers",{SCScarrier},'BandwidthParts',{bwp},'PUSCH',{pusch},'PUCCH',{pucch},'SRS',{srs},'FrequencyRange',FR); [waveformUL,ULinfo] = nrWaveformGenerator(RBgridUL); nfftUL=ULinfo.ResourceGrids(1).Info.Nfft; samplerateUL = ULinfo.ResourceGrids(1).Info.SampleRate; spectrogram(waveformUL(:,1),ones(nfftUL,1),0,nfftUL,'centered',samplerateUL,'yaxis','MinThreshold',-130); title('Spectrogram of NR UL Waveform',strcat('BW=',num2str(BWPSize),' MHz, ', num2str(numSym),' OFDM symbols')); figure(6) clf RBgridDL=nrDLCarrierConfig("SCSCarriers",{SCScarrier},"BandwidthParts",{bwp},'SSBurst',ssb,'PDCCH',{pdcch},'PDSCH',{pdsch},'FrequencyRange',FR);%,'CSIRS',{csirs}) [waveformDL,DLinfo] = nrWaveformGenerator(RBgridDL); nfftDL=DLinfo.ResourceGrids(1).Info.Nfft; samplerateDL = DLinfo.ResourceGrids(1).Info.SampleRate; spectrogram(waveformDL(:,1),ones(nfftDL,1),0,nfftDL,'centered',samplerateDL,'yaxis','MinThreshold',-130); title('Spectrogram of NR DL Waveform',strcat('BW=',num2str(BWPSize),' MHz, ', num2str(numSym),' OFDM symbols')); %% tasks