%\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}{論理式、論理ゲート、論理ゲートのCMOS型実装}
\date{2023 年 10 月 3 日 (火)}

\title{\PDFTITLE} % bottom PDFTITLE
\subtitle{論理ゲートのCMOS型実装}
\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{論理ゲートのCMOS型実装}
\begin{frame}\frametitle{\secname}
\fontsize{13pt}{16}\selectfont
\textcolor{blue}{ポイント}

\begin{itemize}
\setlength{\itemsep}{1.2mm}

\item\textcolor{blue}{基本的な論理演算と論理ゲート: AND、OR、NOT}
\item\textcolor{blue}{ほかのゲート: NAND、NOR、XOR、XNOR}
\item\textcolor{blue}{CMOSトランジスタ}
\item\textcolor{blue}{NOTゲートのCMOS型実装}
\item\textcolor{blue}{NANDゲートのCMOS型実装}
\item\textcolor{blue}{ANDゲートのCMOS型実装}
\item\textcolor{blue}{NORゲートのCMOS型実装}
\item\textcolor{blue}{ORゲートのCMOS型実装}
\item\textcolor{blue}{NANDゲートのトランジスター型実装}
\item\textcolor{blue}{NANDゲートの NMOS 型実装}
\end{itemize}

\end{frame}
%------------------------------------------------ SLIDE -
\section{基本的な論理演算 1. AND}
\begin{frame}\frametitle{\secname}
  \begin{enumerate}
    \setcounter{enumi}{0}
  \item AND (アンド)

    論理積 (かつ) \hfill\textcolor{magenta}{(Verilog HDLの表現)}
    
    『例』 F $=$ A $\cdot$ B $=$ A \ B \hfill\textcolor{magenta}{({\tt{F = A \& B}})}

    \vspace{5mm}
    \renewcommand{\arraystretch}{1.1}
    \setlength{\tabcolsep}{1.5mm}
    \begin{tabular}[t]{cccccr}
      \textcolor{red} 0 & $\cdot$ & \textcolor{red} 0 & $=$ & \textcolor{red} 0 & \textcolor{red}{偽}\\
      \textcolor{red} 0 & $\cdot$ & 1 & $=$ & \textcolor{red} 0 & \textcolor{red}{偽}\\
      1 & $\cdot$ & \textcolor{red} 0 & $=$ & \textcolor{red} 0 & \textcolor{red}{偽}\\
      \textcolor{blue} 1 & $\cdot$ & \textcolor{blue} 1 & $=$ & \textcolor{blue} 1 &
      $\cdots\cdots\cdots\cdots\cdots$\textcolor{blue}{真} {\hspace*{2.43mm}}かつ{\hspace*{2.43mm}} \textcolor{blue}{真} $=$ \textcolor{blue}{真}\\
      & \phantom{$\oplus$}
    \end{tabular}

    \fontsize{13pt}{15}\selectfont

    論理積は、入力値がすべて１のときに１を出力する。

    \textcolor{red}{それ以外}の入力値のときは０を出力する。

  \end{enumerate}

\end{frame}
%------------------------------------------------ SLIDE -
\section{基本的な論理演算 2. OR}
\begin{frame}\frametitle{\secname}
  \begin{enumerate}
    \setcounter{enumi}{1}
  \item OR (オア)

    論理和 (または) \hfill\textcolor{magenta}{(Verilog HDLの表現)}

    『例』 F $=$ A $+$ B \hfill\textcolor{magenta}{({\tt{F = A | B}})}

    \vspace{5mm}
    \renewcommand{\arraystretch}{1.1}
    \setlength{\tabcolsep}{1.5mm}
    \begin{tabular}[t]{cccccr}
      \textcolor{red} 0 & $+$ & \textcolor{red} 0 & $=$ & \textcolor{red} 0 & $\cdots\cdots\cdots\cdots\cdots$\textcolor{red}{偽} または \textcolor{red}{偽} $=$ \textcolor{red}{偽}\\
      0 & $+$ & \textcolor{blue} 1 & $=$ & \textcolor{blue} 1 & \textcolor{blue}{真}\\
      \textcolor{blue} 1 & $+$ & 0 & $=$ & \textcolor{blue} 1 & \textcolor{blue}{真}\\
      \textcolor{blue} 1 & $+$ & \textcolor{blue} 1 & $=$ & \textcolor{blue} 1 & \textcolor{blue}{真}\\
      & \phantom{$\oplus$}
    \end{tabular}

    \fontsize{13pt}{15}\selectfont

    論理和は、入力値がすべて０のときに０を出力する。
    
    \textcolor{red}{それ以外}の入力値のときは１を出力する。

  \end{enumerate}

\end{frame}
%------------------------------------------------ SLIDE -
\section{基本的な論理演算 3. NOT}
\begin{frame}\frametitle{\secname}
  \begin{enumerate}
    \setcounter{enumi}{2}
  \item NOT (ノット)

    否定 \hfill\textcolor{magenta}{(Verilog HDLの表現)}

    『例』 F $=$ $\overline{\mbox{A}}$ \hfill\textcolor{magenta}{({\tt{F = \texttt{\~}A}})}

    \vspace{5mm}
    \renewcommand{\arraystretch}{1.1}
    \setlength{\tabcolsep}{1.5mm}
    \begin{tabular}[t]{cccr}
      $\overline{\mbox{\textcolor{red}  {0}}}$ & $=$ & \textcolor{blue} 1 & $\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots$\hspace{1.5mm}\textcolor{red}{偽}の否定 $=$ \textcolor{blue}{真}\\
      $\overline{\mbox{\textcolor{blue} {1}}}$ & $=$ & \textcolor{red}  0 & $\cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots$\hspace{1.5mm}\textcolor{blue}{真}の否定 $=$ \textcolor{red}{偽}\\
    \end{tabular}

    \fontsize{13pt}{15}\selectfont

    \vspace{19.72mm}
    \scalebox{1}{論理否定は、入力された値が０なら１に、}

    \scalebox{1}{\hspace{57.13mm}１なら０に反転する。}

  \end{enumerate}

