MarkF Senior Heliman Location: Palo Alto, CA
| Hi, W.Pasman!
As I made quite clear in the link and in the code I posted, this is the invention paper! The authors are extremely modest with their title (i.e. ... Evaluating ... FQPSK), but this is, in fact, a seminal research paper that reports on the invention of EFQPSK! The waveform diagrams are shown in the paper?!?
Now, if you want to learn more about Feher's original FQPSK (which is more complex to implement, and is less efficient to code, while requiring greater signal bandwidth in its unfiltered form), you can pick up a copy of one of his books, like Wireless Digital Communications: Modulation and Spread Spectrum Applications, or his Advanced Digital Communications: Systems and Signal Processing.
If you want to learn about FQPSK-B, the link I gave earlier to the IRIG spec is the best that I've seen - the only way to learn more is to actually buy a (no-doubt very expensive) license from Feher (I emailed Feher about getting an individual/research license for FQPSK-B, but he never responded). When I asked the technology transfer folks at NASA (independent from my communication with the authors of the paper) about a MATLAB implementation of an FQPSK-B receiver they've developed (i.e. code which is ultra-slow, but is used for reference purposes), it was more than $50,000, and that still didn't include Feher's license! Yipes! So, that's why I'm using EFQPSK.
As far as telephone modems go, I've shipped something like twenty different custom modems at three different firms (including at one point the modems in every machine Apple was shipping), so I'm pretty familiar with how they work. The problem is that these modems are block-coded, so almost all the techniques they use are "frame-based", if you will. You can't emphasize enough the importance of these block-level coding schemes. In one of M.K. Simon's follow-up papers on EFQPSK, he reports a six dB gain for the same bit error rate by using block-level error coding (which is an astonishing improvement). By the way, one of the key benefits of these codes is that they aren't just frame-based, they are multi-frame based. In modems, after the block-level codes have been added to each block/frame, an interleaver is then used to scramble up the bits between multiple blocks, so that sequential symbols originate from many different blocks. As a result, a single error burst will trash bits that originally came from multiple blocks, but only a few bits from any individual block, thus preventing the errors from exceeding the ability of the block-level error coding from correcting the errors.
That's why I mentioned that if you choose not to go with frame-based communication, you lose most of the advances that have been made in data communications in the last two decades! Fortunately, EFQPSK is one very notable exception, where it's inherently just a better modulation type! The only other non block-level technique used by modems that is of potential interest is so-called Viterbi, or trellis decoding, also known as iterative decoding. In this technique, the receiver has a multi-symbol history that it uses (typically four or more symbols long). Instead of making decisions on a symbol-by-symbol basis, it uses statistical probability to determine which of the possible decodings is most likely for the symbol history (meaning that it would be examining 16 possible data sequences in parallel in the case of a four symbol decode history). While methods like this can significantly improve the bit error rate, they also significantly increase latency.
That's one reason why I'm continuing with the frame-based solution - I intend to experiment with some of these techniques.
Cheers!
MarkF |