Ausarbeitung zum ETI Praktikum

Ausarbeitung zum ETI Praktikum Aufgabe 3.1 (VHDL) eingereicht an der Technischen Universität München Lehrstuhl X: Rechnertechnik und Rechnerorganisati...
1 downloads 6 Views 168KB Size
Ausarbeitung zum ETI Praktikum Aufgabe 3.1 (VHDL) eingereicht an der Technischen Universität München Lehrstuhl X: Rechnertechnik und Rechnerorganisation Prof. A. Bode SS 2006

Betreuer: Dipl.-Inf. Daniel Stodden

Bearbeiter (Gruppe 9): Herr Kolja Rödel  Ausarbeitung ([email protected], Matr.Nr.: 2724397) Herr Tankred Hase  Projektmanager ([email protected], Matr.Nr.: 2883516) Herr Daniel Muhra  Vortrag ([email protected], Matr.Nr.: 2856059)

Daniel Muhra

1

Technische Universität München

Inhaltsverzeichnis 1 Pichtenheft

3

1.1

Kurze Aufgabenbeschreibung

. . . . . . . . . . . . . . . . . . . . . . . . .

3

1.2

Hilfsmittel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

1.3

Blackbox-Sicht

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

1.4

Zeitplanung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4

2 Spezikation 2.1

2.2

5

Funktionsweise

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

2.1.1

Zustandsgenerator

. . . . . . . . . . . . . . . . . . . . . . . . . . .

5

2.1.2

Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

Alternative Lösungsansätze

. . . . . . . . . . . . . . . . . . . . . . . . . .

6

2.2.1

Zustandsgenerator

. . . . . . . . . . . . . . . . . . . . . . . . . . .

6

2.2.2

Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

3 Anwenderdokumentation

7

3.1

Funktionalität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

3.2

Benutzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

4 Entwicklerdokumentation 4.1

Zustandsgenerator

4.2

Register

8

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

5 Erzeugte Dateien

11

5.1

ZustandsGenerator.vhd

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

5.2

Register.vhd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

Daniel Muhra

2

Technische Universität München

1 Pichtenheft 1.1 Kurze Aufgabenbeschreibung Dieses Projekt ist Teil der Erstellung einer Ampelanlage. Hierbei sollen ein Zustandsgenerator und das Register konzipiert werden. Der Zustandsgenerator soll anhand eines ankommenden Taktes einen dazugehörigen Ampelzustand ermitteln, welcher an das Register weitergeleitet wird. Das Register erhält den jeweiligen Ampelzustand vom Zustandsgenerator und hält diesen fest. Ebenfalls soll es später den momentanen Zustand für die Fuÿgängerampeln erhalten und beide zusammen weiterleiten.

1.2 Hilfsmittel

ˆ

x86 kompatibler Rechner mit Linux Betriebssystem (Ubuntu)

ˆ

Texteditor (gedit)

ˆ

VHDL Kompiler (ghdl)

ˆ

Open Oce (Dokumentenerstellung)

ˆ

MS Oce Visio (Dokumentenerstellung)

ˆ

tetex Latex Kompiler (Dokumentenerstellung)

ˆ

Tutorials der ETI-Zentralübung

ˆ

Wiki zum ETI-Praktikum

1.3 Blackbox-Sicht

ˆ

Zustandsgenerator: Der Zustandsgenerator erhält ein 1 bit Signal vom Taktgeber II. Bei jedem Signal (Wechsel von 0 auf 1) wird im Zustandsgenerator eine 8 bit Adresse generiert und an den Speicher gesendet. Dieser sendet dem Zustandsgenerator den zugehörigen Ampelzustand als 15 bit Vektor , welcher weiter an das Register geleitet wird.

ˆ

Register: Das Register erhält vom Zustandsgenerator den momentanen (gewünschten) Ampelzustand (15 bit) für die Kfz-Ampeln und speichert diesen. Zusätzlich kann das Register um einen 8 bit Vektor für die Fuÿgängerampeln als Eingang erweitert werden. Beide Zustände (Kfz- und Fuÿgängerampeln) werden vom Register kombiniert als 23 bit Vektor ausgeben und gehen an den Multiplexer.

Daniel Muhra

3

Technische Universität München

1.4 Zeitplanung

Aufgaben- und Personalplanung: Teilaufgabe

T. Hase

D. Muhra

K. Rödel

Gesamt

Kommunikation

1

1

-

-

Start

Ende

Besprechungen

4

4

4

12

ab 29.05.06

Problemanalyse

2

2

2

6

21.05.2006

21.05.2006

allgemein

Pichtenheft

-

-

1

1 27.05.2006

27.05.2006

Vorbereitung

1

1

1

