aboutsummaryrefslogtreecommitdiffstats
path: root/Transceiver52M/sigProcLib.h
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 /Transceiver52M/sigProcLib.h
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 'Transceiver52M/sigProcLib.h')
-rw-r--r--Transceiver52M/sigProcLib.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/Transceiver52M/sigProcLib.h b/Transceiver52M/sigProcLib.h
index 8ff8246..2dcc97d 100644
--- a/Transceiver52M/sigProcLib.h
+++ b/Transceiver52M/sigProcLib.h
@@ -104,6 +104,13 @@ signalVector *modulateBurst(const BitVector &wBurst,
int guardPeriodLength,
int sps, bool emptyPulse = false);
+/** 8-PSK modulate a burst of bits */
+signalVector *modulateEdgeBurst(const BitVector &bits,
+ int sps, bool emptyPulse = false);
+
+/** Generate a EDGE burst with random payload - 4 SPS (625 samples) only */
+signalVector *generateEdgeBurst(int tsc);
+
/** Sinc function */
float sinc(float x);
@@ -202,6 +209,33 @@ int analyzeTrafficBurst(signalVector &rxBurst,
unsigned maxTOA);
/**
+ EDGE burst detector
+ @param burst The received GSM burst of interest
+
+ @param detectThreshold The threshold that the received burst's post-correlator SNR is compared against to determine validity.
+ @param sps The number of samples per GSM symbol.
+ @param amplitude The estimated amplitude of received TSC burst.
+ @param TOA The estimate time-of-arrival of received TSC burst.
+ @param maxTOA The maximum expected time-of-arrival
+ @return positive if threshold value is reached, negative on error, zero otherwise
+*/
+int detectEdgeBurst(signalVector &burst,
+ unsigned TSC,
+ float detectThreshold,
+ int sps,
+ complex &amplitude,
+ float &TOA,
+ unsigned maxTOA);
+
+/**
+ Downsample 4 SPS to 1 SPS using a polyphase filterbank
+ @param burst Input burst of at least 624 symbols
+ @return Decimated signal vector of 156 symbols
+*/
+
+signalVector *downsampleBurst(signalVector &burst);
+
+/**
Decimate a vector.
@param wVector The vector of interest.
@param factor Decimation factor.
@@ -220,4 +254,16 @@ signalVector *decimateVector(signalVector &wVector, size_t factor);
*/
SoftVector *demodulateBurst(signalVector &rxBurst, int sps,
complex channel, float TOA);
+
+/**
+ Demodulate 8-PSK EDGE burst with soft symbol ooutput
+ @param rxBurst The burst to be demodulated.
+ @param sps The number of samples per GSM symbol.
+ @param channel The amplitude estimate of the received burst.
+ @param TOA The time-of-arrival of the received burst.
+ @return The demodulated bit sequence.
+*/
+SoftVector *demodEdgeBurst(signalVector &rxBurst, int sps,
+ complex channel, float TOA);
+
#endif /* SIGPROCLIB_H */