spec: dies und das
[hwmod.git] / spec / spec.tex
index 0764c3663a35f96b1a1f8c8c5f47048f4170a068..29bdfcaf4ca928ff18b3c70bb0e1d019be5fb67d 100644 (file)
@@ -113,7 +113,7 @@ command\_data & in & 32 & std\_logic\_vector & Display & Daten f\"ur das Kommand
 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
@@ -132,7 +132,7 @@ command\_data & out & 32 & std\_logic\_vector & VGA & Daten f\"ur das Kommando \
 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
@@ -146,7 +146,7 @@ tx\_data & out & 8 & std\_logic\_vector & PC-Kommunikation & Datenfeld f\"ur das
 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
@@ -165,6 +165,7 @@ char & in & 8 & character & History & enth\"alt angeforderne Daten \ZE
 \TEND
 
 
+\newpage
 \subsubsection{PS/2}
 \THEAD
 new\_data & out & 1 & std\_logic\_vector & Scanner & Signalisiert neuen Scancode \ZE
@@ -368,13 +369,43 @@ die vollen 71 Zeichen in der entsprechenden Zeile enthalten sind\footnote{ein St
 \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}
@@ -418,7 +449,7 @@ Ergebnis berechnet hat.
 \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.