Nick, there is no change required in the modules that perform viterbi decoding in order to implement either MLSD in ISI or (coherent) GMSK demod. The whole idea around gr-trellis was to disentangle the trellis aspect of a modulation scheme from the details of the modulation/channel.
So, if you want to implement general (coherent) CPM demodulation, all you have to do is to represent the CPM signal as a FSM followed by a memoryless modulator. Look up the paper by Bixio Rimoldi: A decomposition approach to CPM, or take a look at my notes on this at http://www.eecs.umich.edu/~anastas/docs/cpm.pdf You will only need to write an additional constructor for the fsm class that takes the CPM parameters and produces the appropriate FSM. Similarly, you'll need to write a piece of code that takes the incoming waveform and does the metrics calculations (eithar as a separate block as in trellis-metrics or inside the viterbi block as in trellis-viterbi-combined). If you want to work on this general problem for a generic CPM modulation I can help you. Adding ISI to this is a piece of cake: you need to combine the two trellises into either a combined trellis or to use hard/soft decisions from one to feed the other detector. Achilleas ------------------- Date: Tue, 3 Feb 2009 02:43:01 +0000 From: Nick Foster <bistro...@hotmail.com> Subject: [Discuss-gnuradio] extending gr-trellis to perform Viterbi MLSD on GMSK To: gnuradio <discuss-gnuradio@gnu.org> Message-ID: <col104-w83311cfd96ff650fd0de58a6...@phx.gbl> Content-Type: text/plain; charset="windows-1252" Hi all, I've spent a few days familiarizing myself with gr-trellis as best as I can, and I'm interested in extending the gr-trellis module to handle Viterbi equalization of ISI channels for GMSK demodulation. I saw Toby Oliver's thread in Sept. '06 (http://www.mail-archive.com/discuss-gnuradio@gnu.org/msg05615.html) discussing a possible modification with Achilleas Anastasopoulos but never saw anything checked in as a result. I'm just looking to use the trellis code to demodulate low-BT GMSK in a more optimal way than the current Gnuradio implementation, and I have similar questions to Toby's: * How should I go about modifying make_isi_lookup() to add support for two-dimensional modulations? What format is trellis expecting? * I see the test_viterbi_equalization1.py file, which appears to do MLSD on an ISI channel for 4-PAM (and other one-dimensional modulations). Am I correct that if make_isi_lookup() is modified to support quadrature modulations, simply changing the modulation type in this example would be enough to make it work? I guess I'm asking more specifically if trellis.viterbi_combined_X will support an ISI lookup table for PSK modulations without modification. * Is there a good reason I should avoid tackling this problem? I'd hate to be duplicating someone else's work in this area, or barking up the wrong tree. For further information, I've written a packet-based AIS decoder for Gnuradio, and I'm disappointed at the quality of the data coming out of the GMSK demodulator. It's 9600 symbols per second @ BT=0.3, so there's enough ISI that I think MLSD would provide significant reduction in observed BER. Besides, it seems like it would be a useful capability to have added to Gnuradio. Any other tips anyone has that might help me in doing this would certainly be welcome! Nick _______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org http://lists.gnu.org/mailman/listinfo/discuss-gnuradio