A method for non-linearity correction includes receiving a first output signal from a data signal path containing a first analog-to-digital converter and receiving a second output signal from a second analog-to-digital converter. The method also includes generating first non-linearity coefficients using the first output signal and generating second non-linearity coefficients using the first and second output signals. The method further includes applying, by a non-linearity corrector in the data signal path, the first and second non-linearity coefficients to compensate for non-linearity components in a digitized signal output from the first analog-to-digital converter to generate a corrected digitized signal.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims priority to Indian Provisional Patent Application No. 201941040030, filed Oct. 3, 2019, entitled “A LOW-SNR REFERENCE ADC AIDED NON-LINEARITY ESTIMATION IN PRESENCE OF SOURCE NON-LINEARITY,” Indian Provisional Patent Application No. 201941042295, filed Oct. 18, 2019, entitled “FREQUENCY DOMAIN ESTIMATION OF COEFFICIENTS OF A MULTI-TAP VOLTERRA AND DERIVATIVE BASED NON LINEARITY CORRECTOR,” and Indian Provisional Patent Application No. 201941048813 filed Nov. 28, 2019, entitled “A COUPLED ESTIMATION OF SECOND AND THIRD ORDER NON-LINEARITY COEFFICIENTS IN PRESENCE OF BOARD DEPENDENT HD2,” each of which is incorporated herein by reference in its entirety.

TECHNICAL FIELD

This relates generally to non-linearity correction and, more particularly, to generating non-linearity correction coefficients and performing non-linearity correction within a system.

BACKGROUND

An electronic system, such as a mobile phone, audio and video equipment, a wireline communication system, measurement equipment, a radar system, etc., may include one or more non-linear circuits or components, which may adversely impact performance of the system. One such non-linear circuit is an analog-to-digital converter (“ADC”), which converts a continuous time analog signal (e.g., a voltage or current) into a discrete time representation (a digital or digitized signal) that is proportional in magnitude to the continuous time signal. However, there may be other sources of non-linearity within the system, such as from circuitry on a printed circuit board (“PCB” or “board), for instance at a user end, upon which the ADC is mounted. There may also be “source non-linearity” caused by components of a transmitter of the continuous time signal. A non-linearity corrector may be used to compensate for non-linearity within a system.

SUMMARY

As technology advances, some non-linearity correction methodologies may not enable the meeting of target performance specifications. For example, the wireless infrastructure (“WI”) market is moving towards a radio frequency-ADC (“RF-ADC”) based sampling architecture due to its ease of supporting multiple frequency bands and wider bandwidth with reduced board space. As such, key care-about includes RF-ADC non-linearity performance metrics such as second and third order harmonic distortion and second and third order intermodulation distortion. An example target spurious-free dynamic range (“SFDR”) specification is −80 dBFS across various receiver operating scenarios, such as across various input levels, Nyquist zones (frequencies), and temperature ranges (e.g., −40 C to 125 C). However, a target SFDR of −80 dBFS is challenging when the non-corrected ADC output signal level is −55 dBFS, which occurs in some applications.

Additionally, there may be non-linearity caused by board circuitry at the user end (for instance second order non-linearity) and non-linearity due to temperature, voltage variations, and/or aging effects, which, if not corrected, makes it difficult to meet target performance specifications. Moreover, it is desired that non-linearity caused by the ADC (and other circuitry residing on a chip with the ADC, for instance) and non-linearity caused by board circuitry and other effects within the system, is corrected without correcting source non-linearity. For example, source non-linearity may be caused by RF power amplifier and digital pre-distortion circuitry of a transmitter.

One solution to correct or compensate for non-linearity in a system is applying factory-calibrated non-linearity correction to a digital signal output from an ADC. Namely, at production, non-linearity correction coefficients are determined for a range of sampling rates, Nyquist zones, and digital step attenuator (DSA) indexes, and stored in memory. During run-time, appropriate non-linearity correction coefficients are programmed into a non-linearity corrector, from memory, based on receiver configuration. However, this approach has some limitations. For example, the time needed to perform the in-factory calibration and the memory needed to store the coefficients increases device cost. Also, other non-linearity sources, such as second order non-linearity caused by the board on which the ADC is mounted, and changes due to temperature, voltage, and/or aging are not accounted for by factory calibration.

Disclosed examples of non-linearity correction address these limitations. In accordance with one or more examples of the disclosure, a digital signal output from a data signal path containing board circuitry, a main (e.g., first) ADC, and a non-linearity corrector is used to determine or generate (e.g., by estimation) some of the non-linearity correction coefficients that the non-linearity corrector uses to correct a digital signal output from the main ADC. For example, the digital signal output from the data signal path is used to determine the non-linearity correction coefficients used to correct second order non-linearity, for instance caused by the main ADC (and circuitry co-located with the main ADC) and caused by the board circuitry. Further, digital signals output from both the data signal path and from a reference path containing a reference (e.g., second) ADC are used to estimate the remainder of the non-linearity correction coefficients used by the non-linearity corrector. For example, the reference path is used to subtract out a signal containing source non-linearity and the second order non-linearity caused by the board circuitry in order to determine the non-linearity correction coefficients used to correct third order non-linearity, for instance caused by the main ADC (and circuitry co-located with the main ADC).

In this manner, disclosed examples may be implemented at run-time to compensate or correct for non-linearity caused by circuitry in the data signal path, without correcting or compensating for source non-linearity. Also, disclosed examples may be implemented at periodic intervals of time to correct or compensation for changes in non-linearity performance due to temperature, voltage, and/or aging. Additionally, since non-linearity correction coefficients are determined at run-time, the cost of a system implementing one or more examples described herein can be reduced by eliminating in-factory calibration and non-volatile storage of the correction coefficients.

In one example, a method for non-linearity correction includes receiving a first output signal from a data signal path containing a first analog-to-digital converter and receiving a second output signal from a second analog-to-digital converter. The method also includes generating first non-linearity coefficients using the first output signal and generating second non-linearity coefficients using the first and second output signals. The method further includes applying, by a non-linearity corrector in the data signal path, the first and second non-linearity coefficients to compensate for non-linearity components in a digitized signal output from the first analog-to-digital converter to generate a corrected digitized signal.

In another example, a system includes a non-linearity coefficient generator and a non-linearity corrector coupled to the non-linearity coefficient generator. The non-linearity coefficient generator is configured to process a first digitized signal to generate second order non-linearity coefficients and process the first digitized signal and a second digitized signal to generate third order non-linearity coefficients. The non-linearity corrector is configured to correct non-linearity components in a digitized signal output from an analog-to-digital converter, using the second and third order non-linearity coefficients, to generate a corrected digitized signal.

In another example, a system includes a digital signal path, a reference path, and a non-linearity coefficient generator. The digital signal path includes a first analog-to-digital converter (ADC) having a first ADC input and a first ADC output and a non-linearity corrector having a first non-linearity corrector input coupled to the first ADC output and having a second non-linearity corrector input. The reference path includes a second ADC having a second ADC input and a second ADC output. The non-linearity coefficient generator has a first input coupled to the data signal path, a second input coupled to the second ADC output, and an output coupled to the second non-linearity corrector input. The non-linearity coefficient generator is configured to: receive a first digitized signal from the data signal path; receive a second digitized signal from the second ADC; generate second order non-linearity coefficients using the first digitized signal; generating third order non-linearity coefficients using the first and second digitized signals; and provide the second and third order non-linearity coefficients to the non-linearity corrector.

