fig2 shows an embodiment of the invention using a boundary detector to create the end of cycle signal for informing the selection logic of the presence of a phase boundary . in fig2 a delay chain 210 is depicted and its taps 240 are connected to a selection circuit 250 which is controlled by selection logic 280 . selection logic 280 receives an input sel -- cntl 270 , from other circuitry , such as a phase detector , and inputs , eoc 295 , from the output of boundary detector 290 . the boundary detector has the function of determining , based on the input clock 230 and the taps of the delay chain 240 , when a delay chain tap is at a phase boundary of either 0 ° and either 180 ° or 360 °, depending on the embodiment . when selection logic 280 receives an instruction from the sel -- cntl 270 input to select a specific tap from the delay chain it also takes into account the value of the eoc 295 indicator . if the tap to be selected is beyond the 0 ° or 360 ° ( 180 °) phase boundary the selection logic determines that it should choose a tap from the delay chain at the opposite phase boundary . by doing so , any phase adjustment including an adjustment through 0 ° or 360 ° ( 180 °) is possible without the need for extra delay stages . assuming that taps 240 have the same polarity and pairs of inverters are used between taps , only 32 delay elements ( instead of 64 ) are required given the above example discussed in connection with fig1 . the resolution of the circuit shown in fig2 is equal to the slowest delay between taps from the delay chain . if the slowest delay of an inverter is 300 ps , then clk -- out produced by the selection circuit has a resolution of 600 ps , because the phase of the output clock can only be changed in increments of this amount . fig3 improves the resolution obtainable from the circuit in fig2 by adding a blender circuit 375 to selection circuit 350 . the blender circuit 375 receives a pair of selected outputs 352 and 354 from selection circuit 350 and interpolates between taps having the same polarity to create a number of output taps 348 with approximately equal phase steps spanning the phase between the inputs 352 and 354 . for example , if the two inputs are 600 ps apart , then a blender with four outputs , has each output 348 delayed 150 ps from an adjacent output . a second selection circuit 355 receives the output taps 348 and receives control information from selection logic 345 . selection logic 345 receives instructions for making a selection of one of the taps 348 of the blender circuit from signal sel -- cntl 370 , which is derived from other circuitry such as a phase detector . selection logic 345 has an additional function besides the selection of one of the blender outputs . it must also inform selection logic 380 , via signal 383 , that a different pair of taps is required from the delay chain when the adjustment requested is outside of the range provided by the current pair of delay chain taps . as before , selection logic 380 will adjust the selected taps for the blender inputs taking into account the value of the eoc 395 information provided by the boundary detector . thus , the resolution of the circuit of fig2 is improved from 600 ps to 150 ps in the example given . an embodiment of a blender circuit suitable for use in fig3 is shown and discussed below in connection with fig8 . fig4 further improves the resolution of the circuit again by using a pair of delay chains 410 and 510 , each chain being constructed from inverting delay elements . one delay chain 410 receives and propagates signal clk -- in 430 to produce the true outputs 440 spanning at least 180 ° of clk -- in 430 and the other delay chain 510 receives and simultaneously propagates signal clk -- inb 520 , the complement of clk -- in to produce complement outputs 540 spanning at least 180 ° of clk -- inb 520 . in fig3 each tap 340 in the delay chain produces a delayed same polarity edge using two inverters between taps . however , due to the presence of the chain of simultaneous complementary signals , each delay element , in this case a single inverter , from each chain can serve as a tap input for the blender circuit . for example , if the single delay chain 310 in fig3 had taps 340 producing rising edges every 600 ps using two delay elements , now in fig4 by taking a same polarity output from each chain , 410 and 510 , the delay between taps is 300 ps . the number of delay elements over the pair of chains is the same as with a single chain , but each delay is half as long between pairs of the same type of edges , thus allowing increased blender resolution . when using the dual delay chains of fig4 the boundary detector need only detect the 0 ° and 180 ° boundaries from the chains . an embodiment of the boundary detector 490 is discussed below in connection with fig9 . fig1 and 12 make the phase relationships between the taps of the dual chains more clear . in fig1 for ease of discussion it is assumed that each chain , 1500 and 1600 , shown in fig1 , given certain process , voltage and temperature conditions , spans 245 ° with 8 taps ( seven intervals ) and that each tap is 35 ° ( disregarding tap polarity ). certain taps from the true and complement chains are marked on the accompanying phase diagram 1220 with a &# 34 ; t &# 34 ; and &# 34 ; c &# 34 ; respectively . the number following the &# 34 ; t &# 34 ; or &# 34 ; c &# 34 ; indicates the number of the tap on the particular chain , i . e ., t5 is the fifth tap on the true chain . to progress through the selectable phases of clk -- in , the selection circuitry starts at 0 ° from the true chain . in the first selection step , marked s1 in fig1 , 35 ° is selected from the complement chain . the 35 ° tap is available from the complement chain because clk -- inb is propagating simultaneously in the complement chain . in selection step s2 , 70 ° is selected from tap 3 of the true chain . the alternating of taps from the true and complement chains from steps s3 through s5 continues until 175 °, tap 6 of the complement chain , is reached . at this point the boundary detector informs the selection circuitry that the 180 ° phase boundary is near to the desired phase adjustment . step 6 is made next and if the desired phase adjustment of clk -- in is between 175 ° and 180 ° these taps will be selected for interpolation in the blender circuit . for this case , taps from the same chain are selected for interpolation . continuing around the phase circle , the next step is s7 in which the 215 ° tap from the true chain is selected , then s8 in which the 250 ° tap from the complement chain is selected . stepping occurs in this fashion from s9 through s11 until the 355 ° tap is reached on the true chain . the boundary detector informs the selection circuitry that the 0 ° phase boundary is near . step s12 is made next and if the desired phase adjustment is between 355 ° and 0 ° then these taps are selected for interpolation . alternatively , the selection circuitry starts at 0 ° from the true chain but selects the taps in the reverse direction , i . e ., making selection steps from s12 to s1 in fig1 . returning to fig4 if the blender produces four equally spaced interpolated outputs as in fig3 then the resolution is increased from 150 ps to 75 ps assuming an inverter as the delay element having a delay of 300 ps . an embodiment of a pair of delay chains suitable for use in fig4 is shown in and discussed below in connection with fig7 . fig5 represents in block 500 the circuitry of fig4 . the circuitry shown in fig2 or 3 could be represented by block 500 as well . fig5 further shows phase detector 610 and up - down counter 620 connected to form a delay locked loop . by feeding back the clk -- out 660 and comparing its phase to the phase of clk -- in 630 , a phase error is determined . the polarity of the phase error instructs up / down counter 620 to increase or decrease its count value and the count value is used to derive a suitable sel -- cntl signal 670 . the loop in fig5 operates as follows , assuming that the phase difference between input clock clk -- in 630 and output clock clk -- out 660 is approximately 270 ° and that the phase boundary of clk -- in within the delay chain must be crossed to bring them into phase alignment . phase detector 610 detects the large phase error and instructs counter 620 to count up . circuit block 500 then receives the sel -- cntl 670 information which instructs selection logic 445 in fig4 to switch consecutively through the taps from the output of the blender circuit to reduce the phase error . selection logic 445 determines when it gets to the last tap of the blender circuit and a phase error is still present that a different pair of taps from the delay chain is required . it relays a request to alter the selected taps into the blender via signal 483 to selection logic 480 . this process continues as selection circuit 480 switches consecutively through the taps from the delay chains . finally , when one of the taps to be selected by selection logic 480 is the 180 ° phase boundary of the input clock , the boundary detector relays this information , via the value of the eoc indicator 495 , to selection logic 480 to instruct the logic to choose a tap from the delay chains at the 0 ° phase boundary . the eoc indicator 695 is also used to update the value of the up - down counter 620 with the 0 ° phase boundary information . adjustment continues until the proper set of taps is selected by the selection logic 480 so that selection logic 445 does not relay more requests to switch the taps . selection logic 445 then continues to step through the taps from the blender circuit 475 until the blender output tap that is closest to the phase of the input clock is found . in an embodiment , such as shown in fig5 the loop constantly adjusts the value in the counter by one count causing the phase of the output to jitter around the desired phase relationship between clk -- in and clk -- out , assuming that clk -- in is not accidentally aligned with the selected output from circuit block 500 . thus , in the usual situation , clk -- out will jitter by an amount equal to the resolution of circuit block 500 . fig6 shows an embodiment which employs a loop filter 740 to address this issue . the loop filter , a majority or unanimity detector in some embodiments , processes the output of phase detector 710 so that under some conditions the counter is instructed to maintain its value . only when a given number of phase detector output samples indicate the same direction of phase error will the loop filter instruct counter 720 to increase or decrease its value . the result is that jitter is reduced but at the cost of slower loop response to a real change in input phase , and possibly no loop response to a change in input phase that is too small too meet the criteria of the loop filter . in some embodiments it is desirable to remove any accumulated duty cycle error in the selected pair of clocks generated by selection circuitry 350 in fig3 . this accumulated error is the result of duty cycle errors of prior circuit stages as well as the error generated in selection circuitry 350 . this is accomplished by detecting the duty cycle of one of the outputs of selection circuit 350 and using this information to correct the duty cycle of the selection circuit outputs by adjustments applied directly within the selection circuit . in some embodiments the duty cycle correction is distributed within the various stages of selection circuitry 350 to optimize the correction . fig1 illustrates an embodiment of the duty cycle correcting selection circuit . in fig1 the duty cycle correcting selection circuit comprises multiplexor 1610 , phase splitter 1620 , duty cycle error detector 1625 and duty cycle control converter 1615 . multiplexor 1610 receives inputs 1605 from which a selection is to be made . the selected output clock 1630 from the multiplexor 1610 is received by phase splitter 1620 which converts the output to true and complement clocks for use by duty cycle error detector 1625 which receives the pair of clocks 1635 and 1640 . duty cycle error detector 1625 produces a pair of differential error voltages dcc 1650 and dccb 1645 which are received by duty cycle control converter 1615 which in turn produces pull up bias voltage vcp 1660 and pull down bias voltage vcn 1655 . multiplexor 1610 receives the pull up and pull down bias voltages and corrects the duty cycle of the output signal 1630 producing a corrected clock on line 1630 . in operation , assuming that the output clock has a high time that is greater than 50 %, the duty cycle error detector 1625 determines that the high time of the clock is too large and indicates this condition by setting the dcc signal 1650 to be larger than dccb signal 1645 . duty cycle control converter 1615 receives the error signals and adjusts , via the bias voltages vcn and vcp , both edges of the output signal . the rising edge slew rate is decreased and the falling edge slew rate is increased , thus reducing the high time of the clock . this adjustment continues until the output clock has a high time equal to the low . in some embodiments it is desirable , also , to correct the duty cycle of the output clock from selection circuit 355 in fig3 . duty cycle detection and correction similar to that which is employed to correct duty cycle errors in selection circuit 350 is used . in some embodiments it is desirable to use a duty cycle correcting amplifier to correct the duty cycle of selection circuits 350 and 355 rather than applying the correction entirely within the selection circuit itself . in fig4 which depicts the pair of delay chains for the true and complementary input clocks , it is important to have the input clock source from which the true and complementary clocks are derived have a 50 % duty cycle . the result is that the complementary clock , clk -- inb has exactly 180 ° phase relationship with clk -- in , thereby guaranteeing the accuracy of the blender circuit . the 50 % duty cycle can be imposed on a source clock by utilizing a duty cycle correcting amplifier which receives the clock and generates the clk -- in and clk -- inb signals for the delay chains . as referred to above in the discussion of fig3 an embodiment of a blender circuit is depicted in fig8 . the blender circuit receives a pair of inputs such as the pair , 352 and 354 , referred to in fig3 on its inputs 900 and 910 in fig8 . the outputs of the blender circuit , shown in fig3 as lines 348 , are the bp -- 1 through bp -- 5 lines , 981 - 985 , in fig8 . the function of the blender circuit is to create a series of outputs that span the phase , phi -- in , between the two inputs to the circuit . phi -- in is measured from one edge ( rising or falling ) of input phase -- 1 to the same type of edge of phase -- 2 . ideally , if there are n outputs of the circuit , each output differs from the adjacent output by phi -- in divided by n - 1 , again measured between edges of the same type . the circuit in fig8 has five outputs and divides the phase between the inputs into four equal parts . the circuit also adds a fixed delay between the inputs and all of the outputs . this fixed delay in fig8 is equal to the delay of 4 inverter stages . the circuit in fig8 operates as follows , assuming that the inputs are 900 and 910 and the rising edge of phase -- 1 leads the rising edge of phase -- 2 . the first event in the circuit takes place at node 920 , which first receives a delayed version of phase -- 1 and then an equally delayed version of phase -- 2 . the inverters 906 and 905 driving node 920 have outputs which oppose each other during the time between phase -- 1 and phase -- 2 . this slows the edge rate of the signal at node 920 such that inverter 908 switches at a phase that is half of the phase between signals 915 and 916 . this results in node 925 being halfway between node 927 and 929 in time . it can easily be seen by one skilled in the art that a similar effect will occur at nodes 930 and 940 . node 930 has a signal whose phase is half of the phase between nodes 960 and 970 . node 940 has a signal whose phase is half of the phase between nodes 950 and 970 . by the time the signals in the circuit reach nodes bp -- 1 through bp -- 5 the phase between the inputs has been divided up into four substantially equal parts . accuracy is maintained through the circuit by dividing the phase between signals that have an equal delay through the network . thus , node 925 has been delayed by two inverter stages and node 927 has been delayed by two inverter stages as well . when signals at the two nodes , 927 and 925 , are used to create the signal at node 930 , only the difference between the phases of the two signals , 927 and 925 , is divided into equal parts , the parts eventually becoming the phase differences between bp -- 1 and bp -- 2 and between bp -- 2 and bp -- 3 . all signals thus emerge from the network with a fixed delay of four inverter stages , but with phase differences based on the phase difference of the input signals and not the different propagation paths through the network . the dividing accuracy can be further improved by controlling the relative strengths of the inverters through the size of the inverter output stage . in all cases , the sum of the sizes of phase - dividing inverters , such as 905 and 906 in fig8 should add up to the size of the buffer inverter , such as 904 in fig8 in order to match delays , assuming that the buffer stages 907 , 908 and 909 are identical . in addition , the size of 905 and 906 relative to inverter 904 affects the accuracy of the phase division . in some embodiments for blending with phase -- 1 leading phase -- 2 , the size of 905 = 0 . 6 * size of 904 and size of 906 = 0 . 4 * size of 904 to give as close as possible to 50 % phase division . in these embodiments , a separate blender would be used for the blending of phase -- 2 and phase -- 1 with phase -- 2 leading phase -- 1 . as referred to above in the discussion of fig4 an embodiment of a delay chain using inverters as delay elements is shown in fig7 . delay chain 820 receives a signal clk -- in 830 and produces a set of taps 800 through 815 called the true clocks which span at least 180 ° of the input signal . delay chain 835 receives a signal clk -- inb , which is the complement of the clk -- in signal , and produces a set of taps 850 through 865 called the complement clocks which also span at least 180 ° of the input signal . taps 800 through 815 correspond to taps 440 shown in fig4 and taps 850 through 865 correspond to taps 540 in fig4 . as shown in fig7 each tap from the chain of inverters 820 or 825 is buffered to prevent loading of the tap from affecting subsequent taps in the chain . each tap has an output that is delayed by a given number of inverter delays from the input such that the delay between each tap is exactly an inverter delay . as referred to above in the discussion of fig4 an embodiment of the boundary detector 490 is shown in fig9 and 10 . fig9 also shows delay chains 410 and 510 from fig4 to illustrate the operation of the boundary detector better . the pair of delay chains 410 and 510 receive and propagate the input clocks 430 ( clk -- in ) and 520 ( clk -- inb ) to outputs 1000 - 1015 ( taps 440 of fig4 ) and 1050 - 1065 ( taps 540 of fig4 ). storage devices 1200 through 1215 are connected to those outputs of the chains that produce rising edges ( the outputs of the chain that produce falling edges , such as 1001 and 1050 , are not used by the boundary detector ). signal 1030 , clk -- in , is connected to the clocks of all the devices 1200 - 1215 ( as shown the storage devices are d flip - flops ). in operation , each storage device is clocked by clk -- in to determine whether the tap that is connected to the storage device is a zero or a one . the particular storage device that registers a one indicates that the tap to which it is connected is delayed by more than 180 ° from the clk -- in signal . taps in the chain at less than 180 ° register a zero . thus , the outputs , code & lt ; 15 : 0 & gt ;, of the storage devices form a thermometer code . the place in the code where there is a transition point from a zero to a one marks the particular tap at which the 180 ° phase point of clk -- in has been reached . in other embodiments , a single delay chain having storage devices connected to the taps producing rising edges is used to create the thermometer code . the thermometer code is further processed by logic as shown in fig1 to create the eoc indicator to be used in fig4 . the post - processing of the thermometer code converts the code into an address t & lt ; n : 0 & gt ; indicating the tap whose signal is closest to the phase boundary being detected . this address is used as the eoc indicator . because the relationship of the d inputs and the clock inputs at the storage devices is unknown , it is possible for one of the storage devices to become metastable and eventually settle with an incorrect value causing an error in the code . for example , a code such as 0000000101111111 indicates a boundary exists but the exact point is ambiguous due to the metastability of the storage device . the first &# 34 ; 1 &# 34 ; and the subsequent &# 34 ; 0 &# 34 ; present an ambiguous position for the eoc indicator . the post - processing logic is designed to remove this ambiguous position from the code . in the example given , the post - processing logic will determine that the first &# 34 ; 1 &# 34 ; is the eoc indicator to reduce the chance of picking a point in the delay line that is just beyond the boundary . choosing a point beyond the boundary may produce a delay adjustment with a large error that would have to be corrected resulting in a non - monotonic delay adjustment process . in some embodiments the first bit in the thermometer code is ignored because of the high likelihood that the first storage device may become metastable and settle to an incorrect value . fig1 through 17 show embodiments of the various circuit blocks shown in fig1 . fig1 shows an embodiment of multiplexor 1610 in fig1 . in fig1 sixteen inputs 2040 are received by the multiplexor ( 2000 - 2015 ) and one of them is selected for output signal 2035 . the pull up and pull down bias voltages are applied to the various four - to - one multiplexors shown , thus distributing the correction over multiple elements 2020 , 2025 and 2030 in the circuitry rather than just the element driving the output signal . by distributing the duty cycle correction over multiple elements in the circuit improved correction range is obtained without adversely affecting waveform quality . fig1 shows an embodiment of one of the multiplexor elements shown in fig1 in which duty cycle correction is performed . fig1 shows a four - to - one multiplexor having inputs 2100 and output 2165 . inputs 2100 are received by transmission switches 2105 , 2110 , 2115 and 2120 . the selected input is then fed to inverter 2125 which is a device with small output transistors . this allows the output of inverter 2125 at node x to be influenced by transistors 2130 and 2135 . these transistors receive , respectively , the pull up bias voltage 2145 and pull down bias voltage 2150 . the transistors operate either to decrease the fall time and increase the rise time of the output ( if the output has a high time greater than 50 %) or to increase the fall time and decrease the rise time of the output ( if the output has a low time greater than 50 %). buffer 2140 receives the slew - rate altered signal and produces the corrected output 2165 . block 2160 in fig1 contains the active duty cycle correction circuitry of the multiplexor elements . even numbers of blocks coupled directly or indirectly in series with 2160 may be employed to correct the duty cycle with the advantage that pairs of blocks introduce substantially less duty cycle error than using a single block for correction even under of the worst case process conditions . this advantage is due to the second block in the pair having a cancelling effect on the errors inherent in the inverter of the first block of the pair . fig1 shows an embodiment of duty cycle error detector 1625 shown in fig1 . this device functions to produce differential error signals dcc 2385 and dccb 2380 from differential clock inputs 2305 and 2310 . the clock signals 2305 and 2310 are received by a source coupled differential pair designed to steer current sources 2330 and 2335 to or from nodes 2340 and 2345 . differential signals 2380 and 2385 are developed by a load circuit comprising load impedances 2360 and 2365 and integrating capacitances 2370 and 2375 . if the input clocks 2305 and 2310 have 50 % duty cycles then no differential voltage between signals dcc 2385 and dccb 2380 is developed . however , if for example clock 2305 has a high time greater than 50 %, then signal dcc 2385 will become more positive than dccb 2380 because current source 2335 will be applied to integrating capacitance 2375 for a slightly longer time than current source 2330 will be applied to integrating capacitance 2370 . load circuits 2360 and 2365 are high impedance loads to prevent leakage of current from integrating capacitors 2370 and 2375 . another embodiment of a duty cycle error detector is shown in fig1 . the circuit in fig1 receives the complementary clock signals 2410 and 2510 on the gates of transistors 2430 and 2450 . differential error signals are developed on the drains of the transistors 2430 and 2450 . devices 2420 , 2470 , 2480 , and 2490 form a high impedance load for each of the transistors 2430 and 2450 so that charge leakage from capacitor 2460 is reduced . in operation capacitor 2460 is alternately charged in one direction and then in the opposite direction . if the duty cycle of the complementary input clocks is 50 % then zero net charge results across capacitor 2460 because the charging time in each direction is equal . if clock input 2410 has a duty cycle greater than 50 % then node dcc becomes more positive than node dccb indicating a duty cycle error . fig1 shows an embodiment of duty cycle control converter 1615 in fig1 . this circuitry receives the duty cycle error signals dcc 2225 and dccb 2235 to produce pullup bias voltage vcp 2275 and pull down bias voltage vcn 2270 . the duty cycle error signals are received by source coupled differential pair 2226 and 2236 having diode connected loads 2220 and 2230 . current mirror transistors 2210 and 2240 replicate the current flowing past nodes a and b shown in fig1 . this reflected current is then converted into bias voltage vcn 2270 at the drain of transistor 2215 and bias voltage vcp at the drain of transistor 2255 . if the high time of the clock is greater than 50 % then dcc is more positive than dccb . this causes the voltage at node a to fall and the voltage at node b to rise . due to the action of mirror transistor 2210 the bias voltage vcn 2270 rises towards vdd rail thus driving the pull down transistor 2135 in fig1 harder . at the same time node b rising causes mirror transistor 2240 to produce a less positive voltage at node d and a more positive bias voltage vcp 2275 at the drain of 2255 . the more positive bias voltage vcp weakens the drive of pull up transistor 2130 . the result is that the rising edge of the clock signal at node x in fig1 is slower and the falling edge is faster . both edges are corrected such that the high time of the corrected clock is reduced to approximately 50 %. in alternate embodiments buffering structures comprising 2280 and 2285 can amplify the bias voltages vcn 2270 and vcp 2275 a desired amount necessary to control the pull up and pull down transistors in fig1 . the complementary voltages to vcn and vcp are also available from the buffering structures if needed .