aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/modem_codec_frame_design.odsbin29872 -> 44305 bytes
-rw-r--r--octave/ofdm_lib.m2
-rw-r--r--octave/ofdm_mode.m22
-rw-r--r--octave/ofdm_rx.m4
4 files changed, 25 insertions, 3 deletions
diff --git a/doc/modem_codec_frame_design.ods b/doc/modem_codec_frame_design.ods
index e6cf1c7..ab51e22 100644
--- a/doc/modem_codec_frame_design.ods
+++ b/doc/modem_codec_frame_design.ods
Binary files differ
diff --git a/octave/ofdm_lib.m b/octave/ofdm_lib.m
index 2d3a16e..e4ae35a 100644
--- a/octave/ofdm_lib.m
+++ b/octave/ofdm_lib.m
@@ -1254,7 +1254,7 @@ endfunction
% with acquisition
function [rx delay_samples] = ofdm_rx_filter(states, mode, rx)
delay_samples = 0;
- if strcmp(mode,"datac4") || strcmp(mode,"datac13")
+ if strcmp(mode,"datac4") || strcmp(mode,"datac13") || strcmp(mode,"datac14")
w_centre = mean(states.w); centre_norm = w_centre/(2*pi);
n_coeffs = 100;
cutoff_Hz = 400; cutoff_norm = cutoff_Hz/states.Fs;
diff --git a/octave/ofdm_mode.m b/octave/ofdm_mode.m
index 074fd84..da08bcd 100644
--- a/octave/ofdm_mode.m
+++ b/octave/ofdm_mode.m
@@ -134,6 +134,18 @@ function config = ofdm_init_mode(mode="700D")
config.state_machine = "data";
config.amp_scale = 2.5*300E3; config.clip_gain1 = 1.2; config.clip_gain2 = 1.0;
config.txbpf_width_Hz = 400;
+ elseif strcmp(mode,"datac14")
+ Ns=5; config.Np=6; Tcp = 0.006; Ts = 0.020; Nc = 3; config.data_mode = "streaming";
+ config.edge_pilots = 0;
+ config.Ntxtbits = 0; config.Nuwbits = 48; config.bad_uw_errors = 18;
+ config.ftwindow_width = 80; config.timing_mx_thresh = 0.45;
+ config.tx_uw = zeros(1,config.Nuwbits);
+ config.tx_uw(1:24) = [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.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.txbpf_width_Hz = 400;
elseif strcmp(mode,"1")
Ns=5; config.Np=10; Tcp=0; Tframe = 0.1; Ts = Tframe/Ns; Nc = 1;
else
@@ -231,9 +243,17 @@ function [code_param Nbitspercodecframe Ncodecframespermodemframe] = codec_to_fr
code_param.coded_bits_per_frame = code_param.data_bits_per_frame + code_param.ldpc_parity_bits_per_frame;
code_param.coded_syms_per_frame = code_param.coded_bits_per_frame/code_param.bits_per_symbol;
end
+ if strcmp(mode, "datac14")
+ load HRA_56_56.txt
+ code_param = ldpc_init_user(HRA_56_56, modulation, mod_order, mapping);
+ code_param.data_bits_per_frame = 40;
+ code_param.coded_bits_per_frame = code_param.data_bits_per_frame + code_param.ldpc_parity_bits_per_frame;
+ code_param.coded_syms_per_frame = code_param.coded_bits_per_frame/code_param.bits_per_symbol;
+ end
if strcmp(mode, "datac0") || strcmp(mode, "datac1") || strcmp(mode, "datac3") ...
|| strcmp(mode, "datac4") || strcmp(mode, "qam16c1") ...
- || strcmp(mode, "qam16c2") || strcmp(mode, "datac5") || strcmp(mode, "datac13")
+ || strcmp(mode, "qam16c2") || strcmp(mode, "datac5") || strcmp(mode, "datac13") ...
+ || strcmp(mode, "datac14")
printf("ldpc_data_bits_per_frame = %d\n", code_param.ldpc_data_bits_per_frame);
printf("ldpc_coded_bits_per_frame = %d\n", code_param.ldpc_coded_bits_per_frame);
printf("ldpc_parity_bits_per_frame = %d\n", code_param.ldpc_parity_bits_per_frame);
diff --git a/octave/ofdm_rx.m b/octave/ofdm_rx.m
index fea4b33..6dbe8f6 100644
--- a/octave/ofdm_rx.m
+++ b/octave/ofdm_rx.m
@@ -83,7 +83,9 @@ function ofdm_rx(filename, mode="700D", varargin)
Nerrs = 0; rx_uw = zeros(1,states.Nuwbits);
% main loop ----------------------------------------------------------------
-
+
+ rx = ofdm_rx_filter(states, mode, rx);
+
f = 1;
while(prx < Nsam)