%\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}{論理回路入門（５）}
\newcommand{\PDFSUBJECT}{一年生秋学期}
\newcommand{\PDFAUTHOR}{法政大学情報科学部}
\newcommand{\PDFKEYWORDS}{組み合わせ回路、真理値表、論理式、カルノー図、グレイコード、２進数、半加算器、全加算器}
\date{2023 年 10 月 24 日 (火)}

\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{\secname}
  \color{blue}
  ポイント

  \begin{itemize}
    \color{blue}
    \setlength{\itemsep}{2.6mm}
  \item 組み合わせ回路
  \item 真理値表
  \item 論理式
  \item カルノー図
  \item グレイコード
  \item ２進数
  \item 半加算器
  \item 全加算器
  \end{itemize}

\end{frame}
%------------------------------------------------ SLIDE -
\section{組み合わせ回路}
\begin{frame}\frametitle{\secname}
\fontsize{18pt}{21}\selectfont
\color{DarkOrchid}
\begin{center}

  \vspace{8mm}
  \scalebox{1.7}[1.7]{組み合わせ回路は}

  \vspace{8mm}
  \scalebox{1.7}[1.7]{現在の入力のみで}

  \vspace{8mm}
  \scalebox{1.7}[1.7]{出力が決まる回路である}

\end{center}
\end{frame}
%------------------------------------------------ SLIDE -
\section{組み合わせ回路}
\begin{frame}\frametitle{\secname}
  \fontsize{11pt}{13}\selectfont
  \begin{itemize}
  \item 組み合わせ回路の例：

    \vspace{2mm}
    \renewcommand{\arraystretch}{1.2}
    \setlength{\tabcolsep}{4mm}
    \begin{tabular}[t]{ccc|cl}
      \multicolumn{4}{c}{真理値表}\\ \cline{1-4}
      \multicolumn{3}{c|}{入力} & 出力\\ \cline{1-4}
      X & Y & Z & F \\ \cline{1-4}
      0 & 0 & 0 & 0 \\[-4pt]
      0 & 0 & 1 & 0 \\[-4pt]
      0 & 1 & 0 & 1 \\[-4pt]
      0 & 1 & 1 & 0 \\[-4pt]
      1 & 0 & 0 & 1 \\[-4pt]
      1 & 0 & 1 & 1 \\[-4pt]
      1 & 1 & 0 & 1 \\[-4pt]
      1 & 1 & 1 & 1 \\ \cline{1-4}
    \end{tabular}
  \end{itemize}

  \vspace{-38.822mm}
  \hspace*{70mm}
  \includegraphics[scale=1.2]{figs/fxyz_block.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{真理値表}
\begin{frame}\frametitle{\secname}
  \fontsize{11pt}{13}\selectfont
  \begin{itemize}
  \item 組み合わせ回路の例：

    \vspace{2mm}
    \renewcommand{\arraystretch}{1.2}
    \setlength{\tabcolsep}{4mm}
    \begin{tabular}[t]{ccc|cl}
      \multicolumn{4}{c}{真理値表}\\ \cline{1-4}
      \multicolumn{3}{c|}{入力} & 出力\\ \cline{1-4}
      X & Y & Z & F \\ \cline{1-4}
      0 & 0 & 0 & 0 \\[-4pt]
      0 & 0 & 1 & 0 \\[-4pt]
      \color{red} 0 & \color{red}1 & \color{red}0 & \color{red}1 & \phantom{ $X=0$ かつ~$Y=1$ かつ~$Z=0$ の時} \\[-4pt]
      0 & 1 & 1 & 0 \\[-4pt]
      \color{red} 1 & \color{red}0 & \color{red}0 & \color{red}1 & \phantom{ $X=1$ かつ~$Y=0$ かつ~$Z=0$ の時} \\[-4pt]
      \color{red} 1 & \color{red}0 & \color{red}1 & \color{red}1 & \phantom{ $X=1$ かつ~$Y=0$ かつ~$Z=1$ の時} \\[-4pt]
      \color{red} 1 & \color{red}1 & \color{red}0 & \color{red}1 & \phantom{ $X=1$ かつ~$Y=1$ かつ~$Z=0$ の時} \\[-4pt]
      \color{red} 1 & \color{red}1 & \color{red}1 & \color{red}1 & \phantom{ $X=1$ かつ~$Y=1$ かつ~$Z=1$ の時} \\ \cline{1-4}
    \end{tabular}

    \vspace{3mm}
  \item どの組み合わせで出力が１になるか? つまり、論理式~$F=$ ?
  \end{itemize}

  \vspace{-46.78mm}
  \hspace*{70mm}
  \includegraphics[scale=1.2]{figs/fxyz_block.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{論理式}
\begin{frame}\frametitle{\secname}
  \fontsize{11pt}{13}\selectfont
  \begin{itemize}
  \item 組み合わせ回路の例：

    \vspace{2mm}
    \renewcommand{\arraystretch}{1.2}
    \setlength{\tabcolsep}{4mm}
    \begin{tabular}[t]{ccc|cl}
      \multicolumn{4}{c}{真理値表}\\ \cline{1-4}
      \multicolumn{3}{c|}{入力} & 出力\\ \cline{1-4}
      X & Y & Z & F \\ \cline{1-4}
      0 & 0 & 0 & 0 \\[-4pt]
      0 & 0 & 1 & 0 \\[-4pt]
      \color{red} 0 & \color{red}1 & \color{red}0 & \color{red}1 & \color{red}$X=0$ かつ~$Y=1$ かつ~$Z=0$ の時\\[-4pt]
      0 & 1 & 1 & 0 \\[-4pt]
      \color{red} 1 & \color{red}0 & \color{red}0 & \color{red}1 & \color{red}$X=1$ かつ~$Y=0$ かつ~$Z=0$ の時 \\[-4pt]
      \color{red} 1 & \color{red}0 & \color{red}1 & \color{red}1 & \color{red}$X=1$ かつ~$Y=0$ かつ~$Z=1$ の時 \\[-4pt]
      \color{red} 1 & \color{red}1 & \color{red}0 & \color{red}1 & \color{red}$X=1$ かつ~$Y=1$ かつ~$Z=0$ の時 \\[-4pt]
      \color{red} 1 & \color{red}1 & \color{red}1 & \color{red}1 & \color{red}$X=1$ かつ~$Y=1$ かつ~$Z=1$ の時 \\ \cline{1-4}
    \end{tabular}

    \vspace{3mm}
  \item どの組み合わせで出力が１になるか? つまり、論理式~$F=$ ?
  \end{itemize}
\end{frame}
%------------------------------------------------ SLIDE -
\section{論理式}
\begin{frame}\frametitle{\secname}
  \fontsize{11pt}{13}\selectfont
  \begin{itemize}
  \item 組み合わせ回路の例：

    \vspace{2mm}
    \renewcommand{\arraystretch}{1.2}
    \setlength{\tabcolsep}{4mm}
    \begin{tabular}[t]{ccc|cl}
      \multicolumn{4}{c}{真理値表}\\ \cline{1-4}
      \multicolumn{3}{c|}{入力} & 出力\\ \cline{1-4}
      X & Y & Z & F \\ \cline{1-4}
      0 & 0 & 0 & 0 \\[-4pt]
      0 & 0 & 1 & 0 \\[-4pt]
      \color{red} 0 & \color{red}1 & \color{red}0 & \color{red}1 & \color{red}$\overline{X}$ $Y$ $\overline{Z}=1$ または\\[-4pt]
      0 & 1 & 1 & 0 \\[-4pt]
      \color{red} 1 & \color{red}0 & \color{red}0 & \color{red}1 & \color{red}$X$ $\overline{Y}$ $\overline{Z}=1$ または\\[-4pt]
      \color{red} 1 & \color{red}0 & \color{red}1 & \color{red}1 & \color{red}$X$ $\overline{Y}$ $Z=1$ または\\[-4pt]
      \color{red} 1 & \color{red}1 & \color{red}0 & \color{red}1 & \color{red}$X$ $Y$ $\overline{Z}=1$ または\\[-4pt]
      \color{red} 1 & \color{red}1 & \color{red}1 & \color{red}1 & \color{red}$X$ $Y$ $Z=1$ の時, $F=1$\\ \cline{1-4}
    \end{tabular}

    \vspace{2.55mm}
  \item $F$ $=$
    $\overline{X}$ $Y$ $\overline{Z}$ $+$
    $X$ $\overline{Y}$ $\overline{Z}$ $+$
    $X$ $\overline{Y}$ $Z$ $+$
    $X$ $Y$ $\overline{Z}$ $+$
    $X$ $Y$ $Z$ \hfill\color{blue}(積和標準形)

\hfill\color{blue}(最小項の論理和)
  \end{itemize}
\end{frame}
%------------------------------------------------ SLIDE -
\section{ブール代数の定理による論理式を簡単化}
\begin{frame}\frametitle{\scalebox{.9}{\secname}}
  \fontsize{11pt}{13}\selectfont
  \begin{itemize}
    \setlength{\itemsep}{3.5mm}
  \item
    (1) 冪等律~$A$ $=$ \textcolor{red}{$A$ $+$ $A$} $=$ \textcolor{red}{$A$ $+$ $A$ $+$ $A$} \hfill (2) 同一律~\textcolor{magenta}{$A \cdot 1=A$}~~

    \vspace{3mm}
  \item $F$ $=$
    $\overline{X}$ $Y$ $\overline{Z}$ $+$
    $X$ $\overline{Y}$ $\overline{Z}$ $+$
    $X$ $\overline{Y}$ $Z$ $+$
    \textcolor{red}{$X$ $Y$ $\overline{Z}$} $+$
    $X$ $Y$ $Z$

  \item[] \mbox{}{\phantom{$F$}} $=$
    $\overline{X}$ $Y$ $\overline{Z}$ $+$
    \textcolor{red}{$X$ $Y$ $\overline{Z}$} $+$
    $X$ $\overline{Y}$ $\overline{Z}$ $+$
    $X$ $\overline{Y}$ $Z$ $+$
    \textcolor{red}{$X$ $Y$ $\overline{Z}$} $+$
    $X$ $Y$ $Z$

  \item[] \mbox{}{\phantom{$F$}} $=$
    ($\overline{X}$ $Y$ $\overline{Z}$ $+$
    $X$ $Y$ $\overline{Z}$) $+$
    \textcolor{blue}{($X$ $\overline{Y}$ $\overline{Z}$ $+$
      $X$ $\overline{Y}$ $Z$)} $+$
    ($X$ $Y$ $\overline{Z}$ $+$
    $X$ $Y$ $Z$)

  \item[] \mbox{}{\phantom{$F$}} $=$
    ($\overline{X}$ $+$ $X$) $Y$ $\overline{Z}$ $+$
    \textcolor{blue}{$X$ $\overline{Y}$ ($\overline{Z}$ $+$ $Z$)} $+$
    $X$ $Y$ ($\overline{Z}$ $+$ $Z$)

  \item[] \mbox{}{\phantom{$F$}} $=$
    $Y$ $\overline{Z}$ $+$
    \textcolor{blue}{$X$ $\overline{Y}$} $+$
    $X$ $Y$

  \item[] \mbox{}{\phantom{$F$}} $=$
    $Y$ $\overline{Z}$ $+$
    $X$ ($\overline{Y}$ $+$ $Y$)

  \item[] \mbox{}{\phantom{$F$}} $=$
    $Y$ $\overline{Z}$ $+$
    $X$

  \item[] \mbox{}{\phantom{$F$}} $=$
    $X$ $+$
    $Y$ $\overline{Z}$

  \end{itemize}
\end{frame}
%------------------------------------------------ SLIDE -
\section{カルノー図による論理式を簡単化３入力}
\begin{frame}\frametitle{\scalebox{.9}{\secname}}
  \fontsize{11pt}{13}\selectfont
  \begin{itemize}
  \item 組み合わせ回路の例:

    \renewcommand\baselinestretch{1.1}
    \fontsize{9pt}{11}\selectfont

    \vspace{2mm}
    \renewcommand{\arraystretch}{1.0}
    \setlength{\tabcolsep}{3mm}
    \begin{tabular}[t]{ccc|c}
      \multicolumn{4}{c}{真理値表 \textcolor{red}{(1次元：1列$\times$\,8行)}}\\ \hline
      \multicolumn{3}{c|}{入力} & 出力\\ \hline
      X & Y & Z & F \\ \hline
      0 & 0 & 0 & 0 \\[-4pt]
      0 & 0 & 1 & 0 \\[-4pt]
      0 & 1 & 0 & \color{red}1 \\[-4pt]
      0 & 1 & 1 & 0 \\[-4pt]
      1 & 0 & 0 & \color{red}1 \\[-4pt]
      1 & 0 & 1 & \color{red}1 \\[-4pt]
      1 & 1 & 0 & \color{red}1 \\[-4pt]
      1 & 1 & 1 & \color{red}1 \\ \hline
    \end{tabular}

    \vspace{2mm}
  \item 真理値表とカルノー図：五つの\textcolor{red}{1}
  \item \textcolor{red}{$F$ $=$ $X$ $+$ $Y$ $\overline{Z}$} \ \ (すべての１が含む)
  \item  \textcolor{blue}{XY: \ 00, 01, 11, 10: グレイコード}。\textcolor{blue}{グレイコード}は隣り合う文字のハミング距離\,(互いを置換するために必要な回数)\,が\,1\,であるという特性を持つ。
  \item \scalebox{1}{XY: 00,01,10,11は01と10のハミング距離が2なのでグレイコードでない。\hspace{-1mm}}
  \end{itemize}

  \vspace{-72mm}
  \hspace*{59mm}
  カルノー図 \textcolor{red}{(2次元：4列$\times$\,2行)}

  \vspace{1mm}
  \hspace*{56mm}
  \includegraphics{figs/fxyz_karnaugh.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{カルノー図による論理式を簡単化３入力}
\begin{frame}\frametitle{\scalebox{.9}{\secname}}
  \vspace{2mm}
  \includegraphics[width=\textwidth]{figs/fxyz_karnaugh_not.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{カルノー図による論理式を簡単化３入力}
\begin{frame}\frametitle{\scalebox{.9}{\secname}}
  \vspace{2mm}
  \includegraphics[width=\textwidth]{figs/karnaugh_3ex1.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{カルノー図による論理式を簡単化４入力}
\begin{frame}\frametitle{\scalebox{.9}{\secname}}
  \vspace{2mm}
  \includegraphics[scale=1.35]{figs/karnaugh_abcd_gray_code.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{カルノー図による論理式を簡単化４入力}
\begin{frame}\frametitle{\scalebox{.9}{\secname}}
  \vspace{2mm}
  \includegraphics[scale=1.35]{figs/karnaugh_abcd_gray_code_2.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{カルノー図による論理式を簡単化４入力}
\begin{frame}\frametitle{\scalebox{.9}{\secname}}
  \vspace{2mm}
\includegraphics[scale=.82]{figs/karnaugh_4.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{カルノー図による論理式を簡単化４入力}
\begin{frame}\frametitle{\scalebox{.9}{\secname}}
  \vspace{2mm}
\includegraphics[scale=.82]{figs/karnaugh_4_2.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{カルノー図による論理式を簡単化５入力}
\begin{frame}\frametitle{\scalebox{.9}{\secname}}
\vspace{2mm}
\fontsize{10pt}{12}\selectfont
カルノー図 \textcolor{red}{(3次元：4列$\times$\,4行$\times$\,2層)}

  \vspace{2mm}
\includegraphics[scale=1.0]{figs/karnaugh_5.pdf}

\end{frame}
%------------------------------------------------ SLIDE -
\section{グレイコード（Gray Code）}
\begin{frame}\frametitle{\secname}
  \fontsize{11pt}{13}\selectfont
           {\fontsize{11pt}{13}\selectfont
             グレイコード: 隣接する２進数のハミング距離が常に１となる

             \vspace{1mm}
             ハミング距離: ２つの文字列の対応する位置にある異なった文字の個数
           }

           \vspace{3mm}
           \includegraphics[scale=.96]{figs/gray_code.pdf}

           \vspace{3mm}
 練習：４ビットのグレイコードを作ってください。
\end{frame}
%------------------------------------------------ SLIDE -
\section{グレイコード（Gray Code）}
\begin{frame}\frametitle{\secname}
  \fontsize{11pt}{13}\selectfont
           {\fontsize{11pt}{13}\selectfont
             グレイコード: 隣接する２進数のハミング距離が常に１となる

             \vspace{1mm}
             ハミング距離: ２つの文字列の対応する位置にある異なった文字の個数
           }

           \vspace{3mm}
           \includegraphics[scale=.96]{figs/gray_code_1.pdf}

           \vspace{3mm}
 練習：４ビットのグレイコードを作ってください。
\end{frame}
%------------------------------------------------ SLIDE -
\section{グレイコード（Gray Code）}
\begin{frame}\frametitle{\secname}
  \fontsize{11pt}{13}\selectfont
           {\fontsize{11pt}{13}\selectfont
             グレイコード: 隣接する２進数のハミング距離が常に１となる

             \vspace{1mm}
             ハミング距離: ２つの文字列の対応する位置にある異なった文字の個数
           }

           \vspace{3mm}
           \includegraphics[scale=.96]{figs/gray_code_2.pdf}

           \vspace{3mm}
 練習：４ビットのグレイコードを作ってください。
\end{frame}
%------------------------------------------------ SLIDE -
\section{グレイコード（Gray Code）}
\begin{frame}\frametitle{\secname}
  \fontsize{11pt}{13}\selectfont
           {\fontsize{11pt}{13}\selectfont
             グレイコード: 隣接する２進数のハミング距離が常に１となる

             \vspace{1mm}
             ハミング距離: ２つの文字列の対応する位置にある異なった文字の個数
           }

           \vspace{3mm}
           \includegraphics[scale=.96]{figs/gray_code_3.pdf}

           \vspace{3mm}
 練習：４ビットのグレイコードを作ってください。
\end{frame}
%------------------------------------------------ SLIDE -
\section{２進数}
\begin{frame}\frametitle{\secname}
\fontsize{13pt}{15}\selectfont
  \begin{itemize}
  \item 10 進数~(Decimal Number) は、0 から~9 までの~10 個の数字を使って数を表現する。
    例：127,619,000

    \vspace{2mm}
  \item ２進数~(Binary Number) は、数字~0, 1 の~2 個の数字を使って数を表現する。

    \vspace{2mm}
  \item 例：32 ビット２進数:
    \begin{itemize}

      \vspace{2mm}
    \item \mbox{}\textcolor{red}{01001111000111011000011110100101}

      \vspace{2mm}
    \item ビット: \textcolor{blue}{Bit} (\textcolor{blue}{Bi}nary digi\textcolor{blue}{t})、２進数の桁
    \end{itemize}

    \vspace{2mm}
  \item \mbox{}\textcolor{red}{質問: 上記の~32 ビット２進数はどんな意味を持っているか？}
  \end{itemize}
\end{frame}
%------------------------------------------------ SLIDE -
\section{３{\hspace{-2mm}}２ビット２進数~--- すべてのパターン}
\begin{frame}\frametitle{\secname}

  {\fontsize{13pt}{15}\selectfont

  0000 0000 0000 0000 0000 0000 0000 0000

  0000 0000 0000 0000 0000 0000 0000 0001

  0000 0000 0000 0000 0000 0000 0000 0010

  0000 0000 0000 0000 0000 0000 0000 0011

  0000 0000 0000 0000 0000 0000 0000 0100

  \vspace{1.5mm}
  ~$\cdots$ $\cdots$ 

  \vspace{2.5mm}
  1111 1111 1111 1111 1111 1111 1111 1011

  1111 1111 1111 1111 1111 1111 1111 1100

  1111 1111 1111 1111 1111 1111 1111 1101

  1111 1111 1111 1111 1111 1111 1111 1110

  1111 1111 1111 1111 1111 1111 1111 1111
  }
  
  \vspace{3mm}
  \textcolor{red}{質問: 全部で何パターンあるか？}~~\color{blue}\pause 答：$2^{32}$ パターン
\end{frame}
%------------------------------------------------ SLIDE -
\section{覚えてください}
\begin{frame}\frametitle{\secname}
  \vspace{2mm}
  \renewcommand{\arraystretch}{1.2}
  \begin{tabular}{llrlllr}\hline
    $2^{0}$ & $=$ &   1 &~~~~~~~~~~~~~~~~~~~~~~~~~~~~& $2^{9}$  & $=$ &    512 \\
    $2^{1}$ & $=$ &   2 &~~~~~~~~~~~~~~~~~~~~~~~~~~~~& $2^{10}$ & $=$ &  1,024 \\
    $2^{2}$ & $=$ &   4 &~~~~~~~~~~~~~~~~~~~~~~~~~~~~& $2^{11}$ & $=$ &  2,048 \\
    $2^{3}$ & $=$ &   8 &~~~~~~~~~~~~~~~~~~~~~~~~~~~~& $2^{12}$ & $=$ &  4,096 \\
    $2^{4}$ & $=$ &  16 &~~~~~~~~~~~~~~~~~~~~~~~~~~~~& $2^{13}$ & $=$ &  8,192 \\
    $2^{5}$ & $=$ &  32 &~~~~~~~~~~~~~~~~~~~~~~~~~~~~& $2^{14}$ & $=$ & 16,384 \\
    $2^{6}$ & $=$ &  64 &~~~~~~~~~~~~~~~~~~~~~~~~~~~~& $2^{15}$ & $=$ & 32,768 \\
    $2^{7}$ & $=$ & 128 &~~~~~~~~~~~~~~~~~~~~~~~~~~~~& $2^{16}$ & $=$ & 65,536 \\
    $2^{8}$ & $=$ & 256 &~~~~~~~~~~~~~~~~~~~~~~~~~~~~&          &     &        \\\hline
    $2^{32}$ & $=$ & \multicolumn{5}{l}{4,294,967,296 (覚えてなくてもよい)}\\\hline
  \end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{２進数}
\begin{frame}\frametitle{\secname}
\fontsize{13pt}{15}\selectfont
  \begin{itemize}
  \item 質問: 次の２進数はどんな意味を持っているか？

    \vspace{.1mm}
    \hspace*{5mm}\textcolor{red}{01001111000111011000011110100101}

  \item 答え: わからない。場合によって違う意味を持っている。持ちうる意味:
    \begin{itemize}
    \item CPU の命令~(Instruction)
    \item データ~(Data)
      \begin{itemize}
      \item 整数~(Integer)
      \item 固定小数点数~(Fixed Point Number)
      \item 浮動小数点数~(Floating Point Number)
      \item IP アドレス~(IP Address)
      \item デジタル写真の中のピクセル~(Pixel)
      \item $\cdots$ $\cdots$
      \end{itemize}
    \end{itemize}
  \end{itemize}
\end{frame}
%------------------------------------------------ SLIDE -
\section{２進数整数~(Integer)}
\begin{frame}\frametitle{\secname}
\fontsize{13pt}{15}\selectfont
  \begin{itemize}
  \item 質問: 次の~4 ビット２進数\textcolor{red}{整数}はどんな意味を持っているか？

    \vspace{-5mm}
    \begin{center}
      \mbox{}\textcolor{red}{$1001_2$~~~~}
    \end{center}

    \vspace{0mm}
  \item 答え: わからない。整数の\textcolor{blue}{表現する方法}によって違う意味を持っている:
    \begin{itemize}
    \item 符号なし~(\color{red}{絶対値})~\cdotfill\textcolor{red}{($1001_2=\phantom{+}9_{10}$)~~}
    \item 符号付き~(\color{red}{正の整数と負の整数を表現可能})\color{blue}
      \begin{itemize}
      \item １の補数\textcolor{blue}{表現する方法}~\cdotfill\textcolor{red}{($1001_2=-6_{10}$)~~}
      \item ２の補数\textcolor{blue}{表現する方法}~\cdotfill\textcolor{red}{($1001_2=-7_{10}$)~~}
      \item 符号--絶対値\textcolor{blue}{表現する方法}~\cdotfill\textcolor{red}{($1001_2=-1_{10}$)~~}
      \item Biased \textcolor{blue}{表現する方法}~\cdotfill\textcolor{red}{($1001_2=+2_{10}$)~~}
      \item $\cdots$ $\cdots$
      \end{itemize}
    \end{itemize}
  \end{itemize}
\end{frame}
%------------------------------------------------ SLIDE -
\section{２進数整数~---~符号なし数（絶対値）}
\begin{frame}\frametitle{\secname}
\fontsize{13pt}{15}\selectfont
  \begin{itemize}
  \item $n$~ビット符号なし数の大きさは

    \vspace{-6mm}
           {
             \fontsize{9pt}{11}\selectfont
             \textcolor{blue}{$$\mathsf{a_{n-1}a_{n-2}\cdots a_{1}a_{0}=a_{n-1}\times{}2^{n-1}+a_{n-2}\times{}2^{n-2}+\cdots +a_{1}\times{}2^{1}+a_{0}\times{}2^{0}}$$}}

           \vspace{-8mm}
         \item 32ビット符号なし数:

           \vspace{1mm}
                  {\fontsize{9pt}{13}\selectfont
                    \color{blue}
                    0000 0000 0000 0000 0000 0000 0000 0000 = 0$_{\tt 10}$

                    0000 0000 0000 0000 0000 0000 0000 0001 = 1$_{\tt 10}$

                    0000 0000 0000 0000 0000 0000 0000 0010 = 2$_{\tt 10}$

                    $\cdots$ $\cdots$

                    1111 1111 1111 1111 1111 1111 1111 1101 = 4,294,967,293$_{\tt 10}$

                    1111 1111 1111 1111 1111 1111 1111 1110 = 4,294,967,294$_{\tt 10}$

                    1111 1111 1111 1111 1111 1111 1111 1111 = 4,294,967,295$_{\tt 10}$

                  }

                  \vspace{2mm}
                \item $n$ ビット符号なし数~(絶対値) のうち最小値は~0、最大値は~$2^n-1$ である。
                  
                  \color{blue}例：$n=4$のとき、最小値は0、最大値は15である。
  \end{itemize}
\end{frame}
%------------------------------------------------ SLIDE -
\section{２進数整数~---~符号なし数（絶対値）}
\begin{frame}\frametitle{\secname}
  \includegraphics[width=.95\textwidth]{figs/unsigned_power.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{２進数整数~---~符号なし数（絶対値）}
\begin{frame}\frametitle{\secname}
  問題：10 進数の~18972 を~16 ビットの２進数に直してください。

  解答~1：

  \vspace*{-4mm}
  \hspace*{12mm}
  \includegraphics{figs/unsigned_2_binary.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{２進数整数~---~符号なし数（絶対値）}
\begin{frame}\frametitle{\secname}
  問題：10 進数の~18972 を~16 ビットの２進数に直してください。

  解答~2：

  \begin{itemize}
  \item[] $18972-\textcolor{red}{16384}=2588$ \cdotfill \textcolor{red}{$2^{14}$}
  \item[] $2588-\textcolor{red}{2048}=540$ \cdotfill \textcolor{red}{$2^{11}$}
  \item[] $540-\textcolor{red}{512}=28$ \cdotfill \textcolor{red}{$2^{9}$}
  \item[] $28-\textcolor{red}{16}=12$ \cdotfill \textcolor{red}{$2^{4}$}
  \item[] $12-\textcolor{red}{8}=4$ \cdotfill \textcolor{red}{$2^{3}$}
  \item[] $4-\textcolor{red}{4}=0$ \cdotfill \textcolor{red}{$2^{2}$~}
  \end{itemize}

\vspace{3mm}
  $18972_{10}=0\textcolor{red}{1}00\ \textcolor{red}{1}0\textcolor{red}{1}0\ 000\textcolor{red}{1}\  \textcolor{red}{1}\textcolor{red}{1}00_2$

\end{frame}
%------------------------------------------------ SLIDE -
\section{２進数小数~---~符号なし数（絶対値）}
\begin{frame}\frametitle{\secname}
  \includegraphics[scale=1.4]{figs/unsigned_power_point.pdf}

\vspace{3mm}
Or: $(64+32+8+2)/16=106/16=6.625$
\end{frame}
%------------------------------------------------ SLIDE -
\section{１{\hspace{-2mm}}６進数}
\begin{frame}\frametitle{\secname}
%  \vspace{.5mm}\hspace*{-1.5mm}
  \begin{minipage}{0.43\hsize}
    {\fontsize{11pt}{15}\selectfont
      \begin{itemize}
        \setlength{\itemsep}{5.5mm}
      \item 16 進数~(Hexadecimal Number) は、0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F の~16 個の数字を使って数を表現する。
      \item ４ビットの２進数~$\Rightarrow$ \\１桁の~16 進数
      \item ２進法より短く表記できる~(２進数はビットが多くて読みにくい)。
      \item 例: 0011 1111$_{2}$ $=$ 3F$_{16}$

        \vspace{-5mm} \ 
      \end{itemize} 
    }
  \end{minipage}~
  \begin{minipage}{0.5\hsize}
    {\renewcommand{\arraystretch}{.7}
      \fontsize{11pt}{12}\selectfont
      \begin{tabular}{ccc|c}\hline
        \setlength{\tabcolsep}{1pt}
        \rule{0pt}{.8\normalbaselineskip}２進数 & \hspace{-2mm}16進数\hspace{-2mm} & 8進数 & 絶対値\\\hline\hline
        \rule{0pt}{.8\normalbaselineskip}0 0 0 0 & 0 & ~~0 & ~~0 \\\hline
        \rule{0pt}{.8\normalbaselineskip}0 0 0 1 & 1 & ~~1 & ~~1 \\\hline
        \rule{0pt}{.8\normalbaselineskip}0 0 1 0 & 2 & ~~2 & ~~2 \\\hline
        \rule{0pt}{.8\normalbaselineskip}0 0 1 1 & 3 & ~~3 & ~~3 \\\hline
        \rule{0pt}{.8\normalbaselineskip}0 1 0 0 & 4 & ~~4 & ~~4 \\\hline
        \rule{0pt}{.8\normalbaselineskip}0 1 0 1 & 5 & ~~5 & ~~5 \\\hline
        \rule{0pt}{.8\normalbaselineskip}0 1 1 0 & 6 & ~~6 & ~~6 \\\hline
        \rule{0pt}{.8\normalbaselineskip}0 1 1 1 & 7 & ~~7 & ~~7 \\\hline
        \rule{0pt}{.8\normalbaselineskip}1 0 0 0 & 8 &  10 & ~~8 \\\hline
        \rule{0pt}{.8\normalbaselineskip}1 0 0 1 & 9 &  11 & ~~9 \\\hline
        \rule{0pt}{.8\normalbaselineskip}1 0 1 0 & A &  12 &  10 \\\hline
        \rule{0pt}{.8\normalbaselineskip}1 0 1 1 & B &  13 &  11 \\\hline
        \rule{0pt}{.8\normalbaselineskip}1 1 0 0 & C &  14 &  12 \\\hline
        \rule{0pt}{.8\normalbaselineskip}1 1 0 1 & D &  15 &  13 \\\hline
        \rule{0pt}{.8\normalbaselineskip}1 1 1 0 & E &  16 &  14 \\\hline
        \rule{0pt}{.8\normalbaselineskip}1 1 1 1 & F &  17 &  15 \\\hline
      \end{tabular}
    }
  \end{minipage}
\end{frame}
%------------------------------------------------ SLIDE -
\section{２進数を１{\hspace{-2mm}}６進数に}
\begin{frame}\frametitle{\secname}
  \begin{itemize}
  \item ２進数を下位から~4 ビット毎に区切って、4 ビット単位で~16 進数に置きかえる。

    \vspace{5mm}
  \item 30\,ビットの２進数の例:

    \vspace{3mm}
    {\fontsize{12pt}{14}\selectfont
    \setlength{\tabcolsep}{2pt}
    \begin{tabular}{cccccccccc}
      & 10 & 1010 & 0011 & 1110 & 0111 & 0110 & 1111 & 1001$_{2}$&~~~~~~\\
      $=$ & 2  & A    & 3    & E    & 7    & 6    & F    & ~~9$_{16}$\\
    \end{tabular}
    }
    
    \vspace{5mm}
  \item 注意：16進数は本質的に２進数と同じで、表記する方法が違うだけである。
  \end{itemize}
\end{frame}
%------------------------------------------------ SLIDE -
\section{２進数の加算}
\begin{frame}\frametitle{\secname}
  \includegraphics[scale=1.5]{figs/add-1bit-calc.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{組み合わせ回路設計の手順}
\begin{frame}\frametitle{\secname}
\renewcommand\baselinestretch{1.15}
\fontsize{13pt}{15}\selectfont
\begin{enumerate}

\item 問題を理解する。\pause

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

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

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

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

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

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

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

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

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

\end{enumerate}
\end{frame}
%------------------------------------------------ SLIDE -
\section{半加算器回路設計}
\begin{frame}\frametitle{\secname}
  \renewcommand{\arraystretch}{1.1}
  \fontsize{11pt}{13}\selectfont
  \setlength{\tabcolsep}{3pt}
  \begin{tabular}{lll}
    input  & $a$, $b$; & // $a+b$ ~(加算)\\
    output & $c$, $s$; & // $c$: carry out ({\small{上位桁への繰り上がり}}), $s$: sum ({\small{和}})
  \end{tabular}

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

  \vspace{-2mm}
  \small
  \setlength{\tabcolsep}{20pt}
  \begin{tabular}{cc||cc|c}
    \multicolumn{5}{c}{真理値表}\\\hline
    $a$&$b$&$c$&$s$&コメント\\\hline\hline
    0&0&\color{red}0&\color{blue}0&$0+0=\textcolor{red}{0}~\textcolor{blue}{0}$ ~(加算)\\\hline
    0&1&\color{red}0&\color{blue}1&$0+1=\textcolor{red}{0}~\textcolor{blue}{1}$ ~(加算)\\\hline
    1&0&\color{red}0&\color{blue}1&$1+0=\textcolor{red}{0}~\textcolor{blue}{1}$ ~(加算)\\\hline
    1&1&\color{red}1&\color{blue}0&$1+1=\textcolor{red}{1}~\textcolor{blue}{0}$ ~(加算)\\\hline
  \end{tabular}

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

  00$_2$ $=$ 0$_{10}$ ~~~~~~~~~~~~~~~~~~~~~~ 01$_2$ $=$ 1$_{10}$ ~~~~~~~~~~~~~~~~~~~~~~ 10$_2$ $=$ 2$_{10}$
\end{frame}
%------------------------------------------------ SLIDE -
\section{半加算器回路設計}
\begin{frame}\frametitle{\secname}
  \renewcommand{\arraystretch}{1.4}
  \fontsize{11pt}{13}\selectfont
  \setlength{\tabcolsep}{20pt}
  \begin{tabular}{cc||cc|c}
    \multicolumn{5}{c}{真理値表}\\\hline
    $a$&$b$&$c$&$s$&コメント\\\hline\hline
    0&0&\color{red}0&\color{blue}0&$0+0=\textcolor{red}{0}~\textcolor{blue}{0}$ ~(加算)\\\hline
    0&1&\color{red}0&\color{blue}1&$0+1=\textcolor{red}{0}~\textcolor{blue}{1}$ ~(加算)\\\hline
    1&0&\color{red}0&\color{blue}1&$1+0=\textcolor{red}{0}~\textcolor{blue}{1}$ ~(加算)\\\hline
    1&1&\color{red}1&\color{blue}0&$1+1=\textcolor{red}{1}~\textcolor{blue}{0}$ ~(加算)\\\hline
  \end{tabular}

  \vspace{6mm}
  論理式

  \color{red}
  \vspace{3mm}
  $c=a\cdot b$

  \color{blue}
  \vspace{3mm}
  $s = \overline{a}\cdot b + a\cdot \overline{b} = a\oplus b$

  \vspace{-17mm}
  \hspace*{55mm}
  \includegraphics[scale=.93]{figs/half_adder_karnaugh.pdf}

\end{frame}
%------------------------------------------------ SLIDE -
\section{半加算器回路設計 (回路)}
\begin{frame}[fragile]\frametitle{\secname}
  論理式~~~~~~
  $c=a\cdot b$

  \vspace{3mm}
  \hspace*{23.15mm}
  $s = \overline{a}\cdot b + a\cdot \overline{b} = a\oplus b$

\vspace{5.9mm}
Verilog HDLによる回路（\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/half_adder.v}{\color{blue}\underline{half\_adder.v}}）

\fontsize{11pt}{12}\selectfont

\vspace{2.7mm}
\begin{code}
`timescale 1ns/1ns

module half_adder (a, b, c, s);
    input  a, b;
    output c, s;

    assign c = a & b; // AND
    assign s = a ^ b; // XOR

endmodule
\end{code}

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

\vspace{-71mm}
\hspace*{90mm}
\includegraphics[]{figs/halfadd.pdf}

\end{frame}
%------------------------------------------------ SLIDE -
\section{半加算器回路設計 (テストベンチ)}
\begin{frame}[fragile]\frametitle{\secname}
\fontsize{11pt}{12}\selectfont

\begin{code}
`timescale 1ns/1ns
module half_adder_tb;
    reg  a, b;
    wire c, s;
    half_adder ha (a, b, c, s);
    initial begin
        #0 a = 0;
        #0 b = 0;
        #4 $finish;
    end
    always #1 a = ~a;
    always #2 b = ~b;
    initial begin
        $dumpfile ("half_adder.vcd");
        $dumpvars;
    end
endmodule
\end{code}

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

\end{frame}
%------------------------------------------------ SLIDE -
\section{半加算器回路設計 (波形)}
\begin{frame}[fragile]\frametitle{\secname}
\vspace{-5mm}
\begin{verbatim}
% iverilog -Wall -o half_adder \
  half_adder_tb.v half_adder.v
% ./half_adder
% gtkwave half_adder.vcd
\end{verbatim}

  \includegraphics[width=.8\textwidth]{figs/half_adder_vcd.png}

    \fontsize{8pt}{10}\selectfont
    \hspace{23.0mm}$a$\phantom{$+$}$b$\phantom{$=$}\,$cs$
    \hspace{03.8mm}$a$\phantom{$+$}$b$\phantom{$=$}\,$cs$
    \hspace{03.8mm}$a$\phantom{$+$}$b$\phantom{$=$}\,$cs$
    \hspace{03.8mm}$a$\phantom{$+$}$b$\phantom{$=$}\,$cs$

  \mbox{
    \color{red}\hspace{22.0mm}$0$$+$$0$$=$$00$
    \color{blue}\hspace{2.8mm}$1$$+$$0$$=$$01$
    \color{red} \hspace{2.8mm}$0$$+$$1$$=$$01$
    \color{blue}\hspace{2.8mm}$1$$+$$1$$=$$10$
  }

  \fontsize{7pt}{9}\selectfont
  \color{magenta}
  \vspace{-26.6mm}
  \hspace*{28mm}
  0\hspace{15mm}1\hspace{15mm}0\hspace{15mm}1

  \vspace{.15mm}
  \hspace*{28mm}
  0\hspace{15mm}0\hspace{15mm}1\hspace{15mm}1

  \vspace{.15mm}
  \hspace*{28mm}
  0\hspace{15mm}0\hspace{15mm}0\hspace{15mm}1

  \vspace{.15mm}
  \hspace*{28mm}
  0\hspace{15mm}1\hspace{15mm}1\hspace{15mm}0

\end{frame}
%------------------------------------------------ SLIDE -
\section{２進数の加算~(８ビットの例)}
\begin{frame}\frametitle{\secname}
  \vspace{3mm}
  \includegraphics[scale=2]{figs/add8bit.pdf}
\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.49mm}
\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{\secname}
  全加算器は、２つの半加算器と１つの\,OR\,回路を用いて構成することができる。 

  \vspace{36mm}
  \includegraphics[width=\textwidth]{figs/fa_2ha.pdf}

  \vspace{-56mm}
  \fontsize{13pt}{15}\selectfont
  \setlength{\tabcolsep}{2pt}
  \begin{tabular}{rcl}
    $s$ & $=$ & $a \ \overline{b} \ \overline{ci} + \overline{a} \ b \ \overline{ci}
    + \overline{a} \ \overline{b} \ ci + a \ b \ ci$\\
    & $=$ & $\textcolor{red}{\mbox{(}a\oplus b\mbox{)} \oplus ci=s0 \oplus ci}$\\

    $co$ & $=$ & $\overline{a} \ b \ ci + a \ \overline{b} \ ci + a \ b \ \overline{ci} + a \ b \ ci$\\
    & $=$ & $\mbox{(}\overline{a} \ b + a \ \overline{b}\mbox{)} \ ci + a \ b \ \mbox{(}\overline{ci} + ci\mbox{)}$\\
    & $=$ & $\textcolor{red}{\mbox{(}a \oplus b\mbox{)} \ ci + a \ b = s0 \ ci + a \ b = c1 + c0}$ 
  \end{tabular}

\color{blue}

\vspace{-27.5mm}
\hspace*{93mm}
$s0=a\oplus b$

\hspace*{93mm}
$c0=a \ \ b$

\hspace*{93mm}
$c1=s0 \ \ ci$
  
\end{frame}
%------------------------------------------------ SLIDE -
\section{半加算器を用いた全加算器の波形}
\begin{frame}[fragile]\frametitle{\secname}
\vspace{-6mm}
\begin{verbatim}
% iverilog -Wall -o add1 \
  add1_tb.v add1.v half_adder.v
% ./add1
% gtkwave add1.vcd
\end{verbatim}

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

  \color{red}
  \fontsize{11pt}{13}\selectfont
\vspace{-9mm}
  \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{\secname}
  \color{blue}まとめ

  \begin{itemize}
    \color{blue}
    \setlength{\itemsep}{2.6mm}
  \item 組み合わせ回路
  \item 真理値表
  \item 論理式
  \item カルノー図
  \item グレイコード
  \item ２進数
  \item 半加算器
  \item 全加算器
  \end{itemize}

\end{frame}
%------------------------------------------------ SLIDE -
\section{課題~V (200 点)}
\begin{frame}[fragile]\frametitle{\secname}
\fontsize{11pt}{13}\selectfont

問題１： $FO=
\overline{A}\ \overline{B}\ \overline{C}\ \overline{D}+
\overline{A}\           B \ \overline{C}\ \overline{D}+
A \ \overline{B}\ \overline{C}\ \overline{D}+
\overline{A}\           B \           C \           D +\hspace*{25.8mm}
\overline{A}\ \overline{B}\           C \ \overline{D}+
\overline{A}\           B \           C \ \overline{D}+
A \ \overline{B}\           C \ \overline{D}
$\\をカルノー図で簡単化し、FO と簡単化された論理式FSの回路を設計し動作検証シミュレーションして下さい。
モジュール名は~ex5 にすること。
テストベンチ~\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/ex5_tb.v}{\color{blue}\underline{ex5\_tb.v}} を使って下さい。

\vspace{1mm}
\begin{code}
`timescale 1ns/1ns
module ex5 (A, B, C, D, FO, FS);
    input  A, B, C, D;
    output FO, FS;
    assign FO = ~A & ~B & ~C & ~D | ~A &  B & ~C & ~D |
                 A & ~B & ~C & ~D | ~A &  B &  C &  D |
                ~A & ~B &  C & ~D | ~A &  B &  C & ~D |
                 A & ~B &  C & ~D;
    assign FS =                         ; // simplified
endmodule
\end{code}

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

\end{frame}
%------------------------------------------------ SLIDE -
\section{課題~V (200 点)}
\begin{frame}[fragile]\frametitle{\secname}
\fontsize{11pt}{13}\selectfont

問題２： 半加算器\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/half_adder.v}{\color{blue}\underline{half\_adder.v}}を設計し動作検証シミュレーションして下さい (P35-P39を参照)。

テストベンチ\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/half_adder_tb.v}{\color{blue}\underline{half\_adder\_tb.v}}を使って下さい。

\vspace{9mm}
そして、half\_adderを使用し、全加算器\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/add1.v}{\color{blue}\underline{add1.v}}を設計し動作検証シミュレーションして下さい (P47-P48を参照)。

テストベンチ\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/add1_tb.v}{\color{blue}\underline{add1\_tb.v}}を使って下さい。

\vspace{9mm}
\begin{verbatim}
% iverilog -Wall -o add1 add1_tb.v add1.v half_adder.v
% vvp add1
% gtkwave add1.vcd &
\end{verbatim}

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