73
Hardware/Software Co-Design Kapitel 2: Logiksynthese und VHDL-Einführung Mario Schölzel

Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Hardware/Software Co-Design

Kapitel 2: Logiksynthese und VHDL-Einführung

Mario Schölzel

Page 2: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Überblick

VHDL = VHSIC Hardware Description Language VHSIC = Very-High Speed Integrated Circuits Entwickelt Anfang der 1980er Jahre im Auftrag des Verteidigungsministeriums der USA Ziel:

− Technologieunabhängige Beschreibung von Hardwarebausteinen − Beschreibung auf unterschiedlichen Abstraktionsebenen (Logikeben, RT-Ebene,…) − Beschreibung aus unterschiedlichen Sichten (Verhaltenssicht, Struktursicht) − Validierung in einem Simulator

Aufbau und Verwendung:

HW-Baustein

HW-Baustein HW-Baustein HW-Baustein

HW-Bst.

HW-Bst.

HW-Bst.

HW-Bst.

HW-Bst.

HW-Bst.

HW-Bst.

Top-Level Modul

Hierarchische Organisation der Beschreibung des

Systems

Simulation Synthese

Page 3: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Sichten und Abstraktionen in VHDL

Strukturelle Beschreibung eines Bausteins ist gekennzeichnet durch: Angabe der enthaltenen Sub-Bausteine mit ihren Ein-/Ausgängen Verdrahtung der Sub-Bausteine Verhaltensorientierte Beschreibung eines Bausteins ist gekennzeichnet durch: Funktionale Beschreibung des Verhaltens mittels nebenläufiger Prozesse Dadurch Beschreibung der Änderung von Signalen in Abhängigkeit anderer Signale

Verhalten Struktur

Physisch

Schalter

Logik

Prozessor

System

Abstraktionen / Ebenen nach Gajski (Y-Chart)

Boolesche Funktionen,… Netzlisten

Addierer, Multiplizierer, Multiplexer

Addition

Page 4: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Hardware-Baustein

Ein Baustein stellt eine Komponente eines Systems dar Kapselung der Funktionen der Komponente Zugriff über Schnittstellen

Beschreibung des Verhaltens des Bausteins: HA

Baustein entity HA is port ( a : in std_logic; b : in std_logic; s : out std_logic; c : out std_logic ); end HA;

Port (Eingabe) Port (Ausgabe)

a

b

s

c behvHA

architecture behvHA of HA is begin . . . end behvHA;

Page 5: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

HA

behvHA

Verhalten eines Bausteins beschreiben

Verhaltensorientiert Funktionale Beschreibung des

Verhaltens mittels nebenläufiger Prozesse

Strukturorientiert Aufbau eines Bausteins aus

Komponenten (Sub-Bausteinen) Verdrahtung der Komponenten

a

b

s

c

XOR

AND

HA

a

b

s

c behvHA

Prozess A

Prozess B

Prozess C

Page 6: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Verdrahtung (1)

Verdrahtung von Bausteinen und Komponenten durch Signale:

Ein-/Ausgabeport eines Bausteins repräsentiert ein Signal in diesem Baustein

Deklaration weiterer Signale möglich zur Verdrahtung von Komponenten:

HA

a

b

XOR

AND

s

c

architecture behvHA of HA is signal n: std_logic; begin . . . end behvHA;

Signal a

Signal b

Signal c

Signal n

Page 7: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Verdrahtung (2)

Verwendete Komponenten müssen aufgeführt werden:

a

b

XOR

AND

s

c

Signal a

Signal b

Signal c

Signal n

architecture behvHA of HA is component XOR is port ( x : in std_logic; y : in std_logic; z : out std_logic); end component; ... signal n: std_logic; begin . . . end behvHA;

x y

z

Page 8: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Verdrahtung (3)

Verwendete Komponenten müssen verdrahtet werden:

a

b

XOR

AND

s

c

Signal a

Signal b

Signal c

Signal n

architecture behvHA of HA is component XOR is port ( x : in std_logic; y : in std_logic; z : out std_logic); end component; ... signal n: std_logic; begin XOR port map ( x => b, y => a, z => n ); . . . end behvHA;

x y

z

Signal- oder Portname aus dem umgebenden Baustein

Portnamen der verwendeten Komponente

Page 9: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

FA

Beispiel Volladdierer library ieee; use ieee.std_logic_1164.all; entity FA is port ( a : in std_logic; b : in std_logic; ci : in std_logic; s : out std_logic; co : out std_logic ); end FA;

architecture structFA of FA is component HA is port ( a : in std_logic; b : in std_logic; s : out std_logic; c : out std_logic ); end component; signal c1: std_logic; signal c2: std_logic; signal zs: std_logic; begin ha1: HA port map ( a => a, b => b, s => zs, c => c1 ); ha2: HA port map ( a => ci, b => zs, s => s, c => c2 ); co <= c1 or c2; end structFA;

zs

HA b

a

c1

s HA c2

cin

OR c

Page 10: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Simulationsergebnisse Volladdierer

Page 11: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

HA

behvHA

Verhalten eines Bausteins beschreiben

Verhaltensorientiert Funktionale Beschreibung des

Verhaltens mittels nebenläufiger Prozesse

Strukturorientiert Aufbau einer Komponente aus

Bausteinen mit Schnittstellen Verdrahtung der Bausteine

a

b

s

c

XOR

AND

