Abstract:
An embodiment of the invention discloses phase shifting a second clock signal by a phase increment with respect to a first clock signal, where the first clock signal and the second clock signal have the same periods. The first clock signal is sampled with the second clock signal, and the output of the sample indicates whether the sample of the first clock signal is at a logic one state or a logic zero state. A count of logic one samples is incremented if the sample of the first clock signal is at a logic one state. The process of phase shifting the second clock signal and sampling the first clock signal is repetitively performed to a maximum number of samples.

Description:
BACKGROUND 
       [0001]    1. Field 
         [0002]    Example aspects described herein relate to determining a clock duty cycle, and more specifically for determining the duty cycle of a clock in a circuit using a configurable phase locked loop. 
         [0003]    2. Description of Related Art 
         [0004]    Duty cycle of a clock can be important in various circuits. For example, if digital logic is clocked on rising and falling edges of a clock, then it may be necessary to have a substantially 50-50 duty cycle. A very skewed duty cycle may not provide enough time for digital calculations before the next edge of the clock. 
         [0005]    A common approach to measuring duty cycle of a clock is to either measure the clock with an oscilloscope or with an advanced frequency counter. Both these approaches require relatively expensive test equipment and a fair amount of labor to find the correct pin, attach or hold the probe to the pin, and analyze the data to determine if it is within limits. 
       SUMMARY 
       [0006]    Existing limitations associated with the foregoing, and other limitations, can be overcome by procedures, apparatuses, computer programs, and networks, according to example aspects described herein. 
         [0007]    In one example embodiment herein, a procedure is provided for phase shifting a second clock signal by a phase increment with respect to a first clock signal, where the first clock signal and the second clock signal have the same periods. The first clock signal is sampled with the second clock signal, and the output of the sample indicates whether the sample of the first clock signal is at a logic one state or a logic zero state. A count of logic one samples is incremented if the sample of the first clock signal is at a logic one state. The process of phase shifting the second clock signal and sampling the first clock signal is repetitively performed to a maximum number of samples. 
         [0008]    Another example embodiment discloses a phase shifting circuitry configured to phase shift a second clock signal by a phase increment with respect to a first clock signal, where the first clock signal and the second clock signal have the same periods. A sampling circuitry may be configured to sample the first clock signal with the second clock signal, where the output of the sampling circuitry indicates whether the sample of the second clock signal is at a logic one state or a logic zero state. A counting circuitry may also be configured to increment a count of logic one samples if the sample of the first clock signal is at a logic one state. The process of phase shifting and sampling may be performed repetitively until a condition is detected to stop the process. The counting of logic one samples by the counting circuitry may be performed while the process of phase shifting and sampling takes place. The phase shifting circuitry, the sampling circuitry, and/or the counting circuitry may be controlled by a control circuitry. 
         [0009]    Another example embodiment discloses adjusting a phase of a second clock signal by a phase increment with respect to a first clock signal, where the first clock signal and the second clock signal have the same periods. The first clock signal may be sampled with the second clock signal, where the second clock signal is derived from the first clock signal and has the same period as the first clock signal. A determination may be made whether a sample of the first clock signal is a logic one or a logic zero, and a counter may update a count of logic one samples if the sample is at a logic one state. There may also be a determination of whether the phase of the second clock signal has been adjusted a maximum number of times. The process of adjusting the phase of the second clock signal and sampling the first clock signal may repeat if the phase of the second clock signal has not been adjusted a maximum number of times. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0010]    The teachings claimed and/or described herein are further described in terms of exemplary embodiments. These exemplary embodiments are described in detail with reference to the drawings. These embodiments are non-limiting exemplary embodiments, in which like reference numerals represent similar structures throughout the several views of the drawings, and wherein: 
           [0011]      FIG. 1  is a block diagram of a system using a duty cycle calculator in accordance with an embodiment of the invention. 
           [0012]      FIG. 2  is a block diagram illustrating a duty cycle calculator in accordance with an embodiment of the invention. 
           [0013]      FIG. 3  is an exemplary timing diagram illustrating phase shift of phase-shifted clock GCLK in accordance with an embodiment of the invention. 
           [0014]      FIG. 4  is an exemplary state diagram for a duty cycle calculator in accordance with an embodiment of the invention. 
           [0015]      FIG. 5  is an exemplary flow diagram for an embodiment of the invention for calculating duty cycle of a clock signal. 
       
    
    
     DETAILED DESCRIPTION 
       [0016]    According to an example aspect herein, a procedure, a system, an apparatus, and/or a computer program may be provided that illustrate a duty cycle calculator. 
         [0017]    An example embodiment of a duty cycle calculator will be described with respect to  FIGS. 1 to 3 . Referring to  FIG. 1 , there is shown a block diagram of a system using a duty cycle calculator in accordance with an embodiment of the invention. In  FIG. 1 , there are shown a controller  110 , a memory block  120 , a duty cycle controller  130 , and control logic block  140 . 
         [0018]    The controller  110  may comprise, for example, a processor and internal memory. The controller  110  may alternately comprise, for example, a processor used in conjunction with the memory block  120 . The memory block  120  may comprise, for example, volatile memory for usage during operation of the controller  110  and non-volatile memory for storing software and data that may be used by the controller  110  to execute various commands. The duty cycle calculator  130  may comprise logic that may be used to calculate duty cycle for a clock signal. The control logic block  140  may comprise logic that may be used to generate various control and/or status signals used by the controller  110 , the memory block  120 , and/or the duty cycle calculator  130 . 
         [0019]    While  FIG. 1  has been described as discrete blocks performing different functions, the invention need not be so limited. For example, the control logic  140  may be part of the duty cycle calculator  130 . Additionally, the controller  110  may be configured to generate various control and or status signals for use by the memory block  120  and/or the duty cycle calculator  130 . 
         [0020]    Referring to  FIG. 2 , there is shown a block diagram illustrating a duty cycle calculator in accordance with an embodiment of the invention. There is shown in  FIG. 2  the duty cycle calculator  130 . The duty cycle calculator  130  comprises a phase locked loop (PLL)  210 , a register  212 , an incrementer  214 , and a state machine  216 . 
         [0021]    In operation, an input clock signal CLK may be communicated to the PLL  210  and the register  212 . The input clock signal CLK may be, for example, a clock signal used by the controller  110 , the memory  120 , and the control logic  140 . A phase-adjusted clock signal GCLK may be derived, for example, from the input clock signal CLK, where the phase-adjusted clock signal GCLK and the input clock signal CLK have the same period. The state machine  216 , upon receiving a start signal START, may generate a phase shift signal INC_PHASE. The start signal START may be generated by, for example, the controller  110  or the control logic  140 . The phase shift signal INC_PHASE may be used by the PLL  210  to increase a phase of the phase-adjusted clock signal GCLK by a pre-determined phase increment. The PLL  210  may then output a phase-adjusted clock signal GCLK with the same period as the input clock signal CLK. The difference between the input clock signal CLK and the phase-adjusted clock signal GCLK may generally be the phase. 
         [0022]    The PLL  210  may be configured to assert a phase locked signal LOCK upon a successful lock of the phase-adjusted clock signal GCLK to the input clock signal CLK. The phase locked signal LOCK, which indicates the phase is now stable, can then be used by the state machine  216  to generate a register enable signal REG_EN. The register enable signal REG_EN may enable the register  212  to generate an increment signal INC when a rising edge of the phase-adjusted clock signal GCLK occurs during a high phase of the input clock signal CLK. The high phase of a clock may be defined as the period of time when the clock is at a high voltage level, which may be referred to as a logic one state in an active high logic design. Similarly, a low voltage level may be referred to as a logic zero state in an active high logic design. Alternatively, active low logic design may refer to a low voltage level as a logic one state and a high voltage level as a logic zero state. 
         [0023]    The increment signal INC is communicated to the incrementer  214 . When the incrementer  214 , which may be, for example, an up-counter, receives the increment signal INC while the state machine  216  asserts the increment enable signal INC_EN, the incrementer  214  will increment a count. The count may be output as output count VALUE. The state machine  216  will iterate until the PLL  210  has cycled through a period of the input clock signal CLK an incremental phase change at a time. Since the phase shifts are a specific number of degrees per shift, it is known how many phase shifts equal one clock period, or 360 degrees. Accordingly, the state machine  214  knows how many phase shift signal INC_PHASE needs to be generated. The state machine  216  will then output a count finished signal DONE, which may indicate to the controller  110  to read the output count VALUE. Note that the incrementer  214  needs to be reset to zero before the duty cycle calculator  130  can perform another duty cycle calculation. 
         [0024]    The controller  110  may then be able to calculate the duty cycle of the input clock signal CLK. For example, if there are 200 phase increments in a clock period, and the incrementer  214  has an output count VALUE of 108, then the duty cycle may be calculated as 54%. The equation can be described as the output count VALUE divided by the number of phase increments in a clock period times 100%. 
         [0025]    While one specific embodiment of the invention has been described with respect to  FIG. 2 , the invention need not be so limited. For example, use of the phase shift signal INC_PHASE may be design dependent. The phase shift signal INC_PHASE may indicate to the PLL  210  that phase should be adjusted by a constant amount. There may also need to be a reset signal (not shown) to indicate to the PLL  210  to reset the accumulated phase to zero. The phase shift signal INC_PHASE may also communicate to the PLL  210  the absolute amount of phase to be shifted. As can be seen, various designs may be used to control the phase shift of the phase-adjusted clock signal GCLK. 
         [0026]    Similarly, a specific implementation of an embodiment of the invention may be design dependent. For example, the PLL  210  may be replaced by a digital delay locked loop (DLL)  210 . Also, as an example, the duty cycle calculator  130  may be a part of the control logic  140 . 
         [0027]      FIG. 3  is an exemplary timing diagram illustrating phase shift of phase-shifted clock GCLK in accordance with an embodiment of the invention. Referring to  FIG. 3 , there is shown the input clock signal CLK  300  and various phases of the phase-adjusted clock signal GCLK  302 - 308 . 
         [0028]    After reception of the start signal START, the state machine  216  may generate the phase shift signal INC_PHASE. The PLL  210  may then lock to generate the phase-adjusted clock signal GCLK  302  that has a phase difference of one phase increment with respect to the input clock signal CLK. The phase difference may be seen between the rising edge at time T 0  of the input clock signal CLK  300  and the rising edge at time T 1  of the phase-adjusted clock signal GCLK  302 . 
         [0029]    Upon reception of a second phase shift signal INC_PHASE, the PLL  210  may lock to generate the phase-adjusted clock signal GCLK  304  that has a phase difference of two phase increments with respect to the input clock signal CLK. The phase difference may be seen between the rising edge at time T 0  of the input clock signal CLK  300  and the rising edge at time T 2  of the phase-adjusted clock signal GCLK  304 . Similarly, the phase-adjusted clock signal GCLKs  306  and  308  show further phase adjustments. 
         [0030]    Note that the last phase-adjusted clock signal GCLK  308  may not be able to sample the input clock signal CLK signal accurately depending on the set-up and hold times available with respect to the rising edge at time T 4 . Generally, the number of phase increments may be chosen so that this uncertainty is within an acceptable error range. The method of error compensation used, if any, is design dependent. 
         [0031]      FIG. 4  is an exemplary state diagram for a duty cycle calculator in accordance with an embodiment of the invention. Referring to  FIG. 4 , an initial Idle state  400  may have a variable Count set to MaxCount, where MaxCount is the number of phase increments in a clock period. The increment enable signal INC_EN, the register enable signal REG_EN, the phase shift signal INC_PHASE, and the count finished signal DONE are all be cleared to ‘0’ in the Idle state  400 . Signal names used for state transition are shown bolded above a transition line. 
         [0032]    During the Idle state  400 , the start signal START may be received from, for example, the controller  110 . When the PLL  210  has appropriately phase locked the phase-adjusted clock signal GCLK to the input clock signal CLK, the phase locked signal LOCK may be asserted. The reception of the start signal START and the phase locked signal LOCK may allow transition to the Sample  402 . The Sample state  402  may then transition to a Count state  404 , and the register enable signal REG_EN may be asserted to allow the register  212  to sample the input clock signal CLK with the phase-adjusted clock signal GCLK. 
         [0033]    During the Count state  404 , the variable Count is checked to see if it is equal to zero. If the variable Count is equal to zero, then there is a transition to a Finish state  408 . During the transition, the increment enable signal INC_EN is set to a ‘1’, the register enable signal REG_EN is cleared to ‘0’, the phase shift signal INC_PHASE is set to a ‘1’, and the count finished signal DONE is set to a ‘1’. The enable signal INC_EN and the phase shift signal INC_PHASE are cleared to ‘0’ in the Finish state  408 . 
         [0034]    If the variable count is not equal to zero, then there is a transition to a Step state  406 . In the transition, the increment enable signal INC_EN is set to a ‘1’, the register enable signal REG_EN is cleared to ‘0’, the phase shift signal INC_PHASE is set to a ‘1’, and the variable Count is decremented by one. The enable signal INC_EN and the phase shift signal INC_PHASE are cleared to ‘0’ in the Step state  406 . 
         [0035]    From the step state  406 , the next transition may be to the Sample state  402  if the phase locked signal LOCK is asserted. From the Finish state  408 , the next transition is to the Idle state  400  when the start signal START is deasserted. 
         [0036]      FIG. 5  is an exemplary flow diagram for an embodiment of the invention for calculating duty cycle of a clock signal. Block  500  indicates that the duty cycle calculator  130  may be initialized to be in a state to start a new duty cycle calculation. This may happen, for example, due to power on reset, a command from the controller  110 , or completion of a duty cycle calculation. Starting duty cycle calculation may be initiated by the start signal START from, for example, the controller  110 . 
         [0037]    Block  502  indicates that the phase of the phase-shifted clock signal GCLK may be shifted by one phase increment by the PLL  210  with respect to the previous phase difference between the phase-shifted clock signal GCLK and the input clock signal CLK. If this is the start of a new duty cycle, then the previous phase difference with the input clock signal CLK is zero. 
         [0038]    Block  504  indicates that when the PLL  210  has locked the phase-shifted clock signal GCLK to the input clock signal CLK, the register  212  may sample the input clock signal CLK with the phase-shifted clock signal GCLK. If, as indicated in block  506 , the sample is at a high phase of the input clock signal CLK, a counter is incremented as shown in block  508 . Block  510  indicates that the counter is checked to see if the phase-shifted clock signal GCLK has been shifted by a maximum number of phase increments. If so, then the duty cycle calculator has finished sampling the input clock signal CLK with the phase-shifted clock signal GCLK and outputs the count finished signal DONE. 
         [0039]    If in block  510  it is determined that the phase-shifted clock signal GCLK has not been shifted by a maximum number of phase increments, then further sampling of the input clock signal CLK is needed. Accordingly, the phase-shifted clock signal GCLK is shifted by one phase increment by the PLL  210  as indicated by block  502 . 
         [0040]    If, as indicated in block  506 , the sample is not at a high phase of the input clock signal CLK, then the counter is not incremented and, as indicated in block  510 , a check is done to see if the phase-shifted clock signal GCLK has been shifted by a maximum number of phase increments. 
         [0041]    In the foregoing description, example aspects of the invention are described with reference to specific example embodiments thereof. The specification and drawings are accordingly to be regarded in an illustrative rather than in a restrictive sense. It will, however, be evident that various modifications and changes may be made thereto, in a computer program product or software, hardware, or any combination thereof, without departing from the broader spirit and scope of the present invention. 
         [0042]    Software embodiments of example aspects described herein may be provided as a computer program product, or software, that may include an article of manufacture on a machine accessible or machine readable medium (memory) having instructions. The instructions on the machine accessible or machine readable medium may be used to program a computer system or other electronic device. The machine-readable medium may include, but is not limited to, floppy diskettes, optical disks, CD-ROMs, and magneto-optical disks or other types of media/machine-readable medium suitable for storing or transmitting electronic instructions. The techniques described herein are not limited to any particular software configuration. They may find applicability in any computing or processing environment. The terms “machine accessible medium”, “machine readable medium”, or “memory” used herein shall include any medium that is capable of storing, encoding, or transmitting a sequence of instructions for execution by the machine and that cause the machine to perform any one of the methods described herein. Furthermore, it is common in the art to speak of software, in one form or another (e.g., program, procedure, process, application, module, unit, logic, and so on) as taking an action or causing a result. Such expressions are merely a shorthand way of stating that the execution of the software by a processing system causes the processor to perform an action to produce a result. In other embodiments, functions performed by software can instead be performed by hardcoded modules, and thus the invention is not limited only for use with stored software programs. Indeed, the numbered parts of the above-identified procedures represented in the drawings may be representative of operations performed by one or more respective modules, wherein each module may include software, hardware, or a combination thereof. 
         [0043]    In addition, it should be understood that the figures illustrated in the attachments, which highlight the functionality and advantages of the present invention, are presented for example purposes only. The architecture of the example aspect of the present invention is sufficiently flexible and configurable, such that it may be utilized (and navigated) in ways other than that shown in the accompanying figures. 
         [0044]    In addition, it is not necessary that the procedures performed by the analysts be done with a computer, and instead they can be performed by a human operator. 
         [0045]    Although example aspects of this invention have been described in certain specific embodiments, many additional modifications and variations would be apparent to those skilled in the art. It is therefore to be understood that this invention may be practiced otherwise than as specifically described. Thus, the present example embodiments, again, should be considered in all respects as illustrative and not restrictive.