%\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 月 17 日 (火)}

\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}
\hspace*{-4mm}
\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}

    \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{\mbox{)}} \ \cdot \ C  =  A \ \cdot \ \mbox{(}B \ \cdot \ C\mbox{\mbox{)}}}$ \cdotfill{結合律}

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

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

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

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

    \item $\mathsf{ A + \mbox{(}A \ \cdot \ B\mbox{\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{\secname}
  \fontsize{13pt}{15}\selectfont
  \textcolor{red}{最小項}: ある真理値表が与えられた時、すべての変数を１回ずつ含み、出力が\textcolor{red}{１}となる組み合わせ\,(論理\textcolor{red}{積}で示し、それぞれの変数が\textcolor{red}{０}のとき、バーをつける)。
  \textcolor{red}{$1\ \, {\cdot}\ \, 1\ \, {\cdot}\ \, {\cdots}\ \, {\cdot}\ \, 1=1$}

  \fontsize{12pt}{14}\selectfont
  \vspace{1mm}
  \renewcommand{\arraystretch}{1.2}
  \setlength{\tabcolsep}{6mm}
  \begin{tabular}[t]{ccc|c||c|c}\hline
    X & Y & Z & F &最小項&\phantom{最大項}\\ \hline\hline
    0 & 0 & 0 & 0 &&\phantom{$X + Y + Z$}\\[-4pt]
    0 & 0 & 1 & 0 &&\phantom{$X + Y + \overline{Z}$}\\[-4pt]
    \textcolor{red}0 & \textcolor{red}1 & \textcolor{red}0 & \textcolor{red}1 & \textcolor{red}{$\overline{X} \cdot Y \cdot \overline{Z}$} & \\[-4pt]
    0 & 1 & 1 & 0 &&\phantom{$X + \overline{Y} + \overline{Z}$}\\[-4pt]
    \textcolor{red}1 & \textcolor{red}0 & \textcolor{red}0 & \textcolor{red}1 & \textcolor{red}{$X \cdot \overline{Y} \cdot \overline{Z}$} & \\[-4pt]
    \textcolor{red}1 & \textcolor{red}0 & \textcolor{red}1 & \textcolor{red}1 & \textcolor{red}{$X \cdot \overline{Y} \cdot Z$} & \\[-4pt]
    \textcolor{red}1 & \textcolor{red}1 & \textcolor{red}0 & \textcolor{red}1 & \textcolor{red}{$X \cdot Y \cdot \overline{Z}$} & \\[-4pt]
    \textcolor{red}1 & \textcolor{red}1 & \textcolor{red}1 & \textcolor{red}1 & \textcolor{red}{$X \cdot Y \cdot Z$} & \\ \hline
  \end{tabular}

  \vspace{3mm}
  \color{red}
  $F$ $=$
  $\overline{X} \ Y \ \overline{Z}$ $+$
  $X \ \overline{Y} \ \overline{Z}$ $+$
  $X \ \overline{Y} \ Z$ $+$
  $X \ Y \ \overline{Z}$ $+$
  $X \ Y \ Z$
  \hfill
  最小項の論理和
\end{frame}
%------------------------------------------------ SLIDE -
\section{最大項}
\begin{frame}\frametitle{\secname}
  \fontsize{13pt}{15}\selectfont
\textcolor{blue}{最大項}: ある真理値表が与えられた時、すべての変数を１回ずつ含み、出力が\textcolor{blue}{０}となる組み合わせ\,(論理\textcolor{blue}{和}で示し、それぞれの変数が\textcolor{blue}{１}のとき、バーをつける)。
\textcolor{blue}{$0+0+{\cdots}+0=0$}

  \fontsize{12pt}{14}\selectfont
\vspace{1mm}
\renewcommand{\arraystretch}{1.2}
\setlength{\tabcolsep}{6.mm}
\begin{tabular}[t]{ccc|c||c|c}\hline
 X & Y & Z & F &最小項&最大項\\ \hline\hline
\textcolor{blue}0 &\textcolor{blue}0 &\textcolor{blue}0 &\textcolor{blue}0 &                                                            &\textcolor{blue}{$X + Y + Z$}\\[-4pt]
\textcolor{blue}0 &\textcolor{blue}0 &\textcolor{blue}1 &\textcolor{blue}0 &                                                            &\textcolor{blue}{$X + Y + \overline{Z}$}\\[-4pt]
 \textcolor{red}0 & \textcolor{red}1 & \textcolor{red}0 & \textcolor{red}1 & \textcolor{red}{$\overline{X} \cdot Y \cdot \overline{Z}$} & \\[-4pt]
\textcolor{blue}0 &\textcolor{blue}1 &\textcolor{blue}1 &\textcolor{blue}0 &                                                            &\textcolor{blue}{$X + \overline{Y} + \overline{Z}$}\\[-4pt]
 \textcolor{red}1 & \textcolor{red}0 & \textcolor{red}0 & \textcolor{red}1 & \textcolor{red}{$X \cdot \overline{Y} \cdot \overline{Z}$} & \\[-4pt]
 \textcolor{red}1 & \textcolor{red}0 & \textcolor{red}1 & \textcolor{red}1 & \textcolor{red}{$X \cdot \overline{Y} \cdot Z$} & \\[-4pt]
 \textcolor{red}1 & \textcolor{red}1 & \textcolor{red}0 & \textcolor{red}1 & \textcolor{red}{$X \cdot Y \cdot \overline{Z}$} & \\[-4pt]
 \textcolor{red}1 & \textcolor{red}1 & \textcolor{red}1 & \textcolor{red}1 & \textcolor{red}{$X \cdot Y \cdot Z$} & \\ \hline
\end{tabular}

\vspace{3mm}
\color{blue}
$F$ $=$ ($X + Y + Z$) ($X + Y + \overline{Z}$) ($X + \overline{Y} + \overline{Z}$)
\hfill
最大項の論理積
\end{frame}
%------------------------------------------------ SLIDE -
\section{最小項の論理和と最大項の論理積}
\begin{frame}\frametitle{\secname}
  \vspace{-2mm}
  \fontsize{13pt}{15}\selectfont
  \begin{itemize}
  \item \textcolor{red}{最小項の論理和}

    ある真理値表が与えられた時、結果が\textcolor{red}{１}となる変数の値０,１のそれぞれの組み合わせについて、その値が\textcolor{red}{１}の時はそのまま、\textcolor{red}{０}の時はその変数を~NOT し、すべての変数の~\textcolor{red}{AND} をとった項を\hspace{2.975mm}\textcolor{red}{OR}\hspace{2.975mm}で結ぶことで、論理関数を求めることができる。

    {\color{red}
      $F$ $=$
      $\overline{X} \ Y \ \overline{Z}$ $+$
      $X \ \overline{Y} \ \overline{Z}$ $+$
      $X \ \overline{Y} \ Z$ $+$
      $X \ Y \ \overline{Z}$ $+$
      $X \ Y \ Z$
    }

  \item \textcolor{blue}{最大項の論理積}

    ある真理値表が与えられた時、結果が\textcolor{blue}{０}となる変数の値０,１のそれぞれの組み合わせについて、その値が\textcolor{blue}{０}の時はそのまま、\textcolor{blue}{１}の時はその変数を~NOT し、すべての変数の\hspace{2.975mm}\textcolor{blue}{OR}\hspace{2.975mm}をとった項を~\textcolor{blue}{AND} で結ぶことで、論理関数を求めることができる。

    {\color{blue}
    $F$ $=$ ($X + Y + Z$) ($X + Y + \overline{Z}$) ($X + \overline{Y} + \overline{Z}$)
    }
    
  \end{itemize}

\end{frame}
%------------------------------------------------ SLIDE -
\section{最小項の論理和と最大項の論理積}
\begin{frame}\frametitle{\secname}
  \vspace{-2mm}
  \fontsize{13pt}{15}\selectfont
  \begin{itemize}
  \item \textcolor{blue}{最大項の論理積}

    ある真理値表が与えられた時、結果が\textcolor{blue}{０}となる変数の値０,１のそれぞれの組み合わせについて、その値が\textcolor{blue}{０}の時はそのまま、\textcolor{blue}{１}の時はその変数を~NOT し、すべての変数の\hspace{2.975mm}\textcolor{blue}{OR}\hspace{2.975mm}をとった項を~\textcolor{blue}{AND} で結ぶことで、論理関数を求めることができる。

    {\color{blue}
    $F$ $=$ ($X + Y + Z$) ($X + Y + \overline{Z}$) ($X + \overline{Y} + \overline{Z}$)
    }
    
  \item \textcolor{red}{最小項の論理和}

    ある真理値表が与えられた時、結果が\textcolor{red}{１}となる変数の値０,１のそれぞれの組み合わせについて、その値が\textcolor{red}{１}の時はそのまま、\textcolor{red}{０}の時はその変数を~NOT し、すべての変数の~\textcolor{red}{AND} をとった項を\hspace{2.975mm}\textcolor{red}{OR}\hspace{2.975mm}で結ぶことで、論理関数を求めることができる。

    {\color{red}
      $F$ $=$
      $\overline{X} \ Y \ \overline{Z}$ $+$
      $X \ \overline{Y} \ \overline{Z}$ $+$
      $X \ \overline{Y} \ Z$ $+$
      $X \ Y \ \overline{Z}$ $+$
      $X \ Y \ Z$
    }

  \end{itemize}

\end{frame}
%------------------------------------------------ SLIDE -
\section{最小項の論理和と最大項の論理積}
\begin{frame}\frametitle{\secname}
  \vspace{-4mm}
  \fontsize{12pt}{14}\selectfont
  \renewcommand{\arraystretch}{1.3}
  \setlength{\tabcolsep}{9pt}
  \begin{tabular}[t]{ccc|c|c||c|c|c}\hline
    \rule{0pt}{.9\normalbaselineskip}X & Y & Z & F &$\overline{F}$ &\hspace{-2mm}F の最小項\hspace*{-2mm}&\hspace{-2mm}$\overline{F}$ の最小項\hspace*{-2mm} & \hspace{-2mm}F の最大項\hspace*{-2mm}\\ \hline\hline
    \rule{0pt}{.9\normalbaselineskip}\textcolor{blue}0 &\textcolor{blue}0 &\textcolor{blue}0 &\textcolor{blue}0 &\textcolor{blue}1& &\textcolor{blue}{$\overline{X} \ \overline{Y} \ \overline{Z}$} & \textcolor{blue}{$X + Y + Z$} \\[-4pt]
    \textcolor{blue}0 &\textcolor{blue}0 &\textcolor{blue}1 &\textcolor{blue}0 &\textcolor{blue}1& &\textcolor{blue}{$\overline{X} \ \overline{Y} \ Z$} & \textcolor{blue}{$X + Y + \overline{Z}$} \\[-4pt]
    \textcolor{red}0  & \textcolor{red}1 & \textcolor{red}0 & \textcolor{red}1 &0& \textcolor{red}{$\overline{X} \ Y \ \overline{Z}$} &  & \\[-4pt]
    \textcolor{blue}0 &\textcolor{blue}1 &\textcolor{blue}1 &\textcolor{blue}0 &\textcolor{blue}1& &\textcolor{blue}{$\overline{X} \ Y \ Z$} & \textcolor{blue}{$X + \overline{Y} + \overline{Z}$}\\[-4pt]
    \textcolor{red}1  & \textcolor{red}0 & \textcolor{red}0 & \textcolor{red}1 &0& \textcolor{red}{$X \ \overline{Y} \ \overline{Z}$} &  & \\[-4pt]
    \textcolor{red}1  & \textcolor{red}0 & \textcolor{red}1 & \textcolor{red}1 &0& \textcolor{red}{$X \ \overline{Y} \ Z$} &  & \\[-4pt]
    \textcolor{red}1  & \textcolor{red}1 & \textcolor{red}0 & \textcolor{red}1 &0& \textcolor{red}{$X \ Y \ \overline{Z}$} &  & \\[-4pt]
    \textcolor{red}1  & \textcolor{red}1 & \textcolor{red}1 & \textcolor{red}1 &0& \textcolor{red}{$X \ Y \ Z$} &  & \\ \hline
  \end{tabular}

  \fontsize{11pt}{14}\selectfont

  \vspace{2mm}
  $\overline{F}=
  \overline{X} \ \overline{Y} \ \overline{Z}+
  \overline{X} \ \overline{Y} \ Z+
  \overline{X} \ Y \ Z$
  \cdotfill
  $\overline{F}$ の最小項の論理和

  \pause
  \vspace{2mm}
  $F=\overline{\overline{F}}=\overline{
    \overline{X} \ \overline{Y} \ \overline{Z}+
    \overline{X} \ \overline{Y} \ Z+
    \overline{X} \ Y \ Z}$
  \hfill $\downarrow$ ~ ド・モルガンの法則 ($\overline{A+B}=\overline{A}\ \overline{B}$)

  \pause
  \vspace{1mm}
  $\phantom{F}=\mbox{(}\overline{
    \overline{X} \ \overline{Y} \ \overline{Z}}\mbox{)} \ 
  \mbox{(}\overline{
    \overline{X} \ \overline{Y} \ Z}\mbox{)} \ 
  \mbox{(}\overline{
    \overline{X} \ Y \ Z}\mbox{)}$
  \hfill $\downarrow$ ~ ド・モルガンの法則 \mbox{(}$\overline{A\ B}=\overline{A}+\overline{B}$\mbox{)}

  \pause
  \vspace{1mm}
  $\phantom{F}=\mbox{(}X + Y + Z\mbox{)} \ \mbox{(}X + Y + \overline{Z}\mbox{)} \ \mbox{(}X + \overline{Y} + \overline{Z}\mbox{)}$
  \cdotfill\textcolor{blue}{F の最大項の論理積}

\end{frame}
%------------------------------------------------ SLIDE -
\section{最小項の論理和＝最大項の論理積}
\begin{frame}\frametitle{\secname}
  \vspace{-2mm}
  \renewcommand\baselinestretch{1.67}
  \fontsize{12pt}{14}\selectfont
  $F$ $=$
  \phantom{(}$\overline{X} \ Y \ \overline{Z}$ $+$
  $X \ \overline{Y} \ \overline{Z}$ $+$
  $X \ \overline{Y} \ Z$ $+$
  $X \ Y \ \overline{Z}$ $+$
  $X \ Y \ Z$
  \hfill
  \textcolor{red}{最小項の論理和}

  \pause
  $\phantom{F}$ $=$ 
  \phantom{(}$\overline{X} \ Y \ \overline{Z}$ $+$
  $X \ \overline{Y} \ \overline{Z}$ $+$
  $X \ \overline{Y} \ Z$ $+$
  \textcolor{blue}{$X \ Y \ \overline{Z}$} $+$
  $X \ Y \ Z$ $+$ {\color{blue} $X \ Y \ \overline{Z}$}
  \hfill 冪等律
  
  \pause
  $\phantom{F}$ $=$ \phantom{(}$\overline{X} \ Y \ \overline{Z}$ $+$ 
  \textcolor{blue}{$X$} ($\overline{Y} \ \overline{Z}$ $+$
  $\overline{Y} \ Z$ $+$
  $Y \ \overline{Z}$ $+$
  $Y \ Z$) $+$ 
  $X \ Y \ \overline{Z}$\hfill 分配律

  \pause
  $\phantom{F}$ $=$ \phantom{(}$\overline{X} \ Y \ \overline{Z}$ $+$ 
  $X$ (\textcolor{blue}{$\overline{Y}$} ($\overline{Z}$ $+$ $Z$) $+$
  \textcolor{blue}{$Y$} ($\overline{Z}$ $+$ $Z$)) $+$ 
  $X \ Y \ \overline{Z}$\hfill 分配律

  \pause
  $\phantom{F}$ $=$ \phantom{(}$\overline{X} \ Y \ \overline{Z}$ $+$ 
  $X$ (\textcolor{blue}{$\overline{Y}$} $+$
  \textcolor{blue}{$Y$}) $+$ 
  $X \ Y \ \overline{Z}$\hfill 補元律、同一律

  \pause
  $\phantom{F}$ $=$ \phantom{(}$\overline{X} \ Y \ \overline{Z}$ $+$ 
  \textcolor{blue}{$X$} $+$ 
  $X \ Y \ \overline{Z}$\hfill 補元律、同一律

  \pause
  $\phantom{F}$ $=$ \phantom{(}\textcolor{blue}{$X$} $+$ \textcolor{blue}{$\overline{X} \ Y \ \overline{Z}$} $+$ 
  $X \ Y \ \overline{Z}$\hfill 交換律

  \pause
  $\phantom{F}$ $=$ \phantom{(}$X$ $+$ ($\overline{X}+X$) \textcolor{blue}{$Y \ \overline{Z}$}\hfill 分配律

  \pause
  $\phantom{F}$ $=$ \phantom{(}\colorbox{yellow!30}{$X$ $+$ \textcolor{blue}{$Y \ \overline{Z}$}}\hfill 補元律、同一律

\end{frame}
%------------------------------------------------ SLIDE -
\section{最小項の論理和＝最大項の論理積}
\begin{frame}\frametitle{\secname}
  \vspace{-2mm}
  \renewcommand\baselinestretch{1.67}
  \fontsize{12pt}{14}\selectfont
  $F$ $=$ ($X + Y + Z$) ($X + Y + \overline{Z}$) ($X + \overline{Y} + \overline{Z}$)
  \hfill
  \textcolor{blue}{最大項の論理積}

  \pause
  $\phantom{F}$ $=$                     ($X \ X + X \ Y + X \ \overline{Z}\ + $\hfill 分配律

  $\phantom{F}$ $\phantom{=}$ \phantom{(}$Y \ X + Y \ Y + Y \ \overline{Z}\ + $\hfill 分配律

  $\phantom{F}$ $\phantom{=}$ \phantom{(}$Z \ X + Z \ Y + Z \ \overline{Z}$) ($X + \overline{Y} + \overline{Z}$)\hfill 分配律

  \pause
  $\phantom{F}$ $=$ ($X+Y$) ($X + \overline{Y} + \overline{Z}$)\hfill 冪等律、吸収律、補元律

  \pause
  $\phantom{F}$ $=$ \phantom{(}$X \ X + X \ \overline{Y} + X \ \overline{Z}\ + $\hfill 分配律

  $\phantom{F}$ $\phantom{=}$ \phantom{(}$Y \ X + Y \ \overline{Y} + Y \ \overline{Z}$\hfill 分配律

  \pause
  $\phantom{F}$ $=$ \phantom{(}\colorbox{yellow!30}{$X+Y \ \overline{Z}$}\hfill 冪等律、吸収律、補元律

  \pause
  $\phantom{F}$ $=$ \phantom{(}$\overline{X} \ Y \ \overline{Z}$ $+$
  $X \ \overline{Y} \ \overline{Z}$ $+$
  $X \ \overline{Y} \ Z$ $+$
  $X \ Y \ \overline{Z}$ $+$
  $X \ Y \ Z$
  \hfill
  \textcolor{red}{最小項の論理和}

\end{frame}
%------------------------------------------------ SLIDE -
%------------------------------------------------ SLIDE -
\section{論理和論理積の回路 (Verilog HDL)}
\begin{frame}[fragile]\frametitle{\secname}
\fontsize{11pt}{11.5}\selectfont
\begin{code}
`timescale 1ns/1ns

module sum_prod_ex1 (X, Y, Z, FSUM, FPRO);
    input  X, Y, Z;
    output FSUM, FPRO;

    assign FSUM = ~X &  Y & ~Z |
                   X & ~Y & ~Z |
                   X & ~Y &  Z |
                   X &  Y & ~Z |
                   X &  Y &  Z;   // sum of products

    assign FPRO = (X |  Y |  Z) &
                  (X |  Y | ~Z) &
                  (X | ~Y | ~Z);  // product of sums

endmodule
\end{code}

\vspace{-8mm}
\hfill
\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/sum_prod_ex1.v}{\color{blue}\underline{sum\_prod\_ex1.v}}~

\magenta
\fontsize{8pt}{9}\selectfont

\vspace{-48.5mm}
\hspace*{7mm}
/ / \ $FSUM$ $=$
\phantom{(}$\overline{X} \ Y \ \overline{Z}$ $+$
$X \ \overline{Y} \ \overline{Z}$ $+$
$X \ \overline{Y} \ Z$ $+$
$X \ Y \ \overline{Z}$ $+$
$X \ Y \ Z$ \hfill (最小項の論理和)~

\vspace{21mm}
\hspace*{7mm}
/ / \ $FPRO$ $=$ ($X + Y + Z$) ($X + Y + \overline{Z}$) ($X + \overline{Y} + \overline{Z}$)
\hfill (最大項の論理積)~

\end{frame}
%------------------------------------------------ SLIDE -
\section{論理和論理積の回路 (テストベンチ)}
\begin{frame}[fragile]\frametitle{\secname}
\fontsize{11pt}{11.5}\selectfont
\begin{code}
`timescale 1ns/1ns
module sum_prod_ex1_tb;
    reg  X, Y, Z;
    wire FSUM, FPRO;
    sum_prod_ex1 i0 (X, Y, Z, FSUM, FPRO);
    initial begin
        #0 X = 0; Y = 0; Z = 0;
        #8 $finish;
    end
    always #1 X = ~X;
    always #2 Y = ~Y;
    always #4 Z = ~Z;
    initial begin
        $dumpfile ("sum_prod_ex1.vcd");
        $dumpvars;
    end
endmodule
\end{code}

\vspace{-8mm}
\hfill
\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/sum_prod_ex1_tb.v}{\color{blue}\underline{sum\_prod\_ex1\_tb.v}}~

\end{frame}
%------------------------------------------------ SLIDE -
\section{論理和論理積の回路 (波形)}
\begin{frame}[fragile]\frametitle{\secname}
\vspace{-5mm}
\begin{verbatim}
% iverilog -Wall -o sum_prod_ex1 \
  sum_prod_ex1_tb.v sum_prod_ex1.v
% ./sum_prod_ex1
% gtkwave sum_prod_ex1.vcd
\end{verbatim}

\vspace{-1mm}
\includegraphics[width=.7\textwidth]{figs/sum_prod_ex1_vcd.png}

\magenta
\resizebox{\textwidth}{!}{$FPRO$ (最大項の論理積) $===$ $FSUM$ (最小項の論理和)}

\end{frame}
%------------------------------------------------ SLIDE -
%------------------------------------------------ SLIDE -
\section{論理式の積和形と和積形}
\begin{frame}\frametitle{\secname}
\vspace{-2mm}
\renewcommand\baselinestretch{1.05}
\fontsize{12pt}{14}\selectfont
\begin{itemize}
\item 最小項の論理和 ＝ 積和標準形 ＝ 加法標準形

{\color{red}
$F$ $=$
$\overline{X} \ Y \ \overline{Z}$ $+$
$X \ \overline{Y} \ \overline{Z}$ $+$
$X \ \overline{Y} \ Z$ $+$
$X \ Y \ \overline{Z}$ $+$
$X \ Y \ Z$
}

  \pause
\item 最大項の論理積 ＝ 和積標準形 ＝ 乗法標準形

{\color{blue}
$F$ $=$ ($X + Y + Z$) ($X + Y + \overline{Z}$) ($X + \overline{Y} + \overline{Z}$)
}

  \pause
\item \textcolor{red}{積和形} ＝ 加法形 ＝ 簡単化された積和標準形
 
{\color{red}
$F=X+Y \ \overline{Z}$\cdotfill{積和形（加法形）}
}

  \pause
\item \textcolor{blue}{和積形} ＝ 乗法形 ＝ 簡単化された和積標準形

\vspace{2mm}
$\overline{F}=\overline{X+Y \ \overline{Z}}
=\overline{X}\ \mbox{(}\overline{Y \ \overline{Z}}\mbox{)}
=\overline{X}\ \mbox{(}\overline{Y} + Z\mbox{)}
=\overline{X}\ \overline{Y} + \overline{X}\ Z$

  \pause
\vspace{4mm}
$\textcolor{blue}{F}=\overline{\overline{F}}=\overline{\overline{X}\ \overline{Y} + \overline{X}\ Z}$
\hfill $\uparrow$ ド・モルガンの法則、分配律~~~

  \pause
\vspace{2mm}
$\phantom{F}=\mbox{(}\overline{\overline{X}\ \overline{Y}}\mbox{)} \ \mbox{(}\overline{\overline{X}\ Z}\mbox{)}$
\hfill $\leftarrow\ \downarrow$ ド・モルガンの法則~~~

  \pause
\vspace{2mm}
{\color{blue}
$\phantom{F}=\mbox{(}X+Y\mbox{)}\ \mbox{(}X+\overline{Z}\mbox{)}$\cdotfill{和積形（乗法形）}
}
\end{itemize}

\end{frame}
%------------------------------------------------ SLIDE -
\section{論理式の積和形と和積形}
\begin{frame}\frametitle{\secname}

\textcolor{red}{$FSUM=X+Y \ \overline{Z}$\hfill 積和形（加法形）}

\vspace{5mm}
\textcolor{blue}{$FPRO=\mbox{(}X+Y\mbox{)}\ \mbox{(}X+\overline{Z}\mbox{)}$\hfill 和積形（乗法形）}

\vspace{7mm}

\includegraphics[width=\textwidth]{figs/sum_prod_ex2.pdf}

\end{frame}
%------------------------------------------------ SLIDE -
%------------------------------------------------ SLIDE -
\section{積和形と和積形の回路 (Verilog HDL)}
\begin{frame}[fragile]\frametitle{\secname}

\textcolor{red}{$FSUM=X+Y \ \overline{Z}$\hfill 積和形（加法形）}

\vspace{5mm}
\textcolor{blue}{$FPRO=\mbox{(}X+Y\mbox{)}\ \mbox{(}X+\overline{Z}\mbox{)}$\hfill 和積形（乗法形）}

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

module sum_prod_ex2 (X, Y, Z, FSUM, FPRO);
    input  X, Y, Z;
    output FSUM, FPRO;

    assign FSUM = X | Y & ~Z; // sum of products

    assign FPRO = ( X |  Y) & 
                  ( X | ~Z);  // product of sums
endmodule
\end{code}

\vspace{-8mm}
\hfill
\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/sum_prod_ex2.v}{\color{blue}\underline{sum\_prod\_ex2.v}}~

\end{frame}
%------------------------------------------------ SLIDE -
\section{積和形と和積形の回路 (テストベンチ)}
\begin{frame}[fragile]\frametitle{\secname}
\fontsize{11pt}{11.5}\selectfont
\begin{code}
`timescale 1ns/1ns
module sum_prod_ex2_tb;
    reg  X, Y, Z;
    wire FSUM, FPRO;
    sum_prod_ex2 i0 (X, Y, Z, FSUM, FPRO);
    initial begin
        #0 X = 0; Y = 0; Z = 0;
        #8 $finish;
    end
    always #1 X = ~X;
    always #2 Y = ~Y;
    always #4 Z = ~Z;
    initial begin
        $dumpfile ("sum_prod_ex2.vcd");
        $dumpvars;
    end
endmodule
\end{code}

\vspace{-8mm}
\hfill
\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/sum_prod_ex2_tb.v}{\color{blue}\underline{sum\_prod\_ex2\_tb.v}}~

\end{frame}
%------------------------------------------------ SLIDE -
\section{積和形と和積形の回路 (波形)}
\begin{frame}[fragile]\frametitle{\secname}
\vspace{-5mm}
\begin{verbatim}
% iverilog -Wall -o sum_prod_ex2 \
  sum_prod_ex2_tb.v sum_prod_ex2.v
% ./sum_prod_ex2
% gtkwave sum_prod_ex2.vcd
\end{verbatim}

\vspace{-1mm}
\includegraphics[width=.7\textwidth]{figs/sum_prod_ex2_vcd.png}

\magenta
\vspace{1mm}
\resizebox{\textwidth}{!}{$FPRO$ (和積形) $===$ $FSUM$ (積和形)}

\end{frame}
%------------------------------------------------ SLIDE -
\section{積和形から和積形に変形する}
\begin{frame}\frametitle{\secname}
\renewcommand\baselinestretch{1.02}
\fontsize{11pt}{13}\selectfont
\textcolor{red}{$F = \overline{A}\ \overline{B} + B\ C + \overline{B}\ \overline{C}$ \cdotfill 積和形}

  \pause
\vspace{4mm}
$\overline{F} = \overline{\overline{A}\ \overline{B} + B\ C + \overline{B}\ \overline{C}}$

  \pause
${\phantom{\overline{F}}} = \mbox{(}\overline{\overline{A}\ \overline{B}}\mbox{)}\ \mbox{(}\overline{B\ C}\mbox{)}\ \mbox{(}\overline{\overline{B}\ \overline{C}}\mbox{)}$
\hfill ド・モルガンの法則

  \pause
${\phantom{\overline{F}}} = \mbox{(}A+B\mbox{)}\ \mbox{(}\overline{B}+\overline{C}\mbox{)}\ \mbox{(}B+C\mbox{)}$
\hfill ド・モルガンの法則

  \pause
${\phantom{\overline{F}}} = \mbox{(}A\ \overline{B}+A\ \overline{C}+B\ \overline{B}+B\ \overline{C}\mbox{)}\ \mbox{(}B+C\mbox{)}$
\hfill 分配律

  \pause
${\phantom{\overline{F}}} = \mbox{(}A\ \overline{B}+A\ \overline{C}+B\ \overline{C}\mbox{)}\ \mbox{(}B+C\mbox{)}$
\hfill  補元律、同一律

  \pause
${\phantom{\overline{F}}} = 
A\ \overline{B}\ B+
A\ \overline{B}\ C+
A\ \overline{C}\ B+
A\ \overline{C}\ C+
B\ \overline{C}\ B+
B\ \overline{C}\ C$
\hfill 分配律

  \pause
${\phantom{\overline{F}}} = 
A\ \overline{B}\ C+
A\ \overline{C}\ B+
B\ \overline{C}\ B$
\hfill 補元律、同一律

  \pause
${\phantom{\overline{F}}} = A\ \overline{B}\ C + A\ B\ \overline{C} + B\ \overline{C}$
\hfill 交換律、冪等律

  \pause
${\phantom{\overline{F}}} = A\ \overline{B}\ C + B\ \overline{C}$ ~~\textcolor{magenta}{$\leftarrow$ 簡単化された~$\overline{F}$ の論理式}
\hfill 吸収律

  \pause
\vspace{4mm}
$\textcolor{blue}{F} = \overline{\overline{F}} = \overline{A\ \overline{B}\ C + B\ \overline{C}}$ 
~~\textcolor{magenta}{$\leftarrow \overline{\mbox{簡単化された}~\overline{F}\ \mbox{の論理式}}$}
\hfill 対合律

  \pause
${\phantom{F}} = \mbox{(}\overline{A\ \overline{B}\ C}\mbox{)}\ \mbox{(}\overline{B\ \overline{C}}\mbox{)}$
\hfill $\leftarrow\ \downarrow$ ド・モルガンの法則

  \pause
\color{blue}
${\phantom{F}} = \mbox{(}\overline{A} + B + \overline{C}\mbox{)}\ \mbox{(}\overline{B} + C\mbox{)}$ \cdotfill 和積形

\end{frame}
%------------------------------------------------ SLIDE -
\section{和積形から積和形に変形する}
\begin{frame}\frametitle{\secname}
\renewcommand\baselinestretch{1.45}
\fontsize{11pt}{13}\selectfont

\vspace{-1.95mm}
{\color{blue}
$F = \mbox{(}\overline{A} + B + \overline{C}\mbox{)}\ \mbox{(}\overline{B} + C\mbox{)}$ \cdotfill 和積形}

  \pause
${\phantom{F}}=
\overline{A}\ \overline{B} + \overline{A}\ C+
B\ \overline{B} + B\ C+
\overline{C}\ \overline{B} + \overline{C}\ C$
\hfill 分配律

  \pause
${\phantom{F}}=
\overline{A}\ \overline{B} + \overline{A}\ C+
B\ C+
\overline{C}\ \overline{B}$
\hfill 補元律、同一律

  \pause
${\phantom{F}}=
\overline{A}\ \overline{B} + \overline{A}\ C+
B\ C+
\overline{B}\ \overline{C}$
\hfill 交換律

  \pause
${\phantom{F}}=
\overline{A}\ \overline{B} + \overline{A}\ C\ \textcolor{red}{\mbox{(}\overline{B} + B\mbox{)}}+
B\ C+
\overline{B}\ \overline{C}$
\hfill 補元律、同一律

  \pause
${\phantom{F}}=
\overline{A}\ \overline{B} + 
\overline{A}\ \overline{B}\ C + 
\overline{A}\ B\ C +
B\ C +
\overline{B}\ \overline{C}$
\hfill 分配律、交換律

  \pause
${\phantom{F}}=
\overline{A}\ \overline{B}\ \mbox{(}1+C\mbox{)} + 
\mbox{(}\overline{A}+1\mbox{)}\ B\ C +
\overline{B}\ \overline{C}$
\hfill 分配律

  \pause
${\phantom{F}}=
\overline{A}\ \overline{B}\ 1 + 
1\ B\ C +
\overline{B}\ \overline{C}$
\hfill 支配律

  \pause
${\phantom{F}}=
\overline{A}\ \overline{B} + 
B\ C +
\overline{B}\ \overline{C}$
\hfill 同一律

\vspace{5.7mm}
\textcolor{red}{$F = \overline{A}\ \overline{B} + B\ C + \overline{B}\ \overline{C}$ \cdotfill 積和形}

\end{frame}
%------------------------------------------------ SLIDE -
%------------------------------------------------ SLIDE -
\section{論理式の積和形と和積形}
\begin{frame}\frametitle{\secname}

\textcolor{red}{$FSUM=\overline{A}\ \overline{B} + B\ C + \overline{B}\ \overline{C}$\hfill 積和形（加法形）}

\vspace{1mm}
\textcolor{blue}{$FPRO=\mbox{(}\overline{A} + B + \overline{C}\mbox{)}\ \mbox{(}\overline{B} + C\mbox{)}$\hfill 和積形（乗法形）}

\vspace{3mm}

\includegraphics[width=\textwidth]{figs/sum_prod_ex3.pdf}

\end{frame}
%------------------------------------------------ SLIDE -
%------------------------------------------------ SLIDE -
\section{積和形と和積形の回路 (Verilog HDL)}
\begin{frame}[fragile]\frametitle{\secname}

\textcolor{red}{$FSUM=\overline{A}\ \overline{B} + B\ C + \overline{B}\ \overline{C}$\hfill 積和形（加法形）}

\vspace{1mm}
\textcolor{blue}{$FPRO=\mbox{(}\overline{A} + B + \overline{C}\mbox{)}\ \mbox{(}\overline{B} + C\mbox{)}$\hfill 和積形（乗法形）}

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

module sum_prod_ex3 (A, B, C, FSUM, FPRO);
    input  A, B, C;
    output FSUM, FPRO;

    assign FSUM =  ~A & ~B |
                    B &  C |
                   ~B & ~C;   // sum of products

    assign FPRO = (~A |  B | ~C) &
                  (~B |  C);  // product of sums
endmodule
\end{code}

\vspace{-8mm}
\hfill
\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/sum_prod_ex3.v}{\color{blue}\underline{sum\_prod\_ex3.v}}~

\end{frame}
%------------------------------------------------ SLIDE -
\section{積和形と和積形の回路 (テストベンチ)}
\begin{frame}[fragile]\frametitle{\secname}
\fontsize{11pt}{11.5}\selectfont
\begin{code}
`timescale 1ns/1ns
module sum_prod_ex3_tb;
    reg  A, B, C;
    wire FSUM, FPRO;
    sum_prod_ex3 i0 (A, B, C, FSUM, FPRO);
    initial begin
        #0 A = 0; B = 0; C = 0;
        #8 $finish;
    end
    always #1 A = ~A;
    always #2 B = ~B;
    always #4 C = ~C;
    initial begin
        $dumpfile ("sum_prod_ex3.vcd");
        $dumpvars;
    end
endmodule
\end{code}

\vspace{-8mm}
\hfill
\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/sum_prod_ex3_tb.v}{\color{blue}\underline{sum\_prod\_ex3\_tb.v}}~

\end{frame}
%------------------------------------------------ SLIDE -
\section{積和形と和積形の回路 (波形)}
\begin{frame}[fragile]\frametitle{\secname}
\vspace{-5mm}
\begin{verbatim}
% iverilog -Wall -o sum_prod_ex3 \
  sum_prod_ex3_tb.v sum_prod_ex3.v
% ./sum_prod_ex3
% gtkwave sum_prod_ex3.vcd
\end{verbatim}

\vspace{-1mm}
\includegraphics[width=.7\textwidth]{figs/sum_prod_ex3_vcd.png}

\magenta
\vspace{1mm}
\resizebox{\textwidth}{!}{$FPRO$ (和積形) $===$ $FSUM$ (積和形)}

\end{frame}
%------------------------------------------------ SLIDE -
\section{論理式の積和~(加法) 形と和積~(乗法) 形}
\begin{frame}\frametitle{\secname}
\hspace*{-4mm}
\color{blue}{まとめ}

\begin{itemize}
\color{blue}
\setlength{\itemsep}{2.6mm}
\item 最小項
\item 最大項
\item 最小項の論理和＝積和標準形＝加法標準形
\item 最大項の論理積＝和積標準形＝乗法標準形
\item 論理式の積和形
\item 論理式の和積形
\item 積和形から和積形に変形
\item 和積形から積和形に変形
\end{itemize}

\end{frame}
%------------------------------------------------ SLIDE -
\section[method=direct]{課題~IV (100 点)}
\begin{frame}\frametitle{\secname}
\fontsize{13pt}{14}\selectfont
次の論理式を積和形から和積形に変形して下さい。

\vspace{-3mm}
$$\mathsf{F\_SUM=\overline{A} \,\cdot\, \overline{C} \,\cdot\, D + \overline{B} \,\cdot\, \overline{C} \,\cdot\, D + \overline{B} \,\cdot\, \overline{D}}$$

\vspace{-8mm} 
$$\textcolor{red}{\Downarrow}$$

\vspace{-6mm}
$$\mathsf{F\_PRO=\mbox{(}\,\boxed{\phantom{\overline{\cdot}}}+\boxed{\phantom{\overline{\cdot}}}\,\mbox{)} \cdot \mbox{(}\,\boxed{\phantom{\overline{\cdot}}}+\boxed{\phantom{\overline{\cdot}}}\,\mbox{)} \cdot \mbox{(}\,\boxed{\phantom{\overline{\cdot}}}+\boxed{\phantom{\overline{\cdot}}}\,\mbox{)}}$$

\vspace{2mm}
\textcolor{red}{ヒント: $\mathsf{\overline{F\_SUM}}$ の式のなかに、
$B \cdot C ~~ \Rightarrow ~~ B \cdot C \cdot \mbox{(}\,\overline{D} + D\,\mbox{)}$。}\\
さらに、二つの論理式~F\_SUM と~F\_PRO をVerilog HDLで実装しシミュレーションして下さい。

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

\vspace{4mm}
\color{magenta}
レポートの必須項目:
(1) 論理式~F\_PRO の導出過程、\\
(2) 回路のVerilog HDLコード、
(3) 波形と波形の説明。
\end{frame}
%------------------------------------------------ SLIDE -
\section[method=direct]{課題~IV (100 点)}
\begin{frame}[fragile]\frametitle{\secname}
\fontsize{13pt}{14}\selectfont
\vspace{-5mm}
$$\mathsf{F\_SUM=\overline{A} \,\cdot\, \overline{C} \,\cdot\, D + \overline{B} \,\cdot\, \overline{C} \,\cdot\, D + \overline{B} \,\cdot\, \overline{D}}$$

\vspace{-5mm}
$$\mathsf{F\_PRO=\mbox{(}\,\boxed{\phantom{\overline{\cdot}}}+\boxed{\phantom{\overline{\cdot}}}\,\mbox{)} \cdot \mbox{(}\,\boxed{\phantom{\overline{\cdot}}}+\boxed{\phantom{\overline{\cdot}}}\,\mbox{)} \cdot \mbox{(}\,\boxed{\phantom{\overline{\cdot}}}+\boxed{\phantom{\overline{\cdot}}}\,\mbox{)}}$$

\fontsize{12pt}{15}\selectfont
\begin{code}
`timescale 1ns/1ns

module product_of_sums (A, B, C, D, F_SUM, F_PRO);
    input  A, B, C, D;
    output F_SUM, F_PRO;

    assign F_SUM = ~A & ~C & D | ~B & ~C & D | ~B & ~D;
    assign F_PRO = (   |   ) & (   |   ) & (   |   );

endmodule
\end{code}

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

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