From: drowe67 Date: Sat, 17 Sep 2016 01:48:36 +0000 (+0000) Subject: Bringing README_fsk.txt up to date, examples now work, but some open TODO questions X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=45dfd7b367050c0c601a3a9df778ae0186d9c93f;p=freetel-svn-tracking.git Bringing README_fsk.txt up to date, examples now work, but some open TODO questions git-svn-id: https://svn.code.sf.net/p/freetel/code@2872 01035d8c-6547-0410-b346-abe4f91aad63 --- diff --git a/codec2-dev/README_fsk.txt b/codec2-dev/README_fsk.txt index 1e63af10..00531935 100644 --- a/codec2-dev/README_fsk.txt +++ b/codec2-dev/README_fsk.txt @@ -4,8 +4,8 @@ David Rowe Created Jan 2016 A FSK modem with a non-coherent demodulator. Performance is within a -fraction of a dB of ideal. The demodulator can estimate and track -frequency offsets. +fraction of a dB of ideal. The demodulator can estimate the tone +frequencies and track drift. Credits ------- @@ -18,18 +18,40 @@ Quickstart Built as part of codec2-dev, see README for build instructions. -1. Using a random bit stream input generate 100 bit/s FSK and play out - speaker: +1. Using 10 test frames as a source of bits, generate 2FSK using a + 8000 Hz sample rate, at 100 symbols/s (== 100 bits/ for 2FSK), with + two frequencies of 1200 and 2400 Hz, and stream via stdout to + "play" out speaker: $ cd build_linux/src - $ /fsk_get_test_bits - 10 | ./fsk_mod 8000 100 1200 2400 - - | play -t raw -r 8000 -s -2 + $ ./fsk_get_test_bits - 10 | ./fsk_mod 2 8000 100 1200 2400 - - | play -t raw -r 8000 -s -2 - -2. Check the bit error rate of 100 frames of 1200 bit/s FSK: + Notes: + i) TODO explain structure of test frame and how many bits are in it. - $ ./fsk_get_test_bits - 100 | ./fsk_mod 9600 1200 1200 2400 - - | ./fsk_demod 9600 1200 - - | ./fsk_put_test_bits - +2. Measure the bit error rate of 100 frames of 100 bit/s 2FSK: + + $ ./fsk_get_test_bits - 100 | ./fsk_mod 2 8000 100 1200 2400 - - | ./fsk_demod 2 0 8000 100 - - | ./fsk_put_test_bits - + FSK BER 0.003108, bits tested 39899, bit errors 124 + + Notes: + i) The "P" parameter is don't care when mode is 2 or 4, so we set it to 0 + ii) TODO: waht are the source of errors? Can we remove them with no noise? + +3. Measure the bit error rate of 100 frames at 1200 bits/s, samples at 9600 Hz: + + $ ./fsk_get_test_bits - 100 | ./fsk_mod 2 9600 1200 1200 2400 - - | ./fsk_demod 2X 8 9600 1200 - - | ./fsk_put_test_bits - FSK BER 0.000000, bits tested 9499, bit errors 0 -3. Automatically check C implementation against Octave using a variety of test conditions and + Notes: i) The 2X option is used in the demod, which narrows the + window for parameter estimation window. In 2X/4X mode + the P parameter is used so we set it to 8 (TODO: explain why) + ii) TODO explain Restrictions to bit rate ie integer P, so we changed Fs to suit? + +4. (TODO High bit rate example like 115k project Horus) + + +5. Automatically check C implementation against Octave using a variety of test conditions and channel impairments. $ cd octave