diff --git a/matlab/tests/pdsch_decode_signal.m b/matlab/tests/pdsch_decode_signal.m index c9f2d9e95..cf082ae46 100644 --- a/matlab/tests/pdsch_decode_signal.m +++ b/matlab/tests/pdsch_decode_signal.m @@ -1,4 +1,4 @@ -%enb=struct('NCellID',424,'NDLRB',100,'NSubframe',9,'CFI',2,'CyclicPrefix','Normal','CellRefP',2,'Ng','One','PHICHDuration','Normal','DuplexMode','FDD'); +enb=struct('NCellID',1,'NDLRB',50,'NSubframe',2,'CFI',2,'CyclicPrefix','Normal','CellRefP',1,'Ng','One','PHICHDuration','Normal','DuplexMode','FDD'); RNTI=65535; @@ -11,8 +11,8 @@ cec.InterpType = 'linear'; % 2D interpolation type cec.InterpWindow = 'Causal'; % Interpolation window type cec.InterpWinSize = 1; % Interpolation window size -%subframe_rx=lteOFDMDemodulate(enb,inputSignal); -subframe_rx=reshape(input,[],14); +subframe_rx=lteOFDMDemodulate(enb,y); +%subframe_rx=reshape(input,[],14); [hest,nest] = lteDLChannelEstimate(enb, cec, subframe_rx); % Search PDCCH @@ -30,7 +30,8 @@ if ~isempty(dci) % Get the PDSCH configuration from the DCI [pdsch, trblklen] = hPDSCHConfiguration(enb, dci, pdcch.RNTI); pdsch.NTurboDecIts = 10; - %pdsch.Modulation = {'QPSK'}; + pdsch.Modulation = {'QPSK'}; + pdsch.RV=0; %trblklen=75376; fprintf('PDSCH settings after DCI decoding:\n'); disp(pdsch); @@ -43,9 +44,9 @@ if ~isempty(dci) [dlschBits,pdschSymbols] = ltePDSCHDecode(enb, pdsch, pdschRx, pdschHest, nest); [sib1, crc] = lteDLSCHDecode(enb, pdsch, trblklen, dlschBits); - [dec2, data, pdschRx2, pdschSymbols2, e_bits] = srslte_pdsch(enb, pdsch, ... - trblklen, ... - subframe_rx, hest, nest); + %[dec2, data, pdschRx2, pdschSymbols2, e_bits] = srslte_pdsch(enb, pdsch, ... + % trblklen, ... + % subframe_rx, hest, nest); scatter(real(pdschSymbols{1}),imag(pdschSymbols{1})) diff --git a/srslte/examples/pdsch_ue.c b/srslte/examples/pdsch_ue.c index 3570da95a..ee33392de 100644 --- a/srslte/examples/pdsch_ue.c +++ b/srslte/examples/pdsch_ue.c @@ -506,6 +506,7 @@ int main(int argc, char **argv) { // RV for SIB1 is predefined uint32_t k = (sfn/2)%4; uint32_t rv = ((uint32_t) ceilf((float)1.5*k))%4; + n = srslte_ue_dl_decode_rnti_rv(&ue_dl, &sf_buffer[prog_args.time_offset], data, srslte_ue_sync_get_sfidx(&ue_sync), SRSLTE_SIRNTI, rv); diff --git a/srslte/lib/ue/src/ue_dl.c b/srslte/lib/ue/src/ue_dl.c index 265344d61..4ac444284 100644 --- a/srslte/lib/ue/src/ue_dl.c +++ b/srslte/lib/ue/src/ue_dl.c @@ -449,6 +449,7 @@ bool srslte_ue_dl_decode_phich(srslte_ue_dl_t *q, uint32_t sf_idx, uint32_t n_pr void srslte_ue_dl_save_signal(srslte_ue_dl_t *q, srslte_softbuffer_rx_t *softbuffer, uint32_t tti, uint32_t rv_idx) { srslte_vec_save_file("sf_symbols", q->sf_symbols, SRSLTE_SF_LEN_RE(q->cell.nof_prb, q->cell.cp)*sizeof(cf_t)); + printf("%d samples\n", SRSLTE_SF_LEN_RE(q->cell.nof_prb, q->cell.cp)); srslte_vec_save_file("ce0", q->ce[0], SRSLTE_SF_LEN_RE(q->cell.nof_prb, q->cell.cp)*sizeof(cf_t)); if (q->cell.nof_ports > 1) { srslte_vec_save_file("ce1", q->ce[1], SRSLTE_SF_LEN_RE(q->cell.nof_prb, q->cell.cp)*sizeof(cf_t)); diff --git a/srslte/lib/ue/src/ue_sync.c b/srslte/lib/ue/src/ue_sync.c index 42f99af7a..0caa69f00 100644 --- a/srslte/lib/ue/src/ue_sync.c +++ b/srslte/lib/ue/src/ue_sync.c @@ -194,8 +194,8 @@ int srslte_ue_sync_init(srslte_ue_sync_t *q, srslte_sync_cfo_i_detec_en(&q->sfind, false); - srslte_sync_set_cfo_ema_alpha(&q->sfind, 0.01); - srslte_sync_set_cfo_ema_alpha(&q->strack, 0.01); + srslte_sync_set_cfo_ema_alpha(&q->sfind, 0.1); + srslte_sync_set_cfo_ema_alpha(&q->strack, 0.1); /* In find phase and if the cell is known, do not average pss correlation * because we only capture 1 subframe and do not know where the peak is.