HA

a

b

s

c behvHA

Prozess A

Prozess B

Prozess C

Page 12: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Beschreibung eines Bausteins

Beispiel (Verhaltensbeschreibung eines Halbaddierers):

library ieee; use ieee.std_logic_1164.all; entity HA is port ( a : in std_logic; b : in std_logic; s : out std_logic; c : out std_logic ); end HA;

architecture behvHA of HA is begin s <= a xor b; c <= a and b; end behvHA;

nebenläufige Signalzuweisung

aussagenlogische Formel

Page 13: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Prozesse

Prozesse dienen der verhaltensorientierten Beschreibung einer Architektur Prozesse sind nebenläufig in der Simulation Zwei Arten von Prozessen:

− Explizite Prozesse − Implizite Prozesse (nebenläufige Signalzuweisungen)

process [(Sensitivitätsliste)] [is] Deklarationsteil begin Ausführungsteil end [process] [Marke];

HA

a

b

s

c behvHA

Prozess A

Prozess B

Prozess C

target <= value_expr [after time_expr]

a

Folge von sequentiell ausgeführten Anweisungen

Deklaration von Variablen und Signalen

Kommaseparierte Folge von Signalen Signal Ausdruck

Expliziter Prozess

Impliziter Prozess

Page 14: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Explizite vs. Implizite Prozesse

library ieee; use ieee.std_logic_1164.all; entity FA is port ( a : in std_logic; b : in std_logic; ci : in std_logic; s : out std_logic; co : out std_logic ); end FA;

architecture behavFA of FA is begin fullAdder: process (a, b, ci) begin s <= a XOR b XOR ci; co <= (a AND b) OR (ci AND (a XOR b)); end process; end behavFA;

architecture behavFA of FA is begin s <= a XOR b XOR ci; co <= (a AND b) OR (ci AND (a XOR b)); end behavFA;

1 expliziter Prozess

2 implizite (nebenläufige) Prozesse

Anweisungsfolge: Abarbeitung in der angegebenen Reihenfolge

Nebenläufige Signalzuweisungen: Abarbeitungsreihenfolge nicht festgelegt

Page 15: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Implizite Prozesse

Impliziter Prozess kann leicht in expliziten Prozess transformiert werden

Impliziter Prozess:

Zugehöriger expliziter Prozess:

Dabei enthält signalliste alle Signale aus value_expr

Beispiel:

process (signalliste) is begin target <= value_expr end process;

target <= value_expr

s <= a XOR b XOR ci; process (a,b,ci) is begin s <= a XOR b XOR ci end process;

Page 16: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Signale vs. Variablen (1)

Ein Signal dient der Kommunikation zwischen Prozessen/Bausteinen

Deklaration eines Signals:

Deklaration in Architekturen, Prozessen, Funktionen/Prozeduren

Variablen speichern Werte innerhalb eines Prozesses

Deklaration einer Variablen

Deklaration nur in Prozessen, Funktionen/Prozeduren

signal sName {,sName}: Datentyp; variable vName {,vName}: Datentyp;

architecture behavFA of FA is [Deklarationsteil_Architektur] begin process (a, b, ci) [Deklarationsteil_Prozess] begin s <= a XOR b XOR ci; co <= (a AND b) OR (ci AND (a XOR b)); end process; end behavFA;

Deklaration von Signalen

Deklaration von Signalen und Variablen

Page 17: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Signale vs. Variablen (2)

Signalzuweisung:

Ausdruck muss vom gleichen Typ wie das Signal sein

Verhalten: − Zuweisung wird gepuffert und erst

"später" ausgeführt; wichtig zur Simulation parallelen Verhaltens

Beispiel :

Variablenzuweisung:

Ausdruck muss gleichen Typ wie die Variable sein

Verhalten: − Zuweisung wird sofort ausgeführt

Beispiel:

Signal_Name <= Ausdruck

SIGNAL a, b, c: bit; a <= b; c <= a;

Var_Name := Ausdruck

VARIABLE a, b, c: bit; a := b; c := a;

Page 18: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Datentypen

Datentypen definieren eine Menge von Werten und zulässige Operationen auf diesen Werten. Unterscheidung in: Skalare Datentypen

− Integer-Datentypen − Real-Datentypen − Physikalische Datentypen (enthalten Dimensionsangaben) − Aufzählungstypen

Zusammengesetzte Datentypen − Felder − Verbunde

VHDL ist eine streng getypte Sprache Zuweisung von a an b nur möglich, wenn a hat gleichen Typ wie b Typ von a ist Subtyp von b Deklaration von Datentypen im Deklarationsteil eines Packages Deklarationsteil einer Architektur

Page 19: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Integer-Datentyp

Integer-Datentypen haben einen zusammenhängenden Wertebereich ganzer Zahlen

Formal existiert ein anonymer Datentyp universal_integer, der alle ganzen Zahlen enthält

Deklaration nicht anonymer Integer-Datentypen

Deklarierte Operationen: − Relationale Operationen: =, /=, <, <=, >, >= − Arithmetische Operationen: +, -, *, / (ganzzahlige Division) − Potenzierung: ** − Absolutwert: abs − Modulo: mod

type Bezeichner is range Integer_Literal to Integer_Literal; type Bezeichner is range Integer_Literal downto Integer_Literal;

Page 20: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Aufzählungstypen

Deklaration