DETAILED DESCRIPTION

In the drawings, like reference numerals refer to like elements throughout, and the various features are not necessarily drawn to scale. In the description and in the claims, the terms “including” and “having” and variants thereof are intended to be inclusive in a manner similar to the term “comprising” unless otherwise noted. In addition, the terms “couple”, “coupled” or “couples” means an indirect or direct electrical or mechanical connection.

Referring initially toFIG. 1, which depicts an example system100including non-linearity correction circuitry116and122in accordance with the present disclosure. In an example, the system100is included in receiver circuitry (e.g., as part of a transceiver) of a system such as a mobile phone, audio and video equipment, a wireline communication system, measurement equipment, a radar system, etc.

System100includes a PCB or board102and an antenna104attached to the board102. The board102contains or has mounted thereon a filter106, PCB or board circuitry108, a (first) digital step attenuator (DSA)112, a main (first) ADC114, a non-linearity (“NL”) corrector116, a reference (second) DSA118, a reference (second) ADC120, a NL coefficient generator122, a controller124, and a digital signal processor (“DSP”)126, which includes a digital down-converter128and may include other circuitry (not shown). The circuitry mounted on the board102includes inputs and outputs coupled together as illustrated to allow processing of a data signal during run-time of the board102. Spectral plots130-140are frequency domain representations of the data signal (labeled as142-154) at various stages of processing within the system100.

The filter106, PCB circuitry108, DSA112, main ADC114, and NL corrector116form what is referred to herein as a “data signal path” or “main path” through which a data signal received into the antenna104travels and is processed before being provided to the DSP126for further processing. The reference DSA118and reference ADC120form what is referred to herein as a “reference path.” Also, in a particular example, the DSA112, main ADC114, NL corrector116, reference DSA118, reference ADC120, NL coefficient generator122, and controller124are co-located on a chip110, which is mounted to the board102. However, this need not be the case in other examples.

Moreover, the DSA112, main ADC114, reference DSA118, and reference ADC120are implemented as circuitry in hardware. The NL coefficient generator122and/or the NL corrector116may be implemented as circuitry in hardware or firmware, or implemented by a processor executing instructions stored in memory, such as a microprocessor or microcontroller, which may be the same as or different from controller124. The controller124, for instance a microcontroller, controls the timing of digital processes performed by the NL coefficient generator122and the NL corrector116. The controller124may also provide control signals, such as DSA indices or values or control flags to circuitry on the chip110.

During operation, or run-time, an analog signal142containing data (also referred to interchangeably herein as an analog data signal or a source input signal) is received by the antenna104. In this example, the received analog data signal142is a two-tone input signal at fundamental or carrier frequencies f1and f2, as illustrated by spectral plot130. Further, in this example, the received signal142is an RF signal, whereby f1and f2are within the radio spectrum. Also shown by spectral plot130is that the received signal142includes “source” non-linearity components, caused by non-linearity in circuitry of the transmitter, such as power amplifier and/or digital pre-distortion circuitry. In this example, the source non-linearity components include: second order non-linearity components at DC and at frequencies f2−f1, 2f1, 2f2, and f1+f2; “close-in” third order non-linearity components at frequencies 2f1−f2and 2f2−f1, which are closer to the fundamental frequencies; and “far-off” third order non-linearity components at frequencies 2f1+f2, 3f1, 3f2, f1+2F2, which are farther from the fundamental frequencies.

The received signal142passes through filter106, which in an example is a band-select filter, which limits the bandwidth of the received signal142. In this example, filter106filters off all the second order non-linearity components and far-off third order non-linearity components. Accordingly, an analog data signal144output from the filter106, as illustrated by spectral plot132, includes only the fundamental frequency components at f1and f2and close-in third order non-linearity components at 2f1−f2and 2f2−f1of the received signal142.

Analog data signal144output from the filter106passes through PCB circuitry108, which introduces second order non-linearity components at DC, f2−f1, 2f2, and f1+f2, as illustrated by spectral plot134. The PCB circuitry108may include PCB traces, an interface between the PCB102and the chip110, and/or other board impairments that introduce second order non-linearity into the data signal.

Both DSA112and reference DSA118receive an analog data signal146output from the PCB circuitry108for further processing through the main path and the reference path, respectively. Within the main path, the DSA112attenuates the analog data signal146by an attenuation value that is selectable by digital value provided to the DSA112, for instance by the controller124. The main ADC114(which in this example is a RF-ADC) digitizes the analog data signal146to generate a digital data signal150(x[n]), which is represented by the spectral plot138. A digital data signal may also be referred to herein interchangeably as digital data, digitized data, or simply data. Similarly, within the reference path, the reference DSA118attenuates the analog data signal146by an attenuation value that is selectable by digital value provided to the reference DSA118, for instance by the controller124. The reference ADC120(which in this example is also a RF-ADC) digitizes the analog data signal146to generate a digital data signal148, which is represented by the spectral plot136.

Comparatively, the reference DSA118is more linear than the DSA112, and the reference ADC120is more linear than the main ADC114, and the reference components118and120may thus have an associated lower signal-to-noise ratio than the components112and114. In a particular example, the reference DSA118and the reference ADC120are “highly linear” meaning that no additional second or third order non-linearity is introduced during signal processing, as shown by comparing the spectral plot134of the analog data signal146entering the reference path with the spectral plot136of the digital data signal148exiting the reference path.

By contrast, the processing performed by the DSA112and main ADC114introduces second order non-linearity components at DC, f2−f1, 2f1, 2f2, and f1+f2; close-in third order non-linearity components at 2f1−f2and 2f2−f1; and far-off third order non-linearity components at 2f1+f2, 3f1, 3f2, f1+2f2, as illustrated by spectral plot138. The non-linearity correction circuitry, which includes the NL coefficient generator122and NL corrector116, operates to correct, e.g., remove, mitigate, or compensate for, these non-linearity components in digital data signal150. Accordingly, a digital data signal154(y[n], also referred to herein as non-linearity corrected data154) output from the NL corrector116may have a spectral plot140similar to the spectral plot132of the analog data signal144exiting the filter106.

Namely, the NL coefficient generator122generates (e.g., by estimation) non-linearity correction coefficients152for given sampling rates, Nyquist zones, DSA settings, etc., at which the main ADC114operates. The NL corrector116uses or applies the estimated non-linearity correction coefficients152to correct the non-linearity components in the digital data signal150, which were caused by non-linearity of the PCB circuitry108, the DSA112, and the main ADC114, without correcting the source non-linearity components.

By way of distinction, non-linearity correction coefficients are values estimated by a NL coefficient generator and used by a NL corrector to correct a digitized signal and, thereby generate a corrected digitized signal, also referred to herein as non-linearity corrected data. Non-linearity (“NL”) correction coefficients are also interchangeably referred to herein as non-linearity coefficients, correction coefficients, coefficient values, and coefficients. By contrast, non-linearity terms are generated to model non-linearity components in a signal and, once generated, may be used by the NL coefficient generator to estimate the NL correction coefficients or used by the NL corrector to apply the estimated NL correction coefficients to correct the digitized signal. Also, non-linearity components are the spurious components within a signal at frequencies other than the fundamental frequencies.

