Counter
Library: | Memory |
Introduced: | 2.3.0 |
Appearance: |
Behavior
The counter holds a single value, whose value is emitted on the output Q. Each time the clock input (diagrammed with a triangle on the component's south edge) triggers according to its Trigger attribute, the value in the counter may update based on the two inputs on the component's west edge: The upper input is called load and the lower is called count, and they are interpreted as follows.
load | count | trigger action |
0 or z | 0 | The counter remains unchanged. |
0 or z | 1 or z | The counter increments. |
1 | 0 | The counter loads the value found at the D input. |
1 | 1 or z | The counter decrements. |
The range of counting can be configured using the Maximum Value attribute. When the counter reaches this value, the next increment wraps the counter back to 0; and if it is at 0, then a decrement will wrap the counter around back to its maximum value.
In addition to the output Q, the component also includes a single-bit output carry. This is 1 whenever the counter is at its maximum and the load and count inputs indicate that the component should increment on the next step - or when the counter is at 0 and the load and count inputs indicate to decrement at the next step.
The clear input resets the counter's value to 0 (all zeroes) asynchronously; that is, as long as the clr input is 1, the value is pinned to 0, regardless of the clock input.
Pins
- East edge, labeled Q (output, bit width matches Data Bits attribute)
- Outputs the value currently stored by the counter.
- East edge, lower pin (output, bit width 1)
- Carry: When load and count indicate to increment, this output is 1 whenever the counter is at its maximum. When load and count indicate to decrement, this output is 1 whenever the counter is at 0. At all other times, this output is 0.
- West edge, top pin (input, bit width 1)
- Load: When this is 1 while the count input is 0, the counter will load the value found at the data input at the next clock trigger - or, if the count input happens to be 1, the counter's value will decrement.
- West edge, middle pin labeled D (input, bit with matches Data Bits attribute)
- Data: When the clock triggers while load is 1 and count is 0, the counter's value changes to the value found at this input.
- West edge, lower pin labeled ct (input, bit width 1)
- Count: When this is 1 or unconnected, the value in the counter increments whenever the clock input is triggered - or it decrements if the load input happens to also be 1.
- South edge, indicated with a triangle (input, bit width 1)
- Clock: At the instant that this is triggered as specified by the Trigger attribute, the counter updates as indicated by the load and count inputs.
- South edge, labeled 0 (input, bit width 1)
- Clear: When 0 or undefined, this input has no effect. As long as it is 1, the counter's value is asynchronously pinned to 0. This occurs asynchronously - that is, without regard to the current clock input value. As long as this is 1, the other inputs have no effect.
Attributes
When the component is selected or being added,
Alt-0 through Alt-9 alter its Data Bits
attribute.
- Data Bits
- The bit width of the value emitted by the component.
- Maximum Value
- The maximum value, at which point the counter will set its carry output.
- Action On Overflow
- The behavior when the counter attempts to increment beyond the maximum value
or decrement beyond 0. Four possible actions are supported:
- Wrap around
- The next value is 0 (if incrementing - the maximum value if decrementing)
- Stay at value
- The counter's value remains at the maximum (or 0 if decrementing)
- Continue counting
- The counter continues incrementing/decrementing, keeping the number of bits as provided by the Data Bits attribute
- Load next value
- The next value is loaded from the D input.
- Trigger
- Configures how the clock input is interpreted. The value
rising edge
indicates that the counter should update its value at the instant when the clock rises from 0 to 1. Thefalling edge
value indicates that it should update at the instant the clock falls from 1 to 0. - Label
- The text within the label associated with the component.
- Label Font
- The font with which to render the label.
Poke Tool Behavior
Clicking the counter brings keyboard focus to the component (indicated by a red rectangle), and typing hexadecimal digits will change the value stored in the counter.
Text Tool Behavior
Allows the label associated with the component to be edited.