1. Digitale Elektronik
1.1 Grundlagen der Digitaltechnik
Noch nicht verfügbar.
1.1.5 Finite State Machine (FSM)
Eine Finite State Machine (FSM) beschreibt ein System, das sich in einem von endlich (finite) vielen Zuständen befindet. Ein Zustandsübergang wird durch Eingaben gesteuert. Eine FSM besteht aus folgenden Komponenten:
- Zustände (States) – Die möglichen Zustände des Systems
- Anfangszustand (Initial State) – Zustand nach dem Reset
- Eingaben (Inputs) – Signale, die das System empfängt
- Ausgaben (Outputs) – Signale, die das System erzeugt
- Übergänge (Transitions) – Regeln für den Wechsel zwischen Zuständen
- Übergangsfunktion – Bildet (Zustand, Eingabe) → nächster Zustand ab
Moore- vs. Mealy-Maschine
| Merkmal | Moore | Mealy |
|---|---|---|
| Ausgabe hängt ab von | nur aktuellem Zustand | Zustand und Eingabe |
| Ausgabe ändert sich | nur bei Zustandswechsel | sofort bei Eingabeänderung |
| Zustandsdiagramm | Ausgabe steht im Zustand | Ausgabe steht an der Transition |
| Anzahl Zustände | tendenziell mehr | tendenziell weniger |
| Reaktionszeit | um einen Takt verzögert | reagiert sofort |
| Typischer Einsatz | glitch-freie Ausgabe wichtig | schnelle Reaktion nötig |
Im Zustandsdiagramm enthält bei einer Moore-Maschine der Zustandskreis Zustandsname / Ausgabe, die Transitionen sind nur mit der Eingabe beschriftet. Bei Mealy enthält der Zustandskreis nur den Namen, die Transitionen sind mit Eingabe / Ausgabe beschriftet.
Beispiel: Flankendetektor
Ein Flankendetektor erkennt eine steigende Flanke und gibt einen kurzen Puls aus. Als Mealy-Maschine genügen 2 Zustände (Ausgabe direkt an der Flanke). Als Moore-Maschine braucht man 3 Zustände, da die Ausgabe einen Takt verzögert ist.
Beispiel: Ampelsteuerung
Eine Ampel mit den Zuständen "Rot", "Gelb", "Grün" ist eine Moore-Maschine – die Ausgabe (Lichtsignal) hängt nur vom aktuellen Zustand ab. Die Übergänge werden durch Timer oder Schaltbefehle gesteuert.
FSM in VHDL
In VHDL wird eine FSM mit einem Zustandstyp (type state_type is (...)) und einem oder mehreren Prozessen modelliert. Beide Varianten verwenden einen getakteten Prozess für den Zustandsspeicher (current_state <= next_state bei steigender Taktflanke).
Der Unterschied liegt im Ausgabeprozess:
Moore – Sensitivity-List enthält nur current_state:
output_proc: process(current_state)
begin
case current_state is
when S_RED => light <= "100";
when S_YELLOW => light <= "010";
when S_GREEN => light <= "001";
end case;
end process;
Mealy – Sensitivity-List enthält current_state und die Eingangssignale:
output_proc: process(current_state, input_signal)
begin
case current_state is
when S_IDLE =>
if input_signal = '1' then
output <= '1';
else
output <= '0';
end if;
when S_ACTIVE =>
output <= '0';
end case;
end process;
| Moore | Mealy | |
|---|---|---|
| Sensitivity-List | nur current_state |
current_state + Eingänge |
| Ausgabe-Zuordnung | nur case state |
case state mit if input |
Prozessmodelle
In der Praxis wird eine FSM in VHDL auf unterschiedlich viele Prozesse aufgeteilt:
- 1-Prozess-Modell: Zustandsspeicher, Übergänge und Ausgabe in einem einzigen getakteten Prozess. Kompakt, aber bei größeren FSMs unübersichtlich.
- 2-Prozess-Modell: Prozess 1 (getaktet) speichert den Zustand (
current_state <= next_state). Prozess 2 (kombinatorisch) berechnetnext_stateund die Ausgabe gemeinsam. Guter Kompromiss zwischen Übersichtlichkeit und Kompaktheit. - 3-Prozess-Modell: Prozess 1 (getaktet) speichert den Zustand. Prozess 2 (kombinatorisch) berechnet nur
next_state. Prozess 3 (kombinatorisch) berechnet nur die Ausgabe. Hier sieht man sofort an der Sensitivity-List von Prozess 3, ob es sich um eine Moore- oder Mealy-Maschine handelt.
Beispiel FSM Reaction Timer
Folgende fsm eines einfachen Reaktionszeitmessers soll in C implementiert werden:

Der Code zum Beispiel findet sich hier:
1.2 Aufbau von Digitalrechnern
1.2.1 Begriffe und Abkürzungen
| Abkürzung | Bedeutung |
|---|---|
| CPU | Central Processing Unit |
| ADC | Analog Digital Converter |
| I/O | In/Out |
| RAM | Random Access Memory |
| ROM | Read Only Memory |
| RISC | Reduced Instruction Set Computer |
Datenbus
Ein Datenbus besteht aus einer oder mehreren Daten-Leitungen, über welche Informationen zwischen verschiedenen Komponenten übertragen werden. Ein Datenbus hat eine bestimmte Breite (z.B. 8bit, 16bit, ...). Beim AVR ist der Datenbus 8bit breit.
Adressbus
Der Adressbus besteht aus einer oder mehreren Adress-Leitungen, über welche einzelne Speicheradressen (= Speicherort von Daten und/oder Befehlen) angesprochen werden können. Somit sind 2^n verschiedene Speicheradressen möglich wobei n die Anzahl der Adress-Leitungen ist. Zum Beispiel können mit einem 16bit-Datenbus 65536 verschiedene Adressen angesprochen werden. Hinter einer Adresse können sich wiederum Daten in unterschiedlicher Breite befinden (8bit, 64bit, ...).
Speicher
Speicher wird zum Speichern von Daten und Programmcode verwendet. Grundsätzlich wird unterschieden zwischen flüchtigen (engl. volatile) und nicht-flüchtigen (eng. non-volatile) Speicher. Flüchtige Speicher verlieren ihren Speicherinhalt, sobald die Versorgungsspannung entfernt wird (Beispiel Hauptspeicher im Computer). Nicht-flüchtiger Speicher behält hingegen die Daten auch wenn keine Versorgungsspannung anliegt (Beispiel Festplatte im Computer).
1.2.2 Grundarchitekturen
Es wird hauptsächlich zwischen zwei Grundarchitekturen unterschieden:
Van-Neumann Architektur
Diese Architektur, benannt nach dem Mathematiker John von Neumann, hat einen einzigen Speicher, der sowohl Daten als auch Programmcode speichert. Der Prozessor (CPU) lädt Befehle und Daten aus demselben Speicher. Dies führt zu einer vereinfachten Implementierug, jedoch auch zu einem Flaschenhals: Befehle und Daten müssen den gleichen Bus benutzen um zur CPU zu gelangen.

Harvard-Architektur
Diese Architektur trennt den Speicher in zwei getrennte Bereich, einen für Daten und einen für Befehle. Dadurch können Daten und Befehle gleichzeitig abgerufen werden - somit erhöht sich die Verarbeitungsgeschwindigkeit. Varianten dieser Architektur finden sich häufig in modernen Mikrocontrollern und digitalen Signalprozessoren, so z.B. auch beim AVR.

1.2.3 Aufbau der CPU
Die CPU als "Gehirn" besteht im Wesentlichen aus zwei Teilen:
Steuerwerk (Control Unit, CU)
Die Control Unit steuert die Abläufe in der CPU. Sie liest Befehle aus dem Speicher, dekodiert diese und steuert die Ausführung der Befehle. Die CU ist somit für die Koordination der einzelnen Komponenten der CPU verantwortlich.
Rechenwerk (Arithmetik Logic Unit, ALU)
Die ALU führt die eigentlichen Rechenoperationen durch, z.B. mathematische Operationen wie Addition, Multiplikation, etc. sowie logische Operationen wie AND, OR, NOT, etc.
1.3 Aufbau von Mikrocontrollern
Ein Mikrocontroller ist ein integrierter Schaltkreis, der einen Prozessor (CPU), Speicher und Peripherie auf einem Chip vereint. Mikrocontroller sind speziell für eingebettete (engl. embedded) Anwendungen konzipiert und werden in vielen Bereichen eingesetzt, z.B. in Haushaltsgeräten, Fahrzeugen, Industrieanlagen, Medizintechnik, etc.
1.3.1 Aufbau von AVR Mikrocontrollern (ATmega16)
Der ATmega16 ist ein 8-bit Mikrocontroller der Firma Microchip (ehemals Atmel). Er verfügt über folgende Komponenten:
- CPU - 8-bit RISC Architektur, 16MHz Taktfrequenz
- Speicher - 16KB Flash, 1KB EEPROM, 1KB SRAM
- Peripherie - 32 I/O Pins, 8-Kanal 10-bit ADC, 3 Timer, 1 Watchdog Timer, SPI, I2C, USART, etc.

1.4 Taktung eines Mikrocontrollers
1.4.1 Quarzoszillator
1.4.2 Interner RC-Oszillator
1.4.3 Externer Taktgeber
1.4.4 Taktteiler (Prescaler)
1.5 PLL / DDS
PLLs (Phasenregelkreise) und DDS (Direct Digital Synthesis) zählen zu den wichtigsten Verfahren zur Frequenzsynthese in der digitalen Signalverarbeitung und Kommunikationstechnik. Beide Technologien nutzen eine Referenzfrequenz – meist einen Quarz – um daraus präzise einstellbare Ausgangsfrequenzen zu erzeugen. Dabei unterscheiden sie sich jedoch grundlegend in Aufbau, Funktionsweise und typischen Einsatzbereichen.
1.5.1 Phasenregelung (PLL - Phase Locked Loop)
1.5.2 Direkte Digital-Analog-Wandlung (DDS - Direct Digital Synthesis)
Siehe oben (1.5.1).
1.5.3 Vergleich PLL und DDS
| Merkmal | PLL (Phasenregelkreis) | DDS (Digitale Synthese) |
|---|---|---|
| Wie funktioniert es? | Vergleicht Phasen und regelt nach | Zählt digital, Umwandlung in Signal |
| Taktquelle | Nutzt Quarz als Referenz | Nutzt Quarz als Taktgeber |
| Frequenzwahl | Vielfache oder Teilungen möglich | Sehr feine Einstellung möglich |
| Reaktionszeit | Langsamer bei Änderung | Sehr schnell umschaltbar |
| Signalqualität | Sehr stabil und wenig Störungen | Etwas mehr Störungen (Jitter) |
| Typische Anwendung | Takt für Mikrocontroller (z.B. STM32) | Sinusgenerator, Funktionsgenerator |