The NL corrector116provides the non-linearity corrected data154to the DSP126. In the DSP126, the digital down-converter128down-converts the non-linearity corrected data154to provide down-converted in-phase and quadrature-phase data to downstream circuitry (not shown) for further processing, for instance for video and/or audio output. For example, the digital down-converter128multiples the non-linearity corrected data154by sine and cosine signals of a local oscillator to generate the down-converted data.

In an example, the non-linearity components of the digital data signal150(x[n]) output from the main ADC114are modeled by applying a multi-tap Voltera model and a derivative term based model to the raw output samples of the ADC114. For instance, the non-linearity components of x[n] may be modeled using non-linearity terms, such as:second order terms: x2[n], x[n]x′[n], x′2[n]third order terms: x3[n], x2[n]x′[n], x[n]x′2[n], x′3[n], x2[n]x[n+1] or higher order non-linearity terms.

FIG. 2depicts an example non-linearity corrector116, which may be implemented in the system100shown inFIG. 1. NL corrector116includes N number of non-linearity term generators202, multipliers204, and adders206, with only one of each being labeled. Components202-206of the NL corrector116may be implemented as circuitry in hardware or firmware, or implemented by a processor executing instructions stored in memory, such as a microprocessor or microcontroller, which may be the same as or different from controller124.

The non-linearity term generators202produce the various non-linearity terms corresponding to x[n], such as the second and third order non-linearity terms shown above, for use in non-linearity correction. The coefficient values (C1. . . CN)152, also referred to herein as non-linearity correction coefficients, are estimated and provided by the NL coefficient generator122to NL corrector116for use in the non-linearity correction. The values of the NL correction coefficients152may vary with different instances of the DSA112, the main ADC114, and temperature, for instance.

The multipliers204of the NL corrector116scale the non-linearity terms by the coefficient values. The adders206of the NL corrector116combine the scaled non-linearity terms with the digital data signal150to generate the non-linearity corrected data154. A NL correction coefficient (value) that is to be applied to, e.g., used to scale, a second order NL term in the NL corrector is referred to herein as a “second order NL correction coefficient.” Similarly, a NL correction coefficient (value) that is to be applied to, e.g., used to scale, a third order NL term in the NL corrector is referred to herein as a “third order NL correction coefficient,” and so on.

FIG. 3depicts an example NL coefficient generator122, which may be implemented in the system100shown inFIG. 1. As illustrated, the NL coefficient generator122includes a NL coefficient estimator and tracker300and a NL coefficient estimator and tracker304. In an example implementation, the NL coefficient generator122also includes a second order NL coefficient selector302(which may be incorporated into block300) and a third order NL coefficient selector306(which may be incorporated into block304). Selectors302and306may be used to address aliasing of non-linearity components within the data signal.

Components300-306of the NL coefficient generator122may be implemented as circuitry in hardware or firmware, or implemented by a processor executing instructions stored in memory, such as a microprocessor or microcontroller, which may be the same as or different from controller124. Also, in one example, NL coefficient estimator and tracker300and NL coefficient estimator and tracker304are implemented using separate circuitry, as represented by the separate blocks300and304. For example, NL coefficient estimator and tracker300is implemented using circuitry shown in and described below by reference toFIGS. 7-8, and NL coefficient estimator and tracker304is implemented using the circuitry shown in and described below by reference toFIGS. 11-13. However, in another example implementation, all or a portion of NL coefficient estimator and tracker300and NL coefficient estimator and tracker304is implemented using shared circuitry. However, in a particular example, filters such as Kalman filters used in NL coefficient estimator and tracker300and NL coefficient estimator and tracker304are separate even where other circuitry is shared.

In general, NL coefficient estimator and tracker300processes a data signal output from the main path only (either the signal150or154) to generate some of the NL correction coefficients, which is also referred to herein as “blind non-linearity estimation.” For example, the NL coefficient estimator and tracker300processes the main path data signal to provide only second order NL correction coefficients for correcting second order non-linearity components in the output signal from the main ADC114. The close-in third order source NL components remaining in the signal150are not affected by applying the second order NL correction coefficients.

In one example, the NL coefficient estimator and tracker300only estimates the second order NL correction coefficients. In another example, the NL coefficient estimator and tracker300estimates both the second and third order NL correction coefficients and selects the second order NL correction coefficients there from using the selector302. In this example, the estimator also maintains a measure of decoupling of the estimates of second order and third order coefficients. The second order estimated coefficients are selected based on a decoupling measure. If the measure indicates that there is a sufficient decoupling between the estimates of second and third order coefficients, then, the second order estimated coefficients are picked.

As previously mentioned, NL coefficient estimator and tracker300may be implemented using circuitry shown in and described below by reference toFIGS. 7-8. As later described in further detail, the non-linearity correction circuitry includes a non-linearity coefficient estimation and tracking circuit that captures data at either the input or output of the non-linearity corrector116, generates non-linearity terms based on the captured data, and converts the captured data and the non-linearity terms from time domain to frequency domain. Frequency bins having a low level of signal (determined based on a first threshold) and a high level of non-linearity terms (determined based on a second threshold) are selected for use in non-linearity correction coefficient estimation. If the output of the non-linearity corrector116was captured, then the response of the captured data is converted from residual non-linearity to full non-linearity. Non-linearity correction coefficients are estimated based on the non-linearity terms and captured data for the selected frequency bins.

In general, NL coefficient estimator and tracker304processes a data signal output from the main path (either the signal150or154) and the data signal148output from the reference path to generate some of the NL correction coefficients, which is also referred to herein as “referenced based non-linearity estimation.” The main path is also referred to herein interchangeably as the main data path. The reference path is also referred to herein interchangeably as the reference data path. For example, the NL coefficient estimator and tracker304processes the main and reference path data signals to provide only third order NL correction coefficients for correcting third order non-linearity components in the output signal from the main ADC114. The close-in third order source NL components remaining in the signal150are not affected by applying the third order NL correction coefficients since the reference path is used to subtract these components from the NL coefficient estimation.

In one example, the NL coefficient estimator and tracker304only estimates the third order NL correction coefficients. In another example, the NL coefficient estimator and tracker304estimates both the second and third order NL correction coefficients and selects the third order NL correction coefficients there from using the selector306. In this example, the estimator also maintains a measure of the decoupling of estimates of second order and third order coefficients. The third order estimated coefficients are selected based on a decoupling measure. If the measure indicates theta there is a sufficient decoupling between the estimates of second and third order coefficients, then, the third order estimated coefficients are picked.

As previously mentioned, NL coefficient estimator and tracker304may be implemented using circuitry shown in and described below by reference toFIGS. 11-13. As later described in further detail, the non-linearity correction circuitry includes a main data path and a reference data path. An input signal is digitized in each of the data paths and converted from time domain to frequency domain. A channel estimate is computed for the reference data path with respect to the main data path, and the channel estimate is applied to equalize the reference data path. Equalized reference data path data is subtracted from the main data path data, and the difference is provided to the non-linearity coefficient estimation circuit along with the main data path ADC output for use in generating non-linearity correction coefficients. In this example, the reference path facilitates subtraction of digital step attenuator input (including source non-linearity components and second order non-linearity components caused by the PCB circuitry or even input signal) from the signal150output from the main ADC114.

As further mentioned, there are some use-case scenarios when the second order non-linearity components can alias and fall back close to (or on top of) third order non-linearity components or vice-versa. In such scenarios, either or both of the blind NL estimation or the referenced based NL estimation could become slower to converge or biased. The selectors302and306may be used to address aliasing.

