-1
\$\begingroup\$

I want to design a bidirectional synchronous mod‑16 counter using two mod‑8 counters, with synchronous reset and direction control.

I began with a straightforward bidirectional mod‑16 counter and its corresponding state table, which I think it's correct. enter image description here


Taking inspiration from periblepsis’s circuit, I was able to implement the synchronous mod‑16 counter with synchronous reset.

enter image description here

The current issue: The decrement operation should be performed via the LOAD input, but I’ve already assigned LOAD to manage the synchronous reset. I’ve partially completed the state table (which I’m not confident is 100% accurate—in fact, I suspect it isn’t), and now I’m completely confused. Does anyone know how to resolve this conflict between LOAD and reset for the down‑count?

Table

enter image description here

Question

  • How can I share or multiplex the LOAD pin so it serves both synchronous reset and load-for-decrement functions without conflict?

Any insights or example implementations would be greatly appreciated!

Edit

enter image description here

\$\endgroup\$
7
  • \$\begingroup\$ "How can I share or multiplex the LOAD pin" not at all. You could introduce another 1-bit signal to indicate LOAD shall not be LOAD, but: read that again. \$\endgroup\$ Commented Jul 28 at 4:18
  • \$\begingroup\$ Since you mention "multiplex" already, why don't you multiplex the value to load? \$\endgroup\$ Commented Jul 28 at 7:31
  • \$\begingroup\$ Are you allowed to peek into other's solution? Then you might want to investigate implementations in TTL (7400 series) and CMOS (4000 series). \$\endgroup\$ Commented Jul 28 at 7:33
  • \$\begingroup\$ @thebusybee I added an Edit to the Post. Do you mean something similar? But it's not working yet, I don't know how to continue \$\endgroup\$ Commented Jul 28 at 8:44
  • \$\begingroup\$ One intermediate step would be to build a circuit that decrements from counters that increment. \$\endgroup\$ Commented Jul 28 at 10:42

1 Answer 1

2
\$\begingroup\$

You are using the synchronous counter component of Logisim. Its behavior depends on the levels on the inputs "load" and "count" and this is documented in the help (here cited from Burch's original version 2.7.1, I don't have the forked derivative):

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.

So you can insert some combinatorial logic to generate the different levels.

direction reset load count
0 0 0 1
1 0 1 1
x 1 1 0

This complete solution includes all necessary logic: enter image description here

\$\endgroup\$
3
  • 1
    \$\begingroup\$ I'm trying to implement your logic, but it's getting really confusing and I can't get it to work. I don't even know if you can read the circuit... [see edit] \$\endgroup\$ Commented Jul 28 at 16:12
  • 1
    \$\begingroup\$ @Pizza In my limited free time I reproduced your new circuit, and it nearly works. -- One point is to switch the load value of "8^1" depending on the direction. You can do this yourself. -- But then there is an issue with the same counter that I could not solve yet. It loads unexpectedly when counting down. \$\endgroup\$ Commented Aug 1 at 12:47
  • \$\begingroup\$ @Pizza Edited to add my solution. \$\endgroup\$ Commented Aug 6 at 13:02

Your Answer

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

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.