aboutsummaryrefslogtreecommitdiffstats
path: root/GSM/GSMCommon.cpp
diff options
context:
space:
mode:
authorTom Tsou <tom.tsou@ettus.com>2016-03-06 03:08:01 -0800
committerTom Tsou <tom.tsou@ettus.com>2016-03-06 20:29:27 -0800
commitd325343ecca5c6484eeda5ebf9e230c810ea4b82 (patch)
treee6440fa36c9772be786d3a707879dcfecab0e789 /GSM/GSMCommon.cpp
parent5cd70dc4ec6a658c2835c805a8b941351c90ccb0 (diff)
EDGE: Add 8-PSK modulator and demodulator
Setup correlator and detection process similar to the GMSK receiver chain. Require 4 SPS sampling on both Rx and Tx paths as 1 SPS sampling adds too much distoration for 8-PSK recovery. Core receiver operations still run at 1 SPS with the exception of fractional delay filtering, which runs at the higher rate. Perform linear equalization to handle the Gaussian pulse induced ISI. The fixed impulse response used for equalizer tap calculation consists of combined EDGE pulse shape filter and effects of the downsampling filter. Note that the non-adaptive equalizer corrects for modulation induced band limiting and does not account for or compensate for fading channel effects. Signed-off-by: Tom Tsou <tom.tsou@ettus.com>
Diffstat (limited to 'GSM/GSMCommon.cpp')
-rw-r--r--GSM/GSMCommon.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/GSM/GSMCommon.cpp b/GSM/GSMCommon.cpp
index 87f5ab2..3b5331f 100644
--- a/GSM/GSMCommon.cpp
+++ b/GSM/GSMCommon.cpp
@@ -41,6 +41,17 @@ const BitVector GSM::gTrainingSequence[] = {
BitVector("11101111000100101110111100"),
};
+const BitVector GSM::gEdgeTrainingSequence[] = {
+ BitVector("111111001111111001111001001001111111111111001111111111001111111001111001001001"),
+ BitVector("111111001111001001111001001001111001001001001111111111001111001001111001001001"),
+ BitVector("111001111111111111001001001111001001001111001111111001111111111111001001001111"),
+ BitVector("111001111111111001001001001111001001111001111111111001111111111001001001001111"),
+ BitVector("111111111001001111001111001001001111111001111111111111111001001111001111001001"),
+ BitVector("111001111111001001001111001111001001111111111111111001111111001001001111001111"),
+ BitVector("001111001111111001001001001001111001001111111111001111001111111001001001001001"),
+ BitVector("001001001111001001001001111111111001111111001111001001001111001001001001111111"),
+};
+
const BitVector GSM::gDummyBurst("0001111101101110110000010100100111000001001000100000001111100011100010111000101110001010111010010100011001100111001111010011111000100101111101010000");
const BitVector GSM::gRACHSynchSequence("01001011011111111001100110101010001111000");