MATCHED-FILTER RADIO RECEIVER
20200351132 ยท 2020-11-05
Assignee
Inventors
Cpc classification
H04L27/0008
ELECTRICITY
International classification
Abstract
A digital radio receiver has a matched filter bank of filter modules for receiving phase- or frequency-modulated radio signals. Each module cross-correlates a sampled signal with a respective multi-symbol filter sequence, using a plurality of samples in each symbol period. The matched filter bank calculates first values (z.sub.n(1)), for respective symbol periods, of a cross-correlation of the sampled signal with a first complex exponential function defined at sample points over one symbol period, and calculates second values (z.sub.n(1)), for the respective symbol periods, of a cross-correlation of the sampled signal with a second, different, complex exponential function. A set of the filter modules cross-correlates the sampled signal with their respective filter sequences using an algorithm that takes, as input, the first values (z.sub.n(1)) for symbol periods at which the respective filter sequence has a first value, and the second values (z.sub.n(1)) for symbol periods at which the filter sequence has a second, different, value.
Claims
1. A digital radio receiver adapted to receive phase- or frequency-modulated radio signals, wherein: the receiver comprises a matched filter bank, having a plurality of filter modules, for demodulating a sampled signal, each filter module corresponding to a respective filter sequence that spans a plurality of symbol periods, and being configured to cross-correlate the sampled signal with a representation of the filter sequence, the cross-correlation involving a plurality of samples at each of the plurality of symbol periods; the matched filter bank is configured to calculate and store first data representing values, for respective discrete symbol periods, of a cross-correlation of the sampled signal with a first predetermined complex exponential function defined at a plurality of sample points over one symbol period, and to calculate and store second data representing values, for the respective discrete symbol periods, of a cross-correlation of the sampled signal with a second predetermined complex exponential function defined at a plurality of sample points over one symbol period, the second complex exponential function being different from the first complex exponential function; and at least two of the filter modules are configured to cross-correlate the sampled signal with representations of their respective filter sequences using an algorithm that takes, as input, values from the first data corresponding to one or more symbol periods at which the respective filter sequence has a first value, and values from the second data corresponding to one or more symbol periods at which the respective filter sequence has a second value, different from the first value.
2. The digital radio receiver of claim 1, wherein the matched filter bank is implemented as a hardware digital logic circuit.
3. The digital radio receiver of claim 1, wherein each filter module has a common design.
4. The digital radio receiver of claim 1, configured to use maximum-likelihood estimation to demodulate the signal.
5. The digital radio receiver of claim 1, wherein the matched filter bank is configured to evaluate the cross-correlations with the first and second complex exponential functions in steps equal to a symbol period.
6. The digital radio receiver of claim 1, wherein each of the first and second predetermined complex exponential functions is a natural exponential function having an exponent that is a linear function of time.
7. The digital radio receiver of claim 6, wherein each of the first and second predetermined complex exponential functions represents a uniform rotation in the complex plane.
8. The digital radio receiver of claim 7, wherein the first predetermined complex exponential function is exp{jht} and the second predetermined complex exponential function is exp{jht}, where j={square root over (1)}, h is a modulation index of the sampled signal, and t[0,1) is time scaled over one symbol period.
9. The digital radio receiver of claim 1, wherein the matched filter bank comprises a filter module for every possible filter sequence of a particular length.
10. The digital radio receiver of claim 1, wherein each of the filter modules uses the first data or the second data, or both the first data and the second data, when correlating a plurality of symbol periods in the sampled signal with a representation of its respective filter sequence.
11. The digital radio receiver of claim 1, wherein said algorithm takes, as input, values from the first data corresponding to every symbol period at which the respective filter sequence has a first value, and values from the second data corresponding to every symbol period at which the respective filter sequence has the second value.
12. The digital radio receiver of claim 1, wherein said algorithm applies a rotation to each of the input values from the first and second data, the rotation being non-zero for at least some of the input values.
13. The digital radio receiver of claim 1, A digital radio receiver as claimed in any preceding claim, wherein said algorithm multiplies each input value by exp{jhs}, or by exp{jhs}, where s depends on the difference between the number of one bits and the number of zero bits in the filter sequence preceding the symbol period to which the input value corresponds, and where j={square root over (1)}, and h is a modulation index of the sampled signal.
14. The digital radio receiver of claim 13, wherein said algorithm performs a summation operation of the rotated input values over the whole filter sequence.
15. The digital radio receiver of claim 1, configured to calculate a value during a first cross-correlation operation, for a particular filter sequence, for a first position in the sampled signal, and to use said value when determining a second cross-correlation value, for a second filter sequence, for a second position in the sampled signal.
16. The digital radio receiver of claim 15, wherein the second position is offset in time from the first position by a number of symbol periods, and wherein the first filter sequence and the second filter sequence contain a common contiguous sub-sequence comprising at least two symbols, the position of the sub-sequence in the second filter sequence being offset from the position of the sub-sequence in the first filter sequence by said number of symbol periods.
17. A method of demodulating a received phase- or frequency-modulated radio signal, the method comprising: generating a sampled signal from the received radio signal, comprising a plurality of signal samples in each of a succession of symbol periods; calculating first data representing values, for respective discrete symbol periods, of a cross-correlation of the sampled signal with a first predetermined complex exponential function defined at a plurality of sample points over one symbol period; calculating second data representing values, for the respective discrete symbol periods, of a cross-correlation of the sampled signal with a second predetermined complex exponential function defined at a plurality of sample points over one symbol period, the second complex exponential function being different from the first complex exponential function; for each of a plurality of filter sequences spanning a plurality of symbol periods, cross-correlating the sampled signal with a representation of the respective filter sequence using an algorithm that takes, as input, values from the first data corresponding to one or more symbol periods at which the filter sequence has a first value, and values from the second data corresponding to one or more symbol periods at which the filter sequence has a second value, different from the first value; and using results of the cross-correlations for the plurality of filter sequences to demodulate the signal.
18. The method of claim 17, wherein the radio signal is modulated using a modulation scheme in which a signal representing a current symbol period depends on values of one or more preceding symbols, in addition to the current symbol.
19. The method of claim 18, wherein the radio signal is modulated using binary frequency-shift keying (BFSK), continuous-phase frequency-shift keying (CPFSK), Gaussian frequency-shift keying (GFSK), minimum-shift keying (MSK), differential phase-shift keying (DPSK), offset quadrature phase-shift keying (OQPSK), or continuous phase modulation (CPM).
20. A digital radio receiver adapted to receive phase- or frequency-modulated radio signals, and being configured to: determine a first cross-correlation value between a received signal and a representation of a first filter sequence, for a first position in the received signal; and use a value calculated during the first cross-correlation when determining a second cross-correlation value between the received signal and a representation of a second filter sequence, for a second position in the received signal, wherein the second position is offset from the first position by a number of symbol periods, and wherein the second filter sequence contains a contiguous sub-sequence of the first filter sequence, offset within the second filter sequence, relative to the position of the sub-sequence within the first filter sequence, by said number of symbol periods.
21-33. (canceled)
Description
[0059] Certain preferred embodiments of the invention will now be described, by way of example only, with reference to the accompanying drawings, in which:
[0060]
[0061]
[0062]
[0063] The complex baseband samples are fed into a frequency correction block 2, which performs complex rotation on the samples to compensate for any carrier-frequency offset, based on outputs from a frequency estimator 3 and from a double correlator unit 4.
[0064] The complex baseband samples are also fed to a double correlator unit 4 which performs an initial frequency offset as well as timing recovery and frame synchronization, by cross-correlating the received signal against a stored template, which corresponds to a fixed part of the preamble of any data packet that is intended for this radio receiver 1. The correlation is performed every sample. This timing information from the double correlator unit 4 is output to the frequency correction block 2 and to a matched filter bank 5. The frequency estimate needs to be relatively accurate (e.g., to within around 10 kHz) in to avoid significant sensitivity degradation.
[0065] The matched filter bank 5, in addition to the timing information, also receives the frequency-corrected samples from the frequency correction block 2. The matched filter bank 5 contains 2.sup.K unique filters, each K bits long. In one particular example, K=5, so there are 32 filters, each five bits long, covering all possible 5-bit sequences; however, K may of course have other values in other embodiments. Each filter uses the timing information to carry out a complex cross-correlation operation between a respective bit pattern and the received signal, as described in more detail below. The matched filter bank 5 outputs 2.sup.K complex correlation coefficients, one for each filter.
[0066] These complex coefficients are output to a magnitude comparison block 6, which computes the real-valued squared modulus of each coefficient and compares them to identify the largest coefficient. The magnitude comparison block 6 outputs the index, [0 . . . K], corresponding to the filter that best matches the received signal. These correlations are non-coherent, meaning that no tracking of phase is required.
[0067] The matched filter bank 5 performs correlations at the bit rate of the received signal, so the magnitude comparison block 6 outputs one index every bit period. This means that every bit is considered at K different bit periods, over a sliding window. Where K=5, information about a specific bit is obtained five times. K is preferably odd, and so a majority vote block 7 can determine whether it should be decoded as a 0 or a 1, based on whether a majority of the K indices from the magnitude comparison block 6 correspond to a 0 or a 1 at the relevant bit position. This voting approach is described in more detail in WO 2014/167318, by the present applicant, the entire contents of which are incorporated herein by reference. This majority voting has been found to improved sensitivity by around 1 dB, compared with considering each bit position just once.
[0068] The majority vote block 7 outputs a demodulated bit value at each bit period.
[0069] The complex coefficients from the matched filter bank 5 are also sent to the frequency estimator 3, which uses them to estimate any frequency drift. The frequency estimator 3 uses (i) the correlation coefficients, (ii) the maximum index from the magnitude comparison block 6, and (iii) the demodulated output bit stream, to estimate the relative phase between two time instances, for which there have been an equal number of 0 and 1 bits between the two time instances, as described in WO 2014/167318. This frequency information is used by the frequency correction block 2 on an on-going basis. This is necessary because frequency may drift over time due to oscillator instability in the transmitter and/or the receiver 1. However, it is generally has a more minor effect on the behaviour of the frequency correction block 2 than does the timing information output by the double correlator 4.
[0070] The output bit stream can then be processed further by the radio receiver 1, or some other component or device, as appropriate.
[0071] The behaviour of the matched filter bank (MFB) 5 will now be explained in more detail, assuming the filter lengths to be K bits long (which may equal five bits in some embodiments).
[0072] In general, a frequency shift keying (FSK) signal, with modulation index h, and oversampling ratio R, can be defined as:
where n indicates the current bit position, and r[0, R1] indexes the current sample offset, from the symbol's timing anchor. Assuming the received signal is binary-FSK modulated, the value .sub.k, for each k between 0 and n, represents the sign (i.e., 1 or 1) of the instantaneous phase shift corresponding to the k.sup.th bit in the bit stream, bit.sub.k; it is formally defined as .sub.k2.bit.sub.k1. The sum inside the exponential represents the accumulated phase offset of all the symbols leading up to the current symbol, accumulated over the whole bit stream thus far. P.sub.x is the power at x.sub.0.
[0073] If the signals were encoded using 4-FSK, instead of binary-FSK, the P.sub.k would take values in the set {1.5, 0.5, +0.5, +1.5}, depending on the phase shift of the k.sup.th bit in the bit stream, instead of {1, 1}. The following explanation assumes 2-FSK; however, the same underlying approach can be adapted to n-FSK modulation or to other modulation types.
[0074] The received signal is then given by
y.sub.nR+r=hx.sub.nR+r+v.sub.nR+r
where h is a complex number representing the channel gain and phase, and v.sub.nR+r is a noise term.
[0075] The noncoherent MFB 5 detects this received signal, by noncoherently correlating it with 2.sup.K possible filters that have coefficients corresponding to the modulated signal for all possible K-bit sequences. In some cases, the transmitted signal may employ pulse-shaping, so that the model in equation (1) does not apply. For example, if it is a received Bluetooth Low Energy signal, it will be encoded using GFSK, in which the phase is Gaussian filtered. However, it is still possible for the coefficients of the MFB 5 in the receiver 1 to be based on equation (1) and successfully demodulate such a signal.
[0076] The output of the MFB 5, at symbol time n, for a filter using fixed bit sequence b={b.sub.0, b.sub.1, b.sub.K1}, where the b.sub.i's here are the signs of the actual bitsi.e., representing the bits {0, 1} as the values {1, 1} respectivelyof the particular filter, is given by
[0077] (The inner sum term over ID, is defined to be zero when k=0.) The particular bit sequence b that maximizes |d.sub.n(b)|.sup.2 is the noncoherent maximum likelihood estimate. This is determined by the magnitude comparison block 6.
[0078] A naive calculation of d.sub.n(b), for each b, would have complexity O(KR). The total complexity for the entire MFB, if implemented naively, would therefore be O(KR.2.sup.K).
[0079] However, the MFB 5, embodying the invention, is implemented more efficiently than this, based on the following insights.
[0080] Define
for positive values of k, and define
s.sub.(1)0
in the special case of k=1.
[0081] Each value s.sub.k represents the sum of the signs of k bits for a particular matched filter. A set of s.sub.k, for k between 0 and K1, can easily be calculated as required, or pre-computed and stored, for each filter.
[0082] Also define
[0083] The most recent K values of z.sub.m(1) and z.sub.m(1) for m=n(K1) to n, are stored in two complex-valued shift registers, each of length K. These two shift registers are updated every time a new symbol arrives at the receiver 1 (i.e., every time n increments by one).
[0084] The output of the MFB 5 can them be written as
[0085] The squared magnitude (which is calculated in the MFB 5 and/or in the magnitude comparison block 6) is then
[0086] The values of z.sub.(n(K1)+k)(b), for k=0 to K1, and b=1 & 1, are already stored in the two shift registers. These same values can be applied across all of the 2.sup.K filters, when calculating |d.sub.n(b)|.sup.2 for each of the respective filter sequences, b. This avoids the need to calculate the inner sum over the oversampling in equation (2) above, for each filter.
[0087] In some embodiments, the MFB 5 is arranged to perform the calculations (multiplications, summation, etc.) as set out in equation (3). This reduces the complexity of calculating the |d.sub.n(b)|.sup.2, for each b, to O(K). The total complexity of the MFB 5 and the magnitude comparison block 6, based on this approach to calculation, is then only O(K.2.sup.K).
[0088] Some embodiments achieve even greater efficiency by using a novel iterative method to calculate the MFB outputs efficiently, exploiting the fact that the observation interval is shifted one symbol at a time, and the fact that the 2.sup.K filters, between them, cover every combination of K bits.
[0089] Because there is a filter for every possible sequence of K bits, cyclically rotating the bits of each filter by one position (e.g., 00011->00110) will still result in a set of filters covering all 2.sup.K sequences. This insight can be used to avoid having to calculate each cross-correlation calculation from scratch every time a new symbol arrives. Instead, by designing each matched filter circuit so that it rotates its filter sequence bits at the same rate as new data bits are received, the result of one cross-correlation calculation can form the starting point for the next calculation by the same filter.
[0090] To see how this is justified mathematically, note that, for symbol n, each of the 2K matched filters will calculate the following, for a unique sequence of bit signs b.sub.0 . . . b.sub.K1:
[0091] At the next symbol interval, n+1, if the filter bits are rotated one position, to give a new sequence b.sub.1 . . . b.sub.K1 b.sub.0, the same filter will then be required to calculate:
[0092] By comparing these two equations, it can be seen that d.sub.n+1([b.sub.1 . . . b.sub.K1 b.sub.0]) can be calculated from the previous result, d.sub.n([b.sub.0 . . . b.sub.K1]), as follows:
[0093]
[0094] Although
[0095] For convenience, the annotations in
[0096] The submodule 8 operates as follows.
[0097] Similar to the embodiment described above, the two values of z.sub.n+1(1) and z.sub.n+1(1) are calculated before each filter submodule is activated when each new received symbol.
[0098] An addition block 10 calculates a value s.sub.n iteratively using the last element in the bit register 9, i.e. s.sub.n=s.sub.n1+b.sub.n. The current value of s.sub.n is used to generate a rotation e.sup.jhs.sup.
[0099] The submodule 8 uses a multiplexer 12 to determine which one of z.sub.n+1(1) and z.sub.n+1(1) to store, in rotated form, in a complex-valued summand shift register 13 of dimension K+1, based on the value of the last bit in the cyclic shift register 9. This summand shift register 13 is shifted for every incoming symbol. Before being stored, the value of z.sub.n+1 is rotated by being multiplied with the output of the rotation block 11, in a multiplier 14. In other words, at each symbol update, the filter submodule 8 calculates a value z.sub.n+1(b.sub.n+1)=e.sup.js.sup.
[0100] If the modulation index h is a multiple of 0.5 then e.sup.jhs.sup.
TABLE-US-00001 e.sup.jhs.sup.
[0101] To extend this, if h is a rational number then e.sup.jhs.sup.
[0102] The submodule 8 outputs the value of each cross-correlation calculation to a memory, outside the submodule 8, which stores a set of recent values in an array 15, called CMFARRAY(b)) in
[0103] At each iteration, the most-recent correlation value, d.sub.n, is read from the array 15, and an addition/subtraction unit 16 subtracts from it the oldest value stored in the summand shift register 13, and adds to it the newest value stored in the summand shift register 13. The oldest value corresponds to the received symbol period that was involved in the preceding correlation calculation, but which is no longer in the time window considered by the current correlation calculation. The newest value corresponds to the most-recently received symbol, which is involved in the current correlation calculation, but which was not involved in the preceding correlation calculation.
[0104] The output of the addition/subtraction unit 16 is the new correlation value, which is then written to the array 15, and the process repeats for the next symbol period, and so on.
[0105] A multiplexer 17 is used when the demodulator first starts, in order to detect when the summand shift register 13 is not yet full. In this case, no subtraction is required at the addition/subtraction unit 16, since K symbols have not yet been received. Once the multiplexer 17 detects that the summand shift register 13 is full, it starts subtracting the oldest symbol value at each iteration, as described above.
[0106] The submodule 8 also has an output 18 of a phase correction value from the rotation block 11 to a drift correction module (drift corr.), which can use it for tracking frequency offset, the precise details of which are not important here. The submodule 8 also has an output 19 of the oldest bit of the filter sequence, at each iteration, for use in a bit decision module, the details of which are not important here.
[0107] It will be appreciated by those skilled in the art that the invention has been illustrated by describing one or more specific embodiments thereof, but is not limited to these embodiments; many variations and modifications are possible, within the scope of the accompanying claims.