Staatsapparat
Verfasst: So 26. Mai 2013, 09:44
So langsam nähert sich die Phase der trivialen Beispiele hier ihrem Ende. Bevor ich zum nächsten Beispiel komme, möchte ich aber noch paar konzeptionelle Dinge sowie etwas Verilog Syntax darstellen.
Wenn man sich mit Schaltsystemen beschäftigt wird einem früher oder später der neudeutsche Begriff "state machine" unterkommen. Die Übersetzung "Staatsapparat" ist vielleicht für den gelernten DDR-Bürger naheliegend, aber trotzdem vollkommen daneben. Tatsächlich wird "state machine" korrekt als Zustandsautomat übersetzt. In den letzten beiden Beispielen wurde nicht ganz ohne Grund das Beispiel "Nachttischlame" aufgegriffen und modelliert. So eine Nachttischlampe ist tatsächlich der einfachste denkbare Zustandsautomat. Es gibt INPUT: was in dem Fall der Taster ist, es gibt in dem Fall zwei ZUSTÄNDE: eingeschaltet oder ausgeschaltet, und es gibt OUTPUT: die Glühbirne bzw. LED, wird in dem Fall direkt aus dem Zustand bedient. Gemäß wissenschaftlicher Definition handelt es sich hier um einen Medwedev-Automaten. Aber wen interressiert schon Wissenschaft (hust)
In Elektronikerkreisen wird so ein Ding als Flip-Flop bezeichnet, was ins Deutsche zurückübersetzt wiederum "Badelatsch" bedeutet
Das Konzept des Zustandsautomaten wird bei den folgenden Beispielen immer mal wieder ein wenig zum Vorschein kommen. Spätestens dann wenn es zum Modellieren einer CPU kommt geht ohne dieses Konzept bzw. dessen effektive Anwendung garnichts mehr.
Zurück zur Sprache Verilog. Wenn dort eine Variable als wire oder reg definiert wird, erinnert das sehr an eine herkömmliche Programmiersprache:Der Punkt an dem Vorsicht geboten ist, ist hier der Wertebereich! Man kann in A oder B nicht etwa 3,14159 speichern, nicht mal eine Zahl wie 1024 geht da rein. Solche "Register" und "Drähte" können immer nur 0 oder 1, also nur ein Bitburger aufnehmen bzw. weiterleiten. Ich zeige jetzt einfach mal ein paar Code-Schnipsel, wie man in Verilog aus einfachen Signalen komplexere Daten zaubern kann:
Hier wird ein 8 Bit breites Register und ein 16 Bit breiter Bus definiert. Ziemlich suggestiv, oder? Und dann wird noch mal an sinnfreien Beispielen wiederholt, wie man ein wire bzw. ein reg mit Inhalten füttern kann. Beim wire ist es immer die "dauerhafte" assign Zuweisung. Register müssen dagegen in ereignis-getriggerten always Blöcken mit Zuweisungen versorgt werden.
Die Konstante 16'h07FF ist Beispiel für ein weiteres oft verwendetes Ding in Verilog: Die Dezimalzahl vor dem ' gibt die Anzahl der Bits, also die "Datenbreite" an. Nach dem ' folgt die eigentliche Konstante, eingeleitet durch eine Kennzeichnung, um welches Zahlensystem es sich bei der folgenden Angabe handelt. Es gibt b,o,d,h.
Hausaufgabe: findet bitte heraus, welche Bedeutung die Buchstaben b,o,d sowie h in diesem Zusammenhang haben. *warnurspass*
Wenn man sich mit Schaltsystemen beschäftigt wird einem früher oder später der neudeutsche Begriff "state machine" unterkommen. Die Übersetzung "Staatsapparat" ist vielleicht für den gelernten DDR-Bürger naheliegend, aber trotzdem vollkommen daneben. Tatsächlich wird "state machine" korrekt als Zustandsautomat übersetzt. In den letzten beiden Beispielen wurde nicht ganz ohne Grund das Beispiel "Nachttischlame" aufgegriffen und modelliert. So eine Nachttischlampe ist tatsächlich der einfachste denkbare Zustandsautomat. Es gibt INPUT: was in dem Fall der Taster ist, es gibt in dem Fall zwei ZUSTÄNDE: eingeschaltet oder ausgeschaltet, und es gibt OUTPUT: die Glühbirne bzw. LED, wird in dem Fall direkt aus dem Zustand bedient. Gemäß wissenschaftlicher Definition handelt es sich hier um einen Medwedev-Automaten. Aber wen interressiert schon Wissenschaft (hust)


Das Konzept des Zustandsautomaten wird bei den folgenden Beispielen immer mal wieder ein wenig zum Vorschein kommen. Spätestens dann wenn es zum Modellieren einer CPU kommt geht ohne dieses Konzept bzw. dessen effektive Anwendung garnichts mehr.
Zurück zur Sprache Verilog. Wenn dort eine Variable als wire oder reg definiert wird, erinnert das sehr an eine herkömmliche Programmiersprache:
Code: Alles auswählen
reg A;
wire B;
Code: Alles auswählen
reg [7:0] Akkumulator;
wire [15:0] Adressbus;
...
assign Adressbus = 16'h07FF; // nicht sehr sinnvoll, aber syntaktisch korrekt
always @ (posedge clk) Akkumulator <= Akkumulator + 1;
Die Konstante 16'h07FF ist Beispiel für ein weiteres oft verwendetes Ding in Verilog: Die Dezimalzahl vor dem ' gibt die Anzahl der Bits, also die "Datenbreite" an. Nach dem ' folgt die eigentliche Konstante, eingeleitet durch eine Kennzeichnung, um welches Zahlensystem es sich bei der folgenden Angabe handelt. Es gibt b,o,d,h.
Hausaufgabe: findet bitte heraus, welche Bedeutung die Buchstaben b,o,d sowie h in diesem Zusammenhang haben. *warnurspass*