%\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}{論理回路入門（14）}
\newcommand{\PDFSUBJECT}{一年生秋学期}
\newcommand{\PDFAUTHOR}{法政大学情報科学部}
\newcommand{\PDFKEYWORDS}{論理回路の復習とクイズ}

\date{2024 年 1 月 9 日 (火)}

\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}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{mybackgroundcolor.tex}
%------------------------------------------------ SLIDE -
\section{論理回路入門}
\begin{frame}\frametitle{\scalebox{1}{\secname}}
\fontsize{13pt}{15}\selectfont
\textcolor{blue}{勉強した内容}

\begin{itemize}
\setlength{\itemsep}{4mm}
\item \textcolor{red}{論理回路の基本}: ブール代数、真理値表、カルノー図、論理式の積和形と和積形、回路の設計と動作検証の方法
\item \textcolor{red}{組合せ回路}: 
  半加算器、
  全加算器、
  リップルキャリーアダー、
  キャリールックアヘッドアダー、
  ツリー型桁上げ先見加算器、
  %加算器を利用した
  減算器、
  乗算器、
  ウォレス ツリー乗算器、
  マルチプレクサ、
  ７セグメント LED、
  ALU、
  デコーダ、
  エンコーダ
\item \textcolor{red}{順序回路}: 
  RS ラッチ、
  D ラッチ、
  D フリップフロップ、
  T フリップフロップ、
  JK フリップフロップ、
  レジスタ・ファイル、
  状態遷移図、
  交通信号機制御システム、N 進カウンター
  %\item Verilog HDL: モジュール、構造記述、データフロー記述、機能記述、function、always、ALU 設計、バレル・シフタ設計、モジュール呼び出し、posedge、negedge、デジタル時計設計
\end{itemize}
\end{frame}
%------------------------------------------------ SLIDE -
\section{論理回路の種類}
\begin{frame}\frametitle{\scalebox{1}{\secname}}
\fontsize{13pt}{14}\selectfont
\begin{enumerate}

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

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

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

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

\end{enumerate}
\end{frame}
%------------------------------------------------ SLIDE -
\section{基本的な論理演算}
\begin{frame}\frametitle{\scalebox{1}{\secname}}
\fontsize{13pt}{14}\selectfont
\begin{enumerate}

\item AND~(アンド) --- 論理積~(かつ)

    \begin{itemize}
    \item \hspace*{-2mm}\mbox{}{\color{blue} 『例』} F $=$ A \textcolor{red}{AND} B $=$ A $\cdot$ B $=$ A\, B %\hfill\textcolor{red}{(ふたつの表現)}
    \item \hspace*{-2mm}\mbox{}{\color{blue} 『例』} \textcolor{magenta}{Verilog HDLの表現：} \textcolor{magenta}{{\large\tt{F = A \& B}}}
    \end{itemize}

\vspace{7mm}
\item OR~(オア) --- 論理和~(または)

    \begin{itemize}
    \item \hspace*{-2mm}\mbox{}{\color{blue} 『例』} F $=$ A \textcolor{red}{OR} B $=$ A $+$ B %\hfill\textcolor{red}{(注意: 加算ではない)}
    \item \hspace*{-2mm}\mbox{}{\color{blue} 『例』} \textcolor{magenta}{Verilog HDLの表現：} \textcolor{magenta}{{\large\tt{F = A | B}}}
    \end{itemize}

\vspace{7mm}
\item NOT~(ノット) --- 否定

    \begin{itemize}
    \item \hspace*{-2mm}\mbox{}{\color{blue} 『例』} F $=$ \textcolor{red}{NOT} A $=$ $\overline{\mbox{A}}$ %\hfill\textcolor{red}{(読み方: A バー)}
    \item \hspace*{-2mm}\mbox{}{\color{blue} 『例』} \textcolor{magenta}{Verilog HDLの表現：} \textcolor{magenta}{{\large\tt{F = \texttt{\~}A}}}
    \end{itemize}

\end{enumerate}
\end{frame}
%------------------------------------------------ SLIDE -
\section{よく使われた７ゲート}
\begin{frame}[fragile]\frametitle{\secname}

\vspace{1mm}
\hfill
\includegraphics[scale=1.072]{figs/gate7.pdf}                    

