- bug fixes
git-svn-id: http://moon:8086/svn/matlab/trunk@22 801c6759-fa7c-4059-a304-17956f83a07c
This commit is contained in:
+47
-48
@@ -32,40 +32,40 @@ DRM_MODE_C = 3;
|
|||||||
DRM_MODE_D = 4;
|
DRM_MODE_D = 4;
|
||||||
DRM_MODE_E = 5;
|
DRM_MODE_E = 5;
|
||||||
|
|
||||||
ofdm_spec_occ_drm(DRM_MODE_A, SPEC_OCC_4k5) = struct('kmin', 2, 'kmax', 102);
|
ofdm_spec_occ_drm(DRM_MODE_A, SPEC_OCC_4k5) = struct('spec', SPEC_OCC_4k5, 'kmin', 2, 'kmax', 102);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_A, SPEC_OCC_5k0) = struct('kmin', 2, 'kmax', 114);
|
ofdm_spec_occ_drm(DRM_MODE_A, SPEC_OCC_5k0) = struct('spec', SPEC_OCC_5k0, 'kmin', 2, 'kmax', 114);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_A, SPEC_OCC_9k0) = struct('kmin', -102, 'kmax', 102);
|
ofdm_spec_occ_drm(DRM_MODE_A, SPEC_OCC_9k0) = struct('spec', SPEC_OCC_9k0, 'kmin', -102, 'kmax', 102);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_A, SPEC_OCC_10k) = struct('kmin', -114, 'kmax', 114);
|
ofdm_spec_occ_drm(DRM_MODE_A, SPEC_OCC_10k) = struct('spec', SPEC_OCC_10k, 'kmin', -114, 'kmax', 114);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_A, SPEC_OCC_18k) = struct('kmin', - 98, 'kmax', 314);
|
ofdm_spec_occ_drm(DRM_MODE_A, SPEC_OCC_18k) = struct('spec', SPEC_OCC_18k, 'kmin', - 98, 'kmax', 314);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_A, SPEC_OCC_20k) = struct('kmin', -110, 'kmax', 350);
|
ofdm_spec_occ_drm(DRM_MODE_A, SPEC_OCC_20k) = struct('spec', SPEC_OCC_20k, 'kmin', -110, 'kmax', 350);
|
||||||
|
|
||||||
ofdm_spec_occ_drm(DRM_MODE_B, SPEC_OCC_4k5) = struct('kmin', 1, 'kmax', 91);
|
ofdm_spec_occ_drm(DRM_MODE_B, SPEC_OCC_4k5) = struct('spec', SPEC_OCC_4k5, 'kmin', 1, 'kmax', 91);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_B, SPEC_OCC_5k0) = struct('kmin', 1, 'kmax', 103);
|
ofdm_spec_occ_drm(DRM_MODE_B, SPEC_OCC_5k0) = struct('spec', SPEC_OCC_5k0, 'kmin', 1, 'kmax', 103);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_B, SPEC_OCC_9k0) = struct('kmin', - 91, 'kmax', 91);
|
ofdm_spec_occ_drm(DRM_MODE_B, SPEC_OCC_9k0) = struct('spec', SPEC_OCC_9k0, 'kmin', - 91, 'kmax', 91);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_B, SPEC_OCC_10k) = struct('kmin', -103, 'kmax', 103);
|
ofdm_spec_occ_drm(DRM_MODE_B, SPEC_OCC_10k) = struct('spec', SPEC_OCC_10k, 'kmin', -103, 'kmax', 103);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_B, SPEC_OCC_18k) = struct('kmin', - 87, 'kmax', 279);
|
ofdm_spec_occ_drm(DRM_MODE_B, SPEC_OCC_18k) = struct('spec', SPEC_OCC_18k, 'kmin', - 87, 'kmax', 279);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_B, SPEC_OCC_20k) = struct('kmin', - 99, 'kmax', 311);
|
ofdm_spec_occ_drm(DRM_MODE_B, SPEC_OCC_20k) = struct('spec', SPEC_OCC_20k, 'kmin', - 99, 'kmax', 311);
|
||||||
|
|
||||||
ofdm_spec_occ_drm(DRM_MODE_C, SPEC_OCC_4k5) = struct('kmin', 0, 'kmax', 0);
|
ofdm_spec_occ_drm(DRM_MODE_C, SPEC_OCC_4k5) = struct('spec', SPEC_OCC_4k5, 'kmin', 0, 'kmax', 0);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_C, SPEC_OCC_5k0) = struct('kmin', 0, 'kmax', 0);
|
ofdm_spec_occ_drm(DRM_MODE_C, SPEC_OCC_5k0) = struct('spec', SPEC_OCC_5k0, 'kmin', 0, 'kmax', 0);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_C, SPEC_OCC_9k0) = struct('kmin', 0, 'kmax', 0);
|
ofdm_spec_occ_drm(DRM_MODE_C, SPEC_OCC_9k0) = struct('spec', SPEC_OCC_9k0, 'kmin', 0, 'kmax', 0);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_C, SPEC_OCC_10k) = struct('kmin', - 69, 'kmax', 69);
|
ofdm_spec_occ_drm(DRM_MODE_C, SPEC_OCC_10k) = struct('spec', SPEC_OCC_10k, 'kmin', - 69, 'kmax', 69);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_C, SPEC_OCC_18k) = struct('kmin', 0, 'kmax', 0);
|
ofdm_spec_occ_drm(DRM_MODE_C, SPEC_OCC_18k) = struct('spec', SPEC_OCC_18k, 'kmin', 0, 'kmax', 0);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_C, SPEC_OCC_20k) = struct('kmin', - 67, 'kmax', 213);
|
ofdm_spec_occ_drm(DRM_MODE_C, SPEC_OCC_20k) = struct('spec', SPEC_OCC_20k, 'kmin', - 67, 'kmax', 213);
|
||||||
|
|
||||||
ofdm_spec_occ_drm(DRM_MODE_D, SPEC_OCC_4k5) = struct('kmin', 0, 'kmax', 0);
|
ofdm_spec_occ_drm(DRM_MODE_D, SPEC_OCC_4k5) = struct('spec', SPEC_OCC_4k5, 'kmin', 0, 'kmax', 0);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_D, SPEC_OCC_5k0) = struct('kmin', 0, 'kmax', 0);
|
ofdm_spec_occ_drm(DRM_MODE_D, SPEC_OCC_5k0) = struct('spec', SPEC_OCC_5k0, 'kmin', 0, 'kmax', 0);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_D, SPEC_OCC_9k0) = struct('kmin', 0, 'kmax', 0);
|
ofdm_spec_occ_drm(DRM_MODE_D, SPEC_OCC_9k0) = struct('spec', SPEC_OCC_9k0, 'kmin', 0, 'kmax', 0);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_D, SPEC_OCC_10k) = struct('kmin', - 44, 'kmax', 44);
|
ofdm_spec_occ_drm(DRM_MODE_D, SPEC_OCC_10k) = struct('spec', SPEC_OCC_10k, 'kmin', - 44, 'kmax', 44);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_D, SPEC_OCC_18k) = struct('kmin', 0, 'kmax', 0);
|
ofdm_spec_occ_drm(DRM_MODE_D, SPEC_OCC_18k) = struct('spec', SPEC_OCC_18k, 'kmin', 0, 'kmax', 0);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_D, SPEC_OCC_20k) = struct('kmin', - 43, 'kmax', 135);
|
ofdm_spec_occ_drm(DRM_MODE_D, SPEC_OCC_20k) = struct('spec', SPEC_OCC_20k, 'kmin', - 43, 'kmax', 135);
|
||||||
|
|
||||||
ofdm_spec_occ_drm(DRM_MODE_E, SPEC_OCC_4k5) = struct('kmin', -106, 'kmax', 106);
|
ofdm_spec_occ_drm(DRM_MODE_E, SPEC_OCC_4k5) = struct('spec', SPEC_OCC_4k5, 'kmin', -106, 'kmax', 106);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_E, SPEC_OCC_5k0) = struct('kmin', 0, 'kmax', 0);
|
ofdm_spec_occ_drm(DRM_MODE_E, SPEC_OCC_5k0) = struct('spec', SPEC_OCC_5k0, 'kmin', 0, 'kmax', 0);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_E, SPEC_OCC_9k0) = struct('kmin', 0, 'kmax', 0);
|
ofdm_spec_occ_drm(DRM_MODE_E, SPEC_OCC_9k0) = struct('spec', SPEC_OCC_9k0, 'kmin', 0, 'kmax', 0);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_E, SPEC_OCC_10k) = struct('kmin', 0, 'kmax', 0);
|
ofdm_spec_occ_drm(DRM_MODE_E, SPEC_OCC_10k) = struct('spec', SPEC_OCC_10k, 'kmin', 0, 'kmax', 0);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_E, SPEC_OCC_18k) = struct('kmin', 0, 'kmax', 0);
|
ofdm_spec_occ_drm(DRM_MODE_E, SPEC_OCC_18k) = struct('spec', SPEC_OCC_18k, 'kmin', 0, 'kmax', 0);
|
||||||
ofdm_spec_occ_drm(DRM_MODE_E, SPEC_OCC_20k) = struct('kmin', 0, 'kmax', 0);
|
ofdm_spec_occ_drm(DRM_MODE_E, SPEC_OCC_20k) = struct('spec', SPEC_OCC_20k, 'kmin', 0, 'kmax', 0);
|
||||||
|
|
||||||
W1024{DRM_MODE_A,:,:} = [228 341 455; 455 569 683; 683 796 910; 910 0 114; 114 228 341];
|
W1024{DRM_MODE_A,:,:} = [228 341 455; 455 569 683; 683 796 910; 910 0 114; 114 228 341];
|
||||||
W1024{DRM_MODE_B,:,:} = [512 0 512 0 512; 0 512 0 512 0; 512 0 512 0 512];
|
W1024{DRM_MODE_B,:,:} = [512 0 512 0 512; 0 512 0 512 0; 512 0 512 0 512];
|
||||||
@@ -103,7 +103,7 @@ Ts = Tu+Tg
|
|||||||
Ng = round(Tg*fa)
|
Ng = round(Tg*fa)
|
||||||
Nu = round(Tu*fa)
|
Nu = round(Tu*fa)
|
||||||
Ns = round(Ts*fa)
|
Ns = round(Ts*fa)
|
||||||
N_fft = Nu;
|
N_fft = Nu
|
||||||
SubCarrierspacing_HZ = fa/N_fft
|
SubCarrierspacing_HZ = fa/N_fft
|
||||||
|
|
||||||
% TX window
|
% TX window
|
||||||
@@ -128,18 +128,17 @@ for k=1:N_frames
|
|||||||
if WITH_DATA == 1
|
if WITH_DATA == 1
|
||||||
data_i = c2i(N_fft, ofdm_spec_occ.kmin:1:ofdm_spec_occ.kmax);
|
data_i = c2i(N_fft, ofdm_spec_occ.kmin:1:ofdm_spec_occ.kmax);
|
||||||
sym = round(M_QAM*rand(1, length(data_i))+0.5);
|
sym = round(M_QAM*rand(1, length(data_i))+0.5);
|
||||||
X(data_i) = 0.10*qlut(sym);
|
X(data_i) = 0.20*qlut(sym);
|
||||||
end;
|
end;
|
||||||
% X(c2i(N_fft,65)) = 0.20*qlut(round(M_qam*rand(1, 1)+0.5));
|
|
||||||
|
|
||||||
if WITH_FREQ_REF == 1
|
if WITH_FREQ_REF == 1
|
||||||
[ref_c ref_p ref_a] = getRefFreq(DRM_MODE_B, s);
|
[ref_c ref_p ref_a] = getRefFreq(ofdm_params.mode);
|
||||||
X(c2i(N_fft, ref_c)) = 0.20*ref_a.*(exp(2*pi*i*ref_p/1024));
|
X(c2i(N_fft, ref_c)) = 0.20*ref_a.*(exp(2*pi*i*ref_p/1024));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
if (s==0) & (WITH_TIME_REF == 1)
|
if (s==0) & (WITH_TIME_REF == 1)
|
||||||
[ref_c ref_p ref_a] = getRefTime(DRM_MODE_B);
|
[ref_c ref_p ref_a] = getRefTime(ofdm_params.mode);
|
||||||
X(c2i(N_fft, ref_c)) = 0.20*ref_a.*(exp(2*pi*i*ref_p/1024));
|
X(c2i(N_fft, ref_c)) = 0.20*ref_a.*(exp(2*pi*i*ref_p/1024));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -165,7 +164,7 @@ for k=1:N_frames
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
% Modulate on carrier
|
% Modulate on carrier
|
||||||
yc = 0.5*exp(i*2*pi.*(0:length(xv)-1)*fc/fa) .* xv; %filter(hlp,1,xv);
|
yc = 0.5*exp(i*2*pi.*(0:length(xv)-1)*fc/fa) .* xv;
|
||||||
yv = real(yc) + imag(yc);
|
yv = real(yc) + imag(yc);
|
||||||
|
|
||||||
xv = conj(xv');
|
xv = conj(xv');
|
||||||
@@ -178,9 +177,9 @@ function index = c2i(N_fft, carriers)
|
|||||||
ri = [];
|
ri = [];
|
||||||
ri = [ri find(carriers == 0)];
|
ri = [ri find(carriers == 0)];
|
||||||
carriers(ri) = [];
|
carriers(ri) = [];
|
||||||
index = mod(-carriers, 1024) + 1;
|
index = mod(-carriers, N_fft) + 1;
|
||||||
|
|
||||||
function [ref_c ref_p ref_a] = getRefFreq(drmMode, s)
|
function [ref_c ref_p ref_a] = getRefFreq(drmMode)
|
||||||
|
|
||||||
ref_A_c = [18 54 72];
|
ref_A_c = [18 54 72];
|
||||||
ref_A_p = [205 836 215];
|
ref_A_p = [205 836 215];
|
||||||
@@ -204,27 +203,27 @@ ref_E_p = [];
|
|||||||
ref_E_a = [];
|
ref_E_a = [];
|
||||||
|
|
||||||
switch drmMode
|
switch drmMode
|
||||||
case 1
|
case 'MODE_A'
|
||||||
ref_c = ref_A_c;
|
ref_c = ref_A_c;
|
||||||
ref_p = ref_A_p;
|
ref_p = ref_A_p;
|
||||||
ref_a = ref_A_a;
|
ref_a = ref_A_a;
|
||||||
|
|
||||||
case 2
|
case 'MODE_B'
|
||||||
ref_c = ref_B_c;
|
ref_c = ref_B_c;
|
||||||
ref_p = ref_B_p;
|
ref_p = ref_B_p;
|
||||||
ref_a = ref_B_a;
|
ref_a = ref_B_a;
|
||||||
|
|
||||||
case 3
|
case 'MODE_C'
|
||||||
ref_c = ref_C_c;
|
ref_c = ref_C_c;
|
||||||
ref_p = ref_C_p;
|
ref_p = ref_C_p;
|
||||||
ref_a = ref_C_a;
|
ref_a = ref_C_a;
|
||||||
|
|
||||||
case 4
|
case 'MODE_D'
|
||||||
ref_c = ref_D_c;
|
ref_c = ref_D_c;
|
||||||
ref_p = ref_D_p;
|
ref_p = ref_D_p;
|
||||||
ref_a = ref_D_a;
|
ref_a = ref_D_a;
|
||||||
|
|
||||||
case 5
|
case 'MODE_E'
|
||||||
ref_c = ref_E_c;
|
ref_c = ref_E_c;
|
||||||
ref_p = ref_E_p;
|
ref_p = ref_E_p;
|
||||||
ref_a = ref_E_a;
|
ref_a = ref_E_a;
|
||||||
@@ -237,27 +236,27 @@ ref_B_p = [304 108 620 192 704 44 432 588 844 651 651 460 460 944 940 428];
|
|||||||
ref_B_a = sqrt(2)*ones(1,16);
|
ref_B_a = sqrt(2)*ones(1,16);
|
||||||
|
|
||||||
switch drmMode
|
switch drmMode
|
||||||
case 1
|
case 'MODE_A'
|
||||||
ref_c = [];
|
ref_c = [];
|
||||||
ref_p = [];
|
ref_p = [];
|
||||||
ref_a = [];
|
ref_a = [];
|
||||||
|
|
||||||
case 2
|
case 'MODE_B'
|
||||||
ref_c = ref_B_c;
|
ref_c = ref_B_c;
|
||||||
ref_p = ref_B_p;
|
ref_p = ref_B_p;
|
||||||
ref_a = ref_B_a;
|
ref_a = ref_B_a;
|
||||||
|
|
||||||
case 3
|
case 'MODE_C'
|
||||||
ref_c = [];
|
ref_c = [];
|
||||||
ref_p = [];
|
ref_p = [];
|
||||||
ref_a = [];
|
ref_a = [];
|
||||||
|
|
||||||
case 4
|
case 'MODE_D'
|
||||||
ref_c = [];
|
ref_c = [];
|
||||||
ref_p = [];
|
ref_p = [];
|
||||||
ref_a = [];
|
ref_a = [];
|
||||||
|
|
||||||
case 5
|
case 'MODE_E'
|
||||||
ref_c = [];
|
ref_c = [];
|
||||||
ref_p = [];
|
ref_p = [];
|
||||||
ref_a = [];
|
ref_a = [];
|
||||||
|
|||||||
Reference in New Issue
Block a user