I am kinda new to the website, I just came across it after looking for answers for such a long time. I have an assignment that asks to add an input bit to your circuit from the circuit I created that goes up my sequence of 3 up to 15 called U (for up). If U is a 1, your circuit should count up through the sequence of multiples of 3 as normal. If U is a 0, your circuit should count down through the sequence of multiples of 3 (0, 15, 12, ..., 6, 3, 0, 15, 12...). I was able to draw the truth table and the K maps both for going up and down but I don't know how to implement the input circuit. For this assignment, we use a program called Logisim. Please let me know if extra information is needed
1 Answer
Here's the state transitions:
$$\begin{array}{c|c|c|c|c} \text{State} & \text{U=1 Next} & \text{U=1 Excite} & \text{U=0 Next} & \text{U=0 Excite}\\\\ {\begin{smallmatrix}\begin{array}{cccc} Q_D & Q_C & Q_B & Q_A\\\\ 0&0&0&0\\ 0&0&1&1\\ 0&1&1&0\\ 1&0&0&1\\ 1&1&0&0\\ 1&1&1&1\\\\ 0&0&0&1\\ 0&0&1&0\\ 0&1&0&0\\ 0&1&0&1\\ 0&1&1&1\\ 1&0&0&0\\ 1&0&1&0\\ 1&0&1&1\\ 1&1&0&1\\ 1&1&1&0\\ \end{array}\end{smallmatrix}} & {\begin{smallmatrix}\begin{array}{cccc} Q_D & Q_C & Q_B & Q_A\\\\ 0&0&1&1\\ 0&1&1&0\\ 1&0&0&1\\ 1&1&0&0\\ 1&1&1&1\\ 0&0&0&0\\\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ \end{array}\end{smallmatrix}} & {\begin{smallmatrix}\begin{array}{cccc} T_D & T_C & T_B & T_A\\\\ 0&0&1&1\\ 0&1&0&1\\ 1&1&1&1\\ 0&1&0&1\\ 0&0&1&1\\ 1&1&1&1\\\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ \end{array}\end{smallmatrix}} & {\begin{smallmatrix}\begin{array}{cccc} Q_D & Q_C & Q_B & Q_A\\\\ 1&1&1&1\\ 0&0&0&0\\ 0&0&1&1\\ 0&1&1&0\\ 1&0&0&1\\ 1&1&0&0\\\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ \end{array}\end{smallmatrix}} & {\begin{smallmatrix}\begin{array}{cccc} T_D & T_C & T_B & T_A\\\\ 1&1&1&1\\ 0&0&1&1\\ 0&1&0&1\\ 1&1&1&1\\ 0&1&0&1\\ 0&0&1&1\\\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ x&x&x&x\\ \end{array}\end{smallmatrix}} \end{array}$$
Once you have that much, all you need to do is to lay out four K-map tables for each condition of \$U\$.
For \$U=1\$ (count up):
$$\begin{array}{rl} \begin{smallmatrix}\begin{array}{r|cccc} T_D&\overline{Q_B}\:\overline{Q_A}&\overline{Q_B}\: Q_A&Q_B \:Q_A&Q_B \:\overline{Q_A}\\ \hline \overline{Q_D}\:\overline{Q_C}&0&x&0&x\\ \overline{Q_D}\:Q_C&x&x&x&1\\ Q_D\: Q_C&0&x&1&x\\ Q_D\:\overline{Q_C}&x&0&x&x \end{array}\end{smallmatrix} & \begin{smallmatrix}\begin{array}{r|cccc} T_C&\overline{Q_B}\:\overline{Q_A}&\overline{Q_B}\: Q_A&Q_B \:Q_A&Q_B \:\overline{Q_A}\\ \hline \overline{Q_D}\:\overline{Q_C}&0&x&1&x\\ \overline{Q_D}\:Q_C&x&x&x&1\\ Q_D\: Q_C&0&x&1&x\\ Q_D\:\overline{Q_C}&x&1&x&x \end{array}\end{smallmatrix}\\\\ \begin{smallmatrix}\begin{array}{r|cccc} T_B&\overline{Q_B}\:\overline{Q_A}&\overline{Q_B}\: Q_A&Q_B \:Q_A&Q_B \:\overline{Q_A}\\ \hline \overline{Q_D}\:\overline{Q_C}&1&x&0&x\\ \overline{Q_D}\:Q_C&x&x&x&1\\ Q_D\: Q_C&1&x&1&x\\ Q_D\:\overline{Q_C}&x&0&x&x \end{array}\end{smallmatrix} & \begin{smallmatrix}\begin{array}{r|cccc} T_A&\overline{Q_B}\:\overline{Q_A}&\overline{Q_B}\: Q_A&Q_B \:Q_A&Q_B \:\overline{Q_A}\\ \hline \overline{Q_D}\:\overline{Q_C}&1&x&1&x\\ \overline{Q_D}\:Q_C&x&x&x&1\\ Q_D\: Q_C&1&x&1&x\\ Q_D\:\overline{Q_C}&x&1&x&x \end{array}\end{smallmatrix} \end{array}$$
For \$U=0\$ (count down):
$$\begin{array}{rl} \begin{smallmatrix}\begin{array}{r|cccc} T_D&\overline{Q_B}\:\overline{Q_A}&\overline{Q_B}\: Q_A&Q_B \:Q_A&Q_B \:\overline{Q_A}\\ \hline \overline{Q_D}\:\overline{Q_C}&1&x&0&x\\ \overline{Q_D}\:Q_C&x&x&x&0\\ Q_D\: Q_C&0&x&0&x\\ Q_D\:\overline{Q_C}&x&1&x&x \end{array}\end{smallmatrix} & \begin{smallmatrix}\begin{array}{r|cccc} T_C&\overline{Q_B}\:\overline{Q_A}&\overline{Q_B}\: Q_A&Q_B \:Q_A&Q_B \:\overline{Q_A}\\ \hline \overline{Q_D}\:\overline{Q_C}&1&x&0&x\\ \overline{Q_D}\:Q_C&x&x&x&1\\ Q_D\: Q_C&1&x&0&x\\ Q_D\:\overline{Q_C}&x&1&x&x \end{array}\end{smallmatrix}\\\\ \begin{smallmatrix}\begin{array}{r|cccc} T_B&\overline{Q_B}\:\overline{Q_A}&\overline{Q_B}\: Q_A&Q_B \:Q_A&Q_B \:\overline{Q_A}\\ \hline \overline{Q_D}\:\overline{Q_C}&1&x&1&x\\ \overline{Q_D}\:Q_C&x&x&x&0\\ Q_D\: Q_C&0&x&1&x\\ Q_D\:\overline{Q_C}&x&1&x&x \end{array}\end{smallmatrix} & \begin{smallmatrix}\begin{array}{r|cccc} T_A&\overline{Q_B}\:\overline{Q_A}&\overline{Q_B}\: Q_A&Q_B \:Q_A&Q_B \:\overline{Q_A}\\ \hline \overline{Q_D}\:\overline{Q_C}&1&x&1&x\\ \overline{Q_D}\:Q_C&x&x&x&1\\ Q_D\: Q_C&1&x&1&x\\ Q_D\:\overline{Q_C}&x&1&x&x \end{array}\end{smallmatrix} \end{array}$$
You can now use those tables (fixed for errors I made above that you may catch) to develop the logic required.
From the above, I find:
$$\begin{align*} T_D &= U\cdot Q_B\cdot Q_C + \overline{U}\cdot \overline{Q_B}\cdot \overline{Q_C}\\ T_C &= U\cdot Q_B + \overline{U}\cdot \overline{Q_A} + Q_A\cdot \overline{Q_B} \\ T_B &= U\cdot \overline{Q_A} + \overline{U}\cdot \overline{Q_C} + Q_A\cdot Q_C \\ T_A &= 1 \end{align*}$$
At this point, you should be able to easily develop the logic required when using T-type FF devices.
U
line. \$\endgroup\$