Reihenfolge der Aufzählung definiert totale Ordnung auf den Elementen

Beispiel: Deklaration der Zustände eines endlichen Automaten:

type Bezeichner is (Element {, Element});

type state is (idle, start, stop);

Page 21: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Attribute auf skalaren Datentypen

Attribute auf skalaren Datentypen T: T'base: Basisdatentyp von T T'high: maximaler Wert T'low: minimaler Wert T'left: Wert der linken Bereichsgrenze T'right: Wert der rechten Bereichsgrenze T'ascending: ist true, gdw. Wertebereich aufsteigend sortiert

ist

Page 22: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Vordefinierte Datentypen (1)

Im package standard deklarierte skalare Datentypen − type boolean is (false, true); − type bit is ('0', '1'); − type character is (nul, soh, …, ' ', '!', '"', …, 'a', 'b','c',…) − type integer is range -2147483647 to 2147483647; − type real is range -1.0E308 to 1.0E308; − type std_ulogic is ('U','X','0','1','Z','W','L','H','-') − subtype std_logic is resolved std_ulogic;

Im package standard deklarierte Subtypen und Felder

− subtype natural is integer range 0 to integer'high; − subtype positive is integer range 1 to integer'high;

Page 23: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Beschränkte Felder

Bei der Deklaration werden Bereichsgrenzen festgelegt Deklaration:

Beispiel:

Zugriff auf Feldelemente:

type Bezeichner is array (Wertebereich {,Wertebereich}) of Datentyp_name;

type byte is array (7 downto 0) of bit; type wort is array (1 to 4) of byte; type brett is array (1 to 9, 1 to 9) of integer; signal a: byte;

a <= ('0', '1', '0', '1', '1', '1', '0', '0'); a <= (7 downto 5 => '1', others => '0'); a(7) <= '0'; a <= (3 => '1', 1 downto 0 => '1', 2 => '0');

Page 24: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Unbeschränkte Felder

Bereichsgrenzen werden erst bei der Instanziierung einer Variablen/eines Signals festgelegt

Deklaration:

Beispiele (aus den packages standard und std_logic_1164):

Instanziierung

Zugriff auf Feldelemente wie bisher

type Bezeichner is array (Disk_Typ range <> {,Disk_Typ <>}) of Datentyp_name;

type string is array (positive range <>) of character; type bit_vector is array (natural range <>) of bit; type std_ulogic_vector is array (natural range <>) of std_ulogic; type std_logic_vector is array (natural range <>) of std_logic;

signal Z_Bus: bit_vector(3 downto 0); signal Z_Bus: std_logic_vector(0 to 3);

Page 25: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Strukturierung des VHDL-Codes Design besteht in der Regel aus mehreren Komponenten (Bausteinen) In einer VHDL-Datei können mehrere Bausteine beschrieben werden Im ganzen Design verwendete Datentypen, Operatoren

Funktionen/Prozeduren und Komponenten können in packages organisiert werden

Deklaration eines Packages

Einbinden einer Bibliothek:

Bibliothek work enthält übersetze Quellen des aktuellen Projekts Eigene Packages werden in Bibliothek work abgelegt werden

package package_name is [Deklarationen]; end package package_name; package body package_name is [Funktionen/Prozeduren/Bausteine] end package body;

Definition der Schnittstelle

Implementierung => Bibliothek

library library_name; use library_name.package_name.all

Page 26: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Beispiel für eigene Bibliothek

Deklaration des eigenen packages lib im aktuellen Projekt Einbinden in Quellcode des aktuellen Projekts

package lib is [Deklarationen]; end package lib; package body lib is [Funktionen/Prozeduren/Bausteine] end package body;

library work; use work.lib.all

Page 27: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Ausführungsteil in Prozessen

Der Ausführungsteil in einem Prozess ist eine Folge von Anweisungen

Anweisungsfolge wird sequentiell abgearbeitet Anweisungen können sein:

− Signal-/Variablenzuweisungen − if-Anweisung − case-Anweisung − Schleifen

• for • while • loop

− wait-Anweisung

Page 28: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

if-Anweisung

Syntax:

Beispiele:

if Bedingung then {sequentielle_Anweisung} {elsif Bedingung then {sequentielle_Anweisung}} [else {sequentielle_Anweisung}] end if;

If Bedingung 1 then sequentielle Anweisungen End if; If Bedingung 2 then sequentielle Anweisungen End if; ... If Bedingung n then sequentielle Anweisungen End if;

If Bedingung 1 then sequentielle Anweisungen elsif Bedingung 2 then sequentielle Anweisungen elsif Bedingung 3 then ... elsif Bedingung n then sequentielle Anweisungen End if;

Page 29: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

case-Anweisung

Syntax:

Beispiel:

Fehlt die others-Anweisung, dann müssen alle möglichen Fälle explizit aufgezählt werden

case Ausdruck is when Auswahl => {sequentielle_Anweisung} {when Auswahl => {sequentielle_Anweisung} } end case;

case Ausdruck is when Wert_1 => Anweisungen when Wert_2 | Wert_3 | Wert_4 => Anweisungen when Wert_5 to Wert_6 => Anweisungen when Wert_7 | Wert_8 to Wert_10 => Anweisungen ... when Wert_n => Anweisungen when others => Anweisungen End case;

Page 30: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Schleifen

Syntax loop: Syntax for: Beispiel:

Syntax while Beispiel

