Abstract:
A digital to analog converter (DAC) converts a plurality of digital input data into a plurality of analog output signals. The DAC includes an element pool having a plurality of elements, a random number generator for converting the digital input data into a set of control signals, a plurality of summing nodes for generating analog output signals, and a plurality of switches for connecting the elements to the summing nodes. The switches are controlled by the control signals. Because of the control of the random number generator, the element signals transferring to the summing nodes can be used alternatively and simultaneously.

Description:
This application claims the benefit of Taiwan application Serial No. 092115592, filed Jun. 9, 2003. 
   BACKGROUND OF THE INVENTION 
   1. Field of the Invention 
   The invention relates to a digital to analog converter (DAC), and more particularly, to a DAC with reduced errors among a plurality of digital to analog converting units. 
   2. Description of the Related Art 
   A digital to analog converter (DAC) is typically composed of several DAC elements, which receive digital input data and generate element signals according to the digital input data. The element signal can be voltage type or current type. Then, a signal integrator (or a summing node) adds the element signals outputted from the DAC elements and generates an analog output signal. 
     FIG. 1  illustrates a schematic diagram of a conventional DAC. As shown in  FIG. 1 , the DAC  10  includes a plurality of DAC elements, i.e., current sources E 1 ˜En, a plurality of switches SA 1 ˜SAn, and a summing node  11 . The ON/OFF state of each of the switches SA 1  to SAn is controlled by each bit of the digital input data. The ON/OFF state of each of the switches SA 1  to SAn determines the connection relationship between each of the DAC elements E 1  to En and the summing node  11 . The summing node  11  generates an analog output signal according to the connected element signals. Therefore, the digital input data controls the ON/OFF state of each of the switches SA 1  to SAn so as to generate the corresponding analog output signal. The DAC  10  is widely used in several fields, such as the fields of communications, voice-frequency, radio frequency, and the like. In some applications, two or more DACs with a small error therebetween are required. 
     FIG. 2  illustrates a conventional DAC system with two DACs. The conventional DAC system  20  has two DACs  21  and  22  with the same structure and components to generate two analog output signals. Owing to the variations such as those happened in manufacturing process, it tends to be errors between the two analog output signals even with the two digital input data being the same. The error is unacceptable if it exceeds an allowable range. For example, in the application of the radio intranet (IEEE 802.11a), the error requirement between the DACs of the I-channel transmitter and the Q-channel transmitter has to be smaller than 0.1%. 
   SUMMARY OF THE INVENTION 
   One of the objects of the invention is therefore to provide a DAC system for reducing the errors between the DACs by using common DAC elements. 
   Another object of the invention is to provide a DAC system for reducing the errors between the DACs by alternatively outputting the element signals from the DAC elements to summing nodes. 
   To achieve the above-mentioned object, the invention provides a digital to analog converter (DAC) system for outputting a first analog output signal and a second analog output signal according to a first digital input data and a second digital input data, respectively. The DAC system comprises a plurality of DAC elements generating a plurality of element signals; and a control signal generator generating a control signal according to the first and the second digital input data; a first summing node receiving a first part of the element signals according to the control signal and generating the first analog output signal; and a second summing node receiving a second part of the element signals according to the control signal and generating the second analog output signal. 
   The invention further provides a method for converting a first digital input data and a second digital input data into a first analog output signal and a second analog output signal, respectively. The method comprises the steps of producing a control signal according to the first and second digital input data; dividing a plurality of basic elements into at least a first element set and a second element set according to the control signal; and generating the first and second analog output signals according to the first element set and the second element set, respectively. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
       FIG. 1  illustrates a schematic diagram of a conventional DAC; 
       FIG. 2  illustrates a conventional DAC system having two DACs; 
       FIG. 3  illustrates the architecture diagram of the DAC system according to an embodiment of the invention; 
       FIG. 4A  shows the relationship between the first and second digital input data and the first and second control signals at each time point; 
       FIG. 4B  shows the elements assigned to each queue corresponding to  FIG. 4A ; 
       FIG. 5  shows a flow chart of a method for the random number generator of  FIG. 3 ; 
       FIG. 6  shows a flow chart of the pull(L) procedure in the flow chart of  FIG. 5 ; 
       FIG. 7  shows a flow chart of the push(L,N) procedure in the flow chart of  FIG. 5 . 
   

   DETAILED DESCRIPTION OF THE INVENTION 
     FIG. 3  illustrates the architecture diagram of the DAC system according to an embodiment of the present invention. Referring to  FIG. 3 , the DAC system  30  includes an element pool  31 , a plurality of switches SA 1 ˜SAn and SB 1 ˜SBn, two summing nodes  32  and  33 , and a random number generator  34 . The summing nodes  32 ,  33  generate a first analog output signal and a second analog output signal, respectively. Thus, the embodiment outputs two analog output signals. Of course, the DAC system  30  may utilize more than two summing nodes to provide more than two analog output signals, as may be appreciated by those of ordinary skill in the art. 
   In this embodiment, the element pool  31  includes a plurality of DAC elements E 1 ˜En, which are substantially the same. The DAC system  30  utilizes two switches SA and SB to couple each DAC element to the two summing nodes  32  and  33 , respectively. The ON/OFF states of the two switches SA and SB are controlled by the first and second random control signals CA and CB, in order to control the connection/disconnection of the element signals of the DAC elements to the summing nodes  32  and  33 . For example, the element signal of the DAC element E 1  is connected to the summing nodes  32  and  33  through the switches SA 1  and SB  1 . In an embodiment, the switches SA 1  and SB 1  are designed not to be turned on simultaneously but may be turned off simultaneously. Similarly, the element signal of the DAC element E 2  is connected to the summing nodes  32  and  33  through the switches SA 2  and SB 2 , and so on. The DAC system  30  utilizes the random number generator  34  to receive two digital input data D A  and D B , and to output the first and second random control signals CA 1 ˜CAn and CB 1 ˜CBn according to the two received digital input data D A  and D B . Therefore, it is possible to control each of the DAC elements E 1 ˜En among the element pool  31  to be selectively coupled to the summing nodes  32  or  33 , and as a result, the first and second analog output signals respectively correspond to the digital input data D A  and D B . 
   Although the embodiment of  FIG. 3  provides two analog output signals, the architecture of the DAC system may also be modified to provide multiple analog output signals as long as the number of summing nodes is increased. It should be noted that the total number of DAC elements in the element pool  31  is not required to be exactly the same as the sum of the numbers of DAC elements in two separate DACs. Instead, it is enough to have a total number of DAC elements in the element pool  31  that is sufficient to provide a maximum output bit number simultaneously required by such two DACs. Of course, the resolution of two digital input data D A  and D B  can be different. Moreover, the DAC elements may be of different types. For example, the DAC element in a resistor string DAC is a resistor; the DAC element in a charge-redistribution switched-capacitor DAC is a capacitor; and the DAC element in a current-steering DAC is a current source. 
   There are several ways to generate the random control signals for the DAC system  30 .  FIG. 4  shows an example of the random control signals of the random number generator, wherein  FIG. 4A  shows the relationship between the digital input data D A , D B  and the random control signals CA, CB at each time point, and  FIG. 4B  shows the DAC elements assigned to each set of outputs corresponding to  FIG. 4A . The first digital input data D A  corresponds to the first random control signal (CA 1  to CAn) of  FIG. 3  for controlling the switches SA 1  to SAn, while the second digital input data D B  corresponds to the second random control signal (CB 1  to CBn) of  FIG. 3  for controlling the switches SB  1  to SBn. In  FIG. 4 , it is assumed that the element pool  31  has eight DAC elements E 1  to E 8 , whereof the output element signals are of substantially the same current amount, while output signal errors caused by manufacturing process variation exist. In addition, I and Q are assumed to be the queues used in the random control signals CA and CB, respectively. P is the queue of the element pool. 
   A method of generating the random control signal according to an embodiment of the invention is described as follows. When the newly-inputted digital input data D A  (or D B ) is greater than the current digital input data D A - 1  (or D B - 1 ), the required element number is pulled from the queue P and is pushed into the queue I (or Q); and when the newly-inputted digital input data D A  (or D B ) is smaller than the current digital input data D A -I (or D B -I), the redundant element number is pulled from the queue I (or Q) and is pushed back to the queue P. When the newly-inputted digital input data D A  (or D B ) is equal to the current digital input data D A -I (or D B -I), the queues I, Q and P remain unchanged. Thereafter, the switches are controlled according to the contents of the queues I and Q. As can be appreciated by those of ordinary skill in the art, the architecture of a common element pool with multiple analog output signals eliminates potential errors existing among different DACS, and randomized control signals also serve the error balancing purpose. Therefore, the obtained relative error between the two analog output signals gets significantly smaller. 
   The switch operation at each time point will be described with reference to  FIGS. 4A and 4B . 
   Time point To: when the digital input data D A  and D B  are both 0, the first and second analog output signals are also 0. So, the random control signals CA and CB are both “00000000”, the queues I and Q are null, and contents in the queue P are DAC elements of E 1  to E 8 . 
   Time point T 1 : when the digital input data DA is changed to 1 and the digital input data D B  is changed to 4, the first analog output signal should be 1, and one element signal is to be outputted to the summing node  32 . So, the queue I is pushed into one DAC element E 1 , which is pulled out from the queue P, and the first random control signal CA is changed to “00000001”. Meanwhile, the second digital output signal should be 4, and four element signals are to be outputted to the summing node  33 . Thus, the queue Q is pushed into four DAC elements E 2 , E 3 , E 4  and E 5 , which are pulled out from the queue P, and the second random control signal CB is changed to “00011110”. The elements of E 6 , E 7 , and E 8  are remained in the queue P. 
   Time point T 2 : when the digital input data D A  is changed to 2 and the digital input data D B  is changed to 3, the first analog output signal should be 2, and two element signals are to be coupled to the summing node  32 . So, the queue I is pushed into one element E 6 , which is pulled out from the queue P, and the first random control signal CA is changed to “00100001”. Meanwhile, the second analog output signal should be 3 and three element signals are to be coupled to the summing node  33 . Thus, the queue Q is pulled out one element E 2 , which is pushed into the queue P, and the second random control signal CB is changed to “00011100”. The elements of E 7 , E 8 , and E 2  are remained in the queue P. 
   Time point T 3 : when the digital input data D A  is changed to 3 and the digital input data D B  is changed to 2, the first analog output signal should be 3, and three element signals are to be coupled to the summing node  32 . So, the queue I is pushed into one element E 7 , which is pulled out from the queue P, and the first random control signal CA is changed to “01100001”. Meanwhile, the analog output signal B should be 2, and two element signals are to be coupled to the summing node  33 . Thus, the queue Q is pulled out one element E 3 , which is pushed into the queue P, and the second random control signal CB is changed to “00011000”. The elements of E 8 , E 2 , and E 3  remain in the queue P. The signals and queues at other time points may be derived analogically. 
     FIG. 5  shows a flow chart of a method for generating the random control signal according to an embodiment of this invention. In this embodiment, the queue P is the redundant element data of the element pool, the queue I is the element data used by the first control signal CA, and the queue Q is the element data used by the second control signal CB. The method comprises the following steps. 
   Step S 502 : read the new first and second digital input data D A  and D B . 
   Step S 504 : calculate the difference E between the new data D A  and the current data D A - 1 . That is, E=D A -D A -I. Then, the data D A - 1  is updated to be data D A . 
   Step S 506 : If the difference E is greater than 0, it means that the new data D A  is greater than the current data D A - 1 , and at least a new element signal is to be coupled to the first summing node. If the difference E is smaller than 0, the process jumps to step S 516 . If the difference E is 0, the process jumps to step S 526 . 
   Step S 508 : call the N=pull(P) procedure. A data N is pulled out from the queue P. 
   Step S 510 : call the push(I,N) procedure. The data N is then pushed into the queue I. 
   Step S 512 : set the N-th bit of the first random control signal to 1, and the difference E is subtracted by 1. 
   Step S 514 : check whether the difference E is  0 . The process jumps to step S 526  if the difference E is 0; otherwise the process jumps back to step S 508 . 
   Step S 516 : if the difference E is smaller than 0, it means that the new data D A  is smaller than the current data D A - 1 , and the number of element signals coupled to the first summing node is to be decreased. Thus, the process jumps to step S 518 . If the difference E is 0, the process jumps to step S 526 . 
   Step S 518 : call the N=pull(I) procedure. A data N is pulled out from the queue I. 
   Step S 520 : call the push(P,N) procedure. The data N is pushed into the queue P. 
   Step S 522 : set the N-th bit of the first control data to 0, and the difference E is added by 1. 
   Step S 524 : check whether the difference E is 0. The process jumps to step S 526  if the difference E is 0; or otherwise the process jumps back to step S 518 . 
   The steps S 526 ˜S 546  resemble the steps S 504 ˜S 524  with DA being substituted by D B . 
   Step S 548 : End. 
   It should be noted that the flow chart of  FIG. 5  is divided into two stages. The first stage from steps S 504  to S 524  is to set the first control data according to the first digital input data. The second stage from step S 526  to S 546  is to set the second control data according to the second digital input data. Consequently, if more than two analog output signals are needed, a third stage can be added, and the steps are similar to those in the second stage. 
     FIG. 6  shows an embodiment of the pull(L) procedure of  FIG. 5 , wherein symbol L may represent the queue I, Q or P. Each queue has four variables, i.e., “list”, “size”, “avail”, and “vacc”, and the general forms thereof are represented by “L.list”, “L.size”, “L.avail”, and “L.vacc”. “List” is an array for storing the numbers of the elements; “size” is the maximum capacity of this queue; “avail” is the index of the elements that may be pulled out, wherein avail=0 represents that the queue is null; and “vacc” is the null index into which the element may be pushed, wherein vacc=0 represents that the queue is full. The steps of the pull(L) procedure will be described with reference to  FIG. 6 . 
   Step S 602 : check whether the queue is null. That is, to determine whether the L.avail is 0. When L.avail=0, it means that the queue is null, and the process jumps to the error procedure step S 604 , or otherwise jumps to step S 606 . 
   Step S 606 : check whether the queue is full. That is, to determine whether the L.vacc is 0. When L.vacc=0, it means that the queue is full, and the process jumps to step S 608 ; or otherwise jumps to step S 610 . 
   Step S 608 : set the null index to the position at which the element is to be pulled out. That is, L.vacc=L.avail. 
   Step S 610 : pull the element number at the avail position in the queue, that is, N=L.list[avail], and the avail is added by 1 to indicate a next usable position. 
   Step S 612 : check whether the avail exceeds the range, i.e., determine whether the L.avail is greater than the L.size. The process jumps to step  614  if L.avail&gt;L.size; or otherwise the process jumps to step S 616 . 
   Step S 614 : wrap around the L.avail to the beginning of the list, i.e., set the L.avail to 1. 
   Step S 616 : check whether the queue is null. If L.avail=L.vacc, it means that the queue is null and the process jumps to step S 618 ; or otherwise the process jumps to step S 620 . 
   Step S 618 : set L.avail to be 0. 
   Step S 620 : return the N that is pulled out, and end the procedure. 
   Of course, in the above-mentioned procedure, steps S 602  and S 604  may be omitted if the output signal being negative is avoided (i.e., no condition of taking the element from the null queue exists). 
     FIG. 7  shows a flow chart of the push(L,N) procedure in the flow chart of  FIG. 5 , wherein symbol L may represent the queue I, Q or P, and symbol N is the element number. The steps of the push(L,N) procedure will be described with reference to  FIG. 7 . 
   Step S 702 : check whether the queue is full, i.e., determine whether the L.vacc is 0. When L.vacc=0, it means that the queue is full, and the process jumps to step S 704 , or otherwise jumps to step S 706 . 
   Step S 704 : process the error procedure. When the queue is full, the element cannot be pushed in. So, the error processing operation is performed, and the process is temporarily terminated. 
   Step S 706 : check whether the queue is null, i.e., determine whether the L.avail is 0. When L.avail=0, it means that the queue is null, and the process jumps to step S 708 ; or otherwise jumps to step S 710 . 
   Step S 708 : set the usable position to the position at which the element is to be placed. That is, L. avail=L. vacc. 
   Step S 710 : push the data N to the position of vacc in the queue, i.e., L.list[vacc]=N, and add the vacc by  1  in order to indicate a next null position. 
   Step S 712 : check whether the vacc exceeds the range, i.e., determine whether the L.vacc is greater than the L.size. If L.vacc&gt;L.size, the process jumps to step S 714 , or otherwise jumps to step S 716 . 
   Step S 714 : wrap around the L.vacc to the beginning of the list. That is, the L.vacc is set to be 1. 
   Step S 716 : check whether the queue is full again. That is, determine whether the L.vacc equals L.avail. If L.vacc=L.avail, it means that the queue is full, and the process jumps to step S 718 , or otherwise jumps to step S 720 . 
   Step S 718 : set the L.vacc to be 0. 
   Step S 720 : return and end the procedure. 
   Of course, in the above-mentioned procedure, if the fact that the output signal is greater than the queue maximum can be avoided (i.e., no condition of placing the element to the full queue exists), the steps S 702  and S 704  may be omitted. 
   Please note that although in the embodiment presented above the DAC elements provide currents with substantially the same amount, other quantities of current provided by these DAC elements may also be adopted, such as a combination of 1I, 2I, 4I, 8I, . . . etc. Likewise, the randomized control signal scheme presented above is for exemplary purpose only and is not intended to serve as limitation. Other control schemes may also be adopted in the same hardware configuration. 
   While certain exemplary embodiments have been described and shown in the accompanying drawings, it is to be understood that such embodiments are merely illustrative of and not restrictive on the broad invention, and that this invention not be limited to the specific construction and arrangement shown and described, since various other modifications may occur to those ordinarily skilled in the art.