There are various circuits that can provide timing information, counting information, output signal modulation and/or input capture results. However, these circuits are typically designed for specific applications, such as motor control. Thus, for each new application, a unique circuit must be designed to perform the required operations for that application, which adds significant cost to the end product.
Therefore, there is a need for a circuit that can be used in different applications, and thus, eliminating the need to design a new circuit for each of the different applications.
A counter/timer circuit and method of generating timed output signals using the counter/timer circuit, uses multiple counters that are configurable to operate as one or more counters. The counters are controlled by control signals from a control logic circuitry of the counter/timer circuit, where at least some of the control signals are dependent on event signals generated by an event generation module of the counter/timer circuit. The generated event signals are based on at least one of: an input signal, an output signal, and a counter match, qualified by a state value associated with the counters.
A counter/timer circuit in accordance with an embodiment comprises a counter unit, a state logic module, an event generation module and control logic circuitry. The counter unit has multiple stages that are configurable to operate as one or more counters. The state logic module is configured to maintain a state value for each counter. The state value is used to indicate the current state of the application of that counter. The event generation module is configured to generate event signals based on at least one of: an input signal, an output signal, and a counter match, qualified by one of the state values. The control logic circuitry is connected to the counter unit to provide control signals for the counters of the counter unit. The control logic circuitry is also connected to the event generation module to receive the event signals so that at least some of the control signals are dependent on at least some of the event signals.
A method of generating timed output signals, using a counter/timer circuit in accordance with an embodiment of the invention, comprises receiving input signals at the counter/timer circuit, maintaining a state value for each counter of the counter/timer circuit, the state value being used to indicate the current state of the application of that counter, generating event signals based on at least one of: an input signal, an output signal of the counter/timer circuit, and a counter match, qualified by one of the state values associated with the counters, providing control signals to the counters of the counter/timer circuit, wherein at least some of the control signals are dependent on at least some of the event signals, and generating count values at the counters using the control signals, the count values representing a unified count value or separate count values depending on the configuration of the counter/timer circuit.
Other aspects and advantages of the present invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrated by way of example of the principles of the invention.
It will be readily understood that the components of the embodiments as generally described herein and illustrated in the appended figures could be arranged and designed in a wide variety of different configurations. Thus, the following more detailed description of various embodiments, as represented in the figures, is not intended to limit the scope of the present disclosure, but is merely representative of various embodiments. While the various aspects of the embodiments are presented in drawings, the drawings are not necessarily drawn to scale unless specifically indicated.
The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by this detailed description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.
Reference throughout this specification to features, advantages, or similar language does not imply that all of the features and advantages that may be realized with the present invention should be or are in any single embodiment. Rather, language referring to the features and advantages is understood to mean that a specific feature, advantage, or characteristic described in connection with an embodiment is included in at least one embodiment. Thus, discussions of the features and advantages, and similar language, throughout this specification may, but do not necessarily, refer to the same embodiment.
Furthermore, the described features, advantages, and characteristics of the invention may be combined in any suitable manner in one or more embodiments. One skilled in the relevant art will recognize, in light of the description herein, that the invention can be practiced without one or more of the specific features or advantages of a particular embodiment. In other instances, additional features and advantages may be recognized in certain embodiments that may not be present in all embodiments of the invention.
Reference throughout this specification to “one embodiment,” “an embodiment,” or similar language means that a particular feature, structure, or characteristic described in connection with the indicated embodiment is included in at least one embodiment. Thus, the phrases “in one embodiment,” “in an embodiment,” and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment.
With reference to
As shown in
Turning now to
The clock processing module 202 of the universal counter/timer circuit 100 includes two inputs to receive an external clock signal “HCLK” (e.g., the bus clock used by the processor 102) and a multiplicity of input signals “INPUTS” and outputs to output an internal clock signal “UTCLK” for various components of the universal counter/timer circuit, a multiplicity of synchronized input signals “SYNC_INPUT” for the event generation module 212 and a prescaler clock signal “PRECLK” for the prescalers. In some embodiments, the UTCLK and PRECLK clock signals differ from the external HCLK clock signal with respect to frequency. However, in other embodiments, one or both of the UTCLK and PRECLK clock signals may be equivalent to the external HCLK clock signal with respect to frequency.
The prescaler unit 204 of the universal counter/timer circuit 100 operates to produce one or more clock signals for the counter unit 208 using the PRECLK clock signal from the clock processing module 202. The prescaler unit includes one or more prescalers, similar to the counter unit 208, which includes one or more counters, as described below in more detail below with respect to
The control logic circuitry 206 of the universal counter/timer circuit 100 operates to produce control signals to control each counter of the counter unit 208. The control signals determine when each counter is incremented, cleared, and loaded. The control logic circuitry 206 includes an input to receive event signals generated by the event generation module 212. The control logic circuitry is configured to provide appropriate control signals to the counter unit in response to different event signals, i.e., when certain events occur.
The counter unit 208 of the universal counter/timer circuit 100 operates to produce one or more running count values. As mentioned above, the counter unit includes one or more counters, depending on the configuration of the universal counter/timer circuit. The counter unit is described herein as being configurable to function as a single 32-bit counter or two 16-bit counters. However, in other embodiments, the counter unit may also be configurable to function as four 8-bit counters or one 16-bit and two 8-bit counters. In general, the counter unit may be configurable to function as M N-bit counters, where M and N are positive integers. Each counter of the counter unit is connected to one of the prescalers of the prescaler unit 204 to receive the clock signal from that prescaler. Each counter is also connected to the control logic circuitry 206 to receive the control signals from the control logic circuitry. Thus, each counter maintains a count value using the clock signal from the connected prescaler and using the control signals from the control logic circuitry.
The clock processing module 202, the prescaler unit 204, the control logic circuitry 206 and the counter unit 208 in accordance with a particular embodiment are shown
As illustrated in
The configuration register 306 includes different bits and fields that configure the overall operation of the universal counter/timer circuit 100. The configuration register configures the universal counter/timer circuit to operate as two separate independent 16-bit counters or as a single unified 32-bit counter. The configuration register further configures the clock processing module 202 to produce the UTCLK, PRECLK and SYNC_INPUT signals, which may depend on the HCLK clock signal and/or the INPUT signal. In a particular implementation, the configuration register contains UNIFY, CKMODE, CKSEL and INSYNC bits and fields, as described in the table below.
The limit registers 308A and 308B are used to store limit mask values for the counters 304A and 304B, selecting which events identify an upper limit for each counter value. The limit mask stored in the limit register 308A is referred to herein as a LimitH mask. The limit mask stored in the limit register 308B is referred to herein as a LimitL mask. Only the LimitL mask stored in the limit register 308B is used when the counters are operating as a unified counter, e.g., when the UNIFY signal is a “1.” However, the LimitH and LimitL values stored in both of the limit registers are used when the counters are operating as separate counters, e.g., when the UNIFY signal is a “0.” Both of the limit registers can be accessed by a single 32-bit read or write operation, or the limit registers they can be read or written individually.
The control registers 310A and 310B are used to store various control values for the counters 304A and 304B. The control values stored in the control register 310A are referred to herein as ControlH values or signals, which include stop and halt signals, from which an EnableH signal is derived, which enables counter 304A to count. The control values stored in the control register 310B are referred to herein as ControlL values or signals, which include stop and halt signals, from which an EnableL signal is derived, which enables the counter 304B to count. Only the ControlL and EnableL values stored in the control register 310B are used when the counters are operating as a unified counter, e.g., when the UNIFY signal is a “1.” However, the ControlH, ControlL, EnableH and EnableL values stored in both of the control registers are used when the counters are operating as separate counters, e.g., when the UNIFY signal is a “0.” Both of the control registers can be accessed by a single 32-bit read or write operation, or the limit registers they can be read or written individually.
In the embodiment illustrated in
The select circuit 318 includes inputs from the multiplexer 312, comprising an event mask for the counter limit, and from the multiplexer 314, comprising the control signals that apply to the H counter. The select circuit 318 further includes inputs to receive event signals “EVENTS” from the event generation module 212. The outputs of the select circuit 318 control the counter 304A. The select circuit 320 also includes inputs to receive the EVENT signals. The select circuit 320 further includes inputs to receive the ControlL signals and LimitL event mask for the counter 304B. The outputs of the select circuit 320 control the counter 304B.
Each of the counters 304A and 304B includes inputs to receive the clock signal from the corresponding prescaler 302A and 302B and the control signals from the select circuits 318 and 320, plus an enable input. For the counter 304B, the enable is simply the EnableL signal derived from the control register 310B, while for the counter 304A, the enable may be the EnableL or EnableH signal as selected by the multiplexer 316. Thus, the counters 304A and 304B generate the CounterH and CounterL values using these input signals. When the counters 304A and 304B are operating as two separate independent counters, the CounterL and CounterH values are independent values. When the counters are operating as a unified counter, the CounterL value represents the least significant 16 bits and the CounterH value represents the most significant 16 bits of the unified CounterU value. Thus, when operating as a unified counter, the counter 304B provides a carry output to the counter 304A so that the most significant 16 bits of the unified CounterU signal are incremented when the least significant 16 bits switch from all ones to all zeroes.
The counter 304A includes four inputs to receive the clock signal from the prescaler 302A, the output signal from the select circuit 318, the output signal from the multiplexer 316 and the UNIFY signal. Thus, the counter 304A generates the CounterH value using these input signals. When the counters 304A and 304B are operating as two separate independent counters, the CounterH value is independent of the CounterL value. When the counters are operating as a unified counter, the CounterL value represents the most significant 16 bits of the unified CounterU value.
In operation, when the UNIFY signal indicates that the counters 304A and 304 are operating as two separate counters, the multiplexers 312, 314 and 316 output the LimitH, ControlH and EnableH signals, respectively. When the UNIFY signal indicates that the counters are operating as a unified counter, the multiplexers 312, 314 and 316 outputs the LimitL, ControlL and EnableL signals, respectively. The select circuit 318 outputs control signals for the counter 304A that depends on the EVENT, LimitH, LimitL, ControlH and/or ControlL signals. The select circuit 320 outputs control signals for the counter 304B that depend on the EVENT, LimitL, and ControlL signals. Depending on the control signals from the select circuits, the counters generate the CounterH and CounterL values using the clock signals from the prescalers 302A and 302B. As described above, the CounterH and CounterL values are independent when the counters are operating as two independent counters. However, the CounterH and CounterL signals represent parts of a single unified count value when the counters are operating as a single unified counter.
Turning back to
The match registers 434A and 434B hold two 16-bit values for match comparison. The values in the match registers may be loaded by the processor 102, or from the respective match reload registers 432A and 432B, which receive values to be loaded into the match registers for match comparison. The 16-bit values in the match registers are compared to the respective counter values, i.e., the CounterH and CounterL values by the match circuits 438A and 438B. The results of the two comparisons are present on the outputs of the match circuits. The unify circuit 440 is effectively turned off when the counters are operating as separate counters. Thus, the match result signals are output as two signals, MatchH and Match L signals. When the counters are operating as a unified counter, the match registers hold a 32-bit value that is compared to the unified count value by the match circuits, and the unify circuit ANDs the outputs of the match circuits 438A and 438B to produce the overall 32-bit MatchL result.
The capture control registers 552A and 552B control which events load (i.e., capture) count values from the counters 304A and 304B into the corresponding capture registers 558A and 558B. The select circuits 554A and 554B, which are connected to the capture control registers, have inputs to receive EVENT signals from the event generation module 212. Each select circuit asserts it “capture” output when a selected event has occurred. The capture outputs from the select circuits are sent to the unify circuit 440, which sends them to the capture registers as independent control signals to capture separate 16-bit count values in the corresponding capture registers when the counters are operating as separate counters. When the UNIFY signal is 1, the unify circuit 556 ANDs the capture outputs from the select circuits to signal both capture registers to capture the unified 32-bit count value.
In an embodiment, the match registers 434A and 434B in
The event generation module 212 in
The select circuit 662 includes two sets of inputs to receive the MatchH and MatchL signals from all of the match/capture modules 210. The select circuit 662 includes another input to receive a HEVENT signal from the state mask register 676, which controls the selection of either the MatchH signals or the MatchL signals for the select circuit 662. Similarly, the select circuit 664 also includes two inputs to receive two state values, a StateH value and a StateL value, from the state logic circuitry 216, which includes registers to store these state values. These state variables or values, i.e., the StateH and StateL values, indicate the current states of the applications of the counters 304A and 304B. The select circuit 664 also includes another input to receive the HEVENT signal from the event control register 678, which controls the selection of either the StateH value or the StateL value to be sent to the Select circuit 672.
The output of the select circuit 662 is connected to the input of the select circuit 666, which also has an input to receive a MATCHSEL value from the event control register 678. The MATCHSEL value selects one of the match signals from a match/capture module associated with the current event (if any). Thus, the select circuit 666 outputs the match signal selected by the MATCHSEL value. The output of the select signal 666 represents the “match component” of this event, and is connected to an input of the select circuit 670.
The state-value output from the select circuit 664 is connected to an input of the select circuit 672, which also has an input to receive the STATEMASK value from the state mask register 676. Select circuit 672 outputs the bit of the STATEMASK value, that is selected by the state value from Select circuit 664. This output is one of the two inputs of the AND logic gate 674 that produces the EVENT output of this event unit.
The select circuit 668 includes a set of inputs to receive the synchronized input signals, i.e., the SYNC_INPUT signals, from the clock processing module 202 and a set of inputs to receive the output signals from the output module 214. The select circuit 668 further includes inputs to receive IOSEL, OUTSEL and IOCOND signals from the event control register 678. The OUTSEL signal selects either the synchronized input signals or the output signals of the universal counter/timer circuit 100, as an ingredient of this event. The IOSEL value selects a particular input or output as an ingredient of this event. The IOCOND value controls which state of the selected input or output signal enables this event: a low level, rising edge, falling edge, or high level. The output of the select circuit 668 represents the “I/O component” of this event, and is connected to an input of the select circuit 670.
The select circuit 670 includes two inputs to receive the outputs from the two select circuits 666 and 668. The select circuit 670 further uses the COMBMODE value from the event control register 678, which controls the selection of how these match and I/O components are used or combined from the following selections: OR (match and/or I/O component), MATCH (match component only), IO (I/O component only) and AND (simultaneous match and I/O component). The output of the select circuit 670 is connected to an input of the AND logic gate 674.
The AND logic gate 674 includes inputs to receive the outputs from the select circuits 670 and 672. When the selected match/IO event occurs, and the (selected L or H) state is enabled for this event by the event state mask register for this event, the AND logic gate outputs an EVENTi signal, which can be used to switch outputs, request interrupts, start, strop, or limit the counter(s), and change state values. The EVENTi signal is further differentiated into an EVENTiL signal that is asserted if the HEVENT bit for this event is 0 using an AND logic gate 680 on the EVENTi signal and an inverted HEVENT bit from an inverter 682, which inverts the HEVENT bit, and an EVENTiH signal that is asserted if the HEVENT bit for this event is 1 using an AND logic gate 684 on the EVENTi signal and the HEVENT bit.
The state logic module 216 is composed of the elements shown in
The output module 214 is composed of a multiplicity of the individual output units shown in
The event enable register 902 store an event mask that enables flags to request an interrupt. The event flag register receives EVENT signals from the event generation module 212 and “remembers” them until software clears this memory.
There is one AND gate 918 for each event embodied in the universal counter/timer circuit 100, and an interrupt is requested whenever any event is enabled and the flag bit for that event is set. Each AND gate 918 combines the output one bit of the flag register 904 and the corresponding bit of the event enable register 902. The outputs of all of the AND logic gate 918 are connected to the OR logic gate 914.
The conflict enable register 906 is used to store values to enable “no change conflict” signals to request interrupts. The conflict flag register 908 receives a NoChangeConflict signal from each of the individual output modules (
In an embodiment, the match registers 434A and 434B, the match reload registers 432A and 432B, the capture registers 558A and 558B and the capture control registers 552A and 552B are arranged to receive and store consecutive words, with the standard division of each word into two half words. When the universal counter/timer circuit 100 is configured to operate as having two separate counters, these two half words are related to the counters 304A and 304B. Software, i.e., a program executed by the processor 102, has the option of writing words initially to set up both halves of the universal counter/timer circuit 100 simultaneously, or writing half words to set up each half separately.
The software can use the DMA controller 104 to write the match reload registers 432A and 432B, or to read the capture registers 558A and 558B. However, when the universal counter/timer circuit 100 is configured to operate as having two separate counters, the addressing of the half word registers is not compatible with many DMA controllers' requirement to use consecutive addresses for sequential-address operation. Thus, an alternate address map for half word accesses to the same registers can be used, which is compatible with such DMA controllers. When the universal counter/timer circuit is configured to operate as having a unified counter, DMA word accesses should be done using standard offsets.
The DMA controller 104 can be used to write one or more of the match reload registers 432A and 432B, or read one or more of the capture registers 558A and 558B, typically at the start of a counter cycle. DMA accesses to more than one match reload or capture register may require that the registers be consecutive registers.
In some embodiments, the configurable design of the universal counter/timer circuit 100 allows the counters 304A and 304B to operate as one 32-bit counter, two 16-bit counters, four 8-bit counters, or one 16-bit counter and two 8-bit counters, in accordance with the enabling of carry across the interbyte boundaries within a word. This is particularly advantageous on a processor that supports 32-bit, 16-bit, and 8-bit accesses, such that the counters and their supporting registers can be accessed in a unified or separate way, In this way, the same data lines are always used for reading and writing each bit of each register, eliminating the multiplexing of data lines that would be needed with alternative approaches.
In addition, the design of the universal counter/timer circuit 100 allows the use of a state variable as a higher-level control that is superior to the value of the counter in signifying the overall state associated with a counter. In this way, sequences involving multiple cycles of the timer-counter can be easily defined and controlled. Thus, for example, events can be enabled by any of the possible states of the variable, by use of a bit mask containing a “1” for each state in which the event can occur. Furthermore, events can in turn modify the state variable that is associated with the counter, by associating with each event:
The design of the universal counter/timer circuit 100 also allows the use of abstract, non-dedicated events as a mechanism for specifying operations/changes in a timer/counter/PWM, wherein each event consists of an edge or level on an input or output signal, and/or a match to the counter, qualified by the current state associated with the counter. As an example, in a particular implementation, the following specifications are used.
The design of the universal counter/timer circuit 100 further allows the use of a mechanism for controlling output signals, wherein separate event masks for setting and clearing each output are included. This mechanism has the side-effect that simultaneous setting and clearing of the same output can be indicated in the same clock period. The universal timer includes a “conflict resolution” register containing two bits for each output, the four states of which select what happens when setting and clearing are both indicated:
The mechanism for controlling output signals further includes a “bidirectional control” register containing two bits for each output, which select among three possibilities for the effect of the counting direction of the associated counter on the meaning of “setting” and “clearing” the output as described above:
The design of the universal counter/timer circuit 100 further allows the use of a counter-timer in which the prescalars and other elements may be clocked by the internal bus clock or an input signal, wherein clocking by the input signal can be qualified in three different ways:
The design of the universal counter/timer circuit 100 further allows the use of an event-driven interrupt request facility, which is augmented by an additional facility whereby interrupt can also be requested when simultaneous setting and clearing occur for an output and the conflict resolution register indicates “no change” for the output. This feature helps a programmer who has setup the subject timer/counter module in such a way that such simultaneity should not occur, determine if such an unexpected situation ever occurs.
A method for generating timed output signals using a counter/timer circuit in accordance with an embodiment of the invention is described with reference to a process flow diagram of
Although the operations of the method herein are shown and described in a particular order, the order of the operations of the method may be altered so that certain operations may be performed in an inverse order or so that certain operations may be performed, at least in part, concurrently with other operations.
Although specific embodiments of the invention have been described and illustrated, the invention is not to be limited to the specific forms or arrangements of parts so described and illustrated. The scope of the invention is to be defined by the claims appended hereto and their equivalents.