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
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.