\section{Pull-up und Pull-down Schaltungen}

\subsection{NOT, NAND, und NOR}

\dfn{NICHT Gatter in CMOS Technik}{
	Das NOT Gatter kann durch CMOS Gatter wie folgt dargestellt werden.

	\begin{center}
		\begin{circuitikz}[european]
			\node[circ, label=90:{\small $V_{DD}$}](origin) at (0,0) {};
			\node[thick, nmos, anchor=D] (nmos1) at(0, -2) {}
			(nmos1.gate) node[anchor=east] {}
			(nmos1.drain) node[anchor=west, yshift=-0.15cm] {}
			(nmos1.source) node[anchor=west,yshift=+0.15cm] {};
			\node[thick, pmos, anchor=D] (pmos1) at(0, -1.5) {}
			(pmos1.gate) node[anchor=east] {}
			(pmos1.drain) node[anchor=west, yshift=-0.15cm] {}
			(pmos1.source) node[anchor=west,yshift=+0.15cm] {};
			\draw[thick] (nmos1.S) -- (0, -4) coordinate(gnd);
			\draw[thick] (pmos1.D) -- (nmos1.D);
			\draw[thick] (pmos1.G) -- (nmos1.G);
			\path[draw] (0,-1.75) --++(right:10mm) node[point, label=0:Y] {};
			\path[draw] (-1,-1.75) --++(left:10mm) node[point, label=180:A] {};
			\path[draw, very thick] (-0.25, -4) -- (gnd) -- (0.25, -4);
		\end{circuitikz}
	\end{center}
}

\dfn{NAND Gatter in CMOS Technik}{
	Das NAND Gatter kann durch CMOS Gatter wie folgt dargestellt werden.

	\begin{center}
		\begin{circuitikz}[european]
			\node[circ, label=90:{\small $V_{DD}$}](origin) at (0,0) {};
			\node[thick, nmos, anchor=D] (nmos1) at(0, -2.25) {}
			(nmos1.gate) node[anchor=east] {}
			(nmos1.drain) node[anchor=west, yshift=-0.15cm] {}
			(nmos1.source) node[anchor=west,yshift=+0.15cm] {};
			\node[thick, nmos, anchor=D] (nmos2) at(0, -4.25) {}
			(nmos2.gate) node[anchor=east] {}
			(nmos2.drain) node[anchor=west, yshift=-0.15cm] {}
			(nmos2.source) node[anchor=west,yshift=+0.15cm] {};
			\node[thick, pmos, anchor=D] (pmos1) at(-1.5, -1.75) {}
			(pmos1.gate) node[anchor=east] {}
			(pmos1.drain) node[anchor=west, yshift=-0.15cm] {}
			(pmos1.source) node[anchor=west,yshift=+0.15cm] {};
			\node[thick, pmos, anchor=D] (pmos2) at(1.5, -1.75) {}
			(pmos2.gate) node[anchor=east] {}
			(pmos2.drain) node[anchor=west, yshift=-0.15cm] {}
			(pmos2.source) node[anchor=west,yshift=+0.15cm] {};
			\draw[thick] (nmos2.S) -- (0, -6.25) coordinate(gnd);
			\draw[thick] (pmos1.D) -- (pmos2.D);
			\draw[thick] (pmos1.S) -- (pmos2.S);
			\draw[thick] (origin) -- (0,-0.23);
			\draw[thick] (nmos1.S) -- (nmos2.D);
			\draw[thick] (0,-1.75) -- (nmos1.D);
			\draw[thick] (pmos1.G) -- (-2.5,-3);
			\draw[thick] (pmos2.G) -- (-1.25,-1);
			\draw[thick] (-1.25,-1) -- (-1.25, -5);
			\path[draw] (0,-2) --++(right:10mm) node[point, label=0:Y] {};
			\path[draw] (nmos1.G) --++(left:20mm) node[point, label=180:A] {};
			\path[draw] (nmos2.G) --++(left:20mm) node[point, label=180:B] {};
			\path[draw, very thick] (-0.25, -6.25) -- (gnd) -- (0.25, -6.25);
		\end{circuitikz}
	\end{center}
}