In an example, the NL coefficient generator122could be running in the background, where performance of the blind NL estimation (block300) and the referenced based NL estimation (block304) is interleaved. Accordingly, one estimation method is performed during one interval or cycle of time, and the other estimation method is performed during the next interval or cycle of time. In a particular example, the NL coefficient generator122switches between the two estimation methods every 100 milliseconds. However, depending on how quickly the estimation methods converge relative to each other, one estimation method may be performed for a longer interval of time than the other estimation method.

For example, during both estimation methods, both second and third order NL terms are generated. Additionally, both second and third order NL correction coefficients are tracked, along with their uncertainties or qualities (for example, using a multi-state Kalman filter). Moreover, when statistical-based filters (such as multi-state Kalman filters) are used in the NL coefficient estimations, current data may be weighted using previous or historical data to improve the NL coefficient estimations. For example, both the estimation modes have independent Kalman filters to estimate and track the coefficients. Kalman filter based implementation also tracks the quality of the estimates using a state error covariance matrix. This state error covariance matrix data may be used to determine the decoupling between the estimated coefficients. If the error covariance matrix indicates that the covariance between any second order coefficient estimate and any third order coefficient estimate is lower than a configured threshold, then, they are decoupled.

During blind NL estimation, second order NL coefficients are selected (block302) based on the error covariance of the estimates of the second order NL coefficients with the third order NL coefficients. Similarly, during reference based NL estimation, third order NL coefficients are selected (block306) based on the error covariance of the estimates of the third order NL coefficients with the second order NL coefficients. The NL coefficient estimations may be deemed reliable and, thereby, selected and provided to the NL corrector116when the error covariance, e.g., the covariance correlation in decibels (dB), falls below a programmable threshold.

FIG. 4depicts a diagram400illustrating example simulation results for error covariance between second and third order non-linearity coefficients generated in the non-linearity coefficient generator122shown inFIG. 3. Diagram400illustrates a plot402of covariance correlation in dB over a number of interrupts during which the covariance value is calculated.

In this first scenario, the ADC114sampling rate (Fs) is 256. A single tone is fed at (frequency) bin #51 (approximately Fs/5), and frequency bins102and103are used for non-linearity coefficient estimation. In this case, the 2F second order non-linearity component will fall into bin102. The 3F third order non-linearity coefficient will fall into bin153and alias back to bin103(Fs−3F=256−153). Since there is a one bin gap, the NL coefficient estimations converge over time (e.g., after about 30 seconds), as shown by the covariance correlation decreasing. Once the covariance value is at an acceptable level (e.g., −70 dB), the NL coefficient generator122can resume providing the NL correction coefficients to the NL corrector116.

FIG. 5depicts another diagram500illustrating example simulation results for error covariance between second and third order non-linearity term coefficients generated in the non-linearity coefficient generator122shown inFIG. 3. Diagram500illustrates a plot502of covariance correlation in dB over a number of interrupts during which the covariance value is calculated.

In this second scenario, the ADC114sampling rate (Fs) is 256. A single tone is fed at bin #51.2 (exactly Fs/5), and frequency bins102and103are used for non-linearity coefficient estimation. In this case, the 3F third order non-linearity component aliases back on top of the 2F second order non-linearity component. When this occurs, the NL coefficient estimations don't converge, as shown by the covariance correlation staying steady over time. Accordingly, the NL coefficient generator122can cease providing the NL correction coefficients to the NL corrector116until the covariance correlation is at an acceptable level.

FIG. 6depicts a flow diagram illustrating an example method600for non-linearity correction, which may be performed by the non-linearity correction circuitry shown inFIGS. 1-3. Though depicted sequentially as a matter of convenience, at least some of the actions shown can be performed in a different order and/or performed in parallel. Additionally, some implementations may perform only some of the actions shown.

In general, the circuitry receives a first output signal (e.g., signal150or154) from a data signal path that includes a first ADC and a NL corrector and receives a second output signal from a second ADC. The circuitry generates first NL coefficients (e.g., second order NL coefficients) using the first output signal and generates second NL coefficients (e.g., third order NL coefficients) using the first and second output signals. The circuitry applies the first and second NL coefficients to compensate for NL components in a digitized signal output from the first ADC, to generate a corrected digitized signal.

More particularly, at block602, a signal is received into a data signal (main) path and a reference path. For example, the signal146is received into the DSA112of the main path and into the DSA118of the reference path. At block604, the ADC112in the main path and the ADC120in the reference path each digitizes the signal. At block606, the NL coefficient generator122determines whether a reference (“REF”) ADC flag was received from the controller124.

If the REF ADC flag was received, at block608the NL coefficient estimator and tracker304(and in one implementation the third order NL coefficient selector306) receives a first digitized signal from the main path (either the signal150or the signal154) and a second digitized signal from the reference path (signal148). NL coefficient estimator and tracker304(and selector306if used) processes the two digitized signals using blocks610-620to generate and provide third order NL coefficients to the NL corrector116.

With reference to the processing, at block610, the NL coefficient estimator and tracker304generates NL terms, either only third order NL terms if selector306is not used or both second order and third order NL terms if selector306is used. At block612, the NL coefficient estimator and tracker304generates first frequency domain data from the first and second digitized signals and the NL terms.

At block614, the NL coefficient estimator and tracker304performs a signal subtraction to generate second frequency domain data. For example, the frequency domain data for the signal148is subtracted from the frequency domain data for the signal150or154. The resulting frequency domain data from the subtraction and the frequency domain data for the NL terms make up the second frequency domain data. The subtraction, at block614, removes common input signal along with source non-linearity components and non-linearity components caused by the PCB circuitry108.

At block616, the NL coefficient estimator and tracker304estimates NL coefficients using the second frequency domain data. Where selector306is not used, only third order NL coefficients are estimated based on or using the third order NL terms. Otherwise, both second and third order NL coefficients are estimated based on or using the second and third order NL terms. At block618, the selector306determines a decoupling measure, e.g., a first covariance value, based on the estimates of the second and third order NL coefficients, and selects the third order NL coefficients based on the first covariance value. The NL coefficient generator122provides the third order NL coefficients to the NL corrector116, at block620.

If the REF ADC flag was not received, at block622the NL coefficient estimator and tracker300(and in one implementation the second order NL coefficient selector302) receives a only the digitized signal from the main path (either the signal150or the signal154). NL coefficient estimator and tracker300(and selector302if used) processes the digitized signal using blocks624-632to generate and provide second order NL coefficients to the NL corrector116.

With reference to the processing, at block624, the NL coefficient estimator and tracker300generates NL terms, either only second order NL terms if selector302is not used or both second order and third order NL terms if selector302is used. At block626, the NL coefficient estimator and tracker300generates frequency domain data from the received digitized signal and the NL terms.

At block628, the NL coefficient estimator and tracker300estimates NL coefficients using the frequency domain data. Where selector302is not used, only second order NL coefficients are estimated based on or using the second order NL terms. Otherwise, both second and third order NL coefficients are estimated based on or using the second and third order NL terms. At block630, the selector302determines a decoupling measure, e.g., a second covariance value, based on the estimates of the second and third order NL coefficients, and selects the second order NL coefficients based on the second covariance value. The NL coefficient generator122provides the second order NL coefficients to the NL corrector116, at block632.

