by Dave Collins, AD7JT and George Heron, N2APB Using DSP filtering techniques to isolate and process Morse code for both receive and transmit in the Amateur Radio bands … without a PC! by Dave Collins, AD7JT and George Heron, N2APB 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Agenda Session I Introduction Transmit Channel Q & A Session II Receive Channel Results/Conclusions Keyboard Scan Code Processing ASCII to Morse LCD Graphic Display EEPROM Macro Playback Phase Modulator USB Option Card Flash Drive Audio to Transceiver Audio from Transceiver PGA and ADC Goertzel Filter Mark Grouping Morse to ASCII LCD Graphic Display USB Option Card Flash Drive AGC Level Tune Bandpass Character Word Fence Tweaking Goertzel Tweaking 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference WHY? NUE-PSK Modem = Standalone digital mode operation … no PC required! Introduced ~ 4 years ago … PSK31, then other modes Users clamored for CW support, but … Classic performance problems with “CW Readers” NUE-PSK Modem has a “leg up”: DSP processing Nice spectral Display 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference System Configuration 128 x 64 GRAPHIC DISPLAY PS/2 KEYBOARD ADC DAC Audio Out PTT Audio In ASCII to OOK OOK to ASCII Goertzel Filter NUE-PSK DIGITAL MODEM dsPIC33FJ128MC706 PGA SSB XCVR CWID Encode dsPIC33F128MC706 @ 40 MIPS – Quadrature Encoder Interface used for incremental encoder sensing 12-BIT ADC sampled at 8000 sps, signed fractional encoding DAC is a MCP4922, PGA is a MCP6S21 Modem interfaces to transceiver with modulated, base-band audio signals. CW is transmitted and received as SSB signals. Transceiver operates in SSB or Digital mode, NOT CW MODE. Modulation is done with on-off delivery of an audio tone. Received audio is digitized at 8,000 samples per second A Goertzel filter reconstructs the On-Off Keying signal. Characters are translated to ASCII and displayed 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Keyboard-to-Morse conversion Simple speed (wpm) control “Perfect” DIT-DAH and SPACE timing Tone generation with existing PSK modulator Goertzel filter to detect the tone Morse-to-ASCII conversion Automatic speed detection & tracking Automatic DIT-DAH weighting adjustments Manual tweaking to accommodate imperfect “fists” Tuning algorithm and indication Tune with AFC (simplifies tuning and tracks drifters) Bandwidth control 128 x 64 GRAPHIC DISPLAY PS/2 KEYBOARD ADC DAC Audio Out PTT Audio In ASCII to OOK OOK to ASCII Goertzel Filter NUE-PSK DIGITAL MODEM dsPIC33FJ128MC706 PGA SSB XCVR CWID Encode Task List Now, what’s perfect CW? 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference INTER-CHARACTER SPACE C INTER-ELEMENT SPACES MARK -------- DASH DOT DASH DOT SPACE ---- Length -------- - - - - 3 - - - - Tcw - 1 - Tcw - 1 - Tcw - 1 - Tcw - - - - 3 - - - - Tcw - 1 - Tcw - 1 - Tcw - - - - 3 - - - - Tcw MARK = Key down, SPACE = Key up Tcw is the basic unit of timing for CW Inter-word SPACE = 7 x Tcw (minimum) 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Words Per Minute (wpm) calculations Standard word = “PARIS ” Contains exactly 50 Tcw including the ending Inter-word SPACE Therefore, wpm = 1200 / Tcw where Tcw is expressed in milliseconds 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Transmit Channel Keyboard Scan Code Processing ASCII to Morse Phase Modulator Audio to Transceiver EEPROM Macro Playback LCD Graphic Display USB Option Card Flash Drive 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Keyboard Scan Code Processing ASCII to Morse LCD Graphic Display EEPROM Macro Playback Phase Modulator USB Option Card Flash Drive Audio to Transceiver Standard PS/2 keyboard interface Forced Caps Lock mode Upper-case letters for normal text Lower-case letters for prosigns Hot-keys for entering <My Call> and <Their Call> Support for Serial Numbers Upper-case letters followed by 3 x Tcw SPACEs Lower-case letters followed by 1 x Tcw SPACEs 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Keyboard Scan Code Processing ASCII to Morse LCD Graphic Display EEPROM Macro Playback Phase Modulator USB Option Card Flash Drive Audio to Transceiver Seven, separate CW macros Up to 255 Characters each Tags for <TXON>, <MYCALL>, <THEIRCALL>, <TXOFF>, and <SERIALNO> Flexible save, restore, and edit functions 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Keyboard Scan Code Processing ASCII to Morse LCD Graphic Display EEPROM Macro Playback Phase Modulator USB Option Card Flash Drive Audio to Transceiver Four lines of text are displayed with line-scrolling. Operator controls wpm (Tune) and side tone (Ctrl-Tune). Displayed characters are over lined until transmitted. Text is transmitted only as full words. Prosigns are displayed as lower-case letters. 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Keyboard Scan Code Processing ASCII to Morse LCD Graphic Display EEPROM Macro Playback Phase Modulator USB Option Card Flash Drive Audio to Transceiver C 0x43: 10 01 10 01 11 00 00 00 D A S H D O T D A S H D O T 2 T C W E N D Little state machine drives Phase modulation, number of clock ticks between state changes a function of WPM ASCII to Morse Look Up Table Each element followed by 1 Tcw SPACE Uses PSK CWID feature 8,000 output samples per second 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Keyboard Scan Code Processing ASCII to Morse LCD Graphic Display EEPROM Macro Playback Phase Modulator USB Option Card Flash Drive Audio to Transceiver Questions? 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
End of Session I
2011 TAPR-ARRL Digital Communications Conference Session II Receive Channel Results/Conclusions Q & A 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Receive Channel Audio from Transceiver PGA and ADC Goertzel Filter Mark Grouping Morse to ASCII LCD Graphic Display USB Option Card Flash Drive AGC Level Tune Bandpass Character Word Fence Tweaking Goertzel Tweaking ADC output at 8000 sps, Goertzel output depends on chosen Goertzel bandwidth at 8000/(Goertzel block length sps) 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Audio from Transceiver PGA and ADC Goertzel Filter Mark Grouping Morse to ASCII LCD Graphic Display USB Option Card Flash Drive AGC Level Tune Bandpass Character Word Fence Tweaking Goertzel Tweaking g_coef = 2 * cos(2 * PI * center_frequency / 8000) . . . . . . . . . . . . . . . . . . g_sample = (((double) f_samp)/32768.0); q0 = g_coef*q1 - q2 + g_sample; q2 = q1; q1 = q0; if(++g_sample_count >= cw_n){ g_sample_count = 0; cw_n = cw_bwa[cw_bwa_index]; g_current = q1*q1 + q2*q2 - q1*q2*g_coef; q2 = 0; q1 = 0; g_coeff -1 q1 q2 q0 g_sample Some filtering by ignoring transitions less than 5 ms. Specialized DFT algorithm Used for DTMF decoding Very simple to implement Very fast to execute f_sample is the raw, digitized input signal g_coef determines the pass band center frequency The band pass is the sampling frequency (8000) divided by the block length (cw_n) g_current is the filter output 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Audio from Transceiver PGA and ADC Goertzel Filter Mark Grouping Morse to ASCII LCD Graphic Display USB Option Card Flash Drive AGC Level Tune Bandpass Character Word Fence Tweaking Goertzel Tweaking Represents the amount of energy in the pass band Two 1000-point running averages of MARK and SPACE levels to set and track the fence. Haven’t played with this yet. Ra = (new sample + 999 Ra)/1000 Pass band defaults to 200 Hz – limit 1200/4x5 = 1200/20 = 60 wpm Level (Threshold) Bandwidth Operator can select between 100 Hz and 1000 Hz in eight steps Narrower the pass band, the longer the Goertzel calculation takes Threshold defines MARK/SPACE “fence” Normally calculated as average between recognized MARKs and SPACEs Operator can override the calculations 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Audio from Transceiver PGA and ADC Goertzel Filter Mark Grouping Morse to ASCII LCD Graphic Display USB Option Card Flash Drive AGC Level Tune Bandpass Character Word Fence Tweaking Goertzel Tweaking Block Length (cw_n) Bandwidth (Hz) Time/Block (ms) 8 1000 1.00 10 800 1.25 16 500 2.00 20 400 2.50 32 250 4.00 40 200 5.00 50 160 64 125 8.00 80 100 10.00 Block length (cw_n) must be an integral factor of the sampling rate The modem’s bandwidth is bound by the transceiver’s bandwidth Tcw should be at least 4 times the Time per Block Therefore: Maximum wpm = 1200 / ( 4 x Time/Block) [ 300 – 30 wpm ] Default gives 1200/5 = 60 wpm max 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Audio from Transceiver PGA and ADC Goertzel Filter Mark Grouping Morse to ASCII LCD Graphic Display USB Option Card Flash Drive AGC Level Tune Bandpass Character Word Fence Tweaking Goertzel Tweaking Represents the amount of energy in the pass band Pass band defaults to 200 Hz Acquire (End) g_coef = 1.600102 g_coef = 1.614280 g_coef = 2 * cos(2 * PI * center_frequency / 8000) 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Audio from Transceiver PGA and ADC Goertzel Filter Mark Grouping Morse to ASCII LCD Graphic Display USB Option Card Flash Drive AGC Level Tune Bandpass Character Word Fence Tweaking Goertzel Tweaking Two counters are maintained to measure the durations of MARKs and SPACEs in milliseconds The result is a series of MARK groups (up to 8 per group) representing the Morse codes that are then translated to ASCII for display CW modulates time – not waveforms MARK and SPACE lengths are averaged Fences are calculated MARKs are grouped 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Audio from Transceiver PGA and ADC Goertzel Filter Mark Grouping Morse to ASCII LCD Graphic Display USB Option Card Flash Drive AGC Level Tune Bandpass Character Word Fence Tweaking Goertzel Tweaking MARKs only come in two flavors Tcw = (MARK average) / 2 Duplicate MARK lengths are limited The DIT-DAH fence is the average MARK length plus the average mean deviation Most MARKs are generated by keyers so they tend to be very consistent. Averages are computed over 32 MARKs. A skew limit limits the number of consecutive same-type MARKS to include in the averages. 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Audio from Transceiver PGA and ADC Goertzel Filter Mark Grouping Morse to ASCII LCD Graphic Display USB Option Card Flash Drive AGC Level Tune Bandpass Character Word Fence Tweaking Goertzel Tweaking SPACEs come in three flavors Any SPACE ends a MARK When a SPACE length exceeds the character fence, the MARK group is processed When a SPACE duration exceeds the word fence, a space code is inserted in the text. Flavors: inter-element (1 Tcw), inter-character (3 Tcw), inter-word (7+ Tcw) 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Audio from Transceiver PGA and ADC Goertzel Filter Mark Grouping Morse to ASCII LCD Graphic Display USB Option Card Flash Drive AGC Level Tune Bandpass Character Word Fence Tweaking Goertzel Tweaking The MARK Tcw is the basis for SPACE fences Character SPACE lengths are averaged Character fence = 2 x inter- element average Word fence = 2.5 x character fence 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Audio from Transceiver PGA and ADC Goertzel Filter Mark Grouping Morse to ASCII LCD Graphic Display USB Option Card Flash Drive AGC Level Tune Bandpass Character Word Fence Tweaking Goertzel Tweaking Lower limit on word multiple = character multiple + 0.5 Remember, Tcw comes from MARKs and multiples come from SPACEs so changes in either area will affect the actual fences. Operator can override SPACE fence calculations Can vary Tcw multipliers by tenths Will lock until Enter is pressed Receive continues during tweaking 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Audio from Transceiver PGA and ADC Goertzel Filter Mark Grouping Morse to ASCII LCD Graphic Display USB Option Card Flash Drive AGC Level Tune Bandpass Character Word Fence Tweaking Goertzel Tweaking Index Factor ‘C’ Value 1 2 4 3 8 16 5 32 6 64 7 128 0000000000111111111122222222223 0123456789012345678901234567890 *ETIANMSURWDKGOHVF*L*PJBXCYZQ** Sum of products for ‘C’ = 25 This works for 1, 2, 3, and 4 Morse elements Mark groups with 5, 6, 7, and 8 Morse elements are translated with brute-force Prosigns are translated to two, lower-case letters Group overflow generates a ‘#’ Double buffered, each with up to 8 marks. Characters in string are in order of increasing frequency in English text 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Audio from Transceiver PGA and ADC Goertzel Filter Mark Grouping Morse to ASCII LCD Graphic Display USB Option Card Flash Drive AGC Level Tune Bandpass Character Word Fence Tweaking Goertzel Tweaking Questions? 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Conclusions Goertzel filter outperforms expectations Tuning at the modem is a must Word SPACE multiple most useful tweak Zkew least useful tweak A good aid for CW contesting Using it to check your “fist” can be humbling Zkew function is very valuable to have 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Future Project Candidates Keyboard-less configuration … Paddle input to built-in keyer: ORed with keyboard and macro input ORed with Goertzel filter output Display-less configuration (Morse audio) Logging to flash drive in a standard format Incorporate modem functions in SDR Cube … in progress! More? The ultimate “Portable Digital Station” Modem is a great development platform. Uses 86% (36018/44032) of the instruction program memory and 68% (11216/16K) of the data memory – but no attempt has been made to conserve either. (The original “Portable PSK” vision from 2001) 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Summary Receive Transmit Audio from Transceiver PGA and ADC Goertzel Filter Mark Grouping Morse to ASCII LCD Graphic Display USB Option Card Flash Drive AGC Level Tune Bandpass Character Word Fence Tweaking Goertzel Tweaking Keyboard Scan Code Processing ASCII to Morse LCD Graphic Display EEPROM Macro Playback Phase Modulator USB Option Card Flash Drive Audio to Transceiver 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference
2011 TAPR-ARRL Digital Communications Conference Thank you! Dave Collins, AD7JT 22111 N San Ramon Drive Sun City West, AZ 85375 dmc@dnbrealty.com George Heron, N2APB 2419 Feather Mae Ct Forest Hill, MD 21050 n2apb@MidnightDesignSolutions.com 16-SEP-2011 2011 TAPR-ARRL Digital Communications Conference