\dfn{NOR Gatter in CMOS Technik}{
	Das NOR Gatter kann durch CMOS Gatter wie folgt dargestellt werden.

	\begin{center}
		\begin{circuitikz}[european]
			\node[circ, label=90:{\small $V_{DD}$}](origin) at (0,0) {};
			\node[thick, nmos, anchor=D] (nmos1) at(-1.75, -3.5) {}
			(nmos1.gate) node[anchor=east] {}
			(nmos1.drain) node[anchor=west, yshift=-0.15cm] {}
			(nmos1.source) node[anchor=west,yshift=+0.15cm] {};
			\node[thick, nmos, anchor=D] (nmos2) at(1.75, -3.5) {}
			(nmos2.gate) node[anchor=east] {}
			(nmos2.drain) node[anchor=west, yshift=-0.15cm] {}
			(nmos2.source) node[anchor=west,yshift=+0.15cm] {};
			\node[thick, pmos, anchor=D] (pmos1) at(0, -1.5) {}
			(pmos1.gate) node[anchor=east] {}
			(pmos1.drain) node[anchor=west, yshift=-0.15cm] {}
			(pmos1.source) node[anchor=west,yshift=+0.15cm] {};
			\node[thick, pmos, anchor=D] (pmos2) at(0, -3) {}
			(pmos2.gate) node[anchor=east] {}
			(pmos2.drain) node[anchor=west, yshift=-0.15cm] {}
			(pmos2.source) node[anchor=west,yshift=+0.15cm] {};
			\draw[thick] (nmos1.S) -- (-1.75, -5.25) coordinate(gnd1);
			\draw[thick] (nmos2.S) -- (1.75, -5.25) coordinate(gnd2);
			\draw[thick] (nmos1.D) -- (nmos2.D);
			\draw[thick] (pmos2.D) -- (0, -3.5);
			\draw[thick] (nmos1.G) -- (-2.75, -0.75);
			\draw[thick] (nmos2.G) -- (-1.5, -4.25);
			\draw[thick] (-1.5, -4.25) -- (-1.5, -2.25);
			\path[draw] (pmos2.D) --++(right:10mm) node[point, label=0:Y] {};
			\path[draw] (pmos1.G) --++(left:30mm) node[point, label=180:A] {};
			\path[draw] (pmos2.G) --++(left:30mm) node[point, label=180:B] {};
			\path[draw, very thick] (-2, -5.25) -- (gnd1) -- (-1.5, -5.25);
			\path[draw, very thick] (2, -5.25) -- (gnd2) -- (1.5, -5.25);
		\end{circuitikz}
	\end{center}
}

\subsection{Komplexe Schaltungen}

Jetzt wo wir wissen, wie logische Gatter durch CMOS Gatter dargestellt werden können, können wir komplexe logische Schaltungen durch CMOS Transistoren darstellen.