\end{frame}
%------------------------------------------------ SLIDE -
\section[bm=1. AND ゲート]{基本的な論理ゲート --- 1. ANDゲート}
\begin{frame}\frametitle{\secname}
  \vspace{3mm}
  \hspace*{2mm}
  \includegraphics[width=.9\textwidth]{figs/5and.pdf}

  \vspace{6mm}\hspace*{14mm}
  \renewcommand{\arraystretch}{1.1}
  \begin{tabular}{p{2.7in}lcc|c}
    論理式  $\mbox{F} = \mbox{A}\cdot \mbox{B} = \mbox{A}\ \mbox{B}$ && \multicolumn{3}{c}{真理値表}\\\cline{3-5}
    && A & B & F \\\cline{3-5}
    &&\textcolor{blue} 0 &\textcolor{blue} 0 &\textcolor{red} 0 \\
    &&\textcolor{blue} 0 &\textcolor{blue} 1 &\textcolor{red} 0 \\
    &&\textcolor{blue} 1 &\textcolor{blue} 0 &\textcolor{red} 0 \\
    &&\textcolor{blue} 1 &\textcolor{blue} 1 &\textcolor{red} 1 \\\cline{3-5}
  \end{tabular}

  \vspace{-31mm}
  \textcolor{magenta}{Verilog HDLの表現：{\large\tt{F = A \& B}}}\phantom{\large\tt{|}}

  \vspace{3mm}
  論理積 (AND) は、入力値がすべて１

  のときに１を出力する。それ以外の

  入力値のときは０を出力する。

  \resizebox{.72\textwidth}{!}{論理積は、入力値がすべて１のときに１を出力する。それ以外の入力値のときは０を出力する。}
\end{frame}
%------------------------------------------------ SLIDE -
\section[bm=2. OR ゲート]{基本的な論理ゲート --- 2. ORゲート}
\begin{frame}\frametitle{\secname}
  \vspace{3mm}
  \hspace*{2mm}
  \includegraphics[width=.9\textwidth]{figs/5or.pdf}

  \vspace{6mm}\hspace*{14mm}
  \renewcommand{\arraystretch}{1.1}
  \begin{tabular}{p{2.7in}lcc|c}
    論理式  $\mbox{F} = \mbox{A} + \mbox{B}$ && \multicolumn{3}{c}{真理値表}\\\cline{3-5}
    && A & B & F \\\cline{3-5}
    &&\textcolor{blue} 0 &\textcolor{blue} 0 &\textcolor{red} 0 \\
    &&\textcolor{blue} 0 &\textcolor{blue} 1 &\textcolor{red} 1 \\
    &&\textcolor{blue} 1 &\textcolor{blue} 0 &\textcolor{red} 1 \\
    &&\textcolor{blue} 1 &\textcolor{blue} 1 &\textcolor{red} 1 \\\cline{3-5}
  \end{tabular}

  \vspace{-31mm}
  \textcolor{magenta}{Verilog HDLの表現：{\large\tt{F = A | B}}}

  \vspace{3mm}

  論理和 (OR) は、入力値にいずれか１が

  入力されたときに１を出力する。それ

  以外の入力値のときは０を出力する。

  \resizebox{.72\textwidth}{!}{論理和は、入力値がすべて０のときに０を出力する。それ以外の入力値のときは１を出力する。}
\end{frame}
%------------------------------------------------ SLIDE -
\section[bm=3. NOT ゲート]{基本的な論理ゲート --- 3. NOTゲート}
\begin{frame}\frametitle{\secname}
  \vspace{3.11mm}
  \hspace*{2mm}
  \includegraphics[width=.9\textwidth]{figs/5not.pdf}

  \vspace{15.29mm}\hspace*{14mm}
  \renewcommand{\arraystretch}{1.1}
  \begin{tabular}{p{2.7in}lc|c}
    論理式  $\mbox{F} = \overline{\mbox{A}}$ && \multicolumn{2}{c}{真理値表}\\\cline{3-4}
    &&   A   & F \\\cline{3-4}
    &&\textcolor{blue}   0   &\textcolor{red} 1 \\
    &&\textcolor{blue}   1   &\textcolor{red} 0 \\\cline{3-4}
  \end{tabular}

  \vspace{-17.9mm}
  \textcolor{magenta}{Verilog HDLの表現：{\large\tt{F = \texttt{\~}A}}}\phantom{\large\tt{|}}

  \vspace{3mm}
  否定 (NOT) は、入力された値が１

  なら０に、０なら１に反転する。 
\end{frame}
%------------------------------------------------ SLIDE -
\section{回路とVerilog HDLによる実装}
\begin{frame}\frametitle{\secname}
  \includegraphics[width=.5545\textwidth]{figs/and_or_not.pdf}

  \vspace{5.36mm}
  \includegraphics[scale=0.56]{figs/and_or_not_v.png}

  \vspace{-24mm}
  \hspace*{73mm}
  \href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/and_or_not.v}{\textcolor{blue}{\underline{and\_or\_not.v}}}

  \vspace{4mm}
  \hspace*{73mm}
データフロー記述

\hspace*{73mm}
(論理式のレベル)
\end{frame}
%------------------------------------------------ SLIDE -
\section{テストベンチ --- シミュレーションのため}
\begin{frame}\frametitle{\resizebox{1.04\textwidth}{!}{\secname}}
  \includegraphics[scale=0.56]{figs/and_or_not_tb_v.png}

  \vspace{-24mm}
  \hspace*{73mm}
  \href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/and_or_not_tb.v}{\textcolor{blue}{\underline{and\_or\_not\_tb.v}}}
\end{frame}
%------------------------------------------------ SLIDE -
\section{シミュレーションと波形}
\begin{frame}[fragile]\frametitle{\secname}
  \includegraphics[width=\textwidth]{figs/and_or_not_iverilog.png}

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

  \magenta
  \vspace{-17mm}
  \hspace*{47mm}
\begin{minipage}{5cm}
\begin{verbatim}
f_and = a & b; // AND
f_or  = a | b; // OR
f_not = ~a;    // NOT
\end{verbatim}
\end{minipage}
\end{frame}
%------------------------------------------------ SLIDE -
%構造（Structure）記述 : 回路図をそのまま文字にしただけ
%データフロー（Dataflow）記述 : 数式のレベルで書ける
%機能（Behavior）記述 : 副作用のある代入や、制御構造が使える。
%------------------------------------------------ SLIDE -
\section{構造記述Verilog HDLによる実装}
\begin{frame}[fragile]\frametitle{\secname}
\includegraphics[width=.5\textwidth]{figs/and_or_not2.pdf}

\fontsize{11pt}{13}\selectfont

