Steve,
Thank you very much for taking the time to answer my question in detail. I
will dig out the papers you reference and take a read.
Re the Gray map, that all makes perfect sense now with the hindsight of your
explanation!
There are clearly a lot of things to learn in the source code of WSJT-X.
James (VK3JPK)
> On 30 Jul 2019, at 1:37 am, Steven Franke via wsjt-devel
> wrote:
>
> Hi James,
>
>> The source code in question is lines 168 through 215 of lib/ft8/ft8b.f90
>> (Git tag wsjtx-x 2.1). This source code appears to implement a “soft
>> demapper” that takes groups of 1, 2 or 3 successive symbol observations and
>> turns these into groups of 3, 6 or 9 log likelihood ratios that are
>> subsequently consumed by one of the LDPC decoders. As part of the demapping
>> process, the Gray code permutation applied to symbols at the transmitter is
>> removed.
>>
>> Is there a textbook or specific journal/conference papers that describe how
>> this demapper works? I can figure out the algorithm being used, but I am
>> looking for an explanation as to why that algorithm generates a good
>> approximation to the LLR for FT8’s 8-GFSK modulation, and what specific
>> channel impairments it is trying to deal with.
>
> The code that you referenced implements noncoherent sequence estimation for
> groups of symbols of length, N, for N = 1, 2, 3. When the channel happens to
> be coherent over times that span several symbols this technique can
> significantly improve sensitivity.
>
> A reference that discusses this technique is:
>
> Simon, M.K., and D. Divsalar, “Maximum-Likelihood Block Detection of
> Noncoherent Continuous Phase Modulation,” IEEE Trans. on Communications, Vol.
> 41, No. 1, January 1993, p.90.
>
> As you might expect, there are dozens of articles on the topic — but this one
> is a good overview.
>
> After sequence estimation has determined a soft metric for each of the 2^N
> possible symbol sequences, the next step is to derive soft bit metrics (“log
> likelihoods”) for each of the 3*N bits that are conveyed by the sequence of
> length N.
>
> There are many ways to do this and no one way is best for all possible
> channels. We use a max-log approximation to the numerator and denominator of
> the metric given in equation (17) of this reference:
>
> Souryal, M. R., E. G. Larsson, B. Peric and B. R. Vojcic, “Soft-Decision
> Metrics for Coded Orthogonal Signaling in Symmetric Alpha-Stable Noise,” IEEE
> Transactions on Signal Processing, Vol. 56, No. 1, January 2008, p. 266.
>
>> I was also wondering how the specific Gray code mapping in FT8 was chosen?
>> It is clearly not the “reflected binary code” that normally passes for a
>> Gray code, so clearly it is something else that I don’t yet understand.
>
> The Gray mapping is defined such that the bit sequences associated with
> neighboring tones differ in only one position.
>
> With reference to subroutine genft8.f90, note that the 8 successive entries
> in the graymap vector are indexed by indices formed from 3 successive bits,
> and each graymap vector element represents a tone.
>
> The graymap vector is defined like this:
>
> integer graymap(0:7)
> data graymap/0,1,3,2,5,6,4,7/
>
> For example, graymap(6)=4. This means that the bit sequence 110 (6) is mapped
> to tone 4.
>
> Here’s the correspondence between tones and bits that results from the
> graymap definition given above:
>
> tone bits
> 0000
> 1001
> 2011
> 3010
> 4110
> 5100
> 6101
> 7111
>
> I hope that this addresses your questions.
>
> Steve k9an
>
>>
>> James (VK3JPK)
>>
>>
>>
>> ___
>> wsjt-devel mailing list
>> wsjt-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/wsjt-devel
>
>
>
> ___
> wsjt-devel mailing list
> wsjt-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wsjt-devel
___
wsjt-devel mailing list
wsjt-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wsjt-devel