\dfn{Pull-up / Pull-down Prinzip}{
	\begin{minipage}{0.5\linewidth}
		Für die Darstellung von logischen Schaltungen durch CMOS Gattern gilt:

		\begin{itemize}
			\item CMOS Gatter müssen aus genau so vielen NMOS und PMOS Transistoren bestehen.
			\item Bei $m$ Eingängen gibt es $m$ NMOS und $m$ PMOS Transistoren
		\end{itemize}
		\cite{Luisier2024}
	\end{minipage}
	\begin{minipage}{0.5\linewidth}
		\begin{minipage}{0.3\linewidth}
			\begin{center}
				\begin{tikzpicture}
					\node[circ, label=90:{\small $V_{DD}$}] at (0,0) (origin) {};
					\node[draw, dotted](pmos) at(0,-0.5) {PMOS};
					\node[draw, dotted](nmos) at (0, -1.5) {NMOS};
					\coordinate(gnd) at (0, -2){};
					\draw[] (origin) -- (pmos)
					(pmos) -- (nmos)
					(nmos) -- (gnd);
					\path[draw] (0,-1) --++(right:5mm) node[fill = white] {Y};
					\path[draw, thick] (-0.25, -2) -- (gnd) -- (0.25, -2);
				\end{tikzpicture}
			\end{center}
		\end{minipage}
		\begin{minipage}{0.55\linewidth}
			\begin{flushleft}
				\begin{tabular}{l l}
					Pull-u\textcolor{red}{p} Schaltung:   & \textcolor{red}{P}MOS \\
					Pull-dow\textcolor{red}{n} Schaltung: & \textcolor{red}{N}MOS \\
				\end{tabular}
			\end{flushleft}
		\end{minipage}
	\end{minipage}
}

In den vorherigen Definitionen haben wir uns Pull-up und Pull-down Schaltungen von einzelnen logischen Gattern angeschaut. Wie wir aber in Kapitel \ref{sec:gat} gesehen haben, können logische Gatter miteinander verknüpft werden. Dies ist auch der Fall für CMOS Gatter. Um die verschiedenen logischen Gattern zu erkennen, kann man beim Pull-up bzw. beim Pull-down Pfad die Transistoren in Blöcke unterteilen. Dabei gelten die folgenden Regeln.

\begin{minipage}{0.5\linewidth}
	\subsection*{Pull-up}

	\begin{itemize}
		\item 2 parallelgeschaltene PMOS Transistoren $\rightarrow$ ODER
		\item 2 seriegeschaltene PMOS Transistoren $\rightarrow$ UND
	\end{itemize}
\end{minipage}
\begin{minipage}{0.5\linewidth}
	\subsection*{Pull-down}

	\begin{itemize}
		\item 2 parallelgeschaltene NMOS Transistoren $\rightarrow$ UND
		\item 2 seriegeschaltene NMOS Transistoren $\rightarrow$ ODER
	\end{itemize}
\end{minipage}

Diese Regeln gelten nicht nur für einzelne Transistoren, sondern auch für Blöcke von Transistoren.


\subsection{Zeitverzögerung}

CMOS Gatter können nicht unendlich schnell schalten. Ladungen (Elektronen und Löcher) müssen bewegt  werden, was Laufzeit Verzögerungen verursacht. \cite{Luisier2024} In unserem Fall spielen der Propagation Delay von Low to High bzw. High to Low eine grosse Rolle. Aus der Tabelle kann man erkennen, dass es mehrere Faktoren hat, welche die Verzögerungszeit beeinflussen können. Wir fokussieren uns aber hauptsächlich auf die Propagation Delay.

\begin{tabular}{| c | c | c |}
	$t_{pHL}$ & Verzögerungszeit (Propagation Delay High Low) & Beim Übergang H $\rightarrow$ L Gemessen bei 50\% des Pegelhubs \\
	$t_{pLH}$ & Verzögerungszeit (Propagation delay Low High) & Beim Übergang L $\rightarrow$ H Gemessen bei 50\% des Pegelhubs \\
	$r_r$     & Anstieg- (Rise-) Zeit Transition Low High     & Gemessen zwischen 10\% und 90\%  des Pegelhubs                  \\
	$t_{tLH}$ & Transition Low High                           &                                                                 \\
	$t_f$     & Abfall- (Fall-) Zeit                          & Gemessen zwischen 90\% und 10\%  des Pegelhubs                  \\
	$t_{tHL}$ & Transition High Low                           &                                                                 \\
\end{tabular}

In diesem Semester arbeiten wir hauptsächlich mit $t_d$ (Delay Time). Diese kann wie folgt bestimmt werden.

\[
	t_d = \frac{t_{pLH} + t_{pHL}}{2}
	.\]