\vspace{2mm}
データフロー記述 (論理式のレベル):
\begin{code}
    assign f_and = a & b; // AND
    assign f_or  = a | b; // OR
    assign f_not = ~a;    // NOT
\end{code}

\vspace{.72mm}
構造記述 (回路図をそのまま):
\begin{code}
    and i0 (f_and, a, b); // and (output, input1, input2)
    or  i1 (f_or,  a, b); // or  (output, input1, input2)
    not i2 (f_not, a);    // not (output, input)
\end{code}

\blue
\fontsize{14pt}{15}\selectfont
  \vspace{-58mm}
  \hfill
異なる記述による実装:
\end{frame}
%------------------------------------------------ SLIDE -
\section{構造記述Verilog HDLによる実装}
\begin{frame}[fragile]\frametitle{\secname}
\includegraphics[width=.5\textwidth]{figs/and_or_not2.pdf}

\vspace{.57mm}
\fontsize{11pt}{11.5}\selectfont
\begin{code}
`timescale 1ns/1ns
module and_or_not_struct (a, b, f_and, f_or, f_not);
    input  a;
    input  b;
    output f_and;
    output f_or;
    output f_not;         // Structural Style (Schematic):
    and i0 (f_and, a, b); // and (output, input1, input2)
    or  i1 (f_or,  a, b); // or  (output, input1, input2)
    not i2 (f_not, a);    // not (output, input)
endmodule
\end{code}

\vspace{-7mm}
\hfill
\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/and_or_not_struct.v}{\color{blue}\underline{and\_or\_not\_struct.v}}~~~

\blue
\fontsize{11pt}{15}\selectfont
  \vspace{-27.3mm}
  \hfill
構造記述 (回路図をそのまま)~~~

\end{frame}
%------------------------------------------------ SLIDE -
\section{テストベンチ --- シミュレーションのため}
\begin{frame}[fragile]\frametitle{\resizebox{1.04\textwidth}{!}{\secname}}
\fontsize{11pt}{11.5}\selectfont
\begin{code}
`timescale 1ns/1ns
module and_or_not_struct_tb;
    reg  a, b;
    wire f_and, f_or, f_not;
    and_or_not_struct i0 (a, b, f_and, f_or, f_not);
    initial begin
        #0 a = 0;
        #0 b = 0;
        #4 $finish;
    end
    always #1 a = ~a;
    always #2 b = ~b;
    initial begin
        $dumpfile ("and_or_not_struct.vcd");
        $dumpvars;
    end
endmodule
\end{code}

\vspace{-7mm}
\hfill
\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/and_or_not_struct_tb.v}{\color{blue}\underline{and\_or\_not\_struct\_tb.v}}~~~

\end{frame}
%------------------------------------------------ SLIDE -
\section{シミュレーションと波形}
\begin{frame}[fragile]\frametitle{\secname}
\vspace{-5mm}
\begin{verbatim}
% iverilog -Wall -o and_or_not_struct \
  and_or_not_struct_tb.v and_or_not_struct.v
% ./and_or_not_struct
% gtkwave and_or_not_struct.vcd
\end{verbatim}

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

\vspace{-15mm}
\includegraphics[width=.3\textwidth]{figs/and_or_not2.pdf}

\fontsize{12pt}{14}\selectfont
  \magenta
  \vspace{-14mm}
  \hspace*{43mm}
\begin{minipage}{5cm}
\begin{verbatim}
and i0 (f_and, a, b);
or  i1 (f_or,  a, b);
not i2 (f_not, a);
\end{verbatim}
\end{minipage}

\end{frame}
%------------------------------------------------ SLIDE -
%------------------------------------------------ SLIDE -
\section{論理式と論理回路の例 (回路図)}
\begin{frame}\frametitle{\secname}
  論理式の例 $\mathsf{Y = \overline{S} \cdot A0 + S \cdot A1}$

  \vspace{3mm}
  その論理式の論理回路

  \vspace{9mm}
  \includegraphics[width=.92\textwidth]{figs/mux2x1_gates.pdf}

  \vspace{9mm}
  優先順位: (高い) 
  %括弧 $\rightarrow$ 
  \textcolor{red}{否定} $\rightarrow$ 
  \textcolor{red}{論理積} $\rightarrow$ 
  \textcolor{red}{論理和} (低い)

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

module mux2x1_struct (A0, A1, S, Y); // Structural Style
    input  A0;
    input  A1;
    input  S;
    output Y;

    wire   SN;
    wire   SNA0;
    wire   SA1;

    not i0 (SN, S);         // NOT (output, input)
    and i1 (SNA0, SN,  A0); // AND (output, input1, input2)
    and i2 (SA1,  S,   A1); // AND (output, input1, input2)
    or  i3 (Y, SNA0,  SA1); // OR  (output, input1, input2)
endmodule
\end{code}

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

\vspace{-52mm}
\hspace*{63mm}
\includegraphics[scale=1]{figs/mux2x1_gates2.pdf}

\blue
\fontsize{11pt}{15}\selectfont
\vspace{1mm}
\hspace*{63mm}
構造記述 (回路図をそのまま)

