diff --git a/README_data.md b/README_data.md index 3ceccb46..49fb9e3e 100644 --- a/README_data.md +++ b/README_data.md @@ -146,7 +146,7 @@ These modes use an OFDM modem with powerful LDPC codes and are designed for send | DATAC3 | 500 | 321 | 126 | (2048,1024) | 3.19 | 74/100 at 0dB | Forward link data (low SNR) | | DATAC4 | 250 | 87 | 56 | (1472,448) | 5.17 | 90/100 at -4dB | Forward link data (low SNR) | | DATAC13 | 200 | 64 | 14 | (384,128) | 2.0 | 90/100 at -4dB | Reverse link ACK packets (low SNR) | -| DATAC14 | 250 | 58 | 3 | (112,56) | 0.69 | 90/100 at -4dB | Reverse link ACK packets (low SNR) | +| DATAC14 | 250 | 58 | 3 | (112,56) | 0.69 | 90/100 at -2dB | Reverse link ACK packets (low SNR) | Notes: 1. 16 bits (2 bytes) per frame are reserved for a 16 bit CRC, e.g. for `datac3` we have 128 byte frames, and 128-2=126 bytes/frame of payload data. @@ -246,7 +246,7 @@ This command line demonstrates the effect: ``` Try adjusting `--clip` and `No` argument of `ch` (noise level) for different modes. Note the SNR estimates returned from `freedv_data_raw_rx` compared to the SNR from the channel simulator `ch`. You will notice clipping also increases the RMS power and reduces the PER for a given channel noise power. CPAPR will also reduce with clipping enabled. -The following plots illustrate the SNR estimates versus actual channel SNR with and without compression (clipping). Not that even with the uncompressed waveform there is a small offset of around 1dB, possibly due to modem implementation loss or noise in the frequency, phase, or timing estimators. +The following plots illustrate the SNR estimates versus actual channel SNR with and without compression (clipping). Note that even with the uncompressed waveform there is a small offset of around 1dB, possibly due to modem implementation loss or noise in the frequency, phase, or timing estimators. ![](doc/snrest_snr_ctx.png) ![](doc/snrest_snr_ctxc.png) diff --git a/doc/c_tx_comp.png b/doc/c_tx_comp.png index 5d781c05..a9504796 100644 Binary files a/doc/c_tx_comp.png and b/doc/c_tx_comp.png differ diff --git a/doc/c_tx_comp_thruput.png b/doc/c_tx_comp_thruput.png index 0288f7aa..f4010ca9 100644 Binary files a/doc/c_tx_comp_thruput.png and b/doc/c_tx_comp_thruput.png differ diff --git a/octave/ofdm_mode.m b/octave/ofdm_mode.m index a56edace..d88f960b 100644 --- a/octave/ofdm_mode.m +++ b/octave/ofdm_mode.m @@ -144,7 +144,7 @@ function config = ofdm_init_mode(mode="700D") config.tx_uw(end-24+1:end) = [1 1 0 0 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0]; config.amp_est_mode = 1; config.EsNodB = 3; config.state_machine = "data"; - config.amp_scale = 2.5*300E3; config.clip_gain1 = 1.2; config.clip_gain2 = 1.0; + config.amp_scale = 2*300E3; config.clip_gain1 = 2; config.clip_gain2 = 1; config.txbpf_width_Hz = 400; elseif strcmp(mode,"1") Ns=5; config.Np=10; Tcp=0; Tframe = 0.1; Ts = Tframe/Ns; Nc = 1; diff --git a/src/ofdm_mode.c b/src/ofdm_mode.c index f92d2884..df0b4f5e 100644 --- a/src/ofdm_mode.c +++ b/src/ofdm_mode.c @@ -247,8 +247,8 @@ void ofdm_init_mode(char mode[], struct OFDM_CONFIG *config) { memcpy(config->tx_uw, uw, sizeof(uw)); memcpy(&config->tx_uw[config->nuwbits - sizeof(uw)], uw, sizeof(uw)); config->data_mode = "streaming"; - config->amp_scale = 2.5 * 300E3; - config->clip_gain1 = 1.2; + config->amp_scale = 2.0 * 300E3; + config->clip_gain1 = 2.0; config->clip_gain2 = 1.0; config->rx_bpf_en = true; } else {