loop Anweisung ... exit when Bedingung ... Anweisung end loop

for Bezeichner in disk_Werteberich loop Anweisungen end loop

for k in 0 to 15 loop ... end loop

while Bedingung loop Anweisungen end loop

while k < 15 loop Anweisungen; k := k + 1; end loop

Page 31: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Die wait-Anweisung

Darf in Prozessen verwendet werden Syntax der wait-Anweisung:

wait on hält einen Prozess an, bis eine Änderung in einem der angegebene Signale auftritt

wait until hält einen Prozess an, bis die Bedingung wahr wird Es ergibt sich folgende Äquivalenz:

wait for weckt einen Prozess nach der angegebenen Simulationszeit

auf

wait [on Signal_Name {, Signal_Name}] [until Bedingung] [for Zeit];

wait on s wait until s'event

Page 32: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Sensitivitätsliste

Prozess ohne wait mit nicht leerer Sensitivitätsliste: Semantisch äquivalenter Prozess mit wait und leerer Sensitivitätsliste:

P: process(clk, res) begin if res = '1' then out <= '0'; elsif clk = '1' and clk'event then out <= not in; end if; end process;

P: process begin if res = '1' then out <= '0'; elsif clk = '1' and clk'event then out <= not in; end if; wait on clk, rst; end process;

Page 33: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Simulationsprinzip

Für die Simulation muss auf der untersten Ebene jeder Baustein verhaltensorientiert beschrieben sein

Wird in einem Prozess keine wait-Anweisung ausgeführt, gerät die Simulation in eine Endlosschleife

Initialisierung

Aktualisierung der Signale

Ausführung der aktiven Prozesse

Simulationsende

Simulations- zyklus

Page 34: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Simulationsprinzip VHDL verwendet das Prinzip der Co-Routinen. D.h.: Jeder Prozess gibt an statisch definierten Punkten (wait-Anweisung) die Kontrolle an den

Simulationskern zurück. Dieser aktiviert dann einen weiteren Prozess oder beendet die Simulation. Prozesse mit nicht-leerer Sensitivitätsliste enthalten am Ende eine implizite wait-Anweisung Beispiel:

− Ereignisse aus den Sensitivitätslisten von p1 und p2 sind aufgetreten − Reihenfolge der Aktivierung von p1 und p2 nicht festgelegt

Simulationskern

p1

… wait() … wait() …

p2 1. 2. 3.

4.

Page 35: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Beispiel

Prozess ohne Sensitivitätsliste:

1 CLOCK_GEN: process 2 begin 3 clk <= '0'; 4 wait for 5 ns; 5 clk <= '1' 6 wait for 5 ns; 7 end process;

clk

0 ns 5 ns 10 ns 15 ns 20 ns

0

1

Page 36: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Initialisierungsphase

Jedem Signal wird ein Wert zugewiesen, abhängig von seinem Datentyp

Simulationsuhr wird auf 0 gesetzt Alle Prozesse des zu simulierenden Bausteins werden

gestartet; d.h. sie werden bis zum ersten wait ausgeführt

Page 37: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Exkurs: Wertzuweisung an Signale

Jedes Signal besitzt eine Transaktionsliste Wertzuweisung

sig <= sig_val after time_val; zum Zeitpunkt curr_time erzeugt Eintrag (cur_time + time_val, sig_val) in Transaktionsliste

Erst nach Abschluss eines kompletten Simulationszyklus werden Signalwerte in der Aktualisierungsphase aktualisiert:

signal

5 ns

4 Zeit

Wert

10 ns

3

15 ns

6

Transaktionsliste

Page 38: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Aktualisierungsphase

Weitersetzen der aktuellen Simulationszeit t_current auf nächsten Zeitpunkt t_next, an dem ein Ereignis stattfindet.

Dazu Betrachtung von − Transaktionsliste der Signale − Weckliste der Prozesse (wegen wait for time_val – Anweisung)

Ausführen aller Signalzuweisungen, die bei t_next ausgeführt werden müssen

Ändert das den Wert eines Signals aus einer Sensitivitätsliste, dann wird der zugehörige Prozess geweckt und in der folgenden Ausführungsphase ausgeführt

Deltazyklen entstehen, wenn t_next = t_current ist

Page 39: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Ausführungsphase/Stoppregeln

Alle in der letzten Aktualisierungsphase geweckten Prozesse werden ausgeführt

Ausführung in einer nicht festgelegten Reihenfolge Da aber Signalwerte sich während dieser Ausführungsphase nicht

ändern (passiert nur in der Aktualisierungsphase) hat die Ausführungsreihenfolge keinen Einfluss auf die Ergebnisse

Simulation endet, falls − Transaktionsliste und Weckliste nach der Ausführungsphase leer oder − Vorgegebene Simulationszeit ist erreicht

aktueller Simulationszeitpunkt nächster Simulationszeitpunkt

Prozesse auswerten

Signale aktualisieren

Delta-Zyklus (Simulationszeit unverändert)

Prozesse auswerten

Signale aktualisieren

Delta-Zyklus (Simulationszeit unverändert)

Page 40: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Beispiel (1)

Beispiel für Trennung der Auswertungsphase und Signalaktualisierung:

architecture behv of exmp is signal a,b: std_logic; begin TAUSCHE: process(a,b) begin a <= b after 1 ns; b <= a after 1 ns; end process; end architecture;

Page 41: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Beispiel (2)