3 29.05.2006

29.05.2006

Lösungssuche

3

3

3

9 29.05.2006

04.06.2006

Spezikation

2

2

2

6 03.06.2006

05.06.2006

Implementierung

4

4

4

12 05.06.2006

15.06.2006

Qualitätstests

2

2

2

6 15.06.2006

20.06.2006

Besprechungsprotokolle

3

-

-

3

21.05.2006

02.07.2006

Dokumentation

-

-

4

4

22.06.2006

02.07.2006

01.07.2006

16.06.2006





Vortrag

1

5

-

6

Gesamt

23 h

23 h

23 h

69 h

Unterteilung nach Arbeitspaketen: Arbeitspaket Implementierung

Verantwortliche

Aufwand

Termin

Hase, Muhra, Rödel

12

12.06.2006

Hase, Muhra, Rödel

6

25.06.2006

Rödel

4

01.07.2006

Hase, Muhra

6

02.07.2006

des Programms Qualitätstests Dokumentation Vortrag

Termine für die Abgabe der Leistungen: Pichtenheft

Montag, 29.05.2006, 12:00 Uhr

Spezikation

Montag, 12.06.2006, 12:00 Uhr

Implementierung

Montag, 26.06.2006, 12:00 Uhr

Ausarbeitung

Montag, 10.07.2006, 12:00 Uhr

Vortrag

Mittwoch, 12.07.2006, 10:00 - 12:00 Uhr

Daniel Muhra

4

Technische Universität München

2 Spezikation 2.1 Funktionsweise Im Folgeneden wird die Funktionsweise der beiden Module erläutert. Zum Besseren Verständnis ndet sich zu jedem Modul ein entsprechendes Schaubild. Weiterhin verfügt jede Komponente der Ampelschaltung über einen 1 Mhz Clock- (clk) und einen Reset(reset) Eingang. Clock dient als Taktgeber und sorgt für einen laufenden Betrieb. Bei einem Reset Signal (Wechsel von 0 auf 1) werden alle Zustände und ausgehenden Signale beider Module auf 0 gesetzt und somit in den Anfangszustand gesetzt. Im Weiteren wird nicht mehr auf diese Eingänge eingegangen, jedoch bleibt zu bemerken, dass sie dennoch vorhanden sind.

2.1.1 Zustandsgenerator Der Zustandsgenerator selbst erzeugt keinen Zustand, sondern eine Speicheradresse, an der der gewünschte Zustand zu nden ist. Aus der Aufgabenstellung geht hervor, dass es sich um 15 Ampellichter handelt, die zusammen 14 verschiedene Zustände (als Ganzes) annehmen. Wir gehen davon aus, dass diese Zustände hintereinenander im Speicher liegen und damit die Adresse 0 auf den ersten Eintrag verweist. Folglich wäre der Beginn des nächsten Zustands bei Adresse 15 und der letzte Zustand bei Adresse 195 ((14 ∗ 15) − 15). Um somit die gröÿte Adresse (195) speichern zu können, benötigen wir mindestens eine 8 bit Zahl i:

ˆ

bei jedem Signal (Wechsel von 0 auf 1) von clk2 soll eine neue Adresse erzeugt werden. Hierzu wird die intern gespeicherte Adresse i erhöht.

ˆ

da nur 14 Zustände existieren, muss i nach der 14. Adresse (195), wieder auf die 1. Adresse (0) gesetzt werden.

ˆ

wurde die Adresse generiert, wird sie auf den Ausgang (adress) ausgegeben.

ˆ

am Eingang lights erhält der Zustandsgenerator den angeforderten Ampelzustand. Dieser wird an das Register weitergereicht.

2.1.2 Register ˆ

zu Begin jedes Taktzyklus wird der interne 23 Bit Vektor i auf 0 gesetzt und der Gesamtzustand neu berechnet

ˆ

Nun werden stateIn1 und stateIn2 konkateniert und auf i gelegt. Hierbei repräsentieren die oberen Bits die Kfz-Ampel und die unteren 8 Bits die Fuÿgänger-Ampel

ˆ

im letzten Schritt wird i auf den Ausgang stateOut ausgeben und liefert den gesamten Zustand der Ampelanlage.

Daniel Muhra

5

Technische Universität München

2.2 Alternative Lösungsansätze

2.2.1 Zustandsgenerator lights Eingang/Ausgang weglassen. Vorteil: Kosteneinsparung durch Strukturminimierung des Bauteils. Nachteil: Fehlende Zugrismöglichkeit. Um möglichst nah an der Aufgabenstellung zu bleiben, haben wir uns entschieden den Ampelzustand über den Zustandsgenerator zum Register zu leiten, so wie es dem Schaubild entspricht. Weiterhin hielten wir es für wichtig eine zusätzliche Kontrollschnittstelle zur Verfügung zu haben, da man so den Ampelzustand auslesen kann bevor er zum Register geleitet wird.

