Projektseminar: Hardware-Beschreibung mit VHDL Seite: 4 2 Aufgaben 2.1 Aufgabe Parity-Generator 2.1.1 Aufgabenstellung Beschreiben sie eine Hardware, welche ein Paritäts-Bit an eine 31-stellige Bitfolge anhängt (Abbildung 1). Die Parität soll gerade sein, das heißt, bei einer ungeraden Anzahl von 1 in der Bitfolge ist das Paritäts-Bit 1, bei gerader Anzahl 0. Es wird angenommen, dass die Bitfolgen auf einmal als Vektor übergeben werden. 31-stellige Bitfolge Paritäts-Bit- Generator 32-stellige Bitfolge Abbildung 1: Paritäts-Bit_Generator 2.1.2 Hinweise zur Aufgabe Weitere Erläuterungen zum Paritäts-Bit Das Paritäts-Bit dient der Kontrolle von übertragenen Paketen auf Bit-Fehler. Es wird in der Regel an das Ende der zu übertragenden Bit-Folge angehängt. Der Wert richtet sich nach der Anzahl der Nullen und Einsen in der Bit-Folge. Dabei wird zwischen gerader und ungerader Parität unterschieden. Bei gerader Parität wird das Bit so gesetzt, dass das Paket eine gerade Anzahl von Einsen hat, bei ungerader Parität entsprechend umgekehrt. Lösung der Aufgabe Entity-Teil: Hier werden der Ein- und Ausgang als Bit-Vektoren definiert. Die Angabe der Elementmenge ist optional.
Projektseminar: Hardware-Beschreibung mit VHDL Seite: 6 2.2 Aufgabe Fulladder 2.2.1 Aufgabenstellung Realisieren sie einen Fulladder in VHDL. Gehen sie hierbei so vor, dass sie zuerst den Halfadder (Abbildung 2) und ein Oder-Gatter in ein Package einbinden und unter Verwendung dessen dann den Fulladder beschreiben. Schematische Darstellung der Funktion eines Halfadders A S B Halfadder C Abbildung 2: Halfadder Es sollen A und B addiert werden, S ist die Summe der Bits und C der Übertrag. Die jeweiligen Werte lassen sich aus der folgenden Tabelle entnehmen: A B S C 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 Abbildung 3: Wertetabelle des Halfadders
Projektseminar: Hardware-Beschreibung mit VHDL Seite: 7 Schematische Darstellung der Funktion eines Fulladders A B C' Fulladder S C Abbildung 4: Fulladder Hier werden A und B unter der Berücksichtigung des Übertrags C' einer vorangegangenen Addition berechnet. Der interne Aufbau des Fulladders lässt sich folgendermaßen realisieren: A B C' HA1 S1 C1 HA2 S2 Oder C S Abbildung 5: innerer Aufbau des Fulladders 2.2.2 Hinweise zu Lösung In dieser Aufgabe sollen vor Allem die Vorteile bei der Verwendung von Packages verdeutlicht werden. Nachdem die einfachen Halfadder und Oder-Gatter beschrieben wurden, werden diese in ein Package eingebunden. Hier können die Ports der beiden Blöcke bei Bedarf neu benannt werden. In einer anderen Datei des Projekts wird nun das Package eingebunden, wodurch die zwei Gatter auch hier zur Verfügung stehen. In der Aufgabe beschränkt sich damit die Beschreibung des Fulladders auf die Verbindung der Blöcke untereinander (port map). Die Beschreibung des Oder-Gatters und des Halfadders können auf die Studenten aufgeteilt werden.
Projektseminar: Hardware-Beschreibung mit VHDL Seite: 10 2.3 Aufgabe TCP-Verbindungsautomat 2.3.1 Aufgabenstellung Beschreiben Sie den Automaten zum Auf- und Abbau einer TCP-Verbindung (Abbildung 6) mit Hilfe der Hardwarebeschreibungssprache VHDL. Abbildung 6: TCP-Verbindungsautomat
Projektseminar: Hardware-Beschreibung mit VHDL Seite: 11 Gehen sie dabei von der folgenden Grundstruktur des Systems aus: receive sys timer Automat send sys timer Restsystem Abbildung 7: schematische Darstellung der Außenbeschaltung
Projektseminar: Hardware-Beschreibung mit VHDL Seite: 12 2.3.2 Hinweise zur Lösung Bei dieser Aufgabe soll die Erstellung eines Automaten geübt werden. Hier werden dazu neben den bisher verwendeten einfachen Datentypen auch komplexe verwendet, deren Verwendung hier ebenfalls gezeigt werden soll. Definition von Datentypen: - Aufzählung: alle möglichen Werte des Datentyps werden hintereinander aufgezählt - type Datentyp is (Wert_1, Wert_2, Wert_3,..., Wert_n); - z.b.: type STATE_TYPE is ( CLOSED, LISTEN, SYN_RECEIVED,...); - komplexe Datentypen: Definition der Länge und Art der Einträge - type Typname is array (Index) of Elementtyp; - zb. - type STRING is array (0 to 255) of character; => Zeichenkette mit Länge 256 - type MATRIX_2x3 is array (integer range 1 to 2; integer range 1 to 3) of integer; => zweidimensionale 2x3-Matrix aus integer-werten - einige sind bereits vordefiniert: z.b.: string, bit_vector, std_logic_vector Notation der Variablenwerte für komplexe Datentypen: - allgemein: Variable := 'Wert'; - Aufzählungstyp: Variable := Wert; - komplexer Datentyp: Variable := "Wert"; Lösung der Aufgabe Die Auswahl der Zustände erfolgt über die case-anweisung. In den Zuständen werden einfache bedingte Zuweisungen ausgeführt. Die Bearbeitung der einzelnen Zustände lässt sich durch den Betreuer, nach dem Aufbau des Grundgerüsts, auf die Studenten aufteilen.
Projektseminar: Hardware-Beschreibung mit VHDL Seite: 17 3 Quellen - Vorlesung IHS 2 Kapitel VHDL - www.hs-merseburg.de/~gerboth/files/studium/et03/5.semester/altera/tutorials/vhdl_crashkurs.pdf - www-ds.e-technik.uni-dortmund.de/new/cei/resource/vhdl/skript.pdf