\end{frame}
%------------------------------------------------ SLIDE -
\section{論理式と論理回路の例 (テストベンチ)}
\begin{frame}[fragile]\frametitle{\secname}
\fontsize{11pt}{11.5}\selectfont
\begin{code}
`timescale 1ns/1ns
module mux2x1_struct_tb;
    reg  A0, A1, S;
    wire Y;
    mux2x1_struct i0 (A0, A1, S, Y);
    initial begin
        #0 A0 = 0; A1 = 0; S = 0;
        #8 $finish;
    end
    always #1 A0 = ~A0;
    always #2 A1 = ~A1;
    always #4 S  = ~S;
    initial begin
        $dumpfile ("mux2x1_struct.vcd");
        $dumpvars;
    end
endmodule
\end{code}

\vspace{-7mm}
\hfill
\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/mux2x1_struct_tb.v}{\color{blue}\underline{mux2x1\_struct\_tb.v}}~~~

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

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

\fontsize{11pt}{15}\selectfont
  \white
  \vspace{3mm}
  \colorbox{blue}{$S=0$の時、$Y = \overline{S} \cdot A0 + S \cdot A1 = 1 \cdot A0 + 0 \cdot A1 = A0 + 0 = A0$}

  \colorbox{blue}{$S=1$の時、$Y = \overline{S} \cdot A0 + S \cdot A1 = 0 \cdot A0 + 1 \cdot A1 = 0 + A1 = A1$}
\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{CMOS トランジスタ}
\begin{frame}\frametitle{\secname}
\fontsize{12pt}{14}\selectfont
コンピュータの中には「1」と「0」のデータしかない。

\vspace{2mm}
その「1」と「0」を作り出すのが CMOS トランジスタである。

\vspace{2mm}
トランジスタには、P 型トランジスタ（PMOS）と N 型トランジスタ（NMOS）があり、この\,2\,つのトランジスタを組み合わせて使うのが CMOS トランジスタである。

\vspace{2mm}
\includegraphics[width=\textwidth]{figs/cmos-switch.pdf}

\vspace{1mm}

\resizebox{1.02\textwidth}{!}{入力が gnd のとき、PMOS が導通、NMOS が絶縁状態になるので、出力は vdd となる。}

\vspace{0mm}

\resizebox{1.02\textwidth}{!}{入力が vdd のとき、PMOS が絶縁、NMOS が導通状態になるので、出力は gnd となる。}

\end{frame}
%------------------------------------------------ SLIDE -
\section{NOT ゲート}
\begin{frame}\frametitle{\secname}
\includegraphics[scale=1.75]{figs/gate-not.pdf}

\vspace{8mm}
\renewcommand{\arraystretch}{1.5}
\setlength{\tabcolsep}{12mm}
\begin{tabular}{c||c}\hline
  $\mathsf{A}$ & $\mathsf{\overline{A}}$\\\hline\hline
  0 & 1\\\hline
  1 & 0\\\hline
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{NOT ゲートの CMOS 型実装}
\begin{frame}\frametitle{\secname}
\includegraphics[scale=2.5]{figs/cmos-not.pdf}

\vspace{-28mm}
\hspace*{90mm}
\renewcommand{\arraystretch}{1.3}
\setlength{\tabcolsep}{3mm}
\begin{tabular}{c||c}\hline
  $\mathsf{A}$ & $\mathsf{\overline{A}}$\\\hline\hline
  0 & 1\\\hline
  1 & 0\\\hline
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{NOT ゲートの CMOS 型実装}
\begin{frame}\frametitle{\secname}
\includegraphics[scale=2.5]{figs/cmos-not-0.pdf}

\vspace{-28mm}
\hspace*{90mm}
\renewcommand{\arraystretch}{1.3}
\setlength{\tabcolsep}{3mm}
\begin{tabular}{c||c}\hline
  $\mathsf{A}$ & $\mathsf{\overline{A}}$\\\hline\hline
  \textcolor{red} 0 & \textcolor{red} 1\\\hline
  1 & 0\\\hline
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{NOT ゲートの CMOS 型実装}
\begin{frame}\frametitle{\secname}
\includegraphics[scale=2.5]{figs/cmos-not-1.pdf}

\vspace{-28mm}
\hspace*{90mm}
\renewcommand{\arraystretch}{1.3}
\setlength{\tabcolsep}{3mm}
\begin{tabular}{c||c}\hline
  $\mathsf{A}$ & $\mathsf{\overline{A}}$\\\hline\hline
  0 & 1\\\hline
  \textcolor{red} 1 & \textcolor{red} 0\\\hline
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{NOT ゲートの CMOS 型実装}
\begin{frame}[fragile]\frametitle{\secname}
\fontsize{12pt}{12}\selectfont
\begin{code}
`timescale 1ns/1ns

module cmosnot (f, a); // a circuit
    input   a;   // inputs
    output  f;   // output

    supply1 vdd; // vdd
    supply0 gnd; // gnd

    // pmos (drain, source, gate);
    pmos p1 (f,     vdd,    a);

    // nmos (drain, source, gate);
    nmos n1 (f,     gnd,    a);

endmodule
\end{code}

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

\vspace{-55mm}
\hspace*{75mm}
\includegraphics[scale=1]{figs/cmos-not2.pdf}

\blue
\fontsize{11pt}{15}\selectfont
\vspace{1mm}
\hspace*{68mm}
構造記述 (回路図をそのまま)

