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/09 15:21] – [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:// |
project/weathersonde/telemetry_receiving.txt · Last modified: 2013/11/20 18:25 by pinky