试用D触发器和必要的门电路设计一同步时序电路, A=1时实现5进制计数, A=0时实现4进制计数, 要求只有一个进位输出端.
根据题目的描述, 绘制状态表.
状态表 | |||||||
A | Q2 | Q1 | Q0 | Q2* | Q1* | Q0* | Z |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | × | × | × | 0 |
0 | 1 | 0 | 1 | × | × | × | 0 |
0 | 1 | 1 | 0 | × | × | × | 0 |
0 | 1 | 1 | 1 | × | × | × | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
1 | 1 | 0 | 1 | × | × | × | 0 |
1 | 1 | 1 | 0 | × | × | × | 0 |
1 | 1 | 1 | 1 | × | × | × | 0 |
根据状态表, 绘制状态激励表.
状态激励表 | |||||||
A | Q2 | Q1 | Q0 | D2 | D1 | D0 | Z |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | × | × | × | 0 |
0 | 1 | 0 | 1 | × | × | × | 0 |
0 | 1 | 1 | 0 | × | × | × | 0 |
0 | 1 | 1 | 1 | × | × | × | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
1 | 1 | 0 | 1 | × | × | × | 0 |
1 | 1 | 1 | 0 | × | × | × | 0 |
1 | 1 | 1 | 1 | × | × | × | 0 |
根据状态激励表, 得知 D2=AQ1Q0, D1=Q1异或Q0, D0=Q2'Q0'.
根据驱动方程, 得到状态方程 Q2*=D2=AQ1Q0, Q1*=D1=Q1异或Q0, Q0*=D0=Q2'Q0'.
根据状态方程, 验证电路的自启动功能.
自启动检查 | |||||||
A | Q2 | Q1 | Q0 | Q2* | Q1* | Q0* | Z |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |
0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 |
1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |
1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
根据上面的状态表, 得知电路具备自启动功能.
根据上面的设计, 绘制电路原理图.
在绘制状态表时, 我对于输出Z的取值和以前的做法发生了改变: 以前我将无效状态对应的输出都用"×"填充, 但这样做可能会导致电路在未进入有效循环前产生无效的输出信号, 所以这里我将无效状态对应的输出都用"0"填充.