Page 1 of 2
BCD Counter starts at random number
Posted: Tue May 21, 2024 11:39 am
by student999
BCD counter outputs some undefined behavior. It should count from 0000-9999, but it starts at a random value (eg. 2304), whereas im sure it will work.
Im at my wits end.
Thanks
Alan
Re: BCD Counter starts at random number
Posted: Tue May 21, 2024 12:20 pm
by admin
Hi Alan,
JK flip-flops are flipping to a random state at power on. That is why you see it starting at the random state.
You will need to reset them at power on. Please read this discussion:
viewtopic.php?t=3
and especially the last suggestion from ehennig.
On the other note you have repeated the same circuitry 4 times, both for counters and for displays. I suggest you move repeated stuff to separate circuits and use them on the main diagram.
Regards,
Eugene
Re: BCD Counter starts at random number
Posted: Wed May 22, 2024 12:57 pm
by student999
admin wrote: Tue May 21, 2024 12:20 pm
Hi Alan,
JK flip-flops are flipping to a random state at power on. That is why you see it starting at the random state.
You will need to reset them at power on. Please read this discussion:
viewtopic.php?t=3
and especially the last suggestion from ehennig.
On the other note you have repeated the same circuitry 4 times, both for counters and for displays. I suggest you move repeated stuff to separate circuits and use them on the main diagram.
Regards,
Eugene
Thanks, i got the REST state (0000) to work, but there is another issue if you don't mind, i added stop logic to stop the counters at specific values, but the program throws an Oscillation error, i think it is related to feeding the output of a circuit to an input of another, but i don't see the issue. Would you please look into it?
The Connection between the logic circuits and the counters is the output of the counter logic in to an XOR with 1, which if the counter reached the value the output of the gate would be 0, the zero would be put together with the output of the counter logic (into XOR) to ensure that the counter reached the value, the result of that is put to an AND gate with the next counter logic and so on.
Attached is the counter circuit and the 4 counter stop logic files.
Thanks,
Alan
Re: BCD Counter starts at random number
Posted: Thu May 23, 2024 8:49 am
by student999
Ok, I found that the problem is with the XORs that are connected with the high pulse (1), but im not sure how to mitigate and circumvent the problem, because these XORs are crucial to the logic that stops the counter (putting the J and K to a hold state of 00) .
Sorry for the many requests, but i really need the help.
Thanks,
Alan
Re: BCD Counter starts at random number
Posted: Thu May 23, 2024 4:59 pm
by admin
First the expression x XOR 1 is equal to NOT x. So, I don't know what you are trying to do here.
Second it is very hard to understand your circuit as it is so big. If you move the repeated parts to separate circuits it will be much easier to test and find issues, not to mention to look at your diagrams.
Finally, you are trying to use reset input of your JK flip-flops (Clr) to zero it during counting, when it reaches 10. The Clr input is asynchronous input that should be used mainly for initial reset. To turn counter to 0 once it reaches it's maximum (in your case 9) you should use J and K inputs on proper clock edge. Otherwise, you will get very nasty side effects. In your design it actually reaching and outputting 10 before it gets reset to 0.
The oscillation indeed occurs when you make a loop where some output changing from - to 1 and back indefinitely.
Re: BCD Counter starts at random number
Posted: Thu May 23, 2024 5:28 pm
by student999
admin wrote: Thu May 23, 2024 4:59 pm
First the expression x XOR 1 is equal to NOT x. So, I don't know what you are trying to do here.
Second it is very hard to understand your circuit as it is so big. If you move the repeated parts to separate circuits it will be much easier to test and find issues, not to mention to look at your diagrams.
Finally, you are trying to use reset input of your JK flip-flops (Clr) to zero it during counting, when it reaches 10. The Clr input is asynchronous input that should be used mainly for initial reset. To turn counter to 0 once it reaches it's maximum (in your case 9) you should use J and K inputs on proper clock edge. Otherwise, you will get very nasty side effects. In your design it actually reaching and outputting 10 before it gets reset to 0.
The oscillation indeed occurs when you make a loop where some output changing from - to 1 and back indefinitely.
Thanks for your reply, Appreciate it.
> First the expression x XOR 1 is equal to NOT x. So, I don't know what you are trying to do here.
I'm trying to input the output of a counter stop logic (which if it reached the value, 6 for example the output of its circuitry would be 1), with the high pulse (which would be 1), the output is of course 0, now because the value is 0, the J and K would be 0, meaning a hold state, where even if it gets a clock pulse the counted value would not change.
Sorry for the confusion.
> Second it is very hard to understand your circuit as it is so big. If you move the repeated parts to separate circuits it will be much easier to test and find issues, not to mention to look at your diagrams.
I'll copy each counter and its stop logic to their respective logical circuits, plus i will try to make as testable as i can.
> Finally, you are trying to use reset input of your JK flip-flops (Clr) to zero it during counting, when it reaches 10. The Clr input is asynchronous input that should be used mainly for initial reset. To turn counter to 0 once it reaches it's maximum (in your case 9) you should use J and K inputs on proper clock edge. Otherwise, you will get very nasty side effects. In your design it actually reaching and outputting 10 before it gets reset to 0.
Ohh, is that why it randomly skips values, i thought that a strobe technique would fix the problem, considering that the propagation delay is nasty and can lead to undesirable behavior.
> The oscillation indeed occurs when you make a loop where some output changing from - to 1 and back indefinitely.
But when i follow the logic it shouldn't occur?, the logic is only activated when the final counter's stop logic is met, then it descends to all the counters in the same way, i think i don't see the problem clearly.
As i said im going to separate the circuits then send them
Thanks
Re: BCD Counter starts at random number
Posted: Thu May 23, 2024 6:17 pm
by student999
Hello Again,
Here are two counters separated into their respective logic circuits, and the same goes for the others, they work individually, but the problem arises when i attempt to connect them together (the Oscillation error above).
Thanks
Re: BCD Counter starts at random number
Posted: Thu May 23, 2024 10:38 pm
by admin
Here I simplified it for you. Look at "Counter 0 simple" and "Counter 1 simplified".
Re: BCD Counter starts at random number
Posted: Fri May 24, 2024 2:22 am
by student999
admin wrote: Thu May 23, 2024 10:38 pm
Here I simplified it for you. Look at "Counter 0 simple" and "Counter 1 simplified".
Weird, it says its from another version and won't open.
I really don't know whats going on with the Oscillation error, if you can help point me in the right direction, i tried all sorts of wiring but nothing works.
Thanks
Re: BCD Counter starts at random number
Posted: Fri May 24, 2024 4:33 pm
by student999
Ok, i found the gate that triggers the problem, it is the XOR that gets input from the counter stop logic, and outputs into the JK flip flops.
But how can i workaround this problem. I'm beyond confused.