CLB Simulator Marcel Viehmeier 30. Oktober 2012 Version 1.0.1 Inhaltsverzeichnis 1 Einleitung 2 1.1 Hintergrund................................. 2 1.2 Technischer Hintergrund.......................... 2 1.3 Kontakt................................... 2 2 Benutzung 3 2.1 Voraussetzungen.............................. 3 2.2 Hauptfenster................................. 3 2.3 Konfigurationsfenster............................ 5 1
1 Einleitung 1.1 Hintergrund Die Experimentierplatine CLB (Configurable Logic Board) wird seit dem Wintersemester 2010/11 in der Universität Kassel eingesetzt. Durch die Möglichkeit die CLBs an allen Seiten zu verbinden, dadurch größere Funktionen erstellen zu können und die Tatsache, dass jeder Student nur ein einzelnes CLB zur Verfügung gestellt bekommen kann, entstand die logische Forderung nach einem Simulator. Dadurch könnte jeder Student allein oder auch in Gruppen größere Funktionen erstellen ohne dass eine entsprechende Anzahl an physischen CLBs nötig wäre. Gegen Ende des Wintersemesters 2011/12 stand daher eine HiWi-Stelle zur Verfügung wodurch die Realisierung des Simulators während des Sommersemesters 2012 ermöglicht wurde. 1.2 Technischer Hintergrund Der Simulator ist aus Gründen der Einfachheit und der simplen Portierbarkeit in der Programmiersprache Java geschrieben. Dadurch steht der Simulator auf den gängigen Betriebssystemen Windows, Linux und Mac OS X zur Verfügung. Für die Simulation der einzelnen CLBs wird eine selbstgeschriebene einfache Bibliothek zur Simulation digitaler Schaltungen genutzt, welche für dieses Projekt entstand. Die Simulation basiert auf der Idee des so genannten Critical Event Scheduling-Algorithmus, welcher vorsieht, nur Komponenten einer digitalen Schaltung neu zu simulieren wenn sich deren Eingangswerte geändert haben, was enorm Rechenzeit sparen kann. Erweitert wurde dieser Algorithmus um eine Behandlung asynchroner Endlosschleifen, welche durch die Möglichkeit der Rückkopplung von F1 und F2 auftreten können. Die Oberfläche zur Benutzung und Steuerung basiert auf der GUI-Bibliothek Swing, welche Bestandteil von Java ist und den Vorteil hat, dass keine weiteren Bibliotheken Dritter mitgeliefert werden müssen. 1.3 Kontakt Sollten Sie Anregungen haben oder ist ihnen ein Fehler aufgefallen, so können Sie mir eine E-Mail an m.viehmeier@gmail.com schicken. 2
2 Benutzung 2.1 Voraussetzungen Voraussetzung zur Nutzung des Simulators ist eine Installation des Java Runtime Environments, kurz JRE, ab der Version 1.6. Sollten sie keine JRE installiert haben, können sie diese unter http://www.java. com/de/download/manual.jsp für alle oben genannten Betriebssysteme herunterladen und installieren. Für Linux besteht die Möglichkeit die Alternative OpenJDK zu nutzen und unter Mac OS X ist in der Regel keine Installation nötig, da eine JRE schon mitgeliefert wird. Zum Starten doppelklicken Sie auf die clb.jar oder führen sie das Programm in der Eingabeaufforderung/Terminal mit java -jar clb.jar aus. 2.2 Hauptfenster Das Hauptfenster besteht aus einer Menüleiste, einem bei Start 10 x 10 Felder umfassenden Gitter und einer Seitenleiste welche weitere Optionsmöglichkeiten zur Verfügung stellt. Abbildung 1: Das Hauptfenster mit einem CLB 3
Zu sehen sind: 1: Die Menüleiste mit den Menüs Datei, Bearbeiten, Simulation und Hilfe - Datei: Enthält folgende Unterpunkte - Neu: Öffnet einen Dialog zum Erstellen eines neuen Gitters - Öffnen: Lade ein zuvor gespeichertes Gitter(.mclb) oder ein einzelnes CLB in ein neues Gitter(.clb) - Speichern: Speichere das bestehende Gitter in eine Datei(.mclb) - Beenden: Beende den CLB Simulator - Bearbeiten: Enthält folgende Unterpunkte - Neu: Platziere ein neues CLB im ausgewählten Feld, überschreibt ein eventuell schon bestehendes CLB im ausgewählten Feld - Laden: Lade eine gespeicherte Konfiguration eines CLBs (.clb) in das ausgewählte CLB - Speichern: Speichere die Konfiguration des ausgewählten CLBs in eine Datei (.clb) - Kopieren: Kopiere alle ausgewählten CLBs - Einfügen: Füge die zuvor kopierten CLBs in das markierte Feld und alle weiteren Felder relativ zu den Feldern während des Kopierens - Entfernen: Entfernt das ausgewählte CLB - Konfigurieren: Öffnet das Konfigurationsfenster für das ausgewählte CLB - Gitter ändern: Fenster zum Ändern der Größe des Gitters - Simulation: Enthält folgende Unterpunkte - Pause: Pausiert die Simulation, zum Fortsetzen nochmals betätigen - Hilfe: Enthält folgende Unterpunkte - Hilfe: Verweist auf diese Datei - Über...: Öffnet einen Infodialog 2: Gitter zum Platzieren von CLBs. Die erste Zelle ist mit einem CLB belegt, ausgewählt und zeigt die LEDs des CLB. Ein Klick auf eine der roten LEDs bewirkt bei einem ausgewählten CLB eine Eingabe des zugehörigen DIP-Schalters, klickt man also auf die LED von A kann man dadurch den DIP-Schalter umlegen ohne das Konfigurationsfenster öffnen zu müssen. 3: Zeigt und Ändert den Namen des ausgewählten CLBs 4: Menü zum Auswählen für welche CLBs die Eingaben der LED-Schalter gelten sollen. Zur Auswahl stehen Ausgewähltes CLB, Markierte CLBs und Alle CLBs. Bei Option 2 und 3 werden die LED-Schalter auf Aus gesetzt, sobald bei einem der CLBs der entsprechende LED-Schalter auf Aus gesetzt ist. 5: Mit diesen Schaltern kann man die Sichtbarkeit einzelner LEDs des ausgewählten CLBs ein- und ausschalten um die Übersicht größerer Verbunde zu verbessern Das Bearbeiten-Menü lässt sich auch mit einem Rechtsklick auf eine Zelle im Gitter als Popup-Menü öffnen, was im Allgemeinen für flüssigeres Arbeiten sorgt. Weiterhin kann man die Tastatur-Shortcuts STRG-A, STRG-D oder ENTF, STRG-C und STRG-V zum Markieren aller CLBs, Löschen des ausgewählten CLBs, Kopieren der ausgewählten CLBs und Einfügen der kopierten CLBs nutzen. 4
2.3 Konfigurationsfenster Die Anordnung der Elemente im Konfigurationsfenster ist der Anordnung am echten CLB weitestgehend nachempfunden, ebenso die Bezeichnungen an den einzelnen Komponenten. Abbildung 2: Das Konfigurationsfenster eines CLBs 1: Die Jumper-Matrizen für die Funktionen F1 und F2 2: Die DIP-Schalter zum Ein- und Ausstellen der Variablen A,B,C und D 3: Die Jumper zum Einstellen der Synchronizität der Funktionen F1 und F2. Es werden immer beide Jumper für eine der Funktionen gesetzt, da es keine sinnvolle Anwendung gibt bei der die Synchronizität von bspw. F1 und F1-Nicht unterschiedlich behandelt werden müsste 4: Die Jumper zum Einstellen der Rückkopplung von F1 und F2 5: Die Jumper-Matrizen für Funktionen X und Y 6: Der Jumper zum Einstellen des verwendeten Taktgebers 7: Der manuelle Taktgeber 8: Der Jumper zum Einstellen der Art des Taktgebers 9: Die Jumper zum Konfigurieren der Ein- und Ausgänge 5