Digital pre-distortion method and apparatus for a digital to analog converter
12119835 ยท 2024-10-15
Assignee
Inventors
Cpc classification
H03M1/066
ELECTRICITY
H03M1/0665
ELECTRICITY
International classification
Abstract
A system includes a first circuit configured to provide a digitally pre-distorted input signal, a digital-to-analog converter including a number of unit elements, a digital input, and a digital output. Each unit element is configured to receive a reference voltage and to be controllable by a control signal provided in response to the digitally pre-distorted input signal. The digital-to-analog converter provides an analog output. The first circuit is configured to reduce distortion due to signal dependent changes to the reference voltage. The signal dependent changes can be due at least in part to current through the supply network that supplies the reference voltage. The digital to analog converter can be a voltage mode converter.
Claims
1. A method comprising: receiving a first digital signal; changing the first digital signal to provide a second digital signal, wherein the change of the first digital signal reduces distortion associated with a supply network providing a reference voltage; providing a selection signal to a plurality of unit elements in response to the second digital signal, the unit elements receiving the reference voltage and providing voltage or current in response to the selection signal; and providing an analog signal in response to the second digital signal.
2. The method of claim 1, further comprising: determining a first number of the unit elements of a digital-to-analog converter to be turned on from an off state, based, at least in part, on a number of transitions N.sub.trn; determining a second number of the unit elements of the digital-to-analog converter to be turned off from an on state, based, at least in part, on the number of transitions N.sub.trn; selecting, using a constant transition rate dynamic element matching algorithm, the first number of the unit elements from the unit elements in the off state to be turned on; and selecting, via the dynamic element matching algorithm, the second number of the unit elements from the unit elements in the on state to be turned off.
3. The method of claim 2, further comprising: generating the selection signal as a unary code, wherein the unary code is configured to turn on the selected first number of the unit elements, and turn off the selected second number of the unit elements, wherein each respective bit position of the unary code controls a state of a respective unit element corresponding to the respective bit position; and controlling the state of each of the unit elements based on the unary code.
4. The method of claim 3, wherein determining whether the number of transitions N.sub.trn can be performed further comprises: determining whether a value of the second digital signal is less than (N.sub.trn/2), and further that the total number of the unit elements minus the value of the second digital signal is greater than (N.sub.trn/2).
5. The method of claim 3, further comprising: adjusting the number of transitions N.sub.trn based on a determination that the number of transitions N.sub.trn cannot be performed, wherein adjusting the number of transitions N.sub.trn includes reducing the number of transitions N.sub.trn.
6. The method of claim 1, wherein changing the first digital signal uses a digital filter having a response related to a response of the supply network.
7. The method of claim 1, wherein changing the first digital signal is a digital pre-distortion operation.
8. The method of claim 7, wherein the digital pre-distortion operation comprises an open loop approach using pre-defined digital filter coefficients and a d2 gain coefficient or comprises a closed loop approach using an analog-to-digital converter (ADC) to digitize the analog signal and a processor to provide the digital filter coefficients and the d2 gain coefficient.
9. A circuit comprising: a plurality of unit elements; a digital input configured to receive a first digital signal; circuitry configured to adjust the first digital signal using a supply network response and provide a second digital signal; and wherein the circuitry is configured to provide a code for turning the unit elements to an on state or an off state in accordance with the second digital signal, wherein the code is provided such that a variation of a number of the unit elements transitioning from the off state to the on state or from the on state to the off state is decreased.
10. The circuit of claim 9, whereby the circuitry reduces distortion due to switching current associated with the unit elements.
11. The circuit of claim 9, whereby the circuitry provides digital pre-distortion to reduce distortion due to current through a supply network.
12. The circuit of claim 9, whereby the circuitry reduces distortion due to switching current in the circuit.
13. The circuit of claim 9, wherein the circuitry comprises a digital filter having a frequency response corresponding to the supply network response.
14. The circuit of claim 9, wherein the second digital signal is defined by the following expression: (x.sub.a+d.sub.2x.sub.a?x.sub.a.sup.2*h.sub.SUP(nT)) where x.sub.a is the first digital signal, d.sub.s is a coefficient, and h.sub.SUP(nT) is related to the supply network response.
15. The circuit of claim 9, wherein the circuitry comprises: a first multiplier configured to receive the first digital signal; a subtracter coupled to the first multiplier; a filter coupled to the subtracter; a second multiplier coupled to the filter; and an adder coupled to the first multiplier and the second multiplier configured to provide the second digital signal.
16. A system comprising: a first circuit configured to provide a digitally pre-distorted input signal; and a digital-to-analog converter comprising a plurality of unit elements, a digital input, and an analog output, each unit element configured to receive a reference voltage and is controlled by a control signal provided in response to the digitally pre-distorted input signal, wherein the digital-to-analog converter provides an analog signal at the analog output, wherein the first circuit is configured to reduce distortion due to digital signal dependent changes to the reference voltage.
17. The system of claim 16, wherein the digital signal dependent changes are due at least in part to current provided through a supply network that supplies the reference voltage.
18. The system of claim 16, wherein the first circuit comprises: a first multiplier configured to receive an input signal; a subtracter coupled to the first multiplier; a filter coupled to the subtracter; a second multiplier coupled to the filter; an adder coupled to the first multiplier and the second multiplier; and a third multiplier coupled between the first multiplier and the second multiplier.
19. The system of claim 16, wherein the first circuit comprises: a first multiplier configured to receive an input signal; a subtracter coupled to the first multiplier; a filter coupled to the subtracter; a second multiplier coupled to the filter; and an adder coupled to the first multiplier and the second multiplier.
20. The system of claim 16, further comprising: a second circuit configured to provide a code for turning the unit elements to an on state or an off state in response to the digitally pre-distorted input signal, wherein the code is provided using dynamic element matching logic.
21. An apparatus, comprising: circuitry configure to change a first digital signal and provide a second digital signal, wherein the change of the first digital signal reduces distortion associated with a supply network providing a reference voltage, wherein the circuitry is configured to provide a selection signal to a plurality of unit elements in response to the second digital signal, the unit elements receiving the reference voltage and providing voltage or current in response to the selection signal, wherein the circuitry is configured to provide an analog signal in response to the second digital signal.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) A further understanding of the nature and advantages of particular embodiments may be realized by reference to the remaining portions of the specification and the drawings, in which like reference numerals are used to refer to similar components. In some instances, a sub-label is associated with a reference numeral to denote one of multiple similar components. When reference is made to a reference numeral without specification to an existing sub-label, it is intended to refer to all such multiple similar components.
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
DETAILED DESCRIPTION OF EMBODIMENTS
(13) Various embodiments provide tools and techniques for distortion reduction. In some embodiments, digital pre-distortion is used to reduce distortion in a circuit such as a digital to analog converter (DAC). In some embodiments, the systems and methods of distortion reduction are used in DACs of high speed communication systems (e.g., 5G base stations, serializer/deserializer (SERDES) systems and optical systems) and other communication and computing systems. In some embodiments, the systems and methods are employed in a data converter based high speed communication system to meet the demanding needs of the modulated systems and to enable more complex equalization techniques in digital domain.
(14) In some embodiments, systems and methods are employed in a high resolution, high speed voltage-mode DAC (VM-DAC) of a transmitter to reduce distortion due to data-dependent modulation of its reference voltage or supply voltage (e.g., provided at a value V.sub.REF by a supply network). The systems and methods mitigate distortion due to data-dependent modulation of its reference voltage in some embodiments. The distortion due to data-dependent modulation can result in non-linearity and can be due to switching current (e.g., I.sub.SW(ntrn[n]) discussed below) and/or signal current (e.g., I.sub.sig (code[n]) discussed below) in some embodiments. The switching current I.sub.SW(ntrn[n]) and signal current (e.g., I.sub.sig (code[n]) are used in or provided by DAC cells to produce an analog output signal for the DAC in some embodiments. Distortion generally refers to a degradation of a signal and can affect or relate to timing, phase, amplitude, clipping, quantization noise, aliasing, harmonic interference, frequency response, etc. As used herein, reference voltage may refer to a signal provided at a voltage value for use by other components of the DAC. The reference voltage is provided to DAC cells in the DAC at the value of V.sub.REF in some embodiments.
(15) Any digital signal dependent changes to the value of V.sub.REF can result in non-linearity which can advantageously be corrected in some embodiments. Digital signal dependent changes refer to changes caused (at least in part) by changes in the digital input signal that result in changes to the value of V.sub.REF. As used herein, a digital input signal may refer to a signal that represents data as a discrete value or a sequence of discrete values and is provided at an input of a circuit. In some embodiments, the digital input signal is a binary signal or logic signal and can be provided as a bit, a series of bits provided over time, a set of bits in parallel, or a series of bits in parallel provided over time. The digital input signal can be provided as discrete waveforms representing a bit stream, as a modulated signal representing a bit stream, a pulse code modulated signal, or other digital representation. Digital signal dependent changes can be the result of changes to signal current I.sub.sig (code[n]) and (2) switching current I.sub.SW(ntrn[n] due to changes in the digital input signal. The current drawn by the VM-DAC is generally provided through a non-ideal supply network which can be represented by an impedance model Z.sub.SUP(?) and modulates the effective value of V.sub.REF causing current signal distortion. Even with very large decoupling capacitors (e.g., having a capacitance of greater than 1 nanoFarad (nF)) and very small supply resistance (e.g., having a resistance of approximately 0.5n), modulation of the V.sub.REF value can severely limit the overall performance of a VM-DAC especially as the signal frequency (F.sub.sig) and/or signal power P.sub.sig increases. The output signal value V.sub.OUT of the DAC is represented by the following equation where code[n] is the digital input (normalized) to the DAC: V.sub.out?code[n]?V.sub.REF, where code[n] is the digital input signal to the DAC. In some embodiments, the value V.sub.REF of the DAC is represented by the following equation: V.sub.REF=V.sub.DD?I.sub.DAC?Z.sub.SUP(?), where V.sub.DD is the chip supply voltage, and I.sub.DAC is the supply current to the DAC.
(16) The supply current I.sub.DAC has at least two components: (1) signal current I.sub.sig (code[n]) and (2) switching current I.sub.SW(ntrn[n]), each of which can be a source of distortioncurrent signal distortion and switching distortion. In some embodiments, the signal current I.sub.sig (code[n]) and (2) switching current I.sub.SW(ntrn[n]) are main components of the supply current I.sub.DAC. The supply current I.sub.DAC is the current provided by the power supply or power input through the supply network for use by unit elements (e.g., DAC cells). The supply current I.sub.DAC can be provided as a signal associated with the reference voltage at the reference voltage level (V.sub.REF) in some embodiments. The signal current I.sub.sig (code[n]) is the current of the output signal of the DAC and is dependent upon the digital input signalcode[n]. In some embodiments, digital pre-distortion is used to reduce the impact of distortion due to signal current I.sub.sig (code[n]). Switching current I.sub.SW(ntrn[n]) is current used to make transitions (e.g., turning on and off DAC cells) and is dependent on the number of transitions (ntrn[n]). Generally, the larger number of transitions, the greater the switching current I.sub.sig (code[n]). As circuitry transitions from on to off states and from off to on states, transistors in the circuitry draw switching current I.sub.sig (code[n]) to make the transition. Switching current Isig (code[n]) can be associated with changes to signals provided to gates of transistors in the DAC cells in some embodiments. Distortion due to switching current I.sub.SW(ntrn[n]) can be addressed according to the systems and methods described below with reference to
(17) Some embodiments relate to a method that includes receiving a first digital signal, and changing the first digital signal to provide a second digital signal. The first digital signal is changed to reduce distortion associated with a signal current related to a supply current provided through a supply network for a reference voltage signal. The method also includes providing a selection signal for a number of unit elements. The unit elements receive the reference voltage signal, and provide an analog signal in accordance with the second digital signal. As used herein, a unit element may refer a DAC unit cell (e.g., voltage mode cell) or a repeating circuit that cooperates with other repeating circuits to provide the analog output signal. Each unit cell may not be identical to other unit cells. In some embodiments, each unit element may include similar circuits such as selection transistors, impedance circuits, current sources, etc. for providing the analog output signal. In some embodiments, each unit element includes one or more circuit elements, such as transistors, resistors, etc., configured to provide a voltage for the analog signal. In some embodiments, each unit element is a converter cell including a logic circuit and a switching circuit for selecting the voltage for the analog signal. In some embodiments, each unit element includes one or more circuit elements, such as transistors, resistors, etc., configured to provide a current for the analog signal. In some embodiments, the unit elements receive the reference voltage signal and provide voltage or current for the analog output signal in response to a selection signal provided to unit elements. As used herein, a selection signal may refer to a signal that turns unit elements on or off or otherwise control the unit elements to appropriately provide current or voltage for the analog output signal. The selection signal can be a digitally coded signal. Embodiments of unit elements are further described below.
(18) In some embodiments, the method further includes determining a first number of unit elements of a digital-to-analog converter to be turned on from an off state, based, at least in part, on a number of transitions N.sub.trn, determining a second number of unit elements of the digital-to-analog converter to be turned off from an on state, based, at least in part, on the number of transitions N.sub.trn, selecting, via dynamic element matching logic, the first number of unit elements from one or more unit elements in the off state to be turned on, and selecting, via the dynamic element matching logic, the second number of individual unit elements from one or more unit elements in the on state to be turned off.
(19) In some embodiments, the method further includes generating the selection signal as a unary code. The unary code is configured to turn on the selected first number of individual unit elements and turn off the selected second number of individual unit elements. Each respective bit position of the unary code controls a state of a respective unit element corresponding to the respective bit position. The method also includes controlling the state of each of the plurality of unit elements based on the unary code. A selection signal as used herein may refer to a signal that controls unit elements (e.g., turns unit elements on or off).
(20) In some embodiments, wherein determining whether the number of transitions N.sub.trn can be performed further include determining whether the current value of the second digital signal is less than (N.sub.trn/2), and further that the total number of unit elements minus the current value of the second digital signal is greater than (N.sub.trn/2).
(21) In some embodiments, the method further includes adjusting the number of transitions N.sub.trn based on a determination that the number of transitions N.sub.trn cannot be performed, wherein adjusting the number of transitions N.sub.trn includes reducing the value of the number of transitions N.sub.trn.
(22) In some embodiments, the method further includes wherein changing the first digital signal uses a digital filter having a response related to a response of the supply network. In some embodiments, a digital filter is circuitry or processing that performs mathematical operations on a sampled, discrete-time signal to reduce or enhance certain aspects of that signal. The digital filter can have a response set by digital filter coefficients.
(23) In some embodiments, changing the first digital signal is a digital pre-distortion operation.
(24) In some embodiments, the digital pre-distortion operation comprises an open loop approach using pre-defined digital filter coefficients and a d2 gain coefficient or comprises a closed loop approach using an analog-to-digital converter (ADC) to digitize the analog output and a distortion detection and minimization digital processor to adaptively set digital filter coefficients and a d2 gain coefficient. An open loop approach refers to an operation where the output has no direct influence on the input signal (e.g., without a feedback loop). A closed loop approach refers to an operation where the output or derivation thereof is feedback to affect the provision of the output signal (e.g., with a feedback path).
(25) Some embodiments relate to a circuit including a number of unit elements, a digital input configured to receive a first digital signal, circuitry configured to adjust the first digital signal in accordance with a supply network response and provide a second digital signal, and circuitry configured to provide a code for selectively turning the unit elements to an on state or an off state in accordance with the second digital signal. The code is provided such that a variation in a number of the unit elements transitioning from the off state to the on state or from the on state to the off state is decreased. As used herein, variation may refer to a characteristic where higher variation reflects more changes and lower variation reflects fewer changes. For example, making fewer transitions from the on state to the off state and vice versa results in higher consistency or less variation.
(26) In some embodiments, the second circuit reduces distortion due to switching current associated with the unit elements. In some embodiments, the first circuit provides digital pre-distortion to reduce distortion due to current through a supply network.
(27) In some embodiments, the second circuit reduces distortion due to switching current in the circuit.
(28) In some embodiments, the first circuit comprises a digital filter having a response matching the supply network response.
(29) In some embodiments, the second digital signal is related to the following expression: (x.sub.a+d.sub.2x.sub.a?x.sub.a.sup.2*h.sub.SUP(nT)) where x.sub.a is the first digital signal, d.sub.2 is a coefficient, and h.sub.SUP(nT) is related to the supply network response.
(30) In some embodiments, the d.sub.2 coefficient is related to a quotient comprising the term h.sub.SUP(nT).
(31) Some embodiments relate to a system including a first circuit configured to provide a digitally pre-distorted input signal, a digital-to-analog converter including a number of unit elements, a digital input, and a digital output. Each unit element is configured to receive a reference voltage and to be controllable by a control signal provided in response to the digitally pre-distorted input signal. The digital-to-analog converter provides an analog output. The first circuit is configured to reduce distortion due to signal dependent changes to the reference voltage.
(32) In some embodiments, the signal dependent changes are due at least in part to current through the supply network that supplies the reference voltage.
(33) In some embodiments, the first circuit includes a first multiplier configured to receive an input signal, a subtracter coupled to the first multiplier, a filter coupled to the subtracter, a second multiplier coupled to the filter, an adder coupled to the first multiplier and the second multiplier, and a third multiplier coupled between the first multiplier and the second multiplier.
(34) In some embodiments, the filter has a response corresponding to a response of a supply network for the reference voltage.
(35) In some embodiments, the system further includes a second circuit configured to provide a code for selectively turning the unit elements to an on state or an off state in accordance with the digitally pre-distorted input signal. The code is provided such that a consistency of a number of the unit elements transitioning from the off state to the on state or from the on state to the off state is increased.
(36) In some embodiments, a method for transition aware dynamic element matching is provided. The method may include determining a number of unit elements of a digital-to-analog converter to be transitioned (N.sub.trn), from an on state to an off state, or an off state to an on state. The method may continue by determining a first number of unit elements of a digital-to-analog converter to be turned on from an off state, based, at least in part, on N.sub.trn, and determining a second number of unit elements of the digital-to-analog converter to be turned off from an on state, based, at least in part, on N.sub.trn. The method may further include selecting, via dynamic element matching logic, the first number of individual unit elements from one or more unit elements of the digital-to-analog converter in the off state to be turned on, and selecting, via the dynamic element matching logic, the second number of individual unit elements from one or more unit elements of the digital-to-analog converter in the on state to be turned off.
(37) In some embodiments, an apparatus for transition aware dynamic element matching is provided. The apparatus may include a register configured to store a constant transition rate value, wherein the constant transition rate value is given by a number of unit elements of a digital-to-analog converter to be transitioned (N.sub.trn), from an on state to an off state, or an off state to an on state. The apparatus may further include a dynamic element matching circuit coupled to the register. The dynamic element matching circuit may be configured to determine a first number of unit elements of a digital-to-analog converter to be turned on from an off state, based, at least in part, on N.sub.trn, and determine a second number of unit elements of the digital-to-analog converter to be turned off from an on state, based, at least in part, on N.sub.trn. The dynamic element matching circuit may further be configured to generate a first signal, wherein the first signal indicates a selection of the first number of individual unit elements, wherein the first signal further identifies the individual unit elements of one or more unit elements of the digital-to-analog converter in the off state to be turned on, and generate a second signal, wherein the second signal indicates a selection of the second number of individual unit elements, wherein the second signal further identifies the individual unit elements of one or more unit elements of the digital-to-analog converter in the on state to be turned off.
(38) In further embodiments, a system for transition aware dynamic element matching is provided. The system may include a digital-to-analog converter comprising a plurality of unit elements, each unit element configured to be controllable by a control signal. The system may further include a dynamic element matching encoder coupled to the digital-to-analog converter, the dynamic element matching encoder configured to generate the control signal based on a digital input, wherein the dynamic element matching encoder includes a circuit. The circuit may be configured to determine a number of unit elements of a digital-to-analog converter to be transitioned (N.sub.trn), from an on state to an off state, or an off state to an on state. The circuit may further be configured to determine a first number of unit elements of a digital-to-analog converter to be turned on from an off state of an N.sub.trn number of transitions, and determine a second number of unit elements of the digital-to-analog converter to be turned off from an on state of the N.sub.trn number of transitions. The circuit may further generate a first signal, wherein the first signal indicates a selection of the first number of individual unit elements, wherein the first signal further identifies the individual unit elements of one or more unit elements of the digital-to-analog converter in the off state to be turned on, and generate a second signal, wherein the second signal indicates a selection of the second number of individual unit elements, wherein the second signal further identifies the individual unit elements of one or more unit elements of the digital-to-analog converter in the on state to be turned off.
(39) In the following description, for the purposes of explanation, numerous details are set forth to provide a thorough understanding of the described embodiments. It will be apparent to one skilled in the art, however, that other embodiments may be practiced without some of these details. In other instances, structures and devices are shown in block diagram form. Several embodiments are described herein, and while various features are ascribed to different embodiments, it should be appreciated that the features described with respect to one embodiment may be incorporated with other embodiments as well. By the same token, however, no single feature or features of any described embodiment should be considered essential to every embodiment of the invention, as other embodiments of the invention may omit such features.
(40) Similarly, when an element is referred to herein as being connected or coupled to another element, it is to be understood that the elements can be directly connected to the other element, or have intervening elements present between the elements. In contrast, when an element is referred to as being directly connected or directly coupled to another element, it should be understood that no intervening elements are present in the direct connection between the elements. However, the existence of a direct connection does not exclude other connections, in which intervening elements may be present.
(41) Furthermore, the methods and processes discussed herein may be described in a particular order for ease of description. However, it should be understood that, unless the context dictates otherwise, intervening processes may take place before and/or after any portion of the described process, and further various procedures may be reordered, added, and/or omitted in accordance with various embodiments.
(42) Unless otherwise indicated, all numbers used herein to express quantities, dimensions, and so forth used should be understood as being modified in all instances by the term about. In this application, the use of the singular includes the plural unless specifically stated otherwise, and use of the terms and and or means and/or unless otherwise indicated. Moreover, the use of the term including, as well as other forms, such as includes and included, should be considered non-exclusive. Also, terms such as element or component encompass both elements and components comprising one unit and elements and components that comprise more than one unit, unless specifically stated otherwise.
(43) Conventional approaches to mitigating timing and amplitude errors in DACs often result in increased power requirements, increased hardware complexity, and an inability to address second harmonic distortion. Conventional techniques focus on indiscriminate randomization of errors by dynamically switching between DAC unit elements, as in conventional dynamic element matching (DEM), utilizing inefficient switching schemes. Specifically, DEM refers to techniques for randomizing errors attributable to individual unit elements by dynamically switching the individual DAC unit elements that are used for a given DAC code. This breaks the static relationship between the DAC code (e.g., an input code) and the errors by random rotation of the thermometer bits (e.g., a unary code for controlling the unit elements of the DAC). Other approaches utilize additional components, such as a dummy switch or a random signal chopper, each of which introduces additional complexity, inefficiency, switching noise, and increases in power consumption.
(44) Thus, some embodiments set forth below may allow for a more efficient, targeted distortion mitigation scheme for a DAC for data-dependent modulation of its reference voltage or supply voltage (at a value VREF). In some embodiments, systems and methods provide distortion mitigation for transition aware dynamic element matching scheme for switching DAC unit elements. Some embodiments below describe the use of a constant transition rate DEM scheme to determine how many DAC unit elements and which individual DAC unit elements to switch. Advantages of some embodiments set forth below may include a constant current draw from the pre-driver power supply, which reduces power supply ripple and resulting intersymbol interference (ISI), and may further mitigate harmonic distortion (HD.sub.n) spurs. Moreover, by utilizing the constant transition rate-DEM (CTR-DEM) approach, a just enough transient switching may be realized, without excessive increases to switching noise for lower power output signals as would result from conventional DEM schemes. These features may further help realize a lower noise floor that scales with signal power. Moreover, a CTR-DEM algorithm may mitigate second harmonic distortion (HD2) by enforcing a constant transition rate, thereby making the error profile consistent.
(45) The CTR-DEM algorithm may also be paired with other digital pre-distortion correction to further improve DAC performance. Moreover, the noise floor scales with input power to maintain a robust signal-to-noise ratio (SNR), which directly increases DAC dynamic range. CTR-DEM algorithm may be implemented entirely in the digital domain so as not to disturb the sensitive and high-speed analog sections of the DAC. Additionally, power supplies with reduced ripple may require less rigorous external filtering and isolation between the supplies, which can reduce system cost and increase the channel density and data throughput of the overall system. Compared to conventional DEM DACs, some embodiments set forth below may allow for scaling of the number of transitions with DAC output power and frequency, which further allows users to fine tune the SNR of the system.
(46)
(47)
(48) With reference to
(49) In various embodiments, CTR-DEM encoder 105 may be configured to receive an m-bit digital input d.sub.a[n] from input 101 or an m-bit pre-distorted digital input d.sub.b[n] from output 107 of current signal distortion mitigation circuit 104, where m is an integer. The CTR-DEM encoder 105 may be configured to code the m-bit digital input to produce a j-bit unary code, d.sub.u[n], where j is an integer corresponding to a maximum decimal value of an m-bit number (e.g., j=2.sup.m?1). For example, if m=4, j=15, with j corresponding to the 4-bit value of 1111. Similarly, for m=7, j=127.
(50) In various examples, the CTR-DEM encoder 105 may be coupled to the DAC 115. The DAC 115 may include one or more unit elements 120a-120j. In some examples, the DAC 115 may have a j-number of unit elements corresponding to the number of bits of the digital output of the CTR-DEM encoder 105. Thus, in some examples, the digital output d.sub.u[n] at input 106 may comprise j-number of individual bits, d.sub.u,i[n]. Thus, in some examples, each individual bit d.sub.u,i[n] of the CTR-DEM encoder 105 may be a single-bit digital input of a corresponding i-th unit element 120a-120j, where i is an integer 1-j. Unit elements 120a-120j are DAC cells in some embodiments.
(51) Accordingly, in some examples, the digital output (e.g., unary code) d.sub.u[n] may be a coded control signal generated by the CTR-DEM encoder 105, such as a unary-coded (also referred to as thermometer coded) signal, which is generated from the binary digital signal d.sub.a[n] or d.sub.b[n]. The digital output d.sub.u[n] may be a control signal that indicates, or otherwise selects, which unit elements 120a-120j of the DAC 115 are enabled.
(52) In various examples, CTR-DEM logic 110 may be implemented in hardware, software, or a combination of hardware and software. In some examples, the CTR-DEM encoder 105 and CTR-DEM logic 110 may be implemented, without limitation, as a circuit (including logical circuits), custom integrated circuits (ICs), system on a chip (SoC), or field-programmable gate array (FPGA) implementations. In other examples, CTR-DEM encoder 105 may be implemented as part of a DAC controller. For example, CTR-DEM logic 110 may be implemented as part of the firmware of a DAC controller.
(53) According to various embodiments, the DAC 115 may include circuitry and components to convert a digital signal into an analog signal, such as wireless (e.g., radio frequency (RF)) and/or wireline signals (e.g., fiber optic, copper-wire, twisted pair, etc.). DAC 115 can be a VM-DAC or current mode DAC in some embodiments. In some embodiments, the DAC is a VM-DAC as opposed to a capacitive-DAC and current based current mode logic (CML) DAC. A VM-DAC is a DAC that uses unit elements to selectively provide a voltage of the output signal corresponding to the digital input in some embodiments. A VM-DAC uses a resistive ladder or other impedance circuit or uses a logic circuit and a switch circuit to selectively provide a voltage level for the analog output signal in some embodiments. A current mode DAC is a DAC that combines (e.g., sums) current from DAC cells to provide the analog output signal. The DAC 115 may include DACs of various architectures and/or designs, including, without limitation, pulse-width modulation (PWM) DACs, delta-sigma DACs, thermometer-coded DACs, oversampling DACs, noise-shaped DACs, digitally-controlled oscillators, resistor DACs (e.g., resistor ladder (R-2R) DACs), current DACs, voltage DACs, switched-capacitor DACs, unary DACs, binary-weighted DACs, or other suitable DAC designs. In further embodiments, DACs may implement a combination of designs, using a combination of components (e.g., resistors, capacitors, current sources, voltage sources, etc.). In yet further examples, DAC system 100 may be part of an ADC. For example, DAC system 100 may form at least part of a clock-data-recovery (CDR) circuit of an ADC. For example, DAC system 100 may be a phase interpolator DAC, configured to output an analog signal based on a phase interpolator code.
(54) In some further examples, the DAC 115 may utilize a combined and/or hybrid design. For example, in various embodiments, the unit elements of DAC 115 may themselves be individual DACs. In some examples, the DAC 115 may include, without limitation, unary unit elements and/or binary-weighted unit elements. For example, in some embodiments, the DAC 115 may include a plurality of unary unit elements, where the respective outputs of all unit elements have the same weight. In other examples, a segmented or hybrid design may be utilized. In the segmented design, DAC 115 may include both unary unit elements (where the respective outputs of all unit elements are weighted the same), and binary-weighted unit elements (e.g., the outputs of unit elements may be respectively weighted).
(55) In some examples, the DAC 115 may include j-number of unit elements 120a-120j. In some examples, updates to an analog signal may occur at a uniform sampling interval, with an n-th sampling interval denoted by n. In a multi-bit DAC, to produce an analog signal, the outputs of the individual unit elements 120a-120j may be coupled to a summing node, which may add the individual analog signals to produce the output analog signal. The output analog signal may, thus, have a value corresponding to the value of an input unary code (e.g., d.sub.u[n]).
(56) In conventional DEM, mismatches in the unit elements 120a-120j may introduce error in the output of analog signal. For example, each unit element 120a-120j may have a random amplitude error (r.sub.i). At any sample, the total amplitude error (e.sub.amp(n)) may be given by the sum of the product of each respective unary code (u.sub.i(n)) and random amplitude error r.sub.i, for an i-th unit element 120a-120j, as follows:
e.sub.amp(n)=?.sub.i=1.sup.ju.sub.i(n).Math.r.sub.i(Eq. 1)
(57) In further examples, each transition (e.g., 0 to 0, 0 to 1, 1 to 1, and 1 to 0) of each unit element 120a-120j may result in a respective transient error waveform (e.sub.00i, e.sub.01i, e.sub.11i, e.sub.10i). Ignoring clock feedthrough, it may be assumed that e.sub.00i=e.sub.11i=0. Transition errors e.sub.01i and e.sub.10i may be decomposed into delay (t.sub.del,i) and duty cycle (t.sub.cyc,j) errors, where e.sub.01i=t.sub.cyc,i?t.sub.del,i; and e.sub.10i=t.sub.cyc,i+t.sub.del,i for an i-th unit element 120a-120j. Thus, a total delay error (e.sub.del(n)) and total duty-cycle error (e.sub.cyc(n)) may be given as follows:
e.sub.del(n)=?.sub.i=1.sup.j?u.sub.i(n)?u.sub.i(n?1)).Math.t.sub.del,i(Eq. 2)
and
e.sub.cyc(n)=?.sub.i=1.sup.j|u.sub.i(n)?u.sub.i(n?1)|.Math.t.sub.cyc,i(Eq. 3)
(58) Harmonic distortion may be introduced by these errors, as e.sub.amp(n), e.sub.del(n), and e.sub.cyc(n) may have the same periodicity as the digital input. Thus, a constant transition rate DEM scheme may be implemented via the CTR-DEM logic 110, which is described in further detail below with respect to
(59)
(60) According to various embodiments, the control register 205 may store a 4-bit value of a constant transition rate. It is to be understood that the number of bits of the control register are not limited to 4-bits, and in some embodiments, may include more or less bits. In some further examples, the number of bits of the control register 205 may correspond to the value of the constant transition rate.
(61) In various examples, the constant transition rate may indicate a number of transitions (N.sub.trn) to be performed at each sample interval. In some examples, N.sub.trn may be set as a static value, which may be a fixed number of transitions in the unary code, where the unary code is further based on an input code (e.g., digital input d.sub.a[n]). In some examples, N.sub.trn may be determined based on an amplitude of the delta code, which may be given by:
?[n]=code(n)?code(n?1)(Eq. 4)
where code(n) and code(n?1) are the input code, and may be used interchangeably with input code d.sub.a[n] and d.sub.a[n?1].
(62) In further examples, N.sub.trn may be an adjustable value. For example, in some embodiments, N.sub.trn may be set by a user. In other examples, N.sub.trn may be adjusted on-the-fly and/or in real-time based on system requirements and/or metrics. For example, in some embodiments, the DAC may receive feedback from a receiver requesting an increase or decrease in amplitude (e.g., power). The DAC may, accordingly, increase N.sub.trn in response to a request to increase amplitude, and decrease N.sub.trn response to a decrease in amplitude. In the case of modulated data, for example, in a wireless DAC, N.sub.trn_opt may be determined as a function of carrier frequency and the type of data being transmitted. For example, a data signal may exhibit a peak to average ratio, which may be used to set an optimal N.sub.trn.
(63) As previously described, in some embodiments, N.sub.trn may be a hard-coded value. In some examples, the hard-coded value may be determined based on known signal characteristics for a given use case or for one or more common applications. In some examples, an optimal number of transitions, N.sub.trn_opt, may be set equal to a maximum value of the delta code: max(?(n]). This may result in an error profile with no HD2 and a minimum noise floor needed to suppress HD2.
(64) In various examples, an optimal N.sub.trn_opt may be directly proportional to the amplitude of the digital input P.sub.sig, and frequency of the digital input F.sub.sig. The selection of N.sub.trn and its effects are described in further detail below, with respect to
(65) In some examples, clipping detection logic 210 may be configured to check for N.sub.trn clipping. In some embodiments, the clipping detection logic 210 may receive the digital input d.sub.a[n] and N.sub.trn, and compare the two inputs to ensure the condition d.sub.a<N.sub.trn/2<N.sub.u?d.sub.a is met, where N.sub.u is the number of unit elements. In some embodiments, the clipping detection logic 210 may receive the digital input d.sub.b[n]] and N.sub.trn, and compare the two inputs to ensure the condition d.sub.b<N.sub.trn/2<N.sub.u?d.sub.b is met, where N.sub.u is the number of unit elements. The digital input is described below as being digital input d.sub.a[n] for simplicity and can be replaced by the digital input d.sub.b[n] in the following description. Thus, clipping detection logic 210 may ensure an N.sub.trn is selected such that there are enough unit elements that can be transitioned to generate the correct unary coded output, d.sub.u[n]. For example, if an N.sub.trn is selected that is too large (e.g., N.sub.trn/2>N.sub.u?d.sub.a), then there is a smaller range of digital input values d.sub.a for which N.sub.trn may be enforceable. Thus, if N.sub.trn is too high, in some examples, N.sub.trn may be reduced. On the other hand, if N.sub.trn is too low, then HD2 and other harmonic distortion may appear. In some examples, if N.sub.trn is too low, the clipping detection logic may be configured to add additional transitions (e.g., N.sub.trn+1), without affecting the absolute value of the unary coded output. Accordingly, in various examples, a value N.sub.trn that falls within the range d.sub.a<N.sub.trn/2<N.sub.u?d.sub.a may be output by the clipping detection logic 210 as the signal L.sub.trn.
(66) In some alternative embodiments, the DAC (such as DAC 115) may further include one or more redundant unit elements. In some embodiments, the one or more redundant unit elements may be switched on or off as needed to avoid clipping. In some examples, the one or more redundant elements may act as zero padding for the input code, and remain in an off state (or in some examples an on state) until the one or more redundant unit elements are needed to enforce N.sub.trn transitions for a given input code, even as the code approaches 0 code (e.g., an all 0 code) or full code (e.g., an all 1 code). In this configuration, L.sub.trn may be equal to N.sub.trn, and the bit-width j of the unary code d.sub.u[n] may be increased by the number of redundant DAC unit (k). Accordingly, for an m-bit input code, the number of bits j may be given by: j=(2.sup.m?1)+k. In some examples, the one or more redundant unit elements may be provided alongside clipping detection logic 210. In other embodiments, the clipping detection logic 210 may be skipped, and the one or more redundant unit elements used instead.
(67) In various embodiments, the on/off calculation logic 215 may be configured to calculate a number of unit elements to be turned on (X.sub.on) and a number of unit elements to be turned off (X.sub.off). Specifically, X.sub.on and X.sub.off may correspond to the number of unit elements to be switched on or off of the L.sub.trn number of transitions. Thus, in some examples, X.sub.on+X.sub.off=L.sub.trn. In some embodiments, being turned on refers to a unit element being in an active state or contributing to the production of the analog output signal, and being turned off refers to a unit element being in an passive state or not contributing to the production of the analog output signal. The turned off state is a lower power consuming state than the turned on state. In some embodiments, a unit element can be turned off by placing a transistor in in the unit element in a non-conducting state and can be turned on by placing the transistor in a conductive state.
(68) The on/off calculation logic 215 may be configured to receive, from difference block 220, a delta code ?[n]. Accordingly, in some examples, the difference block 220 may be a first difference backward z-transform, configured to determine a difference from a current code (e.g., digital input d.sub.a[n]) and the previous code (e.g., digital input from the previous cycle d.sub.a[n?1]). In this example, the previous cycle may refer to a previous sample interval of the DAC, such as DAC 115 and/or DAC system 100 of
(69) The on/off calculation logic 215 may thus determine, based on the delta code (?[n]) and L.sub.trn a number of unit elements to be turned on during the transition, and the number of unit elements to be turned off. Thus, once the number of transitions L.sub.trn is determined, the change from the previous code (e.g., the delta code) may be used to determine how many additional unit elements need to be switched on or off. For example, if the delta code is 1, one additional unit may need to be turned on. Thus, the on/off calculation logic may set X.sub.on to be 1 more than X.sub.off. Accordingly, in some examples, the relationship between X.sub.on and X.sub.off may be expressed as: X.sub.on=X.sub.off+?[n].
(70) The number of units that need to be turned off, X.sub.off, may be provided to first random permutation logic 225, and the number of units that need to be turned on, X.sub.on, may be provided to second permutation logic 230. In various examples, the first and second random permutation logic 225, 230 may include various types of randomization and/or stochastic selection algorithms for randomizing and/or selecting individual unit elements to be switched on or off utilizing a respective algorithm (e.g., a random and/or stochastic algorithm for selecting the specific bit positions associated with individual unit elements of a plurality of unit elements to be switched). In some examples, the first and second random permutation logic 225, 230 may include various types of DEM algorithms, including, without limitation, random averaging, clocked averaging, individual level averaging, data weighted averaging, etc.
(71) The first random permutation logic 225 may be configured to determine which individual unit elements should be turned off (e.g., unit elements to be switched off that were previously on) based on the input X.sub.off, indicating the number of unit elements to be switched off, and a signal indicating which individual unit elements were turned on (idx.sub.on) during a previous cycle (e.g., a previous sampling interval). Specifically, the first random permutation logic 225 may indicate which specific unit elements of idx.sub.on should be turned off during the current sampling interval. In some examples, idx.sub.on may be equal to the input unary code of the previous cycle, d.sub.u[n?1]. Thus, in some examples, the first random permutation logic 225 may select an X.sub.off number of specific individual unit elements to be turned off from the unit elements indicated to have been on by the signal idx.sub.on. For example, the specific individual unit elements to be turned off may be selected from idx.sub.on according to a randomization and/or stochastic selection algorithm (e.g., a dynamic element matching algorithm). The first random permutation logic 225 may then output a signal indicative of which unit elements have been selected to be turned off, sel.sub.off.
(72) The second random permutation logic 230 may be configured to determine which individual unit elements should be turned on (e.g., unit elements to be switched on that were previously off), based on the input X.sub.on, indicating the number of unit elements to be switched on, and a signal indicating which of the individual unit elements were turned off (idx.sub.off) during the previous cycle. Specifically, the second random permutation logic 230 may indicate which specific unit elements of idx.sub.off should be turned on during the current sampling interval. Accordingly, in some examples, idx.sub.off may be equal to the inverse of d.sub.u[n?1]. In some examples, the second random permutation logic 230 may select an X.sub.on number of specific individual unit elements to be turned on from the unit elements indicated to have been off by the signal idx.sub.off. For example, the specific individual unit elements to be turned on may be selected from idx.sub.off according to the randomization and/or stochastic selection algorithm. The second random permutation logic 230 may output a signal indicative of which unit elements have been selected to be turned on, sel.sub.on.
(73) In some examples, the output signals, sel.sub.on and sel.sub.off, may be provided to multiplexer 235 as control signals for selecting between inputs of the multiplexer 235. Specifically, the input of the multiplexer 235 may include the input unary code of the previous cycle, d.sub.u[n?1] input, logic 1 (e.g., logic high), and logic 0 (e.g., logic low). According to some examples, sel.sub.off in the i-th bit position (sel.sub.off,i) may equal 1 if the corresponding i-th unit element is to be turned off, and set equal to 0 when there is no change. Similarly, sel.sub.on in the i-th bit position (sel.sub.on,i) may be equal 1 if the corresponding i-th unit element is to be turned on, and set equal to 0 when there is no change. In some examples, sel.sub.off,i and sel.sub.on,i may form a 2-bit control signal to the multiplexer for selecting the various inputs. Thus, if an i-th unit element of the DAC is to be switched off, a control signal of 10 may be generated, indicating that logic 0 should be output by the multiplexer 235. Similarly, if the i-th unit element of the DAC is to be switched on, a control signal of 01 may be generated, indicating that logic 1 should be output by the multiplexer 235. If a control signal of 00 is output, it may indicate that no transition should take place for the i-th unit element, and the unary code of the previous cycle in the i-th position, d.sub.u,i[n?1], may be output by the multiplexer 235. In this way, the multiplexer 235 may generate new input unary code for a current cycle, d.sub.u[n]. The current input unary cycle may then be stored at flip-flop 240. In some examples, the flip-flop 240 may be clocked by a clock signal having a period equal to a sample interval (e.g., a sampling clock).
(74) In this way, the encoder logic circuit 200 may generate an input unary code to switch unit elements of the DAC on and off according to a CTR-DEM scheme. Specifically, under the CTR-DEM framework, a constant number of transitions may be enforced (e.g., a constant number of transitions may be consistently performed at each sampling interval/cycle), with transition awarenessthat is, awareness of whether a given unit element will undergo a transition from on to off, or off to on.
(75)
(76) Unit element transitions (e.g., from on to off, or off to on) are depicted as hatch-marked shaded squares (e.g., indicating a transition from off to on) and hatch-marked empty square (e.g., indicating a transition from on to off). In the illustrated example, an N.sub.trn=5 is adopted. Thus, for each cycle, an N.sub.trn of 5 transitions is enforced (e.g., consistently performed at each cycle), corresponding to 5 transitions. For example, in the transition from n=1 to n=2, the code(n) value changes from code(1)=8 (alternatively, d.sub.a[1]=1000) to code(2)=9 (alternatively, d.sub.a[2]=1001). Accordingly, under CTR-DEM, to enforce an N.sub.trn of 5 transitions, X.sub.on=3 and X.sub.off=2 is used. Thus, the input unary code changes from d.sub.u[1]=110111100001100 to d.sub.u[2]=110111101010010, where R7, R5, and R2 are selected to be turned on from an off state (e.g., transition to an on state), and R4 and R3 are selected to be turned off from an on state (e.g., transition to an off state). In this way, the CTR-DEM scheme may continue, so on and so forth, through each of the remaining cycles n=3 through n=16.
(77)
(78) Conventional DEM attempts to break the static deterministic relationship between the digital input, code(n) (also referred to as d.sub.a[n]), and unary code u.sub.i(n) (also referred to as d.sub.u[n]), where u.sub.i(n)=B2T(code(n)), where B2T is a binary-to-thermometer code conversion. Instead, a dynamic relationship is created, where u.sub.i(n)=DEM(code(n)), which converts amplitude errors (r.sub.i), delay errors (t.sub.del,i), and duty-cycle errors (t.sub.cyc,i) to noise instead of harmonic distortion (HDx). Generally, DEM can increase switching activity, leading to higher RMS values of total delay error e.sub.del(n) and total duty-cycle error e.sub.cyc(n), and increased degradation to SNDR. Thus, with conventional DEM, spurious free dynamic range (SFDR) may be improved at the expense of some degradation in signal-to-noise and dispersion ratio (SNDR), and while HD2 remains.
(79) As can be seen in the error profile waveforms 415a-415c, with conventional DEM, error introduced due to duty-cycle mismatch may be the same for rising edge transitions and falling edge transitions. Thus, the duty-cycle error may be seen to have an error profile given by the absolute value of the delta(n) (used interchangeably with delta code, and ?[n]), exhibiting a 2? signal frequency pattern. Thus second harmonic distortion (HD2) may remain under a conventional DEM scheme.
(80) Accordingly, a CTR-DEM scheme may enforce a constant transition rate, with N.sub.trn transitions of unit elements each cycle. By enforcing a constant number of unit element transitions, or additional transitions where necessary (e.g., ?N.sub.trn or N.sub.trn+i), this may mitigate DAC switching current (I.sub.sw) and pre-driver ISI for N.sub.trn relative to the absolute value of delta(n). Moreover, CTR-DEM may perform a fixed number of transitions irrespective of code or delta code. Thus, removing dependency on the code spreads the error as noise instead of a spur.
(81) Error profile waveform 415a illustrate an example in which N.sub.trn is set too high. Because N.sub.trn is too high, an increase in the noise floor is exhibited. In various examples, a constant transition rate may be realized with an N.sub.extra number of extra switches that are more than needed to produce a given delta code (e.g., abs(delta(n))). Thus, the extra switching may be given as: N.sub.extra=N.sub.trn?abs(delta(n)), where abs(delta(n)) is the absolute value of delta(n). N.sub.extra may always be an even value, such that any transition turning off a cell that was on is matched with corresponding transition turning on a cell that was off.
(82) Error profile 415b illustrates an example where an N.sub.trn_opt is utilized. Here, N.sub.trn_opt is set equal to max(delta(n)). This may result in an error profile with no HD2 and a minimum noise floor needed to suppress HD2. The optimum N.sub.trn may be directly proportional to the amplitude and frequency of the input code/signal. Error profile 415c is an example in which N.sub.trn is set too low. Because N.sub.trn is too low, the peaks of abs(delta(n)) may remain exposed, leading to the appearance of HD2 spurs.
(83) Thus, by tuning the N.sub.trn, the proposed CTR-DEM may realize improved SNDR over conventional DEM, close to no-DEM levels, while removing all mismatch related spurs. By tuning N.sub.trn, CTR-DEM has the ability to maintain optimal SNDR across different power levels, carrier frequencies, etc., thereby creating a lower noise floor that scales with signal power and carrier frequency, while also improving SFDR. In some examples, tuning (e.g., adjusting) of N.sub.trn may further include checking for N.sub.trn clipping, as described above with respect to clipping detection logic 210 of
(84)
(85) In some examples, N.sub.trn may be set as a static value. In other examples, N.sub.trn may be an adjustable value. For example, in some embodiments, N.sub.trn may be set by a user. In other examples, N.sub.trn may be adjusted on-the-fly and/or in real-time based on system requirements and/or metrics. In yet further embodiments, N.sub.trn may be a hard-coded value. In some examples, the hard-coded value may be determined based on known signal characteristics for a given use case or for one or more common applications. Tuning of N.sub.trn to an optimal value is further discussed above, with respect to
(86) The flow 500 may continue, at block 510, by obtaining a digital input (e.g., d.sub.a[n]) for a current cycle (e.g., a current sampling interval of a DAC). In various examples, the digital input may be a binary-coded digital signal indicating a signal to be converted to an analog signal. In some examples, the digital input for the current cycle may be compared against the digital input from a previous cycle (e.g., d.sub.a[n?1]) to determine a delta code, as previously described.
(87) At block 515, the flow 500 continues by checking for clipping. In some examples, N.sub.trn may be checked for clipping based on the digital input. Specifically, N.sub.trn may be compared against the value of the digital input, d.sub.a, to ensure a corresponding unary code can be generated by an N.sub.trn number of transitions. In some examples, clipping may be checked by ensuring the condition: d.sub.a<N.sub.trn/2<N.sub.u?d.sub.a. In some examples, if clipping is detected, the number of transitions, N.sub.trn, may be reduced. On the other hand, if N.sub.trn is too low, then HD2 and other harmonic distortion may appear. In some examples, if N.sub.trn is too low, the clipping detection logic may be configured to add additional transitions (e.g., N.sub.trn+1).
(88) In some embodiments, the flow 500 may further include, at block 535, alternatively and/or additionally utilizing one or more redundant unit elements. As previously described, in some examples, the DAC may further include one or more redundant unit elements. In such embodiments, the one or more redundant unit elements may be switched on or off as needed to avoid clipping. In some examples, the one or more redundant elements may act as zero padding for the input code, and remain in an off state (or in some examples an on state) until the one or more redundant unit elements are needed to enforce N.sub.trn transitions for a given input code, even as the code approaches 0 code (e.g., an all 0 code) or full code (e.g., an all 1 code). In this configuration, L.sub.trn may be equal to N.sub.trn. Thus, in some examples the check for clipping described above may be skipped, and the one or more redundant unit elements used instead. In other embodiments, the one or more redundant unit elements may be utilized in combination with the check for clipping.
(89) At block 520, the flow 500 continues by determining a number of unit elements to be switched on (from an off state), X.sub.on, and number of unit elements to be switched off (from an on state), X.sub.off. In some examples, X.sub.on and X.sub.off may be determined based on the delta code ?[n]. For example, the delta code may indicate a change in the digital signal from a previous cycle. Thus, the delta code may indicate a decrease in the input code, which may correspond to a number of additional unit elements to be turned off, or an increase in the input code, which may correspond to a number of additional unit elements to be turned on. Accordingly, in some examples, the relationship between X.sub.on and X.sub.off may be expressed as: X.sub.on=X.sub.off+?[n]. When ?[n] is positive, indicating an increase in the digital input, the number of unit elements to be switched on (e.g., X.sub.on) may be ?[n] more than the number of unit elements to be switched off (e.g., X.sub.off). Conversely, when ?[n] is negative, indicating a decreased digital input value, X.sub.on may be smaller than X.sub.off by ?[n].
(90) The flow 500 continues, at block 525, by selecting unit elements for transition. In various embodiments, random permutation logic may be implemented to select individual unit elements for transition from an on to an off state (based on X.sub.off), and from an off to an on state (based on X.sub.on). As previously described, random permutation logic may include various types of DEM algorithms, including, without limitation, random averaging, clocked averaging, individual level averaging, data weighted averaging, etc., for randomizing and/or selecting individual unit elements to be switched on or off. In yet further embodiments, random permutation logic may alternatively include or be replaced by a deterministic DEM algorithm. For example, the elements that are switched may be evenly distributed over time according to a deterministic pattern and/or sequence, such that timing error attributable to individual unit elements are evenly spread for specific transitions. For example, for an N.sub.trn number of transitions, the idx.sub.on and/or idx.sub.off may be adjusted by the random permutation logic to follow a deterministic pattern and/or sequence of which bits (e.g., corresponding unit elements) are to be switched on or switched off.
(91) In some examples, a first permutation logic circuit may be configured to determine which individual unit elements should be turned off (e.g., unit elements to be switched off that were previously on), based on the input X.sub.off, indicating the number of unit elements to be switched off, and a signal indicating which individual unit elements were turned on (idx.sub.on) during a previous cycle (e.g., a previous sampling interval). Accordingly, in some examples, idx.sub.on may be equal to the input unary code of the previous cycle, d.sub.u[n?1]. Thus, in some examples, the first random permutation logic circuit may select X.sub.off number of unit elements to be turned off from the unit elements indicated to have been on by the signal idx.sub.on according to a randomization and/or stochastic selection algorithm (e.g., a dynamic element matching algorithm). The first random permutation logic may then output a signal indicative of which unit elements have been selected to be turned off, sel.sub.off. A unary code refers to an entropy encoding that represents a number n with a code length generally equal to n+1 or n. In some embodiments, the unary code is used to control DAC cells or unit elements.
(92) The second random permutation logic may be configured to determine which individual unit elements should be turned on (e.g., unit elements to be switched on that were previously off), based on the input X.sub.on, indicating the number of unit element to be switched on, and a signal indicating which of the individual unit elements were turned off (idx.sub.off) during the previous cycle. Accordingly, idx.sub.off may be equal to the inverse of d.sub.u[n?1]. Thus, in some examples, the second random permutation logic may select X.sub.on number of unit elements to be turned on from the unit elements indicated to have been off by the signal idx.sub.off according to a randomization and/or stochastic selection algorithm (e.g., dynamic element matching algorithm). The second random permutation logic may output a signal indicative of which unit elements have been selected to be turned on, sel.sub.on.
(93) The flow 500 further includes, at block 530, generating unary code for the current cycle. In various examples, the unary code for the current cycle may be generated based on the sel.sub.on and sel.sub.off outputs indicating the selected units for transitions. As previously described, in some examples, the output signals, sel.sub.on and sel.sub.off, may be provided to a multiplexer as control signals for selecting between inputs of the multiplexer. Specifically, the inputs of the multiplexer may include the input unary code of the previous cycle, d.sub.u[n?1] input, logic 1 (e.g., logic high), and logic 0 (e.g., logic low). According to some examples, sel.sub.off in the i-th bit position (sel.sub.off,i) may be equal 1 if the corresponding i-th unit element is to be turned off, and set equal to 0 when there is no change. Similarly, sel.sub.on in the i-th bit position (sel.sub.on,i) may be equal 1 if the corresponding i-th unit element is to be turned on, and set equal to 0 when there is no change. In some examples, sel.sub.off,i and sel.sub.on,i may form a 2-bit control signal to the multiplexer for selecting the various inputs. Thus, if an i-th unit element of the DAC is to be switched off, a control signal of 10 may be generated, indicating that logic 0 should be output by the multiplexer. Similarly, if the i-th unit element of the DAC is to be switched on, a control signal of 01 may be generated, indicating that logic 1 should be output by the multiplexer. If a control signal of 00 is output, it may indicate that no transition should take place for the i-th unit element, and the unary code of the previous cycle in the i-th position, d.sub.u,i[n?1], may be output by the multiplexer. In this way, in some examples, the multiplexer may generate new input unary code for a current cycle, d.sub.u[n]. In further examples, the current input unary cycle may then be stored, for example, at a flip-flop, where the flip-flop may be clocked by a clock signal having a period equal to a sample interval. In yet further embodiments, generation of the unary code may be performed through logic or components other than the multiplexer. For example, so long as the generated unary code reflects the transitions of the unit elements (e.g., to be switched on and switched off), based on the signals sel.sub.off and sel.sub.on, other suitable circuitry may be used to generate unary code d.sub.u[n] described above. Accordingly, in further examples, the states of each unit element of a DAC may be controlled according to the unary code, as previously described with respect to
(94) The techniques and processes described above with respect to various embodiments may be performed by one or more of system 100 and/or subsystems and components thereof, such as transition aware DEM encoder logic circuit 200 as described above with respect to
(95) With reference to
(96) In some embodiments, digital pre-distortion circuit 600 is configured to compensate for the term (1?c.sub.2(x.sub.a).sup.2*Z.sub.SUP(?)) in the following equation which represents the voltage V.sub.OUT (at output 103): V.sub.OUT?x.sub.aV.sub.REF?x.sub.a?(1?c.sub.2(x.sub.a).sup.2*Z.sub.SUP(?)), where x.sub.a is associated with the digital input d.sub.a[n], the term c.sub.2 is a coefficient, and Z.sub.SUP (?) is a model of the supply network frequency response. The term x.sub.a represents the normalized sign code where (code(n)-midcode)/midcode in some embodiments.
(97) The supply network 116 is any circuit for providing current and/or voltage to the DAC 115 at a level V.sub.REF. The circuit can include components such as diodes, transistors, resistors, capacitors or inductors and can have parasitic characteristics. In some embodiments, the supply network includes an on-chip low drop out (LDO) regulator with controllable and predictable impedance at the operating parameters of system 100. The supply network 116 can have parasitic capacitance, resistance, and inductance associated with its design. Impedance model Z.sub.SUP(?) includes features that account for such parasitic characteristics in some embodiments. Supply network response is a characteristic of the supply network 116 that causes an input to the supply network 116 to be changed to the output of the supply network 116. The supply network response can vary according to temperature, process variations, frequency, and other variables. The supply network response is characterized over frequency in some embodiments. The supply network response can involve changes to amplitude and phase of signals provided across the supply network 116 in some embodiments. In some embodiments, the supply network response is a response due to impedance which changes over frequency.
(98) In some embodiments, digital pre-distortion circuit 600 is configured to multiply the digital input x.sub.a by the response of filter 606 or h.sub.SUP (nT). In some embodiments, the responses of impedance model Z.sub.SUP (?) and filter h.sub.SUP (nT) are matched to each other in the desired frequency range for system 100. The result of the multiplication by h.sub.SUP (nT) is: V.sub.OUT?x.sub.a?(1+d.sub.2x.sub.a.sup.2*h.sub.SUP(nT))?(1?c.sub.2(x.sub.a{circumflex over ()}{circumflex over ()}).sup.2*Z.sub.SUP(?)) or x.sub.a?(1+d.sub.2x.sub.a.sup.2*h.sub.SUP(nT)?c.sub.2(x.sub.a{circumflex over ()}{circumflex over ()}).sup.2*Z.sub.SUP(?)?d.sub.2x.sub.a.sup.2*h.sub.SUP(nT)*c.sub.2(x.sub.a{circumflex over ()}{circumflex over ()}).sup.2*Z.sub.SUP(?)). The term x.sub.a{circumflex over ()}{circumflex over ()} is x.sub.a hat which represents the new digital input data d.sub.b[n] and equals x.sub.a?(1+d.sub.2x.sub.a.sup.2*h.sub.SUP(nT)). If Z.sub.SUP (?) and h.sub.SUP (nT) are well matched, the terms x.sub.a.sup.2*h.sub.SUP(nT) and c.sub.2 (x.sub.a{circumflex over ()}{circumflex over ()}).sup.2*Z.sub.SUP(?) are equal and the term d.sub.2x.sub.a.sup.2*h.sub.SUP(nT)*c.sub.2 (x.sub.a{circumflex over ()}{circumflex over ()}).sup.2*Z.sub.SUP(?) is a very small term associated with intermodulation IMD5 which can be ignored such that V.sub.OUT?x.sub.a?1 according to some embodiments. In some embodiments, the new digital input data d.sub.b[n] is a digitally pre-distorted input signal. A digitally pre-distorted input signal is a digital input value that has been adjusted to reduce distortion (e.g. due to signal current I.sub.sig (code[n]). In some embodiments, d.sub.2 is a gain coefficient.
(99) Multiplier 602, adder 604, filter 606, multiplier 608, multiplier 614, and adder 616 are configured to implement the above equation for digital input data d.sub.a[n] (x.sub.a{circumflex over ()}{circumflex over ()}=(1+d.sub.2x.sub.a.sup.2*h.sub.SUP(nT))x.sub.a). In some embodiments, the coefficient d.sub.2 is equal to c.sub.2R.sub.SUPP/(1+c.sub.0R.sub.SUPP) where c.sub.2 and c.sub.0 are constants and R.sub.Supp is a resistive value for an impedance model for the supply network 116 in some embodiments (see
(100) With reference to
(101) With reference to
(102) With reference to
(103) With reference to
(104) While some features and aspects have been described with respect to the embodiments, one skilled in the art will recognize that numerous modifications are possible. For example, the methods and processes described herein may be implemented using hardware components, custom integrated circuits (ICs), programmable logic, and/or any combination thereof. Further, while various methods and processes described herein may be described with respect to particular structural and/or functional components for ease of description, methods provided by various embodiments are not limited to any particular structural and/or functional architecture but instead can be implemented in any suitable hardware configuration. Similarly, while some functionality is ascribed to one or more system components, unless the context dictates otherwise, this functionality can be distributed among various other system components in accordance with the several embodiments.
(105) Moreover, while the procedures of the methods and processes described herein are described in a particular order for ease of description, unless the context dictates otherwise, various procedures may be reordered, added, and/or omitted in accordance with various embodiments. Moreover, the procedures described with respect to one method or process may be incorporated within other described methods or processes; likewise, system components described according to a particular structural architecture and/or with respect to one system may be organized in alternative structural architectures and/or incorporated within other described systems. Hence, while various embodiments are described with or without some features for ease of description and to illustrate aspects of those embodiments, the various components and/or features described herein with respect to a particular embodiment can be substituted, added and/or subtracted from among other described embodiments, unless the context dictates otherwise. Consequently, although several embodiments are described above, it will be appreciated that the invention is intended to cover all modifications and equivalents within the scope of the following claims.