At block634, the NL corrector116receives the second and third order NL coefficients. The NL corrector116corrects non-linearity components in the signal150output from the main ADC114, using the second and third order NL coefficients, to generate a corrected digitized signal154. The second and third order NL coefficients are applied to compensate for the non-linearity components caused by circuitry in the data signal path without compensating for the source non-linearity components. More particularly, second order NL coefficients are applied to compensate for second order non-linearity components caused by the PCB circuitry108, the DSA112, and the ADC114, and the third order NL coefficients are applied to compensate for third order non-linearity components caused by the DSA112and the ADC114.

FIG. 7depicts non-linearity correction circuitry700that includes the NL corrector116and an example NL coefficient estimator and tracker300that processes a digital signal output from the main path alone, to facilitate non-linearity correction, which may be implemented in the non-linearity correction circuitry shown inFIGS. 1 and 3. In one example, the digital signal output from the main path and processed by the NL coefficient estimator and tracker300is the signal150output from the main ADC114. In another example, the digital signal output from the main path and processed by the NL coefficient estimator and tracker300is the signal154output from the NL corrector116. The NL coefficient estimator and tracker300generates non-linearity correction coefficients, for use by the non-linearity corrector116, at run-time during normal operation of the non-linearity corrector116.

The NL coefficient estimator and tracker300includes a data capture circuit706, a non-linearity term generation circuit708, a time-to-frequency conversion circuit710, a bin identification circuit712, a residual non-linearity conversion circuit714, and a non-linearity coefficient generation circuit716. The data capture circuit706is coupled to the input of the non-linearity corrector116and to the output of the non-linearity corrector116to selectably capture raw data samples of the digital signal150or samples of the non-linearity corrected data154for use in generating non-linearity correction coefficients.

The data capture circuit706is coupled to the non-linearity term generation circuit708and the time-to-frequency conversion circuit710. The non-linearity term generation circuit708receives captured data from the data capture circuit706and processes the data to generate non-linearity terms. For example a set of 256+k samples are captured from x[n] and from the captured samples different NL terms such as x3[n], x2[n]x′[n], x2[n]x[n+1], (x′[n])3, or higher order NL terms, are generated. For each NL term, 256 samples are generated. However, an additional ‘k’ samples (to total 256+k) are captured at the input to generate a valid 256 samples for each NL term due to the memory effect in generating the digital derivative or other memory terms. In an example, the digital derivative is generated by an anti-symmetric finite impulse response (FIR) filter, or may be generated by other known means.

The non-linearity term generation circuit708is coupled to the time-to-frequency conversion circuit710and provides the non-linearity terms generated based on the data captured by the data capture circuit706to the time-to-frequency conversion circuit710. The time-to-frequency conversion circuit710converts the data captured by the data capture circuit706and the non-linearity terms generated by the non-linearity term generation circuit708from time-domain to frequency-domain. For example, time-to-frequency blocks711(only one of four labeled) of the time-to-frequency conversion circuit710apply a fast Fourier transform (“FFT”) to the captured data received from the data capture circuit706and the non-linearity terms generated by the non-linearity term generation circuit708. In some implementations, the time-to-frequency conversion circuit710applies a FFT after multiplying the input data by a window function.

The time-to-frequency conversion circuit710is coupled to the bin identification circuit712and provides the frequency domain data derived from the data captured by the data capture circuit706, and its non-linearity terms, to the bin identification circuit712. The bin identification circuit712processes the frequency domain data to identify frequency bins to be used for generating the non-linearity correction coefficients. More specifically, the bin identification circuit712identifies frequency bins that have a high level of created non-linearity terms and a low level of input signal, e.g., as compared to respective thresholds, for use in generating the non-linearity correction coefficients.

The residual non-linearity conversion circuit714allows the non-linearity corrected data154produced by the non-linearity corrector116to be used as input to the non-linearity coefficient estimator and tracker300, which provides a performance improvement for the second order effects arising from a large raw level of non-linearity. The residual non-linearity conversion circuit714modifies the frequency response of the non-linearity corrected data154by adding multiple correction terms to the frequency response of the non-linearity corrected data154. Each correction term is a product of the frequency response of each non-linearity term with the corresponding correction coefficient value applied in the non-linearity corrector116. The modification of the frequency response of the non-linearity corrected data154converts the non-linearity measurement from a “residual non-linearity measurement” to a “full non-linearity measurement.”

The frequency bins identified by the bin identification circuit712and as modified by the residual non-linearity conversion circuit714are processed by the non-linearity coefficient generation circuit716to estimate and track non-linearity correction coefficients for each DSA range for use by the non-linearity corrector116. The non-linearity coefficient generation circuit716generates the non-linearity correction coefficients for a current use configuration of the DSA112and the ADC114. The non-linearity coefficient generation circuit716includes a multi-state Kalman filter to generate the non-linearity correction coefficients, in some example implementations. At the frequency bins selected by the bin identification circuit712, the non-linearity terms responses serve as weights to the coefficients to be estimated, and the “full non-linear measurement” provided by the residual non-linearity conversion circuit714serves as a measurement as shown in matrix relation in equation (5) below.

With further regards to the estimation performed by the NL coefficient generation circuitry716, assume that the digital non-linearity correction applied to the output signal150from ADC114is modeled using four terms as:
y[n]=x[n]+c1x3[n]+c2x2[n]x′[n]+c3x2[n]+c4x[n]x′[n]+noise  (1)
where:
x[n] is the discretized output of the ADC104or analog circuit;
x′[n] is the effective derivative of x[n] (the output signal150from the ADC114);
ciis the coefficient of each non-linearity term; and
y[n] is the output of the digital non-linearity corrector.

Equation (1) can be written in the frequency domain as:
F(y[n])=F(x[n])+c1F(x3[n])+c2F(x2[n]x′[n])+c3F(x2[n])+c4F(x[n]x′[n])+noise  (2)
⇒c1F(x3[n])+c2F(x2[n]x′[n])+c3F(x2[n])+c4F(x[n]x′[n])=F(y[n])−F(x[n])−F(noise)
where equation (2) is valid for each frequency bin.

The left side of equation (2) represents the non-linearity introduced by the ADC114or an associated analog circuit. At frequency bins where there is no ADC input signal, the above equation (2) can be written as:
⇒c1F(x3[n])+c2F(x2[n]x′[n])+c3F(x2[n])+c4F(x[n]x′[n])=−F(x[n])−F(noise)  (3)
Equation (3) can be used for estimating the non-linear coefficients c1, c2, c3, and c4. Also, the raw non-linearity levels are below about −55 dBFS. In practice all frequency bins whose signal level is lower than a threshold, e.g., −55 dBFS can be used for estimating the coefficients.

In the selected bins (selected by the bin identification circuit712), the linear equation simplifies to:
⇒c1F(x3[n])+c2F(x2[n]x′[n])+c3F(x2[n])+c4F(x[n]x′[n])=−F(x[n])−F(noise)  (4)
The non-linearity correction circuits identify multiple such linear equations and solves the equations to estimate all non-linearity term coefficients.

Namely, for each selected bin, there is one linear equation. For example, for x3[n] non-linearity (or any other third order nonlinearity or a combination of third order nonlinearity terms), each data block provides six equations for a two tone input. If there are 100 data capture blocks in one non-linearity estimation window, then 600 equations would be stored.