Was passiert jetzt?

architecture behv of exmp is signal a,b: std_logic; begin TAUSCHE: process(a,b) begin a <= b after 1 ns; b <= a after 1 ns; end process; end architecture;

Page 42: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Synthese

Im Folgenden − Wie wird kombinatorischer Logik synthetisiert? − Wie wird sequentieller Logik synthetisiert?

Verhalten Struktur

Logik

Abstraktionen / Ebenen nach Gajski (Y-Chart)

Gatter (NAND, NOR), Flip-Flops

Verhaltensorientierte Beschreibung (Register-Transfer-Beschreibung)

Wie funktioniert die Synthese?

Page 43: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Kombinatorische Logik

Ausgaben hängen funktional von den Eingaben ab: − Gleiche Eingaben erzeugen zu jedem Zeitpunkt dieselben Ausgaben

x1

x2

x3

z1

z2

z1 = f1(x1,…,xn)

zm = fm(x1,…,xn)

Page 44: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Modelle für kombinatorische Logik

Verhalten Struktur

Gatternetzliste Wahrheitswertetabelle:

Aussagenlogische Ausdrücke

BDDs

KV-Diagramme

NAND b0

d1

NAND d0

b1

NOR

AND

NOR z

b0 b1 d0 d1 z

0 0 0 0 0

0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 … … … … …

Page 45: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Beschreibung kombinatorischer Schaltungen mit VHDL

Betrachtung von Signalzuweisungen aus denen kombinatorische Schaltungen erzeugt werden − Ausdrücke (rechte Seite einer Signalzuweisung) erzeugen immer eine

kombinatorische Schaltung − Signalzuweisungen können für das geschriebene Signal auch speichernde Elemente

(Latches/Flip-Flops) erzeugen

Damit das nicht passiert und Simulation mit Syntheseergebnis übereinstimmt: − Änderung irgend eines Eingangssignals muss Berechnungsprozess aktivieren (jedes

Eingangssignal in Sensitivitätsliste) − Schreiben jedes Ausgangssignals bei jeder Aktivierung des Berechnungsprozesses

(sonst speichernd)

Modellierung möglich mit : − Nebenläufiger Signalzuweisung oder − Prozess

Page 46: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Nebenläufige Signalzuweisung

Nebenläufige Signalzuweisung: − Es können keine Signale in der Sensitivitätsliste vergessen werden − Signal auf der linken Seite wird immer geschrieben

Beispiel:

library IEEE; use IEEE.STD_LOGIC_1164.all; entity bist is port(b0,b1,d0,d1: in std_logic; z: out std_logic); end bist; architecture conc_sig of bist signal s1,s2,s3,s4: std_logic; begin s1 <= b0 nand d1; s2 <= d0 nand b1; s3 <= s2 nor s1; s4 <= s2 and s1; z <= s4 nor s3; end architecture;

NAND b0

d1

NAND d0

b1

NOR

AND

NOR z

Page 47: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Beispiel: Kombinatorischer Prozess

Kombinatorischer Prozess: − Sensitiv auf alle Signale, die im Prozess gelesen werden − Schreibt bei jeder Aktivierung Ausgangssignal

Beispiel:

architecture proc of bist begin process(b0,b1,d0,d1) variable s1,s2: std_logic; begin s1 := b0 nand d1; s2 := d0 nand b1; s1 := s2 nor s1; s2 := s2 and s1; z <= s1 nor s2; end process; end architecture;

NAND b0

d1

NAND d0

b1

NOR

AND

NOR z

Page 48: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Was passiert, wenn ein Signal nicht auf jedem Pfad geschrieben wird?

Bei gleicher Eingabe von a und b entstehen unterschiedliche Ausgaben, keine funktionale Abhängigkeit sondern speicherndes Verhalten

Synthese erzeugt ein Latch

Beispiel:

a b c Kommentar

1 1 1 c auf Wert von b setzen (b = 1)

0 1 1 letzten Wert von c halten

1 0 0 c auf Wert von b setzen (b = 0)

0 1 0 letzten Wert von c ausgeben

entity test is port (A, B : in bit; C : out bit) end test architecture impl_test of test is begin process(A,B) begin if a = ‚1‘ then begin c <= b end end end impl_test;

D

clk

Q

a b c

Page 49: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Tipp

Um unerwünschte Synthese von Latches zu vermeiden, jedes Signal zu Beginn des Prozesses initialisieren

Beispiel (Welche Schaltung entsteht?): entity test is port (A, B : in bit; C : out bit) end test architecture impl_test of test is begin process(A,B) begin c = 0 if a = ‚1‘ then begin c <= b end end end impl_test;

Page 50: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Was passiert bei vergessenem Signal in Sensitivitätsliste?

Sensitivitätsliste irrelevant für Synthese − Simulation berechnet Werte bei Änderung des vergessenen Signals nicht neu − Synthese erzeugt kombinatorischen Prozess, wenn alle anderen Bedingungen dafür

im Prozess eingehalten sind

In der Simulation entsteht speicherndes Verhalten, das in der synthetisierten Schaltung nicht vorkommt:

entity test is port (A, B, C : in bit; X, Y : out bit) end test architecture impl_test of test is begin p_falsch: process(A,B) begin X <= (A and B) or C; end p_richtig: process(A,B,C) begin Y <= (A and B) or C; end end impl_test;

t Eingaben X Y