2.2.2 Register Andere Zustandsreihenfolge: Fuÿgänger + Kfz statt Kfz + Fuÿgänger Zwar wäre eine Multiplikation mit einer 8 bit Zahl mathematisch weniger Aufwand als mit einer 15 bit Zahl, jedoch handelt es sich hierbei um eine einfache Linksverschiebung. Teschnisch wird dies lediglich durch eine andere Verdrahtung realisiert, bei der beide Varianten gleichwertig ausfallen. Somit bleibt die Entscheidung für eine Variante Geschmackssache.

Daniel Muhra

6

Technische Universität München

3 Anwenderdokumentation 3.1 Funktionalität Grundsätzlich ist es angedacht beide Komponenten für das Ampelsystem zu verwenden. Dennoch ist es möglich eines von beiden durch ein alternatives Modul zu ersetzen. Der Zustandsgenerator dient zum Erstellen einer Adresse. Dafür benötigt er ein Taktsignal, dass einen Adresswechsel bewirkt. Die generierte Adresse wird ausgegeben und soll einen 15 bit Ampelzustand liefern. Dieser wird ebenfalls vom Zustandsgenerator weitergereicht. Für einen funktionierenden Betrieb muss der Speicher so angeordnet sein, wie es in der Spezikation festgelegt wurde. Das Register ist streng genommen nur eine Einheit die ein 15 bit und ein 18 bit Signal konkadeniert und weitergibt. Die Eingänge müssen also je nach Wunsch belegt werden. Als Ausgabe erhält man den eentsprechenden 23 bit Vektor.

3.2 Benutzung Beide Module haben Eingänge für folgende Signale:

ˆ

clk: ein 1 bit Taktsignal

ˆ

reset: ein 1 bit Signal, das das Modul in den Initialzustand setzt.

Weiterhin besitzt jedes Modul sein spezizierten Ein- und Ausgänge. Zustandsgenerator:

ˆ

clk2: ein 1 bit Taktsignal für den Adresswechsel

ˆ

lights: ein 15 bit Vektor für den momentanen Kfz-Ampelzustand

ˆ

adress: ein 8 bit Vektor für die geforderte Adresse

Register:

ˆ

stateIn1: ein 15 bit Vektor für den momentanen Kfz-Ampelzustand

ˆ

stateIn2: ein 8 bit Vektor für den momentanen Fuÿgänger-Ampelzustand

ˆ

stateOut: ein 23 bit Vektor für den gesamten Ampelzustand

Für den Gebrauch sind die oben genannten Ein- und Ausgänge entsprechend zu belegen. Das Register arbeitet auch theoretisch mit nur einem belegten Eingang, wobei der fehlende Eingang durch Nullen aufgefüllt wird.

Daniel Muhra

7

Technische Universität München

4 Entwicklerdokumentation Die Aufgabe ist gemäÿ der Spezikation in VHDL umgesetzt. Die Einzelnen Komponenten enthalten die Ein- und Ausgänge, wie sie in der Benutzerdokumentation aufgeführt sind. Die Konkatenation im Register wird durch Addition und Linksverschiebung erreicht. Dabei gilt folgendes: Multipliziert man eine Zahl mit

2x

so verschiebt sie sich (in Binärschreibweise) um x

stellen nach links.In unserem Fall verschieben wir sie um 8 Stellen, damit die unteren 8 Stellen nun frei sind. Addiert man nun eine 8 Bit Zahl dazu erhält man die Konkatenation der ersten Zahl mit der zweiten (8 bit) Zahl.

4.1 Zustandsgenerator

library IEEE; use IEEE.std_logic_1164.all; use ieee.numeric_std.all; entity zustandsGen is port( clk: in STD_LOGIC; -- 1 Mhz Takt clk2: in STD_LOGIC; -- Takt vom Taktgenerator II reset: in STD_LOGIC; -- reset in adress: out STD_LOGIC_VECTOR (7 downto 0); -- Pointer auf den nächsten Ampel-Zustand lights: inout STD_LOGIC_VECTOR (14 downto 0) -- Ampelzustand der vom Vergleicher durchgereicht wird ); end zustandsGen;

architecture zustandsGen of zustandsGen is signal i: STD_LOGIC_VECTOR(7 downto 0); -- aktuell verwendeter Pointer begin zaehler_process: process(clk,clk2,reset) begin if reset='1' then -- bei reset wird alles auf 0 gesetzt

Daniel Muhra

8

Technische Universität München

i