eq1→eq2→⋮eqN→⁡[h1,1h1,2…h1,Th2,1h2,2…h2,T⋮⋮⋱⋮hN,1hN,2…hN,T]⁢c=[m1m2⋮mN]⇒Hc=m(5)
where:
N is the number of equations, e.g., in equation (5);
T is the number of non-linear terms, example 1: For x3[n], x2x′[n], T=2, example 2: For x3[n], x2[n]x′[n], x2[n]x[n+1], (x′[n])3, T=4;
hi,jis the Fourier transform of the jth non-linearity (NL) term from the ith equation at the selected frequency bins from the selected capture set;
c is a T×1 vector of NL term coefficients to be estimated; and
miis the measurement of the ith equation which is the Fourier transform of the ADC output x[n] at the selected frequency bins from the selected capture set.
Such a system of linear equations (Hc=m) is solved (e.g., using a least squares or Kalman filter based technique) to estimate and track the non-linearity coefficients.

Some implementations of the non-linearity correction circuits allow non-linearity corrected data to be used as input for non-linearity coefficient estimation. If the coefficient estimator input is taken from the input of the non-linearity corrector, the non-linearity estimator sees the entire non-linearity of output from the ADC114. However, if the coefficient estimator input is taken from the output of the non-linearity corrector116, then the non-linearity estimator only sees residual non-linearity that is left over after non-linearity correction.
HΔc=m→H(c−ccorr)=m→Hc=Hccorr+m(6)

Hence, in some implementations Hccorris added to m before coefficient estimation to equivalently generate a modified ‘m’ which reflects the entire non-linearity. This enables the estimator to estimate the complete non-linearity in signal150. Using non-linearity corrector output signal as input to the coefficient estimation leads to a performance improvement due to reduction of second order effects. Other implementations also estimate residual coefficients from the residual non-linearity and add it to the currently programmed coefficients.

FIG. 8depicts an example bin identification circuit800, which may be implemented in the non-linearity coefficient estimator and tracker shown inFIG. 7, for instance implementing bin identification circuit712. The bin identification circuit800includes a signal power circuit802, a non-linearity term power circuit804, a signal power comparator806, a non-linearity term power comparator808, and a decision circuit810.

The signal power circuit802computes a value of signal power for each frequency bin of the frequency domain signal received from the time-to-frequency conversion circuit710. Similarly, the non-linearity term power circuit804computes a value of non-linearity term power for each frequency bin of the frequency domain non-linearity terms received from the time-to-frequency conversion circuit710. For a given frequency bin, the non-linearity term power circuit804computes the non-linearity term power as the sum of the squared magnitude or sum of magnitude of all non-linearity terms at the given frequency bin in some implementations. In other implementations, magnitude of a non-linearity term that exceeds a threshold is applied to compute non-linearity term power. In other implementations, magnitude of each non-linearity term's frequency response at a given bin is compared with a threshold and even if one of them crosses the threshold it is considered as passing the non-linearity power threshold.

For example let the non-linearity terms be x3[n], x2[n]x′[n], x2[n]x[n+1], (x′[n])3, then one metric for determining high level of created non-linearity terms at a frequency bin is:
|F(x3(n))|2+|Fx2(n)x′(n)|2+|F(x2(n)x(n+1))|2+|F((x′[n])3)|2>NLThresh  (7)
and one metric for determining low level of signal level at a frequency bin is:
|F(x(n))|<SigThresh  (8)
Both the conditions above should be met to select a frequency bin for estimation.

The signal power comparator806compares the frequency bin signal power values generated by the signal power circuit802to a signal power threshold. The non-linearity term power comparator808compares the frequency bin non-linearity term power values generated by the non-linearity term power circuit804to a non-linearity term power threshold. The decision circuit810identifies the frequency bins to be applied in non-linearity correction coefficient estimation based on the results of the comparisons performed by the signal power comparator806and the non-linearity term power comparator808. Frequency bins having a high non-linearity term power (e.g., power above the non-linearity term power threshold, NLThresh) and a low signal power (e.g., power below the signal power threshold, SigThresh) are selected for use in non-linearity correction coefficient estimation. Thus, the decision circuit810identifies frequency bins for which the signal power is less than the signal power threshold and the non-linearity term power is greater than the non-linearity term power threshold as suitable for use in non-linearity correction coefficient estimation.

In an example of bin identification circuit800operation for x3[n] or any third order non-linearity, with a single tone input at f, the frequency response of x3[n] is high at f and 3f. Signal level is high at the fundamental frequency f. The bin identification circuit800selects only the bins corresponding to 3f for use in non-linearity correction coefficient estimation.

In an example of bin identification circuit800operation for x2[n] or any second order non-linearity, with a single tone input at f, the frequency response of x2[n] is high at 0 and 2f. Signal level is high at the fundamental frequency f. The bin identification circuit800selects only the bins corresponding to 0 and 2f for use in non-linearity correction coefficient estimation.

In an example of bin identification circuit800operation for x2[n] or any second order non-linearity, with two tone inputs at f1 and f2, the frequency response of x2[n] is high at 0, f2−f1, 2f1, f1+f2, and 2f2. The bin identification circuit800selects only the bins corresponding to 0, f2−f1, 2f1, f1+f2, and 2f2 for use in non-linearity correction coefficient estimation.

In an example of bin identification circuit800operation for a combination of second and third order non-linearity terms, with a single tone input at f, the bin identification circuit800selects only the bins corresponding to 0, 2f, and 3f for use in non-linearity correction coefficient estimation.

In an example of bin identification circuit800operation for a combination of second and third order non-linearity terms, with two tone inputs f1 and f2, the bin identification circuit800selects both the second order bins (0, f2−f1, 2f1, f1+f2, and 2f2) and the third order bins (2f1−f2, 2f2−f1, 2f1+f2, 3f1, 3f2, 2f2+f1) excluding the fundamental bins f1 and f2.

FIGS. 9A, 9B, and 9Cdepict example bin identification in the bin identification circuit712.FIG. 9Ashows the signal power for a two tone input with frequencies f1and f2. For this input signal, the third order non-linearity term (x3) or any other third order non-linearity term has eight components at 2f1−f2, f1, f2, 2f2−f1, 2f1+f2, 3f1, 3f2, and 2f2+f1. Based on comparison of the signal and non-linearity term to the respective power thresholds, the frequency bins at 2f1−f2, 2f2−f1, 2f1+f2, 3f2, and 2f2+f1, as illustrated byFIG. 9B, are selected by the bin identification circuit800for use in non-linearity correction coefficient estimation.

While single and two-tone examples have been provided herein to describe operation of the bin identification circuit800, in practice, the input signal is narrow or wide-band modulated data.FIG. 9Cshows an example bin identification for wide band data occupying a band from f1 to f2. The regions selected for estimation of third order non-linearity terms are (2f1−f2 to f1), (f2 to 2f2−f1), and (3f1 to 3f2). The regions selected for estimation of second order terms are (0 to f2−f1) and (2f1 to 2f2). These regions can be aliased back to specific frequencies based on the sampling rate of the ADC114. In some cases, if the aliased frequencies fall back into the signal band, then those frequency bins are used since they will fail the signal power check.

FIG. 10depicts a flow diagram illustrating an example method1000for non-linearity correction, which may be performed by the non-linearity correction circuitry shown inFIGS. 1 and 7. Though depicted sequentially as a matter of convenience, at least some of the actions shown can be performed in a different order and/or performed in parallel. Additionally, some implementations may perform only some of the actions shown. Operations of the method1000are performed by implementations of the non-linearity correction circuit700.

