Disclosed aspects relate to frequency synchronization of Gaussian frequency-shift keying (GFSK) signals with convolutional codes. More specifically, exemplary aspects relate to frequency synchronization of convolutionally coded GFSK signals using per-surviving processing (PSP).
Frequency modulation schemes may be used in transmitting digital information. A set of symbols which may be used to generate a digital signal is known as an alphabet. Symbols of the alphabet are used to generate signals, modulated to a transmission frequency and transmitted on a communication medium to a receiver. The receiver is configured to demodulate the received signals and detect the signals which were transmitted.
In some examples of frequency modulation, the alphabet has only two symbols, 0 and 1 (also referred to as bits). Frequency shift keying (FSK) is a method by which the symbols 0 and 1 can be translated into signals for transmission. Using FSK, a carrier frequency at which the signals are transmitted is decreased for durations when the symbol 0 is transmitted and increased for durations when the symbol 1 is transmitted. This represents a square-wave signal in the frequency domain. If Gaussian filtering is applied to the square-wave signal, the carrier frequency may be shifted, and this type of modulation is referred to as Gaussian frequency shift keying (GFSK).
GFSK may be used in communication standards such as Bluetooth for signal communication. Detection of GFSK signals at a GFSK receiver involves both phase and frequency tracking. Some applications which use standards such as Bluetooth may involve low cost oscillators which can contribute to jitter, leading to lower signal-to-noise ratios (SNRs) in GFSK signal detection. At low SNRs, error correction codes (ECC) such as convolutional forward error correction (FEC) schemes, which may be employed in transmitting GFSK signals, can hinder frequency tracking.
Accordingly, there is a need in the art for improving phase and frequency tracking in GFSK receivers.
Exemplary embodiments of the invention are directed to systems and methods related to a receiver configured to receive and detect convolutionally coded Gaussian frequency-shift keying (GFSK) signals. The receiver implements a Per-Survivor Processing (PSP) algorithm to generate branch metrics or PSP variable such as frequency, phase, and memory for each branch of a trellis. A Viterbi Algorithm is applied to the trellis for Maximum Likelihood Sequence Estimation (MLSE). The receiver includes a PSP block comprising a number of blocks equal to the number of branches of the trellis. Each block includes a Phase Corrector, Decision Feedback Demodulator (DFD), and a Frequency Tracking Loop (FTL) to update the PSP variables.
For example, an exemplary aspect relates to a method of operating a receiver, the method comprising receiving convolutionally coded Gaussian frequency-shift keying (GFSK) signals, and performing a maximum likelihood sequence estimation of a received convolutionally coded GFSK signal using a Viterbi algorithm (VA). Performing the maximum likelihood sequence estimation of the received convolutionally coded GFSK signal using the Viterbi algorithm (VA) comprises Per-Survivor Processing (PSP) of the received convolutionally coded GFSK signal.
Another exemplary aspect relates to an apparatus comprising a receiver. The receiver is configured to receive convolutionally coded Gaussian Frequency-Shift Keying (GFSK) signals; and perform a maximum likelihood sequence estimation (MLSE) of the received convolutionally coded GFSK signals using a Viterbi Algorithm (VA).
Yet another exemplary aspect relates to an apparatus comprising: means for receiving convolutionally coded Gaussian Frequency-Shift Keying (GFSK) signals; and means for performing a maximum likelihood sequence estimation (MLSE) of the received convolutionally coded GFSK signals using a Viterbi Algorithm (VA).
The accompanying drawings are presented to aid in the description of embodiments of the invention and are provided solely for illustration of the embodiments and not limitation thereof.
Aspects of the invention are disclosed in the following description and related drawings directed to specific embodiments of the invention. Alternate embodiments may be devised without departing from the scope of the invention. Additionally, well-known elements of the invention will not be described in detail or will be omitted so as not to obscure the relevant details of the invention.
The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any embodiment described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments. Likewise, the term “embodiments of the invention” does not require that all embodiments of the invention include the discussed feature, advantage or mode of operation.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of embodiments of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises”, “comprising,”, “includes” and/or “including”, when used herein, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
Further, many embodiments are described in terms of sequences of actions to be performed by, for example, elements of a computing device. It will be recognized that various actions described herein can be performed by specific circuits (e.g., application specific integrated circuits (ASICs)), by program instructions being executed by one or more processors, or by a combination of both. Additionally, these sequence of actions described herein can be considered to be embodied entirely within any form of computer readable storage medium having stored therein a corresponding set of computer instructions that upon execution would cause an associated processor to perform the functionality described herein. Thus, the various aspects of the invention may be embodied in a number of different forms, all of which have been contemplated to be within the scope of the claimed subject matter. In addition, for each of the embodiments described herein, the corresponding form of any such embodiments may be described herein as, for example, “logic configured to” perform the described action.
Exemplary aspects of this disclosure pertain to GFSK receivers configured for phase and frequency tracking of GFSK signals which may include convolutional coding (e.g., convolutional forward error correction (FEC) schemes). Exemplary GFSK receivers may support technologies such as Bluetooth Low Energy (LE) or Low Energy Long Range (LELR), etc. For example, an exemplary GFSK receiver is configured to receive GFSK signals which employ a rate half convolutional code. In general, the convolutionally coded GFSK signals comprise a trellis of two or more branches.
By way of background, frequency tracking in rate half convolutional codes can be conventionally implemented with trellis coded modulations (TCM). In TCM, a Viterbi algorithm (VA) may be used for decoding transmitted sequences of signals. Generally speaking, a tentative decision may be made in each step of the VA on a global surviving path and the tentative decision may be used to update phase and frequency tracking loops. Specifically, a technique known as Per-Surviving Processing (PSP) may be used for phase tracking of signals, wherein the VA is used for maximum likelihood sequence estimation (MLSE) of a signal with an unknown phase. A phase estimate is assigned to each state of the trellis and the phase estimate is updated at each state transition through the trellis. With this approach it is seen that a maximum likelihood path in the trellis jointly maximizes the likelihood of transmitted data bits as well as a channel estimate. In the context of phase and frequency tracking of signals using PSP, a phase locked loop (PLL) is assigned to each state of the trellis and a phase error signal is computed for each of branch of the trellis. The VA decides a winner branch for each state. The phase error of the winner branch is then used to update the PLL, which is associated with the state of the winner branch.
However, unlike the PSP algorithms applied to TCM in conventional aspects described above, it is difficult to apply PSP algorithms to GFSK signals because GFSK signals involve a non-linear modulation. In exemplary aspects of this disclosure, the limitations of conventional applications of PSP are overcome. Exemplary aspects involving PSP synchronization applied to convolutionally coded GFSK signals with spreading are discussed in the following sections.
With reference now to
Considering transmitter 102 in further detail, encoder 104 may be a convolutional encoder. Information bits to be transmitted (which may be received from any computing device or storage medium, not shown) may be provided to encoder 104. Encoder 104 may encode each information bit using Nc bits, wherein encoder 104 may generate an output comprising Nc bits, also referred to as Nc coded bits for each information bit, wherein Nc is a positive integer. The Nc coded bits form a sequence and state transitions of a sequence of Nc coded bits are referred to as a “code word.”
Each coded bit is then sent to a mapper (which may be present in encoder 104), wherein logic values “0” and “1” are mapped into two different sequences of R bits. The operation of mapping “0” and “1” to different sequences of R bits is referred to as “spreading” or “pattern mapping.” The sequences of R bits generated by the mapper are referred to as modulation bits. It is seen that each information bit generates R*Nc or “RNc” bits following the encoding and mapping, and therefore, the modulation bits are generated at a rate which is RNc times the rate at which information bits are processed.
Table 1, below, provides an example of spreading with R=4 implemented by a mapper, wherein coded bits are shown as input bits of the mapper and for each input bit, an output sequence of R=4 bits are generated after spreading.
The output sequence generated by the mapper, or modulation bits, are provided to modulator 106. Modulator 106 may be configured as a GFSK modulator, which may be a binary modulator in some aspects. The output of modulator 106 is a waveform (e.g., a square wave) which is modulated or up-converted to the carrier frequency of channel 110 and sent over channel 110 to receiver 112.
At receiver 112, the signals received on channel 110 are down-converted and demodulated (e.g., by demodulator 116) to a base frequency of receiver 112 (also referred to a baseband frequency). The demodulated signals may be decoded by decoder 114. Decoder 114 may include a sampler configured to sample the demodulated signals, e.g., at a rate of one sample per bit. These samples are denoted by r, with rn samples per GFSK bit.
The operation of receiver 112 for demodulating and decoding/detecting coded bits of the received convolutionally coded GFSK signals will now be explained in further detail. In one aspect, receiver 112 can implement a PSP block to detect the received signals. The PSP block will be described by first considering a decision feedback demodulator (DFD) which, as known in the art can be used for detection of coded bits which are not convolutionally coded. A DFD, for example, is known in the art for detection of signals with memory. In exemplary aspects of this disclosure, PSP frequency tracking of convolutionally coded signals can comprise an efficient frequency tracking algorithm applied to the DFD.
The convolutionally coded signals may be representable by one or more GFSK symbols. In cases where the coded signals are represented by two or more GFSK symbols, the coded signals are said to be spread over the two or more GFSK symbols. The DFD can be used to directly detect the coded bits that are represented by one or more GFSK symbols, denoted herein as R GFSK symbols (including in the cases where they are spread over two or more GFSK symbols), based on the following recursive equations
wherein, rk is a vector of received samples for the k-th bit ak, and 0≦α≦1 is a forgetting factor; sk(i) is the vector of transmitted samples for the hypothetical bit i, wherein “i” is the hypothetical value of the k-th bit, i.e. i=0 or i=1. In the above equations, rk and sk(i) comprise R samples. Mk can be interpreted as an estimator for the initial carrier phase offset. Moreover, φ(âk) is the amount of phase increment in the transmitted signal during the transmission of âk. Note that φ(âk) may be pre-computed and stored for ak=0 and ak=1. Additionally the DFD's memory, i.e. Mk, is updated at the rate of the coded bits, which is equivalent to every R samples.
In a perfectly synchronized frequency tracking loop (FTL), the latest frequency estimate {circumflex over (ω)}k is assumed to have de-rotated the received signal by {circumflex over (θ)}k before the DFD makes a decision, which leads to the equation:
A frequency drift will cause the operand of the right hand side of the above equation to be rotated away from the real axis due to the error in {circumflex over (ω)}k either by a drift or by the estimation error. This excess phase rotation is proportional to the frequency offset error and can be used as the error signal for the FTL update, for example, as per the below equations:
e
k=arg{M*ke−jθ
{circumflex over (ω)}k+1={circumflex over (ω)}k+γek
wherein, γ is the loop filter coefficient. Additionally, ak becomes âk in a decision-directed mode (wherein, it will be understood that in training mode or data-aided mode, ak is used, because the bit values are known to the receiver in advance). The frequency estimate is then used to update a phase correction value or channel estimate as follows:
{circumflex over (θ)}k+1={circumflex over (θ)}k+{circumflex over (ω)}k+1
The above-described method can be used directly at the GFSK symbol rate for faster tracking. For example, consider the following equations
e
n=arg{M*┘n/R┘e−jθ
{circumflex over (ω)}n+1={circumflex over (ω)}n+γen
wherein, s(a
{circumflex over (θ)}n+1={circumflex over (θ)}n+{circumflex over (ω)}n+1
With reference now to
For convolutionally coded GFSK signals, the trellis of a convolutional code comprises two or more branches, denoted herein as Nb branches, each of which corresponds to a transmitted signal. This transmitted signal comprises RNc samples that can be derived from the trellis and the spreading scheme. Since the transmitted signal is known over each branch, the aforementioned DFD and FTL can be applied to the branches of the trellis individually in order to compute the frequency estimates and branch metric increments for the Viterbi Algorithm (VA), which provides the exemplary PSP algorithm which utilizes the FTL and DFD.
For example, consider a branch/of the trellis for a particular state transition (e.g., one of the four branches 202a-b, 204a-b). A set of DFD, FTL, and Phase Corrector are applied to this branch l. During a state transition over this branch, RNc samples are received, e.g., designated as r0, r1, . . . , rRN
The PSP variables are updated for branch l, and at the same time, the PSP variables are also updated for all other branches of the trellis (e.g., the remaining branches 202a-b, 204a-b). Once the state transitions are completed, the VA is updated to select a winner branch for each state of the trellis. For example, as shown in
A detailed implementation of receiver 112 based on the exemplary PSP algorithm using FTL and DFD will now be described. Table 2 below provides a list of symbols and their definitions to aid in the explanation.
With reference now to
In further detail, receiver 112 receives convolutionally coded GFSK signals (e.g., from channel 110 through antenna 118, as depicted in
The Nb matched filter outputs c0, c1, . . . cNb−1 310 are provided to PSP 304. As discussed with reference to
PSP 304 receives the Ns decisions of winner branches d0, d1, . . . dNs−1 314 from VA 306 and generates Nb branch metric increments λ0, λ1, . . . λNb−1 312. The Nb branch metric increments λ0, λ1, . . . λNb−1 312 are provided back to VA 306 to be used in the Viterbi Algorithm to update decisions on the winner branches.
Referring now to
In one example, Nb=16, corresponding to sixteen branches of the trellis. As shown, the first or topmost row identified as row 400, corresponding, for example, to branch b0, will be explained in further detail, keeping in mind that the remaining rows corresponding to the remaining branches are similarly configured. As shown, row 400 of PSP 304 comprises the blocks identified as Phase Corrector 402, DFD 404, and FTL 406, configured to implement the PSP algorithm. More specifically, Phase Corrector 402, DFD 404, and FTL 406 are configured to generate or update the PSP variables θ0 403, M0 405, and ω0 407 for row 400, respectively. In general, Phase Corrector, DFD, and FTL blocks in each row l are configured to generate θl, Ml, and ωl respectively for that row.
Continuing with the discussion of row 400, each of blocks Phase Corrector 402, DFD 404, and FTL 406 have a memory (not shown) which is reordered once the VA decisions from VA 306 are received and mapped to the decisions used by corresponding branches or rows. Therefore each of blocks Phase Corrector 402, DFD 404, and FTL 406 is provided with a “reload” input coupled to the signal, reload 408, which is configured to trigger memory reordering during a memory reordering phase of the PSP algorithm.
Each of blocks Phase Corrector 402, DFD 404, and FTL 406 also include an “external” input (θext 409, Mext 411, and ωext 413, respectively) which is used to update the internal memory (not explicitly shown in
In exemplary aspects, the PSP algorithm uses two memories for each PSP variable in each Phase Corrector, DFD, and FTL block to ensure that a particular PSP variable is not overwritten in the reordering phase before the value of the PSP variable is used to update another PSP variable. Thus, when the PSP variables are updated serially the exemplary implementation of PSP 304 can retain a copy of the PSP variables until the end of the memory reordering phase.
In some aspects, it is possible to save on memory space (e.g., reduce a set of registers used to store the PSP variables) by performing all memory updates at the same time. In these cases, reload 408 for all Phase Corrector, DFD, and FTL block can be asserted at the same time, causing the internal memories to be updated simultaneously before the variables are used for implementing the PSP computations in the reordering phase. After the reordering phase, the Phase Corrector, DFD, and FTL blocks can continue to update their respective internal memories using the received inputs c0, c1, . . . cNb−1 310. In these implementations, the internal memory of the DFD blocks (e.g., DFD 404) can be updated every R samples of inputs c0, c1, . . . cNb−1 310, while the internal memories of the Phase Corrector and FTL blocks (e.g., Phase Corrector 402 and FTL 406) can be updated for every received sample. For branch b0, for example, DFD 404 can also calculate the branch metric increment λ0, which is already used by VA 306.
With reference now to
As seen from
From
From
In exemplary aspects of this disclosure, a training sequence may be used for the PSP algorithm implemented by receiver 112 during a training mode. Receiver 112 may be operated in the training mode, for example, at the start of each packet of received signals. The training sequence can be used for training the various components of receiver 112 discussed above with reference to
In some aspects, it is seen that the maximum likelihood path for branches of the trellis can be determined from the transmitted data, and only the channel phase may remain to be estimated in frequency/phase tracking using the PSP algorithm. Therefore, frequency/phase tracking can be performed using only one branch during the training mode, e.g. branch b0 corresponding to row 400 of
In an alternative aspect, all Nb branches of PSP 304 receive their corresponding matched filter outputs, i.e. c0, c1, . . . cNb−1, similar to the regular mode of operation. However, the Nb branches of PSP 304 use pre-computed decision from a corresponding set of Nb decisions, denoted, for example, as d″0, d″1, . . . d″Nb−1 (not specifically illustrated), wherein the pre-computed decisions are computed and stored in advance, based, for example, on the known training sequence instead of the Nb decisions d′0, d′1, . . . d′Nb−1 414 derived from VA decisions on winner branches d0, d1, . . . dNs−1 314 provided by VA 306. In this aspect, all branches can operate on the same input and thus copying the register values from a first branch such as branch b0 to the remaining branches after the training mode can be avoided.
In some aspects, computational resources used for implementing the exemplary PSP algorithm can be reduced in receiver 112, based, for example, the observation that a number of possible output bit sequences of a convolutional encoder (e.g., encoder 104 of transmitter 102 discussed with reference to
For example,
With reference to
Accordingly, it will be appreciated that exemplary aspects include various methods for performing the processes, functions and/or algorithms disclosed herein. For example,
In Block 902, method 900 includes receiving convolutionally coded Gaussian Frequency-Shift Keying (GFSK) signals (e.g., at matched filter bank 302).
In Block 904, method 900 includes performing a maximum likelihood sequence estimation (MLSE) of a received convolutionally coded GFSK signal using a Viterbi Algorithm (VA) (e.g., in VA 306, using branch increments from PSP 304).
An example configuration of receiver 112 will now be discussed in relation to
In a particular aspect, input device 1030 and power supply 1044 are coupled to the system-on-chip device 1022. Moreover, in a particular aspect, as illustrated in
It should be noted that although
Those of skill in the art will appreciate that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.
Further, those of skill in the art will appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present invention.
The methods, sequences and/or algorithms described in connection with the embodiments disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor.
Accordingly, an embodiment of the invention can include a computer readable media embodying a method for detecting convolutionally coded GFSK signals. Accordingly, the invention is not limited to illustrated examples and any means for performing the functionality described herein are included in embodiments of the invention.
While the foregoing disclosure shows illustrative embodiments of the invention, it should be noted that various changes and modifications could be made herein without departing from the scope of the invention as defined by the appended claims. The functions, steps and/or actions of the method claims in accordance with the embodiments of the invention described herein need not be performed in any particular order. Furthermore, although elements of the invention may be described or claimed in the singular, the plural is contemplated unless limitation to the singular is explicitly stated.