Commit e70f131a authored by Florian Kaltenberger's avatar Florian Kaltenberger

git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4435 818b1a75-f10b-46b9-bf7c-635c3b92a50f
parent b8a66a0f
......@@ -30,14 +30,14 @@ autocal_mode=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;
tdd_config = DUPLEXMODE_FDD+TXRXSWITCH_LSB; %we also need the LSB switching for the woduplex script, otherwise we don't receive anything
%tdd_config = DUPLEXMODE_FDD+TXRXSWITCH_LSB;
syncmode = SYNCMODE_FREE;
rf_local = [8254744 8255063 8257340 8257340]; %eNB2tx 1.9GHz
rf_vcocal=rf_vcocal_19G*active_rf;
rffe_rxg_low = 63*active_rf;
rffe_rxg_final = [30 40 30 20];
rffe_rxg_final = [30 30 30 30];
rffe_band = B19G_TDD*active_rf;
rf_rxdc = rf_rxdc*active_rf;
......
......@@ -2,7 +2,7 @@
% Organisation: Eurecom (and Linkoping University)
% E-mail: mirsad.cirkic@liu.se
if(paramsinitialized && ~LSBSWITCH_FLAG)
if(paramsinitialized)
disp(['\n\n------------\nThis code is, so far, only written for single runs. Multiple ' ...
'runs will overwrite the previous measurement data, i.e., the ' ...
'data structures are not defined for multiple runs. You will need to ' ...
......@@ -115,9 +115,9 @@ if(paramsinitialized && ~LSBSWITCH_FLAG)
end
HB2A=conj(repmat(Db2a_T,Niter,1)).*repmat(Db2a_R(:,:,meas),1,Nantb);
phasesB2A=unwrap(angle(HB2A));
if(mean(var(phasesB2A))>0.5)
disp('The phases of your estimates from B to A are a bit high (larger than 0.5 rad.), something is wrong.');
end
#if(mean(var(phasesB2A))>0.5)
# disp('The phases of your estimates from B to A are a bit high (larger than 0.5 rad.), something is wrong.');
#end
if (chanest_full)
chanestsB2A(:,:,meas)=zeros(301,Nantb);
......@@ -140,15 +140,17 @@ if(paramsinitialized && ~LSBSWITCH_FLAG)
end
%% -- Some plotting code -- %% (you can uncomment what you see fit)
received = receivedB2A;
received = [receivedB2A(:,indA) receivedA2B(:,indB)];
phases = phasesB2A;
tchanests = [tchanestsA2B(:,:,end), tchanestsB2A(:,:,end)];
fchanests = [fchanestsA2B(:,:,end), fchanestsB2A(:,:,end)];
clf
figure(1)
for i=1:4
subplot(220+i);plot(20*log10(abs(fftshift(fft(received(:,i))))));
for i=1:size(received,2);
subplot(220+i);
plot(20*log10(abs(fftshift(fft(received(:,i))))));
ylim([20 140])
end
figure(2)
......@@ -159,7 +161,7 @@ if(paramsinitialized && ~LSBSWITCH_FLAG)
legend('A->B1','A->B2','A->B3','B1->A','B2->A','B3->A');
%legend('A->B1','A->B2','B1->A','B2->A');
figure(4)
figure(3)
plot(20*log10(abs(fchanests)));
ylim([40 100])
xlabel('freq')
......@@ -168,7 +170,7 @@ if(paramsinitialized && ~LSBSWITCH_FLAG)
%legend('A->B1','A->B2','B1->A','B2->A');
if (0)
figure(3)
figure(4)
wndw = 50;
for i=1:5:Nantb*301 %# sliding window size
phamean = filter(ones(wndw,1)/wndw, 1, phases(:,i)); %# moving average
......@@ -203,15 +205,16 @@ if(paramsinitialized && ~LSBSWITCH_FLAG)
end
figure(5)
plot_style={'rx','bo','gs'};
plot_style={'rx','go','bs'};
hold off
for n=1:Nantb
plot((squeeze(Fhatloc(:,:,n))),plot_style{n})
hold on
end
axis([-2 2 -2 2])
disp(squeeze(mean(Fhatloc,2)));
else
if(LSBSWITCH_FLAG) error('You have to unset the LSB switch flag (LSBSWITCH_FLAG) in initparams.m.\n')
else error('You have to run init.params.m first!')
end
error('You have to run init.params.m first!')
end
......@@ -2,7 +2,7 @@
% Organisation: Eurecom (and Linkoping University)
% E-mail: mirsad.cirkic@liu.se
if(paramsinitialized && ~LSBSWITCH_FLAG)
if(paramsinitialized)
disp(['\n\n------------\nThis code is, so far, only written for single runs. Multiple ' ...
'runs will overwrite the previous measurement data, i.e., the ' ...
'data structures are not defined for multiple runs. You will need to ' ...
......@@ -27,6 +27,7 @@ if(paramsinitialized && ~LSBSWITCH_FLAG)
%% ------- Prepare the signals for A2B ---------- %%
signalA2B=zeros(N,4,Nmeas);
signalB2A=zeros(N,4,Nmeas);
Da2b_T=[];
Db2a_T=[];
for meas=1:Nmeas
ia=1; ib=1;
......@@ -34,7 +35,8 @@ if(paramsinitialized && ~LSBSWITCH_FLAG)
for i=1:4
if(indA(ia)==i)
[tmpd, tmps]=genrandpskseq(N,M,amp);
signalA2B(:,i,meas)=tmps; %make sure LSB is 0 (switch=tx)
signalA2B(:,i,meas)=tmps*2; %make sure LSB is 0 (switch=tx)
signalB2A(:,i,meas)=repmat(1+1j,76800,1); %make sure LSB is 1 (switch=rx)
Dtmp=[Dtmp tmpd];
if(length(indA)> ia) ia=ia+1; end
end
......@@ -118,9 +120,9 @@ if(paramsinitialized && ~LSBSWITCH_FLAG)
%% ------- Do the B to A channel estimation ------- %%
HB2A=conj(Db2a_T.*repmat(Db2a_R,1,Nantb));
phasesB2A=unwrap(angle(HB2A));
if(mean(var(phasesB2A))>0.5)
disp('The phases of your estimates from B to A are a bit high (larger than 0.5 rad.), something is wrong.');
end
#if(mean(var(phasesB2A))>0.5)
# disp('The phases of your estimates from B to A are a bit high (larger than 0.5 rad.), something is wrong.');
#end
if (chanest_full)
chanestsB2A=zeros(301,Nantb);
......@@ -141,20 +143,18 @@ if(paramsinitialized && ~LSBSWITCH_FLAG)
fchanestsB2A = [zeros(1,Nantb); chanestsB2A([1:150],:); zeros(210,Nantb); chanestsB2A(151:301,:)];
tchanestsB2A=ifft(fchanestsB2A);
% save *chanests*
% save DA2B_T DA2B_R DB2A_T DB2A_R in seperate file
%% -- Some plotting code -- %% (you can uncomment what you see fit)
received = receivedB2A;
received = [receivedB2A(:,indA) receivedA2B(:,indB)];
phases = phasesB2A;
tchanests = [tchanestsA2B(:,:,end), tchanestsB2A(:,:,end)];
fchanests = [fchanestsA2B(:,:,end), fchanestsB2A(:,:,end)];
clf
figure(1)
for i=1:4
subplot(220+i);plot(20*log10(abs(fftshift(fft(received(:,i))))));
for i=1:size(received,2)
subplot(220+i);
plot(20*log10(abs(fftshift(fft(received(:,i))))));
ylim([20 140])
end
figure(2)
......@@ -165,7 +165,7 @@ if(paramsinitialized && ~LSBSWITCH_FLAG)
legend('A->B1','A->B2','A->B3','B1->A','B2->A','B3->A');
%legend('A->B1','A->B2','B1->A','B2->A');
figure(4)
figure(3)
plot(20*log10(abs(fchanests)));
ylim([40 100])
xlabel('freq')
......@@ -174,7 +174,7 @@ if(paramsinitialized && ~LSBSWITCH_FLAG)
%legend('A->B1','A->B2','B1->A','B2->A');
if (0)
figure(3)
figure(4)
wndw = 50;
for i=1:5:Nantb*301 %# sliding window size
phamean = filter(ones(wndw,1)/wndw, 1, phases(:,i)); %# moving average
......@@ -197,8 +197,25 @@ if(paramsinitialized && ~LSBSWITCH_FLAG)
ylabel('phase variance')
end
else
if(LSBSWITCH_FLAG) error('You have to unset the LSB switch flag (LSBSWITCH_FLAG) in initparams.m.\n')
else error('You have to run init.params.m first!')
%% estimate F matrix assuming it is diagonal for sanity checking
Fhatloc = zeros(301,Nantb);
for s=1:301
ya=chanestsB2A(s,:);
yb=chanestsA2B(s,:);
Fhatloc(s,:)=(yb.*conj(ya))./(ya.*conj(ya));
end
figure(5)
plot_style={'rx','go','bs'};
hold off
for n=1:Nantb
plot((squeeze(Fhatloc(:,n))),plot_style{n})
hold on
end
axis([-2 2 -2 2])
disp(squeeze(mean(Fhatloc,1)));
else
error('You have to run init.params.m first!')
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment