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 
> <wsjt-devel@lists.sourceforge.net> 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
> 0    000
> 1    001
> 2    011
> 3    010
> 4    110
> 5    100
> 6    101
> 7    111
> 
> 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

Reply via email to