Interface

Die Gruppe Interface besteht aus den 3 Teilgruppen 7-Segment-Anzeige, Pseudo-Random-Number-Generator und Gamecontroller.

7-Sement-Anzeige

Die Untergruppe Anzeige ist für den Entwurf einer Spielanzeige zuständig. Diese Anzeige soll den temporären und endgültigen Spielstand von bis zu zwei Spielern wiedergeben können. Zur Realisierung dieser Anzeige hat sich die Gruppe auf eine Darstellung mit 7-Segmentanzeigen geeinigt. Es werden insgesamt vier 7-Segmentanzeigen verbaut. Dies ermöglicht eine gleichzeitige Wiedergabe des Punktestandes im Multiplayermodus und eine Darstellung der Punktewertung im zweistelligen Bereich. Die Signale für die Anzeigen wird von einem STM32-Mikrocontroller via GPIO übertragen.

7 Segmentanzeige
7 Segmentanzeige Schaltbild

 

Pseudo-Random-Number Generator (PRNG)

Der Pseudo-Random-Number Generator kurz PRNG dient bei der Spielekonsole dazu, Zufallszahlen zu erzeugen, welche dann dazu zuständig sind Ingame neue Situationen zu erschaffen. Beispielsweise im Spiel Tetris neue zufällige Steine zu erzeugen. Oder im Spiel Snake das Futter für die Schlange auf dem Spielfeld zu bestimmen. Dieser wurde mithilfe eines linear Rückgekoppelten Schieberegister umgesetzt. Welches eine Zufallsfolge von 2^n-1 Zufallszahlen erzeugt, wobei n=16 ist. somit stehen dem STM über 4Mrd. verschiedene Zahlen zu Verfügung. Problematisch war hierbei das erzeugen der Startsequenz für das linear Rückgekoppelte Shiftregister, da dieses nur eine 0-Sequenz beinhaltet und extern nicht dazu in der Lage war eine Sequenz zu bekommen. Somit wäre die ausgegebene Zufallsfolge immer die 0-Folge. Dieses Problem wurde mit Hilfe einer Initalisierungsfolge über den Data-Out Port realisiert, so dass der STM32 aus der Entertaiment Gruppe beim Start der Spielekonsole die Shiftregister mit einer Sequenz von 1 füllt. Nachdem innerhalb von 16 Zyklen das Shiftregister mit einer Startsequenz gefüllt ist, kann nun der Data-Out Port dazu genutzt werden die neuen Zufallszahlen einzulesen, nach 16 Takten steht eine 16bit lange Zufallszahl im STM bereit und wird dort in einem Vektor zu weiteren Verarbeitung gespeichert.

Pseudo-Random-Number-Generator fertige Platine
Schaltplan PRNG

 

Gamecontroller

Für die Spieleingabe sollen zwei Controller entworfen werden. Statt einen eigenen Mikrocontroller zu verwenden, wird das Problem mit analoger Elektronik gelöst.
Als genaue Aufgabe wurde festgelegt: die Eingangssignale von bis zu vier Controllern mit jeweils 6 Knöpfen (Rechts, Links, Oben, Unten, A und B) sollen über eine 5-Bit Leitung an die CPU Gruppe übermittelt werden. Damit sind die Anforderungen der ursprünglich geplanten Spiele Pong, Snake und Tetris sowie die Navigation in einem Menü abgedeckt.
Beschreibung Blockschaltbild: Der Ausgang der Controller geht an 5 4×1 Multiplexer, die von der CPU Gruppe mit einem 2-Bit Signal angesteuert werden. So können die Zustände der einzelnen Controller abwechselnd abgefragt werden. Alle Controller funktionieren auf die gleiche Weise.
Um zu verhindern, dass ein Knopfdruck mehrfach eingelesen wird, wird das Signal der einzelnen Taster zunächst mit einem Kondensator entprellt.
Jedem Zustand des Steuerkreuzes wird über eine Logikschaltung eine 3-Bit Zahl zugeordnet, die mit D-Flip-Flops zwischengespeichert wird. Die Flip-Flops sind so beschaltet, dass man den Eingang sperren und den aktuellen Ausgang halten kann, sie haben also praktisch einen „Enable-Port“. Nach kurzer Verzögerung durch eine Delay-Schaltung nutzt man diese Funktion, damit eine weitere Eingabe nicht registriert wird während ein Knopf gedrückt ist. Der Ausgang liefert das Signal des zuerst betätigten Tasters. Das Signal des A- und B-Tasters wird je separat als 1- Bit Signal übermittelt. Die Delay-Schaltung wird mit einem Kondensator und einem OPV als Komparator realisiert.

 

Gamecontroller Platine Top