The present invention is related to digital signal processing techniques and, more particularly, to techniques for evaluating user-defined non-linear functions.
Digital pre-distortion (DPD) is a technique used to linearize a power amplifier in a transmitter to improve the efficiency of the power amplifier. A power amplifier in a transmitter typically must be substantially linear, so that a signal is accurately reproduced. Compression of the input signal or a non-linear relationship between the input signal and output signal causes the output signal spectrum to spill over into adjacent channels, causing interference. This effect is commonly referred to as spectral re-growth.
A digital pre-distortion circuit inversely models the gain and phase characteristics of the power amplifier and, when combined with the amplifier, produces an overall system that is more linear and reduces distortion that would otherwise be caused by the power amplifier. An inverse distortion is introduced into the input of the amplifier, thereby reducing any non-linearity the amplifier might otherwise have.
Digital pre-distortion is typically implemented using hardwired logic due to the high sampling, rates. While such hardware-based DPD techniques effectively linearize a power amplifier they suffer from a number of limitations, which if overcome, could further improve the efficiency and flexibility of DPD circuits. For example, existing hardware-based DPD techniques lack flexibility and it is expensive, time consuming and challenging to modify the DPD design for a new RF design.
Digital pre-distortion and other non-linear applications must often process one or more non-linear functions that include one or more parameters specified by a user, such as filter coefficient values or values from a look-up table. A need therefore exists for a processor having an instruction set with one or more user-defined non-linear functions for digital pre-distortion (DPD) and other non-linear applications to enable, for example, a high performance software implementation of DPD.
Generally, a processor is provided having an instruction set with user-defined non-linear functions for digital pre-distortion (DPD) and other non-linear applications. According to one aspect of the invention, a signal processing function, such as DPD, is implemented in software by obtaining at least one software instruction that performs at least one non-linear function for an input value, x, wherein the at least one non-linear function comprises at least one user-specified parameter; in response to at least one of the software instructions for at least one non-linear function having at least one user-specified parameter, performing the following steps: invoking at least one functional unit that implements the at least one software instruction to apply the non-linear function to the input value, x; and generating an output corresponding to the non-linear function for the input value, x.
In addition, the user-specified parameter can optionally be loaded from memory into at least one register. The user-specified parameter may comprise a look-up table storing values of the non-linear function for a finite number of input values. The user-specified parameter may comprise one or more coefficients employed by the non-linear function to perform polynomial interpolation between entries of the look-up table.
A more complete understanding of the present invention, as well as further features and advantages of the present invention, will be obtained by reference to the following detailed description and drawings.
According to one aspect of the invention, digital pre-distortion non-linear processing and other non-linear applications are performed in software on a processor having an instruction set with one or more user-defined non-linear functions pre-distortion (DPD) and other non-linear applications. A user-defined non-linear instruction is used to compute a non-linear function having least one parameter that must be specified by a user. The user-defined non-linear ruction receives with an input scalar or vector and produces an output scalar or vector. In the event, of an input vector, the output vector comprises output samples that are a non-linear function of the input samples.
While the present invention is illustrated in the context of digital pre-distortion, the present invention can be used for any non-linear application employing one or inure user-defined non-linear functions.
The present invention can be applied in handsets, base stations and other network elements.
The output of the digital pre distorter 230 is applied in parallel to two digital analog converters (DACs) 240-1, 240-2, and the analog signals are then processed by a quadrature modulation stage 250 that further up converts the signals to an RF signal.
The output 255 of the quadrature modulation stage 250 is applied to a power amplifier 260, such as a Doherty amplifier or a drain modulator. As indicated above, the digital pre-distorter 230 linearizes the power amplifier 260 to improve the efficiency, of the power amplifier by extending its linear range to higher transmit powers.
In a feedback path 265, the output of the power amplifier 260 is applied to an attenuator 270 before being applied to a demodulation stage 280 that down converts the signal to baseband. The down applied to an analog to digital converter (ADC) 290 to digitize the signal. The digitized samples are then processed by a complex adaptive algorithm 295 that generates parameters w for the digital pre-distorter 230. The complex adaptive algorithm 295 is outside the scope of the present application. Known techniques can be employed to generate the parameters for the digital pre-distorter 230.
Non-Linear Filter Implementation of Digital Pre-Distorter
A digital pre-distorter 230 can be implemented as a non-linear filter using a Volterra series model of non-linear systems. The Volterra series is a model for non-linear behavior in a similar manner to a Taylor series. The Volterra series differs from the Taylor series in its ability to capture “memory” effects. The Volterra series can be used to approximate the response of a non-linear system to a given input if the output of this system depends strictly on the input at that particular time. In the Volterra series, the output of the non-linear system depends on the input to the system at other times. Thus, the Volterra series allows the “memory” effect of devices to be captured.
Generally, a causal system with memory can be expressed as:
y(t)=∫−∞∞h(τ)x(t−τ)dτ
In addition, a weakly non-linear system without memory can be modeled using a polynomial expression:
y(t)=Σk=1∞ak[x(t)]k
The Volterra series can be considered as a combination of the two:
y(t)=τk=1Kyk(t)
y
k(t)=∫−∞∞ . . . ∫−∞∞hk(τ1, . . . ,τk)x(t−τ1) . . . x(t−τk)dτ1 . . . dτk
In the discrete domain, the Volterra Series can be expressed as follows:
y(n)=Σk=1Kyk(n)
y
k(n)=Σm
The complexity of a Volterra series can grow exponentially making its use impractical in many common applications, such as DPD. Thus, a number of simplified models for non-linear systems have been proposed. For example, a memory polynomial is a commonly used model:
Another simplified model referred to as a Generalized Memory Polynomial Model, can be expressed as follows (where NI indicates the memory depth and K indicates the polynomial order):
An equivalent expression of the Generalized Memory Polynomial with cross-products, can be expressed as follows:
where:
where f(x) is a non-linear function having one or more user-specified parameters assumed to be accelerated in accordance with an aspect of the invention using the user-defined non-linear instruction vec_nl, discussed below. It is noted that other basis functions other than xk for non-linear decomposition are possible.
As discussed hereinafter, the user-defined non-linear instruction ƒm,l can be processed, for example, by a vector processor. The ƒm,l is an m×l array of non-linear functions. Each non-linear function can have a user-specified parameter, such a look-up table or coefficients. The look-up table can be a polynomial approximation of the user-defined non-linear instruction ƒm,l. As discussed further below in conjunction with
The exemplary functional block diagram 450 also comprises a plurality of multipliers (x) 475 that receive the appropriate \(n−m) term and multiply it with the output of the summed output of a column of corresponding m,l functional units 470. In this manner, the non-linear gains from adders 480 are applied to the input data (complex multiply-accumulate (CMAC) operations). The outputs of the multiplication added by adders (+) 485 to generate the output y(n).
As indicated above, if a desired x value is not in the look-up table but rather is in between 2 values in the look-up table, then a linear interpolation is performed in hardware within the functional unit to obtain the result. A Taylor series computation can be performed as a cubic interpolation to evaluate the small cubic polynomial, as follows:
ƒ(ε)=a0+a1·ε+a2·ε2+a3·ε3
where the coefficients a are obtained from the look-up table. The complexity of this expression, however, is significant (with a number of multipliers to perform the multiplications and squaring operations).
The complexity can be reduced using the Homer algorithm (factorization), such that ƒ(ε) can be computed as follows. See, also, U.S. patent application Ser. No. 12/324,934, filed Nov. 28, 2008, entitled “Digital Signal Processor With One Or More Non-Linear Functions Using Factorized Polynomial Interpolation.” incorporated by reference herein.
ƒ(ε)=((b3·ε+b2)·ε+b1)·ε+b0 (3)
The complexity in equation (3) has been reduced to only 3 multiplication and 3 addition operations. ƒ(ε) is an offset from the value stored in the look-up table.
Generally, the vector-based digital processor 700 processes a vector of inputs x and generates a vector of outputs, y(n). The exemplary vector-based digital processor 700 is shown for a 16-way vector processor nl instruction implemented as:
vec_nl (x1, x2, . . . , x16), range of x[k] from 0 to 1
In this manner, the vector-based digital processor 700 can perform 16 such non-linear operations and linearly combine them in a single cycle. For example, the user-defined non-linear function can be expressed as:
It is noted that in the more general case, different functions may be applied to each component of the vector data of the vector processor.
As shown in
While exemplary embodiments of the present invention have been described with respect to digital logic blocks and memory tables within a digital processor, as would be apparent to one skilled in the art, various functions may be implemented in the digital domain as processing steps in a software program, in hardware by circuit elements or state machines, or in combination of both software and hardware. Such software may be employed in, for example, a digital signal processor, application specific integrated circuit or micro-controller. Such hardware and software may be embodied within circuits implemented within an integrated circuit.
Thus, the functions of the present invention can be embodied in the form of methods and apparatuses for practicing those methods. One or more aspects of the present invention can be embodied in the form of program code, for example, whether stored in a storage medium, loaded into and/or executed by a machine, wherein, when the program code is loaded into and executed by a machine, such as a processor, the machine becomes an apparatus for practicing the invention. When implemented on a general-purpose processor, the program code segments combine with the processor to provide a device that operates analogously to specific logic circuits. The invention can also be implemented in one or more of an integrated circuit, a digital processor, a microprocessor, and a micro-controller.
It is to be understood that the embodiments and variations shown and described herein are merely illustrative of the principles of this invention and that various modifications may be implemented by those skilled in the art without departing from the scope and spirit of the invention.
The present application claims priority to U.S. Patent Provisional Application Ser. No. 61/552,242, filed Oct. 27, 2011, entitled “Software Digital Front End (SoftDFE) Signal Processing and Digital Radio,” incorporated by reference herein.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/US2012/062186 | 10/26/2012 | WO | 00 | 6/12/2013 |
Number | Date | Country | |
---|---|---|---|
61552242 | Oct 2011 | US |