本节来设计系统时钟,本例的控制器有两个外部控制开关输入,所以在设计中要考虑它们的控制优先权。
系统时钟是一种多功能的时钟产生电路,它有两种工作模式:自动工作模式和人工工作模式。按自动工作模式工作时,该电路对输入时钟进行二分频;按人工操作模式工作时,每按一下令电路产生时钟上升边沿的按钮开关PB,电路就输出一个时钟上升边沿。
(1)明确设计任务。
本电路需要两个控制输入开关,一个是选择工作模式的开关M,另一个是使电路产生时钟上升沿的按钮开关PB。当M=0时,按自动模式工作;当M=1时,按人工操作模式工作。当PB=1时,令电路产生一个时钟上升沿;当PB=0时,电路不输出时钟上升沿。令电路输出为CLK,输出一个时钟上升沿就是CLK由0变为1一次。电路产生二分频输出,就表示CLK的频率是电路输入时钟CP频率的一半。按照设计任务的要求可以判断,M的控制优先级是高于PB,所以在M=0时,PB不起作用,只有在M=1时,PB才起作用。系统时钟的示意图如图10-19所示。
(2)确定控制算法。
因为M的控制优先级高于PB,故可先画出M=0时的那一部分流程图,然后再在它上面补上M=1时的那一部分流程图,这样就构成了完整的控制算法流程图,如图10-20所示。
图10-19 系统时钟示意图 图10-20 系统时钟的算法状态及流程图
下面来分析流程图。M=0时的那一部分流程图表示每隔两个时钟周期,系统时钟电路的工作就循环一次,也就是L和H状态各出现一次,并产生一个CP时钟周期的CLK输出。当M=1时,如果PB=0,不管现状是H还是L,其下一个状态总是L状态。只要这两个开关的状态不变,系统时钟将一直工作在L状态。这表明电路不输出一个时钟上升边沿。
在系统时钟电路中,外部来的两个异步输入信号M和PB,因作用的电路是两状态的,转换竞争不会导致其功能的破坏,因此可不加以同步化,直接将其作为控制输入。
(3)用硬件实现控制算法。
可以用传统算法来实现流程图10-20。设L状态的编码为A=0,H状态的编码为A=1,可以列出其状态转换表,如表10-8所示。
表10-8 系统时钟电路状态转换表
现态 |
次态 |
现态 |
次态 | ||||
A |
MAN |
PB |
A* |
A |
MAN |
PB |
A* |
0 |
0 |
D |
1 |
1 |
0 |
d |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
根据表10-8,可以列出D触发器的输出和控制输入逻辑函数表达式:
A*=A'·M'+A'·M·PB+A·M·PB
=A'·M'+M·PB
CLK=A
由此可以画出逻辑电路图,如图10-21所示。
图10-21 系统时钟的逻辑电路图