A TUNABLE DIGITAL OSCILLATOR CIRCUIT AND METHOD FOR PRODUCING CLOCK SIGNALS OF DIFFERENT FREQUENCIES

Abstract: A tunable digital oscillator circuit comprising a first dual-clock pulse generator (202), a second dual-clock pulse generator (204), a run controller (104), a stop controller (106) and a decoder (108). The first and second dual-clock pulse generators are coupled in a cascaded manner with the output of the first dual-clock pulse generator provided as an input to the second dual-clock pulse generator. Each of the first and second dual-clock pulse generators is preferably tunable, in that, they can output one clock signal from a predetermined number of frequencies. The run controller is preferably coupled to receive a start signal and the output of the second dual-clock pulse generator. The run controller provides the input to begin and maintain the first and second dual-clock pulse generators in the state of generating a clock signal. The stop controller is coupled to receive a clock signal from the first dual-clock pulse generator, and a stop signal. The tunable digital oscillator circuit can start or stop the clock within two clock cycles. The decoder receives a period select signal and provides a control signal to the first and second dual-clock pulse generators to select one of a predetermined number of frequencies for the clock signal.

Description: A TUNABLE DIGITAL OSCILLATOR CIRCUIT AND METHOD FOR PRODUCING CLOCK SIGNALS OF DIFFERENT FREQUENCIES BACKGROUND OF THE INVENTION 1. Field of the Invention. The present invention relates generally to systems and methods for generating clock signals. In particular, the present invention relates to a system and a method for generating clock signals of different frequencies using a tunable digital oscillator circuit. Still more particularly, the present invention relates to a tunable oscillator circuit formed exclusively from digital logic circuits. 2. Description of the Background Art. Oscillators are well known in the prior art for producing clock signals. Most conventional oscillators require some form of R-C network or resistor-capacitor combination. Such R-C networks are typically used in combination with a crystal to produce a well-defined, stable square wave output. However, one problem with such existing clock generators or oscillators is that they are difficult and expensive to include as part of an integrated circuit because of the required analog components. It is often very difficult, if not impossible, to make usable resistors and capacitors on integrated circuits, especially for certain design processes. Furthermore, the addition of such analog components to integrated circuits consumes much of the power and layout area of the integrated circuit, thereby reducing the overall amount of circuitry that can be put on one integrated circuit and increasing the cost of the die. Thus, there is a need for a system and method for producing a clock signal that does not require the conventional resistor-capacitor combinations. Modern integrated circuits often need not just one clock signal but several clock signals of differing frequencies. One common approach is to use a phase lock loop (PLL) circuit to provide a programmable frequency output. While PLL circuits provide very precise frequency output, they create a number of problems when included as part of an integrated circuit. First, programmable oscillators constructed using PLL circuits, while very good for many applications, are very sensitive to process technologies and must often be redesigned as process technologies change. This is a particular problem for integrated circuits where the process technologies are constantly migrating to smaller sizes such as the transition from .35 to .25 micron technologies. Therefore, each time the process technology changes the programmable oscillators must be redesigned Second, thev are expensive due to the components external to the chip, such as resistors, capacitors and crystals, required to make the design work Third, the PLL circuits consume large amounts of power and significantly increase the gate count and area consumed Thus, there is need for a square e digital oscillator that does not require the use of a PLL circuit With the advent of portable computers, power consumption has become a key focus due to the fact that batteries are able to provide only discrete and limited amounts of power This desire to preserve power for portable computing has mandated reduced power consumption for integrated circuits One technique used to save power is to switch clocks off when they are not needed and back on only when the need aπses Thus, there is a need for a square wave digital oscillator that be switched "on" and "off very quickly Such an oscillator would allow sub-systems of portable computers to be switched into low power mode when the sub-systems including the mam system clocks are switched off Thus, there is need for a tunable digital oscillator that be switched on and off quickly (on withm nanoseconds and off within two clock cycles) Furthermore, the switching of the tunable digital oscillator between the on and off state must be glitch or error free Therefore, there is a need for a square wave digital oscillator on an integrated circuit that can be tuned over a wide frequency range using standard, off the shelf, digital logic components SUMMARY OF THE INVENTION The present invention overcomes the deficiencies and limitations of the pπor art with a tunable, square-wave, digital oscillator on an integrated circuit The digital oscillator of the present invention preferably compπses a first dual-clock pulse generator, a second dual-clock pulse generator, a run controller, a stop controller and a decoder The first and second dual- clock pulse generators are coupled in a cascaded manner with the output of the first dual-clock pulse generator provided as an input to the second dual-clock pulse generator The output of the second dual-clock pulse generator is fed back through the run controller and provided as an input to the first dual-clock pulse generator The first and second dual-clock pulse generators together create and provide the square wave clock signal output by the present invention Each of the first and second dual-clock pulse generators is preferably tunable, in that, they can output one clock signal from a predetermined number of frequencies The run controller is preferably coupled to receive a start signal and the output of the second dual-clock pulse generator The run controller provides the input to begin and maintain the first and second dual-clock pulse generators m the state of generating a clock signal The stop controller is coupled to receive a clock signal from the first dual-clock pulse generator, and a stop signal In response to the stop signal, the stop controller generates a signal to interrupt the first and second dual-clock pulse generators from producing a clock signal The present invention is particularly advantageous because it can start or stop the clock w ithin two clock cycles The decoder receives a peπod select signal and provides a control signal to the first and second dual-clock pulse generators to select one of a predetermined number of frequencies for the clock signal The present invention is also advantageous because the first dual-clock pulse generator, the second dual-clock pulse generator, the run controller, the stop controller, and the decoder are all constructed of standard digital logic circuits available in all libraries Thus no on chip resistor or capacitor or any external components are required The present invention further compπses a method for generating a digital clock signal BRIEF DESCRIPTION OF THE DRAWINGS Figure 1 is a block diagram of a preferred embodiment of the tunable digital oscillator of the present invention Figure 2 is a block diagram of a preferred embodiment of a digital pulse generator of the present invention Figure 3 is a timing diagram for signals received and output by the digital pulse generator of the present invention Figure 4 is block diagram of a preferred embodiment for a dual-clock pulse generator of the present invention Figure 5 is block diagram of a preferred embodiment for a vaπable delay network constructed according to the present invention Figure 6 is a timing diagram for signals received and output by the dual-clock pulse generator of the present invention Figure 7 is block diagram of a preferred embodiment for a run controller constructed according to the present invention Figure 8 is a timing diagram illustrating the sequence of signals generated by the present invention starting up the tunable digital oscillator of the present invention Figure 9 is a block diagram of a preferred embodiment for a stop controller constructed according to the present invention Figure 10 is a timing diagram illustrating the sequence of signals generated by the present invention duπng stopping of the tunable digital oscillator of the present invention DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Referring now to igure 1 a fust and preferred embodiment tor a tunable digital oscillator 100 constructed according to the piesent inv ention is shown The oscillator 100 of the present invention is preferably constructed entirely ith digital logic, thus, the oscillator J 100 is particularly advantageous for use in integrated circuits The oscillator 100 is also tunable or vaπable, in that, by applying the appropnate control signals, the oscillator 100 will output a clock signal of a different frequency corresponding to the control signal applied Furthermore, as will be descπbed in more detail below, the oscillator 100 of the present invention is particularly advantageous because it is immune to and even thπves on parasitic 10 effects such as wire loading that typically hinder the preformance of most digital circuits As shown in Figure 1 , the tunable digital oscillator 100 preferably compπses a digital pulse generator 102, a run controller 104, a stop controller 106 and a decoder 108 The digital oscillator 100 preferably receives as inputs, a start signal to identify when the digital oscillator 100 should start generating a clock output signal, a stop signal to identify when the digital 15 oscillator 100 should discontinue generating a clock output signal, a system reset signal, and a peπod signal that specifies a frequency for the clock output signal output by the digital oscillator 100 Those skilled in the art will recognize that these control signals could be provided by other logic such as that used with graphic controllers The digital pulse generator 102 is preferably formed from a pair of dual-clock pulse 0 generators 202, 204 that are coupled in a cascasded manner The dual-clock pulse generators 202, 204 are descπbed in more detail below with reference to Figures 2-6 The digital pulse generator 102 generates an output clock signal, CLKOUT, under the control of the run controller 104, the stop controller 106 and the decoder 108 The digital pulse generator 102 provides the particular advantage of being able to start and stop generating the clock signal 5 very quickly After receiving a start signal, the digital pulse generator 102 generates the clock signal in a matter of nanoseconds and immediately produces a stable clock signal that is glitch free After receiving the stop signal, the clock signal ceases generating the clock signal withm two clock cycles of when the stop signal is received The run controller 104 is preferably coupled to receive the start signal, and control the W switching "on" of the digital pulse generator 102 The run controller 104 also receives a signal, CLKSTOP', indicating when to discontinue outputting control signals used to generate the clock signal. The CLKSTOP ' signal is provided to the run controller 104 by coupling an input of the run controller 104 to an output of the stop controller 106. The CLKSTOP' signal is generated by the stop controller 106 in response to a STOP signal or a reset signal. The run controller 104 also has a pair of inputs coupled to receive signals from the digital pulse generator 102. In particular, the run controller 104 receives a select signal, SEL, and an output signal, OUT2. These signals are used by the run controller 104 to time the transitions on the control signal, INI , output by the run controller 104 and also to provided a feedback loop for use of the output signal, OUT2, to maintain the digital pulse generator 102 in a state of generating pulses. This will be described in more detail below with reference to Figure 7 and the timing diagram of Figure 8. The stop controller 106 is preferably coupled to receive the stop signal from a controlling processor or logic (not shown). The stop controller 106 controls the switching "off of the digital pulse generator 102. The stop controller 106 also receives a reset signal, SYSRESET', indicating when the system in which the tunable digital oscillator 100 has been incorporated is reset. Such assertion of the reset signal causes the digital oscillator 100 to be reset to a state of not generating a clock signal. The stop controller 106 also has a pair of inputs coupled to receive signals from the digital pulse generator 102. In particular, the stop controller 106 receives a clock signal, CLK1 , and output clock signal, CLKOUT. These signals are used by the stop controller 106 to time the transitions on the control signal, CLKSTOP', output by the stop controller 106 that is provided to both the run controller 104 and the digital pulse generator 102. These signals will be described in more detail below with reference to Figure 9 and the timing diagram of Figure 10. The final component of the tunable digital oscillator 100 is the decoder 108. While the present invention is described herein and below in terms of a tunable digital oscillator 100 that is capable of outputting (or not outputting) one of eight frequencies, those skilled in the art will recognize that the principles of the present invention can be expanded to a tunable digital oscillator 100 that is able to provide any number of different clock frequencies from 2 to n. The preferred embodiment of the present invention preferably receives a signal identifiying the period or frequency of the clock signal that is to be output. The decoder 108 translates the input control signal into a plurality of signals, each select signal adding to the period of the clock signal output. More specifically, the decoder 108 is described here as receiving a three- bit contiol signal and outputting eight signals representing as a group the period of the clock signal to be generated and output These eight signal are provided to the digital pulse generator 102 Referπng now to Figures 2-6, a key compent of the present invention, the digital pulse generator 102. will be descπbed As noted above, the digital pulse generator 102 preferably compπse a pair of cascaded dual-clock pulse generators 202. 204 As shown, the first and second dual-clock pulse generators 202, 204 are the same with the output of the first dual- clock pulse generator 202 coupled to the input of the second dual-clock pulse generator 204 Each dual-clock pulse generator 202, 204 has a control input for receiving a start or input clocking signal, a reset input (RST') for receiving a reset signal, and a period input for receiving a peπod selection signal The data input of the first dual-clock pulse generator 202 is coupled to receive the INI signal or the start pulse from the run controller 104 The reset input of the first dual-clock pulse generator 202 is coupled to receive the clock stop signal from the stop controller 106 This allows the stop controller to reset the first dual-clock pulse generator 202 to a state where no clock signal is produced The penod input of the first dual- clock pulse generator 202 is coupled to receive the peπod select signal (PERIOD SEL) from the decoder 108 Similarly, the penod input of the second clock pulse generator 204 is coupled to receive the peπod select signal (PERIOD SEL) from the decoder 108 The reset input of the second dual-clock pulse generator 204 is coupled to receive the system reset signal (SYSRESET') Each of the dual-clock pulse generators 202, 204 also provides a plurality of outputs including a clock output (CLK) that is an internal clock of the dual-clock pulse generator (from Fig. 4, CLK will either be IN or OUT depending on the state of SEL), a Ql output that is a signal produced by toggling a flip-flop clocked by the clock output signal (CLK), a select output that is the Ql output delayed by a predetermined amount of time, δl, and a final output (OUT) that is the select output delayed by a predetermined amount of time, 52. The Ql output of the first dual-clock pulse generator 202 preferably provides the clock signal generated by the present invention and is labeled CLKOUT The Ql output of the first dual-clock pulse generator 202 is used as the output clock because the first dual-clock pulse generator 202 starts toggling almost immediately after the START signal is applied, thus, this makes the output clock available as soon as possible If the Ql output of the second dual-clock pulse generator 204 were used as the CLKOUT signal, there would be a long delay between when the START signal is applied and CLKOUT starts toggling because the first dual-clock pulse generator 202 must go through a complete toggling cycle before the second dual-clock pulse generator 204 begins toggling. Moreover, the Ql output of the first dual-clock pulse generator 202 is used as the output clock since the stop controller 106 is set up to use the Ql output of the first dual- clock pulse generator 202. The select output and the clock output of the first dual-clock pulse generator 202 are provided as the SEL input to the run controller 104 and the CLK1 signal to the stop controller 106, respectively. The output (OUT) of the second dual-clock pulse generator 202 provides the OUT2 signal that is fed back and coupled to the IN input of the run controller 104. The output signals from the first and second dual-clock pulse generators 202, 204 and their relationship to the input signal INI can best be understood with reference to the timing diagram shown in Figure 3. Figure 3 shows a timing diagram of the INI , CLK1. OUTl (from the first dual-clock pulse generator 202), CLK2 and OUT2 (from the second dual-clock pulse generator 204). The timing diagram shows the signals assuming that the SYSRESET' signal is asserted and then released just before the first rising edge of the INI signal. As shown, the first rising edge 300 of the INI causes the CLK1 signal to immediately transition to high 302, and then after a predetermined amount of delay equal to δl + 52, as will be explained below, causes the OUTl signal to transition to high 304. Since the OUTl and CLK2 have a similar relationship to each other as the INI and CLK1 signals, the CLK2 signal transitions to high 306 just after the OUTl signal to transitions to high 304. The OUTl signal is used to create the OUT2 pulse by cascading the dual-clock pulse generators 202, 204. The feedback method of OUT2 as an input to the first dual-clock pulse generators 202 via the run controller 104 is used to generate an additional OUTl pulse. This will in turn generate an additional OUT2 pulse that again is fed back to the first dual-clock pulse generator 202 via the run controller 104, thus generating an infinite number of pulses until the reset is asserted. Referring now to Figure 4, a preferred embodiment for the dual-clock pulse generators 202, 204 is shown. Since the dual-clock pulse generators 202, 204 are identical in functionality, the dual-clock pulse generators 202, 204 will be desribed in terms of the first dual-clock pulse generator 202. However, all the functionality of the second dual-clock pulse generator 204 is the same. The only difference in the dual-clock pulse generators 202, 204 is the coupling of their inputs and the outputs. As shown in Figure 4, the first dual-clock pulse generator 202 preferably comprises a multiplexer 402, a flip-flop 404, a first variable delay network 406 and a second vaπable delay network 408 The mutiplexer 402 is preferably a two-to-one multiplexer and has a first and second data inputs, a control input and an output A first input ot the mutiplexer 402 provides the IN input to the first dual-clock pulse generator 202 and is coupled to the CLKPLS output of the run controller 104 The second input of the mutiplexer 402 is coupled to receive a feedback signal from an output of the second vanable delay network 408 The control input of the mutiplexer 402 is coupled to an output of the first vanable delay network 406 to receive a select signal Finally, the output of the mutiplexer 402 is coupled to a clock input of the flip- flop 404 and also provides the CLK output of the first dual-clock pulse generator 202 The signal selected for output by the multiplexer 402 is used to clock the flip-flop 404 The flip-flop 404 is preferably a postive edge tπggered D-flip-flop and has a data input, a reset input, and both an output Q and an inverted output Q' The data input of the flip-flop 404 is coupled to the Q' output such that the flip-flop 404 will toggle its output between "0" and "1" when it is clocked The reset input is coupled to rececive the CLKSTOP' signal from the stop controller 106 Assertion of the reset input operates in a conventional manner to set the Q output of flip-flop 404 to "0" The output of the flip-flop 404 is coupled to the input of the first vaπable delay network 406, and also provides the Ql output of the first dual-clock pulse generator 202 The first and second vanable delay networks 406, 408 are preferably identical in functionality Each of the vanable delay networks 406, 408 has a data input, a peπod input, and an output The vanable delay networks 406, 408 receive a signal at their inputs and output the signal after a specifed delay The specifed time of delay is set in response to the signal applied at the peπod input In an exemplary embodiment, each delay network can delay the signal by amounts of time between a predetermined amount of time (x) and eight times the predetermined amount of time (8x) The input of the first vaπable delay network 406 is coupled to the Q output of the flip-flop 404 The penod input of first vanable delay network 406 is coupled to the penod input of the second vanable delay network 408 and to the output of the decoder 108 to receive the PERIOD SEL signal that identifies the specified amount of delay time The delay time through the first vaπable delay network 406 is denoted as δl The output of the first vanable delay network 406 is also coupled to the control input of the multiplexer 402 and is provided as the SEL output In the case of the first vanable delay network 406 this SEL output is coupled to the SEL input of the run controller 104. The second variable delay network 408 has its input coupled to the output of the first variable delay network 406. The second variable delay network 408 receives the PERIOD SEL signal at its period input as noted above. The second variable delay network 408 delays the signal by about the same amount of time as the first variable delay network 406 in this embodiment, and the delay time through the second variable delay network 408 is denoted by 52. This is done to provide a 50% duty cycle on the output of the second variable delay network 408 and at the clock input of flip-flop 404. The output of the second variable delay network 408 is fed back and coupled to the second input of the multiplexer 402. The output of the second variable delay network 408 also provides the OUT output of the first dual-clock pulse generator 202. Referring now to Figure 5, one embodiment for the first variable delay network 406 is shown. While this embodiment of the variable delay network 406 provides eight different possible delays (eight level variable delay network) for the signal applied at the input, those skilled in the art will understand that this design could be modified to include any number of delays from a predetermined minimum to n times the predetermined minimum. For example, the embodiment of Figure 5 could easily have additional levels to provide greater frequency range. In yet another embodiment, 16 delay levels were provided to generate tunability in the range of 50 MHz to 120 MHz. As shown in Figure 5, the first variable delay network 406 preferably comprises a plurality of buffers 502, 504, 506, 508, and a plurality of multiplexers 510, 512, 514, 516, 518, 520, 522, and 524. Each of the buffers 502, 504, 506, 508 has an input and an output. A first buffer 502 has its input coupled to receive the input signal, and its input is the input for the first variable delay network 406. The remaining buffers 504, 506, 508 are coupled in series with the first buffer 502 with the final buffer 508 providing an output. There are preferably four buffers, however, those skilled in the art will recognize that any number of buffers may be provided depending on the minimum time delay desired for the first variable delay network 406. The minimum delay provided by the first variable delay network 406 is determined by the propogation delay through the plurality of buffers 502, 504, 506, 508 plus the progation delay through at least one multiplexer 524. The plurality of multiplexers 510, 512, 514, 516, 518. 520, 522, and 524 each have a first and second data input, a control input and an output. Each of the plurality of multiplexers 510, 512, 514, 516, 518, 520, 522, and 524 has its first data input coupled to the output of the buffer 508. The second data input of one multiplxer 510 has us second data input also coupled to the output of the buffer 508 The remaining multiplexers 512. 514, 516, 518, 520, 522, and 524 each have their second data input coupled to the output of a previous multiplexer 510, 512, 514, 516, 518, 520, and 522 For example, the output of multiplexer 510 is coupled to the second data input of multiplxer 512, and output of multiplexer 512 is coupled to the second data input of multiplxer 514, and similarly for multiplexers 516, 518, 520. 522. and 524 Each of the control inputs of the plurality of multiplexers 510, 512. 514, 516, 518, 520, 522, and 524 is coupled to receive a control signal that forms the eight lines of the peπod select signal As has been descπbed abo e, the decoder 108 translates a three-bit value into one of eight eight-bit values to control the plurality of multiplexers 510, 512, 514, 516, 518, 520, 522, and 524 The table below shows the penod select signal values, the PERIOD SEL values and the multiplexers 510, 512, 514, 516, 518, 520, 522, and 524 through which the signal is routed in response to each signal The present invention in essence vanes the penod by changing the amount of delay provided by the first vaπable delay network 406 This is done by increasing or decreasing the propogation delay through the first vanable delay network 406 The propogation delay is increased by the multiple buffers 502, 504, 506, 508 in part, but particularly by adding the number of multiplexers 510, 512, 514, 516, 518, 520, 522, 524 through which an input signal must pass For example, an input signal may pass through as few as one multiplxer 524, or be forced to pass through all eight multiplexers 510, 512, 514, 516, 518, 520, 522, 524 This is very advantageous since any parasitic effects such as wire loading only increase the delay through the first variable delay netwoik 406 thus adding or making the first aπable delay network 406 immune from such effects While the present invention has been descnbed m terms of having eight multiplexers 510. 512, 514. 516, 518. 520, 522, 524, those skilled in the art will recognize that the first vaπable delay network 406 may have any number of muhtplexers depending on the amount of tunablihty in penod desired. Those skilled in the art will further recognize that vaπous other devices may be used to provide the propogation delay other than multiplexers Refernng now to the timing diagram of Figure 6 and back to Figure 4, the operation of the first dual-clock pulse generator 202 will be descnbed in more detail. The first dual-clock pulse generator 202 operates continuously to generate a seπes of pulses as long as the delay provided by the first vaπable delay network 406, δl , and the delay time through the second vaπable delay netwoik 408, 52. are sufficient to create CLK1 pulses that satisfy the minimum pulse width required for the clock input of flip-flop 404 This is a simple requirement and can be easily satisfed in most modern process technologies by using only 20 buffers coupled in senes. For example, in the process technology that this invention was first realized, the worst case minimum pulse width requirement for a D-flip flip is around 0.8ns The intnnsic pin-to- pin delay of a typical buffer is around 0.2ns. So, 20 buffers connected m seπes would give a delay of 20 x 0.2ns = 4ns minimum If such a delay were used for each delay network m Figure 4. CLK pulses would be created with a high time of 4ns minimum and a low time of 4ns minimum This is more than sufficient time to meet the requirements of the present invention Of course, wireloadmg effects would only add to the delay, helping to satisfy these requirements. Moreover, since delays and flip-flop timing requirements usually scale with process technologies this design virtually guarantees proper operation even when the design is translated from one process technology to the next process technology. As shown m Figure 6, the process for generating pulses begins with a transition from low to high on the input (IN) to the first dual-clock pulse generator 202. As with the pnor timing diagram, it is assumed that flip-flop 404 is reset pnor to the first nsmg edge on the IN signal. The transition from low to high on the input (IN) to the first dual-clock pulse generator 202 propogates 600 through the multiplexer 402 and provide a nsmg edge at the clock input of the flip-flop 404 This causes the flip-flop 404 to latch the data at its D input m turn causing 602, the Ql output, to transistion to high. Once the Ql output has transistioned to high and after the propogation delay, 51. through the first vaπable delay network 406. the output Δl of the first vaπable delay network 406 transition to high 604 Since the output Δl is also the select signal SEL, the SEL signal transitions to high 606 The select signal controls the multiplexer 402 such that output by the multiplexer is switched to the second input, or the current value of the OUT or output Δ2 When the select signal is low, the input (IN) to the first dual-clock pulse generator 202 is provided at the output of the multiplexer 402 and w hen the select signal is high, output Δ2 is provied at the output of the multiplexer 402 Since the value of output Δ2 is low, the CLK signal tranistions 608 to low after the SEL signal transitions high After the nsmg edge on the output Δl , the output of the second vaπable delay network 408 transitions to high after the propogation delay, 52, through the second vaπable delay network 408 This nsmg edge on the output of the second vaπable delay network 408 is fed back 610 as a nsmg edge on the CLK signal since the multiplexer passes the output Δ2 signal through as the CLK signal This in turn provides a second nsmg edge at the clock input of the flip-flop 404 causing the flip- flop 404 to latch for a second time This causes the flip-flop 404 to toggle the data at its D input which is now low in turn causing 612, the Ql output to transition to low Once the Ql output has transistioned to low, this change m signal state is passed 614 through the first vanable delay network 406 and after time 51 , the output Δl of the first vanable delay network 406 transitions to a low state This immediately causes 616 a change m the state of the SEL signal to low This causes the CLK signal to transition to low, or the current value of the input signal (IN) to the first dual-clock pulse generator 202 Thus, the first dual-clock pulse generator 202 will generate two such pulses (CLK) each time an input pulse (IN) is provided at its input Since as shown in Figure 1 the OUT signal, or Δ2. is provided to the run controller 104, this signal can be used to generate additonal input clock pulses as will be descnbed below Refernng now to Figure 7, a preferred embodiment for the run controller 104 is shown The run controller 104 preferably comprises a flip-flop 702 and a multiplexer 704 As has been noted above, the run controller 104 has a clock stop input, a select input, a START input and data IN input The reset input to the flip-flop 702 provides the clock stop input and is coupled to receive the CLKSTOP' signal from the stop controller 106 The clock input of the flip-flop 702 provides the select input and is coupled to receive the SEL signal The data input to the flip-flop 702 is tied high The output of the flip-flop 702 is coupled to the control input of the multiplexer 704 The multiplexer 704 provides the remaining inputs of the run controller 104 and the output for the run controller 104 The multiplexer 704 has a first input that is provided at its output when the control signal applied at the control input is low and a second input that is provided at its output when the control signal applied to the control input is high The first input of the multiplexer 704 is coupled to receive the START signal from a source external to be oscillator 100 The second input of the multiplexer 704 is coupled to receive the OUT2 _> signal output by the second dual-clock pulse generator 204 The output of the multiplexer 704 prov ides the output of the run controller 104, and thus, the CLKPLS signal After receiving a CLKSTOP' signal, the flip-flop 702 is reset to output a low signal, and thus the run controller 104 is set to output the signal at its START input on its CLKPLS output as the INI signal As has been noted above with reference to Figures 4 and 6, a nsmg 10 edge on the START signal is passed to the first dual-clock pulse generator 202 After time delay 51 , this causes the SEL signal output by the first duai-clock pulse generator 202 to transition to high The nsmg edge on the SEL signal is applied to the clock input of the flip- flop 702 which clocks the flip-flop 702 and it outputs a high or "1" This affects the multiplexei 704 such that the second input (which is provided from the OUT2 output of the /_> second dual-clock pulse generator 204) is now provided as the CLKPLS output (e g , as the INI signal) Thus, after the START pulse tπggers the first dual-clock pulse generator 202 to toggle its SEL, CLK, OUT and Ql outputs, the input IN is always provided as the INI signal to the first dual-clock pulse generator 202 In this manner, the OUT2 signal provided by the second dual-clock pulse generator 204 is then fed back to the first dual-clock pulse generator 20 202 through the run controller 104 to continue generating clock pulses as has been descπbed above with reference to Figures 4 and 6 It should be noted that the duration of the START pulse is unimportant as long as it is high long enough to meet the minimum clock pulse with requirements of flip-flop 404 of first dual clock pulse generator 202 The only other requirement is that START be low when the CLKSTOP' signal is asserted 25 The operational sequence for starting the oscillator 100 can best be understood with reference to the timing diagram shown m figure 8 For convenience and ease of understanding, Figure 8 illustrates the relevant input signals received from the run controller 104 as well as the signal output received by the first dual-clock pulse generator 202 and the second dual-clock pulse generator 204 The oscillator 100 begins m an "off state that is 30 maintained by assertion of the CLKSTOP' signal and the SYSRESET' signals (asserted low) The oscillator 100 then transitions to a state where operation is possible, dependent on receiving a pulse on the START signal This state is denoted by arrow 800 that highlights the CLKSTOP signal and the SYSRESET signals transitioning to high The oscillator 100 continues in this state until a rising edge on the START signal is received Once a πsing edge on the START signal is received as indicated by arrow 802, the run controller 104 transitions the INI signal to high, which in turn causes 804 the CLK1 signal provided by the first dual- clock pulse generator 202 to tiansitions to high The CLKOUT signal from the first dual-clock pulse generator 202 also transitions to high once the IN 1 signal transitions Thereafter, the signals produced by the first and second dual-clock pulse generators 202, 204 have been descnbed with reference to the timing diagram of Figure 6 One point of interest is that the SEL signal output by the first dual-clock pulse generator 202 has about a 50% duty cycle and transitions between high and low Once running, OUT2 is always selected by the run controller 104 to be the input of the first dual clock pulse generator 202 Internal to the first dual clock pulse generator 202, the SEL signal alternately selects INI (OUT2 from Fig 1) or OUT of Fig 4 As shown by arrows 808 and 810, the nsmg edges on the OUT2 signal are thereafter used to generate an infinite number of clock pulses and continue the cycle as long as the SYSRESET' and CLKSTOP' signal remain high Refernng now to Figure 9. a preferred embodiment for the stop controller 106 is shown The stop controller 106 preferably compπses a plurality of flip-flops 902, 904, 914, and other combinational logic 906, 908, 910, 912 and 916 As has been noted above, the stop controller 106 has a stop input, a first clock (CLK1) input, a Ql input and a reset input The data input of the first flip-flop 902 is coupled to receive the STOP input signal The output of the first flip-flop 902 is coupled to the data input of the second flip-flop 904 The clock input to both the first and second flip-flops 902, 904 is coupled to receive the CLK1 signal from the first dual-clock pulse generator 202 More importantly, flip-flops 902, 904 synchronize the STOP signal with the CLK1 signal This is advantageous because it allows STOP to be asserted at any time, without regard for any clock domain The output of the second flip-flop 904 is coupled by a pair of inverters 906, 908 in senes to an input of an AND gate 912 The inverters 906, 908 are needed to prevent possible glitches at the clock input of the flip-flop 914 They ensure that the second input to the AND gate 912 coupled to the output of inverter 908 only transitions after Ql transitions Without inverters 906 & 908, the second input to AND gate 912 could go high just before the first input (dnven by inverter 910) of the AND gate 912 goes low This could cause a glitch at the output of the AND gate 912 The other input of the AND gate 912 receives the output of inverter 910 that is coupled to receive the Ql signal from the first dual-clock pulse generator 202 The output of the AND gate 912 is in turn coupled to the clock input of the third flip-flop 914 Thus, the third flip-flop 914 will receive a rising edge on the clock input when the Ql signal is low and STOP signal goes high delayed by up to two cycles of the CLK1 signal The data input is tied to high so that once the third flip-flop 914 is clocked the CLKSTOP' signal will be asserted until a reset signal (in this case a system reset) is received The reset input of the third flip-flop 914 is coupled to receive the SYSRESET' signal and will reset the stop controller 106 The output of the third flip-flop 914 is input to AND gate 916 with the input inverted along with the svstem reset signal to provide the CLKSTOP' signal Referπng now to Figure 10, the operational sequence for stopping the oscillator 100 is shown Wfien the SYSRESET' signal is low, the clock stop signal is low since the SYSRESET' signal is input to an input of the AND gate 916 This occurs only duπng system reset The SYSRESET' signal transitions to high before the START signal is asserted This starts the first and second dual-clock pulse generators 202, 204 generating the clock signal The STOP signal can be asserted at any time since the first and second flip-flops 902, 904 synchronize the signal The STOP signal is synchronized by the same clock, CLK1, that dnves the flip-flop 404 of the first dual-clock pulse generator 202 Furthermore, the CLKSTOP' signal resets the flip-flop 404 of the first dual-clock pulse generator 202, and the signal will only go low when the output of the the flip-flop 404 is zero, thereby preventing any glitches on the output Ql of the the first dual-clock pulse generator 202 from being produced when the clock is stopped Moreover, even m the worst case, the CLKSTOP' signal will go low within two CLKOUT cycles to turn off the oscillator This is best shown by the last falling edge of the CLKOUT signal and its correspondence to the CLKSTOP' signal (arrow While the present invention has been descπbed with reference to certain preferred embodiments, those skilled m the art will recognize that vanous modifications may be provided These and other vanations upon and modifications to the preferred embodiments are provided for by the present invention

Claims: WHAT IS CLAIMED IS: 1. A tunable digital oscillator comprising: a first controller having an input and an output for generating a clock pulse signal to start the tunable digital oscillator and continue the generation of clock pulses, the input of the first controller coupled to receive a start signal; a second controller having an input and an output for generating a clock stop signal to discontinue generation of clock pulses by the tunable digital oscillator, the input of the second controller coupled to receive a stop signal; a digital pulse generator having a first input, a second input, a third input, and an output, for generating clock pulses, the first input of the digital pulse generator coupled to the output of the first controller for receiving the clock pulse signal, the second input of the digital pulse generator coupled to the output of the second controller for receiving the clock stop signal, the third input of the digital pulse generator coupled to receive a period signal, and the output of digital pulse generator providing a clock output signal. 2. The tunable digital oscillator of claim 1 wherein the first controller, the second controller and the digital pulse generator are formed entirely of standard digital logic circuitry. 3. The tunable digital oscillator of claim 1 further comprising a decoder having an input and outputs, the decoder for translating a binary value to a plurality of control signals, the input of the decoder coupled to receive the period signal and the output of the decoder coupled to the third input of the digital pulse generator to provide a period select signal. 4. The tunable digital oscillator of claim 3, wherein the period signal is a three-bit value, the decoder translates a three-bit value into one of eight possible eight bit values, and the period select signal is an eight bit control signal. 5. The tunable digital oscillator of claim 1 , wherein the digital pulse generator is capable of providing clock signals having one of eight different periods. 6. The tunable digital oscillator of claim 1 , wherein the digital pulse generator is capable of providing clock signals having one of sixteen different periods. 7 The tunable digital oscillator of claim 1 , wherein the digital pulse generator has a plurality of additional outputs and generates a second clock signal delayed from the clock output signal bv one penod and a select signal, and the start controller has additional inputs, the additional inputs coupled to receive the second clock signal and the select signal, the start controller uses the select signal to determine whether the start signal or the second clock signal will be used to generate the clock pulse signal 8 The tunable digital oscillator of claim 7, wherein the start controller comprises a D flip-flop having a data input, a clock input and an output, the data input of the D flip-flop coupled to receive a high logic signal, the clock input of the D flip-flop coupled to receive the select signal, and a multiplexer having a first data input, a second data input, a control input, and output, the control input of the multiplexer coupled to the output of the D flip-flop, the first data input of the multiplexer coupled to receive the start signal, and the second data input of the multiplexer coupled to receive the second clock signal from the digital pulse generator 9 The tunable digital oscillator of claim 1 , wherem the digital pulse generator has an additional output and generates a first clock signal, the clock output signal delayed from the first clock signal by one peπod, and the stop controller has additional inputs, one of said additional inputs coupled to receive the first clock signal from the digital pulse generator, a second of said additional inputs coupled to receive the clock output signal, the stop controller using the first clock signal and the clock output signal to time the generation of the clock stop signal 10 The tunable digital oscillator of claim 9, wherem the stop controller compnses. a first and second D flip-flops coupled in senes, a data input to the first D flip-flop coupled to receive the stop signal, the clock inputs of the first and second D flip-flops coupled to receive the first clock signal, an AND gate having a first input coupled to receive an inverted version of the clock output signal, and the output of the second D flip-flop; and a third D flip-flop, having a clock input, a data input, and an output, the clock input of the third D flip-flop coupled to an output of the AND gate, and the data input of the third D flip-flop coupled to receive a high logic signal, the output of the third D flip-flop providing the clock stop signal 1 1 The tunable digital oscillator of claim 1 , wherem the digital pulse generator compnses a first dual-clock pulse generator having a data input, a reset input, a select output, a clock output, a penod input, a first output and a second output, the first dual- clock pulse generator producing a pair of square wave pulses 90 degrees out of phase in response to an input pulse to the first dual-clock pulse generator, data input of the first dual-clock pulse generator coupled to the output of the run controller, the reset input of the first dual-clock pulse generator coupled to the output of the stop controller, and a second dual-clock pulse generator having a data input, a reset input, a select output, a clock output, a penod input, a first output and a second output, the second dual- clock pulse generator producing a pair of square wave pulses 90 degrees out of phase in response to an input pulse to the second dual-clock pulse generator, the data input of the second dual-clock pulse generator coupled to the output of the first dual-clock pulse generator, and the second output of the second dual-clock pulse generator coupled to an input of the run controller 12 The tunable digital oscillator of claim 1 1 , wherem the start controller has additional inputs, the additional inputs coupled to receive the first output of the second dual-clock pulse generator and the select signal of the first dual-clock pulse generator, the start controller using the select signal of the first dual-clock pulse generator to determine whether the start signal or the second clock signal will be used to generate the clock pulse signal 13 The tunable digital oscillator of claim 1 1, wherem the stop controller has additional inputs, one of said additional inputs coupled to receive the first output signal from the first dual-clock pulse generator, a second of said additional inputs coupled to receive the clock output signal of the first dual-clock pulse generator, the stop controller using the first output signal and the clock output signal to time the generation of the clock stop signal. 14. The tunable digital oscillator of claim 1 1 , wherein the first and second dual-clock pulse generator each comprise: a multiplexer having a first data input, a second data input, a control input, and output, the multiplexer selecting one from the first data input and the second data input as a signal to provide on the output, the first data input coupled to the output of the run controller to receive a clock pulse signal; and a D flip-flop having a data input, a clock input, an output, and an inverted output, the data input of the D flip-flop coupled to the inverted output of the D flip-flop, the clock input of the D flip-flop coupled to the output of the multiplexer; a first delay network having a data input, a period input, and an output, for delaying a signal applied at the data input by a selected period in response to a signal applied at the period input, the data input of the first delay network coupled to the output of the D flip-flop, and the output of the first delay network coupled to the control input of the multiplexer; and a second delay network having an data input, a period input, and an output, for delaying a signal applied at the data input by a selected period in response to a signal applied at the period input, the data input of the second delay network coupled to the output of the first delay network, and the output of the second delay network coupled to the second data input of the multiplexer. 15. The tunable digital oscillator of claim 14, wherein the first and second delay networks further comprise: a plurality of buffers coupled in series, the first of said plurality of buffers providing the input to the delay network; and a plurality of multiplexers, each of the multiplexer having a first and a second data inputs, the first data input of each of the plurality of multiplexers coupled to an output of a last buffer in the plurality of buffers, the plurality of multiplexers having the second data input coupled in a cascaded manner to the output of a previous multiplexer from the plurality of multiplexers, a first of the plurality of multiplexer having both the first and second data input coupled to the output of the last buffer in the plurality of buffers. 16 A vaπable pulse generator comprising a first dual-clock pulse generator having a data input, a select output, a clock output, a peπod input, a first output and a second output, the first dual-clock pulse generator producing a pair of square wave pulses 90 degrees out of phase in response to an input pulse to the first dual-clock pulse generator, the data input of the first dual-clock pulse generator coupled to receive an input start pulse, and a second dual-clock pulse generator having a data input, a select output, a clock output, a peπod input, a first output and a second output, the second dual-clock pulse generator producing a pair of square wave pulses 90 degrees out of phase in response to an input pulse to the second dual-clock pulse generator, the data input of the second dual-clock pulse generator coupled to the output of the first dual-clock pulse generator 17 The vaπable pulse generator of claim 16, wherein the first and second dual-clock pulse generator each compnse a multiplexer having a first data input, a second data input, a control input, and output, the multiplexer selecting one from the first data input and the second data input as a signal to provide on the output; and a D flip-flop having a data input, a clock input, an output, and an inverted output, the data input of the D flip-flop coupled to the inverted output of the D flip-flop, the clock input of the D flip-flop coupled to the output of the multiplexer, a first delay network having a data input, a peπod input, and an output, for delaying a signal applied at the data input by a selected penod in response to a signal applied at the peπod input, the data input of the first delay network coupled to the output of the D flip-flop, and the output of the first delay network coupled to the control input of the multiplexer; and a second delay network havmg a data input, a peπod input, and an output, for delaying a signal applied at the data input by a selected penod m response to a signal applied at the peπod input, the data input of the second delay network coupled to the output of the first delay network, and the output of the second delay network coupled to the second data input of the multiplexer 18. The tunable digital oscillator of claim 17, wherein the first and second delay networks each further compπse: a plurality of buffers coupled in series, the first of said plurality of buffers providing the input to the delay network; and a plurality of multiplexers, each of the multiplexer having a first and a second data inputs, the first data input of each of the plurality of multiplexers coupled to an output of a last buffer in the plurality of buffers, the plurality of multiplexers having the second data input coupled in a cascaded manner to the output of a previous multiplexer from the plurality of multiplexers, a first of the plurality of multiplexer having both the first and second data input coupled to the output of the last buffer in the plurality of buffers.

Inventors: FURMAN ELLIOT, FURMAN, ELLIOT
Applicants: S3 INC, S3 INCORPORATED
Application year: 1999
Main classification: H03K5
IPC codes: H03K3, H03K5