\vspace{-70mm}
\fontsize{13pt}{29}\selectfont
\begin{tabular}{llll}
(1) & AND:  & $F=A \, \cdot \, B$ & {\large\magenta\tt{F = \ \ A \verb|&| B}}\\
(2) & OR:   & $F=A + B$ & {\large\magenta\tt{F = \ \ A | B}}\\
(3) & NOT:  & $F=\overline{A}$ & {\large\magenta\tt{F = \ \verb|~|A}}\\
(4) & NAND: & $F=\overline{A \, \cdot \, B}$ & {\large\magenta\tt{F = \verb|~|(A \verb|&| B)}}\\
(5) & NOR:  & $F=\overline{A + B}$ & {\large\magenta\tt{F = \verb|~|(A | B)}}\\
(6) & XOR:  & $F=A \oplus B$ & {\large\magenta\tt{F = \ \ A \verb|^| B}}\\
(7) & XNOR: & $F=\overline{A \oplus B}$ & {\large\magenta\tt{F = \verb|~|(A \verb|^| B)}}\\
\end{tabular}

\end{frame}
%------------------------------------------------ SLIDE -
\section{ブール代数の定理}
\begin{frame}\frametitle{\secname}

    \vspace{-2mm}
    \begin{enumerate}
      \setlength{\itemsep}{0.3em}

    \item $\mathsf{ A\ \cdot\ A = A}$ \cdotfill{冪等律}

    \item $\mathsf{ A + A = A}$ \cdotfill{冪等律}

    \item $\mathsf{ A \ \cdot \ B  = B \ \cdot \ A}$ \cdotfill{交換律}

    \item $\mathsf{ A +  B  = B  +  A}$ \cdotfill{交換律}

    \item $\mathsf{\mbox{(}A \ \cdot \ B\mbox{)} \ \cdot \ C  =  A \ \cdot \ \mbox{(}B \ \cdot \ C\mbox{)}}$ \cdotfill{結合律}

    \item $\mathsf{\mbox{(}A +  B\mbox{)} + C  =  A + \mbox{(}B  +  C\mbox{)}}$ \cdotfill{結合律}

    \item $\mathsf{ A \ \cdot \ \mbox{(}B  + C\mbox{)} = \mbox{(}A \ \cdot \ B\mbox{)} + \mbox{(}A \ \cdot \ C\mbox{)}}$ \cdotfill{分配律}

    \item $\mathsf{ A + \mbox{(}B \ \cdot \ C\mbox{)} = \mbox{(}A +  B\mbox{)} \ \cdot \ \mbox{(}A + C\mbox{)}}$ \cdotfill{分配律}

    \item $\mathsf{ A \ \cdot \ \mbox{(}A +  B\mbox{)} =  A}$ \cdotfill{吸収律}

    \item $\mathsf{ A + \mbox{(}A \ \cdot \ B\mbox{)} =  A}$ \cdotfill{吸収律}

    \end{enumerate}
\end{frame}
%------------------------------------------------ SLIDE -
\section{ブール代数の定理}
\begin{frame}\frametitle{\secname}

  \vspace{-2mm}
  \begin{enumerate}
    \setlength{\itemsep}{0.3em}
    \setcounter{enumi}{10}

  \item $\mathsf{A\ \cdot \ 0 = 0}$ \cdotfill{支配律}

  \item $\mathsf{A + 1 = 1}$ \cdotfill{支配律}

  \item $\mathsf{A\ \cdot \ 1 = A}$ \cdotfill{同一律}

  \item $\mathsf{A + 0 = A}$ \cdotfill{同一律}

  \item $\mathsf{A\ \cdot\ \overline{A} = 0}$ \cdotfill{補元律}

  \item $\mathsf{A + \overline{A} = 1}$ \cdotfill{補元律}

  \item $\mathsf{\overline{\overline{A}} = A}$ \cdotfill{対合律}

    \vspace{6.85mm}

  \item $\mathsf{\overline{A \ \cdot \ B} =  \overline{A}  +   \overline{B}}$ \cdotfill{ド・モルガンの法則}

  \item $\mathsf{\overline{A + B} =  \overline{A} \ \cdot \ \overline{B}}$ \cdotfill{ド・モルガンの法則}

  \end{enumerate}
\end{frame}
%------------------------------------------------ SLIDE -
\section{組み合わせ回路設計の手順}
\begin{frame}\frametitle{\scalebox{1}{\secname}}
\renewcommand\baselinestretch{1.15}

\vspace{-2mm}
\fontsize{13pt}{16}\selectfont
\begin{enumerate}

\item 問題を理解する。

\item 入力と出力信号の名前を任意に決める。

\item 入力のあらゆる組み合わせを列挙し，真理値表をつくる。

\item 真理値表から論理式をつくる。

