The present invention may be better understood, and its numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings.
The following is intended to provide a detailed description of an example of the invention and should not be taken to be limiting of the invention itself. Rather, any number of variations may fall within the scope of the invention, which is defined in the claims following the description.
Phase lock loop 105 generates a first clock, C0110, which phase lock loop 105 provides to glitchless clock selection logic 140 and frequency divider 120. Frequency divider 120 divides C0110 down in frequency to create C1130. For example, C0110 may run at 100 MHz, and C1130 may run at 50 MHz. C1130, along with C0110, feed into glitchless clock selection logic 140.
Glitchless clock selection logic 140 receives a clock selection signal (clock select 160) from clock control 150 that instructs glitchless clock selection logic 140 as to which clock signal to select. In one embodiment, clock control 150 may reside on a microprocessor included on device 100. As those skilled in the art can appreciate, glitchless clock selection logic 140 is capable of selecting between more than two clocks as shown in
Glitchless clock selection logic 140 includes a phase aligner that aligns C1130's clock edges with C0110's clock edges. Once aligned, glitchless clock selection logic 140 uses an edge detector to detect the simultaneous occurrence of C0110's rising clock edge and C1130's skewed rising clock edge. In one embodiment, the edge detector may detect the simultaneous occurrence of the falling clock edges of C0110 and C1130 (see
Phase lock loop 105 generates C0110, which operates at a first clock frequency. C0110 feeds into frequency divider 120, which divides the clock down to a frequency divided first clock signal (C1130), which operates at a different clock frequency. Due to frequency divider 120's properties, C0110 and C1130 may not be phase with each other. Phase aligner 200 compensates for this by shifting the phase of C1130, which results in a second clock signal (C1 skewed 210), such that C0 skewed 210 become in phase with C0110. Meaning, C0110 and C1 skewed 210 are aligned in such a way that their rising or falling edges occur nearly at the same time (see
Edge detector 220 receives C0110 and C1 skewed 210, and pulses clock switch 230 momentarily when the rising edges of C0110 and C1 skewed 210 are aligned. As one skilled in the art can appreciate, edge detector 220 may be designed to pulse clock switch 230 when the falling edge of C0110 and C1 skewed 210 are aligned (see
Clock switch 230 connects to latch 240's clock input. As such, when clock switch 230 pulses, latch 240 provides the value of its input (D), which is clock select 160, to its output (multiplexer clock select 250). As a result, when clock select 160 is high, latch 240 waits until clock switch 230 pulses before activating multiplexer clock select 250.
Multiplexer 260 uses multiplexer clock select 250 to select between clocks C0110 or C1 skewed 210. In one embodiment, when multiplexer clock select 250 is low, multiplexer 260 passes C0110 onto clock output 170, which feeds into circuitry 180. Continuing with this embodiment, when multiplexer clock select 250 is high, multiplexer 260 passes C1 skewed 210 onto clock output 170. Multiplexer 260 also provides clock selected 270 to the logic that initiated the clock switch, thus indicating that the clock switch has occurred.
C0110 feeds into inverter 410, whose output (inverted first clock signal) feeds into delay 415 and inverter 425. Delay 415 delays inverter 410's output in order for the output of inverter 425 (un-inverted first clock signal) and C0 invert delay 420 (delayed inverted first clock signal) to both be high for a short duration of time. When this occurs, gate 430's output (C0 NAND out 435) is low. The beginning of C0 NAND out 435 becoming low indicates the rising clock edge of C0110 (see
Likewise, C1 skewed 210 feeds into inverter 440, whose output (inverted second clock signal) feeds into delay 445 and inverter 455. Again, delay 445 delays inverter 440's output in order for the output of inverter 455 (un-inverted second clock signal) and C1 skewed invert delay 450 (delayed inverted second clock signal) to both be high for a short duration of time. When this occurs, gate 460's output (C1 NAND out 465) is low. The beginning of C1 NAND out 465 becoming low indicates the rising clock edge of C1 skewed 210 (see
When both C0 NAND out 435 and C1 NAND out 465 become low, gate 470's output is high (clock switch 230), signifying that C0110's and C1 skewed 210's rising edges are aligned. As such, clock switch 230 pulses high and clocks latch 240, which clocks in a new clock select value (see
As can be seen, when C0110 and C1 invert delay 420 are both high, C0 NAND out 435 is low (generated by gate 430 shown in
Likewise, when C1 skewed 210 and C1 skewed invert delay 450 are both high, C1 NAND out 465 is low (generated by gate 460 shown in
When both C0 NAND out 435 and C1 NAND out 465 are low, clock switch 230 pulses high (generated by gate 470 shown in
Clock switch 230 pulses high when C0110's rising edge and C1 skewed 210's rising edge are aligned (see
C0110 feeds into inverter 710, whose output (inverted first clock signal) feeds into delay 715 and gate 730. Delay 715 delays inverter 710's output (delayed inverted first clock signal) in order for inverter 710's output and inverter 720's output (un-inverted delayed first clock signal) to both be high for a short duration of time. When this occurs, gate 730's output is low. Since inverter 710 inverts C0110, the falling edge of gate 730's output corresponds to the falling edge of C0110.
Likewise, C1 skewed 210 feeds into inverter 740, whose output (inverted second clock signal) feeds into delay 750 and gate 770. Delay 750 delays inverter 740's output (delayed inverted second clock signal) in order for inverter 740's output and inverter 760's output (un-inverted delayed second clock signal) to both be high for a short duration of time. When this occurs, gate 770's output is low. Since inverter 740 inverts C1 skewed 210, the falling edge of gate 770's output corresponds to the falling edge of C1 skewed 210.
When the outputs of both gate 730 and gate 770 become low, gate 780's output is high (clock switch 230), signifying that C0110's and C1 skewed 210's falling edges are aligned. As such, clock switch 230 pulses high and clocks latch 240, which clocks in a new clock select value (see
PCI bus 814 provides an interface for a variety of devices that are shared by host processor(s) 800 and Service Processor 816 including, for example, flash memory 818. PCI-to-ISA bridge 835 provides bus control to handle transfers between PCI bus 814 and ISA bus 840, universal serial bus (USB) functionality 845, power management functionality 855, and can include other functional elements not shown, such as a real-time clock (RTC), DMA control, interrupt support, and system management bus support. Nonvolatile RAM 820 is attached to ISA Bus 840. Service Processor 816 includes JTAG and I2C busses 822 for communication with processor(s) 800 during initialization steps. JTAG/I2C busses 822 are also coupled to L2 cache 804, Host-to-PCI bridge 806, and main memory 808 providing a communications path between the processor, the Service Processor, the L2 cache, the Host-to-PCI bridge, and the main memory. Service Processor 816 also has access to system power resources for powering down information handling device 801.
Peripheral devices and input/output (I/O) devices can be attached to various interfaces (e.g., parallel interface 862, serial interface 864, keyboard interface 868, and mouse interface 870 coupled to ISA bus 840. Alternatively, many I/O devices can be accommodated by a super I/O controller (not shown) attached to ISA bus 840.
In order to attach computer system 801 to another computer system to copy files over a network, LAN card 830 is coupled to PCI bus 810. Similarly, to connect computer system 801 to an ISP to connect to the Internet using a telephone line connection, modem 885 is connected to serial port 864 and PCI-to-ISA Bridge 835.
While
While particular embodiments of the present invention have been shown and described, it will be obvious to those skilled in the art that, based upon the teachings herein, that changes and modifications may be made without departing from this invention and its broader aspects. Therefore, the appended claims are to encompass within their scope all such changes and modifications as are within the true spirit and scope of this invention. Furthermore, it is to be understood that the invention is solely defined by the appended claims. It will be understood by those with skill in the art that if a specific number of an introduced claim element is intended, such intent will be explicitly recited in the claim, and in the absence of such recitation no such limitation is present. For non-limiting example, as an aid to understanding, the following appended claims contain usage of the introductory phrases “at least one” and “one or more” to introduce claim elements. However, the use of such phrases should not be construed to imply that the introduction of a claim element by the indefinite articles “a” or “an” limits any particular claim containing such introduced claim element to inventions containing only one such element, even when the same claim includes the introductory phrases “one or more” or “at least one” and indefinite articles such as “a” or “an”; the same holds true for the use in the claims of definite articles.