\end{frame}
%------------------------------------------------ SLIDE -
\section{NOT ゲートの CMOS 型実装}
\begin{frame}[fragile]\frametitle{\secname}
\fontsize{12pt}{12}\selectfont
\begin{code}
`timescale 1ns/1ns

module cmosnot_tb; // a test bench, not a circuit
    reg  A;
    wire F;
    cmosnot i0 (F, A); // invoke cmosnot
    initial begin
        A = 0;
        #2 $finish;
    end
    always #1 A = ~A;
    initial begin
        $dumpfile ("cmosnot.vcd");
        $dumpvars;
    end
endmodule
\end{code}

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

\end{frame}
%------------------------------------------------ SLIDE -
\section{NOT ゲートの CMOS 型実装}
\begin{frame}[fragile]\frametitle{\secname}
\vspace{-5mm}
\begin{verbatim}
% iverilog -Wall -o cmosnot \
  cmosnot_tb.v cmosnot.v
% ./cmosnot
% gtkwave cmosnot.vcd
\end{verbatim}

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

\vspace{5mm}
\magenta
\fontsize{14pt}{17}\selectfont
\renewcommand{\arraystretch}{1.0}
\setlength{\tabcolsep}{5mm}
\begin{tabular}{c||c}\hline
  \rule{0pt}{2ex}$\mathsf{A}$ & $\mathsf{F=\overline{A}}$\\\hline\hline
  0 & 1\\\hline
  1 & 0\\\hline
\end{tabular}

\end{frame}
%------------------------------------------------ SLIDE -
\section{NAND ゲート}
\begin{frame}\frametitle{\secname}
\includegraphics[scale=1.75]{figs/gate-nand.pdf}

\vspace{8mm}
\renewcommand{\arraystretch}{1.5}
\setlength{\tabcolsep}{6mm}
\begin{tabular}{c|c||c|c}\hline
  $\mathsf{A}$ & $\mathsf{B}$ & $\mathsf{A \cdot B}$ & $\mathsf{\overline{A \cdot B}}$\\\hline\hline
  0 & 0 & 0 & 1\\\hline
  0 & 1 & 0 & 1\\\hline
  1 & 0 & 0 & 1\\\hline
  1 & 1 & 1 & 0\\\hline
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{NAND ゲートの CMOS 型実装}
\begin{frame}\frametitle{\secname}
\includegraphics[height=.65\textheight]{figs/cmos-nand.pdf}

\vspace{-26mm}
\hspace*{77mm}
\renewcommand{\arraystretch}{1.3}
\setlength{\tabcolsep}{3mm}
\begin{tabular}{c|c||c}\hline
  $\mathsf{A}$ & $\mathsf{B}$ & $\mathsf{\overline{A \cdot B}}$\\\hline\hline
  0 & 0 & 1\\\hline
  0 & 1 & 1\\\hline
  1 & 0 & 1\\\hline
  1 & 1 & 0\\\hline
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{NAND ゲートの CMOS 型実装}
\begin{frame}\frametitle{\secname}
\includegraphics[height=.65\textheight]{figs/cmos-nand-00.pdf}

\vspace{-26mm}
\hspace*{77mm}
\renewcommand{\arraystretch}{1.3}
\setlength{\tabcolsep}{3mm}
\begin{tabular}{c|c||c}\hline
  $\mathsf{A}$ & $\mathsf{B}$ & $\mathsf{\overline{A \cdot B}}$\\\hline\hline
  \textcolor{red} 0 & \textcolor{red} 0 & \textcolor{red} 1\\\hline
  0 & 1 & 1\\\hline
  1 & 0 & 1\\\hline
  1 & 1 & 0\\\hline
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{NAND ゲートの CMOS 型実装}
\begin{frame}\frametitle{\secname}
\includegraphics[height=.65\textheight]{figs/cmos-nand-01.pdf}

\vspace{-26mm}
\hspace*{77mm}
\renewcommand{\arraystretch}{1.3}
\setlength{\tabcolsep}{3mm}
\begin{tabular}{c|c||c}\hline
  $\mathsf{A}$ & $\mathsf{B}$ & $\mathsf{\overline{A \cdot B}}$\\\hline\hline
  0 & 0 & 1\\\hline
  \textcolor{red} 0 & \textcolor{red} 1 & \textcolor{red} 1\\\hline
  1 & 0 & 1\\\hline
  1 & 1 & 0\\\hline
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{NAND ゲートの CMOS 型実装}
\begin{frame}\frametitle{\secname}
\includegraphics[height=.65\textheight]{figs/cmos-nand-10.pdf}

\vspace{-26mm}
\hspace*{77mm}
\renewcommand{\arraystretch}{1.3}
\setlength{\tabcolsep}{3mm}
\begin{tabular}{c|c||c}\hline
  $\mathsf{A}$ & $\mathsf{B}$ & $\mathsf{\overline{A \cdot B}}$\\\hline\hline
  0 & 0 & 1\\\hline
  0 & 1 & 1\\\hline
  \textcolor{red} 1 & \textcolor{red} 0 & \textcolor{red} 1\\\hline
  1 & 1 & 0\\\hline
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{NAND ゲートの CMOS 型実装}
\begin{frame}\frametitle{\secname}
\includegraphics[height=.65\textheight]{figs/cmos-nand-11.pdf}

\vspace{-26mm}
\hspace*{77mm}
\renewcommand{\arraystretch}{1.3}
\setlength{\tabcolsep}{3mm}
\begin{tabular}{c|c||c}\hline
  $\mathsf{A}$ & $\mathsf{B}$ & $\mathsf{\overline{A \cdot B}}$\\\hline\hline
  0 & 0 & 1\\\hline
  0 & 1 & 1\\\hline
  1 & 0 & 1\\\hline
  \textcolor{red} 1 & \textcolor{red} 1 & \textcolor{red} 0\\\hline
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{NAND ゲートの CMOS 型実装}
\begin{frame}[fragile]\frametitle{\secname}
\fontsize{11pt}{11.5}\selectfont
\begin{code}
`timescale 1ns/1ns
module cmosnand (f, a, b); // a circuit
    input   a, b; // inputs
    output  f;    // output

    supply1 vdd;  // vdd
    supply0 gnd;  // gnd
    wire    w_n;  // internal wire

    // pmos (drain, source, gate);
    pmos p1 (f,     vdd,    a);
    pmos p2 (f,     vdd,    b);

    // nmos (drain, source, gate);
    nmos n1 (f,     w_n,    a);
    nmos n2 (w_n,   gnd,    b);
endmodule
\end{code}

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

\vspace{-55mm}
\hspace*{67mm}
\includegraphics[scale=1]{figs/cmos-nand2.pdf}

\blue
\fontsize{11pt}{15}\selectfont
\vspace{1mm}
\hspace*{67mm}
構造記述 (回路図をそのまま)

\end{frame}
%------------------------------------------------ SLIDE -
\section{NAND ゲートの CMOS 型実装}
\begin{frame}[fragile]\frametitle{\secname}
\fontsize{11pt}{11.5}\selectfont
\begin{code}
`timescale 1ns/1ns
module cmosnand_tb; // a test bench, not a circuit
    reg  A, B;
    wire F;
    cmosnand not_and (F, A, B); // invoke cmosnand
    initial begin
        A = 0;
        B = 0;
        #4 $finish;
    end
    always #1 A = ~A;
    always #2 B = ~B;
    initial begin
        $dumpfile ("cmosnand.vcd");
        $dumpvars;
    end
endmodule
\end{code}

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

\end{frame}
%------------------------------------------------ SLIDE -
\section{NAND ゲートの CMOS 型実装}
\begin{frame}[fragile]\frametitle{\secname}
\vspace{-5mm}
\begin{verbatim}
% iverilog -Wall -o cmosnand \
  cmosnand_tb.v cmosnand.v
% ./cmosnand
% gtkwave cmosnand.vcd
\end{verbatim}

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

\magenta
\vspace{1mm}
\fontsize{13pt}{14}\selectfont
\renewcommand{\arraystretch}{1.0}
\setlength{\tabcolsep}{4mm}
\begin{tabular}{c|c||c|c}\hline
  \rule{0pt}{2ex}$\mathsf{A}$ & $\mathsf{B}$ & $\mathsf{A \cdot B}$ & $\mathsf{F=\overline{A \cdot B}}$\\\hline\hline
  0 & 0 & 0 & 1\\\hline
  0 & 1 & 0 & 1\\\hline
  1 & 0 & 0 & 1\\\hline
  1 & 1 & 1 & 0\\\hline
\end{tabular}

\end{frame}
%------------------------------------------------ SLIDE -
\section{NAND ゲートの CMOS 型実装}
\begin{frame}\frametitle{\secname}
\includegraphics[height=.65\textheight]{figs/cmos-nand.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{AND ゲートの CMOS 型実装}
\begin{frame}\frametitle{\phantom{N}\secname}
\includegraphics[height=.65\textheight]{figs/cmos-and.pdf}

\vspace{0mm}
つまり、
\raisebox{-1.8mm}{\includegraphics[scale=1.3]{figs/cmos-and-.pdf}}

\vspace{3mm}
\resizebox{\textwidth}{!}{Note: A PMOS is connected to the vdd and NMOS is connected to the ground.}
\end{frame}
%------------------------------------------------ SLIDE -
\section{AND ゲートの CMOS 型実装}
\begin{frame}[fragile]\frametitle{\phantom{N}\secname}
\fontsize{11pt}{11.5}\selectfont
\begin{code}
`timescale 1ns/1ns

