project:weathersonde:telemetry_receiving
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| project:weathersonde:telemetry_receiving [2013/09/17 00:16] – [conversion of byte stream into frames (packets)] pinky | project: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, | ||
| + | |||
| + | ===== 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 | ||
| + | |||
| + | ==== 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, | ||
| + | * 24B of FRAME_PAYLOAD_ECC, | ||
| + | |||
| + | |||
| + | ==== related links ==== | ||
| + | |||
| + | * [[http:// | ||