0
\$\begingroup\$

So i wanted to create a counter that counts from 59 down to 0 using 4510 IC component, so i created simulation in Proteus software.

This is what i came up with:

enter image description here

This circuit works perfectly fine when there's no feedback from outputs of lower 4510 to it's PE input. As you can see, feedback circuits consist of one 4 input NOR gate and one OR gate which is supposed to enable PE input whenever i press button connected to OR gate input or, when combination of four zeros appears at the output of 4519 IC.

However, it happens so that, instead of reseting at zero state at the output, it resets when i have combination 0100 at the lower and 0000 at the upper 4510 IC, so it resets in the moment when i am supposed to go from 0100 (4) to 0011 (3) so i believe that the problem is with delay periods of logic gates or something (i am not quite sure if this is the case), and i don't know how do i need to enhance this circuit in order to make it work properly, as it is supposed to. Any help appreciated!

\$\endgroup\$

1 Answer 1

4
\$\begingroup\$

Unfortunately the PE input to this counter is asynchronous. In other words it preloads the registers when it goes to a high level and is not synchronized with the clock.

When the input to your 0 detection gates go from 0100 to 0011 they very briefly go through 0000 producing a glitch on on the PE input which is enough to preload the registers.

Solving the problem for the devices used is not trivial. You need to filter out fast glitches on the output of U4. A RC filter would do this put a 10k resistor between U4 and U3 and try capacitors to ground on that input of U3. Start with 10nF and work up.

This will limit your maximum usable frequency but from the look of your application not to a level where I think it will matter to you. It also violates the principles of good digital design which would dictate setting up a synchronous preload but this is not possible with your parts.

If want this to go from "00" to "59" not "01" to "59" you can avoid the problem entirely by using the Q4 only output of U2 to do the preload. This preloads when the counter counts down from "0" to "9" 1001.

\$\endgroup\$
1
  • \$\begingroup\$ Your second suggestion solves this problem perfectly fine, i actually had to do it that way, i actually assumed (i know, assuming something isn't great idea most of the time) that this is synchronous device, since i actually want it to go from "59" to "0", anyway, i appreciate your help! \$\endgroup\$
    – cdummie
    May 20, 2019 at 15:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.