module cmosand (f, a, b); // a circuit
    input   a, b;   // inputs
    output  f;      // output

    wire    w_nand; // internal wire

    cmosnand i0 (w_nand, a, b);
    cmosnot  i1 (f, w_nand);

endmodule
\end{code}

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

\vspace{6mm}
\includegraphics[scale=1.3]{figs/cmos-and-2.pdf}

\end{frame}
%------------------------------------------------ SLIDE -
\section{AND ゲートの CMOS 型実装}
\begin{frame}[fragile]\frametitle{\phantom{N}\secname}
\fontsize{11pt}{11.5}\selectfont
\begin{code}
`timescale 1ns/1ns
module cmosand_tb; // a test bench, not a circuit
    reg  A, B;
    wire F;
    cmosand i0 (F, A, B); // invoke cmosand
    initial begin
        A = 0;
        B = 0;
        #4 $finish;
    end
    always #1 A = ~A;
    always #2 B = ~B;
    initial begin
        $dumpfile ("cmosand.vcd");
        $dumpvars;
    end
endmodule
\end{code}

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

\end{frame}
%------------------------------------------------ SLIDE -
\section{AND ゲートの CMOS 型実装}
\begin{frame}[fragile]\frametitle{\phantom{N}\secname}
\vspace{-5mm}
\begin{verbatim}
% iverilog -Wall -o cmosand \
  cmosand_tb.v cmosand.v cmosnand.v cmosnot.v
% ./cmosand
% gtkwave cmosand.vcd
\end{verbatim}

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

\magenta
\vspace{1mm}
\fontsize{13pt}{14}\selectfont
\renewcommand{\arraystretch}{1.0}
\setlength{\tabcolsep}{6mm}
\begin{tabular}{c|c||c}\hline
  \rule{0pt}{2ex}$\mathsf{A}$ & $\mathsf{B}$ & $\mathsf{F=A \cdot B}$\\\hline\hline
  0 & 0 & 0\\\hline
  0 & 1 & 0\\\hline
  1 & 0 & 0\\\hline
  1 & 1 & 1\\\hline
\end{tabular}

\end{frame}
%------------------------------------------------ SLIDE -
\section{NOR ゲート}
\begin{frame}\frametitle{\secname}
\includegraphics[scale=1.75]{figs/gate-nor.pdf}

\vspace{8mm}
\renewcommand{\arraystretch}{1.5}
\setlength{\tabcolsep}{6mm}
\begin{tabular}{c|c||c|c}\hline
  $\mathsf{A}$ & $\mathsf{B}$ & $\mathsf{A + B}$ & $\mathsf{\overline{A + B}}$\\\hline\hline
  0 & 0 & 0 & 1\\\hline
  0 & 1 & 1 & 0\\\hline
  1 & 0 & 1 & 0\\\hline
  1 & 1 & 1 & 0\\\hline
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{NOR ゲートの CMOS 型実装}
\begin{frame}\frametitle{\secname}
\includegraphics[height=.65\textheight]{figs/cmos-nor.pdf}

\vspace{-18mm}
\hspace*{76mm}
\fontsize{13pt}{13}\selectfont
\renewcommand{\arraystretch}{1.4}
\setlength{\tabcolsep}{3mm}
\begin{tabular}{c|c||c}\hline
  $\mathsf{A}$ & $\mathsf{B}$ & $\mathsf{\overline{A + B}}$\\\hline\hline
  0 & 0 & 1\\\hline
  0 & 1 & 0\\\hline
  1 & 0 & 0\\\hline
  1 & 1 & 0\\\hline
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{NOR ゲートの CMOS 型実装}
\begin{frame}\frametitle{\secname}
\includegraphics[height=.65\textheight]{figs/cmos-nor-00.pdf}

\vspace{-18mm}
\hspace*{76mm}
\fontsize{13pt}{13}\selectfont
\renewcommand{\arraystretch}{1.4}
\setlength{\tabcolsep}{3mm}
\begin{tabular}{c|c||c}\hline
  $\mathsf{A}$ & $\mathsf{B}$ & $\mathsf{\overline{A + B}}$\\\hline\hline
  \textcolor{red} 0 & \textcolor{red} 0 & \textcolor{red} 1\\\hline
  0 & 1 & 0\\\hline
  1 & 0 & 0\\\hline
  1 & 1 & 0\\\hline
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{NOR ゲートの CMOS 型実装}
\begin{frame}\frametitle{\secname}
\includegraphics[height=.65\textheight]{figs/cmos-nor-01.pdf}

\vspace{-18mm}
\hspace*{76mm}
\fontsize{13pt}{13}\selectfont
\renewcommand{\arraystretch}{1.4}
\setlength{\tabcolsep}{3mm}
\begin{tabular}{c|c||c}\hline
  $\mathsf{A}$ & $\mathsf{B}$ & $\mathsf{\overline{A + B}}$\\\hline\hline
  0 & 0 & 1\\\hline
  \textcolor{red} 0 & \textcolor{red} 1 & \textcolor{red} 0\\\hline
  1 & 0 & 0\\\hline
  1 & 1 & 0\\\hline
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{NOR ゲートの CMOS 型実装}
\begin{frame}\frametitle{\secname}
\includegraphics[height=.65\textheight]{figs/cmos-nor-10.pdf}

\vspace{-18mm}
\hspace*{76mm}
\fontsize{13pt}{13}\selectfont
\renewcommand{\arraystretch}{1.4}
\setlength{\tabcolsep}{3mm}
\begin{tabular}{c|c||c}\hline
  $\mathsf{A}$ & $\mathsf{B}$ & $\mathsf{\overline{A + B}}$\\\hline\hline
  0 & 0 & 1\\\hline
  0 & 1 & 0\\\hline
  \textcolor{red} 1 & \textcolor{red} 0 & \textcolor{red} 0\\\hline
  1 & 1 & 0\\\hline
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{NOR ゲートの CMOS 型実装}
\begin{frame}\frametitle{\secname}
\includegraphics[height=.65\textheight]{figs/cmos-nor-11.pdf}

\vspace{-18mm}
\hspace*{76mm}
\fontsize{13pt}{13}\selectfont
\renewcommand{\arraystretch}{1.4}
\setlength{\tabcolsep}{3mm}
\begin{tabular}{c|c||c}\hline
  $\mathsf{A}$ & $\mathsf{B}$ & $\mathsf{\overline{A + B}}$\\\hline\hline
  0 & 0 & 1\\\hline
  0 & 1 & 0\\\hline
  1 & 0 & 0\\\hline
  \textcolor{red} 1 & \textcolor{red} 1 & \textcolor{red} 0\\\hline
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{NOR ゲートの CMOS 型実装}
\begin{frame}[fragile]\frametitle{\secname}
\fontsize{11pt}{11.5}\selectfont
\begin{code}
`timescale 1ns/1ns
module cmosnor (f, a, b); // a circuit
    input   a, b; // inputs
    output  f;    // output

    supply1 vdd;  // vdd
    supply0 gnd;  // gnd
    wire    w_p;  // internal wire

    // pmos (drain, source, gate);
    pmos p1 (w_p,   vdd,    a);
    pmos p2 (f,     w_p,    b);

    // nmos (drain, source, gate);
    nmos n1 (f,     gnd,    a);
    nmos n2 (f,     gnd,    b);
