[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:
+30
-29
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user