don't panic: nur in der reihenfolge herumgewurschtelt
authorBernhard Urban <lewurm@gmail.com>
Thu, 25 Mar 2010 19:55:48 +0000 (20:55 +0100)
committerBernhard Urban <lewurm@gmail.com>
Thu, 25 Mar 2010 19:55:48 +0000 (20:55 +0100)
spec/spec.tex

index f854e0c4c31dd1432a015ef6c6557bafe2811616..c1817734a7531cce1b9955cb061a5c68e7349a21 100644 (file)
@@ -79,15 +79,17 @@ In Abbildung \ref{fig:arch} ist der Aufbau des Taschenrechners zu sehen. Der Tas
 
 \begin{itemize}
 \item \textbf{VGA} - Zeichenweises Ansprechen des Monitors
-\item \textbf{PS/2} - Empfangen von Keyboard-Eingaben als Scancodes
+\item \textbf{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
 \item \textbf{RS232} - Senden und Empfangen von Nachrichten vom/zum PC über die serielle Schnittstelle % TODO. baudrate? kodierung? (8N1?)
+\item \textbf{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
+\item \textbf{PS/2} - Empfangen von Keyboard-Eingaben als Scancodes
 \item \textbf{Scanner} - Empfängt die Scan-Codes vom PS/2 Modul und leitet nur für die Eingabezeile erlaubte Zeichen dekodiert in das CP850 Format an die History weiter, bei einem empfangenen Enter wird der Beginn der Berechnung an das Parser Modul signalisiert
-\item \textbf{History} - Verwaltung des dahinterliegenden Buffers von vergangenen Berechnungen und der aktuellen Eingabezeile, bei Aktualisierung der aktuellen Eingabezeile und bei Empfang eines Ergebnisses vom Parser Modul signalisiert es das an das Display Modul
-\item \textbf{Parser} - Wertet die Eingabezeile der History aus und liefert als Antwort entweder einen Fehler zurück oder gibt die einzelnen Berechnungen von je zwei Zahlen an die ALU weiter, die vom History Modul ausgelesenen zusammenhängenden Dezimalstellen werden mit dem Bin/Dez-Converter Modul in Binärzahlen umgerechnet, das Berechnungs-Endergebnis wird wieder in mit dem Converter Modul in einzelne Charakter umgerechnet und in der History gespeichert
-\item \textbf{Bin/Dez-Converter} - Konvertiert 10 CP850-codierte Dezimalziffern mit Vorzeichen in eine Binärzahl und umgekehrt %TODO oder in Parser integrieren? Oder gibt's eine Library-Funktion dafür?
+\item \textbf{Parser} - Wertet die Eingabezeile der History aus und liefert als Antwort entweder
+einen Fehler zurück oder gibt die einzelnen Berechnungen von je zwei Zahlen an die ALU weiter, die
+vom History Modul ausgelesenen zusammenhängenden Dezimalstellen werden intern umgerechnet, das
+Berechnungs-Endergebnis wird jedoch wieder in einzelne Charakter umgerechnet und in der History gespeichert
 \item \textbf{ALU} - Führt die tatsächlichen Berechnungen von Addition, Subtraktion, Multiplikation und Division durch
-\item \textbf{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
-\item \textbf{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
+\item \textbf{History} - Verwaltung des dahinterliegenden Buffers von vergangenen Berechnungen und der aktuellen Eingabezeile, bei Aktualisierung der aktuellen Eingabezeile und bei Empfang eines Ergebnisses vom Parser Modul signalisiert es das an das Display Modul
 \end{itemize}
 
 %\subsection{Interfaces}
@@ -134,13 +136,20 @@ free & out & 1 & std\_logic & Display & Signalisiert Bereitschaft \ZE
 \TEND
 
 
-\paragraph{PS/2}
+\paragraph{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
-new\_data & out & 1 & std\_logic\_vector & Scanner & Signalisiert neuen Scancode \ZE
-data & out & 8 & std\_logic\_vector & Scanner & Scancode laut Codepage 850 \ZE
+new\_eingabe & in & 1 & std\_logic & History & Fordert History auf die Eingabe auszulesen \ZE
+new\_result & in & 1 & std\_logic & History & Fordert History auf das Ergebnis auszulesen \ZE
+zeile & out & 5 & std\_logic\_vector & History & Zeilenadressierung ($2 * 15$ Zeilen $=30$) \ZE
+spalte & out & 7 & std\_logic\_vector & History & Spaltenadressierung (71 Ziechen inklusive \textbackslash 0) \ZE
+get & out & 1 & std\_logic & History & Signalisiert Speicheranforderung \ZE
+done & in & 1 & std\_logic & History & Signalisiert dass Daten anliegen \ZE
+char & in & 8 & character & History & enth\"alt angeforderne Daten \ZE
 
-ps2\_clk & inout & 1 & std\_logic & Tastatur & Clockleitung zum Keyboard \ZE
-ps2\_data & inout & 1 & std\_logic & Tastatur & Datenleitung zum Keyboard \ZE
+command & out & 8 & std\_logic\_vector & VGA & Kommando an das VGA Modul \ZE
+command\_data & out & 32 & std\_logic\_vector & VGA & Daten f\"ur das Kommando \ZE
+free & in & 1 & std\_logic & VGA & Signalisiert Bereitschaft \ZE
 \TEND
 
 
@@ -158,6 +167,34 @@ tx\_new & out & 1 & std\_logic & PC-Kommunikation & Signalisiert dass das anlieg
 \TEND
 
 
+\paragraph{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
+btn & in & 1 & std\_logic & externer Button & zum Triggern der RS232 Kommunikation \ZE
+
+rx\_data & in & 8 & std\_logic\_vector & RS232 & Datenfeld f\"ur das Empfangen \ZE
+rx\_new & in & 1 & std\_logic & RS232 & Signalisiert ein neu empfangendes Byte \ZE
+tx\_data & in & 8 & std\_logic\_vector & RS232 & Datenfeld f\"ur das \"Ubertragen \ZE
+tx\_new & in & 1 & std\_logic & RS232 & Signalisiert dass das anliegende Byte gesendet werden soll \ZE
+
+zeile & out & 7 & std\_logic\_vector & History & Zeilenadressierung (50 * 2 Zeilen = 100)\ZE
+spalte & out & 7 & std\_logic\_vector & History & Spaltenadressierung (71 Zeichen inklusive \textbackslash 0) \ZE
+get & out & 1 & std\_logic & History & Signalisiert Speicheranforderung \ZE
+done & in & 1 & std\_logic & History & Signalisiert dass Daten anliegen \ZE
+char & in & 8 & character & History & enth\"alt angeforderne Daten \ZE
+\TEND
+
+
+\paragraph{PS/2}
+\THEAD
+new\_data & out & 1 & std\_logic\_vector & Scanner & Signalisiert neuen Scancode \ZE
+data & out & 8 & std\_logic\_vector & Scanner & Scancode laut Codepage 850 \ZE
+
+ps2\_clk & inout & 1 & std\_logic & Tastatur & Clockleitung zum Keyboard \ZE
+ps2\_data & inout & 1 & std\_logic & Tastatur & Datenleitung zum Keyboard \ZE
+\TEND
+
+
 \paragraph{Scanner}
 %Empfängt die Scan-Codes vom PS/2 Modul und leitet nur für die Eingabezeile erlaubte Zeichen dekodiert in das CP850 Format an die History weiter, bei einem empfangenen Enter wird der Beginn der Berechnung an das Parser Modul signalisiert
 \THEAD
@@ -174,44 +211,6 @@ finished & in & 1 & std\_logic & Parser & Auswertung fertig \ZE
 \TEND
 
 
-\paragraph{History}
-%Verwaltung des dahinterliegenden Buffers von vergangenen Berechnungen und der aktuellen
-%Eingabezeile, bei Aktualisierung der aktuellen Eingabezeile und bei Empfang eines Ergebnisses vom
-%Parser Modul signalisiert es das an das Display Modul
-\THEAD
-pc\_zeile & in & 7 & std\_logic\_vector & PC-Kommunikation & Zeilenadressierung (50 * 2 Zeilen = 100)\ZE
-pc\_spalte & in & 7 & std\_logic\_vector & PC-Kommunikation & Spaltenadressierung (71 Zeichen inklusive \textbackslash 0) \ZE
-pc\_get & in & 1 & std\_logic & PC-Kommunikation & Signalisiert Speicheranforderung \ZE
-pc\_done & out & 1 & std\_logic & PC-Kommunikation & Signalisiert dass Daten anliegen \ZE
-pc\_char & out & 8 & character & PC-Kommunikation & enth\"alt angeforderne Daten \ZE
-
-s\_char & in & 8 & character & Scanner & Zeichen das vom Scanner Modul \"ubernommen werden soll \ZE
-s\_take & in & 1 & std\_logic & Scanner & Signalisiert Datenfeld char \ZE
-s\_done & out & 1 & std\_logic & Scanner & Signalisiert die \"Ubernahme der Daten \ZE
-s\_backspace & in & 1 & std\_logic & Scanner & Signalisiert Backspace (letztes Zeichen im Buffer soll gel\"oscht werden) \ZE
-
-d\_new\_eingabe & out & 1 & std\_logic & Display & Fordert Display auf die Eingabe auszulesen \ZE
-d\_new\_result & out & 1 & std\_logic & Display & Fordert Display auf das Ergebnis auszulesen \ZE
-d\_zeile & in & 5 & std\_logic\_vector & Display & Zeilenadressierung ($2 * 15$ Zeilen $=30$) \ZE
-d\_spalte & in & 7 & std\_logic\_vector & Display & Spaltenadressierung (71 Ziechen inklusive \textbackslash 0) \ZE
-d\_get & in & 1 & std\_logic & Display & Signalisiert Speicheranforderung \ZE
-d\_done & out & 1 & std\_logic & Display & Signalisiert dass Daten anliegen \ZE
-d\_char & out & 8 & character & Display & enth\"alt angeforderne Daten \ZE
-
-p\_rw & in & 1 & std\_logic & Parser & 0 = read (Expression), 1 = write (Ergebnis) \ZE
-p\_spalte & in & 7 & std\_logic\_vector & Parser & Spaltenadressierung (71 Ziechen inklusive \textbackslash 0) \ZE
-p\_rget & in & 1 & std\_logic & Parser & Signalisiert Leseanforderung \ZE
-p\_rdone & out & 1 & std\_logic & Parser & Signalisiert dass Daten anliegen \ZE
-p\_read & in & 8 & character & Parser & enth\"alt angeforderne Daten \ZE
-
-p\_wtake & in & 1 & std\_logic & Parser & Signalisiert Schreibanforderung \ZE
-p\_wdone & out & 1 & std\_logic & Parser & Signalisiert dass Daten anliegen \ZE
-p\_write & out & 8 & character & Parser & enth\"alt zu schreibende Daten \ZE
-
-p\_finished & in & 1 & std\_logic & Parser & Auswertung fertig \ZE
-\TEND
-
-
 \paragraph{Parser}
 %Wertet die Eingabezeile der History aus und liefert als Antwort entweder einen Fehler zurück oder gibt die einzelnen Berechnungen von je zwei Zahlen an die ALU weiter, die vom History Modul ausgelesenen zusammenhängenden Dezimalstellen werden mit dem Bin/Dez-Converter Modul in Binärzahlen umgerechnet, das Berechnungs-Endergebnis wird wieder in mit dem Converter Modul in einzelne Charakter umgerechnet und in der History gespeichert
 \THEAD
@@ -249,38 +248,41 @@ calc\_done & out & 1 & std\_logic & Parser & Berechnung fertig \ZE
 \TEND
 
 
-\paragraph{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
+\paragraph{History}
+%Verwaltung des dahinterliegenden Buffers von vergangenen Berechnungen und der aktuellen
+%Eingabezeile, bei Aktualisierung der aktuellen Eingabezeile und bei Empfang eines Ergebnisses vom
+%Parser Modul signalisiert es das an das Display Modul
 \THEAD
-new\_eingabe & in & 1 & std\_logic & History & Fordert History auf die Eingabe auszulesen \ZE
-new\_result & in & 1 & std\_logic & History & Fordert History auf das Ergebnis auszulesen \ZE
-zeile & out & 5 & std\_logic\_vector & History & Zeilenadressierung ($2 * 15$ Zeilen $=30$) \ZE
-spalte & out & 7 & std\_logic\_vector & History & Spaltenadressierung (71 Ziechen inklusive \textbackslash 0) \ZE
-get & out & 1 & std\_logic & History & Signalisiert Speicheranforderung \ZE
-done & in & 1 & std\_logic & History & Signalisiert dass Daten anliegen \ZE
-char & in & 8 & character & History & enth\"alt angeforderne Daten \ZE
+pc\_zeile & in & 7 & std\_logic\_vector & PC-Kommunikation & Zeilenadressierung (50 * 2 Zeilen = 100)\ZE
+pc\_spalte & in & 7 & std\_logic\_vector & PC-Kommunikation & Spaltenadressierung (71 Zeichen inklusive \textbackslash 0) \ZE
+pc\_get & in & 1 & std\_logic & PC-Kommunikation & Signalisiert Speicheranforderung \ZE
+pc\_done & out & 1 & std\_logic & PC-Kommunikation & Signalisiert dass Daten anliegen \ZE
+pc\_char & out & 8 & character & PC-Kommunikation & enth\"alt angeforderne Daten \ZE
 
-command & out & 8 & std\_logic\_vector & VGA & Kommando an das VGA Modul \ZE
-command\_data & out & 32 & std\_logic\_vector & VGA & Daten f\"ur das Kommando \ZE
-free & in & 1 & std\_logic & VGA & Signalisiert Bereitschaft \ZE
-\TEND
+s\_char & in & 8 & character & Scanner & Zeichen das vom Scanner Modul \"ubernommen werden soll \ZE
+s\_take & in & 1 & std\_logic & Scanner & Signalisiert Datenfeld char \ZE
+s\_done & out & 1 & std\_logic & Scanner & Signalisiert die \"Ubernahme der Daten \ZE
+s\_backspace & in & 1 & std\_logic & Scanner & Signalisiert Backspace (letztes Zeichen im Buffer soll gel\"oscht werden) \ZE
 
+d\_new\_eingabe & out & 1 & std\_logic & Display & Fordert Display auf die Eingabe auszulesen \ZE
+d\_new\_result & out & 1 & std\_logic & Display & Fordert Display auf das Ergebnis auszulesen \ZE
+d\_zeile & in & 5 & std\_logic\_vector & Display & Zeilenadressierung ($2 * 15$ Zeilen $=30$) \ZE
+d\_spalte & in & 7 & std\_logic\_vector & Display & Spaltenadressierung (71 Ziechen inklusive \textbackslash 0) \ZE
+d\_get & in & 1 & std\_logic & Display & Signalisiert Speicheranforderung \ZE
+d\_done & out & 1 & std\_logic & Display & Signalisiert dass Daten anliegen \ZE
+d\_char & out & 8 & character & Display & enth\"alt angeforderne Daten \ZE
 
-\paragraph{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
-btn & in & 1 & std\_logic & externer Button & zum Triggern der RS232 Kommunikation \ZE
+p\_rw & in & 1 & std\_logic & Parser & 0 = read (Expression), 1 = write (Ergebnis) \ZE
+p\_spalte & in & 7 & std\_logic\_vector & Parser & Spaltenadressierung (71 Ziechen inklusive \textbackslash 0) \ZE
+p\_rget & in & 1 & std\_logic & Parser & Signalisiert Leseanforderung \ZE
+p\_rdone & out & 1 & std\_logic & Parser & Signalisiert dass Daten anliegen \ZE
+p\_read & in & 8 & character & Parser & enth\"alt angeforderne Daten \ZE
 
-rx\_data & in & 8 & std\_logic\_vector & RS232 & Datenfeld f\"ur das Empfangen \ZE
-rx\_new & in & 1 & std\_logic & RS232 & Signalisiert ein neu empfangendes Byte \ZE
-tx\_data & in & 8 & std\_logic\_vector & RS232 & Datenfeld f\"ur das \"Ubertragen \ZE
-tx\_new & in & 1 & std\_logic & RS232 & Signalisiert dass das anliegende Byte gesendet werden soll \ZE
+p\_wtake & in & 1 & std\_logic & Parser & Signalisiert Schreibanforderung \ZE
+p\_wdone & out & 1 & std\_logic & Parser & Signalisiert dass Daten anliegen \ZE
+p\_write & out & 8 & character & Parser & enth\"alt zu schreibende Daten \ZE
 
-zeile & out & 7 & std\_logic\_vector & History & Zeilenadressierung (50 * 2 Zeilen = 100)\ZE
-spalte & out & 7 & std\_logic\_vector & History & Spaltenadressierung (71 Zeichen inklusive \textbackslash 0) \ZE
-get & out & 1 & std\_logic & History & Signalisiert Speicheranforderung \ZE
-done & in & 1 & std\_logic & History & Signalisiert dass Daten anliegen \ZE
-char & in & 8 & character & History & enth\"alt angeforderne Daten \ZE
+p\_finished & in & 1 & std\_logic & Parser & Auswertung fertig \ZE
 \TEND
 \end{landscape}