free & out & 1 & std\_logic & Display & Signalisiert Bereitschaft \ZE
\TEND
-
+\newpage
\subsubsection{Display}
%Liest einzelne Zeichen aus der History aus und leitet diese an das VGA Modul weiter, um sie in der entsprechenden Zeile anzeigen zu lassen
\THEAD
free & in & 1 & std\_logic & VGA & Signalisiert Bereitschaft \ZE
\TEND
-
+\newpage
\subsubsection{RS232}
%Senden und Empfangen von Nachrichten vom/zum PC über die serielle Schnittstelle
\THEAD
tx\_new & out & 1 & std\_logic & PC-Kommunikation & Signalisiert dass das anliegende Byte gesendet werden soll \ZE
\TEND
-
+\newpage
\subsubsection{PC-Kommunikation}
%Auf eine vom PC eintreffende Bufferübermittlungsanforderung oder ein Drücken des entsprechenden Board-Buttons, liest es Zeichen für Zeichen aus dem History Modul aus und leitet es an das RS232 Modul weiter
\THEAD
\TEND
+\newpage
\subsubsection{PS/2}
\THEAD
new\_data & out & 1 & std\_logic\_vector & Scanner & Signalisiert neuen Scancode \ZE
\end{itemize}
\subsection{RS232}
-%test, TODO
+Es soll eine Baudrate von 115200 bauds und die 8N1 Codierung (8bit Daten, keine Parity und ein
+Stopbit) verwendet werden. Da das FPGA Design um ein Vielfaches schneller als 115200Hz \footnote{
+n\"amlich $33.33$MHz} ist muss bei der Implementierung zus\"atzlich ein Taktgeber f\"ur das RS232
+Modul implementiert werden um BT zu erzeugen (BT steht dabei f\"ur BitTime), das soll mit einem
+Takteiler realisiert werden. Ausserdem ist zu beachten dass das LSB zuerst geschickt wird.
+
\begin{figure}[!ht]
\includegraphics[width=0.9\textwidth]{sm/rs232-rs.pdf}
\centering
-\caption{Statemachine zum Empfangen auf der RS232 Schnittstelle (8N1)}
-\label{fig:rs232-rs}
+\caption{Statemachine des RS232 Modules zum Empfangen von Daten}
+\label{fig:rs232rx}
\end{figure}
+\begin{itemize}
+\item \textbf{idle}: die lokale Variable \emph{bc} wird zur\"uckgesetzt.
+\item \textbf{read startbit}: Eine fallende Flanke auf \emph{rxd} signalisiert dass eine
+Byte\"ubertragung beginnt.
+\item \textbf{read}: In diesem State werden die Datenbits nacheinander \"uber \emph{rxd} empfangen.
+\item \textbf{read stopbit}: Um das Ende einer Byte\"ubertragung zu signalisieren wird \emph{rxd}
+auf high gesetzt. Dadurch weiss das RS232 Modul bescheid dass die Byte\"ubertragung zu ende ist und
+kann dem PC-Kommunikation Modul signalisieren, dass ein Byte vollst\"andig empfangen wurde.
+\end{itemize}
+
+
+\begin{figure}[!ht]
+\includegraphics[width=0.9\textwidth]{sm/rs232-ts.pdf}
+\centering
+\caption{Statemachine des RS232 Modules zum Senden von Daten}
+\label{fig:rs232tx}
+\end{figure}
+\begin{itemize}
+\item \textbf{idle}: die lokale Variable \emph{bc} wird zur\"uckgesetzt.
+\item \textbf{write startbit}: Um eine \"Ubertragung in Gang zu setzen muss \emph{txd} auf low
+gesetzt werden.
+\item \textbf{write}: In diesem State werden die Datenbits nacheinander an \emph{txd} angelegt.
+\item \textbf{write stopbit}: Um das Ende einer Byte\"ubertragung zu signalisieren muss \emph{txd}
+auf high gesetzt werden.
+\end{itemize}
\subsection{PC-Kommunikation}
\item \textbf{l\"oschen}: Teilt dem History Modul mit das letzte Zeichen im Buffer zu l\"oschen
(\emph{backspace} ist einen Takt lang high).
\item \textbf{mod}: Da wir nur Zeichen des Numpads \"ubernehmen wollen, ist dieser Zwischenstate
-n\"otig.
+n\"otig, da Scancodes vom Numpad einen Modifier mitschicken (\emph{0xe0}).
\item \textbf{\"ubernehmen}: Wenn ein g\"ultiges Zeichen laut Requirements eingegeben wurde, wird
jenes Zeichen an \emph{char} angelegt und \emph{take} wird einen Takt lang high gesetzt. Das History
Modul wird dadurch getriggert das anliegende Zeichen in den Buffer zu \"ubernehmen.