diff options
| -rw-r--r-- | doc/modem_codec_frame_design.ods | bin | 29872 -> 44305 bytes | |||
| -rw-r--r-- | octave/ofdm_lib.m | 2 | ||||
| -rw-r--r-- | octave/ofdm_mode.m | 22 | ||||
| -rw-r--r-- | octave/ofdm_rx.m | 4 |
4 files changed, 25 insertions, 3 deletions
diff --git a/doc/modem_codec_frame_design.ods b/doc/modem_codec_frame_design.ods Binary files differindex e6cf1c7..ab51e22 100644 --- a/doc/modem_codec_frame_design.ods +++ b/doc/modem_codec_frame_design.ods 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) |
