[cfo_coarse_int]

- fixed for small signals
- fixed dimension problem

[Misc]
- cleaned up

git-svn-id: http://moon:8086/svn/matlab/trunk@70 801c6759-fa7c-4059-a304-17956f83a07c
This commit is contained in:
2015-05-03 15:26:05 +00:00
parent 7b52e9d66d
commit 6ddf56bdb4
3 changed files with 38 additions and 38 deletions
+30 -29
View File
@@ -7,24 +7,34 @@ function ofdm_rx(filename, foff, flip_spec, SNR, show_H)
close all;
MIN_ABS_H = 1e-10;
drm_mode = 'B';
drm_bw = '10k';
[ofdm_drm_params, ofdm_spec_occ] = drm_params(drm_mode, drm_bw);
fs = 12000;
N = 256;
Ng = 64;
[carrier_pilot, phi_pilot, mag_pilot] = getRefFreq(drm_mode);
[carrier_time, phi_time, mag_time] = getRefTime(drm_mode);
[W_syms, W_pilots] = calcWiener(drm_mode, drm_bw);
filter_h = FIRCalcLowpass(0.25, 15);
N = ofdm_drm_params.nu;
Ng = ofdm_drm_params.ng;
symbols_per_frame = ofdm_drm_params.nspf;
symbols_to_delay = ofdm_drm_params.y;
frames_per_window = 2*ofdm_drm_params.y;
carriers = ofdm_spec_occ.kmin:ofdm_spec_occ.kmax;
carrier_indexes = c2i(N, carriers);
% Read wav file
[fsize fs4] = wavread(filename, 'size')
[fsize fs4] = wavread(filename, 'size');
[xwav, fs4, nbits] = wavread(filename, 0);
wav_numCh = fsize(2);
wav_size = fsize(1);
fs = fix(fs4/4);
isModePassband = 0;
if (wav_numCh == 1)
fprintf('Mode: Passband\n');
@@ -40,13 +50,6 @@ end
buf_recv = buffer();
buf_Z = buffer();
fileChunkSize = N;
fileCunkCounter = 0;
phi_xwav = 0;
filter_h = FIRCalcLowpass(0.25, 15);
filter_z = [];
fileRemain = wav_size;
% Timing coarse stuff
timingCoarse = struct('Z', 0, 'started', 0, 'sync_counter', 20, 'sync', 0, 'cp_off', 0, 'cp_off_', [], 'Nd', 0);
@@ -64,24 +67,8 @@ cfoFine = struct('Z', 0, 'started', 0, 'sync_counter', 20, 'sync', 0, 'f_err', 0
frameTiming = struct('Z', 0, 'started', 0, 'sync_counter', 20, 'sync', 0, 'kc_max', -1000, 'n', 0, 'n_max', 0);
% Equalization stuff
MIN_ABS_H = 1e-10;
equalizer = struct('Z', 0, 'started', 0, 'sync_counter', 20, 'sync', 0, 'sync_frame_num', 0, 'f_err', 1000, 'f_err_', [], 's', 0, 'm', 0, 'kk', 1, 'eps_abs_h', MIN_ABS_H);
[W_syms, W_pilots] = calcWiener(drm_mode, drm_bw);
H_syms = [];
H_pilots = [];
H_ = [];
df_track = 0;
df_track_ = [];
symbol_count = -1;
symbols_per_frame = ofdm_drm_params.nspf;
symbols_to_delay = ofdm_drm_params.y;
frames_per_window = 2*ofdm_drm_params.y;
H_gain_cell = cell (frames_per_window, 1);
H_raw = zeros(length(ofdm_spec_occ.kmin:ofdm_spec_occ.kmax),1);
carriers = ofdm_spec_occ.kmin:ofdm_spec_occ.kmax;
carrier_indexes = c2i(N, carriers);
fac_cell_list = ...
{
[],
@@ -101,6 +88,16 @@ fac_cell_list = ...
[]
};
filter_z = [];
fileChunkSize = N;
fileCunkCounter = 0;
phi_xwav = 0;
df_track = 0;
df_track_ = [];
symbol_count = -1;
fileRemain = wav_size;
while(fileRemain > fileChunkSize)
n0 = fileCunkCounter*fileChunkSize+1;
@@ -283,7 +280,12 @@ while(fileRemain > fileChunkSize)
if (~equalizer.started)
equalizer.started = 1;
H_gain_cell = cell (frames_per_window, 1);
H_raw = zeros(length(carriers),1);
fprintf('Channel estimation and symbol reception\n');
figure(100);
end
Z = transpose(buf_Z.read(N));
@@ -327,7 +329,6 @@ while(fileRemain > fileChunkSize)
equalizer.sync = 1;
equalizer.sync_frame_num = symbol_count;
fprintf('Enter fine tracking mode at frame %d\n', equalizer.sync_frame_num);
end
end