fading_en = 0;
hf_delay_ms = 2;
compare_with_c = 1;
- sample_rate_ppm = -1000;
+ sample_rate_ppm = -1500;
ssb_tx_filt = 0;
end
fading_en = 0;
hf_delay_ms = 2;
compare_with_c = 0;
- sample_rate_ppm = -1000;
+ sample_rate_ppm = -1500;
end
% Similar to AWGN - should be BER around 0.015 to 0.02
%ch_fdm_frame_log = resample(ch_fdm_frame_log, (1E6 + sample_rate_ppm), 1E6);
-ch_fdm_frame_log_out = zeros(1, length(ch_fdm_frame_log));
tin=1;
tout=1;
+ch_fdm_frame_log_out = zeros(1,length(ch_fdm_frame_log));
while tin < length(ch_fdm_frame_log)
t1 = floor(tin);
t2 = ceil(tin);
tin += 1+sample_rate_ppm/1E6;
%printf("tin: %f tout: %f f: %f\n", tin, tout, f);
end
-ch_fdm_frame_log = ch_fdm_frame_log_out;
+ch_fdm_frame_log = ch_fdm_frame_log_out(1:tout-1);
% Now run demod ----------------------------------------------------------------
stem_sig_and_error(9, 212, imag(rx_symb_log_c), imag(rx_symb_log - rx_symb_log_c), 'rx symb im', [1 n -1.5 1.5])
stem_sig_and_error(10, 111, rx_bits_log_c, rx_bits_log - rx_bits_log_c, 'rx bits', [1 length(rx_bits_log) -1.5 1.5])
- stem_sig_and_error(11, 111, f_est_log_c, f_est_log - f_est_log_c, 'f est', [1 length(f_est_log) min(f_est_log) max(f_est_log)])
+ stem_sig_and_error(11, 111, f_est_log_c - Fcentre - foff, f_est_log - f_est_log_c, 'f est', [1 length(f_est_log) -5 5])
stem_sig_and_error(12, 111, rx_timing_log_c, rx_timing_log_c - rx_timing_log, 'rx timing', [1 length(rx_timing_log) -M M])
check(tx_bits_log, tx_bits_log_c, 'tx_bits');
{
struct FDMDV *fdmdv = coh->fdmdv;
int r, c, i, ch_fdm_frame_index;
- COMP rx_fdm_frame_bb[COHPSK_M];
+ COMP rx_fdm_frame_bb[COHPSK_M+COHPSK_M/P];
COMP rx_baseband[COHPSK_NC*ND][COHPSK_M+COHPSK_M/P];
COMP rx_filt[COHPSK_NC*ND][P+1];
float env[NT*P], __attribute__((unused)) rx_timing;
/* Optional logging used for testing against Octave version */
if (coh->rx_baseband_log) {
+ assert(nin <= (COHPSK_M+COHPSK_M/P));
for(c=0; c<COHPSK_NC*ND; c++) {
for(i=0; i<nin; i++) {
coh->rx_baseband_log[c*coh->rx_baseband_log_col_sz + coh->rx_baseband_log_col_index + i] = rx_baseband[c][i];
#define FOFF 58.7
#define DFOFF (-0.5/(float)COHPSK_FS)
#define ESNODB 8
-#define PPM -1000
+#define PPM -1500
extern float pilots_coh[][PILOTS_NC];
nin_frame = COHPSK_SAMPLES_PER_FRAME;
ch_fdm_frame_log_index = 0;
+ /* --------------------------------------------------------*\
+ Demod
+ \*---------------------------------------------------------*/
+
for(f=0; f<FRAMES; f++) {
coh->frame = f;
//printf("nin_frame: %d\n", nin_frame);
- /* --------------------------------------------------------*\
- Demod
- \*---------------------------------------------------------*/
-
assert(ch_fdm_frame_log_index < COHPSK_M*NSYMROWPILOT*FRAMES);
tmp = nin_frame;
cohpsk_demod(coh, rx_bits, &reliable_sync_bit, &ch_fdm_frame_log_out[ch_fdm_frame_log_index], &nin_frame);