%\documentclass[dvipdfmx,t,serif,mathserif,14pt]{beamer} % t: from top; serif: rmdefault
\documentclass[dvipdfmx,t,14pt]{beamer} % t: from top; serif: rmdefault
\usepackage{mybeamer}

\newcommand{\PDFTITLE}{論理回路入門（12）}
\newcommand{\PDFSUBJECT}{一年生秋学期}
\newcommand{\PDFAUTHOR}{法政大学情報科学部}
\newcommand{\PDFKEYWORDS}{
  有限状態機械、
  順序回路の基本構造、
  順序回路の分析、
  Mealy 型と~Moore 型順序回路、
  順序回路設計の手順、
  状態遷移図、
  次の状態の真理値表、論理式、および回路、
  出力関数の真理値表、論理式、および回路、
  交通信号機制御システム}
  
\date{2023 年 12 月 12 日 (火)}

\title{\PDFTITLE} % bottom PDFTITLE
\subtitle{有限状態機械と順序回路設計}
\author[\PDFAUTHOR]{李　亜民}% bottom PDFAUTHOR; titlepage Yamin Li

\hypersetup{
  pdftitle=\PDFTITLE,
  pdfsubject=\PDFSUBJECT,
  pdfauthor=\PDFAUTHOR,
  pdfkeywords=\PDFKEYWORDS
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\everymath={\sf}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{\PDFTITLE}
\begin{frame}
  \titlepage
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%------------------------------------------------ SLIDE -
\input{mybackgroundcolor.tex}
%------------------------------------------------ SLIDE -
\section{順序回路}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\textcolor{blue}{ポイント}

\begin{itemize}
\setlength{\itemsep}{2.6mm}
\color{blue}
\item 順序回路の基本構造
\item 順序回路の分析
\item Mealy 型と~Moore 型順序回路
\item 順序回路設計の手順
\item 状態遷移図
\item 次の状態の真理値表、論理式、および回路
\item 出力関数の真理値表、論理式、および回路
\item 交通信号機制御システム
\end{itemize}

\end{frame}
%------------------------------------------------ SLIDE -
\section{論理回路の種類}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\fontsize{13pt}{14}\selectfont
\begin{enumerate}

\item 組み合わせ回路~(Combinational Circuit): \textcolor{blue}{現在の入力のみで出力が決まる回路である}。

\vspace{2mm}
\includegraphics{figs/combinational.pdf}

\vspace{1mm}
\item 順序回路~(Sequential Circuit): \textcolor{blue}{内部状態と入力信号で\\出力が決まる回路である}。有限状態機械 (Finite state machine --- FSM) とも呼ばれる。

\vspace{2mm}
\includegraphics{figs/sequential2.pdf}

\end{enumerate}
\end{frame}
%------------------------------------------------ SLIDE -
\section{順序回路の分析}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\includegraphics[width=.82\textwidth]{figs/seq_ex.pdf}

\vspace{5mm}
もし、こうゆうふうな回路があれば、

\vspace{5mm}
D1, D0, Z の論理式？\hspace{3mm}
真理値表？\hspace{3mm}
状態遷移図？
\end{frame}
%------------------------------------------------ SLIDE -
\section{順序回路の分析~--- 論理式}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\includegraphics[width=.82\textwidth]{figs/seq_ex.pdf}

\vspace{5mm}
\fontsize{13pt}{15}\selectfont
\renewcommand{\arraystretch}{1.2}
\tabcolsep=3pt
\begin{tabular}{lll}
$D1$ & $=$ & \pause $Q1 \cdot Q0 + \overline{Q1} \cdot \overline{X}$\\
$D0$ & $=$ & \pause $\overline{Q0} \cdot \overline{X} + \overline{Q1}\cdot \overline{Q0} + \overline{Q1} \cdot \overline{X}$\\
$Z$  & $=$ & \pause $Q1 \cdot X$
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{順序回路の分析~--- 真理値表}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\includegraphics[width=.4\textwidth]{figs/seq_ex.pdf}


\vspace{-23mm}
\hspace*{48mm}
\fontsize{11pt}{13}\selectfont
\renewcommand{\arraystretch}{1.2}
\tabcolsep=3pt
\begin{tabular}{lll}
$D1$ & $=$ & $Q1 \cdot Q0 + \overline{Q1} \cdot \overline{X}$\\
$D0$ & $=$ & $\overline{Q0} \cdot \overline{X} + \overline{Q1}\cdot \overline{Q0} + \overline{Q1} \cdot \overline{X}$\\
$Z$  & $=$ & $Q1 \cdot X$
\end{tabular}

\vspace{10mm}
\fontsize{8pt}{10}\selectfont
\renewcommand{\arraystretch}{1.265}
\tabcolsep=5pt
\begin{tabular}{ccc|c|ccc|c}\hline
\multicolumn{3}{c|}{現在の状態} & 入力 & \multicolumn{3}{c|}{次の状態} & 出力\\\hline
   & Q1 & Q0 & X &           & D1 & D0 & Z\\\hline\hline
S0 &  0 &  0 & 0 & \pause S3 &  1 &  1 & 0\\\cline{4-8}
   &    &    & 1 & \pause S1 &  0 &  1 & 0\\\hline
S1 &  0 &  1 & 0 & \pause S3 &  1 &  1 & 0\\\cline{4-8}
   &    &    & 1 & \pause S0 &  0 &  0 & 0\\\hline
S2 &  1 &  0 & 0 & \pause S1 &  0 &  1 & 0\\\cline{4-8}
   &    &    & 1 & \pause S0 &  0 &  0 & 1\\\hline
S3 &  1 &  1 & 0 & \pause S2 &  1 &  0 & 0\\\cline{4-8}
   &    &    & 1 & \pause S2 &  1 &  0 & 1\\\hline
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{順序回路の分析~--- 状態遷移図}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\includegraphics[width=.4\textwidth]{figs/seq_ex.pdf}

\vspace{-23mm}
\hspace*{48mm}
\fontsize{11pt}{13}\selectfont
\renewcommand{\arraystretch}{1.2}
\tabcolsep=3pt
\begin{tabular}{lll}
$D1$ & $=$ & $Q1 \cdot Q0 + \overline{Q1} \cdot \overline{X}$\\
$D0$ & $=$ & $\overline{Q0} \cdot \overline{X} + \overline{Q1}\cdot \overline{Q0} + \overline{Q1} \cdot \overline{X}$\\
$Z$  & $=$ & $Q1 \cdot X$
\end{tabular}

\vspace{10mm}
\fontsize{8pt}{10}\selectfont
\renewcommand{\arraystretch}{1.265}
\tabcolsep=5pt
\begin{tabular}{ccc|c|ccc|c}\hline
\multicolumn{3}{c|}{現在の状態} & 入力 & \multicolumn{3}{c|}{次の状態} & 出力\\\hline
   & Q1 & Q0 &\color{red}X &    & D1 & D0 &\color{red}Z\\\hline\hline
S0 &  0 &  0 &\color{red}0 & S3 &  1 &  1 &\color{red}0\\\cline{4-8}
   &    &    &\color{red}1 & S1 &  0 &  1 &\color{red}0\\\hline
S1 &  0 &  1 &\color{red}0 & S3 &  1 &  1 &\color{red}0\\\cline{4-8}
   &    &    &\color{red}1 & S0 &  0 &  0 &\color{red}0\\\hline
S2 &  1 &  0 &\color{red}0 & S1 &  0 &  1 &\color{red}0\\\cline{4-8}
   &    &    &\color{red}1 & S0 &  0 &  0 &\color{red}1\\\hline
S3 &  1 &  1 &\color{red}0 & S2 &  1 &  0 &\color{red}0\\\cline{4-8}
   &    &    &\color{red}1 & S2 &  1 &  0 &\color{red}1\\\hline
\end{tabular}

\vspace{-47mm}
\hspace*{66mm}
真理値表 $\Rightarrow$ 状態遷移図 (分析の手順):

\vspace{5mm}
\hspace*{66mm}
\includegraphics[width=.41\textwidth]{figs/seq_ex_state.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{順序回路の実装~--- 回路}
\begin{frame}[fragile]\frametitle{\scalebox{.98}{\secname}}
\fontsize{8pt}{8}\selectfont
\renewcommand{\arraystretch}{1.2}
\tabcolsep=3pt
\begin{tabular}{lll}
$D1$ & $=$ & $Q1 \cdot Q0 + \overline{Q1} \cdot \overline{X}$\\
$D0$ & $=$ & $\overline{Q0} \cdot \overline{X} + \overline{Q1}\cdot \overline{Q0} + \overline{Q1} \cdot \overline{X}$\\
$Z$  & $=$ & $Q1 \cdot X$
\end{tabular}

\begin{code}
`timescale 1ns/1ns
module seq_ex (CLK, CLRN, X, Z, Q);
    input        CLK, CLRN, X;
    output       Z; // output
    output [1:0] Q;

    reg    [1:0] Q; // current state
    wire   [1:0] D; // next state
    // 1. next state -------------------------------------- 1
    assign D[1] =  Q[1] &  Q[0] | ~Q[1] & ~X;
    assign D[0] = ~Q[0] & ~X    | ~Q[1] & ~Q[0] | ~Q[1] & ~X;
    // 2. outputs ----------------------------------------- 2
    assign Z    =  Q[1] &  X;
    // 3. DFFs -------------------------------------------- 3
    always @(posedge CLK or negedge CLRN) begin // DFFs
        if (CLRN == 0) begin
            Q <= 0;
        end else begin
            Q <= D;
        end
    end
endmodule
\end{code}

\vspace{-8mm}
\hfill
\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/seq_ex.v}{\color{blue}\underline{seq\_ex.v}}~~~

\end{frame}
%------------------------------------------------ SLIDE -
\section{順序回路の検証~--- テストベンチ}
\begin{frame}[fragile]\frametitle{\scalebox{.98}{\secname}}
\vspace{-1.7mm}
\fontsize{8pt}{8}\selectfont
\begin{code}
`timescale 1ns/1ns
module seq_ex_tb;
    reg        X, CLK, CLRN;
    wire       Z;
    wire [1:0] Q;

    seq_ex i0 (CLK, CLRN, X, Z, Q);

    initial begin
        #0 CLRN = 0; CLK = 1; X = 0;
        #1 CLRN = 1;
        #6 X = 1;
        #2 X = 0;
        #2 X = 1;
        #6 X = 0;
        #3 $finish;
    end

    always #1 CLK = ~CLK;

    initial begin
        $dumpfile ("seq_ex.vcd");
        $dumpvars;
    end

endmodule
\end{code}

\vspace{-8.81mm}
\hfill
\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/seq_ex_tb.v}{\color{blue}\underline{seq\_ex\_tb.v}}~~~

\end{frame}
%------------------------------------------------ SLIDE -
\section{順序回路の検証~--- 波形}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\includegraphics[width=\textwidth]{figs/seq_ex_vcd_crop.png}

\vspace{5mm}
\includegraphics[width=.38\textwidth]{figs/seq_ex_state.pdf}

\vspace{-35mm}
\hspace*{51mm}
\fontsize{10pt}{12}\selectfont
\renewcommand{\arraystretch}{1.2}
\tabcolsep=3pt
\begin{tabular}{lll}
$D1$ & $=$ & $Q1 \cdot Q0 + \overline{Q1} \cdot \overline{X}$\\
$D0$ & $=$ & $\overline{Q0} \cdot \overline{X} + \overline{Q1}\cdot \overline{Q0} + \overline{Q1} \cdot \overline{X}$\\
$Z$  & $=$ & $Q1 \cdot X$\\[13pt]
\multicolumn{3}{l}{テストベンチを作成するときは、}\\
\multicolumn{3}{l}{状態遷移図のすべての状態と遷移}\\
\multicolumn{3}{l}{を確認しなければならない。}\\
\end{tabular}

\end{frame}
%------------------------------------------------ SLIDE -
\section{順序回路~--- Mealy 型と~Moore 型}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\includegraphics[width=\textwidth]{figs/fsm.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{順序回路設計の手順}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\fontsize{12pt}{14}\selectfont
\begin{enumerate}
\setlength{\itemsep}{1.4mm}
\item 問題を理解する。\pause 
\item 状態遷移図をつくる。\pause 
\item FF の数を決める~{{($n=\lceil log_2N\rceil$、$N$ は状態の数)。}}\pause 
\item 各状態に\,$n$\,ビットの番号を付け、真理値表をつくる。

\vspace{-1mm}
    {\color{blue}\begin{itemize}
    \item 次の状態の真理値表をつくる。
    \item 出力関数の真理値表をつくる。
    \end{itemize}}\pause 

\vspace{-2mm}
\item 真理値表から論理式をつくる~(どの条件で出力が\,１\,になるか)。

\vspace{-1mm}
    {\color{blue}\begin{itemize}
    \item カルノー図を用いて論理式を簡単化する。
    \end{itemize}}\pause 

\vspace{-2mm}
\item 論理式から回路をつくる。\pause 
\item テストベンチをつくる~(シミュレーションするため)。\pause 
\item 回路をシミュレーションする~(回路設計の正当性検証)。\pause 
\item 与えられた回路の動作を理解する~(波形の説明)。
\end{enumerate}
\end{frame}
%------------------------------------------------ SLIDE -
\section{交通信号機制御システム（問題）}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\includegraphics[width=.98\textwidth]{figs/traffic.pdf}

\fontsize{10pt}{12}\selectfont

\vspace{-68mm}
\hspace*{65mm}
Traffic sensors $S_{EW}$ and $S_{SN}$

\hspace*{81mm}
(1 if there is traffic) 

\hspace*{65mm}
Lights $L_{EW}$ and $L_{SN}$

\vspace{5mm}
\hspace*{82mm}
\tabcolsep=3pt
\begin{tabular}{ccl}
Rxx & Gxx\phantom{:} & Color\\
0& 1:& Green\\
1& 0:& Red\\
1& 1:& Yellow
\end{tabular}

\vspace{31mm}
EW: East and West (東西)

SN: South and North (南北)

\vspace{-35mm}
\hspace*{36mm}
\includegraphics[width=.6\textwidth]{rgb_color.pdf}


\end{frame}
%------------------------------------------------ SLIDE -
\section{交通信号機制御（回路）}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\includegraphics[width=\textwidth]{figs/tlc_lecture.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{交通信号機制御（状態遷移図）}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\includegraphics[width=\textwidth]{figs/traffic_state.pdf}

\fontsize{12pt}{12}\selectfont

\vspace{-49mm}
\begin{center}
\color{magenta}
DFF の数

$n=\lceil log_2N\rceil=\lceil log_24\rceil=2$
\end{center}
\end{frame}
%------------------------------------------------ SLIDE -
\section{交通信号機制御（次の状態の真理値表）}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
次の状態の真理値表

(状態遷移表)

\vspace{-12mm}
\hspace*{59mm}
\includegraphics[width=.42\textwidth]{figs/traffic_state.pdf}

\vspace{3mm}
\fontsize{10pt}{12}\selectfont
\renewcommand{\arraystretch}{1.15}
\tabcolsep=12pt
\begin{tabular}{ccc|cc|ccc}\hline
\multicolumn{3}{c|}{現在の状態} & \multicolumn{2}{c|}{入力} & \multicolumn{3}{c}{次の状態}\\\hline
   & Q1 & Q0 & $S_{EW}$ & $S_{SN}$ & & D1 & D0\\\hline\hline
S0 &  0 &  0 & 0 & X & \pause S1 &  0 &  1 \\\cline{4-8}
   &    &    & 1 & X & \pause S0 &  0 &  0 \\\hline

S1 &  0 &  1 & X & X & \pause S2 &  1 &  0 \\\hline

S2 &  1 &  0 & X & 0 & \pause S3 &  1 &  1 \\\cline{4-8}
   &    &    & X & 1 & \pause S2 &  1 &  0 \\\hline

S3 &  1 &  1 & X & X & \pause S0 &  0 &  0 \\\hline
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{交通信号機制御（次の状態の論理式）}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\fontsize{10pt}{12}\selectfont
\renewcommand{\arraystretch}{1.15}
\tabcolsep=12pt
\begin{tabular}{ccc|cc|ccc}\hline
\multicolumn{3}{c|}{現在の状態} & \multicolumn{2}{c|}{入力} & \multicolumn{3}{c}{次の状態}\\\hline
   & Q1 & Q0 & $S_{EW}$ & $S_{SN}$ & & D1 & D0\\\hline\hline
S0 &  0 &  0 & 0 & X & S1 &  0 &  1 \\\cline{4-8}
   &    &    & 1 & X & S0 &  0 &  0 \\\hline

S1 &  0 &  1 & X & X & S2 &  1 &  0 \\\hline

S2 &  1 &  0 & X & 0 & S3 &  1 &  1 \\\cline{4-8}
   &    &    & X & 1 & S2 &  1 &  0 \\\hline

S3 &  1 &  1 & X & X & S0 &  0 &  0 \\\hline
\end{tabular}

\vspace{9mm}
次の状態の論理式

\vspace{7mm}
\renewcommand{\arraystretch}{1.4}
{\color{red}
\tabcolsep=1pt
\begin{tabular}{ccl}
$D1$ & $=$ & $\overline{Q1} \cdot Q0 + Q1 \cdot \overline{Q0}$\\
$D0$ & $=$ & $\overline{Q1} \cdot \overline{Q0} \cdot \overline{S_{EW}} + Q1 \cdot \overline{Q0} \cdot \overline{S_{SN}}$
\end{tabular}
}

\vspace{-26mm}
\hspace*{54mm}
\includegraphics[width=.52\textwidth]{figs/traffic_karnaugh.pdf}


\end{frame}
%------------------------------------------------ SLIDE -
\section{交通信号機制御（次の状態の回路）}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\renewcommand{\arraystretch}{1.4}
{\color{red}
\tabcolsep=1pt
\begin{tabular}{ccl}
$D1$ & $=$ & $\overline{Q1} \cdot Q0 + Q1 \cdot \overline{Q0}$\\
$D0$ & $=$ & $\overline{Q1} \cdot \overline{Q0} \cdot \overline{S_{EW}} + Q1 \cdot \overline{Q0} \cdot \overline{S_{SN}}$
\end{tabular}
}

\vspace{2mm}
\includegraphics[width=\textwidth]{figs/tlc_lecture_next_state.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{交通信号機制御（出力関数の真理値表）}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\fontsize{12pt}{14}\selectfont
出力関数の真理値表

\vspace{3mm}
\renewcommand{\arraystretch}{1.1}
\tabcolsep=3pt
\begin{tabular}{llllll}
& S0: & $L_{EW}$: & Green;  & $L_{SN}$: & Red\\
& S1: & $L_{EW}$: & Yellow; & $L_{SN}$: & Red\\
& S2: & $L_{EW}$: & Red;    & $L_{SN}$: & Green\\
& S3: & $L_{EW}$: & Red;    & $L_{SN}$: & Yellow\\
\end{tabular}

\vspace{-30.2mm}
\hspace*{55mm}
\tabcolsep=3pt
\begin{tabular}{cccl}
Color encoding:~ & R & G\phantom{:} & Color\\
&0& 1:& Green\\
&1& 0:& Red\\
&1& 1:& Yellow
\end{tabular}

\vspace{15mm}
\renewcommand{\arraystretch}{1.15}
\tabcolsep=13pt
\begin{tabular}{ccc|cc|cc}\hline
\multicolumn{3}{c|}{現在の状態} & \multicolumn{4}{c}{出力}\\\hline
   & Q1 & Q0 & $R_{EW}$ & $G_{EW}$ & $R_{SN}$ & $G_{SN}$ \\\hline\hline
S0 &  0 &  0 & 0 & 1 & 1 & 0\\\hline
S1 &  0 &  1 & 1 & 1 & 1 & 0\\\hline
S2 &  1 &  0 & 1 & 0 & 0 & 1\\\hline
S3 &  1 &  1 & 1 & 0 & 1 & 1\\\hline
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{交通信号機制御（出力関数の論理式）}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\fontsize{10pt}{12}\selectfont
\renewcommand{\arraystretch}{1.15}
\tabcolsep=15pt
\begin{tabular}{ccc|cc|cc}\hline
\multicolumn{3}{c|}{現在の状態} & \multicolumn{4}{c}{出力}\\\hline
   & Q1 & Q0 & $R_{EW}$ & $G_{EW}$ & $R_{SN}$ & $G_{SN}$ \\\hline\hline
S0 &  0 &  0 & 0 & 1 & 1 & 0\\\hline
S1 &  0 &  1 & 1 & 1 & 1 & 0\\\hline
S2 &  1 &  0 & 1 & 0 & 0 & 1\\\hline
S3 &  1 &  1 & 1 & 0 & 1 & 1\\\hline
\end{tabular}

\vspace{8mm}
出力関数の論理式

\vspace{6mm}
\renewcommand{\arraystretch}{1.4}
{\color{red}
\tabcolsep=1pt
\begin{tabular}{ccl}
$R_{EW}$ & $=$ & $Q1 + Q0$\\
$G_{EW}$ & $=$ & $\overline{Q1}$\\
$R_{SN}$ & $=$ & $\overline{Q1} + Q0$\\
$G_{SN}$ & $=$ & $Q1$\\
\end{tabular}
}

\vspace{-23mm}
\hspace*{33mm}
\includegraphics[width=.67\textwidth]{figs/traffic_karnaugh_output.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{交通信号機制御（出力関数の回路）}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\renewcommand{\arraystretch}{1.4}
{\color{red}
\tabcolsep=1pt
\begin{tabular}{ccl}
$R_{EW}$ & $=$ & $Q1 + Q0$\\
$G_{EW}$ & $=$ & $\overline{Q1}$\\
$R_{SN}$ & $=$ & $\overline{Q1} + Q0$\\
$G_{SN}$ & $=$ & $Q1$\\
\end{tabular}
}

\vspace{-4mm}
\includegraphics[width=.9\textwidth]{figs/tlc_lecture_outputs.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{交通信号機制御（回路）}
\begin{frame}[fragile]\frametitle{\scalebox{.98}{\secname}}
\vspace{-2mm}
\fontsize{8pt}{8.4}\selectfont
\begin{code}
`timescale 1ns/1ns
module tlc_system (CLK, CLRN, SEW, SSN, REW, GEW, RSN, GSN);
    input  CLK, CLRN, SEW, SSN;
    output REW, GEW, RSN, GSN; // outputs

    reg    [1:0] Q; // current state
    wire   [1:0] D; // next state
    // 1. next state -------------------------------------- 1
    assign D[1] = ~Q[1] &  Q[0] | Q[1] & ~Q[0];
    assign D[0] = ~Q[1] & ~Q[0] & ~SEW | Q[1] & ~Q[0] & ~SSN;
    // 2. outputs ----------------------------------------- 2
    assign REW =  Q[1] | Q[0];
    assign GEW = ~Q[1];
    assign RSN = ~Q[1] | Q[0];
    assign GSN =  Q[1];
    // 3. DFFs -------------------------------------------- 3
    always @(posedge CLK or negedge CLRN) begin // DFFs
        if (CLRN == 0) begin
            Q <= 0;
        end else begin
            Q <= D;
        end
    end
endmodule
\end{code}

\vspace{-9mm}
\hfill
\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/tlc_system.v}{\color{blue}\underline{tlc\_system.v}}~~~

\end{frame}
%------------------------------------------------ SLIDE -
\section{交通信号機制御（テストベンチ）}
\begin{frame}[fragile]\frametitle{\scalebox{.98}{\secname}}
\vspace{-2mm}
\fontsize{8pt}{8.4}\selectfont
\begin{code}
`timescale 1ns/1ns
module tlc_system_tb;
    reg  CLK, CLRN, SEW, SSN;
    wire REW, GEW, RSN, GSN;

    tlc_system i0 (CLK, CLRN, SEW, SSN, REW, GEW, RSN, GSN);

    initial begin
        #0 CLK  = 1; CLRN = 0; SEW = 1; SSN = 0;
        #1 CLRN = 1;
        #4 SEW  = 0;
        #2 SSN  = 1;
        #4 SSN  = 0;
        #22 $finish;
    end

    always #1 CLK = ~CLK;

    initial begin
        $dumpfile ("tlc_system.vcd");
        $dumpvars;
    end

endmodule
\end{code}

\vspace{-9mm}
\hfill
\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/tlc_system_tb.v}{\color{blue}\underline{tlc\_system\_tb.v}}~~~

\end{frame}
%------------------------------------------------ SLIDE -
\section{交通信号機制御（波形）}
\begin{frame}[fragile]\frametitle{\scalebox{.98}{\secname}}
\fontsize{11pt}{11}\selectfont

\vspace{-4mm}
\begin{verbatim}
% iverilog -Wall -o tlc_system tlc_system_tb.v tlc_system.v
% ./tlc_system
% gtkwave tlc_system.vcd
\end{verbatim}
\includegraphics[width=\textwidth]{figs/tlc_system_vcd_crop.png}

\vspace{1mm}
\hspace*{3.4mm}
\includegraphics[width=.96\textwidth]{figs/tlc_wave_mark.pdf}

\vspace{2mm}
\fontsize{7.5pt}{8pt}\selectfont
%\resizebox{\textwidth}{!}{この回路は良くない。車がなくても信号の色がぐるぐる変わる。}
この回路では、どの方向からも車が来ないとき、信号機の色が変わり続けたり、一方から車が来続けると、

\vspace{-2mm}
たとえもう一方に多くの車があってもずっと信号が変わらなかったりするという問題があった。%この問題を、一定時間で信号を変えることのできる Timer を追加することで解決した。また、RGどちらも１の時、黄色が１であることを表現していたが、Y の出力を新たに追加して表現している。
\end{frame}
%------------------------------------------------ SLIDE -
\section{順序回路設計の手順}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\fontsize{12pt}{14}\selectfont
\begin{enumerate}
\setlength{\itemsep}{1.4mm}
\item 問題を理解する。 
\item 状態遷移図をつくる。 
\item FF の数を決める~{{($n=\lceil log_2N\rceil$、$N$ は状態の数)。}} 
\item 各状態に\,$n$\,ビットの番号を付け、真理値表をつくる。

\vspace{-1mm}
    {\color{blue}\begin{itemize}
    \item 次の状態の真理値表をつくる。
    \item 出力関数の真理値表をつくる。
    \end{itemize}} 

\vspace{-2mm}
\item 真理値表から論理式をつくる~(どの条件で出力が\,１\,になるか)。

\vspace{-1mm}
    {\color{blue}\begin{itemize}
    \item カルノー図を用いて論理式を簡単化する。
    \end{itemize}} 

\vspace{-2mm}
\item 論理式から回路をつくる。 
\item テストベンチをつくる~(シミュレーションするため)。 
\item 回路をシミュレーションする~(回路設計の正当性検証)。 
\item 与えられた回路の動作を理解する~(波形の説明)。
\end{enumerate}
\end{frame}
%------------------------------------------------ SLIDE -
\section{順序回路~--- Mealy 型と~Moore 型}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\includegraphics[width=\textwidth]{figs/fsm.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{順序回路のまとめ}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\textcolor{blue}{まとめ}

\begin{itemize}
\setlength{\itemsep}{2.6mm}
\color{blue}
\item 順序回路の基本構造
\item 順序回路の分析
\item Mealy 型と~Moore 型順序回路
\item 順序回路設計の手順
\item 状態遷移図
\item 次の状態の真理値表、論理式、および回路
\item 出力関数の真理値表、論理式、および回路
\item 交通信号機制御システム
\end{itemize}

\end{frame}
%------------------------------------------------ SLIDE -
\section{課題~XII (200 点)}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\fontsize{11pt}{11}\selectfont
\mbox{交通信号機制御システムを設計し動作検証シミュレーションして下さい。}

\vspace{2mm}
\includegraphics[width=.27\textwidth]{figs/traffic_ex.pdf}

\vspace{3mm}
状態の割り当ては最後のページの波形を参照してください。注意事項: 

\vspace{1mm}
~~~~~~(1) もし~$\mathsf{SEW=SSN=0}$, 状態変化なし~(Timer: ドントケア)

\vspace{1mm}
~~~~~~(2) もし~$\mathsf{SEW \neq SSN}$, 状態遷移を有効にする~(Timer: ドントケア)

\vspace{1mm}
~~~~~~(3) もし~$\mathsf{SEW=SSN=1}$ かつ~$Timer =1$, 状態遷移を有効にする

\vspace{1mm}
~~~~~~(4) もし~$\mathsf{SEW=SSN=1}$ かつ~$Timer =0$, 状態遷移を無効にする

\vspace{2mm}
モジュール名は~\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/tlc.v}{\color{blue}\underline{tlc.v}} にすること。\\
テストベンチ~\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/tlc_tb.v}{\color{blue}\underline{tlc\_tb.v}} を使って下さい。

%\vspace{3mm}
%\resizebox{\textwidth}{!}{レポートの必須項目: 状態遷移図、真理値表、カルノー図、論理式、回路、波形の説明。}

\vspace{-66mm}
\hspace*{31mm}
\tabcolsep=5pt
\begin{tabular}{llcll}
S:     & センサー &~~~~& R: & 赤信号~(1: 点灯; 0: 消灯)\\
EW:    & 東西    &~~~~& Y: & 黄信号~(1: 点灯; 0: 消灯)\\
SN:    & 南北    &~~~~& G: & 緑信号~(1: 点灯; 0: 消灯)\\[2pt]
\end{tabular}

\hspace*{32mm}
\tabcolsep=2pt
\begin{tabular}{llcll}
\textcolor{magenta}
          {Timer $=$ 1}: 
          & \multicolumn{4}{l}{\color{blue} $SEW=SSN=1$ (東西と南北車がある)}\\
          & \multicolumn{4}{l}{\color{blue} $\Rightarrow$ 状態遷移を有効にする。}\\
          {Timer $=$ 0}:
          & \multicolumn{4}{l}{\color{red}  $SEW=SSN=1$ (東西と南北車がある)}\\
          & \multicolumn{4}{l}{\color{red}  $\Rightarrow$ 状態遷移を無効にする~(維持する)。}
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{課題~XII (200 点)}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\fontsize{11pt}{11}\selectfont
\includegraphics[width=\textwidth]{figs/tlc.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{課題~XII (200 点)}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\fontsize{11pt}{11}\selectfont
レポートの必須項目:

\vspace{4.13mm}
(1) 状態遷移図

\vspace{11.6mm}
(2) 次の状態next\_stateの真理値表

\vspace{5mm}
(3) 次の状態next\_state各出力信号のカルノー図

\vspace{5mm}
(4) 次の状態next\_stateの論理式

\vspace{5mm}
~~~~~~D[1] =

\vspace{4mm}
~~~~~~D[0] =

\vspace{5mm}
(5) 次の状態next\_stateの回路図

\end{frame}
%------------------------------------------------ SLIDE -
\section{課題~XII (200 点)}
\begin{frame}\frametitle{\scalebox{.98}{\secname}}
\fontsize{11pt}{11}\selectfont

(6) 出力関数outputsの真理値表

\vspace{5mm}
(7) 出力関数outputs各出力信号のカルノー図

\vspace{5mm}
(8) 出力関数outputsの論理式

\vspace{5mm}
~~~~~~REW = 

\vspace{2mm}
~~~~~~YEW = 

\vspace{2mm}
~~~~~~GEW = 

\vspace{2mm}
~~~~~~RSN = 

\vspace{2mm}
~~~~~~YSN = 

\vspace{2mm}
~~~~~~GSN = 

\vspace{7mm}
(9) 出力関数outputsの回路図

\end{frame}
%------------------------------------------------ SLIDE -
\section{課題~XII (200 点)}
\begin{frame}[fragile]\frametitle{\scalebox{.98}{\secname}}
\vspace{-2mm}
\fontsize{8pt}{8.2}\selectfont
\begin{code}
`timescale 1ns/1ns
module tlc (CLK,CLRN,SEW,SSN,Timer,REW,YEW,GEW,RSN,YSN,GSN);
    input  CLK,CLRN,SEW,SSN,Timer;
    output REW,YEW,GEW,RSN,YSN,GSN;
    reg    [1:0] Q; // current state
    wire   [1:0] D; // next state
    // 1. next state -------------------------------------- 1
    assign D[1] = ;
    assign D[0] = ;
    // 2. outputs ----------------------------------------- 2
    assign REW = ;
    assign YEW = ;
    assign GEW = ;
    assign RSN = ;
    assign YSN = ;
    assign GSN = ;
    // 3. DFFs -------------------------------------------- 3
    always @(posedge CLK or negedge CLRN) begin // DFFs
        if (CLRN == 0) begin
            Q <= 0;
        end else begin
            Q <= D;
        end
    end
endmodule
\end{code}

\vspace{-9mm}
\hfill
\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/tlc.v}{\color{blue}\underline{tlc.v}}~~~

\end{frame}
%------------------------------------------------ SLIDE -
\section{課題~XII (200 点)}
\begin{frame}[fragile]\frametitle{\scalebox{.98}{\secname}}
\fontsize{10pt}{10}\selectfont

\vspace{-5mm}
\begin{verbatim}
% iverilog -Wall -o tlc tlc_tb.v tlc.v
% ./tlc
% gtkwave tlc.vcd
\end{verbatim}

\vspace{-2mm}
\includegraphics[width=.95\textwidth]{figs/tl_controller_vcd_crop.png}

\vspace{-1mm}
\hspace*{54mm}
{\color{magenta}
$\underbrace{~~~~~~~~~~~~~~}$~~
$\underbrace{~~~~~~~~~~~~~~}$

\vspace{1mm}
\hspace*{53mm}
$Timer =0$, 維持する
}

\vspace{2mm}
\fontsize{8.7pt}{9}\selectfont
MAC対応: 
ターミナルでgtkwave起動後SSTのtlc\_tbの左側にある三角形のボタンを押し、表示されたi0を選択することで機械の中の信号も全て摘出することができます。

\color{red}
Windows/ModelSim対応:
add wave -r /*

\vspace{-19mm}
\hspace*{100mm}
\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/tlc_tb.v}{\color{blue}\underline{tlc\_tb.v}}

\end{frame}
%------------------------------------------------ SLIDE -
\end{document}
%------------------------------------------------ SLIDE -
