User Tools

Site Tools


project:weathersonde:telemetry_receiving

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
project:weathersonde:telemetry_receiving [2013/08/12 22:15] pinkyproject:weathersonde:telemetry_receiving [2013/11/20 18:25] (current) – [conversion of demodulated signal into bite stream] pinky
Line 1: Line 1:
 +====== Telemetry receiving ======
  
 +This page describes how acquire telemetry from Vaisala weather radio sonde RS92. It comprises demodulation, descrambling, and conversion of bite stream to bytes and frames. Detailed description of packet structure is available in [[telemetry_decoding]].
 +
 +===== Demodulation =====
 +
 +  * radiosode type: RS92-SGPD
 +  * modulation: GFSK - 4800 baud
 +
 +GFSK block from GNURadio can be used to demodulate this signal. Custom block are used for data decoding.
 +
 +===== Decoding =====
 +
 +==== conversion of demodulated signal into bite stream ====
 +  * demodulated data stream contains symbols
 +  * 2 adjescent symbols represent one bite of data
 +  * symbols to bites mapping (Manchester code is used):
 +    * 10 -> 0
 +    * 01 -> 1
 +    * 00, 11 -> invalid (error in reception or stream is shifted by one symbol)
 +
 +  Data stream atructure (symbols)
 +               2 start symbols
 +               ||
 +  ...sSsSsSsS0110sSsSsSsSsSsSsSsS0110sSsSsSsSsSsSsSsS0110sSsSsSsS...
 +                    16 data      ||
 +                    symbols      2 stop symbols
 +
 +==== conversion of bite stream into byte stream ====
 +  * bite stream have structure identical to 8bit asynchronous serial protocol
 +    * 1 start bite (0), 8 data bites (LSB first), 1 stop bite (1)
 +
 +  Data stream atructure (bites)
 +          Start bite
 +          |
 +  ...xxxx10xxxxxxxx10xxxxxxxx10xxxx...
 +            8 data |
 +            bits   Stop bite
 +            LSB first
 +
 +  * removing synchronization bits allow us create stream of bytes
 +
 +==== conversion of byte stream into frames (packets) ====
 +  * byte stream is dividen into frames 240B long
 +  * each frame starts with predefined byte sequence
 + 
 +  Frame start pattern (8B)
 +  |
 +  SSSSSSSSDDD....DDD
 +
 +  * frame have attached Reed-solomon correction code, RS(255,231)
 +  * frame is divided into 4 subblocks
 +    * each subblock have different, but fixed length
 +
 +==== Frame structure 240B ====
 +
 +^ offset (B) ^ lenght (B) ^ name ^ (content) description ^
 +| 0 | 6 | FRAME_HDR | (0x2A 0x2A 0x2A 0x2A 0x2A 0x10) frame header |
 +| 6 | 210 | FRAME_PAYLOAD| frame payload data |
 +| 216 | 24 | FRAME_PAYLOAD_ECC | RS(255, 231) Reed-Solomon correction code for frame payload |
 +
 +
 +==== Reed-Solomon ====
 +
 +It si common RS(255, 231) code.
 +
 +  * symbol size: 8
 +  * generating polynomial: 0x11d
 +  * first consecutive root: 0
 +  * correction code is computed only for frame payload.
 +  * byte order is reverser
 +  * RS block is prepend with zeroes
 +
 +RS blob structure:
 +  * padding (21 x 0x00)
 +  * FRAME_PAYLOAD, byte order is reversed (firt byte in frame payload is last byte for RS evaluation)
 +  * 24B of FRAME_PAYLOAD_ECC, byte order is reversed (firt byte of RS in frame is last byte for RS evaluation)
 +
 +
 +==== related links ====
 +
 +  * [[http://ams.confex.com/ams/pdfpapers/69226.pdf]]