\section{Addierer}

\subsection{Halb- und Volladdierer}

\dfn{Halbaddierer}{
	Ein Halbaddierer ist ein Bauelement, welches in der Lage ist zwei Bits zu addieren. Es nimmt 2 Bits als Eingang und hat die Summe, sowie der Übertrag als Ausgang.

	\begin{minipage}{0.5\linewidth}
		\begin{center}
			\begin{tikzpicture}[circuit logic IEC]
				\node[and gate] (and) at (0,-1.5) {};
				\node[xor gate] (xor) at (0,0) {};
				\path[draw] (xor.input 1) --++(left:20mm) node[point, label=180:A] {};
				\path[draw] (xor.input 2) --++(left:20mm) node[point, label=180:B] {};
				\path[draw] (and.input 1) --++(left:5mm) --++(up:11.7mm);
				\path[draw] (and.input 2) --++(left:10mm) --++(up:18.4mm);
				\path[draw] (xor.output) --++(right:10mm) node[point, label=0:SUM] {};
				\path[draw] (and.output) --++(right:10mm) node[point, label=0:CO] {};
			\end{tikzpicture}
		\end{center}
	\end{minipage}
	\begin{minipage}{0.5\linewidth}
		\begin{center}
			\begin{circuitikz}[european]
				\tikzset{flipflop hsum/.style={flipflop,
							flipflop def={t1=A, t3=B, t6=SUM, t4=CO}
						}}
				\node[flipflop hsum]{$\sum$};
			\end{circuitikz}
		\end{center}
	\end{minipage}
}

Für Zahlen im Binärsystem reichen Halbaddierer nicht aus, da sie den Übertrag nicht beachten. Deswegen kommt der Volladdierer ins Spiel.

\dfn{Volladdierer}{
	Volladdierer sind Bauelemente, dessen Funktion es ist bei der Summe von 2 Bits den Übertrag mit einzubeziehen.

	\begin{center}
		\begin{circuitikz}[european]
			\tikzset{flipflop fsum/.style={flipflop,
						flipflop def={t1=A, t2=B, t3=CIN, t4=CO, t6=SUM}
					}}
			\node [flipflop fsum]{$\sum$};
		\end{circuitikz}
	\end{center}
}

\subsection{Mehrbit-Addierer und Subtrahierer}

Wir haben nun die Basis zur Erstellung einer logischen Schaltung zum addieren von Zahlen im Binärsystem. Der Prozess vom Addieren von Dualzahlen kann entweder bitseriell oder bitparallel erfolgen.

\begin{itemize}
	\item Bitseriell: Pro Taktperiode wird nur ein Bit addiert
	\item Bitparallel: In einer Taktperiode werden alle Bits addiert.
\end{itemize}

Wird die Dualzahl seriell bzw. parallel addiert, so wird das Bauelement Serienaddierer bzw. Paralleladdierer. Bei den Paralleladdierer unterscheidet man zwischen den folgenden Methoden.

\begin{itemize}
	\item Paralleladdierer in der Normalform
	\item Ripple-Carry Addierer
	\item Carry-Look-Ahead Addierer
\end{itemize}

Jedes dieser Paralleladdierer haben ihre Vor- und Nachteile.
\\
Beim Paralleladdierer in der Normalform wird die Normalform für jedes Ausgangsbit verwendet. Der Vorteil davon ist, dass durch die Normalform das Bauelement eine sehr geringe Propagation Delay hat. Die Normalform bringt aber auch Nachteile, da diese eine sehr komplizierte kombinatorische Schaltung ist.
\\
Im Vergleich zum Paralleladdierer in der Normalform ist der Ripple-Carry Addierer um einiges langsamer, da es die Bits nacheinander durch ein Halb- und mehrere Volladdierer addiert. Der Vorteil ist, dass die kombinatorische Schaltung einfacher zu realisieren ist.

\includegraphics[width=\textwidth]{fig/Fig_25.png} \cite{Luisier2024}

Der Carry-Look-Ahead Addierer ist ähnlich wie eine Ripple-Carry Addierer mit dem Unterschied, dass der parallel, während die Bits addiert werden der Carry-Out addiert wird und somit der Carry-Look-Ahead Addierer ein wenig schneller ist als der Ripple-Carry Addierer. Der Nachteil davon ist, dass die kombinatorische Schaltung immer komplizierter wird, wenn die Dualzahl grösser wird.
