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:

  1. Zustände (States) – Die möglichen Zustände des Systems
  2. Anfangszustand (Initial State) – Zustand nach dem Reset
  3. Eingaben (Inputs) – Signale, die das System empfängt
  4. Ausgaben (Outputs) – Signale, die das System erzeugt
  5. Übergänge (Transitions) – Regeln für den Wechsel zwischen Zuständen
  6. Ü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) berechnet next_state und 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:

FSM Reaction Timer

Der Code zum Beispiel findet sich hier:

reaction_timer.c

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.

Van-Neumann

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.

Harvard

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:

  1. CPU - 8-bit RISC Architektur, 16MHz Taktfrequenz
  2. Speicher - 16KB Flash, 1KB EEPROM, 1KB SRAM
  3. Peripherie - 32 I/O Pins, 8-Kanal 10-bit ADC, 3 Timer, 1 Watchdog Timer, SPI, I2C, USART, etc.

ATmega16

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)

PPT-Folien

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