In block1002, the non-linearity correction circuit700receives a signal as input to the DSA112and the ADC114. For example, an input signal is provided at the input of the DSA circuit112.

In block1004, the ADC114digitizes the input signal. The data capture circuit706captures output of the ADC114. In some implementations of the method1000, the data capture circuit706selectably captures the output of the ADC114, or the output of the non-linearity corrector116for use as estimation input data.

In block1006, the non-linearity term generation circuit708processes the captured data and generates non-linearity terms for the captured data. The time-to-frequency conversion circuit710converts the data captured by the data capture circuit706and the non-linearity terms generated by the non-linearity term generation circuit708from time-domain to frequency-domain.

In block1008, the bin identification circuit712, identifies frequency bins to apply in estimation of the non-linearity correction coefficients. The identified frequency bins are frequency bins having signal power below a first threshold and non-linearity power above a second threshold.

In block1010, the residual non-linearity conversion circuit714converts residual non-linearity measurement to full non-linearity measurement by modifying the frequency response of signal at the identified frequency bins. The frequency response is modified by adding a plurality of correction terms to the signal, where each correction term is a product of frequency response of the non-linearity terms with corresponding non-linearity correction coefficients currently used in the non-linearity corrector116.

In block1012, the non-linearity coefficient generation circuit716generates and tracks non-linearity correction coefficients based on the signal and non-linearity terms at the frequency bins identified by the bin identification circuit712.

In block1014, the non-linearity corrector116applies the non-linearity correction coefficients to compensate the non-linearity corrected data154for the non-linearities introduced in the digital signal150by the main path.

FIG. 11depicts an example non-linearity correction circuitry that uses digital signals output from both the data signal path and the reference path, to facilitate non-linearity correction, which may be implemented in the non-linearity correction circuitry shown inFIGS. 1 and 3.FIG. 11shows a block diagram for a non-linearity correction circuit1100that includes a reference data path1104that prevents the non-linearity correction circuit1100from compensating for input signal non-linearity by subtracting the input signal from the signal used to generate non-linearity correction coefficients.

The non-linearity correction circuit1100includes the reference path1104having a DSA circuit118, an ADC120, a data capture circuit1108, a time-to-frequency conversion circuit1110, a channel estimation circuit1112, a channel equalization circuit1114, and a source non-linearity subtraction circuit1116. The DSA circuit118includes an input coupled to an input of the DSA circuit112, and an output coupled to an input of the ADC120. The reference path1104is more linear than the data path (main data path) formed by the DSA112and the ADC114. For instance, the ADC120is more linear but possibly noisier than the ADC114. The ADC114and the ADC118digitize the input signal146.

The non-linearity correction circuit also includes a data capture circuit706, a non-linearity term generation circuit708, a time-to-frequency conversion circuit710, a bin identification circuit712, a residual non-linearity conversion circuit714, and a non-linearity coefficient generation circuit716. In an example, these components are implemented similarly to the components inFIG. 7having the same reference numbers.

The data capture circuit1108is coupled to the output of the ADC120to capture data samples. The time-to-frequency conversion circuit1110is coupled to the data capture circuit1108. The samples captured by capture circuit1108are provided to the time-to-frequency conversion circuit1110. The time-to-frequency conversion circuit1110converts the time domain captured samples of the ADC120to frequency domain output signals1120. For example, the time-to-frequency conversion circuit1110applies an FFT to the captured output signals received from the data capture1108to generate the frequency domain output signals1120.

The time-to-frequency conversion circuit1110is coupled to the channel estimation circuit1112. The channel estimation circuit1112receives the frequency domain signals1120generated by the time-to-frequency conversion circuit1110and the frequency domain signals1118generated by the time-to-frequency conversion circuit711and estimates a channel of the data path formed by the DSA112and the ADC114relative to the reference path of the DSA118and the ADC120. The channel estimation circuit1112is coupled to the channel equalization circuit1114. The channel equalization circuit1114receives channel estimates from the channel estimation circuit1112and applies the channel estimates to equalize the frequency domain output signal1120.

The channel equalization circuit1114is coupled to the source non-linearity subtraction circuit1116. The source non-linearity subtraction circuit1116receives the frequency domain output signal1118and the equalized output signal1122generated by the channel equalization circuit1114. The source non-linearity subtraction circuit1116subtracts the equalized output signal1122from the frequency domain output signal1118to effectively remove the input signal146from the signal provided to the bin identification circuit712. Thus, the output of the source non-linearity subtraction circuit effectively contains the non-linearity introduced by ADC114and DSA112. The source non-linearity subtraction circuit1116is coupled to the bin identification circuit712and provides frequency domain output signal1118less the equalized output signal1122to the bin identification circuit712for use in determining non-linearity correction coefficients. In systems that include the reference path, some implementations of the non-linearity estimation circuit1100omit checking for low signal power in the bin identification circuit800because the fundamental signal has been removed from the signal processed by the non-linearity correction circuit116.

In practice, circuit components of the main data path and the reference path are not well matched. For example, there are gain, delay, and/or bandwidth mismatches between the main data path and the reference path. The mismatches vary with the settings of the digital step attenuator in some implementations. To compensate for such mismatches, the output of a reference ADC (an ADC in the reference path) is fed to a channel equalizer before being used for signal subtraction. The channel equalizer matches the two data paths for precise cancellation of input signal and source non-linearity. The following non-linearity estimation equation is used for estimation at each identified bin:
⇒c1F(x3[n])+c2F(x2[n]x′[n])+c3F(x2[n])+c4F(x[n]x′[n])=−F(x[n])−Ch*F(xref[n])−F(noise)  (9)

Once the reference path is matched to the main path, the output of the reference path effectively represents the input to the ADC and DSA circuit. When subtracted from output of the ADC114what is left are components introduced by ADC and DSA non-linearity and noise. This is what is represented by the right side of equation (9). Note that the reference path can be noisy and the effect of noise on estimation can be minimized by averaging over time.

Ch models frequency dependent mismatch between the paths. The subtraction of Ch*F(xref(n)) cancels out all of the ADC input present at the selected bins, and, as a result, only non-linearity components of the ADC114and DSA112remain after cancellation.

FIG. 12depicts an example channel estimation circuit1200, which may be implemented in the non-linearity coefficient estimator and tracker shown inFIG. 11.FIG. 12shows a block diagram for a channel estimation circuit1200suitable for use in the reference path1104. The channel estimation circuit1200is an implementation of the channel estimation circuit1112. The channel estimation circuit1200includes a raw channel estimation circuit1202, a base channel removal circuit1204, base channel memory1206, a slope and intercept estimation circuit1208, a base channel estimator1210, an intercept memory1212, and a slope memory1214. The raw channel estimation circuit1202receives the frequency domain output signal1118and the frequency domain output signal1120and provides a raw channel estimate value for each frequency bin by correlating main path frequency domain response with reference frequency domain response at each bin. The raw channel estimate is, for example, obtained as shown in equation (10). The raw inverse channel estimate is a ratio of accumulated cross correlation of frequency responses of main and reference paths to accumulated power of main path response for a given frequency bin.

