\documentclass[全部作业]{subfiles}
\usepackage{fp}

\fancyhead{}
\fancyhead[C]{\mysignature}
% 1、2、5、8、10、11、15、18、20
\setcounter{chapter}{3}

\begin{document}
    \renewcommand{\bar}{\xoverline}
    \chapter{同步时序电路}
 
    \begin{enumerate}
        \cnitem[1] 在下图所示电路中，设初始状态为$Q_1=Q_2=Q_3=0$。
        \includexopp[0.8]{4.1.0}
        \begin{enumerate}
            \itemsep 1em
            \item 写出状态转换表，画出状态转换图。
            
            % multicols只能两栏一样
            % 两栏不一样可以用vwcol，不过可能不一定能处理非文本。
            % 还是用minipage吧
            \begin{zhongwen}
                \begin{minipage}{0.8\linewidth}
                    $$
                    \begin{aligned}
                    &Q_{1(n+1)}=X\oplus Q_{1n} \\
                    &Q_{2(n+1)}=(Q_{1n}X)\oplus Q_{2n} \\
                    &Q_{3(n+1)}=(Q_{2n}Q_{1n}X)\oplus Q_{3n}  \\
                    &Z_1=Q_{2n}Q_{3n} \\
                    &Z_2=\overline{Q_{3n}} \\
                    \end{aligned}
                    $$
                    状态转换表为：
                    \begin{table}[H]
                        % \centering
                        \begin{tabular}{c|c|cc|cc}
                        \toprule
                        $状态$ & $Q_3Q_2Q_1$ & $次态X=0$ & $次态X=1$ & $输出Z_1$ & $输出Z_2$ \\
                        \midrule
                        $S_0$ & $000$ & $000$ & $001$ & $0$ & $1$ \\
                        $S_1$ & $001$ & $001$ & $010$ & $0$ & $1$ \\
                        $S_2$ & $010$ & $010$ & $011$ & $0$ & $1$ \\
                        $S_3$ & $011$ & $011$ & $100$ & $0$ & $1$ \\
                        $S_4$ & $100$ & $100$ & $101$ & $0$ & $0$ \\
                        $S_5$ & $101$ & $101$ & $110$ & $0$ & $0$ \\
                        $S_6$ & $110$ & $110$ & $111$ & $1$ & $0$ \\
                        $S_7$ & $111$ & $111$ & $000$ & $1$ & $0$ \\
                        \bottomrule
                        \end{tabular}
                    \end{table}
                \end{minipage}
                \begin{minipage}{0.2\linewidth}
                    状态转换图为：\\（输出为$Z_1Z_2$）\\
                    \includexopp{4.1.1}
                \end{minipage}
            \end{zhongwen}

            \item 分别画出$X=0$和$X=1$的输出波形。
           
            \begin{minipage}{0.3\linewidth}
                \includexopp{4.1.2.1}
                $$
                X=0
                $$
            \end{minipage}
            \hfill 
            \begin{minipage}{0.6\linewidth}
                \includexopp{4.1.2.2}
                $$
                X=1
                $$
            \end{minipage}

        \end{enumerate}

        \item 分析下图电路，画出状态转换图并说明其逻辑功能。
        
        % \includegraphics[width=0.8\linewidth]{imgs/2023-11-26-19-03-38.png}
        \includexopp[0.8]{4.2.0}

        \begin{zhongwen}
            \noindent % 可以取消缩进
            \begin{minipage}{0.55\linewidth}
                输出与当前时刻输入相关，为米利模型。
                $$
                \begin{aligned}
                &Q_{1(n+1)}=X \overline{Q_{1n}}+X Q_{1n}=X \\
                &Q_{2(n+1)}=Z \overline{Q_{2n}}+Z Q_{2n}=Z \\
                &Z=(X+Q_{1n})\ \overline{Q_{2n}} \\
                \end{aligned}
                $$
                状态转换表：
                \begin{table}[H]
                    \begin{tabular}{c|c|cc}
                    \toprule
                    $\multirow{2}{*}{现态}$ & \multirow{2}{*}{$编码Q_1Q_2$} & \multicolumn{2}{c}{$次态Q_{1(n+1)}Q_{2(n+1)}/输出Z$} \\
                    $ $ & $ $ & $X=0$ & $X=1$ \\
                    \midrule
                    $S_0$ & $00$ & $00/0$ & $11/1$ \\
                    $S_1$ & $01$ & $00/0$ & $10/0$ \\
                    $S_2$ & $10$ & $01/1$ & $11/1$ \\
                    $S_3$ & $11$ & $00/0$ & $10/0$ \\
                    \bottomrule
                    \end{tabular}
                \end{table}
            \end{minipage}
            \begin{minipage}{0.45\linewidth}
                状态转换图：\\
                \includexopp{4.2.1}
            \end{minipage}

            没看出这是什么逻辑功能。
        \end{zhongwen}

        \cnitem[5] 试用1个4位二进制同步计数器构成一个可变进制同步计数器。该计数器有一个控制端$S$，要求当$S=0$时实现十进制计数功能，$S=1$时实现十二进制计数功能。画出电路图和状态转换图。

        \begin{zhongwen}
            当$S=0$时，计数器从0到9计数，即当计数器等于9时传递清零信号；
            当$S=1$时，计数器从0到11计数，即当计数器等于11时传递清零信号。
            设$Q_3$为高位，$Q_0$为低位。由于9为二进制的1001，在计数为0到8时不会出现$Q_3$和$Q_0$同时为1的情况，因此可以直接将$Q_3$和$Q_0$通过一个与非门来检测是否到达9；同理，12为二进制的1011，在计数为0到10时不会出现$Q_0,Q_1,Q_3$同时为1的情况，因此可以直接将$Q_0,Q_1,Q_3$通过一个与非门来检测是否到达11，这里为了利用之前检测9用到的与非门，于是增加了一个非门和一个二输入与非门。之后这两种检测的输出需要通过$X$来进行选择，当$X=0$时选择检测9的输出，当$X=1$时选择检测11的输出，之后将输出传递回同步计数器的清零输入端，这样在下一个时刻，计数器就清零了，并且检测到输出后可以通过一个非门，就可以表示进位输出了。

            \includexopp[0.9]{4.5.1}
        \end{zhongwen}

        \cnitem[8] 设计一个“110”序列检测器。当连续输入“110”后输出为1，其余情况输出为0。

        \begin{zhongwen}
            首先设$Q_0$为第一级状态，$Q_1$为第二级状态，用$Q_1Q_0$表示状态，使用两位的移位寄存器，即为左移。使用米利模型，则可以可以画出状态转换图如下：

            \includexopp[2]{4.8.1}

            由于状态转换图比较简单，因此不需要状态转换表和卡诺图，可以直接画出逻辑电路图如下：

            \includexopp[2]{4.8.2}

            其中$X$为输入，$CP$为时钟信号，$Y$为输出。

            如果使用摩尔模型，同样利用移位寄存器，可以直接一步画出逻辑电路图如下：

            \includexopp[2]{4.8.3}

            其中$X$为输入，$CP$为时钟信号，$Y$为输出。
        \end{zhongwen}

        \cnitem[10] 设计一个串行4位奇偶校验电路。一组4位数码从$X_1$输入，输入到第4个数码时，字同步信号$X_2=1$，表示一个字（4位）输入结束。当4个数码中的“1”的个数为奇数时，输出$Z=1$，否则输出为0。

        \begin{zhongwen}
            根据题意，可以设$S_0$表示当前已经接收的1的个数为偶数，$S_1$表示当前已经接收的1的个数为奇数，输入用$X_1X_2$表示，使用米利模型，则可以画出状态转换图如下：

            \includexopp[2]{4.10.1}

            用$Q=0$表示$S_0$，$Q=1$表示$S_1$，$Q_n$表示现态，$Q_{n+1}$表示次态，$Y$表示输出，则可以画出卡诺图如下：

            \includexopp[2]{4.10.2}

            因此$Q_{n+1}=X_1 \bar{X_2} \bar{Q_n} + \bar{X_1} \bar{X_2} Q_n$，$Y=X_1X_2 \bar{Q_n} + \bar{X_1} X_2 Q_n$。由于表达式和JK触发器的表达式接近，所以可以使用JK触发器，于是可以将$Q_{n+1}$的表达式写为$Q_{n+1}=X_1 \bar{X_2} \bar{Q_n} + \overline{X_1+X_2}Q_n$，因此$J=X_1 \bar{X_2}$,$K=X_1+X_2$，于是画出逻辑电路图如下：

            \includexopp[1.5]{4.10.3}
        \end{zhongwen}

        \cnitem[11] 试用JK触发器设计一个同步四进制计数器，它有2个控制端，其功能如下：
        
        \begin{table}[H]
            \centering
            \tabcolsep=2em
            \begin{tabular}{cc||cc}
            \toprule
             $X_1X_2$ & 功能 & $X_1X_2$ & 功能 \\
             \midrule
             $00$ & 保持 & $10$ & 减法计数 \\
             $01$ & 加法计数 & $11$ & 本输入不允许出现 \\
            \bottomrule
            \end{tabular}
        \end{table}

        \begin{zhongwen}
            用$Q_1Q_0$表示计数的状态，其中$Q_1$为高位，$Q_0$为低位。则可以画出$Q_1$和$Q_0$的卡诺图如下：

            \includexopp[1.3]{4.11.1}

            由于JK触发器的状态转换方程为$Q_{n+1}=J \bar{Q_n}+\bar{K}Q_n$，因此需要将卡诺图表达成这样的形式，因此在$Q_{1(n+1)}$的卡诺图上，$Q_{1n}=0$的部分圈1，$Q_{1n}=1$的部分全部取反，也就是圈0（但仍然是写成积之和的形式，仍然是0表示反变量输入），在$Q_{0(n+1)}$的卡诺图上同理。

            % $$
            % \begin{aligned}
            % Q_{1(n+1)} & = \bar{X_2}Q_{1n}Q_{0n}+\bar{X_1}Q_{1n} \bar{Q_{0n}}+\bar{X_1} \bar{X_2}Q_{1n}+X_1 \bar{Q_{1n}} \bar{Q_{0n}}+X_2 \bar{Q_{1n}}Q_{0n}  \\
            % &=(\bar{X_2}Q_{0n}+\bar{X_1} \bar{Q_{0n}}+\bar{X_1} \bar{X_2})Q_{1n}+(X_1 \bar{Q_{0n}}+X_2Q_{0n}) \bar{Q_{1n}} \\
            % \end{aligned}
            % $$

            $$
            Q_{1(n+1)}=\bar{Q_{1n}}(X_1 \bar{Q_{0n}}+X_2Q_{0n})+Q_{1n} \overline{X_2Q_{0n}+X_1\bar{Q_{0n}}}
            $$
            $$
            Q_{0(n+1)}=(X_2+X_1)\bar{Q_{0n}} + \overline{X_1+X_2} Q_{0n}
            $$

            比较JK触发器的状态转换方程可得到：

            $$
            J_1=X_1 \bar{Q_{0n}}+X_2 Q_{0n}
            $$
            % $$
            % \begin{aligned}
            % K_1 & = \overline{\bar{X_2}Q_{0n}+\bar{X_1} \bar{Q_{0n}}+\bar{X_1} \bar{X_2}}  \\
            % & = \overline{\bar{X_2}Q_{0n}}\ \overline{\bar{X_1} \bar{Q_{0n}}}\ \overline{\bar{X_1}\bar{X_2}}  \\
            % & = (X_2+\bar{Q_{0n}})(X_1+Q_{0n})(X_1+X_2)  \\
            % \end{aligned}
            % $$
            $$
            K_1=X_2Q_{0n} + X_1\bar{Q_{0n}}
            $$
            $$
            J_0=X_1+X_2
            $$
            $$
            K_0=X_1+X_2
            $$

            则画出逻辑电路图如下：

            \includexopp[1.5]{4.11.2}
        \end{zhongwen}

        \cnitem[15] 试用D触发器设计一个同步时序电路，能够满足下列状态转换图要求。

        \includexopp[1.5]{4.15.0}

        \begin{zhongwen}
            从状态转换图可以看出是米利模型，用$Q_1Q_2Q_3$表示状态，$X$表示输入，$Y$表示输出，则可以画出卡诺图如下：

            \includexopp[1.5]{4.15.1}

            $$
            Q_{1(n+1)}=\bar{Q_{3n}}X
            $$
            $$
            Q_{2(n+1)}=\bar{Q_{3n}} \bar{X} + Q_{2n}Q_{3n}X
            $$
            $$
            Q_{3(n+1)}=\bar{Q_{1n}} \bar{Q_{2n}} \bar{Q_{3n}} \bar{X} + \bar{Q_{1n}}Q_{3n}\bar{X}
            $$
            $$
            Y=\bar{Q_{1n}}\bar{Q_{2n}}Q_{3n}+\bar{Q_{1n}}Q_{3n}X
            $$

            检查冗余状态，冗余状态的次态只能为$000,010,100$三种，均在正常状态，冗余状态检查通过。

            逻辑电路图如下：

            \includexopp[1.5]{4.15.2}
        \end{zhongwen}

        \cnitem[18] 设计一个单双脉冲发生电路，要求如下：
        当控制端$M=0$时，产生单脉冲序列，如下图(a)所示。其中脉冲宽度为1个时钟周期，间隔宽度为10个时钟周期。
        当控制端$M=1$时，产生双脉冲序列，如下图(b)所示。其中脉冲宽度均为1个时钟周期，两个脉冲之间的间隔为1个时钟周期，每组脉冲之间的间隔宽度为10个时钟周期。

        \includexopp[1.2]{4.18.0}

        \begin{zhongwen}
            由于需要精确10个时钟周期，考虑用计数器实现。当$M=0$时，输出的周期为11个时钟周期，于是可以让计数器从0到10计数；当$M=1$时，输出的周期为13个时钟周期，于是可以让计数器从0到12计数。而输出可以检测计数器的状态，当计数器的状态为10或12时输出1，否则输出0，这样当$M=0$时计数器到达10后就回到1了，所以是单脉冲序列；当$M=1$时计数器的状态为10时输出1,11时输出0，12时输出1，所以是双脉冲序列。

            \includexopp[1.2]{4.18.1}

            上图中$CP$为时钟信号，$M$为控制端，$Y$为输出端。
        \end{zhongwen}

        \cnitem[20] 试用JK触发器（每个触发器只有一组JK输入）和必要的门电路设计一个满足下列状态关系的同步时序电路，要求电路尽可能简单。
        
        \includexopp{4.20.0}

        \begin{zhongwen}
            首先使用隐含表法进行状态化简：

            \includexopp[2]{4.20.1}

            可知$S_0$与$S_5$等价，$S_1$、$S_4$、$S_6$等价。
            于是原状态转换表可化为：

            \begin{table}[H]
                \centering
                \tabcolsep=2em
                \begin{tabular}{c|c|c|c|c}
                \toprule
                 \multirow{2}{*}{现态} & \multicolumn{2}{c}{次态} \vline& \multicolumn{2}{c}{输出} \\
                 $ $ & $X=0$ & $X=1$ & $X=0$ & $X=1$ \\
                 \midrule
                 $S_0$ & $S_0$ & $S_1$ & $0$ & $1$ \\
                 $S_1$ & $S_1$ & $S_3$ & $0$ & $0$ \\
                 $S_2$ & $S_3$ & $S_1$ & $1$ & $0$ \\
                 $S_3$ & $S_0$ & $S_1$ & $1$ & $1$ \\
                \bottomrule
                \end{tabular}
            \end{table}

            根据状态编码的分配规则，将$S_0S_1S_2S_3$分别编码为$00,01,10,11$。
            用$Q_1Q_0$表示状态，$Y$表示输出。
            则卡诺图如下：

            \includexopp{4.20.2}

            $$
            Q_{1(n+1)}=Q_{1n} \overline{X+ \bar{Q_{0n}}}+\bar{Q_{1n}}Q_{0n}X
            $$
            $$
            Q_{0(n+1)}=Q_{0n} \overline{0}+\bar{Q_{0n}}X
            $$
            $$
            Y=Q_{1n} \bar{X}+\bar{Q_{0n}} X+Q_{1n} \bar{Q_{0n}}
            $$

            $$
            J_1=Q_{0n}X
            $$
            $$
            K_1=X+\bar{Q_{0n}}
            $$
            $$
            J_0=X
            $$
            $$
            K_0=0
            $$

            逻辑电路图如下：

            \includexopp[1.5]{4.20.3}
        \end{zhongwen}
    \end{enumerate}
\end{document}