Changeset 8206

Show
Ignore:
Timestamp:
04/15/08 15:31:29
Author:
jcorgan
Message:

Merged r8195:8205 from jcorgan/ecc into trunk. Adds convolutional encoder
and decoder corresponding to the R=1/2, K=7 CCSDS standard ("Voyager").

This code is a GNU Radio wrapper around a 1995-era KA9Q portable-C
implementation, and is designed for continuous streaming data, not packets.

The encoder takes MSB packed bytes and outputs channel symbols 0 or 1.

The decoder uses soft-decision Viterbi decoding on a floating point stream of
(possibly noise corrupted) [1.0, 1.0] symbols, and outputs MSB packed
decoded bytes.

Benchmarking on a 2.16 GHz Intel Core 2 Duo shows 4.7 Mbps decoding rate at
100% CPU usage (single core). (There is a newer KA9Q library that implements
SIMD speed ups with correspondingly faster performance.)

The KA9Q library is placed into src/lib/viterbi. It could use some cleanup,
file/function renaming, and refactoring, or even replacement with the newer
libfec code that is available.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • gnuradio/trunk/config/grc_gnuradio_core.m4

    r7888 r8206  
    4747-I\${abs_top_builddir}/gnuradio-core/src/lib/filter \ 
    4848-I\${abs_top_srcdir}/gnuradio-core/src/lib/reed-solomon \ 
     49-I\${abs_top_srcdir}/gnuradio-core/src/lib/viterbi \ 
    4950-I\${abs_top_srcdir}/gnuradio-core/src/lib/io \ 
    5051-I\${abs_top_srcdir}/gnuradio-core/src/lib/g72x \ 
     
    9192        gnuradio-core/src/lib/missing/Makefile \ 
    9293        gnuradio-core/src/lib/reed-solomon/Makefile \ 
     94        gnuradio-core/src/lib/viterbi/Makefile \ 
    9395        gnuradio-core/src/lib/runtime/Makefile \ 
    9496        gnuradio-core/src/lib/swig/Makefile \ 
  • gnuradio/trunk/gnuradio-core/src/lib/Makefile.am

    r6044 r8206  
    2525 
    2626# We've got to build . before swig 
    27 SUBDIRS = missing runtime filter general gengen g72x reed-solomon io . swig 
     27SUBDIRS = missing runtime filter viterbi general gengen g72x reed-solomon io . swig 
    2828 
    2929# generate libgnuradio-core.la from the convenience libraries in subdirs 
     
    4040        filter/libfilter.la             \ 
    4141        g72x/libccitt.la                \ 
     42        viterbi/libviterbi.la           \ 
    4243        general/libgeneral.la           \ 
    4344        gengen/libgengen.la             \ 
  • gnuradio/trunk/gnuradio-core/src/lib/general/Makefile.am

    r8193 r8206  
    6060        gr_ctcss_squelch_ff.cc          \ 
    6161        gr_dd_mpsk_sync_cc.cc           \ 
     62        gr_decode_ccsds_27_fb.cc        \ 
    6263        gr_deinterleave.cc              \ 
    6364        gr_delay.cc                     \ 
     
    6667        gr_diff_phasor_cc.cc            \ 
    6768        gr_dpll_bb.cc                   \ 
     69        gr_encode_ccsds_27_bb.cc        \ 
    6870        gr_fake_channel_coder_pp.cc     \ 
    6971        gr_fast_atan2f.cc               \ 
     
    175177        qa_gr_math.cc 
    176178 
    177  
    178  
    179179grinclude_HEADERS =                     \ 
    180180        gr_agc_cc.h                     \ 
     
    200200        gr_count_bits.h                 \ 
    201201        gr_cpfsk_bc.h                   \ 
    202       gr_crc32.h                      \ 
     202      gr_crc32.h                      \ 
    203203        gr_ctcss_squelch_ff.h           \ 
    204204        gr_dd_mpsk_sync_cc.h            \ 
     205        gr_decode_ccsds_27_fb.h         \ 
    205206        gr_diff_decoder_bb.h            \ 
    206207        gr_diff_encoder_bb.h            \ 
     
    209210        gr_diff_phasor_cc.h             \ 
    210211        gr_dpll_bb.h                    \ 
     212        gr_encode_ccsds_27_bb.h         \ 
    211213        gr_expj.h                       \ 
    212214        gr_fake_channel_coder_pp.h      \ 
     
    359361        gr_ctcss_squelch_ff.i           \ 
    360362        gr_dd_mpsk_sync_cc.i            \ 
     363        gr_decode_ccsds_27_fb.i         \ 
    361364        gr_diff_decoder_bb.i            \ 
    362365        gr_diff_encoder_bb.i            \ 
     
    365368        gr_deinterleave.i               \ 
    366369        gr_delay.i                      \ 
     370        gr_encode_ccsds_27_bb.i         \ 
    367371        gr_fake_channel_coder_pp.i      \ 
    368372        gr_feedforward_agc_cc.i         \ 
  • gnuradio/trunk/gnuradio-core/src/lib/general/general.i

    r8193 r8206  
    132132#include <gr_repeat.h> 
    133133#include <gr_cpfsk_bc.h> 
     134#include <gr_encode_ccsds_27_bb.h> 
     135#include <gr_decode_ccsds_27_fb.h> 
    134136%} 
    135137 
     
    243245%include "gr_repeat.i" 
    244246%include "gr_cpfsk_bc.i" 
     247%include "gr_encode_ccsds_27_bb.i" 
     248%include "gr_decode_ccsds_27_fb.i" 
  • gnuradio/trunk/gnuradio-core/src/python/gnuradio/gr/Makefile.am

    r7730 r8206  
    5050        qa_argmax.py                    \ 
    5151        qa_bin_statistics.py            \ 
     52        qa_ecc_ccsds27.py               \ 
    5253        qa_cma_equalizer.py             \ 
    5354        qa_complex_to_xxx.py            \