\textcolor{red}{(どの組み合わせで出力が\,１\,になるか。)}

\item カルノー図を用いて論理式を簡単化する。

\item 論理式から回路をつくる。

\item テストベンチをつくる~(シミュレーションするため)。

\item 回路をシミュレーションする~(回路設計の正当性検証)。

\item 与えられた回路の動作を理解する~(波形の説明)。

\end{enumerate}
\end{frame}
%------------------------------------------------ SLIDE -
\section{例：全加算器設計}
\begin{frame}\frametitle{\secname}
\fontsize{11pt}{13}\selectfont
  \includegraphics[width=.95\textwidth]{figs/4bit_add.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{例：全加算器の真理値表}
\begin{frame}\frametitle{\secname}
\fontsize{10pt}{13}\selectfont
  input $a$, $b$, $ci$; // $ci$: carry in ({\small{下位桁からの繰り上がり}})

  output $co$, $s$; // $co$: carry out ({\small{上位桁への繰り上がり}}), $s$: sum ({\small{和}})

  \vspace{3mm}
  \small
  \renewcommand{\arraystretch}{.8}
  \setlength{\tabcolsep}{13pt}
  \begin{tabular}{ccc||cc|c}\hline
    \rule{0pt}{.8\normalbaselineskip}$a$&$b$&$ci$&$co$&$s$&コメント\\\hline\hline
    \rule{0pt}{.8\normalbaselineskip}0&0&0&\color{red}0&\color{blue}0&$0+0+0=\textcolor{red}{0}~\textcolor{blue}{0}$ ~(加算)\\\hline
    \rule{0pt}{.8\normalbaselineskip}0&0&1&\color{red}0&\color{blue}1&$0+0+1=\textcolor{red}{0}~\textcolor{blue}{1}$ ~(加算)\\\hline
    \rule{0pt}{.8\normalbaselineskip}0&1&0&\color{red}0&\color{blue}1&$0+1+0=\textcolor{red}{0}~\textcolor{blue}{1}$ ~(加算)\\\hline
    \rule{0pt}{.8\normalbaselineskip}0&1&1&\color{red}1&\color{blue}0&$0+1+1=\textcolor{red}{1}~\textcolor{blue}{0}$ ~(加算)\\\hline
    \rule{0pt}{.8\normalbaselineskip}1&0&0&\color{red}0&\color{blue}1&$1+0+0=\textcolor{red}{0}~\textcolor{blue}{1}$ ~(加算)\\\hline
    \rule{0pt}{.8\normalbaselineskip}1&0&1&\color{red}1&\color{blue}0&$1+0+1=\textcolor{red}{1}~\textcolor{blue}{0}$ ~(加算)\\\hline
    \rule{0pt}{.8\normalbaselineskip}1&1&0&\color{red}1&\color{blue}0&$1+1+0=\textcolor{red}{1}~\textcolor{blue}{0}$ ~(加算)\\\hline
    \rule{0pt}{.8\normalbaselineskip}1&1&1&\color{red}1&\color{blue}1&$1+1+1=\textcolor{red}{1}~\textcolor{blue}{1}$ ~(加算)\\\hline
  \end{tabular}

  \vspace{3mm}
%  出力の\,co、s\,は\,$a+b+ci$\,の結果~(和) を２進数で表した数値。

%  $00_2 = 0_{10}$ ~~~~~~~~ $01_2 = 1_{10}$ ~~~~~~~~ $10_2 = 2_{10}$ ~~~~~~~~ $11_2 = 3_{10}$  

  \hspace*{3mm}$s=
  \overline{a} \ \overline{b} \ ci +
  \overline{a} \ b \ \overline{ci} +
  a \ \overline{b} \ \overline{ci} +
  a \ b \ ci$ \hfill 最小項の論理和~

  $co=
  \overline{a} \ b \ ci +
  a \ \overline{b} \ ci +
  a \ b \ \overline{ci} +
  a \ b \ ci$ \hfill 最小項の論理和~

\end{frame}
%------------------------------------------------ SLIDE -
\section{例：全加算器設計}
\begin{frame}\frametitle{\secname}
  真理値表から論理式をつくる

  \textcolor{blue}{\ \ \ \ \ \ \ \ --- どの組み合わせで出力が\,１\,になるか}

  \vspace{2mm}
  カルノー図による論理式を簡単化する~(co)

  \vspace{-2mm}
  \begin{center}
    \includegraphics{figs/add1karnaugh.pdf}
  \end{center}

  \vspace{-2mm}
  \setlength{\tabcolsep}{2pt}
  \begin{tabular}{rcl}
    $co$ & $=$ & $a \ b + a \ ci + b \ ci$  \textcolor{magenta}{(二つの入力が11であれば)}\\
    $s$ & $=$ & $a \ \overline{b} \ \overline{ci} + \overline{a} \ b \ \overline{ci}
    + \overline{a} \ \overline{b} \ ci + a \ b \ ci$\\
  \end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{例：全加算器設計 (回路)}
\begin{frame}[fragile]\frametitle{\secname}
  \setlength{\tabcolsep}{2pt}
  \begin{tabular}{rcl}
    $co$ & $=$ & $a \ b + a \ ci + b \ ci$  \textcolor{magenta}{(二つの入力が11であれば)}\\
    $s$ & $=$ & $a \ \overline{b} \ \overline{ci} + \overline{a} \ b \ \overline{ci}
    + \overline{a} \ \overline{b} \ ci + a \ b \ ci$\\
  \end{tabular}

  \vspace{2.49mm}
  \begin{center}
    \includegraphics{figs/add-1bit-circuit.pdf}
  \end{center}
  
\end{frame}
%------------------------------------------------ SLIDE -
\section{例：全加算器設計 (回路)}
\begin{frame}[fragile]\frametitle{\secname}
  \setlength{\tabcolsep}{2pt}
  \begin{tabular}{rcl}
    $co$ & $=$ & $a \ b + a \ ci + b \ ci$  \textcolor{magenta}{(二つの入力が11であれば)}\\
    $s$ & $=$ & $a \ \overline{b} \ \overline{ci} + \overline{a} \ b \ \overline{ci}
    + \overline{a} \ \overline{b} \ ci + a \ b \ ci$\\
  \end{tabular}

  \vspace{2.48mm}
\fontsize{11pt}{12}\selectfont
\begin{code}
`timescale 1ns/1ns

module fa (a, b, ci, co, s);
    input  a, b, ci;
    output co, s;

    assign co = a & b | a & ci | b & ci;

    assign s =  a & ~b & ~ci |
               ~a &  b & ~ci | 
               ~a & ~b &  ci |
                a &  b &  ci;

endmodule
\end{code}

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

\end{frame}
%------------------------------------------------ SLIDE -
\section{例：全加算器設計 (テストベンチ)}
\begin{frame}[fragile]\frametitle{\secname}
\fontsize{11pt}{12}\selectfont
\begin{code}
`timescale 1ns/1ns
module fa_tb;
    reg  a, b, ci;
    wire co, s;
    fa fadder (a, b, ci, co, s);
    initial begin
        #0 a  = 0; b  = 0; ci = 0;
        #8 $finish;
    end
    always #1 a  = ~a;
    always #2 b  = ~b;
    always #4 ci = ~ci;
    initial begin
        $dumpfile ("fa.vcd");
        $dumpvars;
    end
endmodule
\end{code}

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

\end{frame}
%------------------------------------------------ SLIDE -
\section{例：全加算器設計 (波形)}
\begin{frame}[fragile]\frametitle{\secname}
\vspace{-5mm}
\begin{verbatim}
% iverilog -Wall -o fa fa_tb.v fa.v
% ./fa
% gtkwave fa.vcd
\end{verbatim}

  \includegraphics[width=.85\textwidth]{figs/fa_vcd.png}

  \color{red}
  \fontsize{11pt}{13}\selectfont
\vspace{-7mm}
  \hspace*{29mm} $\Uparrow$ \hspace{53mm} $\Uparrow$

  \hspace*{15mm} $0+0+0=00_2$ \hspace{26mm} $1+1+1=11_2$
\end{frame}
%------------------------------------------------ SLIDE -
\section{他の組合せ回路}
\begin{frame}\frametitle{\scalebox{1}{\secname}}
\fontsize{12pt}{15}\selectfont
\vspace{-1.5mm}
\begin{enumerate}
\item 半加算器
\item リップルキャリーアダー
\item キャリールックアヘッドアダー
\item ツリー型桁上げ先見加算器
\item 減算器
\item 乗算器
\item ウォレス ツリー乗算器
\item マルチプレクサ
\item ７セグメント LED
\item ALU
\item デコーダ（2-4、3-8、4-16）
\item エンコーダ（4-2、8-3、16-4）、プライオリティエンコーダ
\end{enumerate}
\end{frame}
%------------------------------------------------ SLIDE -
\section{順序回路設計の手順}
\begin{frame}\frametitle{\scalebox{1}{\secname}}
\fontsize{12pt}{15}\selectfont
\vspace{-1.5mm}
\begin{enumerate}
%\setlength{\itemsep}{1.4mm}
\item 問題を理解する。 
\item 状態遷移図をつくる。 
\item FF の数を決める~{{($n=\lceil log_2N\rceil$、$N$ は状態の数)。}} 
\item 各状態に\,$n$\,ビットの番号を付け、真理値表をつくる。
    \begin{itemize}
    \item 次の状態の真理値表をつくる。
    \item 出力関数の真理値表をつくる。
    \end{itemize}
\item 真理値表から論理式をつくる~(どの条件で出力が\,１\,になるか)。

\vspace{-.0mm}
    \begin{itemize}
    \item カルノー図を用いて論理式を簡単化する。
    \end{itemize}
\item 論理式から回路をつくる。 
\item テストベンチをつくる~(シミュレーションするため)。 
\item 回路をシミュレーションする~(回路設計の正当性検証)。 
\item 与えられた回路の動作を理解する~(波形の説明)。
\end{enumerate}
\end{frame}
%------------------------------------------------ SLIDE -
\section{例：交通信号機制御システム（問題）}
\begin{frame}\frametitle{\scalebox{1}{\secname}}
\includegraphics[width=.95\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 (南北)

\end{frame}
%------------------------------------------------ SLIDE -
\section{例：交通信号機制御（状態遷移図）}
\begin{frame}\frametitle{\scalebox{1}{\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{1}{\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 & 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}
\end{frame}
%------------------------------------------------ SLIDE -
\section{例：交通信号機制御（次の状態）}
\begin{frame}\frametitle{\scalebox{1}{\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{1}{\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{1}{\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{1}{\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{1}{\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{1}{\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{1}{\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{1}{\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{1}{\secname}}

７セグメント\,LED\,を使い同期式\textcolor{red}{N}進（$0 \sim N-1$）カウントアップ\,($u=1$)\,/\,カウントダウン\,($u=0$) する回路を\,\textcolor{red}{X}FF\,を用いて設計せよ~(Don't Care 項を利用)。
７セグメント\,LED: 0: 点灯~1: 消灯。

\vspace{1mm}
\textcolor{red}{$N=3,\ 4,\ 6,\ 8, 10,\ 16$}

\vspace{1mm}
\textcolor{red}{$X=D,\ JK,\ T$}

\begin{center}
\includegraphics[width=.9\textwidth]{figs/counterN.pdf}
\end{center}
\end{frame}
%------------------------------------------------ SLIDE -
\section{課題~XIV (200 点)}
\begin{frame}\frametitle{\secname}
\fontsize{13pt}{15pt}\selectfont
問題１：\textcolor{blue}{3入力多数決}回路を設計して下さい（EDAツールを使用しないこと）。

\vspace{1mm}
(1) 3入力多数決回路の真理値表

\vspace{1mm}
\renewcommand{\arraystretch}{1}
  \setlength{\tabcolsep}{13pt}
~~~~~~\begin{tabular}{ccc|c|l}\hline
    \multicolumn{3}{c|}{入力} & 出力 &\\\hline
    A & B & C & Y & コメント\\\hline\hline
    0 & 0 & 0 & 0 & 全員一致\\\hline
    0 & 0 & 1 &   & 多数決\\\hline
    0 & 1 & 0 &   & 多数決\\\hline
    0 & 1 & 1 &   & 多数決\\\hline
    1 & 0 & 0 &   & 多数決\\\hline
    1 & 0 & 1 &   & 多数決\\\hline
    1 & 1 & 0 &   & 多数決\\\hline
    1 & 1 & 1 & 1 & 全員一致\\\hline
  \end{tabular}

\end{frame}
%------------------------------------------------ SLIDE -
\section{課題~XIV (200 点)}
\begin{frame}\frametitle{\secname}
\fontsize{13pt}{15pt}\selectfont
(2) Yの論理式 (最小項の論理和)

\vspace{0mm}
~~~~~~Y =

\vspace{1mm}
(3) Yのカルノー図

\vspace{1mm}
(4) Yの論理式 (簡単化された論理式)

\vspace{0mm}
~~~~~~Y =

\vspace{1mm}
(5) 回路図

\vspace{1mm}
(6) 回路のVerilog HDL code

\vspace{1mm}
(7) 予測波形

~~~~~~~~~~~ 0ns ~
1ns ~
2ns ~
3ns ~
4ns ~
5ns ~
6ns ~
7ns ~
8ns ~
  
~~~~~~A

~~~~~~B

~~~~~~C

~~~~~~Y

\end{frame}
%------------------------------------------------ SLIDE -
\section{課題~XIV (200 点)}
\begin{frame}\frametitle{\secname}
\fontsize{13pt}{15pt}\selectfont
問題２：７セグメント LED を使い同期式 16 進カウントアップ / カウントダウンする回路を、DFF を用いて設計して下さい（EDAツールを使用しないこと）。

\vspace{4mm}
\begin{itemize}
\setlength{\itemsep}{4mm}
\item 入力信号: clk, clrn, u
\item カウント範囲: $0 \sim f$
\item $u=1$ (カウントアップ):

  $0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,0,1,2,3,\cdots$
\item $u=0$ (カウントダウン):

  $0,f,e,d,c,b,a,9,8,7,6,5,4,3,2,1,0,f,e,d,\cdots$
\item 出力信号: seg[6:0] (７セグメント LED, 0: 点灯; 1: 消灯)
\end{itemize}

\end{frame}
%------------------------------------------------ SLIDE -
\section{課題~XIV (200 点)}
\begin{frame}\frametitle{\secname}
\fontsize{13pt}{15pt}\selectfont

(1) 状態遷移図

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

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

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

\vspace{2mm}
~~~~~~n[3] =

\vspace{1mm}
~~~~~~n[2] =

\vspace{1mm}
~~~~~~n[1] =

\vspace{1mm}
~~~~~~n[0] =

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

\vspace{2mm}
(6) 次の状態~next\_state 回路のVerilog HDL code

\end{frame}
%------------------------------------------------ SLIDE -
\section{課題~XIV (200 点)}
\begin{frame}\frametitle{\secname}
\fontsize{13pt}{15pt}\selectfont

(7) 出力関数~seven\_seg  の真理値表

\vspace{2mm}
(8) 出力関数~seven\_seg  各出力信号のカルノー図

\vspace{2mm}
(9) 出力関数~seven\_seg  の論理式

\vspace{0mm}
~~~~~~seg[0] = 

\vspace{0mm}
~~~~~~seg[1] = 

\vspace{0mm}
~~~~~~seg[2] = 

\vspace{0mm}
~~~~~~seg[3] = 

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

\vspace{0mm}
~~~~~~seg[5] = 

\vspace{0mm}
~~~~~~seg[6] = 


\vspace{2mm}
(10) 出力関数~seven\_seg の回路図

\vspace{2mm}
(11) 出力関数~seven\_seg 回路のVerilog HDL code
\end{frame}
%------------------------------------------------ SLIDE -
\section{課題~XIV (200 点)}
\begin{frame}\frametitle{\secname}
\fontsize{13pt}{15pt}\selectfont

(12) 予測波形

\vspace{0mm}
~~~~~~clrn

\vspace{0.8mm}
~~~~~~clk

\vspace{0.8mm}
~~~~~~u

\vspace{0.8mm}
~~~~~~q (状態)

\vspace{0.8mm}
~~~~~~seg[0] 

\vspace{0.8mm}
~~~~~~seg[1] 

\vspace{0.8mm}
~~~~~~seg[2] 

\vspace{0.8mm}
~~~~~~seg[3] 

\vspace{0.8mm}
~~~~~~seg[4] 

\vspace{0.8mm}
~~~~~~seg[5] 

\vspace{0.8mm}
~~~~~~seg[6] 

\end{frame}
%------------------------------------------------ SLIDE -
\input{mybackground.tex}
%------------------------------------------------ SLIDE -
\section{発展：自由練習}
\begin{frame}\frametitle{\secname}
\fontsize{13pt}{15pt}\selectfont
自動販売機の制御回路を設計し動作検証シミュレーションして下さい（EDAツールを使用すること）。

\vspace{4mm}
\includegraphics[scale=1.3]{figs/vending_machine.pdf}

\vspace{4mm}
(1) 150円のジュースが買える(open=1)

\vspace{1mm}
(2) 50円玉(G=1)と100円玉(H=1)のみ利用できる

\vspace{1mm}
(3) お釣りは出ない

\end{frame}
%------------------------------------------------ SLIDE -
\section{終わり}
\begin{frame}
\vspace{25mm}
\includegraphics[width=\textwidth]{figs/owari-crop.pdf}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%------------------------------------------------ SLIDE -
\end{document}
%------------------------------------------------ SLIDE -
