Spezifikation zum VHDL Projekt Nr. 18 der Gruppe 11

Projektbetreuer Student C



Aufgabenstellung:

Gesamtaufgabe:
Neun Gruppen sollen eine rechnergestützte Lampensteuerung für 128 * 128 Lampen entwickeln. Unsere Gruppe ist hierbei für den Adressdekoder und die Lampenansteuerung verantwortlich.

Teilaufgabe der Gruppe:
Es ist eine Schaltung zu entwickeln mit der die Adressierung sowie die Steuerung der Lampen realisiert wird. Dabei ist auf die Absprache mit den anderen Gruppen und eine präzise Festlegung der Schnittstellen zu achten.

Realisierungsform:
Die Schaltung wird in VHDL realisiert und mit Hilfe des Programms Active-VHDLvon Aldec entworfen und getestet.

Schnittstellenbeschreibung:
Es wird eine 16-bit Schnittstelle von außen benötigt, welche die Codierung der Lampe enthält. Weiterhin wird noch benötigt ein Signal, welches alle Lampen an- bzw. ausschaltet.

Die Schnittstellen sehen ergo wie folgt aus:

entity Adressierung is

port(
bulbin:min bit_vector (7 downto 0);
LiAn_Lampe: in bit;
LiAus_Lampe: in bit;

bulb: out bit);

end Adressierung

BulbIn (Eingehendes Signal):
8-bit Signal welches die Adresse der ein/auszuschaltenden Lampe enthält

LiAn_Lampe (Eingehendes Signal):
1-bit Signal welches wenn auf 1 gesetzt die angeschlossene Lampe unabhängig von dem von der Strangsteuerung übergebenen Datum einschaltet

LiAus_Lampe (Eingehendes Signal):
1-bit Signal welches wenn auf 1 gesetzt die angeschlossene Lampe unabhängig von dem von der Strangsteuerung übergebenen Datum ausschaltet

bulb (ausgehendes Signal):
1-bit Signal welches die an die Steuerung angeschlossene Lampe ein- oder ausschaltet



Die Architektur sieht somit wie folgt aus:


architecture Controller of Adressierung is

component: seriell-parallel-wandler

-- hier kommt der Quellcode für den SP-Wandler von Gruppe 9 rein --

end component;


component freigabe

port (frin: in bit;
bulbin_2: in bit_vector (7 downto 0);
bulb: out bit;

end component;


component dekoder

port (decin: in bit_vector (7 downto 0);
decout: out bit);

end component


component t_flipflop

port (ffin: in bit;
ffout: out bit);

end component


signal

bulbsig, decinsig : bit_vector(7 downto 0);
bulbsig_2, ffsig, decoutsig, bulbsig_1, LiAn_Lampe, LiAus_Lampe : bit;

end Controller




Alternativ wäre auch eine Beschreibung der Architektur nach Verhalten der einzelnen Bausteine möglich, hierbei müsste man für jeden einzelnen Vorgang anstelle der Bausteine die durchzuführenden Prozesse definieren.

Die Schaltung in ihrer Gesamtheit sieht dann folgendermaßen aus:



Der entsprechende Automat:



Hierbei gilt:

s0: Startzustand
s1: Prüfe ob LiAn_Lampe oder LiAus_Lampe auf 1 gesetzt sind und gehe zu s2 über, falls LiAn_Lampe und LiAus_Lampe beide auf 0 gesetzt, gehe zu s3 über.
s2: Schalte die Lampe je nachdem ob LiAn_Lampe oder LiAus_Lampe auf 1 gesetzt ist an oder aus und gehe anschließend zu s0 zurück.
s3: Prüfe ob die übermittelte Adresse (Bit 7 bis 1 von bulbsig) der eingespeicherten in der Lampensteuerung entspricht. Wenn ja dann gehe über zu s4, wenn nein dann gehe über zu s0
s4: Gib das Signal frei und schalte die Lampe an, anschließend gehe über zu s0

Den Automaten könnte man auch mit einem sechsten Zustand s5 konstruieren der das eigentlichen Einschalten der Lampe repräsentiert, in diesem Fall wäre s4 lediglich die Freischaltung des Signal. Da dies jedoch einem Zustand, nämlich „Adresse ist korrekt, schalte Lampe an“ entspricht kann man sich diesen sparen.

Das einzige derzeit noch zu lösende Problem besteht darin, was zu tun ist falls beide Bits des lightOnOff Signals 1 sind - für diesen Fall ist derzeit noch kein Zustand oder Verhalten vorgesehen, dieses wird in Absprache mit den anderen Gruppen noch festgelegt so dass es zu keinem Fehler führen kann, sollte dieser Fall dann tatsächlich eintreten.





Spezifikation aktualisiert am: 13.06.2003