\documentclass[全部作业]{subfiles} \fancyhead{} \fancyhead[C]{\mysignature} % 1、2、10、11、3、4、7、8、13 \setcounter{chapter}{4} \begin{document} \renewcommand{\bar}{\xoverline} \chapter{异步时序电路} \begin{enumerate} \columnseprule=0.5pt \item 分析下图所示电路。 \begin{enumerate} \item 写出状态流程表,画出状态转换图。 \item 假定系统初始状态为$Y_1=0$,画出下图所示输入波形对应的输出波形,并据此分析电路功能。 \end{enumerate} \includegraphics[width=1\linewidth]{imgs/2023-12-24-15-02-47.png} \begin{multicols}{2} \begin{zhongwen} \noindent 先写出激励方程和输出方程: $$ \begin{aligned} &Y_1=\overline{\overline{x_1\ \overline{x_2}}\ \overline{x_2\ y_1}}=x_1 \overline{x_2}+x_2y_1\\ &Y_2=\overline{y_1}\ x_1\ x_2\\ &z=Y_2\\ \end{aligned} $$ 再写出状态流程表: \includexopp{5.1.1} 将$x_1x_2y_1y_2$作为系统总态,画出状态转换图: \includexopp{5.1.2} 再画出波形图: \includexopp{5.1.3} 于是可以分析出功能为:当$x_2$在$x_1$之前先变为1时,输出$x_1x_2$,否则输出0。 \end{zhongwen} \end{multicols} \item 分析下图所示电路。 \begin{enumerate} \item 写出状态流程表,画出状态转换图。 \item 假定系统初始状态为$Y_1Y_2=00$,画出在下图所示输入波形下的输出波形,并据此分析电路功能。 \end{enumerate} \includegraphics[width=1\linewidth]{imgs/2023-12-24-16-04-57.png} \begin{multicols}{2} \begin{zhongwen} \noindent 先写出激励方程和输出方程: $$ \begin{aligned} &Y_1=\overline{\overline{y_1\ y_2}\ \overline{y_1\ x_1}\ \overline{y_2\ x_2}}=y_1y_2+y_1x_1+y_2x_2 \\ &Y_2=\overline{\overline{y_2\ x_2}\ \overline{\overline{y_1}\ y_2}\ \overline{\overline{y_1}\ \overline{x_2}}}=y_2x_2+\bar{y_1}y_2+\bar{y_1}x_1\bar{x_2} \\ &z=y_1y_2x_2 \\ \end{aligned} $$ 再写出状态流程表: \includexopp{5.2.1} 将$x_1x_2y_1y_2$作为系统总态,画出状态转换图: \includexopp{5.2.2} 再画出波形图: \includexopp{5.2.3} 于是可以分析出功能为:当$x_1$为0时,输出为0;当$x_1$出现上升沿后,输出$x_2$的第一个脉冲(如果$x_1$在$x_2$的脉冲期间上升,则输出当前脉冲)。 \end{zhongwen} \end{multicols} \pagebreak[4] \item 设计一个基本型异步时序电路,输入$x_1$、$x_2$,输出$z$。如果输入变量个数按二进制增加,则输出为1,反之输出为0.所谓按二进制增加是指$x_1x_2=00\to 10\to 11$或$00\to 10\to 11$。 \begin{multicols}{2} \begin{zhongwen} \noindent 用$S_0,S_1,S_2,S_3$表示系统状态,画出状态转换图: \includexopp{5.3.1} 图中的$S_1$和$S_2$状态的输出为1,$S_0$和$S_3$状态的输出为0。 再写出状态流程表: \includexopp{5.3.2} 显然状态已经最简了,无法合并了。 之后分配状态,根据输出,$S_1,S_2$应该相邻,$S_0,S_3$应该相邻。 为了避免竞争,$S_0,S_1$应该相邻,$S_2,S_3$应该相邻。 因此可以分配$S_0=00,S_1=01,S_2=11,S_3=10$。 重新写出状态流程表: \includexopp{5.3.3} 据此分别画出$Y_1,Y_2,z$的卡诺图: \includexopp{5.3.4} 检查任意项,不会发生临界竞争。\\ 于是可以得到激励方程和输出方程: $$ \begin{aligned} &Y_1=y_1x_1+y_1x_2+x_1x_2=\overline{\overline{x_1y_1}\ \overline{x_2y_1}\ \overline{x_1x_2}} \\ &Y_2=\bar{y_1}x_1+\bar{y_1}x_2+x_1x_2 = \overline{\overline{\bar{y_1}x_1}\ \overline{\bar{y_1}x_2}\ \overline{x_1x_2}} \\ &z=y_2 \\ \end{aligned} $$ 则可以画出逻辑电路图: \includexopp{5.3.5} \end{zhongwen} \end{multicols} \pagebreak[4] \item 设计一个单脉冲发生器,两个输入为$x_1$、$x_2$,输出$z$,其中$x_1$为连续的脉冲信号,$x_2$为一个开关信号,要求当$x_2$从高跳变到低后,$z$输出一个完整的$x_1$脉冲,并只有在输出$z$变低以后,$x_2$才能再次由低到高,其波形如下图所示。 \begin{center} \noindent \includegraphics[width=0.8\linewidth]{imgs/2023-12-24-20-23-25.png} \end{center} \begin{zhongwen} \begin{multicols}{2} “并只有在输出$z$变低以后,$x_2$才能再次由低到高”这句话是根据输出限制输入?那也就是说只是限制输入的变化的情况的,用来简化题目的。 根据波形图可以划分出5个状态:\\ $S_0$:初始状态,$x_2$为0,$z$保持0;\\ $S_1$:$x_2$变为1,$z$仍然为0;\\ $S_2$:$x_2$在$x_1$为1时从1变0,当前脉冲不能算,等待下一个$x_1$的脉冲;\\ $S_3$:$x_2$和$x_1$都是0,下一个$x_1$上升沿即可将$z$置为1;\\ $S_4$:$x_2$从1变0后$x_1$的首个脉冲期间,$z$为1。\\ 直接画出状态流程表: \includexopp{5.4.1} 根据隐含表查看状态是否可以化简: \includexopp[1.5]{5.4.2} 可以发现$S_1$和$S_2$等价(对啊,之前怎么没想到呢,$S_1$和$S_2$都是等待转换到$S_3$的状态,也就是说要转换到$S_3$必须要输入为00),因此状态可以合并。 接下来分配状态,根据输出,$S_0,\{ S_1,S_2 \},S_3$应该相邻;为了避免竞争,$\{ S_1,S_2 \},S_3$应该相邻,$S_4,S_0$应该相邻,$S_3,S_4$应该相邻。 因此可以分配$S_0=00,\{ S_1,S_2 \}=01,S_3=11,S_4=10$。重新写出状态流程表: \includexopp{5.4.3} 据此分别画出$Y_1,Y_2,z$的卡诺图: \includexopp{5.4.4} 检查任意项,不会发生临界竞争。 于是可以得到激励方程和输出方程: $$ \begin{aligned} &Y_1=y_2 \bar{x_1} \bar{x_2}+y_1 x_1 \bar{x_2}=\overline{\overline{y_2 \bar{x_1} \bar{x_2}}\ \overline{y_1x_1 \bar{x_2}}} \\ &Y_2=x_2+y_2 \bar{x_1}+ \bar{y_1}y_2 = \overline{\bar{x_2}\ \overline{y_2 \bar{x_1}}\ \overline{\bar{y_1} y_2}}\\ &z=y_1 \bar{y_2} \\ \end{aligned} $$ 则可以画出逻辑电路图: \end{multicols} \includexopp[1.5]{5.4.5} \end{zhongwen} \item[7.] 试用基本型异步时序电路的设计方法设计一个负边沿触发的D触发器,要求写出详细的设计过程。提示:将时钟$CP$与激励$D$作为异步电路的两个输入。 \begin{zhongwen} 首先考虑状态如何设计,输出为1和输出为0肯定是两个不同的状态,那么先假设就这两个状态。之后考虑状态如何转换,输出为0到输出为1的条件是$D$为1并且$CP$下降沿。如果将输入状态用$D$和$CP$表示,那么就是从11变化到10的时候。那么在状态流程表上就是这样的。 \includexopp[1.5]{5.7.1} 可以看到,对于状态A,从11变成10的时候($CP$下降沿的时候$D$为1)要改变状态到B,但是从00到10的时候($CP$不是下降沿)不改变状态;同理对于状态B,从01变成00的时候($CP$下降沿的时候$D$为0)要改变状态到A,但是从10到00的时候($CP$不是下降沿)不改变状态。 但是一个系统总态只能对应一个激励状态,也就是状态流程表中一个格子只能填一个状态,因此这就需要拆分状态。将A拆分为$A_1,A_2$,其中$A_1$表示不改变状态的情况,$A_2$表示要改变到B的情况;同理,将B拆分为$B_1,B_2$,其中$B_1$表示不改变状态的情况,$B_2$表示要改变到A的情况。即可得到状态流程表如下: \includexopp[1.5]{5.7.2} 图中的稳定状态已经圈出。可以注意到:系统总态为$11A_1$的格子的激励状态为$A_2$,不是稳定状态,因此这也就避免了系统总态从$11A_1$到$10A_1$的情况,所以$10A_1$的激励状态就可以填入$A_1$了,同理系统总态为$00A_2$的格子的激励状态为$A_1$,这也不是稳定状态,这也就避免了系统总态从$00A_2$到$10A_2$的情况,所以$10A_2$的激励状态就可以填入$B$了($B_1$或$B_2$均可)。因此这样就解决了拆分前无法填入的问题。 另外还可以注意到系统总态为$01A_1$和$01A_2$的这两个格子只填了A,代表着填入$A_1$或$A_2$均可,因为这里填$A_1$还是$A_2$不会影响输出也不会影响接下来的状态转换。 之后根据状态相邻的关系分配状态避免竞争。观察从不稳定状态转化到稳定状态的过程,可以看到$A_1A_2$应该相邻,$B_1B_2$应该相邻。因此可以分配状态如下:$A_1: 00, A_2: 01, B_1: 11, B_2:00$。之后可以得到新的状态流程表: \includexopp[1.5]{5.7.3} 其中,系统总态($D,CP,y_1,y_2$)为$1001$的格子虽然只要填入B对应的状态就可以了,也就是1d,但是为了防止竞争的产生,这是填入了11;同理系统总态为$0010$的格子也填入了00而不是0d。 于是可以画出$Y_1,Y_2,z$的卡诺图: \includexopp[0.9]{5.7.4}\\ 要注意防止卡诺圈相切造成冒险。 于是可以得到激励方程和输出方程(这里就不化成与非的形式了,电路图中直接使用与非门即可): $$ \begin{aligned} &Y_1=y_1y_2+y_1CP+y_1D+y_2D \bar{CP} \\ &Y_2=\bar{y_1}CP+y_1y_2 \bar{CP}+\bar{y_1}y_2D+y_1D \bar{CP}+y_2D \bar{CP} \\ &z=y_1 \\ \end{aligned} $$ 则可以画出逻辑电路图: \includexopp[1.5]{5.7.5} \end{zhongwen} \pagebreak[1] \item[8.] 试用基本型异步时序电路的设计方法设计一个正边沿触发的JK触发器,要求写出详细的设计过程。提示:将时钟$CP$与激励$J$、$K$作为异步电路的3个输入。 \begin{multicols}{2} \begin{zhongwen} \noindent 同样用上题的做法,先画出未拆分状态的状态流程表: \includexopp{5.8.1} 拆分状态后的状态流程表: \includexopp{5.8.2} 分配状态后: \includexopp{5.8.3} $Y_1,Y_2$的卡诺图($z=y_1$,不用画了): \includexopp{5.8.4} 激励方程与输出方程:\\ $Y_1=y_1 \bar{y_2}+ y_1 \bar{K}+ \bar{y_2} J\ CP + y_1K \bar{CP}$ \\ $Y_2=y_1K \bar{CP} + y_1y_2K+y_2K\ CP+\bar{y_1}y_2\ CP+\bar{y_1} \bar{J}\ CP$ \\ $z=y_1$ \\ 逻辑电路图: \includexopp{5.8.5} \end{zhongwen} \end{multicols} \pagebreak[4] \item[10.] 分析在下面的状态流程表中是否存在临界竞争。若存在则试用最简单的方法消除之。\\ \includegraphics[width=1\linewidth]{imgs/2023-12-27-20-54-39.png} \begin{multicols}{2} \begin{zhongwen} \includexopp{5.10.1} 可以看到存在临界竞争。当系统总态(用$x_1x_2y_1y_2$表示)为0111时和1100时会发生临界竞争。可以直接改变对应位置的激励状态来消除临界竞争: \includexopp{5.10.2} \end{zhongwen} \end{multicols} \item[11.] 试分析下图电路的可靠性,并在不改变电路逻辑功能的前提下修改电路,以确保工作稳定。 \begin{center} \includegraphics[width=0.5\linewidth]{imgs/2023-12-27-21-09-40.png} \end{center} \begin{multicols}{2} \begin{zhongwen} 首先写出激励方程和输出方程(好像输出就是激励)。 $$ \begin{aligned} Y_1&=\overline{\overline{y_1\ \overline{x_1}}\ \overline{x_1\ y_2}}=y_1 \bar{x_1}+x_1y_2 \\ Y_2&=\overline{\overline{x_1\ y_2}\ \overline{y_1x_2 \bar{x_1}}\ \overline{y_1x_1 \bar{x_2}}\ \overline{\bar{x_1} \bar{x_2} \bar{y_1}}} \\ &= x_1y_2+y_1x_2 \bar{x_1}+y_1x_1 \bar{x_2}+\bar{x_1} \bar{x_2} \bar{y_1} \\ \end{aligned} $$ 之后写出状态流程表: \includexopp{5.11.1} $Y_1$应增加冗余项 $y_1y_2$,$Y_2$应增加冗余项$y_1y_2x_2$。\\ 消除临界竞争,$Y_1$需要再增加一项$y_1x_1 \bar{x_2}$。 $Y_1=y_1 \bar{x_1}+x_1y_2+y_1y_2+y_1x_1 \bar{x_2}$ \\ $Y_2=x_1y_2+y_1x_2\bar{x_1}+y_1x_1 \bar{x_2}+ \bar{x_1} \bar{x_2} \bar{y_1} + y_1y_2x_2$ \\ 逻辑电路图修改为: \includexopp{5.11.2} \end{zhongwen} \end{multicols} \item[13.] 试用$D$触发器设计一个13进制异步计数器。 \begin{multicols}{2} \begin{zhongwen} 以$x$作为输入,$y_0,y_1,y_2,y_3$作为从低位到高位的输出,画出时序波形图: \includexopp{5.13.1} 假设D触发器为上升沿有效。根据时钟选择的原则,$CP_0=x$,画出$y_0$的卡诺图如下: \includexopp{5.13.2} $D_0=Q_{0,n+1}=\bar{Q_3} \bar{Q_0}+\bar{Q_2} \bar{Q_0}$ $CP_1=\bar{y_0}$,观察可以发现每次$y_0$的下降沿都会触发$y_1$翻转,所以$Q_1$可以接成T触发器。 $CP_2=x$,其实$CP_2$的卡诺图不需要画了,反正当作全1了。画出$y_2$的卡诺图如下: \includexopp[2]{5.13.3} $D_2=Q_{2,n+1}=\bar{Q_3} Q_2 \bar{Q_1} + \bar{Q_3} Q_2 \bar{Q_0} + \bar{Q_2}Q_1Q_0$ $CP_3=\bar{y_2}$,同样观察可以发现每次$y_2$的下降沿都会触发$y_3$翻转,所以$Q_3$也可以接成T触发器。 所以画出逻辑电路图如下: \includexopp{5.13.4} \end{zhongwen} \end{multicols} \end{enumerate} \end{document}