diff --git a/targets/PROJECTS/TDDREC/initparams.m b/targets/PROJECTS/TDDREC/initparams.m index 2628e859def7c481c4576a2ff77f927c82514f5c..5bbe233ee295f551053088bff0c340d0c0f1e805 100644 --- a/targets/PROJECTS/TDDREC/initparams.m +++ b/targets/PROJECTS/TDDREC/initparams.m @@ -5,14 +5,14 @@ clear paramsinitialized=false; limeparms; -rxgain=30; -txgain=25; +rxgain=0; +txgain=5; eNB_flag = 0; card = 0; Ntrx=4; dual_tx=0; active_rfA=[1 0 0 0]; -active_rfB=[0 1 0 0]; +active_rfB=[0 1 1 0]; active_rf=active_rfA+active_rfB; if(active_rfA*active_rfB'!=0) error("The A and B transceive chains must be orthogonal./n") endif @@ -22,10 +22,12 @@ fc = 1912600000; %1907600000; %fc = 859.5e6; -%rf_mode=(RXEN+TXEN+TXLPFNORM+TXLPFEN+TXLPF25+RXLPFNORM+RXLPFEN+RXLPF25+LNA1ON+LNAByp+RFBBLNA1) * active_rf; autocal_mode=active_rf; -rf_mode=(TXLPFNORM+TXLPFEN+TXLPF25+RXLPFNORM+RXLPFEN+RXLPF25+LNA1ON+LNAMax+RFBBNORM) * active_rf; -tdd_config = DUPLEXMODE_FDD+TXRXSWITCH_TESTTX; LSBSWITCH_FLAG=false; +%rf_mode=(RXEN+TXEN+TXLPFNORM+TXLPFEN+TXLPF25+RXLPFNORM+RXLPFEN+RXLPF25+LNA1ON+LNAByp+RFBBLNA1) * active_rf; +%rf_mode=(TXLPFNORM+TXLPFEN+TXLPF25+RXLPFNORM+RXLPFEN+RXLPF25+LNA1ON+LNAMax+RFBBNORM) * active_rf; +% we have to enable both DMA transfers so that the switching signal in the LSB of the TX buffer gets set +rf_mode=(TXLPFNORM+TXLPFEN+TXLPF25+RXLPFNORM+RXLPFEN+RXLPF25+LNA1ON+LNAMax+RFBBNORM+DMAMODE_TX+TXEN+DMAMODE_RX+RXEN) * active_rf; +tdd_config = DUPLEXMODE_FDD+TXRXSWITCH_LSB; LSBSWITCH_FLAG=false; %we also need the LSB switching for the woduplex script, otherwise we don't receive anything %tdd_config = DUPLEXMODE_FDD+TXRXSWITCH_LSB; LSBSWITCH_FLAG=true; syncmode = SYNCMODE_FREE; rf_local = [8254744 8255063 8257340 8257340]; %eNB2tx 1.9GHz diff --git a/targets/PROJECTS/TDDREC/runmeas_woduplex.m b/targets/PROJECTS/TDDREC/runmeas_woduplex.m index 371375a5c2dbe255d8f7e6415c4294b7018822c3..668d17ba2690175a6d8ec1765291107276ea2baf 100644 --- a/targets/PROJECTS/TDDREC/runmeas_woduplex.m +++ b/targets/PROJECTS/TDDREC/runmeas_woduplex.m @@ -28,30 +28,34 @@ if(paramsinitialized && ~LSBSWITCH_FLAG) for i=1:4 if(indA(ia)==i) [Da2b_T, tmps]=genrandpskseq(N,M,amp); - signalA2B(:,i)=tmps; + signalA2B(:,i)=tmps*2; %make sure LSB is 0 (switch=tx) + signalB2A(:,i)=repmat(1+1j,76800,1); %make sure LSB is 1 (switch=rx) if(length(indA)> ia) ia=ia+1; endif endif if(indB(ib)==i) % This part could be improved by creating fully orthogonal sequences [tmpd, tmps]=genrandpskseq(N,M,amp); - signalB2A(:,i)=tmps; + signalB2A(:,i)=tmps*2; + signalA2B(:,i)=repmat(1+1j,76800,1); Db2a_T=[Db2a_T tmpd]; if(length(indB)> ib) ib=ib+1; endif endif endfor # %% ------- Node A to B transmission ------- %% - rf_mode_current = rf_mode + (DMAMODE_TX+TXEN)*active_rfA +(DMAMODE_RX+RXEN)*active_rfB; - oarf_config_exmimo(card, freq_rx,freq_tx,tdd_config,syncmode,rx_gain,tx_gain,eNB_flag,rf_mode_current,rf_rxdc,rf_local,rf_vcocal,rffe_rxg_low,rffe_rxg_final,rffe_band,autocal_mode); + rf_mode_current = rf_mode; % + (DMAMODE_TX+TXEN)*active_rfA +(DMAMODE_RX+RXEN)*active_rfB; + oarf_config_exmimo(card,freq_rx,freq_tx,tdd_config,syncmode,rx_gain,tx_gain,eNB_flag,rf_mode_current,rf_rxdc,rf_local,rf_vcocal,rffe_rxg_low,rffe_rxg_final,rffe_band,autocal_mode); oarf_send_frame(card,signalA2B,n_bit); + %keyboard receivedA2B=oarf_get_frame(card); oarf_stop(card); # %% ------- Node B to A transmission ------- %% - rf_mode_current = rf_mode + (DMAMODE_TX+TXEN)*active_rfB +(DMAMODE_RX+RXEN)*active_rfA; - oarf_config_exmimo(card, freq_rx,freq_tx,tdd_config,syncmode,rx_gain,tx_gain,eNB_flag,rf_mode_current,rf_rxdc,rf_local,rf_vcocal,rffe_rxg_low,rffe_rxg_final,rffe_band,autocal_mode); + rf_mode_current = rf_mode; % + (DMAMODE_TX+TXEN)*active_rfB +(DMAMODE_RX+RXEN)*active_rfA; + oarf_config_exmimo(card,freq_rx,freq_tx,tdd_config,syncmode,rx_gain,tx_gain,eNB_flag,rf_mode_current,rf_rxdc,rf_local,rf_vcocal,rffe_rxg_low,rffe_rxg_final,rffe_band,autocal_mode); oarf_send_frame(card,signalB2A,n_bit); + %keyboard receivedB2A=oarf_get_frame(card); oarf_stop(card);