0 ms A=0, B=0, C=0 0 0

1 ms A=0, B=0, C=1 0 1

Page 51: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Synthese arithmetischer Operatoren

architecture proc of Adder begin process(a,b) variable ta,tb,tc : std_logic_vector(4 downto 0) begin ta := ‚0‘ & a; tb := ‚0‘ & b; tc := ta + tb; c <= tc(4); s <= tc(3 downto 0); end process; end architecture;

library ieee; use ieee.std_logic_1164.all; entity Adder is port ( a : in std_logic_vector(3 downto 0); b : in std_logic_vector(3 downto 0); s : out std_logic_vector(3 downto 0); c : out std_logic ); end HA;

4-Bit Adder

ta(0)

tb(0)

ta(1)

tb(1)

ta(2)

tb(2)

ta(3)

tb(3)

ta(4)

tb(4)

s(0)

s(1)

s(2)

s(3)

c

Page 52: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Synthese von if-then-else

Beispiel:

entity x is port(A,B,C: in std_logic; Z : out std_logic); end x; architecture behav of x begin process(A,B,C) begin if C = ‚1‘ then Z <= A; else Z <= B; end if; end process; end architecture;

Synthese

Page 53: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Kombinatorische Schleife

Die Synthese erzeugt: − für Q eine Leitung − für temp eine Leitung − für if-then-else eine Multiplexer

entity test is port (D, CLK : in bit; Q : out bit) end test architecture impl_test of test is begin process(CLK, D) variable temp: bit; begin if clk = ‚1‘ then temp := D; else temp := not temp; end if Q <= temp end end impl_test;

temp = Q D

not

clk

0

1

Page 54: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Sequentielle Logik

Keine funktionale Abhängigkeit von den Eingaben wegen internem Speicher

x1

x2

x3

z1

z2

FF

z1 = f1(FF1,…,FFk,x1,…,xn)

zm = fm(FF1,…,FFk,x1,…,xn)

Page 55: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Speicherelemente

Flankengesteuerte Flip-Flops (D-Flip-Flop) Verhalten flankengesteuerte Flip-Flops (D-Flip-Flop) D … Dateneingang Q … Datenausgang clk … Takteingang

Zustandsgesteuerte Flip-Flops (Latch) Verhalten zustandsgesteuerte Flip-Flops (D-Latch) D … Dateneingang Q … Datenausgang clk … Takteingang

FF D Q

clk

Latch D Q

clk

clk 0

1

D

Q

0

1

0

1 Takt t Takt t+1 Takt t+2

clk 0

1

D

Q

0

1

0

1 Takt t Takt t+1 Takt t+2

Page 56: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Beschreibung von Speicherelementen in VHDL

Beschreibung von D-Flip-Flops ohne set/clear durch Prozesse mit spezieller Struktur:

clockEdge ist dabei: − clock_name = logic-0 − clock_name = logic-1 − rising_edge(clock_name) -- nur für std_logic/std_ulogic − falling_edge(clock_name) -- nur für std_logic/std_ulogic

Für Signale, die unter der Kontrolle der wait-Anweisung geschrieben werden, werden Flip-Flops synthetisiert

Für Variablen, die unter der Kontrolle der wait-Anweisung geschrieben werden, werden Flip-Flops synthetisiert, falls: − die Variable gelesen werden kann, bevor sie geschrieben wird

Wird die Variable immer definiert, bevor sie gelesen wird, dann wird kein speicherndes Element für die geschriebene Variable benötigt

process begin wait until clockEdge; -- Hier Beschreibung der synchronen Logik end process; end architecture;

Page 57: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Beispiel: Flip-Flop aus einem Signal entity ff is port( clk: in bit; currState: in integer range 0 to 15; nextState: out integer range 0 to 15 ); end ff; architecture infer of ff begin process begin wait until clk = '1'; nextState <= currState; end process; end architecture;

D

clk

Q

QN

nextState_0 currState_0

D

clk

Q

QN

nextState_1 currState_1

D

clk

Q

QN

nextState_2 currState_2

D

clk

Q

QN

nextState_3 currState_3

clk

Page 58: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Beispiel: Flip-Flop aus einer Variablen

Flip-Flop wird auch für temp erzeugt: Für temp wird kein Flip-Flop erzeugt: Schaltbild für den oberen Fall?

process variable temp : integer range 0 to 15; begin wait until clk = '1'; temp := currState; nextState <= temp; end process;

process variable temp : integer range 0 to 15; begin wait until clk = '1'; nextState <= temp; temp := currState; end process;

Page 59: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Antwort

D

clk

Q

QN

nextState_0

D

clk

Q

QN

nextState_1

D

clk

Q

QN

nextState_2

D

clk

Q

QN

nextState_3

D

clk

Q

QN

currState_0

D

clk

Q

QN

currState_1

D

clk

Q

QN

currState_2

D

clk

Q

QN

currState_3

clk

FFs für Variable temp

FFs für Signal nextState

Page 60: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Flip-Flops mit synchronem set/clear

process begin wait until clk = '1'; if rst = '1' then counter <= 0; else counter <= counter + 1; end if; end process; end architecture;

Page 61: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Flip-Flops mit asynchronem set/clear

Beschreibung von Flip-Flops mit asynchronem set/clear durch Prozesse mit spezieller Struktur:

clockEdge ist dabei: − clock_name = clk_val and clock_name'event − rising_edge(clock_name) -- nur für std_logic/std_ulogic − falling_edge(clock_name) -- nur für std_logic/std_ulogic

Sensitivitätsliste enthält alle gelesenen Signale des asynchronen Teils und clock_name

process(Sensitivitätsliste) begin if condition_1 then -- Asynchrone Logik 1 elsif condition_n then -- Asynchrone Logik 2 elsif clock_edge then -- Synchrone Logik end if; end process; end architecture;

Page 62: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Latches

Beschreibung von Latches durch Prozesse

Zu einem Signal wird ein Latch generiert, wenn es in dem Prozess einen Pfad gibt, auf dem dieses Signal nicht definiert wird (und der Prozess kein Flip-Flop für das Signal erzeugt)

Zu einer Variablen wird ein Latch generiert, wenn es in dem Prozess einen Pfad gibt, auf dem dieses Signal nicht definiert wird und es einen Pfad gibt, auf dem die Variable gelesen wird, bevor sie definiert wird

Beispiel: process(clk, curr_state)

begin if clk = '1' then next_state <= curr_state; end if; end process;

D

clk

Q

clk

curr_state next_state

Page 63: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Beispiel: Sequentielle Schaltung und Delta-Zyklus

Reg ist sequentielle Logik, die ausgehende Signale nur ändert, wenn Aktivierung wegen clk-Signal stattfand.

CL ist kombinatorische Logik, die immer aktiviert wird, wenn sich eines ihrer Eingangssignale ändert.

lReg

CL

rReg

lReg

CL

rReg

lReg

CL

rReg

lReg

CL

rReg

lReg

CL

rReg

lReg

CL

rReg

lReg

CL

rReg

lReg

CL

rReg

lReg

CL

rReg

clk clk clk clk clk clk clk clk clk

Zeit t: clk hat sich

geändert

Zeit t, Delta 0:

Prozess Reg ist aktiviert und ändert Ausgangs-

signal

Geänderte Signale

aktualisieren

Geänderte Signale

aktualisieren

Zeit t, Delta 0:

Prozess Reg ist aktiviert und ändert Ausgangs-

signal

Zeit t, Delta 1:

Prozess CL ist aktiviert und ändert Ausgangs-

signale

Zeit t, Delta 2:

Prozess Reg ist aktiviert und ändert

kein Ausgangs-

signal

Zeit t, Delta 2:

Prozess Reg ist aktiviert und ändert

kein Ausgangs-

signal

Keine Signale mehr

gändert, Simula-

tionszeit auf t+1 setzen.

Page 64: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Modelle für Automaten

Verhalten Struktur Moore-Automat: Mealy-Automat:

Moore-Automat: Endlicher Automat mit Ausgabe in den

Zuständen

Mealy-Automat: Endlicher Automat mit Ausgabe an den

Kanten

Zustands-übergangs-funktion d

FF0

FF1

FFk

Ausgabe-funktion l

am

a1

a0

zm

z1

z0

Zustands-übergangs-funktion d

FF0

FF1

FFk

Ausgabe-funktion l

am

a1

a0

zm

z1

z0

Page 65: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Moore-Automat

Moore-Automat (Q,E,A,l,d,q) Q endliche Menge von Zuständen E Eingabealphabet A Ausgabealphabet d : Q ´E ® Q ist die Zustandsübergangsfunktion l: Q ® A ist die Ausgabefunktion q ist der Startzustand

Beispiel (Zähler): 0

0

0

1 1

2 2

3 3

0

0

0 1

1

1

1

Page 66: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Verhalten Moore-Automat

Eine Situation (q, a, b) besteht aus Zustand z Î Q Eingabe a Î E*

Ausgabe b Î A*

Die Relation ® Í (Q ´ E* ´ A*) ´ (Q ´ E* ´ A*) ist die Menge aller möglichen Situationsübergänge eines Moore-Automaten, wobei ((q , aa, b), (q‘, a, bb)) Î ® gdw. d(q,a) = q‘ und l(q‘) = b

®* Menge der möglichen Läufe

Zur Eingabe a =a0a1a2…an erzeugt ein Moore-Automat die Ausgabe b0b1b2…bn, falls eine Folge von

Situationsübergängen (q, a0a1a2…an,e) ® (q‘, a1a2…an, b0) ® (q‘‘, a2…an, b0b1) ® … ® (q‘‘‘, e, b0b1b2…bn) existiert.

Akzeptierte Sprache eines Moore-Automaten A − L(A) = {(a,b) | ((q,a, e), (z‘, e, b)) Î ®* und q ist Startzustand}

Page 67: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Beispiel

0

0

0

1

1

2

2

3

3

0

0

0 1

1

1

1

(0, 0011110,e)

0

0

0

1

1

2

2

3

3

0

0

0 1

1

1

1

(1, 011110,1)

0

0

0

1

1

2

2

3

3

0

0

0 1

1

1

1

(2, 11110,12)

0

0

0

1

1

2

2

3

3

0

0

0 1

1

1

1

(1, 1110,121)

0

0

0

1

1

2

2

3

3

0

0

0 1

1

1

1

(0, 110,1210)

0

0

0

1

1

2

2

3

3

0

0

0 1

1

1

1

(3, 10,12103)

0

0

0

1

1

2

2

3

3

0

0

0 1

1

1

1

(3, 0,121032)

0

0

0

1

1

2

2

3

3

