From cf14cd5c7c4262c74399f4816c7013f1ef5c8561 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Tue, 31 Dec 2013 03:05:19 +0000 Subject: [PATCH] separate enc/mod/dec git-svn-id: https://svn.code.sf.net/p/freetel/code@1351 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2-dev/octave/ldpcenc.m | 62 +++++++++++++++++++++++++------------ 1 file changed, 43 insertions(+), 19 deletions(-) diff --git a/codec2-dev/octave/ldpcenc.m b/codec2-dev/octave/ldpcenc.m index d32cc7da..4a1e28f4 100644 --- a/codec2-dev/octave/ldpcenc.m +++ b/codec2-dev/octave/ldpcenc.m @@ -30,22 +30,23 @@ demod_type = 0; decoder_type = 0; max_iterations = 100; EsNo = 10; -Eprob = 0.18; +Eprob = 0.15; vocoderframesize = 52; nvocoderframes = 8; +nbitspermodemframe = 72; code_param = ldpc_init(rate, framesize, modulation, mod_order, mapping); data = []; r = []; -% Encode a bunch of frames +% Encoder: Generate simulated vocoder data, insert UW, and LPDC encode --------------- Nframes = 100; uw = [1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0]; -% repeat same codeword frame for now to ease testing +% repeat same simulated vocoder data to ease testing vd = round( rand( 1, vocoderframesize*nvocoderframes) ); d = insert_uw(vd, uw); @@ -65,32 +66,56 @@ fclose(fc); %printf("framesize: %d data_bits_per_frame: %d code_bits_per_frame: %d\n", ... % framesize, code_param.data_bits_per_frame, code_param.code_bits_per_frame); -% rx simulation (separate later) +printf("Encoded %d LDPC frames\n", Nframes); -mod_uw = build_mod_uw(uw, 2*length(vd)/length(uw)); +% Modulator: Modulate to QPSK symbols ------------------------------------------ lpackedcodeword=length(packedcodeword); fc=fopen("codeword.bin","rb"); -lpackedmodem = 72/8; -mod_codeword = zeros(1, code_param.code_bits_per_frame/2); -lmod_codeword = code_param.code_bits_per_frame/2; - -Terrs = 0; Ferrs = 0; Tbits = 0; Tframes = 0; nerr = []; -corr = []; n = 0; -sync_state = 0; sync_count = 0; +fm=fopen("modcodeword.bin","wb"); +lpackedmodem = nbitspermodemframe/8; +n = 0; [packedmodem, count] = fread(fc,lpackedmodem,"uchar"); while (count == lpackedmodem) n++; unpackedmodem = unpackmsb(packedmodem); - j = 1; + ii = 1; for i=1:2:length(unpackedmodem) - mod_unpackedmodem(j) = qpsk_mod(unpackedmodem(i:i+1)); - j += 1; + mod_unpackedmodem(ii) = qpsk_mod(unpackedmodem(i:i+1)); + mod_unpackedmodem_float32(i) = real(mod_unpackedmodem(ii)); + mod_unpackedmodem_float32(i+1) = imag(mod_unpackedmodem(ii)); + ii += 1; end - erasures = rand(1,length(mod_unpackedmodem))