endmodule
\end{code}

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

\vspace{-55mm}
\hspace*{67mm}
\includegraphics[scale=1]{figs/cmos-nor2.pdf}

\blue
\fontsize{11pt}{15}\selectfont
\vspace{1mm}
\hspace*{67mm}
構造記述 (回路図をそのまま)

\end{frame}
%------------------------------------------------ SLIDE -
\section{NOR ゲートの CMOS 型実装}
\begin{frame}[fragile]\frametitle{\secname}
\fontsize{11pt}{11.5}\selectfont
\begin{code}
`timescale 1ns/1ns
module cmosnor_tb; // a test bench, not a circuit
    reg  A, B;
    wire F;
    cmosnor not_or (F, A, B); // invoke cmosnor
    initial begin
        A = 0;
        B = 0;
        #4 $finish;
    end
    always #1 A = ~A;
    always #2 B = ~B;
    initial begin
        $dumpfile ("cmosnor.vcd");
        $dumpvars;
    end
endmodule
\end{code}

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

\end{frame}
%------------------------------------------------ SLIDE -
\section{NOR ゲートの CMOS 型実装}
\begin{frame}[fragile]\frametitle{\secname}
\vspace{-5mm}
\begin{verbatim}
% iverilog -Wall -o cmosnor \
  cmosnor_tb.v cmosnor.v
% ./cmosnor
% gtkwave cmosnor.vcd
\end{verbatim}

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

\magenta
\vspace{1mm}
\fontsize{13pt}{14}\selectfont
\renewcommand{\arraystretch}{1.0}
\setlength{\tabcolsep}{4mm}
\begin{tabular}{c|c||c|c}\hline
  \rule{0pt}{2ex}$\mathsf{A}$ & $\mathsf{B}$ & $\mathsf{A + B}$ & $\mathsf{F=\overline{A + B}}$\\\hline\hline
  0 & 0 & 0 & 1\\\hline
  0 & 1 & 1 & 0\\\hline
  1 & 0 & 1 & 0\\\hline
  1 & 1 & 1 & 0\\\hline
\end{tabular}

\end{frame}
%------------------------------------------------ SLIDE -
\section{NOR ゲートの CMOS 型実装}
\begin{frame}\frametitle{\secname}
\includegraphics[height=.65\textheight]{figs/cmos-nor.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\section{OR ゲートの CMOS 型実装}
\begin{frame}\frametitle{\phantom{N}\secname}
\includegraphics[height=.65\textheight]{figs/cmos-or.pdf}

\vspace{0mm}
つまり、
\raisebox{-1.8mm}{\includegraphics[scale=1.3]{figs/cmos-or-.pdf}}

\vspace{3mm}
\resizebox{\textwidth}{!}{Note: A PMOS is connected to the vdd and NMOS is connected to the ground.}
\end{frame}
%------------------------------------------------ SLIDE -
\section{OR ゲートの CMOS 型実装}
\begin{frame}[fragile]\frametitle{\phantom{N}\secname}
\fontsize{11pt}{11.5}\selectfont
\begin{code}
`timescale 1ns/1ns

module cmosor (f, a, b); // a circuit
    input   a, b;  // inputs
    output  f;     // output

    wire    w_nor; // internal wire

    cmosnor i0 (w_nor, a, b);
    cmosnot i1 (f, w_nor);

endmodule
\end{code}

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

\vspace{6mm}
\includegraphics[scale=1.3]{figs/cmos-or-2.pdf}

