Hi Håken!
That sounds very exciting! I haven't had time to look at your source code, I'd especially
be interested in your synchronization methods and your choice of LDPC codes (we're deep
into the "short code length for limited latency" vs "code effectiveness" tradeoff area here!)
You're using ChaCha20, which is a stream cipher, right? That's interesting because if you
lose a single ciphertext block, say, to a single uncorrectable bit error after FEC, then
you need a way of continuing to work. How does that work? Do you keep multiple Key/Nonce
pairs around and round-robin between a larger number of ChaCha20 instances, to give you
some leeway to continue to decode OPUS while the receiving end asks for a keystream
reinitialization?
To kick off a bit more discussion, let me quickly answer your questions to the best of my
abilities:
> 1. *Channel modeling:* Are the GNU Radio fading channel models (Rayleigh/Rician)
> representative of real-world mobile conditions, or should I expect different results
> on-air?
They are what they say on the box :) It's hard to say whether Rayleigh or Rician fading
describes the channels you are aiming at. Intercontinental HF links are different than
indoors 5.8 GHz channels!
So, you need to define your use case first.
> 2. *LDPC implementation:* I'm using hard-decision decoding for simplicity. For those
> who've implemented soft-decision LDPC in GNU Radio, what's the practical performance
> gain (measured, not theoretical)?
That depends on very many factors, mostly on decoder design, block length and maximum
iteration count.
I'm assuming you're just using the belief propagation sum-product decoder that is in
gr-fec? That does do soft decoding, you'd need to pass in soft-bit RX values, though.
It's really been a while since I thought about FSKs higher than 2-FSK (that aren't
differnetial).
Gut feeling here says that 4-FSK it's a pretty suboptimal use of signal power.
I suspect that the first thing you'd do is drop the FSK approach there, and go for a
modulation scheme that allows for soft-bits where, at least in AWGN, the entropy per bit
is a bit better behaved? But I'm really swimming dangerously close to the edge of my
channel decoder knowledge there.
> 3. *Frequency offset:* The ±1 kHz sensitivity is possible concerning.
Is it? What carrier frequencies are you aiming at? What are your synchronization options?
Let's start with some back-of-envelop calculations here: You're aiming at a 8000 b/s rate,
using a r=2/3 code that's 12000 b/s code, using 8-FSK, that's 4 kSym/s.
Unless you're overly wasteful with your FSK spacing, that's a rather narrow channel, and
tolerating 1/4 of the symbol rate as frequency offset is rather phenomenally good!
Hence, recommendation to describe your current frequency synchronization in more detail.
You're clearly doing something (else much less than a quarter-symbol rate frequency error
should lead to breakdowns) right already!
> Has anyone
> implemented effective AFC for FSK in GNU Radio? Recommendations for libraries or
> approaches?
Depends on what you're currently doing, and what your framing, pilot, preamble, and system
synchronization structure (is this just one-way? Or can both ends agree on corrections?) are.
> 4. *Performance validation:* How do simulation results typically compare to hardware
> testing in your experience?
I think you'll realize that the only possible answer to this is "it depends" :D
> What factors cause the biggest discrepancies?
The things you don't expect :) Sorry! This is a bit broad. As said, synchronization and
system aspects are often more relevant than textbook knowledge would suggest, but I
clearly don't know what background you're doing this from, and hence, what you've covered
already.
Best,
Marcus
No comments:
Post a Comment