From c9f8d500369f72b4373977015c4681d71135a12f Mon Sep 17 00:00:00 2001 From: hu <hu@eurecom.fr> Date: Fri, 6 Sep 2013 12:08:29 +0000 Subject: [PATCH] version used for Sujuan's report git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4138 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- targets/PROJECTS/TDDREC/initparams.m | 2 +- targets/PROJECTS/TDDREC/runmeas_woduplex.m | 48 +++++++++++++++------- 2 files changed, 34 insertions(+), 16 deletions(-) diff --git a/targets/PROJECTS/TDDREC/initparams.m b/targets/PROJECTS/TDDREC/initparams.m index 5bbe233ee2..26c733aeee 100644 --- a/targets/PROJECTS/TDDREC/initparams.m +++ b/targets/PROJECTS/TDDREC/initparams.m @@ -6,7 +6,7 @@ clear paramsinitialized=false; limeparms; rxgain=0; -txgain=5; +txgain=10; eNB_flag = 0; card = 0; Ntrx=4; diff --git a/targets/PROJECTS/TDDREC/runmeas_woduplex.m b/targets/PROJECTS/TDDREC/runmeas_woduplex.m index 668d17ba26..a4f1a7026c 100644 --- a/targets/PROJECTS/TDDREC/runmeas_woduplex.m +++ b/targets/PROJECTS/TDDREC/runmeas_woduplex.m @@ -20,7 +20,7 @@ if(paramsinitialized && ~LSBSWITCH_FLAG) run.\n"); endif -# %% ------- Prepare the signals for both A2B and B2A ------- %% +# %% ------- Prepare the signals for A2B ---------- %% signalA2B=zeros(N,4); signalB2A=zeros(N,4); ia=1; ib=1; @@ -32,15 +32,25 @@ if(paramsinitialized && ~LSBSWITCH_FLAG) 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) + % if(indB(ib)==i) % This part could be improved by creating fully orthogonal sequences + % [tmpd, tmps]=genrandpskseq(N,M,amp); + % 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 +#%%------------Prepare the signals for B2A---------------%% + for i=1:4 + if(indB(ib)==i) [tmpd, tmps]=genrandpskseq(N,M,amp); - signalB2A(:,i)=tmps*2; - signalA2B(:,i)=repmat(1+1j,76800,1); + signalB2A(:,i)=tmps*2; %make sure LSB is 0 (switch=tx) + signalA2B(:,i)=repmat(1+1j,76800,1); %make sure LSB is 1 (switch=rx) Db2a_T=[Db2a_T tmpd]; if(length(indB)> ib) ib=ib+1; endif - endif - endfor + endif + endfor # %% ------- Node A to B transmission ------- %% rf_mode_current = rf_mode; % + (DMAMODE_TX+TXEN)*active_rfA +(DMAMODE_RX+RXEN)*active_rfB; @@ -51,11 +61,16 @@ if(paramsinitialized && ~LSBSWITCH_FLAG) 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); - oarf_send_frame(card,signalB2A,n_bit); - %keyboard +#%%----------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); + + signalB2Asend=signalB2A; + signalB2Asend(1:38400,3)=0; + signalB2Asend(38401:end,2)=0; + oarf_send_frame(card,signalB2Asend,n_bit); + %oarf_send_frame(card,signalB2A,n_bit); + receivedB2A=oarf_get_frame(card); oarf_stop(card); @@ -71,10 +86,11 @@ if(paramsinitialized && ~LSBSWITCH_FLAG) endfor HA2B=repmat(conj(Da2b_T),1,Nantb).*Da2b_R; phasesA2B=unwrap(angle(HA2B)); + if(mean(var(phasesA2B))>0.5) - disp("The phases of your estimates are a bit high (larger than 0.5 rad.), something is wrong."); + disp("The phases of your estimates from A to B are a bit high (larger than 0.5 rad.), something is wrong."); endif - + % keyboard chanestsA2B=reshape(diag(repmat(Da2b_T,1,Nantb)'*Da2b_R)/size(Da2b_T,1),301,Nantb); fchanestsA2B=zeros(512,Nantb); for i=1:Nantb @@ -83,6 +99,8 @@ if(paramsinitialized && ~LSBSWITCH_FLAG) tchanestsA2B=ifft(fchanestsA2B); %% ------- Do the B to A channel estimation ------- %% +Db2a_T(1:60,302:end) = 0; +Db2a_T(61:end,1:301) = 0; Db2a_R=zeros(Niter*120,Nanta*301); for i=0:119; ifblock=receivedB2A(i*640+[1:640],indA); @@ -95,9 +113,9 @@ if(paramsinitialized && ~LSBSWITCH_FLAG) HB2A=conj(repmat(Db2a_T,Niter,1)).*repmat(Db2a_R,1,Nantb); phasesB2A=unwrap(angle(HB2A)); if(mean(var(phasesB2A))>0.5) - disp("The phases of your estimates are a bit high (larger than 0.5 rad.), something is wrong."); + disp("The phases of your estimates from B to A are a bit high (larger than 0.5 rad.), something is wrong."); endif - chanestsB2A=reshape(diag(repmat(Db2a_T,Niter,1)'*repmat(Db2a_R,1,Nantb)/(Niter*120)),301,Nantb); + chanestsB2A=reshape(diag(repmat(Db2a_T,Niter,1)'*repmat(Db2a_R,1,Nantb)/(Niter*60)),301,Nantb); # %% -- Some plotting code -- %% (you can uncomment what you see fit) # clf -- GitLab