System and method for transition aware binary switching for digital-to-analog converters (DACs)
12407356 ยท 2025-09-02
Assignee
Inventors
Cpc classification
H03M1/0604
ELECTRICITY
H03M1/0639
ELECTRICITY
International classification
Abstract
A system may have a multiplexer and a controller. For a transition from a first pair of bits in first data provided to digital-to-analog converters (DACs) to a second pair of bits in second data, the controller may determine whether the transition is of a first type or of a second type, and in response to determining that the transition is of the first type, control the multiplexer to output the second pair of bits to the DACs. In response to determining that the transition is of the second type and the second pair of bits are to be swapped, the controller may control the multiplexer to output a swapped pair of bits to the DACs. Data output by the multiplexer based on the second data has a predetermined number of bits that have binary values different from those of corresponding bits in the first data.
Claims
1. A method comprising: for a transition from a first pair of bits in first data provided to one or more digital-to-analog converters (DACs) to a second pair of bits in second data provided to a multiplexer, determining, by a controller based on the first pair of bits and the second pair of bits, whether the transition is of a first type or of a second type; in response to determining that the transition is of the first type, generating, by the controller, a first signal to control the multiplexer to output the second pair of bits to the one or more DACs; in response to determining that the transition is of the second type, determining, by the controller, whether the second pair of bits are to be swapped or not; and in response to determining that the second pair of bits are to be swapped, generating, by the controller, a second signal to control the multiplexer to swap the second pair of bits and output the swapped pair of bits to the one or more DACs, wherein data output by the multiplexer based on the second data has a predetermined number of bits that have binary values different from those of corresponding bits in the first data.
2. The method according to claim 1, wherein determining whether the transition is of a first type or of a second type comprises: determining a first number of bits that have a binary value 1 among the first pair of bits; determining a second number of bits that have a binary value 1 among the second pair of bits; in response to determining that the first number is odd and the second number is odd, determining that the transition is of the second type; and in response to determining that at least one of the first number or the second number is even, determining that the transition is of the first type.
3. The method according to claim 1, further comprising: in response to determining that the transition is of the first type, determining a number of binary transitions from the first pair of bits to the second pair of bits, wherein the number of binary transitions is a number of bits of the second pair of bits that have binary values different from those of corresponding bits of the first pair of bits.
4. The method according to claim 1, further comprising: for each of a plurality of transitions from respective pairs of bits in the first data to respective pairs of bits in the second data, determining whether each transition is of the first type or of the second type; in response to determining that each transition is of the first type, determining a respective number of binary transitions for each transition, wherein the number of binary transitions is a number of bits of the second pair of bits that have binary values different from those of corresponding bits of the first pair of bits; and determining a total number of binary transitions for the first type by summing the respective numbers of binary transitions.
5. The method according to claim 4, further comprising: determining a total number of swaps for the second type based on the total number of binary transitions for the first type.
6. The method according to claim 5, wherein determining whether the second pair of bits are to be swapped or not comprises: in response to determining that each transition is of the second type, determining whether each transition is swapped or not such that a number of transitions determined to be swapped among the plurality of transitions equals the total number of swaps for the second type.
7. The method according to claim 1, further comprising: reducing switching noise on driver circuitry of the one or more DACs by reducing a number of binary transitions from the first data to the data output by the multiplexer, to the predetermined number of bits.
8. A system comprising: a multiplexer configured to output, at a first time, a first pair of a first digital value and a first dither value; receive, at a second time subsequent to the first time, a second pair of a second digital value and a second dither value; a controller coupled to the multiplexer and configured to: compare the first pair and the second pair; and control, based on a result of the comparing, the multiplexer to swap one or more bits of the second digital value with one or more bits of the second dither value, the swapped one or more bits of the second digital value being provided as an input to one or more digital-analog-converters (DACs).
9. The system according to claim 8, wherein the swapped one or more bits of the second dither value are provided as an input to one or more DACs that are different from the one or more DACs to which the swapped one or more bits of the second digital value are provided.
10. The system according to claim 8, wherein in comparing the first pair and the second pair, the controller is configured to: compare, for each bit of a plurality of bits of the second digital value, a first value and a second value as a second comparison, the first value comprising a binary value of the first digital value and a binary value of the first dither value that correspond to said each bit, the second value comprising a binary value of the second digital value and a binary value of the second dither value that correspond to said each bit; determine, based on a result of the second comparison, among the plurality of bits of the second digital value, a group of bits of the second digital value that are optionally to be swapped with corresponding bits of the second dither value; and determine, based on the result of the second comparison and a predetermined quantity, among the group of bits of the second digital value, a first quantity of one or more bits that are to be swapped with one or more bits of the second dither value.
11. The system according to claim 10, wherein the controller is configured to: determine, based on the first quantity, the one or more bits of the second digital value swapped with the one or more bits of the second dither value.
12. The system according to claim 10, wherein the predetermined quantity is equal to the number of the plurality of bits of the second digital value.
13. The system according to claim 10, wherein the controller is configured to: determine the one or more bits of the second digital value swapped with the one or more bits of the second dither value by randomly selecting, from among the group of bits of the second digital value, one or more bits according to the first quantity.
14. The system according to claim 8, further comprising: first circuitry configured to randomly generate the second dither value; and second circuitry configured to receive input data, and generate the second digital value by subtracting the second dither value from the input data.
15. A device comprising: circuitry coupled to a first plurality of digital-analog-converters (DACs) and configured to perform a dynamic element matching logic to output a unary code to the first plurality of DACs; a multiplexer coupled to a second plurality of DACs; and a controller coupled to the multiplexer and configured to: for a transition from a first pair of bits in first data provided to the second plurality of DACs to a second pair of bits in second data provided to the multiplexer, determine, based on the first pair of bits and the second pair of bits, whether the transition is of a first type or of a second type; in response to determining that the transition is of the first type, generate a first signal to control the multiplexer to output the second pair of bits to the one or more DACs; in response to determining that the transition is of the second type, determine whether the second pair of bits are to be swapped or not; and in response to determining that the second pair of bits are to be swapped, generate a second signal to control the multiplexer to swap the second pair of bits and output the swapped pair of bits to the one or more DACs, wherein data output by the multiplexer based on the second data has a predetermined number of bits that have binary values different from those of corresponding bits in the first data.
16. The device according to claim 15, wherein in determining whether the transition is of a first type or of a second type, the controller is configured to: determine a first number of bits that have a binary value 1 among the first pair of bits; determine a second number of bits that have a binary value 1 among the second pair of bits; in response to determining that the first number is odd and the second number is odd, determine that the transition is of the second type; and in response to determining that at least one of the first number or the second number is even, determine that the transition is of the first type.
17. The device according to claim 15, the controller is further configured to: in response to determining that the transition is of the first type, determine a number of binary transitions from the first pair of bits to the second pair of bits, wherein the number of binary transitions is a number of bits of the second pair of bits that have binary values different from those of corresponding bits of the first pair of bits.
18. The device according to claim 15, the controller is further configured to: for each of a plurality of transitions from respective pairs of bits in the first data to respective pairs of bits in the second data, determine whether each transition is of the first type or of the second type; in response to determining that each transition is of the first type, determine a respective number of binary transitions for each transition, wherein the number of binary transitions is a number of bits of the second pair of bits that have binary values different from those of corresponding bits of the first pair of bits; and determine a total number of binary transitions for the first type by summing the respective numbers of binary transitions.
19. The device according to claim 18, the controller is further configured to: determine a total number of swaps for the second type based on the total number of binary transitions for the first type.
20. The device according to claim 19, wherein in determining whether the second pair of bits are to be swapped or not, the controller is configured to: in response to determining that each transition is of the second type, determine whether each transition is swapped or not such that a number of transitions determined to be swapped among the plurality of transitions equals the total number of swaps for the second type.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) Various objects, aspects, features, and advantages of the disclosure will become more apparent and better understood by referring to the detailed description taken in conjunction with the accompanying drawings, in which like reference characters identify corresponding elements throughout. In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements.
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14) The details of various embodiments of the methods and systems are set forth in the accompanying drawings and the description below.
DETAILED DESCRIPTION
(15) The following disclosure provides many different embodiments, or examples, for implementing different features of the provided subject matter. Specific examples of components and arrangements are described below to simplify the present disclosure. These are, of course, merely examples and are not intended to be limiting. For example, a first feature in communication with or communicatively coupled to a second feature in the description that follows may include embodiments in which the first feature is in direct communication with or directly coupled to the second feature and may also include embodiments in which additional features may intervene between the first and second features, such that the first feature is in indirect communication with or indirectly coupled to the second feature. In addition, the present disclosure may repeat reference numerals and/or letters in the various examples. This repetition is for the purpose of simplicity and clarity and does not in itself dictate a relationship between the various embodiments and/or configurations discussed.
(16) Various embodiments disclosed herein are related to a system including a multiplexer and a controller. In some embodiments, the multiplexer (or MUX) may be data selector circuitry, programmable logic devices, or any device or circuitry that selects between one or more analog or digital input signals and forward the selected one or more input signals to one or more output lines. In some embodiments, circuitry may be one or more circuits, one or more hardware components, a combination of hardware and firmware, a combination of hardware and software, or a combination of hardware, firmware and software. In some embodiments, the controller may be one or more processors, programmable logic devices, microprocessor units, special purpose processors, a combination of hardware, firmware, and/or software, or any logic circuitry that include one or more logic gates, receive one or more analog or digital input signals, perform one or more logic operation, and/or provide one or more analog or digital output signal. The multiplexer may be configured to output, at a first time, a first pair of a first digital value and a first dither value. In some embodiments, a digital value may be a value indicated by a digital signal, a digital number that can be represented in a digit-based numbering system. In some embodiments, a dither value may be a value indicated by a randomly (or pseudo-randomly) generated digital or analog signal, or a value indicated by any digital or analog signal that is randomly (or pseudo-randomly) generated to randomize errors (e.g., quantization errors) and/or remove data dependency. The multiplexer may be configured to receive, at a second time subsequent to the first time, a second pair of a second digital value and a second dither value. The controller may be coupled to the multiplexer and configured to compare the first pair and the second pair. The controller may be configured to control, based on a result of the comparing, the multiplexer to swap one or more bits of the second digital value with one or more bits of the second dither value. In some embodiments, swapping a first bit of a first value with a second bit of a second value may include swapping or exchanging a value of the first bit with a value of the second bit, or copying or moving or storing (1) a value of the first bit to the second bit and (2) a value of the second bit to the first bit. The swapped one or more bits of the second digital value may be provided as an input to one or more digital-analog-converters (DACs). In some embodiments, the one or more DACs may include one or more binary-weighted DACs, cyclic DACs, thermometer-coded DACs, or hybrid (segmented) DACs.
(17) In some embodiments, the swapped one or more bits of the second dither value may be provided as an input to one or more DACs that are different from the one or more DACs to which the swapped one or more bits of the second digital value are provided.
(18) In some embodiments, in comparing the first pair and the second pair, the controller may be configured to compare, for each bit of a plurality of bits of the second digital value, a first value and a second value as a second comparison. The first value may include a binary value of the first digital value and a binary value of the first dither value that correspond to said each bit. The second value may include a binary value of the second digital value and a binary value of the second dither value that correspond to said each bit. The controller may be configured to determine, based on a result of the second comparison, among the plurality of bits of the second digital value, a group of bits of the second digital value that are optionally to be swapped with corresponding bits of the second dither value. The controller may be configured to determine, based on the result of the second comparison and a predetermined quantity, among the group of bits of the second digital value, a first quantity of one or more bits that are to be swapped with one or more bits of the second dither value.
(19) In some embodiments, the controller may be configured to determine, based on the first quantity, the one or more bits of the second digital value swapped with the one or more bits of the second dither value. The predetermined quantity may be equal to the number of the plurality of bits of the second digital value. The controller may be configured to determine the one or more bits of the second digital value swapped with the one or more bits of the second dither value by randomly selecting, from among the group of bits of the second digital value, one or more bits according to the first quantity.
(20) In some embodiments, the system may include first circuitry and second circuitry. The first circuitry (e.g., dither generator) may be configured to randomly generate the second dither value. In some embodiments, the dither generator may include one or more devices or circuitry that can generate random numbers, pseudorandom numbers, random patterns, pseudorandom patterns, random noise, pseudorandom noise, random digital sequences, or pseudorandom digital sequences including pseudorandom binary sequences. The second circuitry (e.g., subtractor circuitry) may be configured to receive input data, and generate the second digital value by subtracting the second dither value from the input data. The subtractor circuitry may be one or more processors, one or more programmable logic devices, or any device or circuitry that includes logic gates for subtraction, and/or performs subtraction of digital numbers.
(21) Various embodiments disclosed herein are related to a method. The method may include outputting, by a multiplexer at a first time, a first pair of a first digital value and a first dither value. The method may include receiving, by the multiplexer at a second time subsequent to the first time, a second pair of a second digital value and a second dither value. The method may include comparing, by a controller coupled to the multiplexer, the first pair and the second pair. The method may include controlling, by the controller based on a result of the comparing. The multiplexer to swap one or more bits of the second digital value with one or more bits of the second dither value. The swapped one or more bits of the second digital value may be provided as an input to one or more digital-analog-converters (DACs).
(22) In some embodiments, the swapped one or more bits of the second dither value may be provided as an input to one or more DACs that are different from the one or more DACs to which the swapped one or more bits of the second digital value are provided.
(23) In some embodiments, in comparing the first pair and the second pair, the controller may compare, for each bit of a plurality of bits of the second digital value, a first value and a second value as a second comparison. The first value may include a binary value of the first digital value and a binary value of the first dither value that correspond to said each bit. The second value may include a binary value of the second digital value and a binary value of the second dither value that correspond to said each bit. The controller may determine, based on a result of the second comparison, among the plurality of bits of the second digital value, a group of bits of the second digital value that are optionally to be swapped with corresponding bits of the second dither value. The controller may determine, based on the result of the second comparison and a predetermined quantity, among the group of bits of the second digital value, a first quantity of one or more bits that are to be swapped with one or more bits of the second dither value.
(24) In some embodiments, the controller may determine, based on the first quantity, the one or more bits of the second digital value swapped with the one or more bits of the second dither value. The predetermined quantity may be equal to the number of the plurality of bits of the second digital value. The controller may determine the one or more bits of the second digital value swapped with the one or more bits of the second dither value by randomly selecting, from among the group of bits of the second digital value, one or more bits according to the first quantity.
(25) In some embodiments, the second dither value may be randomly generated. Input data may be received. The second digital value may be generated by subtracting the second dither value from the input data.
(26) Various embodiments disclosed herein are related to a device including a multiplexer and a controller. The multiplexer may be coupled to a first plurality of digital-analog-converters (DACs) and a second plurality of DACs. The multiplexer may be configured to output, at a first time, a first pair of a first digital value and a first dither value, which are respectively provided to the first plurality of DACs and the second plurality of DACs. The multiplexer may be configured to receive, at a second time subsequent to the first time, a second pair of a second digital value and a second dither value. The controller may be coupled to the multiplexer and configured to compare the first pair and the second pair. The controller may be configured to control, based on a result of the comparing, the multiplexer to swap one or more bits of the second digital value with one or more bits of the second dither value. The swapped one or more bits of the second digital value may be provided as an input to the second plurality of DACs. The swapped one or more bits of the second dither value may be provided as an input to the first plurality of DACs.
(27) In some embodiments, in comparing the first pair and the second pair, the controller may be configured to compare, for each bit of a plurality of bits of the second digital value, a first value and a second value as a second comparison. The first value may include a binary value of the first digital value and a binary value of the first dither value that correspond to said each bit. The second value may include a binary value of the second digital value and a binary value of the second dither value that correspond to said each bit. The controller may be configured to determine, based on a result of the second comparison, among the plurality of bits of the second digital value, a group of bits of the second digital value that are optionally to be swapped with corresponding bits of the second dither value. The controller may be configured to determine, based on the result of the second comparison and a predetermined quantity, among the group of bits of the second digital value, a first quantity of one or more bits that are to be swapped with one or more bits of the second dither value.
(28) In some embodiments, the controller may be configured to determine, based on the first quantity, the one or more bits of the second digital value swapped with the one or more bits of the second dither value. The predetermined quantity may be equal to the number of the plurality of bits of the second digital value. The controller may be configured to determine the one or more bits of the second digital value swapped with the one or more bits of the second dither value by randomly selecting, from among the group of bits of the second digital value, one or more bits according to the first quantity.
(29) In some embodiments, the device may further include first circuitry and second circuitry. The first circuitry may be configured to randomly generate the second dither value. The second circuitry may be configured to receive input data, and generate the second digital value by subtracting the second dither value from the input data.
(30)
(31) Referring to
(32) In one aspect, DACs may use segmentation (e.g., segmentation into the MSBs DAC 130 and the LSBs DAC 150 in
(33) To solve this problem, according to certain aspects, embodiments in the present disclosure relate to techniques for randomizing LSBs code (e.g., binary value) to make the LSBs code data independent. In some embodiments, a system (e.g., DAC system) may generate a random dither signal and randomize LSBs code by subtracting, from an input digital signal, the random dither signal in the digital domain and adding an auxiliary dither DAC. In some embodiments, a dither signal may be added to an input digital signal in the digital domain, and subtracted in the analog domain. In this manner, the amplitude/timing errors and supply modulation of the LSBs code can show up as noise without any limitation to SFDR and without changing a desired output. An example DAC configured to randomize LSBs code using dither signals is shown in
(34)
(35) Referring to
(36) As shown in
(37)
(38) Generally, if N.sub.B=N.sub.D, randomization using dither signals can be performed using the following equation:
(39)
(40) In one aspect, although such randomization using dither signals can reduce the amplitude/timing errors and supply modulation of the LSBs code, the randomization can increase random switching (e.g., random switching between binary values 0 and 1) onto the supply of a pre-driver (PreDrv) which modulates clock signals (CLK) and the supply of a driver (Drv) which modulates reference voltages (REF). Supply modulation of both the pre-driver and the driver can modulate a carrier frequency (Fsig). The increased random switching onto the supply modulation of both the pre-driver and the driver can show up as skirts, and increase the in-band noise floor which is undesirable and a critical limitation for radio frequency (RF) applications especially at a high carrier frequency (Fsig).
(41) To solve this problem, according to certain aspects, embodiments in the present disclosure relate to techniques for determining (or choosing) the arbitrary or random dither signal such that the number of switching (e.g., switching between binary values 0 and 1) for a given input digital data is equal to (or substantially equal to) a constant. In some embodiments, for a given n.sup.th digital signal din[n] (e.g., din[n] 211 in
(42)
(43) Generally, if N.sub.B=N.sub.D, a number of binary transitions for converting a given n.sup.th digital signal din[n] is given as follows:
(44)
(45) By determining (or choosing) a digital signal b[n] and a dither signal d[n] to satisfy Equation 3 (or Equation 4), the system can realize a binary constant transition rate (BCTR), thereby effectively eliminating all the switching noise on the supply of pre-driver (PreDrv) circuitry (FF.sub.j 234, 244, 254) and the supply of DAC driver (Drv) circuitry (236, 246, 256). In other words, keeping a constant number of switching in the digital signal b[n] and the dither signal d[n] can avoid modulation of clock signals (CLK) and modulation of reference voltages or currents (REF).
(46) In some embodiments, if all bits of a dither signal (denoted by DIT.sub.i) are active have random values, each of 14 bits including all bits of a LSBs digital signal (denoted by LSB.sub.i) and DIT.sub.i may have 50% value density (see Equation 5 and Equation 7) and 50% transition density (see Equation 6 and Equation 8) as follows:
(47)
(48) Therefore, an average binary transition rate .sub.ntrnB at every sample n is given as follows:
(49)
(50) In some embodiments, a system (e.g., DAC) may reduce a deviation of binary transition rate .sub.ntrnB as much as possible such that ideally ntrnB(n)=7 at every sample n, achieving a binary constant transition rate (BCTR). In some embodiments, a system with a BCTR can alleviate the switching activity impact of DAC binary bits, which can shape and limit the DAC performance. Moreover, a system with a BCTR can relax the segmentation requirements of a DAC, thereby reducing DAC power consumption and occupied area.
(51) In some embodiments, a DAC may receive, at an input terminal, an n.sup.th (binary) data signal with 14 bits, and subtract, from the data signal using subtractor circuitry (e.g., digital subtractor circuitry), a (binary) dither signal dd with 7 bits that is generated by a dither generator. In some embodiments, the dither generator may generate a dither signal with a reduced number of bits using a dither mask signal and/or a dither mask register (e.g., 7 bit register). The DAC may divide an output digital signal of the subtractor circuitry into a (binary) MSBs signal with 7 MSBs and a (binary) LSBs signal db with 7 LSBs. The MSBs signal may be provided to DEM circuitry which can output a unary digital signal du with 127 bits which may be provided to one or more MSBs DACs. The DAC may include a multiplexer configured to receive the LSBs signal db and the dither signal dd as input and output a (binary) MUX output LSBs signal dbx and a (binary) MUX output dither signal ddx. The DAC may include a BCTR controller configured to receive the LSBs signal db, the dither signal dd, the MUX output LSBs signal dbx and the MUX output dither signal ddx, and provide a swap control signal (swap_ctrl.sub.i) to the multiplexer. The MUX output LSBs signal dbx may be provided to one or more LSBs DACs, and the MUX output dither signal ddx may be provided to one or more dither DACs.
(52) In some embodiments, the system may use a swap control signal swap_ctrl.sub.i to control a multiplexer (e.g., multiplexer or MUX 580 in
(53) In some embodiments, because LSB.sub.i and DIT.sub.i are equivalent, the multiplexer can swap LSB.sub.i and DIT.sub.i, thereby achieving a BCTR. In some embodiments, a BCTR controller may determine whether to pass b.sub.i and d.sub.i as is (by setting swap_ctrl.sub.i=0) or swap b.sub.i and d.sub.i, (by setting swap_ctrl.sub.i=1) based on a value of a pair of {b.sub.i, d.sub.i} as shown in Table 1.
(54) TABLE-US-00001 TABLE 1 Passing or swapping bits based on degree of freedom {b.sub.i, d.sub.i} val.sub.i {bx.sub.i, dx.sub.i} Comment 00 0 00 passed as is, no degree of freedom; FORCED 11 2 11 passed as is, no degree of freedom; FORCED 01 1 01 or 10 can be passed as is or swapped; Programmable 10 1 10 or 01 can be passed as is or swapped; Programmable
(55) In Table 1, if the value of the pair of {b.sub.i, d.sub.i} is 00 or 11, the BCTR controller may determine to pass b.sub.i and d.sub.i as is because there is no degree of freedom (e.g., no reason to swap b.sub.i and d.sub.i). Thus, this case (00 or 11) may be referred to as a forced (F) transition. On the other hand, if the value of the pair of {b.sub.i, d.sub.i} is 01 or 10, the BCTR controller may determine to either pass b.sub.i and d.sub.i as is or swap b.sub.i and d.sub.i, because there is a degree of freedom (e.g., b.sub.i and d.sub.i can be swapped based on equivalence between LSB.sub.i and DIT.sub.i). Thus, this case (01 or 01) may be referred to as a programmable (P) transition. In some embodiments, the BCTR controller may calculate a value val.sub.i by adding the values of b.sub.i and d.sub.i and determine whether the case is a forced (F) transition or a programmable (P) transition. For example, if the value of the pair of {b.sub.i, d.sub.i} is 00 or 11, val.sub.i will be an even number (0 or 2) and the BCTR controller may determine that these cases are F transitions because there is no degree of freedom. On the other hand, if (1) the value of the pair of {b.sub.i, d.sub.i} is 01 or 10 and (2) the value of the pair of {bx.sub.i, dx.sub.i} is 01 or 10 (e.g., both val.sub.i for {b.sub.i, d.sub.i} and val.sub.i for {bx.sub.i, dx.sub.i} are odd numbers), the BCTR controller may determine that these cases are P transitions because there is a degree of freedom.
(56) In some embodiments, if the pair of {b.sub.i, d.sub.i} has a degree of freedom (e.g., val.sub.i=1), the BCTR controller may control the multiplexer to increase or decrease the binary switching or transitions (e.g., increase or decrease the number of binary transitions between 0 and 1 in LSB.sub.i and DIT.sub.i) to realize a BCTR. For example, the BCTR controller may reduce a deviation of the number of binary transitions in LSB.sub.i and DIT.sub.i such that the actual number of binary transitions is substantially the same as an average number of binary transition (e.g., 7 according to Equation 9) using the following equation:
(57)
(58)
indicates the number of binary transitions (switching) in an LSBs signal (LSB.sub.i), and the term
(59)
indicates the number of binary transitions (switching) in a dither signal (DIT.sub.i).
(60) In some embodiments, a system can achieve a BCTR (or implement a BCTR scheme) by keeping a dither generator and a MSBs path (e.g., DEM circuitry and MSBs DAC) as they are and just adding a multiplexer and a BCTR (switching) controller. In this manner, the dither generator, the MSBs path, the multiplexer and the BCTR controller can operate in parallel without adding any latency, and the system aching the BCTR can be implemented in a simple, low-overhead and practical manner.
(61) In some embodiments, a system can achieve a BCTR (or implement a BCTR scheme) using state transitions between pairs of {bx.sub.i, dx.sub.i} as represented in a state transition diagram. Each {bx.sub.i(n), dx.sub.i(n)} pair may have 4 states (e.g., 00, 01, 10, 11), and the transition or switching may depend on the previous state {bx.sub.i(n1), dx.sub.i(n1)}. Thus, there may be 16 transition possibilities out of which (1) 12 transitions possibilities have no degree of freedom (12 forced transitions) and (2) 4 transitions possibilities (when val.sub.i(n)=1 and val.sub.i(n1)=1) have a degree of freedom (4 programmable transitions).
(62) In some embodiments, the system may use a variable sw.sub.i to represent the number of transitions that may occur for i.sup.th bits of {bx.sub.i(n), dx.sub.i(n)} pair. In some embodiments, sw.sub.i=0 indicates that no transitions occur and i.sup.th bits of {bx.sub.i(n), dx.sub.i(n)} pair have the same state (or values) as the previous sample (e.g., {bx.sub.i(n1), dx.sub.i(n1)}); sw.sub.i=1 indicates that only one of the i.sup.th bits of the {bx.sub.i(n), dx.sub.i(n)} pair has changed its state (or values) from the previous sample; or sw.sub.i=2 indicates that both the i.sup.th bits of the {bx.sub.i(n), dx.sub.i(n)} pair has changed their state (or values) from the previous sample. See
(63) In some embodiments, a system can compare a pair of {b.sub.i (n), d.sub.i(n)} for the current n.sup.th sample and a pair of {b.sub.i(n1), d.sub.i(n1)} for the previous (n1).sup.th sample. Based on a result of the comparison, the system can determine transition-related variables including (1) val.sub.i (n) and val.sub.i(n1) indicating a degree of freedom of the current and previous samples, respectively; (2) transition types (forced or programmable) from the previous sample to the current sample; (3) a number of forced transitions dval.sub.i(n); and/or (4) sw.sub.i indicating a required number of transitions for i.sup.th bits of the pair of {b.sub.i(n1), d.sub.i(n1)}. The system may calculate a value of val.sub.i(n) by adding bit values of b.sub.i(n) and d.sub.i(n). The system may determine a transition type of i.sup.th bits based on val.sub.i(n) and val.sub.i(n1). For example, if val.sub.i(n) or val.sub.i(n1) is an even number, the system may determine that the transition type is forced. On the other hand, if both val.sub.i(n) and val.sub.i(n1) are odd numbers (e.g., 1), the system may determine that the transition type is programmable. The system may calculate the number of forced transitions dval.sub.i(n) as follows:
(64)
(65) For forced transitions, the system may set sw.sub.i to the value of dval.sub.i(n). For programmable transitions, the system may set sw.sub.i to 0 or 2. For example, given an n.sup.th LSBs signal=[1110100], an n.sup.th dither signal=[0100110], an (n1).sup.th LSBs signal=[0010100], and an (n1).sup.th dither signal=[1110100], Table 2 shows (1) val.sub.i(n) and val.sub.i(n1); (2) transition types; (3) dval.sub.i(n); and (4) sw.sub.i.
(66) TABLE-US-00002 TABLE 2 Transition-related variables Bit i {b.sub.i(n), d.sub.i(n)} val.sub.i(n) {b.sub.i(n 1), d.sub.i(n 1)} val.sub.i(n 1) Trans. Type dval.sub.i(n) sw.sub.i swap_ctrl.sub.i 0 00 0 01 1 Forced 1 1 0 1 01 1 01 1 Programmable 0 2 0 2 11 2 11 2 Forced 0 0 0 3 00 0 00 0 Forced 0 0 0 4 10 1 11 2 Forced 1 1 0 5 11 2 01 1 Forced 1 1 0 6 10 1 01 1 Programmable 0 2 1
(67) In some embodiments, the system may perform a BCTR scheme as follows. In a first step, for a transition from a previous pair of an i.sup.th input data bit and an i.sup.th dither bit {b.sub.i(n1), d.sub.i(n1} to a current pair of an i.sup.th input data bit and an i.sup.th dither bit {b.sub.i(n), d.sub.i(n)}, a system may determine whether the transition is forced (F) or programmable (P). For example, referring to Table 2, the system may determine that the transition for bit 0 is F because val.sub.i(n) is an even number (e.g., 0); and the transition for bit 1 is P because both val.sub.i(n) and val.sub.i(n1) are odd numbers (e.g., 1).
(68) In a second step, for forced (F) transitions, the system may set sw.sub.i to a number of required transitions dval.sub.i(n) which can be calculated using Equation 11. For example, referring to Table 2, the system can calculate dval.sub.i(n)=1 for i=0, 4, 5.
(69) In a third step, the system may calculate a total number of F transitions (ntrnF(n)) in the current (n.sup.th) sample as follows:
(70)
(71) In a fourth step, the system may calculate a required number of programmable (P) transitions with sw.sub.i=2 (ntrnP(n)) in the current (n.sup.th) sample as follows:
(72)
(73) In a fifth step, for programmable (P) transitions, based on the required number of P transitions with sw.sub.i=2 (ntrnP(n)), the system may (1) determine which P transitions (or pair of bits) are to have sw.sub.i=2; and (2) set sw.sub.i=0 for the rest of P transitions (or pair of bits). For example, referring to Table 2, based on ntrnP(n)=2, the system may determine which both P transitions for i=1, 6 are to have sw.sub.i=2 (because there is no other P transitions, there is no P transitions that have sw.sub.i=0). As shown in Table 2, the sum of sw.sub.i over i=0, . . . , 6 is 7, indicating that the number of binary transition is a constant (e.g., 7), thereby satisfying the BCTR condition (e.g., Equation 10).
(74) In a sixth step, after the system (e.g., BCTR controller) determines the transition type F or P and calculates sw.sub.i, the system (e.g., BCTR controller) may set swap_ctrl.sub.i (e.g., an output signal of the BCTR controller) as follows. If a transition is forced F, then the system may set swap_ctrl.sub.i=0 (regardless of sw.sub.i, which can be 0, 1, or 2 as shown in
(75) In some embodiments, a dither generator may include a pseudorandom binary sequence generator (e.g., PRBS31 generator) to generate a binary dither signal. The PRBS31 generator may include 31 shift registers and an XOR gate which XORing taps 28 and 31. The dither generator may include an AND gate which receive a dither mask signal (or using a dither mask register) and a dither signal and output a masked dither signal.
(76) In some embodiments, a dither generator may include a pseudorandom binary sequence generator (e.g., PRBS31 generator) and a plurality of XOR gates. Each bit of an output signal may be generated from XORing two taps from the PRBS31 generator with different spacing. In this manner, the dither generator can remove any cross-correlation while keeping the properties of the pseudorandom binary sequence generator.
(77) Embodiments in the present disclosure have at least the following advantages and benefits. First, embodiments in the present disclosure can provide useful techniques for reducing dependency on pre-driver supply impedance by reducing random switching onto the supply modulation of both the pre-driver and the driver. The reduced random switching can reduce modulation on the reference voltage (or current) and the data deterministic jitter. Other advantages include improved effective number of bits (ENOB), reduced near-end noise spectral density (NSD), ability to lower the unary/binary segmentation boundary, improved in-band performance for RF and/or narrowband applications, and/or reduced coupling to shared power supply (since switching activity is constant and reduced).
(78) Second, embodiments in the present disclosure can provide useful techniques for implementing logic to reduce the standard deviation of the transition density using simple hardware (e.g., multiplexer and simple BCTR controller).
(79)
(80)
(81) Referring to
(82) Referring to
(83)
(84) Referring to
(85) Referring to
(86) In some embodiments, if the pair of {b.sub.i, d.sub.i} has a degree of freedom (e.g., val.sub.i=1), the BCTR controller 590 may control the multiplexer 580 to increase or decrease the binary switching or transitions (e.g., increase or decrease the number of binary transitions between 0 and 1 in LSB.sub.i and DIT.sub.i) to realize a BCTR. For example, the BCTR controller 590 may reduce a deviation of the number of binary transitions in LSB.sub.i and DIT.sub.i such that the actual number of binary transitions is substantially the same as an average number of binary transition (e.g., 7 according to Equation 9) using Equation 10.
(87) The DAC 500 can achieve a BCTR (or implement a BCTR scheme) by keeping a dither generator (e.g., dither generator 570) and a MSBs path (e.g., DEM circuitry 520 and MSBs DAC 530) as they are and just adding the multiplexer 580 and the BCTR controller 590. In this manner, the dither generator 570, the MSBs path, the multiplexer 580 and the BCTR controller 590 can operate in parallel without adding any latency, and the system aching the BCTR can be implemented in a simple, low-overhead and practical manner.
(88)
(89) Referring to
(90)
(91) At step 702, for a transition from a previous pair of an i.sup.th input data bit and an i.sup.th dither bit {b.sub.i(n1), d.sub.i(n1)} to a current pair of an i.sup.th input data bit and an i.sup.th dither bit {b.sub.i(n), d.sub.i(n)}, a system (e.g., DAC 400, DAC 500, BCTR controller 494, 590, multiplexer 492, 580) may determine whether the transition is forced (F) or programmable (P). For example, referring to Table 2, the system may determine that the transition for bit 0 is F because val.sub.i(n) is an even number (e.g., 0); and the transition for bit 1 is P because both val.sub.i(n) and val.sub.i(n1) are odd numbers (e.g., 1).
(92) At step 704, for forced (F) transitions, the system calculates sw, to a number of required transitions dval.sub.i(n) which can be calculated using Equation 11. For example, referring to Table 2, the system can calculate dval.sub.i(n)=1 for i=0, 4, 5.
(93) At step 706, the system may calculate a total number of F transitions (ntrnF(n)) in the current (n.sup.th) sample using Equation 12. For example, referring to Table 2, the system can calculate ntrnF(n)=3 by summing dval.sub.i(n).
(94) At step 708, the system may calculate a required number of programmable (P) transitions with sw.sub.i=2 (ntrnP(n)) in the current (n.sup.th) sample using Equation 13. For example, referring to Table 2, the system can calculate ntrnP(n)=(73)/2=2.
(95) At step 710, for programmable (P) transitions, based on the required number of P transitions with sw.sub.i=2 (ntrnP(n)), the system may (1) determine which P transitions (or pair of bits) are to have sw.sub.i=2; and (2) set sw.sub.i=0 for the rest of P transitions (or pair of bits). For example, referring to Table 2, based on ntrnP(n)=2, the system may determine which both P transitions for i=1, 6 are to have sw.sub.i=2 (because there is no other P transitions, there is no P transitions that have sw.sub.i=0). As shown in Table 2, the sum of sw.sub.i over i=0, . . . , 6 is 7, indicating that the number of binary transition is a constant (e.g., 7), thereby satisfying the BCTR condition (e.g., Equation 10).
(96) At step 712, after the system (e.g., BCTR controller 494, 590) determines the transition type F or P and calculates sw.sub.i, the system (e.g., BCTR controller 494, 590) may set swap_ctrl.sub.i (e.g., an output signal of the BCTR controller) as follows. If a transition is forced F, then the BCTR controller may set swap_ctrl.sub.i=0 (regardless of sw.sub.i, which can be 0, 1, or 2 as shown in
(97) In some embodiments, a method may include for a transition from a first pair of bits in first data provided to one or more digital-to-analog converters (DACs) to a second pair of bits in second data provided to a multiplexer, determining, by a controller based on the first pair of bits and the second pair of bits, whether the transition is of a first type or of a second type. The method may include in response to determining that the transition is of the first type, generating, by the controller, a first signal to control the multiplexer to output the second pair of bits to the one or more DACs. The method may include in response to determining that the transition is of the second type, determining, by the controller, whether the second pair of bits are to be swapped or not. The method may include in response to determining that the second pair of bits are to be swapped, generating, by the controller, a second signal to control the multiplexer to swap the second pair of bits and output the swapped pair of bits to the one or more DACs. Data output by the multiplexer based on the second data may have a predetermined number of bits that have binary values different from those of corresponding bits in the first data.
(98) In some embodiments, in determining whether the transition is of a first type or of a second type, the controller may determine a first number of bits that have a binary value 1 among the first pair of bits, and determine a second number of bits that have a binary value 1 among the second pair of bits. In response to determining that the first number is odd and the second number is odd, the controller may determine that the transition is of the second type. In response to determining that at least one of the first number or the second number is even, the controller may determine that the transition is of the first type.
(99) In some embodiments, in response to determining that the transition is of the first type, the controller may determine a number of binary transitions from the first pair of bits to the second pair of bits. The number of binary transitions is a number of bits of the second pair of bits that have binary values different from those of corresponding bits of the first pair of bits.
(100) In some embodiments, for each of a plurality of transitions from respective pairs of bits in the first data to respective pairs of bits in the second data, the controller may determine whether each transition is of the first type or of the second type. In response to determining that each transition is of the first type, the controller may determine a respective number of binary transitions for each transition. The number of binary transitions may be a number of bits of the second pair of bits that have binary values different from those of corresponding bits of the first pair of bits. The controller may determine a total number of binary transitions for the first type by summing the respective numbers of binary transitions. The controller may determine a total number of swaps for the second type based on the total number of binary transitions for the first type.
(101) In determining whether the second pair of bits are to be swapped or not, in response to determining that each transition is of the second type, the controller may determine whether each transition is swapped or not such that a number of transitions determined to be swapped among the plurality of transitions equals the total number of swaps for the second type. The controller may reduce switching noise on driver circuitry of the one or more DACs by reducing a number of binary transitions from the first data to the data output by the multiplexer, to the predetermined number of bits.
(102)
(103)
(104)
(105)
(106)
(107)
(108) At step 1202, a system (e.g., DAC 400, DAC 500) may output, by a multiplexer (e.g., multiplexer 492, 580) at a first time (e.g., a time at which the system receives an (n1).sup.th sample), a first pair of a first digital value and a first dither value (e.g., {b.sub.i(n1), d.sub.i(n1)}, i=0, . . . , 6).
(109) At step 1204, the system may receive, by the multiplexer at a second time subsequent to the first time (e.g., a time at which the system receives an n.sup.th sample), a second pair of a second digital value and a second dither value (e.g., {b.sub.i(n), d.sub.i(n)}, i=0, . . . , 6). In some embodiments, the second dither value (e.g., d.sub.i(n), i=0, . . . , 6) may be randomly generated (e.g., by dither generator 490, 570, 900, 1000). The system may receive input data (e.g., din[n] 411, data signal 511). The system may generate the second digital value b.sub.i(n) by subtracting the second dither value from the input data.
(110) At step 1206, the system may compare, by a controller (e.g., BCTR controller 494, 590) coupled to the multiplexer, the first pair (e.g., {b.sub.i(n1), d.sub.i(n1)}, i=0, . . . , 6) and the second pair (e.g., {b.sub.i(n), d.sub.i(n)}, i=0, . . . , 6). In some embodiments, in comparing the first pair and the second pair, the controller may compare, for each bit of a plurality of bits of the second digital value (e.g., b.sub.i(n)), a first value and a second value as a second comparison. The first value may include a binary value of the first digital value b.sub.i(n1) and a binary value of the first dither value d.sub.i(n1) that correspond to said each bit. The second value may include a binary value of the second digital value b.sub.i(n) and a binary value of the second dither value d.sub.i(n) that correspond to said each bit. The controller may determine, based on a result of the second comparison, among the plurality of bits of the second digital value (e.g., b.sub.i(n), i=0, . . . , 6), a group of bits of the second digital value that are optionally to be swapped with corresponding bits of the second dither value (e.g., the group of bits belongs to programmable transitions). The controller may determine, based on the result of the second comparison and a predetermined quantity (e.g., 7 in Equation 13), among the group of bits of the second digital value, a first quantity (e.g., ntrnP(n)=number of programmable transitions with sw.sub.i=2) of one or more bits that are to be swapped with one or more bits of the second dither value (e.g., using Equation 13).
(111) In some embodiments, the controller may determine, based on the first quantity (e.g., ntrnP(n)), the one or more bits of the second digital value swapped with the one or more bits of the second dither value (e.g., which P transitions (or pair of bits) are to have sw.sub.i=2). The predetermined quantity (e.g., 7 in Equation 13) may be equal to the number of the plurality of bits of the second digital value (e.g., N.sub.B or N.sub.D). The controller may determine the one or more bits of the second digital value swapped with the one or more bits of the second dither value (e.g., which P transitions (or pair of bits) are to have sw.sub.i=2) by randomly selecting, from among the group of bits of the second digital value, one or more bits according to the first quantity (e.g., randomly selecting ntrnP(n) number of bits among the bits that belong to programmable transitions).
(112) At step 1208, the system may control, by the controller based on a result of the comparing. the multiplexer to swap one or more bits of the second digital value with one or more bits of the second dither value. The swapped one or more bits of the second digital value (e.g., swapped b.sub.i(n)) may be provided as an input to one or more DACs (e.g., dither DAC 450, 550). In some embodiments, the swapped one or more bits of the second dither value (e.g., swapped d.sub.i(n)) may be provided as an input to one or more DACs (e.g., LSBs DAC 440, 540) that are different from the one or more DACs (e.g., dither DAC 450, 550) to which the swapped one or more bits of the second digital value (e.g., swapped b.sub.i(n)) are provided.
(113) The term coupled and variations thereof includes the joining of two members directly or indirectly to one another. The term communicatively coupled and variations thereof may include communicatively coupling between two members directly or indirectly. Such communication or communicatively coupling may be achieved by a first member being in direct communication with or directly coupled to a second member, or achieved with additional members that may intervene between the first and second members, such that the first member is in indirect communication with or indirectly coupled to the second member via the additional members.
(114) The foregoing outlines features of several embodiments so that those skilled in the art may better understand the aspects of the present disclosure. Those skilled in the art should appreciate that they may readily use the present disclosure as a basis for designing or modifying other processes and structures for carrying out the same purposes and/or achieving the same advantages of the embodiments introduced herein. Those skilled in the art should also realize that such equivalent constructions do not depart from the spirit and scope of the present disclosure, and that they may make various changes, substitutions, and alterations herein without departing from the spirit and scope of the present disclosure.
(115) It should be noted that certain passages of this disclosure can reference terms such as first and second in connection with subsets of buffers, hosts, and devices, for purposes of identifying or differentiating one from another or from others. These terms are not intended to merely relate entities (e.g., a first device and a second device) temporally or according to a sequence, although in some cases, these entities can include such a relationship. Nor do these terms limit the number of possible entities that can operate within a system or environment. It should be understood that the systems described above can provide multiple ones of any or each of those components and these components can be provided on either a standalone machine or, in some embodiments, on multiple machines in a distributed system. In addition, the systems and methods described above can be provided as one or more computer-readable programs or executable instructions embodied on or in one or more articles of manufacture, e.g., a floppy disk, a hard disk, a CD-ROM, a flash memory card, a PROM, a RAM, a ROM, or a magnetic tape. The programs can be implemented in any programming language, such as LISP, PERL, C, C++, C#, or in any byte code language such as JAVA. The software programs or executable instructions can be stored on or in one or more articles of manufacture as object code.
(116) While the foregoing written description of the methods and systems enables one of ordinary skill to make and use embodiments thereof, those of ordinary skill will understand and appreciate the existence of variations, combinations, and equivalents of the specific embodiment, method, and examples herein. The present methods and systems should therefore not be limited by the above described embodiments, methods, and examples, but by all embodiments and methods within the scope and spirit of the disclosure.