\end{frame}
%------------------------------------------------ SLIDE -
\section{OR ゲートの CMOS 型実装}
\begin{frame}[fragile]\frametitle{\phantom{N}\secname}
\fontsize{11pt}{11.5}\selectfont
\begin{code}
`timescale 1ns/1ns
module cmosor_tb; // a test bench, not a circuit
    reg  A, B;
    wire F;
    cmosor i0 (F, A, B); // invoke cmosor
    initial begin
        A = 0;
        B = 0;
        #4 $finish;
    end
    always #1 A = ~A;
    always #2 B = ~B;
    initial begin
        $dumpfile ("cmosor.vcd");
        $dumpvars;
    end
endmodule
\end{code}

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

\end{frame}
%------------------------------------------------ SLIDE -
\section{OR ゲートの CMOS 型実装}
\begin{frame}[fragile]\frametitle{\phantom{N}\secname}
\vspace{-5mm}
\begin{verbatim}
% iverilog -Wall -o cmosor \
  cmosor_tb.v cmosor.v cmosnor.v cmosnot.v
% ./cmosor
% gtkwave cmosor.vcd
\end{verbatim}

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

\magenta
\vspace{1mm}
\fontsize{13pt}{14}\selectfont
\renewcommand{\arraystretch}{1.0}
\setlength{\tabcolsep}{6mm}
\begin{tabular}{c|c||c}\hline
  \rule{0pt}{2ex}$\mathsf{A}$ & $\mathsf{B}$ & $\mathsf{F=A + B}$\\\hline\hline
  0 & 0 & 0\\\hline
  0 & 1 & 1\\\hline
  1 & 0 & 1\\\hline
  1 & 1 & 1\\\hline
\end{tabular}

\end{frame}
%------------------------------------------------ SLIDE -
\section{トランジスター (Transistor)}
\begin{frame}\frametitle{\secname}

\vspace{-0.28mm}
\includegraphics[scale=1.5]{figs/transistor-not.pdf}

\vspace{3mm}
TTL --- Transistor-transistor logic

(トランジスタ-トランジスタロジック)

\vspace{-62mm}
\hspace*{81mm}
\renewcommand{\arraystretch}{1.2}
\setlength{\tabcolsep}{3mm}
\begin{tabular}{c||c}\hline
  入力 & 出力\\\hline
  A & F\\\hline\hline
  L & H\\\hline
  H & L\\\hline
  \multicolumn{2}{l}{}\\
  \multicolumn{2}{l}{L: 低電位 (0)}\\
  \multicolumn{2}{l}{H: 高電位 (1)}
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{NANDゲートのトランジスター型実装}
\begin{frame}\frametitle{\secname}

\vspace{-0mm}
\includegraphics[scale=1.5]{figs/transistor-nand.pdf}

\vspace{-45mm}
\hspace*{75mm}
\renewcommand{\arraystretch}{1.3}
\setlength{\tabcolsep}{3mm}
\begin{tabular}{c|c||c}\hline
  $\mathsf{A}$ & $\mathsf{B}$ & $\mathsf{\overline{A \cdot B}}$\\\hline\hline
  0 & 0 & 1\\\hline
  0 & 1 & 1\\\hline
  1 & 0 & 1\\\hline
  1 & 1 & 0\\\hline
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{NANDゲートの NMOS 型実装}
\begin{frame}\frametitle{\secname}

\vspace{-0.9mm}
\includegraphics[scale=1.8913]{figs/nmos-nand.pdf}

\vspace{-42.742mm}
\hspace*{75mm}
\renewcommand{\arraystretch}{1.3}
\setlength{\tabcolsep}{3mm}
\begin{tabular}{c|c||c}\hline
  $\mathsf{A}$ & $\mathsf{B}$ & $\mathsf{\overline{A \cdot B}}$\\\hline\hline
  0 & 0 & 1\\\hline
  0 & 1 & 1\\\hline
  1 & 0 & 1\\\hline
  1 & 1 & 0\\\hline
\end{tabular}
\end{frame}
%------------------------------------------------ SLIDE -
\section{論理ゲートのCMOS型実装}
\begin{frame}\frametitle{\secname}
\fontsize{13pt}{16}\selectfont
\textcolor{blue}{まとめ}

\begin{itemize}
\setlength{\itemsep}{1.2mm}

\item\textcolor{blue}{基本的な論理演算と論理ゲート: AND、OR、NOT}
\item\textcolor{blue}{ほかのゲート: NAND、NOR、XOR、XNOR}
\item\textcolor{blue}{CMOSトランジスタ}
\item\textcolor{blue}{NOTゲートのCMOS型実装}
\item\textcolor{blue}{NANDゲートのCMOS型実装}
\item\textcolor{blue}{ANDゲートのCMOS型実装}
\item\textcolor{blue}{NORゲートのCMOS型実装}
\item\textcolor{blue}{ORゲートのCMOS型実装}
\item\textcolor{blue}{NANDゲートのトランジスター型実装}
\item\textcolor{blue}{NANDゲートの NMOS 型実装}
\end{itemize}

\end{frame}
%------------------------------------------------ SLIDE -
\section{課題 II (100 点)}
\begin{frame}\frametitle{\secname}
\fontsize{13pt}{15.6}\selectfont
以下の論理式をCMOS回路として合成して下さい。

\begin{enumerate}
\item[]
\begin{enumerate}
\item[(1)] $\mathsf{F=\overline{A \cdot B \cdot C}}$ \hfill \textcolor{magenta}{(P29 - P37の $\mathsf{F=\overline{A \cdot B}}$を参照)}\\
  モジュール名：\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/cmosnand3.v}{\textcolor{blue}{\underline{cmosnand3}}}\\
  テストベンチ：\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/cmosnand3_tb.v}{\textcolor{blue}{\underline{cmosnand3\_tb.v}}}
\item[(2)] $\mathsf{F=\overline{A + B + C}}$ \hfill \textcolor{magenta}{(P43 - P51の $\mathsf{F=\overline{A + B}}$を参照)}\\
  モジュール名：\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/cmosnor3.v}{\textcolor{blue}{\underline{cmosnor3}}}\\
  テストベンチ：\href{https://yamin.cis.k.hosei.ac.jp/lectures/logic/cmosnor3_tb.v}{\textcolor{blue}{\underline{cmosnor3\_tb.v}}}
\end{enumerate}
\end{enumerate}

\begin{enumerate}
\item[]
\begin{enumerate}
\item CMOS回路の回路図を書け
\item CMOS回路のVerilog HDLコードを書け
\item CMOS回路の真理値表を書け
\item CMOS回路をシミュレーションせよ
\item シミュレーション波形について説明せよ
\end{enumerate}
\end{enumerate}

\end{frame}
%------------------------------------------------ SLIDE -
\input{mybackground.tex}
%------------------------------------------------ SLIDE -
\section{発展：自由練習}
\begin{frame}\frametitle{\secname}
下図のCMOS回路の真理値表とFの論理式を書いて、さらに回路を実装しシミュレーションしてください。

\vspace{4mm}
\centering\includegraphics[height=.64\textheight]{figs/cmos-AorB-and-C.pdf}
\end{frame}
%------------------------------------------------ SLIDE -
\end{document}
%------------------------------------------------ SLIDE -