The base channel removal circuit1204is coupled to the raw channel estimation circuit1202and the base channel memory1206. The base channel memory1206provides base channel values to the base channel removal circuit1204for use in adjustment of the raw channel values. The base channel removal circuit1204receives the raw channel estimates generated by the raw channel estimation circuit1202and adjusts each raw channel estimate to remove a base channel estimate value. With the raw channel estimates and the bin locations for the estimates at a given DSA setting, the base channel removal circuit1204compensates the base channel response contribution from the raw channel estimates at the bin locations.

The slope and intercept estimation circuit1208is coupled to the base channel memory1206. The slope and intercept estimation circuit1208processes the adjusted channel value received from the base channel removal circuit1204to estimate and track a slope value and an intercept value for each DSA setting. The slope and intercept estimation circuit1208is coupled to the intercept memory1212and the slope memory1214. The slope and intercept estimation circuit1208stores intercept values in the intercept memory1212and stores slope values in the slope memory1214.

The base channel estimator1210is coupled to the intercept memory1212and the slope memory1214. The base channel estimator1210estimates base channel values using the slope and intercept values respectively stored in the slope memory1214and the intercept memory1212. The base channel values model the frequency dependent common mismatch across different DSA settings, while the slope and intercept values model the small residual mismatch for each DSA setting. The base channel estimator1210is coupled to the base channel memory1206, and stores the base channel values in the base channel memory1206. The base channel estimator1210computes gain and delay mismatches for each DSA setting using the corresponding intercept and slope values. If a common gain and/or delay component is identified across all DSA settings, the base channel estimator1210applies the common part of the mismatch to refine the base channel response. The refined base channel response is stored in the base channel memory1206. Given the refined base channel response, the previously estimated intercept and slope parameters are adjusted across all DSA settings to reflect only the residual mismatch. The adjusted slope and intercept values are stored in the slope memory1214and the intercept memory1212respectively.

Once we know a common gain or delay mismatch across all the DSA settings is established, then the base channel is updated as:

new-⁢base-⁢ch⁡[bin]=old-⁢base-⁢ch⁡[bin]*gm⁢m*e-j*2*p⁢i*binNFFT*dm⁢m(11)
where:
bin is a particular frequency bin location, and bin ranges from 0, 1, . . . , NFFT−1;
gmmis common gain mismatch across all the DSA settings;
dmmis common delay mismatch across all the DSA setting; and
NFFTis size of FFT used for time-to-frequency conversion.
old_bases_ch is unity at start in some implementations.

When the base channel has been updated, the intercept and slope are updated for each DSA setting as follows:
channel[bin][DSA]=old_base_ch[bin]*(old_Intercept[DSA]+bin*old_slope[DSA])=new_base_ch[bin]*(new_Intercept[DSA]+bin*new_slope[DSA])  (12)
Equation (12) is applied at two bin locations for each DSA index. For example, at bin=10 and 100. Then, both the linear equations are solved to derive new intercept and new slope values for each DSA index.

FIG. 13depicts an example channel equalization circuit, which may be implemented in the non-linearity coefficient estimator and tracker shown inFIG. 11.FIG. 13shows a block diagram for a channel equalization circuit1300suitable for use in the reference path1104. The channel equalization circuit1300is an implementation of the channel equalization circuit1114. The channel equalization circuit1300is coupled to the time-to-frequency conversion circuit1110, the base channel memory1206, the intercept memory1212, and the slope memory1214. The channel equalization circuit1300includes a computation circuit1302that computes a channel compensation value (a channel equalization value) for each frequency bin and applies the channel compensation value to the frequency domain reference data for each frequency bin to equalize the reference path1104. The computation circuit1302of the channel equalization circuit1300computes the channel compensation value as:
Channel[DSA][Bin]=BaseChannel[Bin]*(CIntercept[DSA]+CSlope[DSA]*Bin)  (13)
where:
Channel is a channel compensation value;
DSA is an attenuation selection index (a DSA index value) applied in the DSA circuit112;
Bin is a frequency bin index;
BaseChannel is a base channel value retrieved from the base channel memory1206;
Cinterceptis an intercept value retrieved from the intercept memory1212; and
Cslopeis a slope value retrieved from the slope memory1214.

The channel equalization circuit1300computes an equalized data value a product of the channel compensation value and a value of the frequency domain output signal1120(a frequency domain data value). Implementations of the channel equalization circuit1300are compact in size (e.g., in a range of ⅛ththe size of other equalization circuits).

FIG. 14depicts a flow diagram illustrating an example method1400for non-linearity correction, which may be performed by the non-linearity correction circuitry shown inFIGS. 1 and 11. Though depicted sequentially as a matter of convenience, at least some of the actions shown can be performed in a different order and/or performed in parallel. Additionally, some implementations may perform only some of the actions shown. Operations of the method1400are performed by implementations of the non-linearity correction circuit1100.

In block1402, the non-linearity correction circuit1100receives a signal as input to the DSA112of the main data path and the DSA118of the reference path1104. The input signal includes non-linearity in some examples.

In block1404, the ADC114digitizes the input signal in the main data path and the ADC120digitizes the input signal in the reference path1104. The data capture circuit706captures output of the ADC114, and the data capture circuit1108captures output of the ADC120. In some implementations of the method1400, the data capture circuit706selectably captures the output of the ADC114or the output of the non-linearity corrector circuit116for use as estimation input data. The time-to-frequency conversion circuit711converts the captured digital output of the ADC114from time domain to frequency domain, and the time-to-frequency conversion circuit1110converts the captured digital output of the ADC120from time domain to frequency domain.

In block1406, the channel estimation circuit1112processes the frequency domain data provided by the time-to-frequency conversion circuits1110and711to generate a channel estimate for the reference path1104relative to the main data path.

In block1408, the channel equalization circuit1114applies the channel estimate generated by the channel estimation circuit1112to equalize the frequency domain output signal1120.

In block1410, the source non-linearity subtraction circuit1116subtracts the equalized output signal1122from the frequency domain output signal1118,

In block1412, the non-linearity term generation circuit708processes the captured data and generates non-linearity terms for the data captured by data capture circuit706. The time-to-frequency conversion circuit710converts the non-linearity terms generated by the non-linearity term generation circuit708from time-domain to frequency-domain.

In block1414, the bin identification circuit712, identifies frequency bins to apply in estimation of the non-linearity correction coefficients. The identified frequency bins are frequency bins having signal power below a first threshold and non-linearity power above a second threshold.

In block1416, the residual non-linearity conversion circuit714converts residual non-linearity measurement to full non-linearity measurement by modifying the frequency response of signal at the identified frequency bins. The frequency response is modified by adding a plurality of correction terms to the signal, where each correction term is a product of frequency response of the non-linearity terms with corresponding non-linearity correction coefficients currently used in the non-linearity corrector circuit116.

In block1418, the non-linearity coefficient generation circuit716generates and tracks non-linearity correction coefficients based on the signal and non-linearity terms at the frequency bins identified by the bin identification circuit712.

In block1420, the non-linearity corrector circuit116applies the non-linearity correction coefficients to compensate the non-linearity corrected data154for the non-linearities introduced in the digital signal150by the main path.

The above examples are illustrative of several possible embodiments of various aspects of the present disclosure, wherein equivalent alterations and/or modifications will occur to others skilled in the art upon reading and understanding this specification and the annexed drawings. Modifications are possible in the described embodiments, and other embodiments are possible, within the scope of the claims.