# Deeds (Software)

Digital Electronics Education and Design Suite (Deeds) ist ein kostenloses Software-Paket, welches die Erstellung und Simulation von Digitalschaltungen, einschließlich Mikroprozessor, sowie Zustandsübergangsdiagrammen ermöglicht.

## Beschreibung

Deeds ist eine Lern- und Entwicklungsumgebung für digitale Elektronik einschließlich der Bereiche der Kombinatorischen Logik und Sequentiellen Logik, der Entwerfung von Zustandsübergangsdiagramme sowie der Programmierung von Mikroprozessoren. Es wird von einem Team unter Leitung von Giuliano Donzellini an der Fakultät für Ingenieurwissenschaften an der Universität Genua (Italien) entwickelt. Die Software wird an mehreren Universitäten zur Ausbildung von Ingenieuren im Bereich Informatik und Elektronik verwendet.
Die drei enthaltenen Programme gründen auf mehreren Doktorarbeiten. Das erste Tool SCD ("Simulatore di Circuiti Digitali"), wurden von Umberto Pedrotti, Alessandro Bovone, Fabio De Vincenzi und Paolo Borzone entwickelt. Das zweite Modul MSF ("Simulatore di Macchine a Stati Finiti") war die Arbeit von Fulvio Spinelli. Zuletzt wurde der dMcE ("Microcomputer Emulator") von Antonio Poliseno erschaffen.
Aus diesen drei Projekten ist die Zusammenführung und Erweiterung "Deeds" entstanden, welche diese drei Projekte enthält:
* Digital Circuit Simulator (Deeds-DcS)
* Finite State Machine Simulator (Deeds-FsM)
* Micro Computer Emulator (Deeds-McE)

## Komponenten
### Digital Circuit Simulator (Deeds-DcS)

Mit dem Digital Circuit Simulator können Digitalschaltungen erstellt und simuliert werden. Dazu stehen Logikgatter, Latches, Flipflops, Multiplexer, Dekodierer, Register, Speicher, Digital-Analog-Umsetzer, LEDs, Siebensegmentanzeigen und anderen Logik-Bausteine in verschiedenen Ausführungen zur Verfügung. Des Weiteren ist ein Mikrocomputer (DMC8 genannt) in zwei Ausführungen verfügbar, welcher sich mittels (Deeds-McE) in Assemblersprache programmieren lässt.
Simulationen können pausiert und Taktgeschwindigkeiten beliebig eingestellt werden. Zudem lassen sich erstellte Logikschaltungen zu neuen Bausteinen zusammenfassen und in anderen Projekten verwenden.
Entwurfene Schaltungen können zum einen in VHDL exportiert werden, um die grafisch dargestellte Schaltung als reinen Programmcode zu erhalten. Zum anderen können die Schaltungen auch auf aktuell 14 Field Programmable Gate Arrays simuliert werden, bevor diese in die Hardware integriert werden. Dabei können alle verfügbaren Logik-Bausteine, Zustandsdiagramme von Deed-FsM sowie mittels Deeds-McE programmierte Mikroprozessoren verwendet werden. Aufgrund dessen, benötigt der Nutzer für die Ausführung der erstellten Schaltung, keine Kenntnisse in der Hardwarebeschreibungssprache.

### Finite State Machine Simulator (Deeds-FsM)

Mittels des Finite-State-Machine-Simulators können Zustandsübergangsdiagramme für sequenzielle Schaltungen erstellt und simuliert werden. Diese dienen dazu, eine möglichst durchschaubare Visualisierung von Abläufen (in diesem Fall für Logikschaltungen) zu erstellen, und bestehen aus einer beliebigen Anzahl von drei Bausteinen-Typen ("Entscheidungen", "Zustände" und "bedingte Ausgaben"), welche in beliebiger Weise verknüpft werden können. Die Schaltungen können bis zu acht Eingänge, acht Ausgänge und sechs Zustandsvariablen enthalten.
Während der Simulation der Zustandsübergangsdiagramme, können die Eingänge umgeschaltet und der Zustand der Ausgänge mittels eines Zeitdiagrammes für jeden Takt überwacht werden.
Die erstellten Zustandsübergangsdiagramme können im Digital Circuit Simulator (Deeds-DcS) importiert und als Baustein, mit der im Deeds-FsM beschriebenen Funktion, in einer Logikschaltung integriert werden.

### Micro Computer Emulator (Deeds-McE)

Der Micro Computer Emulator simuliert zwei wählbare Mikroprozessoren, welche programmiert und im (Deeds-DcS) in Logikschaltungen integriert werden können. Verfügbar ist eine als "DMC8 Basic" und eine "DMC8 Enhanced" getaufte Variante. Beides sind 8-bit Mikroprozessoren mit RAM, ROM und einem I/O System, deren Adressen durch den Benutzer definiert werden können. Ebenso die Speichergröße des RAM und ROM können frei gewählt werden.
Die Programmiersprache ist Assembler. Der Benutzer kann dabei zwischen dem DMC8 Befehlssatz (ähnlich dem Zilog Z80) und dem D8080 Befehlssatz (ähnlich dem i8080) wählen. Der erstellte Maschinencode kann direkt ausgeführt und der Zustand des Mikrocomputers (sowie der einzelnen Komponenten) mittels eines Debugger eingesehen werden. Für die Simulation kann die Taktgeschwindigkeit manuell eingestellt und pausiert werden, wodurch jeder Schritt/Takt einzeln sichtbar ist. Des Weiteren besitzt der Codeeditor Syntax Highlighting.