\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}