[amsat-bb] Re: ARRISSat Reception 14.45 UTC

Phil Karn karn at philkarn.net
Tue Apr 12 03:21:16 PDT 2011


> In low power mode, the transmission is started clean
> every time. A single telemetry data frame is only 256
> bytes so about 4 seconds of data. After the 1 frame, the
> transmitter is left on until the interleaver is emptied.
>

Excellent. I don't think anybody ever told me this. I'm glad somebody
noticed the problem.

Let's see...256 bytes is 2K bits. At rate 1/2, that encodes to 4K channel
symbols that take 4.096 sec to send, just as you said.

The very first symbol of the frame hits the modulator right away at T=0, but
the last symbol from the front of the frame won't come out until about T =
16.384 sec, the interleaver span.

4.096 sec after that (at T=20.48 sec elapsed time) the last symbol from the
end of the frame emerges. So you take 20.48 sec, start to finish, to
transmit 2k bits of user data for an effective data rate of 100 bps (vs 500
bps in continuous mode). And that's only counting the time the transmitter
is on.

Does the transmitter then go off at 20.48 sec, or does another frame start?
Where does the 40-60 sec interval come from?

During that 20.48 sec, 20,480 BPSK channel symbols are sent. But only 4K of
them actually represent FEC-encoded user data; the other 16K symbols
represent known (i.e., idle flag) bits and do not help decode the user data.

10*log10(4096/20480) is about -7 dB. I.e., a system that can operate at an
Eb/No of about 5.5 dB now requires an overall Eb/No of 12.5 dB. That's about
3 dB worse than uncoded BPSK...

On the other hand, it should still be somewhat more fade-resistant than
that...

Other than the obvious use of block interleaving, it is possible to improve
the efficiency of convolutional interleaving (and coding) on short
transmissions with "tail biting". You arrange the encoded symbols in a ring
and walk around it once. Then you pick an arbitrary point in the receive
buffer to start the Viterbi decoder, run it a few constraint lengths to get
it synchronized, and then run it around the ring once to actually decode the
packet. The tail of the packet gets interleaved with the head so you don't
have to fill and drain it with padding. It's actually just a way to
construct a block code (or interleaver) out of a convolutional structure.

You see why I wanted a command to turn interleaving on and off?


More information about the AMSAT-BB mailing list