aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrowe67 <[email protected]>2024-05-01 16:59:08 +0930
committerDavid Rowe <[email protected]>2024-05-01 16:59:08 +0930
commitd321ccf46fa12b62a6a229749f2deb9701b8a805 (patch)
tree693a798f2266c496792eff6102f705ecfe866ee3
parent2841e6c50982d559831a21cccddd74a69e2798f0 (diff)
parent7f6188ccce691d8d93a1dd98ab86a9f0b23ffe36 (diff)
Merge branch 'dr-datac14' into dr-freedata-001
-rw-r--r--README_data.md4
-rw-r--r--doc/c_tx_comp.pngbin36292 -> 39874 bytes
-rw-r--r--doc/c_tx_comp_thruput.pngbin32796 -> 34357 bytes
-rw-r--r--octave/ofdm_mode.m2
-rw-r--r--src/ofdm_mode.c4
5 files changed, 5 insertions, 5 deletions
diff --git a/README_data.md b/README_data.md
index 3ceccb4..49fb9e3 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 5d781c0..a950479 100644
--- a/doc/c_tx_comp.png
+++ b/doc/c_tx_comp.png
Binary files differ
diff --git a/doc/c_tx_comp_thruput.png b/doc/c_tx_comp_thruput.png
index 0288f7a..f4010ca 100644
--- a/doc/c_tx_comp_thruput.png
+++ b/doc/c_tx_comp_thruput.png
Binary files differ
diff --git a/octave/ofdm_mode.m b/octave/ofdm_mode.m
index a56edac..d88f960 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 f92d288..df0b4f5 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 {