Hello,
Mostafa's question was not about the Viterbi algorithm applied for
decoding convolutional codes but regarding the Viterbi algorithm used in
gr-gsm's demodulator inside of a receiver block. That is a separate
question and a valid one.
The Viterbi algorithm in the demodulator performs 'equalization'. In
GMSK modulation, the ideal MSK signal is filtered by the modulator's
Gaussian filter applied to the signal phase, which causes some
interference between consecutive symbols (this is called Inter-Symbol
Interference - ISI). Even more importantly a signal passes through a
radio channel, for which the impulse response changes constantly. Radio
propagation results in time-varying ISI, which lowers the symbols' SINR
(Signal Interference + Noise Ratio).
To counter the ISI, the (combined) channel impulse response (CIR) is
estimated, and the Viterbi algorithm does deconvolution of the received
signal and the CIR (there is a good introductory paper titled "How I
learned to love the trellis" by B.Sklar that explains that).
So the answer for Mostafa - gr-gsm uses Viterbi equalizer with
Ungerboeck metric. The metric is described in
G. Ungerboeck, "Adaptive maximum likelihood receiver for carrier
modulated data transmission systems" paper. Another good explanation is
in Bottomley; Chennakeshu "Unification of MLSE receivers and extension
to time-varying channels" paper.
Moreover, some simplifications are applied that are very specific for
MSK (some metric components are constant and can be discarded).
Most impact on the receiver for sure had "GSMsim A MATLAB Implementation
of a GSM Simulation Platform" by Arne Norre Ekstrøm & Jan H. Mikkelsen
(just google the title). There is even Matlab code in it that you can
find here:
https://github.com/aholtzma/GSMsim. They used the Viterbi
algorithm with Ungerboeck metric that they simplified. Those
simplifications are used in gr-gsm/lib/receiver/viterbi_detector.cc. The
code there looks strange because those are unrolled loops generated with
a Matlab/Octave script I've written
(
https://github.com/asriadi/airprobe/tree/master/viterbi_generator).
Burst synchronization of gr-gsm and channel impulse response estimation
are also taken from GSMsim. The authors made a mistake in the
synchronization part, so it had to be corrected.
In case you still have questions - ask.
Best Regards,
Piotr Krysik
W dniu 26.04.2025 o 04:34, Nikos Balkanas pisze:
>
en.wikipedia.org/wiki/Viterbi_decoder <
https://en.wikipedia.org/
> wiki/Viterbi_decoder>
>
> HTH
> Nikos
>
> On Sat, Apr 26, 2025 at 12:33 AM Mostafa Alizadeh
> <
m.aliz...@gmail.com <mailto:
m.aliz...@gmail.com>> wrote:
>
> Hi
>
> I am looking for the reference for the demodulator used in
> the gr-gsm. I need it to explain everything about the GMSK
> Viterbi equalization. It is using the channel in the code. I
> searched a lot for it and I could not find any similar
> approaches in the references.
>
> Best,
> Mostafa
>
> --
> You received this message because you are subscribed to the
> Google Groups "gr-gsm" group.
> To unsubscribe from this group and stop receiving emails
> from it, send an email to gr-
>
gsm+uns...@googlegroups.com <mailto:
gr-
>
gsm+uns...@googlegroups.com>.
> c7a9bca73e97n%
40googlegroups.com <
https://groups.google.com/
> d/msgid/gr-gsm/1b537316-3c8a-4466-ab5a-
> c7a9bca73e97n%
40googlegroups.com?
> utm_medium=email&utm_source=footer>.
>
> --
> You received this message because you are subscribed to the Google
> Groups "gr-gsm" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to
gr-gsm+un...@googlegroups.com <mailto:
gr-
>
gsm+uns...@googlegroups.com>.
> CAAxXO2H2MXCygfjS73xaQOpcBSMyjSVfadV%3DdhhwVTk0bP9JZw%
40mail.gmail.com
> <
https://groups.google.com/d/msgid/gr-gsm/
> CAAxXO2H2MXCygfjS73xaQOpcBSMyjSVfadV%3DdhhwVTk0bP9JZw%
40mail.gmail.com?
> utm_medium=email&utm_source=footer>.