0

0

0 1

1

1

1

(3, e,1210321)

® ® ® ®

Page 68: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Mealy-Automat

Mealy-Automat (Q,E,A,l,d,q) Q endliche Menge von Zuständen E Eingabealphabet A Ausgabealphabet d : Q ´E ® Q ist die Zustandsübergangsfunktion l: Q ´E ® A ist die Ausgabefunktion q ist der Startzustand

Beispiel (Zähler):

0

0/2

1

2 3

0/1

0/3

0/0 1/3

1/0

1/1

1/2

Page 69: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Verhalten Mealy-Automat

Eine Situation (q, a, b) besteht aus Zustand z Î Q Eingabe a Î E*

Ausgabe b Î A*

Die Relation ® Í (Q ´ E* ´ A*) ´ (Q ´ E* ´ A*) ist die Menge aller möglichen Situationsübergänge eines Mealy-Automaten, wobei ((q , aa, b), (q‘, a, bb)) Î ® gdw. d(q,a) = q‘ und l(q,a) = b

®* Menge der möglichen Situationsübergänge

Zur Eingabe a =a0a1a2…an erzeugt ein Moore-Automat die Ausgabe b0b1b2…bn, falls eine Folge von

Situationsübergängen (q, a0a1a2…an,e) ® (q‘, a1a2…an, b0) ® (q‘‘, a2…an, b0b1) ® … ® (q‘‘‘, e, b0b1b2…bn) existiert.

Akzeptierte Sprache eines Mealy-Automaten A − L(A) = {(a,b) | ((q,a, e), (q‘, e, b)) Î ®* }

Page 70: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Beispiel

0

0

0/2

1

1

2

2

3

3

0/1

0/3

0/0 1/3

1/0

1/1

1/2

(0, 0011110,e) (1, 011110,1) (2, 11110,12) (1, 1110,121)

(0, 110,1210) (3, 10,12103) (3, 0,121032) (3, e,1210321)

® ® ® ®

0

0

0/2

1

1

2

2

3

3

0/1

0/0 1/3

1/0

1/1

1/2

0

0

0/2

1

1

2

2

3

3

0/1

0/0 1/3

1/0

1/1

1/2

0

0

0/2

1

1

2

2

3

3

0/1

0/0 1/3

1/0

1/1

1/2

0

0

0/2

1

1

2

2

3

3

0/1

0/3

0/0 1/3

1/0

1/1

1/2

0

0

0/2

1

1

2

2

3

3

0/1

0/3

0/0 1/3

1/0

1/1

1/2

0

0

0/2

1

1

2

2

3

3

0/1

0/3

0/0 1/3

1/0

1/1

1/2

0

0

0/2

1

1

2

2

3

3

0/1

0/3

0/0 1/3

1/0

1/1

1/2

0/3 0/3 0/3

® ® ®

Page 71: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

Moore- und Mealy-Automat

Ein Moore-Automat A und ein Mealy-Automat B sind äquivalent, gdw. L(A) = L(B) Jeder Moore-Automat kann in einen äquivalenten Mealy-Automat transformiert werden. Jeder Mealy-Automat kann in einen äquivalenten Moore-Automaten transformiert werden.

Page 72: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

VHDL-Implementierung des Zählers als Moore-Automat

library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity mooreCounter is Port ( direction : in STD_LOGIC; clk : in STD_LOGIC; rst : in STD_LOGIC; result : out STD_LOGIC_VECTOR(1 downto 0) ); end mooreCounter; architecture Behavioral of mooreCounter is signal state : STD_LOGIC_VECTOR(1 downto 0); begin process(clk, rst) begin if rst='1' then state <= "00"; elsif clk = '1' and clk'event then case direction & state is when "000" => state <= "01"; when "001" => state <= "10"; when "010" => state <= "11"; when "011" => state <= "00"; when "100" => state <= "11"; when "101" => state <= "00"; when "110" => state <= "01"; when others => state <= "10"; end case; end if; end process; result <= state; -- oder explizite Definition eines -- komb. Prozesses der sensitiv auf state ist end Behavioral;

Page 73: Hardware/Software Co -Design - uni-potsdam.de · Hardware/Software Co -Design Kapitel 2: Logiksynthese und VHDL -Einführung . Mario Schölzel . Überblick VHDL = VHSIC Hardware Description

VHDL-Implementierung des Zählers als Mealy-Automat

library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity mealyCounter is Port ( direction : in STD_LOGIC; clk : in STD_LOGIC; rst : in STD_LOGIC; result : out STD_LOGIC_VECTOR(1 downto 0) ); end mealyCounter; architecture Behavioral of mealyCounter is signal state : STD_LOGIC_VECTOR(1 downto 0); begin process(clk, rst) begin if rst='1' then state <= "00"; elsif clk = '1' and clk'event then case direction & state is when "000" => state <= "01"; when "001" => state <= "10"; when "010" => state <= "11"; when "011" => state <= "00"; when "100" => state <= "11"; when "101" => state <= "00"; when "110" => state <= "01"; when others => state <= "10"; end case; end if; end process;

process(direction, state) begin case direction & state is when "000" => result <= "01"; when "001" => result <= "10"; when "010" => result <= "11"; when "011" => result <= "00"; when "100" => result <= "11"; when "101" => result <= "00"; when "110" => result <= "01"; when others => result <= "10"; end case; end process; end Behavioral;