F2: Handwerkszeug Teil 1

F2: Handwerkszeug Teil 1
Entwurf digitaler Schaltungen (F2)
Handwerkszeug Teil 1
Prof. G. Kemnitz
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014
1/245
Inhalt F2: Handwerkszeug Teil 1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
Simulation
VHDL
Signale, Datentypen
Imperative Modelle
Ereignisgesteuerte Simulation
Strukturbeschreibung
Speicher
Aufgaben
2.1
2.2
2.3
2.4
Synthese
Verarbeitungsfunktionen
Register-Transfer-Funktion
Typische Beschreibungsfehler
Aufgaben
Prof. G. Kemnitz
·
3.1
3.2
3.3
3.4
3.5
3.6
4.1
4.2
4.3
4.4
4.5
4.6
Optimierung
Optimierungsziele
Logikvereinfachung
KV-Diagramme
Quine und McCluskey
Vereinfachung mit BDDs
Aufgaben
Rechenwerke
Addierer
Subtrahierer, Zähler etc.
Multiplizierer
Komparatoren
Block-Shifter
Aufgaben
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014
2/245
Lernziele
Simulation: Einführung in die Hardware-Beschreibungssprache
VHDL. Ereignisgesteuerte Simulation. Strukturbeschreibung und
Testrahmen. Simulation kombinatorischer Schaltungen und
Schaltungen mit Speicherelementen.
Synthese: Synthesegerechte Beschreibung von kombinatorischen
und getakteten Schaltungen. Hinweise auf
Optimierungsmöglichkeiten und typische Beschreibungsfehler.
Optimierung: Optimierungsziele. Bleistift-und-Papier-Optimierung mit KV-Diagrammen. Das klassische Verfahren von Quine
und McCluskey sowie die modernen Optimierungsmethoden mit
geordneten binären Entscheidungsdiagrammen.
Rechenwerke: Aufwands- und geschwindigkeitsoptimierte
Schaltungen für die Addition, Subtraktion, Multiplikation,
Vergleicher und Block-Shifter.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014
3/245
1. Simulation
Prof. G. Kemnitz
Simulation
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014
4/245
1. Simulation
Prof. G. Kemnitz
1. VHDL
VHDL
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014
5/245
1. Simulation
1. VHDL
Die Hardware-Beschreibungssprache VHDL
Das Akronym VHDL:
V VHSIC (Very High Speed Integrated Circuits)
H Hardware
D Description
L Language
In Europa verbreitetste Hardwarebeschreibungssprache,
erweiterte imperative Sprache (ADA).
Andere Hardwarebeschreibungssprachen: Verilog, System-C
Bestandteile eines VHDL-Projekts:
Prof. G. Kemnitz
Entwurfseinheiten,
Packages,
Bibliotheken.
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014
6/245
1. Simulation
1. VHDL
Beschreibungsstruktur einer Entwurfseinheit:
1: library IEEE;
2: use IEEE.STD_LOGIC_1164.all;
- Schnittstellenbeschreibung
3: entity Schaltungsname is
4: [generic (Liste_der_Konfigurationsparameter );]
5: [port(Liste_der_Anschlusssignale );]
6: end entity;
- Beschreibung des Innenlebens
7: architecture Beschreibung of Schaltungsname is
8: {Vereinbarung ;}
9: begin
10: {Anweisung ;}
11: end architecture;
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014
7/245
1. Simulation
1. VHDL
Zeile 1, 2: Library- und Use-Anweisung; Einblendung von
Bibliotheksobjekten in den Namensraum
Zeile 3-6: Schnittstellenbeschreibung; Vereinbarung der
Kongurationsparameter und Anschlusssignale
Zeile 7-11: Beschreibung der Entwurfseinheit
Zeile 8: Vereinbarungen von Datentypen, Signalen,
Unterprogrammen etc.
Zeile 10: Anweisungen zur Beschreibung des Innenlebens
Beschreibungsmittel für das Innenleben:
Einbindung von Teilschaltungen (⇒ Strukturbeschreibung).
Prozesse: Rahmen zur Verhaltensbeschreibung mit
imperativen Mitteln (⇒ Funktionsbeschreibung).
Kurzschreibweisen für Verhaltensmodelle für
Grundschaltungen (Gatter, Multiplexer, ...).
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014
8/245
1. Simulation
1. VHDL
Im Weiteren verwendete Schreibweisen/Farben
key
Schlüsselwort
[...]
optionales Element, darf Null mal oder einmal
enthalten sein
{...}
optionales Element, darf beliebig oft enthalten sein
...|...
Alternative, eines der aufgezählten Elemente muss
enthalten sein
Symbol
Metasymbol (Nichtterminalsymbol): Symbol das
nach weiteren Regeln zu ersetzen ist.
Name,
IEEE
eigener Bezeichner, standardisierter Bezeichner
1,"ab", ...
Wertangaben (Zahlen, Zeichenketten, ...)
- Text
Kommentar
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014
9/245
1. Simulation
1. VHDL
Bezeichner sind explizit zu denieren,
keine Mehrfachdenition,
keine Schlüsselworte.
In VHDL
beginnen Bezeichner mit einem Buchstaben,
bestehen nur aus den Buchstaben 'A' bis 'Z', 'a' bis 'z', den
Ziern '0' bis '9' und dem Unterstrich '_',
dürfen nicht mit einem Unterstrich enden und keine zwei
Unterstriche hintereinander enthalten.
Keine Unterscheidung zwischen Groÿ- und Kleinschreibung.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 10/245
1. Simulation
1. VHDL
Simulierbare Entwurfseinheit (Testrahmen)
keine Anschlusssignale,
imperative Teilbeschreibungen in Prozesse gekapselt.
1: entity hallo_welt is
2: end entity;
3: architecture a of hallo_welt is
4: begin
5: process
6: begin
- Meldung ausgeben und Prozess beenden
7: report "Hallo Welt";
8: wait;
9: end process;
10: end architecture;
⇒WEB-Projekt: P1.1/HalloWelt
Simulationsausgabe:
HalloWelt.vhdl:7:5:@0ms:(report note): Hallo Welt
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 11/245
1. Simulation
1. VHDL
Gröÿere Teilbeschreibungen, die keine Entwurfseinheiten sind,
werden in Packages ausgelagert: Typenvereinbarungen,
Konstanten, Unterprogramme, ...
- Denitionssteil, exportierte Vereinbarungen
1:
2:
3:
4:
package HalloWelt_pack is
constant c: STRING:="Hallo Zeichenkette";
function SchreibeText(s: STRING) return STRING;
end package;
- Beschreibung der Unterprogramme
5: package body HalloWelt_pack is
6: function SchreibeText(s: STRING) return STRING is
7: begin
8: return s;
9: end function;
10: end package body;
Prof. G. Kemnitz
⇒WEB-Projekt: HalloWelt_pack
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 12/245
1. Simulation
1. VHDL
Nutzung eines Packages
1: use WORK.HalloWelt_pack.all;
2: entity HalloWelt1 is
3: end entity;
4: architecture a of HalloWelt1 is
5: begin
6: process
7: begin
8:
report "Hallo Welt";
9:
wait for 1 ns;
10:
report c;
11:
wait for 1 ns;
12:
report SchreibeText("Hallo Funktionsaufruf");
13:
wait;
14: end process;
⇒WEB-Projekt: HalloWelt
15: end architecture;
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 13/245
1. Simulation
Prof. G. Kemnitz
2. Signale, Datentypen
Signale, Datentypen
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 14/245
1. Simulation
2. Signale, Datentypen
Binäre Signale
Quelle
Potenzial
ϕ(x)
x (Signal)
Signal
Störung
groß
Sicherheitsbereich
klein
Empfänger
u(x) = ϕ(x)
Signalwechsel
Signalwert
erweitert
binär
x=1
x=1
x =X
nicht darstellbar
x=0
x=0
Ein Signal ist ein zeitlicher Werteverlauf einer physikalischen
Gröÿe. Binäre Signale unterscheiden zur Informationsdarstellung
zwei Werte: klein und groÿ, 0 und 1 oder falsch und wahr. Die
physikalischen Trägergröÿen Strom und Spannung können sich
nicht sprunghaft ändern. In den Zeitfenstern von
Werteänderungen sind binäre Signale ungültig.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 15/245
1. Simulation
2. Signale, Datentypen
VHDL-Datentypen binärer Signale
In VHDL sind die Datentypen für binäre Werte
Aufzählungstypen:
type BIT is ('0', '1');
type BOOLEAN is (FALSE, TRUE);
type STD_LOGIC is ('U', 'X', '0', '1', ...)1 ;
'0', '1' druckbare Zeichen
FALSE, TRUE symbolische Konstanten
variable b1, b2:
...
b1 := b1 and b2;
BOOLEAN
:=
TRUE;
Im Package IEEE_STD_LOGIC_1164 deniert. 'U', 'X', ... Pseudo-Signalwerte für Simulationsmodelle, können ungenutzt bleiben. Der
Standard empehlt STD_LOGIC als Ersatz für den Typ BIT.
1
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 16/245
1. Simulation
2. Signale, Datentypen
Bitvektoren
n=1
n=2
n=3
n=4
b0
b1
b2
b3
···
0
0
0
0
1
0
0
0
2
0
1
0
0
1
1
0
0
4
0
0
1
0
1
0
1
0
0
1
1
0
1
1
1
0
0
0
0
1
1
0
0
1
0
1
0
1
1
1
0
1
0
0
1
1
1
0
1
1
0
1
1
1
1
1 ···
1 ···
1 ···
N =8
N = 16
Zahlenwert (dezimal): 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
...
x0
x1
ux0
ϕ(x0 )
x
ux1
Bezugspunkt
ϕ(x1 )
x = x1 x0
10
11 11
Spannungsverlauf
01
00 00
10
Signalwert ungültig
11
01
t
Mehr als zweiwertige Informationen werden durch Bitvektoren
dargestellt:
n
N ≤2
(1)
Ein Bitvektor ist nur gültig, wenn alle Bits gültig sind.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 17/245
1. Simulation
2. Signale, Datentypen
Bitvektortypen und Zahlentypen
Bitvektoren sind eindimensionale Bitfelder:
type bit_vector is array (natural range <>) of bit;
type std_logic_vector is array(natural range<>) of
std_logic;
Bitvektorkonstanten sind Zeichenketten, z.B.:
"0101", "0X1"
Die Indexbereiche sind Zahlentypen:
type integer range -2**31 to 2**31-1;
subtype natural is integer range 0 to integer'high;
subtype positive is integer range 1 to integer'high;
Der Ausdruck (Zahlentyp range<>) legt den Zahlentyp für den
Index fest und begrenzt damit dessen Wertebereich.
signal slv: std_logic_vector(3 downto 0);
variable idx: natural;
...
slv(idx+1) <= slv(idx);
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 18/245
1. Simulation
2. Signale, Datentypen
Ohne Textverarbeitung geht es nicht
type character
nul, soh, stx,
dle, dc1, dc2,
’ ’, ’!’, ’"’,
’0’, ’1’, ’2’,
’@’, ’A’, ’B’,
’P’, ’Q’, ’R’,
’‘’, ’a’, ’b’,
is (
etx,
dc3
’#’,
’3’,
’C’,
’S’,
’c’,
-- 128 Zeichen
eot, enq, ack, bel,
dc4 nak, syn, etb,
’$’, ’%’, ’&’, ’’’,
’4’, ’5’, ’6’, ’7’,
’D’, ’E’, ’F’, ’G’,
’T’, ’U’, ’V’, ’W’,
’d’, ’e’, ’f’, ’g’,
des ASCII-Zeichensatzes
bs, ht, lf, vt, lf, cr,
can, em, sub, esc, fsp, gsp,
’(’, ’)’, ’*’, ’+’, ’,’, ’-’,
’8’, ’9’, ’:’, ’;’, ’<’, ’=’,
’H’, ’I’, ’J’, ’K’, ’L’, ’M’,
’X’, ’Y’, ’Z’, ’[’, ’\’, ’]’,
’h’, ’i’, ’j’, ’k’, ’l’, ’m’,
so,
rsp,
’.’,
’>’,
’N’,
’∧’,
’n’,
si,
usp,
’/’,
’?’,
’O’,
’ ’,
’o’,
’p’, ’q’, ’r’, ’s’, ’t’, ’u’, ’v’, ’w’, ’x’, ’y’, ’z’, ’{’, ’| ’, ’}’, ’∼’, del,
. . . );
-- 128 weitere Zeichen (ISP 8859 Latin-1)
type
STRING
is array(POSITIVE range <>) of
CHARACTER;
Wegen (POSITIVE range <>) beginnt der Indexbereich von
Zeichenketten mit eins, statt wie bei Bitvektoren mit null.
Zeichen, die der Latin-1 Zeichensatz nicht enthält, z.B. ä, ö,
... ÿ, sind selbst in Kommentaren unzulässig.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 19/245
1. Simulation
2. Signale, Datentypen
Die Zeit hat einen eigenen Typ
type time is range Minimalwert to Maximalwert
units fs;
ps = 1000 fs;
ms = 1000 us;
min =
60 sec;
end units;
us = 1000 ps;
sec = 1000 ms;
hr =
60 min;
Die davon abgeleitete Verzögerungszeit ist eine Untertyp, der auf
positive Werte beschränkt ist:
subtype delay_length is time range 0 fs to time'high;
signal x, y: std_logic_vector(3 downto 0);
constant td: delay_length := 2 ns;
...
y <= x after td;
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 20/245
1. Simulation
Prof. G. Kemnitz
3. Imperative Modelle
Imperative Modelle
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 21/245
1. Simulation
3. Imperative Modelle
Imperative Funktionsmodelle
Die Funktion der Teilschaltungen wird imperativ beschrieben, als
normales Programm für einen normalen Rechner und ist wie ein
normales Programm testbar. Testrahmen zum Experimentieren:
- Vorspann
library IEEE;
use IEEE.STD_LOGIC_1164.all;
library Tuc;
use Tuc.Ausgabe.all;
- leere Schnittstelle
entity test is end entity;
...
Das Package IEEE.STD_LOGIC_1164 stellt Typen und
Operationen für STD_LOGIC[_VECTOR] bereit.
Das Package Tuc.Ausgabe enthält Typen +
Unterprogramme zur Textausgabe.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 22/245
1. Simulation
3. Imperative Modelle
architecture a of test is
- Vereinbarungsteil der Entwurfseinheit
Signalvereinbarungen
begin
process
- Vereinbarungsteil Prozess
Variablenvereinbarungen
begin
- Anweisungsteil Prozess
zu_testende_Anweisungen
wait; - beendet Simulation
end process;
end architecture;
- Vereinbarungsteil Prozess
variable a, b: STD_LOGIC;
- Anweisungsteil Prozess
a := '1'; b:='X';
write("a and b:" & str(a and b));
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 23/245
1. Simulation
3. Imperative Modelle
a :='1'; b :='X';
Wertzuweisungen an Variablen
write(Text );
Ausgabe auf dem Standardterminal
"a and b:"
konstante Zeichenkette
Text1 & Text2
Verkettung zweier Zeichenketten
str(Ausdruck )
Umwandlung des Ausdrucks in eine
Textdarstellung
Auf den Folien stehen im Weiteren nur die Vereinbarungen und
Anweisungen. Download der kompletten Programme +
Download-Link für Simulator + Hilfe zum Übersetzen und
Ausführen:
http://techwww.in.tu-clausthal.de/
site/Lehre/VHDL-Web-Projekte/
Simulator: Freie Software und auch im Übungsraum installiert.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 24/245
1. Simulation
3. Imperative Modelle
Denition von Datenobjekten und Zuweisungen
constant Bezeichner {,Bezeichner }: Typ [:=aw ];
variable Bezeichner {,Bezeichner }: Typ [:=aw ];
signal Bezeichner {,Bezeichner }: Typ [:=aw ];
aw Anfangswert; ohne Angabe erster Wert der Typendenition
BIT
STD_LOGIC
BOOLEAN
INTEGER
NATURAL
POSITIVE
'0'
'U'
FALSE
INTEGER'LOW
0
1
signal i: INTEGER;
signal b: STD_LOGIC;
signal p: POSITIVE;
...
write("i=" & str(i) & " b=" & str(b) & " p=" & str(p));
Prof. G. Kemnitz
Was wird ausgegeben?
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 25/245
1. Simulation
3. Imperative Modelle
Der Indexbereich von Bitvektoren kann absteigend oder
aufsteigend vereinbart werden.
Elementezuordnung bei Wertezuweisungen von links nach
rechts:
signal s:
signal f:
STD_LOGIC_VECTOR(0
STD_LOGIC_VECTOR(3
to 3)
:= "1100";
downto 0) := "1100";
Vektorelement
s(0)
s(1)
s(2)
s(3)
f(3)
f(2)
f(1)
f(0)
Anfangswert
1
1
0
0
1
1
0
0
Ohne Anfangswertangabe Elementeinitialisierung mit
Standardwerten.
signal slv: STD_LOGIC_VECTOR(3 downto 0);
...
write("slv=" & str(slv)); - Was wird ausgegeben?
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 26/245
1. Simulation
3. Imperative Modelle
Variablenzuweisungen und Ausdrücke
Variablenname := Ausdruck;
Ein Ausdruck ist eine Textbeschreibung für einen baumartigen
Berechnungsuss:
(logischer Ausdruck)
Variable
v1
Konstante
0
v2 . . .
1
Signal
s1
s2 . . .
( ⋄ )
( ∨ )
( ∧ )
x1
Prof. G. Kemnitz
x3
·
( ⊕ )
1
( ⋄ )
mit ⋄ ∈ {∧, ∨, ⊕}
( ∧ )
x2
ein- oder zweistellige
logische Funktion
⇒
(x̄1 ∧ x2 ) ∨ (x̄3 ∧ (1 ⊕ x4 ))
x4
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 27/245
1. Simulation
x2 x1
0 0
0 1
1 0
1 1
VHDLSchlüsselwort
3. Imperative Modelle
Inverter UND NAND ODER NOR XOR
XNOR
x1 ∧ x2 x1 ∧ x2 x1 ∨ x2 x1 ∨ x2 x1 ⊕ x2 x1 ⊕ x2
x̄1
1
0
0
0
0
1
1
1
1
0
0
1
1
1
1
0
0
0
0
1
1
0
1
0
0
1
not
and
nand
or
nor
xor
xnor
not hat Vorrang.
2-stellige VHDL-Operatoren sind gleichberechtigt.
Bei unterschiedlichen Operatoren Ausführungsreihenfolge
mit Klammern festlegen.
Übersetzbar, und wenn ja, was wird ausgegeben?
write("Ausgabe 1: " & str((TRUE or FALSE) and TRUE));
write("Ausgabe 2: " & str(FALSE or (FALSE and TRUE)));
write("Ausgabe 3: " & str(TRUE or FALSE and TRUE));
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 28/245
1. Simulation
3. Imperative Modelle
Verarbeitung ungültiger Bitwerte
type std_logic is ('U', 'X', '0', '1', ...)
ungültig (X): Wert kann 0 oder 1 sein
Simulationsregeln:
X=X
X∧0=0
X∨0=X
X⊕0=X
X∧X=X
X∨X=X
X⊕X=X
X∧1=X
X∨1=1
X⊕1=X
Welcher Wert wird y zugewiesen?
variable x:
variable y:
...
x := "1001";
x := "10X1";
x := "X011";
Prof. G. Kemnitz
·
std_logic_vector(3 downto 0);
std_logic;
y := (x(3) and x(2)) or (x(1) and x(0));
y := (x(3) and x(2)) or (x(1) and x(0));
y := (x(3) and x(2)) or (x(1) and x(0));
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 29/245
1. Simulation
3. Imperative Modelle
Ausdruck, Berechnungsuss und Signaluss
Ausdruck
(x̄1 ∧ x2 ) ∨ (
x̄3 ∧ (1 ⊕ x4 ))
Berechnungsbaum
Signalflussgraph
( ∨ )
( ∧ )
( ∧ )
x2
x1
x3
( ⊕ )
1
x4
Ergebnisweitergabe
Operation
x1
x2
x3
1
x4
&
=1
≥1
&
Signale
Verarbeitungselement
Ein Ausdruck kann nicht nur einen Berechnungs- sondern auch
einen Signaluss beschreiben. Aus den Operatoren werden Gatter
und aus den Eingaben, Zwischenergebnissen und dem Ergebnis
Signale. Eine Minimierung der Operationen im Ausdruck
minimiert die Gatteranzahl der korrespondierenden Schaltung.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 30/245
1. Simulation
3. Imperative Modelle
Signalzuweisung
Einem Signal werden Werte-Zeit-Tupel zugewiesen:
Signalname <= Ausdruck [after td ]
{, Ausdruck [after td ]};
Ausdruck Ausdruck zur Werteberechnung; td Ausdruck für die
Berechnung der Verzögerungszeit.
signal y: std_logic;
...
y <= '1' after 1 ns, '0' after 2 ns, '1' after 3 ns;
Berechnete Signalverläufe können graphisch dargestellt werden:
ghdl -r Signal1 --wave=Signalverlauf.ghw
gtkwave Signalverlauf.ghw [gtkwave_setup.sav]
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 31/245
1. Simulation
3. Imperative Modelle
Warteanweisungen und Weckbedingungen
Signalverläufe werden in der Regel nicht in einem Schritt
zugewiesen, sondern berechnet. Der Simulator hat eine
Systemvariable NOW für die simulierte Zeit, die beim
Simulationsstart null ist und mit Warteanweisungen erhöht
werden kann. Eine Warteanweisung legt den Prozess schlafen, bis
die Weckbedingung erfüllt ist. Weckbedingungen:
Änderung eines Signals aus der Weckliste
wait on Weckliste ;
Verstreichen einer Verzögerungszeit
wait for Verzögerungszeit ;
Eintreten einer beliebig beschreibbaren Bedingung:
wait until Bedingung ;
Zuweisungen von Signaländerungen erfolgen zur Simulationszeit
NOW + td (NOW aktuelle Simulationszeit; td Verzögerungszeit).
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 32/245
1. Simulation
3. Imperative Modelle
signal n: NATURAL;
...
Z1: n <= n+1 after 1 ns, n+2 after 2 ns;
write("A1:" & str(now)&':'&str(n));
wait on n;
write("A2:" & str(NOW)&':'&str(n));
wait on n;
write("A3:" & str(NOW)&':'&str(n));
wait for 0.5 ns; write("A4:" & str(NOW)&':'&str(n));
Z2: n <= n+2 after 1 ns, n+4 after 2 ns;
write("A5:" & str(NOW)&':'&str(n));
wait on n;
write("A6:" & str(NOW)&':'&str(n));
wait on n;
write("A7:" & str(NOW)&':'&str(n));
Zuweisung
Z1
A1
Ausgabewert von n 0
Prof. G. Kemnitz
·
Z2
A2
A3
A4/5
A6
A7
1
2
2
4
6
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 33/245
1. Simulation
3. Imperative Modelle
Zusammenfassung
Testrahmenschablone für einzelne Anweisungen;
Testausgaben
write(Text & str(Datenobjekt ) & ...);
Datenobjekte: Konstanten, Variablen und Signale;
Vereinbarung:
Objekttyp Bezeichner {,Bezeichner }: Typ [:=aw ];
Variablenzuweisung/Ausdrücke:
Variablenname := Ausdruck ;
logische Ausdrücke ⇔ Berechnungsuss ⇔ Signaluss
Signalzuweisungen
Signalname <= [VM ] Ausdruck [after td ]
wait on/for/until Weckbedingung
Funktionsbeschreibungen mit Signalen sind komplizierter als
sequentielle Berechnungen mit Variablen.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 34/245
1. Simulation
Prof. G. Kemnitz
4. Ereignisgesteuerte Simulation
Ereignisgesteuerte Simulation
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 35/245
1. Simulation
4. Ereignisgesteuerte Simulation
Ereignisgesteuerte Simulation
signal x: std_logic_vector(5 downto 0);
signal y: std_logic_vector(2 downto 0);
td
constant td: delay_length := 1 ns;
6
3
x
f (x)
y
...
process
begin
x
w1
w2
y <= f(x) after td;
y
f (w1)
f (w2)
wait on x;
end process;
td
t
Jede Teilschaltung überwacht ständig ihre Eingabesignale.
Bei einer Änderung werden die Werte der Ausgabesignale
neu berechnet und verzögert zugewiesen.
Ausgabeänderungen lösen Neuberechnungen in den
nachfolgenden Teilschaltungen aus.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 36/245
1. Simulation
4. Ereignisgesteuerte Simulation
Prozessmodell einer Teilschaltung
x
PV
f (. . .)
y
PV
y <= f(x);
wait ...
a)
wait on (x);
b)
Initialisierung der
Prozessvariablen
sequentielle Anweisungen
wait ... Warte-Anweisung
Endlosschleife:
Berechnung der Ausgabewerte aus den Eingabewerten.
Verzögerte Zuweisung an das Ausgabesignal.
Warten auf eine Eingabeänderung.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 37/245
1. Simulation
4. Ereignisgesteuerte Simulation
3-Gatter-Schaltung
ein Prozess je Gatter
+ Eingabeprozess
entity SimModell is
end entity;
td = 1 ns
x1
x2
&
z1
t = 2 ns
G1 d
td = 1 ns
x3
x4
&
z2
G2
≥1
y
G3
architecture Sim of SimModell is
signal x1, x2, x3, x4, z1, z2, y: STD_LOGIC:='0';
begin
- Simulation G1
G1: process
begin
z1 <=
x1 and x2 after 1 ns;
wait on x1, x2;
end process;
Prof. G. Kemnitz
·
- Simulation G2
G2: process
begin
z2 <=
x3 and x4 after 1 ns;
wait on x3, x4;
end process;
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 38/245
1. Simulation
4. Ereignisgesteuerte Simulation
- Simulation G3
G3: process
begin
y <= z1 or z2 after 2 ns;
wait on z1, z2;
end process;
td = 1 ns
x1
x2
&
z1
t = 2 ns
G1 d
td = 1 ns
x3
x4
&
z2
G2
≥1
y
G3
- Eingabeprozess
Eingabe: process
begin
wait for 1 ns; x3 <= '1';
wait for 2 ns; x1 <= '1'; x4 <= '1';
...
wait;
end process;
end architecture;
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 39/245
1. Simulation
4. Ereignisgesteuerte Simulation
Simulationsablauf für das Beispiel
1 ns
tsim
0
0
0
0
1
Signalzuweisung
ns
G1
z1 ⇐ 0 ∧ 0 nach 1 ns
ns
G2
z2 ⇐ 0 ∧ 0 nach 1 ns
ns
G3
y ⇐ 0 ∨ 0 nach 2 ns
ns Eingabe
ns
E
x3 ⇐ 1
1 ns
3 ns
3
3
4
6
Prozess
ns
ns
ns
ns
G2
E
G1
G2
G3
···
z2 ⇐ 1 ∧ 0 nach 1 ns
x1 ⇐ 1
x4 ⇐ 1
z1 ⇐ 1 ∧ 0 nach 1 ns
z2 ⇐ 1 ∧ 1 nach 1 ns
y ⇐ 0 ∨ 1 nach 2 ns
···
Initialisierung
Prof. G. Kemnitz
·
schwebende
Änderungen
@1 ns: E
@1 ns: x3 → 1
+ @3 ns: E
@3 ns: E
@3 ns: x1 → 1
@3 ns: x4 → 1
@3 ns: x4 → 1
@4 ns: z2 → 1
@6 ns: y → 1
···
keine schwebende Änderung
Signale
x 4 x 3 x 2 x 1 z2 z1
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
y
0
0
0
0
0
0
0
1
1
1
1
1
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
0
0
0
0
0
1
E Eingabeprozess
x1
x2
&
1 ns
x3
x4
x1
1
0
x2
1
0
z1
1
0
x3
1
0
x
&
z1
G1
2 ns
≥1
z2
G2
y
G3
1 ns
1
4 0
z2
1
0
y
1
0
1 ns
2 ns
0
Institut für Informatik, Technische Universität Clausthal
5
10
15
t in ns
17. Juni 2014 40/245
1. Simulation
4. Ereignisgesteuerte Simulation
Simulationsergebnis
1 ns
x1
x2
z1
G1
&
≥1
1 ns
x3
x4
z2
G2
&
Prof. G. Kemnitz
2 ns
G3
x1
1
0
x2
1
0
x1 ∧ x2
1
0
z1
1
0
x3
1
0
x4
1
0
x3 ∧ x4
1
0
z2
1
0
z1 ∨ z2
1
0
y
1 ns
1 ns
y
1
0
2 ns
0
·
5
10
Institut für Informatik, Technische Universität Clausthal
15
t in ns
17. Juni 2014 41/245
1. Simulation
4. Ereignisgesteuerte Simulation
Kurzschreibweisen
Prozesse zur Beschreibung der Funktion von Schaltungen haben
praktisch immer nur eine einzige Warteanweisung auf
Signaländerungen, und zwar am Ende der Anweisungsfolge:
G1: process
begin
z1 <= x1 and x2 after 1 ns;
wait on x1, x2;
end process;
Dafür gibt es eine Kurzschreibweise, den Prozess mit Weckliste:
G1kurz: process (x1, x2)
begin
z1 <= x1 and x2 after 1 ns;
end process;
Die Kurzschreibweise dient zur Vermeidung des Fehlers, die Warteanweisung zu vergessen, bei dem der Simulator sich aufhängt.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 42/245
1. Simulation
4. Ereignisgesteuerte Simulation
Sonderfall Verarbeitungsfunktion
Der Prozess einer Verarbeitungsfunktion muss bei jeder
Eingabeänderung geweckt werden, d.h., es stehen immer alle
Eingabesignale in der Weckliste. Besteht die Beschreibung der
Funktion nur aus einer Zuweisung wie bei der Beschreibung eines
einzelnen Gatters, darf der Prozessrahmen weggelassen werden.
Die Beschreibung:
G1kurz: process (x1, x2)
begin
z1 <= x1 and x2 after 1 ns;
end process;
ist identisch mit der nebenläugen Signalzuweisung:
z1<=x1 and x2 after 1 ns;
Diese verkürzte Schreibweise beugt dem Fehler vergessenes
Eingabesignal in der Weckliste vor.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 43/245
1. Simulation
4. Ereignisgesteuerte Simulation
Beispielschaltung mit nebenläugen Signalzuweisungen
td = 1 ns
x1
x2
&
z1
t = 2 ns
G1 d
td = 1 ns
entity SimModell is
end entity;
x3
x4
&
z2
G2
≥1
y
G3
architecture SimKurz of SimModell is
signal x1, x2, x3, x4, z1, z2, y: STD_LOGIC := '0';
begin
- Schaltung
G1:z1<=x1 and x2 after 1 ns;
G2:z2<=x3 and x4 after 1 ns;
G3: y<=z1 or z2 after 2 ns;
- Eingabeprozess
Eingabe: process
Prof. G. Kemnitz
·
begin
wait for 1 ns; x3<='1';
wait for 2 ns;
...x1<='1'; x4<='1';
wait;
end process;
end architecture;
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 44/245
1. Simulation
4. Ereignisgesteuerte Simulation
Zusammenfassung
Die zeitlichen Abläufe werden mit Signalzuweisungen und
Warteanweisungen nachgebildet.
Das Funktionsmodell einer kombinatorischen Schaltung ist
ein Prozess, der die Ausgabewerte aus den aktuellen
Eingabewerten berechnet, verzögert zuweist, sich bis zur
nächsten Eingabeänderung schlafen legt und nach dem
Aufwachen dieselbe Berechnungsfolge wiederholt.
Bei einer genauen Simulation des Zeitverhaltens wird jede
Teilschaltung durch einen eigenen Prozess simuliert.
Zusätzlich benötigt die Simulation einen Prozess zur
Bereitstellung der Eingabesignale.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 45/245
1. Simulation
Prof. G. Kemnitz
5. Strukturbeschreibung
Strukturbeschreibung
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 46/245
1. Simulation
5. Strukturbeschreibung
Strukturbeschreibung
Testrahmen
x1
x2
x3
x4
a Name: G1
b Typ: Und
a Name: G2
b Typ: Und
c
c
z1
Name: TObj
Typ: G2u1o
a Name: G3
b Typ: Oder
c
y
z2
Prozesse für die Testeingabe und Testausgabe
Digitale Systeme werden hierarchisch aus Teilschaltungen zusammengesetzt. Jede Teilschaltung hat eine Schnittstelle, die die
Anschlusssignale deniert. Eine Strukturbeschreibung hat auch
eine Schnittstelle, deniert interne Signale und beschreibt für jede
Teilschaltung, mit welchen Signalen deren Anschlüsse verbunden
sind. Das oberste Hierarchie-Element ist der Testrahmen.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 47/245
1. Simulation
5. Strukturbeschreibung
Schnittstellenvereinbarung
entity Entwurfseinheit is
[generic (Liste_der_Konfigurationsparameter );]
[port (Anschlussliste )];
end entity;
Die Anschlussliste ist eine kommaseparierte Liste von
Anschlussvereinbarungen der Form:
Signalname {,Signalname }:Richtung Datentyp
[:=Standardwert ]
Mögliche Signalussrichtungen sind
in
out
inout
buffer
Eingang
Ausgang
Ein- und Ausgang
Ausgang mit rücklesbarem Wert
Der Standardwert ist der Initialisierungswert zum Simulationsbeginn. Ohne Angabe der Standardwert des Datentyps.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 48/245
1. Simulation
5. Strukturbeschreibung
Beschreibung eines UND-Gatters
td
- Schnittstellenvereinbarung
entity Und2 is
generic (td: DELAY_LENGTH:=0 ns);
port (a, b: in STD_LOGIC;
c: out STD_LOGIC);
end entity;
a
c
&
c
a 10
b 10
c 10
td
- Beschreibung
architecture mit_td of Und2 is
begin
c <= a and b after td;
end architecture;
Über generic können der Entwurfseinheit bei der Instanziierung Parameter zugeordnet werden, im Beispiel die Verzögerungszeit. Wird in den von unserem Entwurfssystem generierten
Post-Place-and-Route-Simulationsmodellen genutzt.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 49/245
1. Simulation
5. Strukturbeschreibung
Teilschaltungsinstanzen
Syntax für die Einbindung einer Entwurfseinheit als
Teilschaltung:
[Teilschaltungsname:] entity [Bibliothek .]
Entwurfseinheit (Beschreibung )
[generic map(Zuordnung sliste_Parameter )]
port map(Zuordnung sliste _Anschlüsse );
Zuordnungslisten können in VHDL namens- oder positionsbasiert
beschrieben werden:
namensbasiert: kommaseparierte Liste aus Tupeln
Objekt_zum_zuordnen => zugeordnetes_Objekt positionsbasiert: kommaseparierte Liste der zugeordneten
Objekte.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 50/245
1. Simulation
5. Strukturbeschreibung
Strukturbeschreibung
der 3-Gatterschaltung
Schnittstellenvereinbarung:
Entwurfseinheit: G2u1o
x1
x2
x3
x4
G1
z1
&
G2
&
entity G3E is
port (x1, x2, x3, x4: in STD_LOGIC;
y: out STD_LOGIC);
end entity;
z2
G3
≥1
y
architecture Struktur of G3E is
- Vereinbarung der interenen Signale
signal z1, z2:
begin
STD_LOGIC;
- Instanziierung und Verbindung der Gatter
...
end architecture;
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 51/245
1. Simulation
5. Strukturbeschreibung
- Instanziierung und Verbindung der Gatter
G1: entity
WORK.Und2(mit_td)
generic map (1
x1
x2
ns)(1)
port map (x1, x2, z1)(1) ;
G2: entity
x3
x4
G1
z1
&
G3
≥1
G2
z2
&
y
WORK.Und2(mit_td)
generic map (td => 1 ns)(2)
port map (a=>x3, b=>x4, c=>z2)(2) ;
G3: entity
WORK.Oder2(mit_td)
generic map (td => 2 ns)(2)
port map (a=>z1, b=>z2, c=>y)(2) ;
end architecture;
⇒WEB-Projekt: G3/G3_Struk
(1)
(2)
positionsbasierte Zuordnung (kurz, fehlerträchtig)
namensbasierte Zuordnung (länger, verständlicher)
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 52/245
1. Simulation
5. Strukturbeschreibung
Instanzbildung mit Platzhaltern
Der Design-Wizard von ise empehlt die ältere, umständlichere
Art der Instanziierung:
[Teilschaltungsname:] [component] Entwurfseinheit
[generic map (Zuordnung sliste _Parameter)]
port map (Zuordnung sliste _Anschlüsse );
Das erfordert eine zusätzliche Deklaration der Schnittstelle als
Komponente (in einem Package oder im Deklarationsteil der
Entwurfseinheit):
component Entwurfseinheit is
[generic (Liste_der_Konfigurationsparameter );]
[port (Anschlussliste )];
end [component][Entwurfseinheit ];
Eine Komponentenbeschreibung entsteht durch Kopieren der
Schnittstellenbeschreibung und Ersatz von entity durch
component. Bläht die Beschreibung auf, hat keinen Nutzen.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 53/245
1. Simulation
5. Strukturbeschreibung
Testrahmen
Testrahmen
e1
x1 a Name: G1
e2
x2 b Typ: Und2
e3
e4
x3
x4
a Name: G2
b Typ: Und2
c
c
z1
Name: TObj
Typ: G3E
a Name: G3
c
b Typ: Oder2
y
a
z2
Prozesse für die Testeingabe und Testausgabe
Das oberste Hierarchieelement einer Simulation ist der
Testrahmen (Testbench). Er besteht im Wesentlichen aus einer
Instanz des Testobjekts, Vereinbarungen der an das Testobjekt
angeschlossenen Signale sowie Prozessen zur Bereitstellung der
Testeingaben und Auswertung der Testausgaben.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 54/245
1. Simulation
5. Strukturbeschreibung
entity Test_G3E is
end entity;
e1
architecture a of Test_G3E is
signal e1,e2,e3,e4,a: STD_LOGIC;
begin
TObj: entity WORK.G3E(Struktur)
port map (x1=>e1, x2=>e2, x3=>e3,
x4=>e4, y=>a);
e3
Eingabe: process
begin
wait for 1 ns;
wait for 2 ns;
...
wait;
end process;
e2
e4
x1
Name: TObj
Typ: G3E
x2
y
x3
a
x4
Testein- und
Testausgabe
e3<='1';
- 1 ns
e1<='1'; e4<='1'; - 3 ns
⇒WEB-Projekt: G3/Test_G3E
Analyse mit ghdl -a Test_G3E.vhdl. Löst Hierarchie auf und
simuliert praktisch das 4-Prozess-Modell ab Folie 38.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 55/245
1. Simulation
5. Strukturbeschreibung
Zusammenfassung
Zur hierarchischen Strukturierung werden die Prozesse zu
Entwurfseinheit zusammengefasst, mit Schnittstellen
versehen und in übergeordnete Entwurfseinheiten als
Instanzen eingebunden.
Die oberste Ebene in der Beschreibungshierarchie eines
Simulationsmodells ist der Testrahmen, eine Entwurfseinheit
ohne Anschlüsse.
Bei der Schaltungsanalyse vor der Simulation wird die
Hierarchie wieder in einzelne über Signale kommunizierende
Prozesse das eigentliche Simulationsmodell aufgelöst.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 56/245
1. Simulation
Prof. G. Kemnitz
6. Speicher
Speicher
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 57/245
1. Simulation
6. Speicher
Speicher
Ein Speicher übernimmt seine Eingabedaten, wenn eine
Übernahmebedingung erfüllt ist, und speichert sie sonst. Es gibt
zustandsgesteuerte und
ankengesteuerte
Speicher. Zustandsgesteuerte Speicher (Latches, asynchrone
RAMs) haben eine Freigabe- oder Schreibeingang und
übernehmen, wenn dieser aktiv ist2 . Flankengesteuerte Speicher
(Register, synchrone RAMs) haben einen Takteingang und
übernehmen bei der aktiven Taktanke3 .
Die Übernahme- und Taktsignale müssen zeitgenau und
glitch-frei sein.
Bei einem high-aktiven Übernahmesignal bei eins und bei einem
low-aktiven Signal bei null.
3
Das wird in der Regel die steigende, kann aber auch die fallende sein. Bei
DDR (double data rate)-Speichern sind es beide.
2
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 58/245
1. Simulation
6. Speicher
Glitches und Wettläufe
Glitches sind kurze Pulse, die bei logischen Verknüpfungen von
Signalen mit unterschiedlicher Verzögerung entstehen:
x
1
0
t
Ein Ursache sind Wettläufe. Das sind fast zeitgleiche Änderungen
an mehreren Eingängen einer Teilschaltung. Auch wenn vor und
nach der Änderung derselbe Wert ausgegeben wird, können im
Änderungsmoment am Ausgang kurze Pulse auftreten.
td1
z
x1
x2
Prof. G. Kemnitz
td2
&
y
x1
x2
1
0
1
0
z
1
0
Impulse durch Wettläufe y
·
td1
td2
td2
td1
td2
td2
1
0
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 59/245
1. Simulation
6. Speicher
Hazards
Hazards sind Glitches, wenn gleichzeitig nur der Wert an einem
Eingang wechselt. Ursache sind rekonvergente4 Signalüsse mit
unterschiedlichen Verzögerungszeiten.
Schaltung
td1 td2 td1
td2
td1
x1
x2
&
&
vereinfacht
td1
td2
x1
x2
&
z2
4
y1
z1
y2
x1
1
0
x2
1
0
z1
1
0
y1
1
0
z2
1
0
y2
1
0
td2
td2 td1
td1
Hazard
td1
td2
td2
Verzweigende Signalüsse, die wieder zusammen treen.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 60/245
1. Simulation
6. Speicher
Bei Verarbeitungsfunktionen stören Glitches nicht, wenn die
Ausgabedaten, während sie sich ändern, nicht ausgewertet
werden. Übernahme- und Taktsignale von Speichern müssen
glitchfrei sein. Sonst erfolgen zu falschen Zeitpunkten
Übernahmen. Das resultierende Fehlverhalten ist oft nicht
reproduzierbar, d.h. es hängt z.B. auch von Fertigungsstreuungen
und der Temperatur ab.
Vor allem bei der Synthese, wenn das System automatisch aus
einer Funktionsbeschreibung erzeugt wird, hat der Entwerfer
wenig Kontrolle über die einzelnen internen Laufzeiten und damit
auf die Glitches an den Schaltungsausgängen.
Die in der Übung verwendeten programmierbaren
Logikschaltkreise haben spezielle Taktversorgungsschaltungen:
BUFG-Treiber für die Taktnetze und
die DLLs zur Phasenkorrektur, Taktvervielfachung etc.
siehe später Foliensatz F4. Es sei dringend empfohlen, diesbezügliche Warnungen nicht zu ignorieren.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 61/245
1. Simulation
6. Speicher
Latches
Ein Latch hat einen Dateneingang x, einen Datenausgang y und
ein Freigabesignal E (enable). Wenn das Freigabesignal aktiv ist,
werden die Werte am Eingang übernommen. Sonst wird
gespeichert. Das VHDL-Modell ist ein Prozess mit x und E in der
n
n
Weckliste und einer bedingten Zuweisung:
x
x L
y
process(x, E)
begin
if E='1' then
y <= x;
end if;
E
E
E
1
0
x
1
0
end process;
Ein Latch übernimmt allerdings nur dann
gültige Eingabewerte, wenn das Eingabesignal eine bestimmte Vorhaltezeit ts (setup
time) vor der Deaktivierung stabil anliegt.
Prof. G. Kemnitz
·
> ts
td
th
y
td
th
ts
E
n
> ts
td
th
1
0
Institut für Informatik, Technische Universität Clausthal
Verzögerungszeit
Haltezeit
Vorhaltezeit
Freigabeeingang
Bitbreite
17. Juni 2014 62/245
1. Simulation
6. Speicher
Die Tücken einer Schaltung mit Latches
signal x1, x2, y:
std_logic_vector(n-1 downto 0);
...
process(x1, x2)
b
begin
if x1=x2 then
a
y <= x1;
end if;
end process;
n
a
b
x
n
==
w1
w2
y
L
E
w3
w4
w3
td
th
E
1
0
Laut Zielfunktion wird der Wert von
F1
F2
a gespeichert, wenn er mit dem von
b übereinstimmt. Das dargestellte Simulationsmodell verhält sich
auch genauso, aber bei der Post-Place-and-Route-Simulation wird
sich die Schaltung anders verhalten und die programmierte oder
aufgebaute Schaltung wird sich noch anders verhalten.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 63/245
1. Simulation
Fehlersituation F1: Bei einer
Änderung von a ist dessen
Wert ungültig. Dabei ist nicht
für jede Änderung ausschlieÿbar,
dass er kurzzeitig gleich dem
von b ist, so dass das Latch den
Wert w3 oder den ungültigen
Wert davor übernimmt.
6. Speicher
n
a
b
a
x
n
==
w1
b
E
w3
w2
y
L
w4
w3
td
th
E
1
0
F1
F2
Fehlersituation F2: Das Freigabesignal E wird erst deaktiviert,
wenn a wieder ungleich b ist. Da der Vergleich das Signal von E
gegenüber der Änderung von b verzögert, wird der Wert w4 oder
der ungültige Wert davor übernommen.
Die in den Signalverläufen eingezeichnete Vorhaltezeit ts , Haltezeit th und Verzögerungszeit td lassen sich in das Simulationsmodell mit einprogrammieren (siehe später Foliensatz F3).
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 64/245
1. Simulation
6. Speicher
Ein Blockspeicher aus Latches
q0
x
E
y0
&
q1
x
E
y1
&
q2
x
E
y2
&
q3
x
E
y3
&
x
signal E: std_logic;
signal a: std_logic_vector(1 downto 0);
signal x, s, q, y0, y1, y2, y3, s:
s0
s1
std_logic_vector(3 downto 0);
a
Dec s2
...
s3
Dec:process(a)
E
begin
case a is
00
a 11
when "00" => s <= "0001";
s0 10
when "01" => s <= "0010";
s1 10
when "10" => s <= "0100";
E 10
when others => s <= "1000";
q0 10
end case;
q1 10
end process;
10
01
11
Ein Blockspeicher hat zusätzlich einen Adresseingang zur
Auswahl des Speicherplatzes. (Dec hier 1 aus 4 Decoder).
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 65/245
1. Simulation
x
&
a
s0
s1
Dec s2
s3
E
6. Speicher
q0
x
E
y0
q1
x
E
y1
&
q2
x
E
y2
&
q3
x
E
y3
&
a
s
11
00
10
01
11
1
00
s1 10
E 10
q0 10
q1 10
Die Schaltung funktioniert, wenn die Schaltung zur Erzeugung
der Freigabesignale qi die dargestellte Struktur hat, zuerst aus
der Adresse vier Auswahlsignale si zu bilden und diese erst
danach UND mit E zu verknüpfen. Die Synthese weiÿ das nicht
und wählt möglicherweise eine andere Struktur, z.B. vier LUTs
mit je s und E als Eingänge und qi als Ausgang. Wenn die
Funktion von der strukturellen Umsetzung abhängt, ist die
gewünschte Zielstruktur über Constraints zu erzwingen. Für
Anfänger nicht zu empfehlen.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 66/245
1. Simulation
6. Speicher
Register
Ein Register hat für die Übernahme einen Takteingang und
übernimmt nur bei der aktive Taktanke. Die einfachste
Realisierung ist mit zwei Latches (Master-Slave-Register).
x
T
T
1
0
x
1
0
z
1
0
y
1
0
Master
Slave
z
x
x
E
E
Symbol
y
x
y
T
Übernahmeflanke
Abtastfenster
Master speichert
Slave speichert
Das Simulationsmodell ist ein Prozess, der nur bei einer
Taktänderung geweckt wird und dann nur bei einer aktiven
Taktanke dem Ausgabesignal den Eingabewert zuweist.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 67/245
1. Simulation
6. Speicher
signal x, y: STD_LOGIC_VECTOR(n-1 downto 0);
signal T: STD_LOGIC;
ts , tn thr , tdr
...
process(T)
begin
if RISING_EDGE(T) then
y <= x;
end if;
n
n
y
T
ts
tn
w1
x
end process;
ts Vorhaltezeit
tn Nachhaltezeit
thr Haltezeit
x
T
y
w0
tdr Verzögerungszeit
Abtastfenster
Wert ungültig
wi
tn
ts
w2
w1
w2
thr
tdr
Signalwert
Das Eingabesignal muss um eine Vorhaltezeit th vor bis um eine
Nachhaltezeit tn nach der aktiven Taktanke stabil sein. Der alte
Ausgabewert bleibt noch mindestens für eine Haltezeit thr nach
der aktiven Taktanke und der neu Wert wird spätestens nach
der Verzögerung tdr ausgegeben. Dieses Zeitverhalten fehlt im
Modell. ·
Prof. G. Kemnitz
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 68/245
1. Simulation
6. Speicher
Register-Transfer-Funktion
Die Register einer Schaltung haben in der Regel denselben Takt.
Verarbeitungsfunktionen sind von Registern eingerahmt. Die
Verarbeitung beginnt mit der aktiven Taktanke und endet mit
der nächsten aktive Taktanke.
TP
TP
thr , tdr
thf , tdf
T
ts , tn
tdr
thr
x’ w0
x
x’
y = f (x)
y
y’
thf
T
TP Taktperiode
x’, y’ abgetastete Werte
y f (w0 )
w1
tdf
tdr
thr
w2
ts
tn
f (w1 )
thf
Die Werte von y sind im weiÿen Zeitfenster gültig und müssen
zur korrekten Übernahme im roten Zeitfenster gültig sein.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 69/245
1. Simulation
6. Speicher
TP
T
Die Summe aus den Verzögerungszeiten des Registers und der Verarbeitungsfunktion darf nicht gröÿer
als die Taktperiode sein
TP ≥ TPmin = tdr + tdf + ts
tdr
thr
x’ w0
thf
y f (w0 )
tdr
thr
w2
w1
tdf
ts
tn
f (w1 )
thf
und die Nachhaltezeit des Registers darf nicht gröÿer als die
Summe der Haltezeiten sein:
tn ≤ tnmax = thr + thf
Diese beiden Kontrollen hängen nicht von den zu verarbeitenden
Daten und Signalverläufen ab und sind ohne Simulation möglich
(siehe später Foliensatz F3, Abschn. 3.2). Bei Register-TransferFunktionen mit einer sauberen Taktverteilung braucht die
Simulation nur das logische Verhalten zu kontrollieren. Dafür
genügt das Modell auf der Folie zuvor.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 70/245
1. Simulation
6. Speicher
Register mit Freigabe- und Initialisierungseingang
Die Initialisierung von Registern erfolgt meist zustandsgesteuert.
Bei aktivem Initialisierungssignal wird ein Anfangswert (0 oder 1)
und sonst bei aktiver Taktanke der Eingabewert übernommen.
signal x, y: STD_LOGIC_VECTOR(n-1 downto 0);
signal E, I, T: STD_LOGIC;
...
x
process(I, T):
E
T
begin
I
if I='1' then y <= aw;
elsif E='1' and RISING_EDGE(T) then y <= x;
end if;
end process;
0
1
Master
x
E
x
E
I
T
Slave
x
E
I
y
Symbol
x
y
E
I
Die Erweiterung um einen Freigabeeingang erfolgt hier
über einen Multiplexer. Bei aktivem Freigabesignal E gibt dieser
den Eingabewert x und sonst y an den Registereingang weiter.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 71/245
1. Simulation
6. Speicher
Gepulstes Latch als Register
thL , tdL
td1
&
T
ts
tn
thr
tdr
x
z
Vorhaltezeit
Nachhaltezeit
Registerhaltezeit
Registerverzögerung
n
E
x
n
y
E
td2
Wert ungültig
Abtastfenster
wi Datenwert
T
1
0
z
1
0
E
1
0
td1
td2
td2
ts = 0
tn = td1
w1
x
tdR = tdL
Bezugszeit der ⇒
thR = thL
Übernahme
y
w0
w1
Man kann auch ein einfaches Latch zu einem Register erweitern,
indem man mit der dargestellten Schaltung aus der aktiven
Taktanke einen kurzen Freigabeimpuls erzeugt. Das halbiert den
Schaltungsaufwand für Register. Dafür ist die Lösung
empndlicher gegenüber Laufzeitungenauigkeiten, d.h. schwerer
zu entwerfen.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 72/245
1. Simulation
Prof. G. Kemnitz
7. Aufgaben
Aufgaben
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 73/245
1. Simulation
7. Aufgaben
Aufgabe 1.1: Signalverlauf
ϕ(b0 )
ϕ(b1 )
ϕ(b2 )
ϕ(b3 )
b = b3 b 2 b 1 b 0
0001
– gesucht –
t
In welchen Zeitbereichen ist der Signalvektor ungültig?
Welchen Wert hat er in den Gültigkeitsfenstern?
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 74/245
1. Simulation
7. Aufgaben
Aufgabe 1.2: Typen und Datenobjekte
Vereinbaren Sie folgende Datenobjekte:
ein Signal mit dem Typ INTEGER und dem Anfangswert 30,
eine Konstante vom Typ BOOLEAN und dem Anfangswert
TRUE und
eine Bitvektorvariable vom STD_LOGIC_VECTOR,
Indexbereich von 3 bis 0 absteigend und dem Anfangswert
alles null.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 75/245
1. Simulation
7. Aufgaben
Aufgabe 1.3: Ausdruck ⇔ Berechnungsuss ⇔
Signaluss
x1 ∧ x2 ∧ x̄3 ∧ x̄1 ∧ x̄2 ∧ x̄3
Zeichnen Sie den Berechnungsbaum unter Verwendung der
ein- und zweistelligen logischen Operationen Invertierung,
UND und ODER.
Zeichnen Sie den Signalussplan unter Verwendung von
Invertern sowie UND- und NAND-Gattern mit n Eingängen.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 76/245
1. Simulation
7. Aufgaben
Aufgabe 1.4: Signale und Variablen
Welche Werte schreiben die einzelnen Write-Anweisungen?
- Vereinbarungsteil der Entwurfseinheit
signal a:
INTEGER
:= 0;
- Vereinbarungsteil des Prozesses
variable b: INTEGER := 0;
- Anweisungsteil des Prozesses
Z1: a <= a +1 after 0.5 ns; b :=
A1: write("a=" & str(a) & " b="
W1: wait for 1 ns;
A2: write("a=" & str(a) & " b="
Z2: a <= a +1 after 0.5 ns; b :=
A3: write("a=" & str(a) & " b="
Z3: a <= a +1 after 0.5 ns; b :=
A4: write("a=" & str(a) & " b="
W2: wait for 1 ns;
A5: write("a=" & str(a) & " b="
Prof. G. Kemnitz
·
b+1;
& str(b));
& str(b));
b+1;
& str(b));
b+1;
& str(b));
& str(b));
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 77/245
1. Simulation
7. Aufgaben
Aufgabe 1.5: Bestimmung von Signalverläufen
Gegeben sind eine einfache Gatterschaltung und die
Signalverläufe an den Eingängen x0 bis x2 .
td = 1 ns td = 1 ns
x0
z
&
&
y
x1
x2
x0
x1
x2
z
1
0
1
0
1
0
1
0
y
1
0
0 2 4 6 8 10 12 tsim
1
2
Beschreiben Sie tabellarisch, zu welchen Zeitpunkten sich in
der Simulation welchen Signalen welcher Wert zugewiesen
wird.
Bestimmung der Signalverläufe von z und y .
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 78/245
1. Simulation
7. Aufgaben
Aufgabe 1.6: Entwurfsfehler
Gegeben sind das Simulationsmodell eines UND-Gatters und die
Eingabesignalverläufe.
signal a, b, c: STD_LOGIC;
...
process
begin
c <= a and b after 2 ns;
wait on a, b;
end process;
1
2
3
a
1
0
b
c
1
0
1
0
0 2 4 6 8 10 12 tsim
Skizzieren Sie den Ausgabesignalverlauf c des korrekten
Simulationsmodells.
Skizzieren Sie den Ausgabesignalverlauf, wenn in der
Warteanweisung das Signal b fehlt.
Was passiert, wenn die gesamte Warteanweisung vergessen
wurde? Warum ist der Fehler schwer zu lokalisieren?
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 79/245
1. Simulation
7. Aufgaben
Aufgabe 1.7: Hierarchie auösen
Gegeben sind die Strukturbeschreibung der Gesamtschaltung und
die Funktionsbeschreibung des Teilschaltungstyps.
entity Gxx is
port(a, b, c: in STD_LOGIC;
d: out STD_LOGIC);
end entity Gxx;
architecture Verhalten of Gxx is
x1
x2
x3
G1
Gxx
a
b
c
d
x4
z
G2
Gxx
a
b
c
d
y
begin
d<=(a and not c) or (b and c) after 1 ns;
end architecture;
1
2
Zeichnen Sie die Teilschaltung und die Gesamtschaltung.
Erstellen Sie eine VHDL-Strukturbeschreibung der
Gesamtschaltung.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 80/245
1. Simulation
7. Aufgaben
Aufgabe 1.8: Testrahmen
Erstellen Sie für die Schaltung aus der Aufgabe zuvor einen
Testrahmen, der nacheinander im Abstand von 5 ns folgende
Eingabewerte an x4 . . . x1 anlegt: 0000, 0001, 0011, 0111
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 81/245
1. Simulation
7. Aufgaben
Aufgabe 1.9: Rückgekoppeltes Schieberegister
1
2
3
Beschreiben Sie das nachfolgende rückgekoppelte Schieberegister in VHDL mit Schnittstelle und nur einem Prozess.
Bestimmen Sie die Ausgabesignalverläufe für y1 bis y3 .
Schreiben Sie einen Testrahmen mit dem rückgekoppelten
Schieberegister als Testobjekt und einem Prozess, der die
Eingabesignale rechts erzeugt.
=1
I
I
T
Prof. G. Kemnitz
·
I
I
y1
y2
y3
I
T
1
0
1
0
y1 10
y2 10
y3 10
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 82/245
2. Synthese
Prof. G. Kemnitz
Synthese
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 83/245
2. Synthese
Synthese
Die Synthese erzeugt aus einer Funktionsbeschreibung eine
funktionsgleiche Schaltung. Das setzt voraus, dass die
Beschreibung die einer vernünftig realisierbaren und
laufzeittoleranten Schaltung ist. Die beiden laufzeittoleranten
Schaltungsformen sind
kombinatorische Schaltung und
Register-Transfer-Funktion.
Für kombinatorische Schaltungen lässt sich immer eine minimale
Halte- und eine maximale Verzögerungszeit angeben.
Register-Transfer-Funktionen mit einer sauberen Taktverteilung
funktionieren immer ab einer bestimmten Mindesttaktperiode.
Laufzeitkritischere Funktionen, z.B. solche mit Latches,
Takterzeugungs- und Taktverteilerschaltungen, verlangen
professionelle Handentwürfe bzw. umfangreiche Platzierungs-,
Verdrahtungs- und Laufzeit-Constraints für die Synthese.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 84/245
2. Synthese
Beschreibung der Zielfunktion
Die Zielfunktion für die Synthese wird in einer Hochsprache
beschrieben: VHDL, Verilog, System-C, ... Beschreibungsmittel:
bitorientierte Ausdrücke mit den Operatoren UND, ODER,
NAND, EXOR, ...
bitvektororientierte Ausdrücke mit bitweisen
Logikoperatoren, den arithmetischen Operatoren (+, -, *)5 ,
Verschiebeoperatoren und Vergleichsoperatoren,
Kontrollstrukturen: Fallunterscheidung,
Generierungsschleifen, Unterprogramme, Makros6 .
Die Synthese bildet die Funktion einer so beschriebenen Schaltung aus Gattern, Multiplexern, Rechenwerken, Komparatoren
und Registern nach und optimiert dann.
5
6
Nur Operatoren für 1-Schritt-Berechnungen, z.B. keine Division.
Vorentworfene Teilschaltungen
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 85/245
2. Synthese
Prof. G. Kemnitz
1. Verarbeitungsfunktionen
Verarbeitungsfunktionen
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 86/245
2. Synthese
1. Verarbeitungsfunktionen
Digitale Verarbeitungsfunktionen
Eine digitale Verarbeitungsfunktion bildet ganz allgemein ein
m-Bit-Eingabesignal x auf ein n-Bit-Ausgabesignal y ab. Beide
Signalvektoren können sich aus Einzelbits oder Teilbitvektoren
zusammensetzen.
Eingabesignale
a → x0
b → x4:1
Einzelbits
und Bitvektoren
Verarbeitungsfunktion
x
f (x)
konkateniert
zu einem
Gesamtvektor
Ausgabesignal
y
y7:0 → db
y8 → w
gesamter
Aufspaltung
Ergebnis- in Teilvektoren
vektor und Einzelbits
Auÿer der vorgegebenen Funktion f (x) werden oft Obergrenzen
für die Verzögerung und weitere Zeitbedingungen, minimierter
Aufwand, minimierter Stromverbrauch ... gefordert.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 87/245
2. Synthese
1. Verarbeitungsfunktionen
Beschreibungsschablonen in VHDL
Das Beschreibungsmodell einer Verarbeitungsfunktion für die
Synthese ist ein Prozess mit allen Eingabesignalen in der
Weckliste, der bei jedem Durchlauf allen Ausgabesignalen einen
neuen Wert ohne After-Klausel zuweist. Die Synthese übersetzt:
logische Operatoren in Gatter,
arithmetische Operatoren in Rechenwerke,
Vergleichsoperatoren in Komparatoren und
Fallunterscheidungen in Multiplexer.
Zwischenergebnisse sind in Variablen zu speichern7 . Unterprogramme werden Teilschaltungen und Schleifen werden aufgerollt.
Aufteilung in mehrere Prozesse ist möglich. Die Synthese
übersetzt Prozesse einzeln und fügt die Schaltungen zusammen.
7
Signale übernehmen zugewiesene Werte erst nach Weiterschalten der
Simulationszeit. Ohne Verzögerungsangabe, wenn der Prozess schläft.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 88/245
2. Synthese
1. Verarbeitungsfunktionen
Beschreibung & Extraktion einer Gatterschaltung
signal x: STD_LOGIC_VECTOR(4 downto 0);
signal y: STD_LOGIC_VECTOR(1 downto 0);
...
process(x)
variable v: STD_LOGIC_VECTOR(1 downto 0);
begin
A1: v(0):= x(0) and x(1);
A2: v(1):= v(0) nor x(3);
A1
A3: y(0)<=(v(0) and
v0
x0
A3
&
x(2)) or v(1);
&
x1
y0
≥1
A4: y(1)<=((not x(4)) x2
or x(3)) nand v(1);
A2
≥1
end process;
x3
v1 &
y1
A4
⇒Web-Projekt: P2.1/Extr LS.vhdl
Prof. G. Kemnitz
·
x4
≥1
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 89/245
2. Synthese
1. Verarbeitungsfunktionen
VHDL hat die logischen Operatoren not, and, nand, or, nor, xor
und xnor. Not hat Vorrang. Die Ausführungsreihenfolge der
zweistelligen Operationen ist mit Klammern festzulegen. Die
Logikoperationen können auf Bittypen (bit, boolean oder
std_logic) und gleichgroÿe Bitvektortypen (bit_vector,
std_logic_vector, signed und unsigned) sowie als
Reduktionsoperator von Bitvektor auf Bit angewendet werden.
signal x: STD_LOGIC_VECTOR(3 downto 0);
signal y: STD_LOGIC;
signal a, b, c: STD_LOGIC_VECTOR(1 downto 0);
...
process(x)
x0
begin
x1
&
A1: y <= and x;
x2
A2: c <= a and b;
x3
end process;
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
y
a0
b0
a1
b1
&
c0
&
c1
17. Juni 2014 90/245
2. Synthese
1. Verarbeitungsfunktionen
Aus Fallunterscheidungen werden Multiplexer
Bei einer Fallunterscheidung muss dem Zuweisungsziel in jedem
Kontrollpfad ein Wert zugewiesen werden. If-Elsif wird durch eine
Multiplexerkette nachgebildet:
signal a, b, c, p, q, y: STD_LOGIC;
...
process(a, b, c, p, q)
begin
if p='1' then y <= a;
elsif q='1' then y <= b;
else
y <= c;
end if;
end process;
a
b
c
1
0
q
1
0
y
p
⇒Web-Projekt: P2.1/SynthMux2.vhdl
Statt Else-Zweig, bedingtes Überschreiben eines vorher
zugewiesenen Wertes. Auch für Signale möglich:
y <= c; if p='1' then y <= a; end if;
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 91/245
2. Synthese
1. Verarbeitungsfunktionen
Case-Anweisung für groÿe Multiplexer
signal s: STD_LOGIC_VECTOR(1 downto 0);
signal x1,x2,x3,x4, y: STD_LOGIC_VECTOR(3 downto 0);
...
process(s, x1, x2, x3, x4)
begin
case s is
when "00" => y <= x1;
when "01" => y <= x2;
when "10" => y <= x3;
when others => y <= x4;
end case;
end process;
x1
x2
x3
x4
s
4
4
4
4
00
01
10
4
y
11
2
⇒Web-Projekt: P2.1/SynthCase.vhdl
Im Beispiel hat der Multiplexer je einen Dateneingang für drei
Auswahlwerte und den Sonst-Fall. Der letzte Fall s = ”11” muss
others sein. In der Simulation erfasst other auch "0X", ...
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 92/245
2. Synthese
1. Verarbeitungsfunktionen
Eine Auswahlanweisung, mehrere Multiplexer
case s is
when w1 w2 =>
when w3
=>
when w4
=>
end case;
v := vsonst ;
u := usonst ;
u := a;
u := b;
v := c;
v := d;
Mux2
Mux1
a
t1
w1 w2
t1
b
u
w3
t1 sonst
usonst
s
t1
{w1, w2, w3, ...}
c
d
vsonst
t2
t2
t2
w3
w4
sonst
t2
v
t1, t2 – beliebige Bit- oder Bitvektortypen
Zuweisung eines Standardwertes vor der Auswahlanweisung.
Überschreiben des Standardwertes für Auswahlwerte, die einen
anderen Wert zuordnen.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 93/245
2. Synthese
1. Verarbeitungsfunktionen
Beschreibung einer Wertetabelle mit einer
Auswahlanweisung
signal x:
signal y:
...
STD_LOGIC_VECTOR(3
STD_LOGIC;
downto 0);
process(x)
begin
case x is
when "1000"|"0100"|"0010"|"0001"
=> y <= '1';
when others => y <= '0';
end case;
end process;
Prof. G. Kemnitz
x3 x2 x1 x0 y
0
0
0
1
0 0
0 1
1 0
0 0
sonst
1
0
0
0
1
1
1
1
0
⇒Web-Projekt: P2.1/SynthWTab.vhdl
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 94/245
2. Synthese
1. Verarbeitungsfunktionen
Vergleichsoperationen und Komparatoren
Die Vergleichoperationen für Bedingungen =, /= (ungleich),
> etc. werden durch Komparatoren nachgebildet. Tests auf
Gleich- oder Ungleichheit sind für alle Bit- und Bitvektortypen
möglich, Gröÿenvergleiche nur für Zahlentypen (integer, natural,
positive) und die Bitvektortypen zur Zahlendarstellung:
- für ganzzahlige vorzeichenfreie Zahlen
unsigned is array (NATURAL range <>) of STD_LOGIC;
- für ganzzahlige vorzeichenbehaftete Zahlen
signed is array (NATURAL range <>) of STD_LOGIC;
signal a, b: [un]signed(n-1 downto 0); signal y: std logic;
a
b
a
b
n
n
==
y<=(a=b);
1 wenn a = b
0 sonst
/=
y<=(a/=b);
1 wenn a 6= b
0 sonst
n
n
Prof. G. Kemnitz
·
a
b
a
b
n
n
<
y<=(a<b);
1 wenn a < b
0 sonst
<=
y<=(a<=b);
1 wenn a ≤ b
0 sonst
n
n
a
b
a
b
n
>
y<=(a>b);
1 wenn a > b
0 sonst
>=
y<=(a>=b);
1 wenn a ≥ b
0 sonst
n
n
n
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 95/245
2. Synthese
1. Verarbeitungsfunktionen
Addition, Subtraktion und Multiplikation
Arithmetische Operationen sind kompliziertere Algorithmen, die
in einem oder mehreren Schritten ausgeführt werden. Für die
Ausführung in einem Schritt eignen sich Addition, Subtraktion
Inkrement (+1), Dekrement (-1), Negation, Betrag und
Multiplikation für positive ganze Zahlen und vorzeichenbehaftete
Zahlen im Zweierkomplement. Beispiel Bildung des Betrags:
signal x: signed(7 downto 0);
signal y, unsigned(7 downto 0);
...
process(a, b)
begin
”00...0”
if (x>0) then
y<=unsigned(x);
else
y<=unsigned(-x);
x
a
a−b
b
0
1
y
a
a≥b
b
end process;
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 96/245
2. Synthese
1. Verarbeitungsfunktionen
Die Funktion unsigned(x) ändert den Typ in vorzeichenfrei8 . Der
Betrag lässt sich mit weniger Schaltungsaufwand bilden. Im
Zweierkomplement ist das führende Bit das Vorzeichenbit und die
Negation ist die bitweise Negation plus eins. Bei führendem Bit
eins ist das Ergebnis der negierte Eingabevektor plus eins.
signal x: signed(7 downto 0);
signal y, unsigned(7 downto 0);
...
process(a, b)
begin
if (x(7)='0') then
y<=unsigned(x);
else
y<=unsigned((not x)+'1');
end process;
x
+1
0
1
y
x7
VHDL hat eine sehr strenge Typenprüfung. Für eng verwandte Typen,
die Zahlentypen integer, natural und positive untereinander und die
Bitvektortypen std_logic_vector, unsigned und signed untereinander, ist
der Name der Konvertierfunktion gleich dem Namen des Zieltyps.
8
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 97/245
2. Synthese
1. Verarbeitungsfunktionen
Bei der Addition ist die Bitanzahl der Summe gleich der des
längsten Summanden. Um auch das Übertragsbit mit zu
erhalten, muss an den längsten Summanden eine führende Null
angehängt werden. Die Bitanzahl des Produkts ist gleich der
Summe der Anzahl der Bits der Faktoren. Im Beispiel werden 3
Bits mit einer 4-Bit-Konstanten multipliziert. Das 7-Bit-Produkt
wird um eine führende Null erweitert, damit die nachfolgende
Addition den Übertrag als achtes Bit berechnet.
signal a, b: unsigned(2 downto 0);
signal y: unsigned(7 downto 0);
...
process(a, b)
variable v: unsigned(6 downto 0);
begin
4
”1010”
A1: v:= a * "1010";
A2: y <= ('0'&v) + b;
end process;
Prof. G. Kemnitz
·
a
b
3
’0’
8
Mult
7
Institut für Informatik, Technische Universität Clausthal
3
Add
8
y
17. Juni 2014 98/245
2. Synthese
1. Verarbeitungsfunktionen
Bedingte Zähloperation
Eine naheliegende Beschreibung einer bedingten Zähloperation
ist, daÿ nur bei erfüllter Bedingung gezählt wird:
signal a, y: unsigned(n-1 downto 0);
signal c: unsigned(0 downto 0);
n
...
a
if c="0" then y <= a;
else y <= a +"1";
end if;
+1
n
1
0
n
c
Eine funktionsgleiche einfachere Beschreibung ist die Addition
n
der Inkrement-Bedingung:
n
y <= a + c;
y
a
c
+
y
Die Synthese führt viele Optimierungen selbstständig aus. In
Zweifelsfällen Syntheseergebnis ansehen und gegebenenfalls die
Beschreibung der Zielfunktion nachbessern.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 99/245
2. Synthese
1. Verarbeitungsfunktionen
Schaltung zur wahlweisen Addition und Subtraktion
signal a, b: unsigned(n-1 downto 0);
signal y: unsigned(n downto 0);
signal c, s: std_logic;
...
if s='0' then y <= ('0'& a)+b+c;
else y <= ('0'& a)-b-c;
end if;
-----------------------------
-- optimierte Beschreibung
variable vb: unsigned(n-1 downto 0);
variable vc: unsigned(0 downto 0)
...
if s='0' then vb:=b; vc(0):=c;
else vb:=not b; vc(0):= not c;
end if;
y <= ('0'& a)+vb+vc;
Prof. G. Kemnitz
·
a
b
c
n
n
n
+
n+1
0
1
y
+
n+1
s
⇓
Umschalter vor dem Addierer
n
a
n+1
n
y
+
b
0
1
c
s
⇓
Vereinfachung der Bitscheibenop.
a
b
=1
+
y
c
=1
s
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 100/245
2. Synthese
1. Verarbeitungsfunktionen
Eine etwas kompliziertere Berechnung
signal a, b, y: unsigned(3 downto 0);
signal e, f: STD_LOGIC;
...
process(a, b, e, f)
a
begin
b
if (a>"0011") and
(e or f) ='1' then
y <= a+b;
else
y <= b;
end if;
end process;
4
Add
4
0011
e
f
4
1
0
4
y
>
&
≥1
⇒Web-Projekt: P2.1/SynthRW2.vhdl
Es mangelt nicht an Fehlermöglichkeiten: falsche Bitanzahl,
falsche Datentypen, Denkfehler, zu kleine Wertebereiche, unberücksichtigte Sonderfälle, ... Komplexere Funktionen simulieren!
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 101/245
2. Synthese
1. Verarbeitungsfunktionen
Schleifen
Schleifen zur Beschreibung von Verarbeitungsfunktionen sind mit
Vorsicht anzuwenden. Sie beschreiben keine zeitliche Wiederholung, sondern ein Schaltungsgenerierung. Im Beispiel die
EXOR- Verknüpfung der Bits eines Bitvektors:
y = xn−1 ⊕ xn−1 ⊕ . . . ⊕ x1 ⊕ x0
Schleife mit Ausführung von rechts nach links:
x0
variable x, z: std_logic_vector(n-1 downto 0); x1
...
x2
begin
z(0):=x(0);
for idx in 1 to n-1 loop
z(idx):=z(idx-1) xor x(idx);
end loop;
z0
=1
z1
=1
z2
···
xn−1
=1
zn−1
längster Signalpfad
Das Ergebnis ist eine Kette, in der alle Operationen nacheinander
ausgeführt werden.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 102/245
2. Synthese
1. Verarbeitungsfunktionen
Bäume statt Ketten
Die Gesamtverzögerung ist die Summe der Einzelverzögerungen.
EXOR-Verknüpfungen sind assoziativ. Geschickt geklammert
x6 ⊕ . . . ⊕ x1 ⊕ x0 = ((x1 ◦ x0 ) ◦ (x3 ◦ x2 )) ◦ ((x4 ◦ x5 ) ◦ x6 )
(◦ assoziative Operation) wird aus der Kette ein Baum, bei dem die
Verzögerungszeit nur noch logarithmisch mit der Anzahl der
Operationen zunimmt.
tdOp
tdOp tdOp tdOp tdOp tdOp tdOp
x0
x1
y
x2
x3
x4
x5
x6
tdKette = n · tdOp
Pfad der längsten Verzögerung
Prof. G. Kemnitz
·
a)
tdOp
x0
x1
x2
x3
x4
x5
x6
tdOp
y
b)
tdBaum ≈ log2 (n) · tdOp
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 103/245
2. Synthese
1. Verarbeitungsfunktionen
Generierungsschleife für Bäume
Eine Schleife kann auch Bäume generieren:
type tVektortyp is (natural range <>) of tTyp;
variable x: tVektortyp(n-1 downto 0);
variable z: tVektortyp(2*n-2 downto 0);
...
begin
z(x'range):=x;
for idx in 0 to n-1 loop
z(idx+n):=z(2*idx) ◦ z(2*idx+1);
end loop;
z7
x0 , z0
x1 , z1
x2 , z2
x3 , z3
x4 , z4
x5 , z5
x6 , z6
z10
z12
z8
z11
z9
Rückgabewert
lokale Variablen
Eingabe
Das ist ein etwas komplizierterer Algorithmus,
der sich nur für ein parametriertes Modell mit variabler Anzahl
von Operationen lohnt. Für eine Schaltung aus 6 Gattern ist ein
geklammerter Ausdruck übersichtlicher und weniger
fehleranfällig.
·
Prof. G. Kemnitz
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 104/245
2. Synthese
Prof. G. Kemnitz
2. Register-Transfer-Funktion
Register-Transfer-Funktion
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 105/245
2. Synthese
2. Register-Transfer-Funktion
Register-Transfer-Funktion
Eine Register-Transfer-Funktion ist eine Verarbeitungsfunktion,
eingerahmt von Registern, die ihre Übernahmeanken zeitgleich
bekommen. Das Simulationsmodell ist ein Abtastprozess mit
Neuberechnung mit jeder aktiven Taktanke.
process(T)
begin
if RISING_EDGE(T) then
- oder elsif FALLING_EDGE(T) then
x
y
f (x)
T
x <= ...; - Uebernahme in das Eingaberegister
y <= f(x); - Verarbeitung + Ergebnisabtastung
end if;
end process;
Ein Abtastprozess kann eine Schaltung mit mehreren Registern
mit gemeinsamen Takt und gleicher Übernahmeanke beschreiben, im Beispiel mit einem Ein- und einem Ausgaberegister.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 106/245
2. Synthese
2. Register-Transfer-Funktion
Zusätzliche Registerinitialisierung
Die Initialisierung von Registern erfolgt meist zustandsgesteuert
für alle Register gemeinsam. Bei aktivem Initialisierungssignal
wird eine Konstante und sonst bei aktiver Taktanke der Eingabewert übernommen. Wie später auf Foliensatz F3 gezeigt wird,
muss das Initialisierungssignal zeitlich zum Takt ausgerichtet sein.
process(I, T)
begin
if I='1' then - oder if I='0' then
x
I
T
I
f (x)
y
I
x<=(others=>'0'); - x mit alles null initial.
y<="0110000";
- y initialisieren
elsif rising_edge(T) then - oder falling_edge(T)
x <= ...; - Uebernahme in das Eingaberegister
y <= f(x); - Verarbeitung + Ergebnisabtastung
end if;
end process;
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 107/245
2. Synthese
2. Register-Transfer-Funktion
Registerextraktion
Was für Register beschreiben die nachfolgenden drei Prozesse?
Welche Anschlusssignale sind Daten-, Takt- und Initialisierungseingänge und welche sind Datenausgänge? Mit welchen Werten
werden die initialisierbaren Register initialisiert?
signal a,b,c,d: STD_LOGIC;
signal K,L,M: STD_LOGIC_VECTOR(2 downto 0);
process(a)
begin
if RISING_EDGE(a) then
K(0) <= d;
K(1) <= K(0);
K(2) <= K(1);
end if;
end process;
Prof. G. Kemnitz
·
process(b, c)
begin
if c='1' then
L <= "000";
elsif FALLING_EDGE(b)
then
L <= K;
end if;
end process;
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 108/245
2. Synthese
2. Register-Transfer-Funktion
process(a, c)
begin
if c='0' then
M <= "010";
elsif RISING_EDGE(a)
then
M <= K;
end if;
end process;
Anschlusssignale und Parameter der beschriebenen Register:
Dateneingangssignal
d
K(0)
K(1)
K
K
Datenausgangssignal
K(0)
K(1)
K(2)
L
M
Bitbreite
1
1
1
3
3
Taktsignal
a↑
a↑
a↑
b↓
c (H)
a↑
c (L)
000
010
Initialisierungssignal
Initialisierungswert
↑ steigende Flanke; ↓ fallende Flanke; H high-aktiv; L low-aktiv
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 109/245
2. Synthese
2. Register-Transfer-Funktion
Kombinatorische Schaltung mit Ausgaberegister
signal a, b, y: STD_LOGIC_VECTOR(4 downto 0);
signal T, e, f: STD_LOGIC;
...
process(T)
begin
4
if RISING_EDGE(T) then
a
if (a>"0011") and
+
4
b
(e or f) ='1' then
y <= a+b;
else
y <= b;
end if;
end if;
end process;
Prof. G. Kemnitz
0011
e
f
4
1
0
4
4
y
T
>
&
≥1
Abtastregister
kombinatorische
Schaltung
⇒Web-Projekt: P2.1/SynthRW2Reg.vhdl
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 110/245
2. Synthese
2. Register-Transfer-Funktion
Abtastregister mit bedingter Übernahme
signal x, y: STD_LOGIC_VECTOR(n-1 downto 0);
signal T, E: STD_LOGIC;
...
n
process(T)
0
n 1
begin
x
if RISING_EDGE(T) then
E
if E='1' then
y <= x;
end if;
end if;
end process;
x
E
n
n
n
y
T
n
x
E
y
T
Eine bedingte Übernahme wird mit einem Multiplexer
nachgebildet. Bei erfüllter Übernahmebedingung, im Beispiel
E = '1', wird der Eingabewert und sonst der Ist-Wert zum
Registereingang weitergeleitet.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 111/245
2. Synthese
2. Register-Transfer-Funktion
signal y: unsigned(3 downto 0);
signal T, I, V, R: STD_LOGIC;
...
process(T, I)
+1
begin
−1
if I='1' then
y<="0000";
4
4
4
1
0
4
1
0
4
x
I
4
y
elsif RISING_EDGE(T) then
if V='1' then y <= y+"1";
R
V I
T
elsif R='1' then y <= y-"1";
end if;
In einem kombinatorischen
end if;
Prozess sind Rückführungen der Form
end process;
y<=y+"1" verboten. Denn sie würden
ein Weiterzählen in Zeitschritten undenierter
Dauer, d.h. ein undeniertes nicht synthetisierbares Verhalten
beschreiben. In einem Abtastprozess, der in jeder Taktperiode
genau einmal geweckt wird, ist das ein wohldeniertes, durch eine
Schaltung nachbildbares Verhalten.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 112/245
2. Synthese
2. Register-Transfer-Funktion
Speicherverhalten von Variablen
signal T, x, y: STD_LOGIC;
...
process(T)
variable z: STD_LOGIC_VECTOR(2 downto 0);
begin
if RISING_EDGE(T) then
z0
y <= z(2); z(2):=z(1);
z(1):=z(0); z(0):=x;
end if;
end process;
x
T
z1
z2
y
⇒Web-Projekt: P2.1/VarSR.vhdl
Ein Signal übernimmt zugewiesene Werte erst, wenn der Prozess
schläft, eine Variable sofort. Variablen, die nach dem Wecken
zuerst gelesen und dann beschrieben werden, verzögern um eine
Taktperiode und beschreiben Register. Im Beispiel werden aus
den drei Variablenzuweisungen drei Register.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 113/245
2. Synthese
2. Register-Transfer-Funktion
signal T, x, y: STD_LOGIC;
...
process(T)
variable z: STD_LOGIC_VECTOR(2 downto 0);
begin
if RISING_EDGE(T) then
z(0) := x; z(1) := z(0);
z(2) := z(1); y <= z(2);
x
T
y
end if;
end process;
Bei Umkehrung der Zuweisungsreihenfolge wird bei jeder aktiven
Taktanke der aktuelle Wert von x, statt des von drei Takten
zuvor an y zugewiesen. Das beschreibt eine Schaltung mit nur
einem Register. (Lokale) Variablen sind nur innerhalb des
Prozesses sichtbar. Andere Prozesse haben keinen Zugri auf ihre
Werte. Für durch Variablen modellierte Register sind die
Zustände bei der Simulation nicht als Signalverläufe darstellbar.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 114/245
2. Synthese
2. Register-Transfer-Funktion
Speicherverhalten bedingter Variablenzuweisungen
signal T, a, b, c, y0, y1:
...
process(T)
variable v: STD_LOGIC;
begin
if RISING_EDGE(T) then
A1: y0 <= v xor a;
if b='1' then
A2:
v:= c;
end if;
A3: y1 <= v xor a;
end if;
end process;
STD_LOGIC;
Variable v
für Anweisung A3
0
1
c
Variable v für
Anweisung
A1 und A2
=1
b
=1
a
y0
y1
T
⇒Web-Projekt: P2.1/BedVarZuw.vhdl
Variablenzuweisungen in Fallunterscheidungen, denen im
Berechnungsuss davor kein Wert zugewiesen wird, haben eine
nicht einfach zu verstehende Wirkung. Besser nicht benutzen!
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 115/245
2. Synthese
Prof. G. Kemnitz
3. Typische Beschreibungsfehler
Typische Beschreibungsfehler
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 116/245
2. Synthese
3. Typische Beschreibungsfehler
Entwurfsfehler und Fehlervermeidung
Synthesebeschreibungen haben ihre typischen Entwurfsfehler,
darunter auch einige, die nur das Zeitverhalten und/oder die
Zuverlässigkeit der synthetisierten Schaltung beeinträchtigen und
dadurch schwer zu nden sind.
Übersetzungsnachrichten, die nicht ignoriert werden sollten:
kombinatorisch erzeugtes Taktsignal und
Latches gefunden,
maximale Taktfrequenz unter der geforderten, ...
Weitere gefährliche Fallen (siehe später Foliensatz F3):
fehlende Abtastung asynchroner Eingabesignale,
nicht synchronisiertes Initialisierungssignal,
fehlende und falsche Constraints,
ungewolltes Schwing- und Speicherverhalten, ...
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 117/245
2. Synthese
3. Typische Beschreibungsfehler
Speicherverhalten in kombinatorischen Prozessen
signal x1, x2, sz, y, yF1, yF2, yF3:
korrekt
process (x1, x2);
variable z: STD LOGIC ;
begin
z := x1 and x2;
y <= not z;
end process;
process (x1, x2);
begin
sz <= x1 and x2;
yF2 <= not sz;
end process;
F2
STD LOGIC
;
process (x1);
variable z: STD LOGIC ;
begin
z := x1 and x2;
yF1 <= not zb;
end process;
process (x1, x2);
variable z: STD LOGIC ;
begin
yF3 <= not z;
z := x1 and x2;
end process; warte
F1
F3
x1
x2
&
x1
1
0
x2
1
0
y
1
0
yF1
1
0
yF2
1
0
yF3
1
0
z
y
Fehlverhalten
Soll-Verhalten
F1: fehlendes Signal in der Weckliste; F2: Signal statt Variable
als Zwischenspeicher; F3: Variablenwert vor der Zuweisung
ausgewertet.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 118/245
2. Synthese
3. Typische Beschreibungsfehler
Fallunterscheidung mit fehlender Zuweisung
signal x1, x2, x3, y: std_logic_vector(3 downto 0);
signal s: std_logic_vector(1 downto 0);
...
4
process(s, x1, x2, x3)
x1
00
4
4
begin
01
x2
4
case s is
x L
x3
10
when "00" => y <= x1;
2
s
&
E
when "01" => y <= x2;
when "10" => y <= x3;
4
when others => null;
x1
00
- Korrektur: y <= x3 statt null
end case;
end process;
x2
x3
s
4
4
01
sonst
y
4
y
2
Die fehlende Ausgabezuweisung im Others-Zweig bewirkt einen
Latch-Einbau.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 119/245
2. Synthese
3. Typische Beschreibungsfehler
x1
x2
x3
s
4
4
4
2
00
01
10
4
x
&
L
y
E
Auch, wenn nur drei Auswahlwerte auftreten können, ist in der
Case-Anweisung eines kombinatorischen Prozesses im
Others-Zweig dem Ausgang ein Wert zuzuweisen. Das von der
Synthese zur Zustandsspeicherung für alle anderen Eingaben
eingebaute Latch hat ein von einer kombinatorischen Funktion
gebildetes Freigabesignal. Glitches durch Wettläufe nicht
ausschlieÿbar (vergl. Folie 59). Auÿer dem erhöhten Aufwand ist
die Schaltung möglicherweise unzuverlässig.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 120/245
2. Synthese
3. Typische Beschreibungsfehler
Rückführungen in kombinatorischen Schaltungen
Die Rückführung von Berechnungsergebnissen auf Eingänge
müssen immer über Register laufen, die alle Werteänderungen bis
zur nächsten Taktanke verzögern. Das Beispiel zeigt, dass die
Rückführung eines Ausgangs auf einen Eingang bei einer
kombinatorischen Schaltung ein Speicher- oder ein
Schwingverhalten verursachen kann. Tatsächliches Verhalten
stark laufzeitabhängig.
Gesamtschaltung
x1
x2
x3
Prof. G. Kemnitz
G1
=1
G2
≥1
G3
≥1
x1 = 0
y
a)
·
x2
x3
x3
1
0
0
G2
≥1
G3
≥1
x1 = 1, x2 = x3 = 0
y
G1 G2 G3
y
b)
y
x2
0 rücksetzen
1
setzen
0 speichern
td
y
1
0
Institut für Informatik, Technische Universität Clausthal
2 · td
t
c)
17. Juni 2014 121/245
2. Synthese
Prof. G. Kemnitz
4. Aufgaben
Aufgaben
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 122/245
2. Synthese
4. Aufgaben
Aufgabe 2.1: Registerextraktion
signal K,L,M,N,P,Q: std_logic_vector(7 downto 0);
signal c: std_logic_vector(1 downto 0);
process(c(0))
begin
if rising_edge(c(0)) then
begin
if falling_edge(c(1)) then
P<=L; Q<=P;
end if;
end process;
L <= K;
end if;
end process;
process(c(1))
begin
if rising_edge(c(1)) then
1
end if;
end process;
process(c(1))
2
N<=M; M<=L;
Prof. G. Kemnitz
·
Extrahieren Sie die Anschlusssignale, Übernahmebedingungen etc. aller
beschriebenen Register.
Zeichnen Sie den
Signalussplan.
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 123/245
2. Synthese
4. Aufgaben
Aufgabe 2.2: Synthese kombinatorische Schaltung
Beschreiben Sie die nachfolgende Schaltung als synthesefähigen
kombinatorischen Prozess.
Prof. G. Kemnitz
a
b
s0
4
&
4
≥1
4
0
1
4
4
4
4
y
4
4
4
0
1
4
+
s1
4
STD LOGIC
UNSIGNED
·
0
1
(3 downto 0)
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 124/245
2. Synthese
4. Aufgaben
Aufgabe 2.3: Synthese einer sequentiellen Schaltung
Beschreiben Sie die nachfolgende Schaltung als synthesefähigen
Abtastprozess. Initialisierungswert sei alles null.
signal y: signed(7 downto 0);
signal R, E, I, T: std_logic;
Prof. G. Kemnitz
+1
−1
·
8
8
0
1
R
8
0
1
8
E
I
8
x
I
y
T̄
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 125/245
2. Synthese
4. Aufgaben
Aufgabe 2.4: Möglichst wenige Prozesse
Beschreiben Sie die nachfolgende Schaltung in einer
synthesefähigen Form mit möglichst wenigen Prozessen. Der
Initialisierungswert für y sei '0'.
signal T, I, x, x_del, y: std_logic;
Prof. G. Kemnitz
x
Reg1
x’
G
Reg2
==
I
x
I
y
T
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 126/245
2. Synthese
4. Aufgaben
Aufgabe 2.5: Extraktion des Signalussplans
signal x, tmp, acc, y: std_logic_vector(3 downto 0);
signal op: std_logic_vector(1 downto 0);
signal T: std_logic;
...
process(T)
begin
if rising_edge(T) then
case op is
when "00" => acc <= x;
when "01" => acc <= acc + tmp;
when "10" => acc <= acc - tmp;
when others => null;
end case;
end if;
tmp <= x;
end process;
y <= acc;
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 127/245
2. Synthese
4. Aufgaben
Aufgabe 2.6: Beschreibungsfehler 1
Was ist an der nachfolgenden Beschreibung problematisch?
signal a, b, c, y: std_logic;
...
process(a, b, c)
begin
if (a and not b)='1' then
y<='0';
elsif rising_edge(b) then
y<= y xor c;
end if;
end process;
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 128/245
2. Synthese
4. Aufgaben
Aufgabe 2.7: Beschreibungsfehler 2
Was ist an der nachfolgenden Beschreibung problematisch?
signal a, b, c, d, e: std_logic;
...
process(a, b, c)
variable u, v: std_logic;
begin
u:= a and b;
v:= g or c;
e<= u xor v xor d;
end if;
end process;
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 129/245
3. Optimierung
Prof. G. Kemnitz
Optimierung
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 130/245
3. Optimierung
Optimierung
Nach der Abbildung einer Funktionsbeschreibung auf eine
Schaltung folgt die Optimierung:
Duplizierung, Verschiebung und Zusammenfassung von
Registern,
Optimierung logischer Teilschaltungen,
Optimierung arithmetischer Schaltungsteile, ...
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 131/245
3. Optimierung
Prof. G. Kemnitz
1. Optimierungsziele
Optimierungsziele
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 132/245
3. Optimierung
1. Optimierungsziele
Kenngröÿen und Ziele für die Optimierung
Die Zielvorgaben einer digitalen Schaltung für
den Aufwand,
die Geschwindigkeit und
den Stromverbrauch
erfolgen in den frühen Entwurfsphasen in einer Weise, dass
frühzeitige Kontrollen auf Einhaltung möglich sind.
Aufwandskenngröÿen sind die Anzahl der Operatoren, die dann
in Gatter, Addierer und Multiplizierer übersetzt werden, die
Bitanzahl der Signale, die in Register übersetzt werden, und die
Bitanzahl der Felder für die Übersetzung in Blockspeicher. Bei
dem in den Übungen verwendeten Entwurfssystem erscheinen
diese Aufwandsangaben im Übersetzungsreport.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 133/245
3. Optimierung
1. Optimierungsziele
Zeitverhalten
Für die Verzögerungszeit einer digitalen Schaltung lassen sich nur
Ober- und Untergrenzen vorgeben9 , z.B. in Form einer minimalen
Haltezeit und einer maximalen Verzögerungszeit:
th , td
x’
f (x)
x
y
Wert unbekannt
y
w0
w1
w2
w3
td max. Verögerung
th min. Haltezeit
f (w0 ) f (w1 ) f (w2 )
Für Register-Transfer-Funktionen, d.h. Verarbeitungsfunktionen,
deren Eingaben zeitgleich von Registern bereitgestellt und deren
Ausgaben nach einer Taktperiode abgetastet werden, genügt die
Vorgabe der maximalen Taktfrequenz (siehe Folie 70).
Der Schaltungsentwurf mit einer genau einzuhaltenden Verzögerung ist
schwierig und nur selten erforderlich. Erfordert praktisch einen Handentwurf,
manuelle Platzierung und Verdrahtung von einem erfahrenen Entwerfer.
9
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 134/245
3. Optimierung
1. Optimierungsziele
Stromaufnahme
Der Stromaufnahme einer CMOS-Schaltung10 verhält sich
proportional zur Anzahl der geschalteten Bits. Ein CMOS-Gatter
ist so aufgebaut, dass sein Ausgang entweder mit Masse oder der
Versorgungsspannung verbunden ist. Ein Versorgungsstrom
IV > 0 ieÿt praktisch nur beim Auaden der Lastkapazitäten.
0
Lastkapazität Laden
UV
an IV > 0
ICL > 0
aus
CL
stationärer Zustand Ausgabe 1
UV
an IV = 0
ICL = 0
0
uCL < UV
UV Versorgungsspannung
ICL ,
aus
CL
uCL = UV
Ladestrom der Lastkapazität
Digitale Schaltungen werden heute fast ausschlieÿlich in CMOS gefertigt
(siehe später Foliensatz F4).
10
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 135/245
3. Optimierung
1. Optimierungsziele
Lastkapazität Entladen
stationärer Zustand Ausgabe 0
UV
UV
aus IV = 0
aus IV = 0
ICL < 0
ICL = 0
1
1
uCL > 0
CL
CL
uCL = 0
an
an
Entladestrom
Die Lastkapazität setzt sich aus den Kapazitäten der
Gatterausgänge, der Signalleitungen für die Übertragung und der
angesteuerten Gattereingänge zusammen.
Die Minimierung des Stromverbrauchs besteht im Wesentlichen
in der Minimierung der umzuladenden Lastkapazitäten und der
Anzahl erforderlichen Schaltvorgänge pro Zeit:
Taktfrequenz nur so hoch wie nötig,
Minimierung der Anzahl der Berechnungen, ...
In unserem Entwurfssystem gibt es ein Werkzeug zur
Abschätzung der Stromaufnahme.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 136/245
3. Optimierung
1. Optimierungsziele
Grundregeln der Aufwandsoptimierung
Zwei Grundregeln der Aufwandsoptimierung, die auch bei jeder
Code-Optimierung für Software eingesetzt werden, sind:
1 Zur Übersetzungszeit mögliche Berechnungen bei der
Übersetzung ausführen, z.B. Ersatz von Operationen mit
Konstanten durch das Ergebnis.
2 Mehrfach genutzte Zwischenergebnisse nur einmal berechnen.
Beispiel für die Anwendung der ersten Regel sei die Vereinfachung
eines logischen Ausdrucks mit konstanten Operanden:
((((x1 ∧ 0) ∧ x2 ) ∨ x3 ) ⊕ 1) = (((0 ∧ x2 ) ∨ x3 ) ⊕ 1)
= ((0 ∨ x3 ) ⊕ 1)
= (x3 ⊕ 1)
= x̄3
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 137/245
3. Optimierung
1. Optimierungsziele
((((x1 ∧ 0) ∧ x2 ) ∨ x3 ) ⊕ 1) = x̄3
Der ursprüngliche Ausdruck hat vier logische Operatoren, aus
denen bei der Übersetzung in eine Schaltung vier Gatter werden.
Der vereinfachte Ausdruck x̄3 verlangt nur einen einzigen
Inverter:
Schaltung für den Originalausdruck
x1 ∧ 0 → 0
x2 ∧ 0 → 0
x3 ∨ 0 → x3
x3 ⊕ 1 → x̄3
0
0
0
&
x
x1
&
x̄
≥1 3
x2
=1 3 y
x3
1
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
vereinfachte
Schaltung
x3
y
17. Juni 2014 138/245
3. Optimierung
1. Optimierungsziele
Als Beispiel für die Mehrfachnutzung von Zwischenergebnissen
soll folgende Berechnung von zwei Ausgabe- aus vier Eingabebits
dienen:
y := x x x ∨ (x ⊕ x x )
1
y2
3 2 1
4
2 1
:= x5 x4 ∨ x2 x1
Im ersten Ausdruck auf der rechten Zuweisungsseite ist der Term
x2 x1 zwei- und im zweiten einmal vorhanden. Vereinfachter
Berechnungsuss:
z := x x
2 1
y1
y2
:= x3 z ∨ (x4 ⊕ z)
:= x5 x4 ∨ z
Vereinfachung auf der Schaltungsebene:
x3
&
x1
x2
&
&
G1
G3
=1
G1b
&
G4
&
x4
x5
Prof. G. Kemnitz
G1a
·
G2
x3
G5
≥1
y1
G6
≥1
y2
x1
x2
G1
z
&
&
=1
x4
x5
&
G2
G3
G4
G5
≥1
y1
G6
≥1
y2
eingesparte Gatter
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 139/245
3. Optimierung
1. Optimierungsziele
Die kleinste ist nicht immer die schnellste Schaltung
max
minimale
Verzögerung
andere optimierte Lösungen minimaler
Aufwand
Aufwand
min
min
max
Signalverzögerung
längster Pfad
td.GA maximale Gatterverzögerung
td.ges maximale Gesamtverzögerung
x0
x1
x2
td.ges = 3 · td.GA
td.GA
td.GA
y
=1
td.GA 0
y1
=1
x3
=1
y2
td.ges = 2 · td.GA
td.GA
td.GA
x0
y0
=1
x1
=1 y1
x2
=1 y2
=1
x3
Die Realisierung mit drei Gattern hat einen längsten Pfad von
drei Gatterverzögerungszeiten und die mit vier Gattern nur von
zwei Gatterverzögerungszeiten.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 140/245
3. Optimierung
1. Optimierungsziele
Weniger Stromverbrauch, mehr Schaltungsaufwand
Die nachfolgende Schaltung berechnet von zwei 8-Bit-Operanden die
Summe und das Produkt und wählt mit op aus, ob die Summe, das
niederwertige oder das höherwertige Produktbyte in das Zielregister
übernommen wird.
weniger Schaltungsaufwand
8
Mult
16
8
8
8
Add
8
weniger Stromverbrauch
16
Mult
16
16
8
8
8
8
8
16
Add
8
Für den Stromverbrauch wäre es günstiger, wenn nicht zu jeder
benötigten Operation eine Parallelberechnung eines ungenutzten
Ergebnisses erfolgt und nicht jedes Produkt zweimal gebildet werden
müsste, einmal für das niederwertige und einmal das höherwertige
Produktbyte. Das verlangt getrennte Operanden und Ergebnisregister
für beide Rechenwerke, d.h. in Summe 56, statt 24 Registerbits.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 141/245
3. Optimierung
Prof. G. Kemnitz
2. Logikvereinfachung
Logikvereinfachung
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 142/245
3. Optimierung
2. Logikvereinfachung
Logische Funktion
Denition 1
Eine n-stellige logische Funktion ist eine Abbildung eines
n-Bit-Vektors aus freien binären Variablen auf eine abhängige
binäre Variable:
f : Bn → B
bzw.
mit B = {0, 1}
y = f (xn−1 , xn−2 , . . . , x0 ) mit y, xi ∈ {0, 1}
(y abhängige Variable; xi freie Variablen).
Eine Verarbeitungsfunktion mit m Ergebnisbits beschreibt m
logische Funktionen.
Jede logische Funktion kann durch praktisch unbegrenzt viele
logische Ausdrücke und Schaltungen nachgebildet werden.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 143/245
3. Optimierung
2. Logikvereinfachung
Umformungsregeln für logische Ausdrücke
Umformungsregel
¯=x
x̄
doppelte Negation
x∨1=1
x ∨ x̄ = 1
x∧0=0
x ∧ x̄ = 0
Eliminationsgesetze
x1 ∨ (x1 ∧ x2 ) = x1
x1 ∧ (x1 ∨ x2 ) = x1
x̄1 ∨ x̄2 = x1 ∧ x2
x̄1 ∧ x̄2 = x1 ∨ x2
11
Bezeichnung
Absorbtionsgesetze
de morgansche Regeln11
Nach Augustus De Morgan (1806 - 1871) englischer Mathematiker.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 144/245
3. Optimierung
Umformungsregel
Bezeichnung
x1 ∧ x2 = x2 ∧ x1
x1 ∨ x2 = x2 ∨ x1
Kommutativgesetze
(x1 ∨ x2 ) ∨ x3 =
x1 ∨ (x2 ∨ x3 )
(x1 ∧ x2 ) ∧ x3 =
x1 ∧ (x2 ∧ x3 )
x1 ∧ (x2 ∨ x3 ) =
(x1 ∧ x2 ) ∨ (x1 ∧ x3 )
x1 ∨ (x2 ∧ x3 ) =
(x1 ∨ x2 ) ∧ (x1 ∨ x3 )
Prof. G. Kemnitz
2. Logikvereinfachung
·
Assoziativgesetze
Distributivgesetze
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 145/245
3. Optimierung
2. Logikvereinfachung
Beweis der Umformungsregeln
Aufstellen und Vergleich der Wertetabellen.
Für die de morganschen Regeln gilt z.B.:
Prof. G. Kemnitz
x̄1 ∨ x̄2
x1 ∧ x2
x̄1 ∧ x̄2
x1 ∨ x2
1
1
1
0
0
1
0
1
1
0
0
1
1
0
0
0
0
x1
x2
0
0
0
·
1
1
1
Institut für Informatik, Technische Universität Clausthal
1
17. Juni 2014 146/245
3. Optimierung
2. Logikvereinfachung
Umformungen zur Schaltungsvereinfachung
Mehrfache Negationen im Signaluss heben sich paarweise auf.
x1
x2
x3
&
z
x1
x2
x3
y
z = x1 ∧ x2 ∧ x3
y = z̄
&
y
y = x1 ∧ x2 ∧ x3
= x1 ∧ x2 ∧ x3
Doppelte Anwendung der Eliminationsgesetze:
x1
x2
Prof. G. Kemnitz
y
&
y = (x1 ∧ x̄1 ) ∧ x2 = 0 ∧ x2 = 0 = 1
| {z }
| {z }
0
·
1
y
0
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 147/245
3. Optimierung
2. Logikvereinfachung
Anwendung des Absorbtionsgesetzes:
x1
&
x2
&
y
≥1
x3
x1
x2
&
y
gegebene Funktion: y = (x1 ∧ x2 ) ∧ (x2 ∨ x3 )
Assoziativgesetz: y = x1 ∧ (x2 ∧ (x2 ∨ x3 ))
Absorbtionsgesetz: y = x1 ∧ x2
Die Vereinfachungsregeln selbst sind unkompliziert. Problematisch ist die Strukturierung und Gröÿe der Suchräume nach
Anwendungsmöglichkeiten der Vereinfachungsregeln. In den
Folgeabschnitten werden folgende Beispiele dafür vorgestellt:
KV-Diagramm,
Verfahren von Quine und McCluskey und
die Vereinfachung mit binären Entscheidungsdiagrammen.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 148/245
3. Optimierung
2. Logikvereinfachung
AND-OR nach NAND-NAND
Eine AND-OR-Schaltung lässt sich in eine fast strukturgleiche
NAND-NAND-Schaltung umwandeln. Das war früher beim
Entwurf mit Standardschaltkreisen eine ganz wichtige
Vereinfachung, weil das die erforderliche Anzahl unterschiedlicher
Schaltkreistypen verringert hat.
x1
x2
x3
x4
&
&
≥1
y
x1
x2
&
x3
x4
&
&
gegebene Funktion:
y = (x1 ∧ x2 ) ∨ (x3 ∧ x4 )
doppelte Negation:
y = (x1 ∧ x2 ) ∨ (x3 ∧ x4 )
y
de morgansche Regel: y = x1 ∧ x2 ∧ x3 ∧ x4
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 149/245
3. Optimierung
2. Logikvereinfachung
Eine ähnliche Vereinfachung ist auch mit OR-AND-Schaltungen
möglich, die durch NOR-NOR-Schaltungen ersetzt werden
können.
x1
x2
x3
x4
≥1
&
≥1
y
x1
x2
≥1
x3
x4
≥1
gegebene Funktion:
y = (x1 ∨ x2 ) ∧ (x3 ∨ x4 )
doppelte Negation:
y = (x1 ∨ x2 ) ∧ (x3 ∨ x4 )
≥1
y
de morgansche Regel: y = x1 ∨ x2 ∨ x3 ∨ x4
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 150/245
3. Optimierung
Prof. G. Kemnitz
3. KV-Diagramme
KV-Diagramme
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 151/245
3. Optimierung
3. KV-Diagramme
Logikminimierung mit Konjunktionsmengen
KV-Diagramme sind das wichtigste Bleistift-und-Papier-Verfahren für die Optimierung von Gatterschaltungen. Es basiert auf
der Minimierung von Konjunktions- bzw. Disjunktionsmengen.
Konjunktion: Term, der direkte oder invertierte Eingabevariablen
UND-verknüpft, z.B.:
x3 ∧ x̄2 ∧ x1 ∧ x̄0 = x3 x̄2 x1 x̄0 (K1010 )
|
{z
}
verkürzte Schreibweisen
Minterm: Konjunktion, die alle Eingabevariablen entweder in
direkter oder in negierter Form enthält.
Satz: Jede logische Funktion lässt sich durch eine Menge
von Konjunktionen darstellen, die ODER-verknüpft
werden.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 152/245
3. Optimierung
3. KV-Diagramme
Beweis: Jede logische Funktion lässt sich durch eine
Wertetabelle darstellen. Jeder Zeile einer
Wertetabelle ist ein Minterm zugeordnet, der genau
dann Eins ist, wenn die Zeile ausgewählt wird.
xn−1
x2 x1 x0
···
UND-Matrix
(1 aus 2n - Decoder)
2n vollständige Konjunktionen (Produktterme)
···
ODER-Matrix
(programmierbar)
y0 y1 y2
···
ym−1
Die Funktion ist entweder die
ODER-Verknüpfung der Minterme, für die y = 1 ist, oder
negierte ODER-Verknüpfung der Minterme, für die y = 0 ist.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 153/245
3. Optimierung
x2 x1 x0
3. KV-Diagramme
Konjunktion
y
x2 x1 x0
Konjunktion
y
0
0
0
x̄2 x̄1 x̄0 (K000 )
0
1
0
0
x2 x̄1 x̄0 (K100 )
1
0
0
1
x̄2 x̄1 x0 (K001 )
1
1
0
1
x2 x̄1 x0 (K101 )
1
0
1
0
x̄2 x1 x̄0 (K010 )
0
1
1
0
x2 x1 x̄0 (K110 )
1
0
1
1
x̄2 x1 x0 (K011 )
0
1
1
1
x2 x1 x0 (K111 )
0
Entwicklung nach den Einsen: {K001 , K100 , K101 , K110 } ⇒
y = x̄2 x̄1 x0 ∨ x2 x̄1 x̄0 ∨ x2 x̄1 x0 ∨ x2 x1 x̄0
Entwicklung nach den Nullen: {K000 , K010 , K011 , K111 } ⇒
y = x̄2 x̄1 x̄0 ∨ x̄2 x1 x̄0 ∨ x̄2 x1 x0 ∨ x2 x1 x0
= x̄2 x̄1 x̄0 ∧ x̄2 x1 x̄0 ∧ x̄2 x1 x0 ∧ x2 x1 x0
= (x2 ∨ x1 ∨ x0 ) (x2 ∨ x̄1 ∨ x0 ) (x2 ∨ x̄1 ∨ x̄0 ) (x̄2 ∨ x̄1 ∨ x̄0 )
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 154/245
3. Optimierung
3. KV-Diagramme
Vereinfachungsgrundlage
Satz: Zwei Konjunktionen, die sich nur in der Invertierung
einer Variablen unterscheiden, können zu einer
Konjunktion mit einer Variablen weniger
zusammengefasst werden.
Schritt
ODER-Verknüpfung
Konjunktionsmenge
1
. . . ∨ x2 x̄1 x̄0 ∨ x2 x̄1 x0 ∨ . . .
{. . . , K100 , K101 , . . .}
2
. . . ∨ x2 x̄1 (x̄0 ∨ x0 ) ∨ . . .
3
1
2
3
. . . ∨ x2 x̄1 ∨ . . .
{. . . , K10∗ , . . .}
Zwei Konjunktionen, die sich nur in der Negation von x0
unterscheiden.
Ausklammern der UND-Verknüpfung der übrigen Variablen.
Konjunktion mit einer Variablen weniger.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 155/245
3. Optimierung
3. KV-Diagramme
Aufbau eines KV-Diagramms12
x2
1
3
3
3
K0011 2 K0111 3 K1111 2 K1011
3
K0010 2 K0110 3 K1110 2 K1010
3
0
3
1
K0001 2 K0101 3 K1101 2 K1001
1
3
1
3
0
x0
1
K0000 2 K0100 3 K1100 2 K1000
1
0
1
0
1
0
0
1
von hieraus an der
Tafel entwickeln
1
0
0
1
x1
1
x3
Anordnung der Eingabewerte so, dass sich die Konjunktionen
benachbarter Felder genau in einer Negation unterscheiden /
benachbarte Nullen oder Einsen zu einer Konjunktion mit einer
Variablen weniger zusammengefasst werden können.
12
Entwickelt von Maurice Karnaugh und Edward W. Veitch.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 156/245
3. Optimierung
3. KV-Diagramme
Zusammenfassen der ausgewählten Konjunktionen zu Blöcken der
Kantenlänge eins, zwei oder vier:
x2
K000-
1
1
3
3
K0001 2 K0101 3 K1101 2 K1001
3
3
K0011 2 K0111 3 K1111 2 K1011
3
K0010 2 K0110 3 K1110 2 K1010
3
0
1
1
0
3
K001-
1
K0000 2 K0100 3 K1100 2 K1000
3
0
x0
K-101
0
1
1
K-11-
0
0
1
K10--
1
0
0
1
x1
1
y=0
y=1
x3
Minimierte Konjunktionsmenge der Einsen
{K000- , K-11- , K10-- } ⇒ y = x̄3 x̄2 x̄1 ∨ x2 x1 ∨ x3 x̄2
Minimierte Konjunktionsmenge der Nullen:
{K001- , K-10- } ⇒ y = x̄3 x̄2 x1 ∨ x2 x̄1
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 157/245
3. Optimierung
3. KV-Diagramme
Praktische Arbeit mit KV-Diagrammen
Eintragen der Funktionswerte in das KV-Diagramm.
Abdeckung der Einsen (der Nullen) mit Blöcken der
Kantenlänge 1, 2 oder 4. Optimierungsziel: möglichst groÿe
und möglichst wenige Blöcke. Blöcke dürfen sich überlagern.
Ablesen der Block-Konjunktionen und Zusammenfassen.
x2
x0
a
d
0
0
1
1
1
1b 0
1
0
0
1d 0
0
c
0
Prof. G. Kemnitz
0
0
x1
a: x̄3 x̄1 x0
b: x2 x̄1 x0
c: x̄3 x2 x0
d: x3 x2 x̄0
y = x̄3 x̄1 x0 ∨ x3 x̄1 x0 ∨ x̄3 x2 x0 ∨ x3 x2 x̄0
x3
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 158/245
3. Optimierung
3. KV-Diagramme
Die Blockbildung kann auch zirkulare über den Rand hinaus
erfolgen. Bei einer Entwicklung nach den Nullen ist das Ergebnis
die invertierte ODER-Verknüpfung der Konjunktionen.
x2
c
a
x0
b
a
b
a
c
a
0
0
1
1
1
1
0
1
0
0
0
1
c a
Prof. G. Kemnitz
c
0
d
e
0
x3
·
0
0
a
a
b
a
b
x1
a: x̄2 x̄0
b: x̄2 x1
c: x̄3 x̄0
d: x3 x̄2
e: x3 x1 x0
y = x̄2 x̄0 ∨ x̄2 x1 ∨ x̄3 x̄0 ∨ x3 x̄2 ∨ x3 x1 x0
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 159/245
3. Optimierung
3. KV-Diagramme
KV-Diagramme mit don't-care-Feldern
Don't-care-Felder kennzeichnen Eingabemöglichkeiten, die im
normalen Betrieb nicht auftreten und für die folglich die Ausgabe
ohne Bedeutung ist. Ihr Wert wird so festgelegt, dass sich
möglichst wenige und möglichst groÿe Blöcke bilden lassen.
x2
d
1
1
x0
Prof. G. Kemnitz
1
e
a
1
1
0
1
-
0
0
-
b
-
0
c
0
-
d
x3
·
1
x1
a: x̄1 x̄0
b: x2 x1 x0
c: x3 x1 x0
d: x̄3 x̄2 x̄0
e: x̄3 x̄2 x̄1
y = x̄1 x̄0 ∨ x2 x1 x0 ∨ x3 x1 x0
∨x̄3 x̄2 x̄0 ∨ x̄3 x̄2 x̄1
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 160/245
3. Optimierung
3. KV-Diagramme
Zwei- und dreistellige Funktionen
Verringerung der Anzahl der Nachbarfelder, die sich in einer
Negation unterscheiden, auf drei bzw. zwei.
Halbierung der Höhe und/oder der Breite.
x2
x1
1
K000
1
K010
2
K110
1
K100
2
K000
2
K100
2
K001
1
K011
2
K111
1
K101
2
K001
2
K101
K011
2
K111
K010
2
K110
0
x0
0
x1
0
0
x2
0
x0
K00
1
K10
K01
1
K11
0
Prof. G. Kemnitz
·
0
1
1
0
1
x0
1
2
0
x1
1
0
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 161/245
3. Optimierung
3. KV-Diagramme
KV-Diagramme für sechsstellige Funktionen
x4 = 0
x5
a
x4
0
0
x0
x1
a
1
b
c
1
1
0
1
1
0
0
0
0
0
x1
d
1
0
x2
0
d
1
1
0
0
1
1
0
0
1
0
0
0
1
0
0
0
0
0
0
0
x0
b
a
1
1
0
1
1
0
0
0
0
0
1
0
0
0
1
1
0
0
1
1
0
0
0
0
0
1
0
1
x3
x0
x4 = 1
a: x̄5 x2 x̄1
1 0
x1
b
b: x̄4 x̄3 x̄2 x1
1 0
c: x5 x3 x̄1
x2
d: x3 x̄2 x1 x̄0
y = x̄5 x2 x̄1 ∨ x̄4 x̄3 x̄2 x1 ∨ x5 x3 x̄1 ∨ x3 x̄2 x1 x̄0
c
0
d
d
x3
a
d
1
1
1
1
1
0
0
0
0
0
x2
c
d
x5 = 0
x5 = 1
1
x3
Für eine 6-stellige Funktion muss jedes Element der Tabelle sechs
Nachbarfelder haben. Erfordert einen Würfel.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 162/245
3. Optimierung
3. KV-Diagramme
Schaltungen mit mehreren Ausgängen
y0
y5
y6
y4
y1
x 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 sonst
y2
y
beliebig
y3
y0
Prof. G. Kemnitz
y3
x2
x2
-b 1
- 1
1
1
1
1
1
1
-
1
0
- 1
-c 1
1
1
1
0a 1
-b 1
- 1
1
1
-
-
1
1
-
-
1
1
-
-
1
0
-f -
1
1
-
-
1
0
-d -
0e 1
-
-
1
1
-
1
0
1
0
y4
x0
y2
x2
0a 1
1
x0
y1
x2
y5
y6
0
0
0a 1
-
1
0
-b
- 0
1
1
0j 1
-
0
0
-
-g
0
0
-
-i
1
0
-f -
1
1
-
-
0h 1
-
-
1
1
-
x3
·
x3
-
x1
x3
1
1
0
1
1
-
x1
x3
Institut für Informatik, Technische Universität Clausthal
a := x̄3 x̄2 x̄1 x0
b := x2 x̄1 x̄0
c := x2 x̄1 x0
d := x2 x1 x̄0
e := x̄2 x1 x̄0
...
17. Juni 2014 163/245
3. Optimierung
3. KV-Diagramme
signal x: std_logic_vector(3 downto 0);
signal y: std_logic_vector(6 downto 0);
...
process(x)
variable a,b,c,d,e,f,g,h,i,j: std_logic;
begin
a := not x(3) and not x(2) and not x(1) and x(0);
b := x(2) and not x(1) and not x(0);
c := x(2) and not x(1) and x(0);
d := x(2) and x(1) and not x(0);
e := not x(2) and x(1) and not x(0);
...
y(0)<=not(a or b);
y(1)<=not(c or d);
y(2)<=not e;
...
x0
end process;
Prof. G. Kemnitz
y0
y1
x2
1
0a 1
-b 1
- 1
1
1
1
-
-
1
1
1
-
-
1
1
0
x3
·
y2
x2
1
1
0
- 1
-c 1
1
1
-
1
0
-d -
-
x3
Institut für Informatik, Technische Universität Clausthal
x2
1
1
1
-
1
1
-
-
0e 1
-
-
x1
x3
17. Juni 2014 164/245
3. Optimierung
Prof. G. Kemnitz
4. Quine und McCluskey
Quine und McCluskey
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 165/245
3. Optimierung
4. Quine und McCluskey
Optimierung nach Quine & McCluskey Prinzip
Alternatives tabellenbasiertes Minimierungsverfahren, das
gleichfalls auf der Zusammenfassung von Konjunktionen, die sich
nur in einer Negation unterscheiden, basiert:
{. . . , K100 , K101 , . . .} ⇒ {. . . , K10∗ , . . .}
Zusammenstellen der Menge aller Minterme, für die der
Funktionswert Eins (bzw. Null) ist ⇒ quinesche Tabelle
nullter Ordnung
Suche in der quineschen Tabelle nullter Ordnung alle
Möglichkeiten zur Bildung einer Konjunktion mit einer
don't-care-Stelle und abhaken der erfassten Konjunktionen
⇒ quinesche Tabelle erster Ordnung
etc.
Ausdrucksminimierung mit Hilfe der Abdeckungstabelle der
Primterme.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 166/245
3. Optimierung
4. Quine und McCluskey
Aufstellen der quineschen Tabellen
Visualisierung der Blockbildungsmöglichkeiten
mit einem KV-Diagramm
x2
1
x0
0
4 12 8
1
5 6 13 9
7
5
3
4
7 15 11
2
3
2
6 14 10
x1
1
x3
mögliche Zweierblöcke
möglicher Vierererblock
√
abgedeckte Konjunktionen
Pi Primterm
Prof. G. Kemnitz
·
quinesche Tabelle
nullte Ordnung
x3 x2 x1 x0
2
8
3
5
10
12
7
13
14
0
1
0
0
1
1
0
1
1
0
0
0
1
0
1
1
1
1
1
0
1
0
1
0
1
0
1
0
0
1
1
0
0
1
1
0
√
√
√
√
√
√
√
√
√
quinesche Tabellen
erste und zweite Ordnung
x3 x2 x1 x0
2, 3
2, 10
8, 10
8, 12
3, 7
5, 7
5, 13
10, 14
12, 13
12, 14
0
1
1
0
0
1
1
1
0
0
0
1
1
1
1
1
1
0
1
0
1
0
-
0
0
0
1
1
1
0
0
P2
P
√3
√
P4
P5
P
√6
P
√7
x3 x2 x1 x0
8, 10, 12, 14
Institut für Informatik, Technische Universität Clausthal
1 - - 0 P1
17. Juni 2014 167/245
3. Optimierung
4. Quine und McCluskey
Die Konjunktionen sind in den quineschen Tabellen nach der
Anzahl der Einsen im zugehörigen Bitvektor geordnet.
Zusammenfassung nur möglich, wenn sich die Anzahl der
Einsen genau um Eins unterscheidet.
Abhaken der Konjunktionen mit
Zusammenfassungsmöglichkeit.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 168/245
3. Optimierung
4. Quine und McCluskey
Auswahl der Primterme
Aufstellen der Abdeckungstabelle
Suche einer minimalen Abdeckungsmenge
x2
2
1
x0
0
4 12 8
1
5 6 13 9
7
5
3
7 15 11
4
2
3
6 14 10
2
x1
1
x3
genutzte Primterme
3
5
7
8 10 12 13 14
P1
P2
P3
P4
P5
P6
P7
ungenutzte Primterme
Lösungsmenge: {P1 , P2 , P5 , P7 }:
Prof. G. Kemnitz
y = x3 x̄0 ∨ x̄3 x̄2 x1 ∨ x3 x2 x0 ∨ x3 x2 x̄1
| {z } | {z } | {z } | {z }
P1
·
P2
P5
Institut für Informatik, Technische Universität Clausthal
P7
17. Juni 2014 169/245
3. Optimierung
4. Quine und McCluskey
Die quineschen Tabellen wachsen im ungünstigen Fall
exponentiell mit der Stelligkeit der Funktion.
Praktische Programme arbeiten bei groÿen Funktionen mit
Heuristiken und mit unvollständigen quineschen Tabellen.
Zusammenfassung des Gesamtabschnitts:
Die Vereinfachung logischer Ausdrücke erfolgt mit Hilfe von
Umformungsregeln
Die Optimierungsziele geringer Schaltungsaufwand, geringe
Verzögerung etc. widersprechen sich zum Teil.
Die beiden klassischen systematischen
Optimierungsverfahren die Optimierung mit
KV-Diagrammen und das Verfahren von Quine und
McCluskey basieren auf der Vereinfachung von
Konjunktionsmengen.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 170/245
3. Optimierung
Prof. G. Kemnitz
5. Vereinfachung mit BDDs
Vereinfachung mit BDDs
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 171/245
3. Optimierung
5. Vereinfachung mit BDDs
Binäres Entscheidungsdiagramm
(BDD binary decision diagram)
Zusammensetzung einer Funktion aus binären
Entscheidungen.
Rekursive Denition: Eine binäre Entscheidung ist eine
Konstante oder eine Entscheidung zwischen binären
Entscheidungen:
Prof. G. Kemnitz
binäre Entscheidung
Konstante
0
·
1
Entscheidung anhand
einer binären Variablen
0
xi
1
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 172/245
3. Optimierung
5. Vereinfachung mit BDDs
Wertetabelle als binäres Entscheidungsdiagramm
Konstruktion eines Entscheidungsdiagramms mit Blättern für alle
Konjunktionen und Zuordnung der Tabellenwerte zu den
Blättern.
Prof. G. Kemnitz
x1 x0
y
0
0
1
1
0
1
1
0
·
0
1
0
1
0
0
0
x1
x0
1
1
0
1
1
Institut für Informatik, Technische Universität Clausthal
x1
1
0
17. Juni 2014 173/245
3. Optimierung
5. Vereinfachung mit BDDs
Binären Entscheidungsdiagramm als Programm
if x0='0' then
if x1='0' then
y <= '0';
else
y <= '1';
end if;
else
if x1='0' then
y <= '1';
else
y <= '0';
end if;
end if;
Prof. G. Kemnitz
·
0
0
0
x1
x0
1
1
0
1
1
x1
1
0
Als Programm, z.B. für die
Simulation, besteht ein
binäres Entscheidungsdiagramm aus verschachtelten
If-Else-Anweisungen.
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 174/245
3. Optimierung
5. Vereinfachung mit BDDs
Vereinfachungsregeln
Im Gegensatz zu Ausdrücken gibt es nur zwei
Vereinfachungsregeln:
Verschmelzung gleicher Teilgraphen und
Zusammenfassen von Knoten mit zwei gleichen Nachfolgern.
Verschmelzung gleicher Teilbäume
xi
0
1
0
xj
1
0
xi
1 0
xj
1
≡
Knotenelimination
0
xi
1
Das vereinfacht die Automatisierung der Minimierung.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 175/245
3. Optimierung
5. Vereinfachung mit BDDs
Geordnetes binäres Entscheidungsdiagramm
Oensichtliche Voraussetzung für beide Vereinfachungen ist
dieselbe Abfragereihenfolge auf allen Entscheidungswegen. Ein
BDD mit geordneter Entscheidungsreihenfolge wird als OBDD
(ordered binary decision diagram) bezeichnet.
Ungeordnetes Entscheidungsdiagramm
Geordnetes Entscheidungsdiagramm
AbfragereihenAbfragereihen- AbfragereihenAbfragereihenx0
x0
folge: 0-1-2 0
1 folge: 0-2-1 folge: 0-1-2 0
1 folge: 0-1-2
x1
0
0
1
x2
1
x2
1
0
0
0
x2
0
1
0
1
0
x1
1
1
0
1
1
x1
x1
0
1
0
0
1
x2
1
1
0
0
0
x2
x1
0
1
0
1
0
x2
1
1
0
1
1
x2
1
0
Bezeichnung für ein vereinfachtes binäres Entscheidungsdiagramm ist ROBDD (reduced ordered binary decision diagram).
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 176/245
3. Optimierung
5. Vereinfachung mit BDDs
Vereinfachung am Beispiel
unterste
Ebene
x1
0
0
Υ1
x2
x0
0
1
1
0
Υ2
nächste
Ebene
1
x1
0
x2
Υ2
x2
1 0
Υ1 Υ2
1
Υ1
x2
Υ1
Υ3
1
Υ2
Ergebnis
0
unterschiedliche Teilgraphen:
Υ1 :
Υ2 :
1
0
Prof. G. Kemnitz
Υ3 :
0
Υ1
·
x2
Υ4 :
1
Υ2
0
Υ2
x0
1
x1 1 1 x1
0
0
1
0
0
x2
1
Υ1
Institut für Informatik, Technische Universität Clausthal
Υ4
x0
1
x1 1 1 x1
0
0
x2 1 1 x2
0
0
1
0
17. Juni 2014 177/245
3. Optimierung
5. Vereinfachung mit BDDs
Zweistellige Operationen mit ROBDD
Für zwei beliebige Teilbäume, bei denen im obersten Knoten
dieselbe Variable ausgewertet wird, verschiebt sich die Operation
eine Entscheidungsebene tiefer.
0
xi
Υ1
1
Υ2
xi
⋄
0
1
Υ3
Υ4
0
Υ1 ⋄ Υ3
xi
1
Υ2 ⋄ Υ4
⋄ beliebige zweistellige binäre Operation
In einem ROBDD erfolgen auf allen Wegen die Entscheidungen in
derselben Reihenfolge.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 178/245
3. Optimierung
5. Vereinfachung mit BDDs
Fehlende Entscheidungsknoten sind wie Entscheidungsknoten mit
gleichen Nachfolgern zu behandeln:
0
xi
Υ1
Prof. G. Kemnitz
1
Υ2
·
xi
⋄
0
1
Υ3
0
Υ1 ⋄ Υ3
Institut für Informatik, Technische Universität Clausthal
xi
1
Υ2 ⋄ Υ3
17. Juni 2014 179/245
3. Optimierung
ODER-Verknüpfung
x1 ∨ x2
5. Vereinfachung mit BDDs
0
x1
1
0
1
∨
0
x2
0
Ausführung der
Operation auf der
untersten Ebene
1
1
x1
0
Operation ein Entscheidungsebene tiefer
0 ∨ 0
x2
0
Operation zwei Entscheidungsebenen tiefer
x1
0
x2
0
0 ∨ 0
Prof. G. Kemnitz
·
x1
0
1
0 ∨ 1
1
1
1
0
1 ∨ 0
x2
0
0
1
1
x2
1
0
1
1
1
0
1 ∨ 0
1
1
Vereinfachung
x1
0
x2
x2
1
1
0
0
x2
1
1
1
1 ∨ 1
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 180/245
3. Optimierung
Verknüpfung
(x1 ∨ x2 ) ∧ x̄3
5. Vereinfachung mit BDDs
0
x2
1
x3
0
1
Operation drei Entscheidungsebenen tiefer
0 ∧ 1
Prof. G. Kemnitz
·
x3
1
0 ∧ 0
1
1
0
1 ∧ 0
1
0
1
x2
x3
x3
1
0
0
1 ∧ 1
x3
0
1
1
0
1
0
Vereinfachung
x1
0
1
1
1
x3
0
0
x1
0
1
x2
0
1
1
x1
0
x1
0
x2
0
0
x3
1
Operation zwei Entscheidungsebenen tiefer
0
0
∧
1
0
0 ∧
Ausführung der
Operation auf der
untersten Ebene
x1
0
1
x2
1
1 ∧ 0
Institut für Informatik, Technische Universität Clausthal
0
1
1
0
x3
0
1
17. Juni 2014 181/245
3. Optimierung
5. Vereinfachung mit BDDs
Entscheidungsknoten als Signalussumschalter
Entscheidungsknoten ⇒ binärer Umschalter im Datenuss
(Multiplexer); 3-stellige logische Funktion
x1
y
0
x1
x1
s
x2
1
x2
0
1
y
s
0
1a 1
0
0
s
0
1b 1
a: x1 s̄
b: x2 s
y = x1 s̄ ∨ x2 s
x2
minimiert mit einem KV-Diagramm:
y = x1 s̄ ∨ x2 s
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 182/245
3. Optimierung
5. Vereinfachung mit BDDs
eine konstante Eingabe ⇒ 2-stellige logische Funktion
x1 = 0 : y = (0 ∧ s̄) ∨ x2 s = x2 s
x1 = 1 : y = (1 ∧ s̄) ∨ x2 s = s̄ ∨ x2 s = s̄ ∨ x2
x2 = 0 : y = x1 s̄ ∨ (0 ∧ s) = x1 s̄
x2 = 1 : y = x1 s̄ ∨ (1 ∧ s) = x1 s̄ ∨ s = x1 ∨ s
zwei konstante Eingaben ⇒ 1-stellige logische Funktion
x1 = 0; x2 = 1 : y = (0 ∧ s̄) ∨ (1 ∧ s) = s
x1 = 1; x2 = 0 : y = (1 ∧ s̄) ∨ (0 ∧ s) = s̄
0
x2
s
x2
s
0
1
x1
y
···
&
Prof. G. Kemnitz
y
·
1
s
x1
s
0
1
y
0
1
0
1
1
y
y
s
Institut für Informatik, Technische Universität Clausthal
0
1
y
s
s
≥1
0
y
s
y
17. Juni 2014 183/245
3. Optimierung
5. Vereinfachung mit BDDs
Entscheidungsdiagramm als Signalussplan
(k1)
(k2)
0
(k2)
x0
1
(k3)
x1 1 1 x1
0
0
(k4)
(k5)
x2 1 1 x2
0
0
0
1
Prof. G. Kemnitz
·
0
1
(k5)
x̄2
(k1)
(k3)
0
1
y
0
1
(k4)
x2
x0
x1
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 184/245
3. Optimierung
5. Vereinfachung mit BDDs
Abfragereihenfolge und Schaltungsaufwand
Zielfunktion: y = (x1 ∨ x0 ) ∧ x̄2
Abfragereihenfolge: x0 -x1 -x2
y
x0
0
1
x1
0
0
&
1
x2
x1
x2
&
0
1
x0
0
0
x2
&
&
x1
x2
≥1
x0
&
1
1
1
Abfragereihenfolge: x2 -x1 -x0
y
y
x1
0
0
x0
0
1
x2
≥1
x0
1
1
x1
Abfragereihenfolge x0 − x1 − x2 : 1 Multiplexer, 1 UND, 1
Inverter
Abfragereihenfolge x2 − x1 − x0 : 1 ODER, 1 UND, 1 Inverter
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 185/245
3. Optimierung
5. Vereinfachung mit BDDs
Ein ROBDD mit einer vorgegebenen Abfragereihenfolge ist
eine eindeutige Darstellung für eine logische Funktion.
Eine n-stellige logische Funktion lässt sich (nur) durch
(n − 1)! verschiedene ROBDDs darstellen. (Mit Ausdrücken
ist die Anzahl der Darstellungsmöglichkeiten unbegrenzt.)
Lösungsraum nicht auf UND-ODER-/ODER-UND-Struktur
beschränkt.
Optimierung durch Variation der Abfragereihenfolge. Oft
gute Optimierungsergebnisse.
Ausnutzung der Eindeutigkeit der Darstellung für den Test
auf Gleichheit von logischen Funktionen, z.B. einer Ist- und
einer Soll-Funktion, ohne die Schaltungen mit allen
Eingabevariationen simulieren zu müssen.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 186/245
3. Optimierung
Prof. G. Kemnitz
6. Aufgaben
Aufgaben
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 187/245
3. Optimierung
6. Aufgaben
Aufgabe 3.1: Schaltungsumformung
Wandeln Sie die Schaltung in eine Schaltung aus NAND-Gattern
und Invertern um.
Prof. G. Kemnitz
x0
x1
x2
·
&
&
≥1
y
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 188/245
3. Optimierung
6. Aufgaben
Aufgabe 3.2: Schaltungsminimierung mit
KV-Diagrammen
Lesen Sie aus den KV-Diagrammen minimierte logische
Ausdrücke ab.
x2
x2
x0
Prof. G. Kemnitz
1
1
1
0
1
1
1
0
0
1
0
0
0
0
1
0
x3
·
x0
x1
1
1
1
1
1
0
1
0
-
-
-
-
0
0
1
1
a)
Institut für Informatik, Technische Universität Clausthal
x3
x1
b)
17. Juni 2014 189/245
3. Optimierung
6. Aufgaben
Aufgabe 3.3: Fragen zu KV-Diagrammen
1
2
Warum dürfen sich die Rechtecke, mit denen in
KV-Diagrammen die Einsen13 abgedeckt werden, gegenseitig
überlagern?
In welchen Mintermen überlagern sich die Rechtecke im
KV-Diagramm für den Ausdruck:
x̄0 ∨ x2 x1 ∨ x3 x2
13
Bei einer Entwicklung nach 0 die Nullen.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 190/245
3. Optimierung
6. Aufgaben
Aufgabe 3.4: 7-Segment-Decoder
Ergänzen Sie die fehlenden Zuweisungen an die Variablen f bis j
und die Signale y3 bis y6 in der VHDL-Beschreibung des
7-Segment-Decoders Seite 163.
signal x: std_logic_vector(3 downto 0);
signal y: std_logic_vector(6 downto 0);
...
process(x)
variable a,b,c,d,e,f,g,h,i,j: std_logic;
begin
- auf den Folien ab Seite 163
a := ... e:= ...; y(0)<= ... y(2)<= ...;
- Aufgabe: Ergänzen der zuzuweisenden Ausdrücke an
f:= ... j:= ...;
y(3)<= ... y(6)<=...;
end process;
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 191/245
3. Optimierung
6. Aufgaben
y0
y5
y6
y4
y1
x 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 sonst
y2
y
beliebig
y3
y0
1
1
0a 1
1
1
1
-
-
1
1
-
-
0
y4
x0
0
1
1
0
1
1
1
-
-
1
1
0
-d -
1
0
-b 1
- 0
0
0
0
-
1
1
x3
·
y3
x2
- 1
-c 1
y5
1
Prof. G. Kemnitz
y2
x2
-b 1
- 1
1
x0
y1
x2
1
1
1
-
1
0a 1
-b 1
- 1
1
-
-
1
0
-f -
0e 1
-
-
1
1
-
1
x1
a := x̄3 x̄2 x̄1 x0
b := x2 x̄1 x̄0
c := x2 x̄1 x0
d := x2 x1 x̄0
e := x̄2 x1 x̄0
...
y6
1
0
-
x1
x3
1
0
0a 1
-
1
0j 1
-
-g
0
0
-
-i
1
0
-f -
-
0h 1
-
-
1
1
-
x3
x2
1
1
x3
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 192/245
3. Optimierung
6. Aufgaben
Aufgabe 3.5: Schaltungsminimierung nach Quine
und McCluskey
Gegeben ist die Menge Minterme, für die der Funktionswert 1
ist:
K ∈ {100000, 100100, 101010, 101110, 111110, 110000,
011000, 101011, 101111, 101000, 101001}
1
2
3
Aufstellen der quineschen Tabellen
Aufstellen der Tabelle der Primterme
Suche der minimalen Abdeckungsmenge
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 193/245
3. Optimierung
6. Aufgaben
Aufgabe 3.6: VHDL, Wertetab., ROBDD, Schaltung
signal a, b, c, y: std_logic;
...
y <= a xor b xor c;
1
2
3
4
Stellen Sie die Wertetabelle für die Schaltung auf.
Entwickeln Sie aus der Wertetabelle das unreduzierte OBDD
für die Abfragereihenfolge a-b-c.
Entwickeln Sie mit Hilfe der Vereinfachungsregeln Verschmelzung und Knotenelimination das zugehörige
ROBDD.
Entwickeln Sie aus dem ROBDD eine optimierte Schaltung.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 194/245
3. Optimierung
6. Aufgaben
Aufgabe 3.7: Schaltungsentwicklung für ein ROBDD
0
x1
0
2
1
0
0
1
x0
1
x2 1
1
Stellen Sie die Wertetabelle auf.
Bilden Sie das Entscheidungsdiagramm durch eine Schaltung
nach.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 195/245
4. Rechenwerke
Prof. G. Kemnitz
Rechenwerke
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 196/245
4. Rechenwerke
Rechenwerke
Die Algorithmen zur Logikoptimierung sind alle nicht für
Verarbeitungsfunktionen aus tausenden von Gattern geeignet
(KV-Diagramm für Schaltungen bis 4 Eingänge,
Quine-McCluskey und OBDDs für ein paar Eingänge mehr).
Trotzdem lassen sich Schaltungen aus Millionen von Transistoren
synthetisieren. Das funktioniert deshalb, wie die groÿen
Schaltungsblöcke keine frei strukturierten Gatterschaltungen,
sondern Rechenwerke, Register und Blockspeicher sind.
Die Basis aller arithmetischen Funktionen in Hardware ist die
Addition, mit deren Hilfe Zähloperationen, Negation, Subtraktion
bis hin zur Multiplikation nachgebildet werden.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 197/245
4. Rechenwerke
Prof. G. Kemnitz
1. Addierer
Addierer
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 198/245
4. Rechenwerke
1. Addierer
Algorithmus der Addition
0
+1
1
0
1
0
0
0
1
1
1
0
1 (−0 · 28 ) Erweiterung
1 (−1 · 28 ) zu vorzeichenbehaf(1) (1) (1)
1 0 0 0 (−1 · 28 ) teten Zahlen
0
0
1
0
0
1
Wiederhole für alle Stellen beginnend mit der
niederwertigsten
Addition der Ziern und des Übertrags der Bitstelle zuvor.
Für die Addition von drei Binärziern ai + bi + ci gilt:
Summe si = 1, wenn ein oder alle Summanden 1 sind, und
Übertrag ci+1 = 1, wenn mindestens zwei der Summanden
1 sind
(ai , bi Binärziern; ci Übertrag).
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 199/245
4. Rechenwerke
1. Addierer
Voll- und Halbaddierer
Volladdierer addiert zwei Summanden- und ein Übertragsbit.
Halbaddierer addiert nur zwei Bit.
ci+1 si
c i bi a i
0
0
0
0
0
0
1
1
0
1
0
1
0
0
0
1
0
1
1
0
1
1
1
1
0
0
1
1
0
1
0
1
0
1
1
1
1
0
0
1
ai
bi
ci
Prof. G. Kemnitz
Summe si
Übertrag ci+1
·
Schaltungen
Halbaddierer
ai
bi
HA
s
si
c
ci+1
Volladdierer
VA
ai
bi
ci
ai
bi
s
si
c
ci+1
ci
=1
si
≥1
ci+1
&
&
&
Halbaddierer
Volladdierer
ai ⊕ bi
ai ⊕ bi ⊕ ci
ai bi
ai bi ∨ ai ci ∨ bi ci
Institut für Informatik, Technische Universität Clausthal
=1
17. Juni 2014 200/245
4. Rechenwerke
1. Addierer
Ripple-Addierer
Der Ripple-Addierer ist der einfachste Addierer. Er besteht aus n
über die Übertragssignale verkettete Volladdierer.
a0 b0 tdVA s1 a1 b1 tdVA s1
c0
VA
s
c
c1
VA
an−1 bn−1 tdVA sn−1
s
c
c2
cn−1
VA
s
c
cn
Die maximale Verzögerung ist die vom Übertragseingang c0 bis
zum Übertragsausgang cn und beträgt
tdAdd = n · tdVA
(tdVA maximale Verzögerung eines Volladdierers).
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 201/245
4. Rechenwerke
1. Addierer
Beschreibung durch eine Generierungsschleife
Verarbeitungsketten lassen sich am einfachsten als Schleife
beschreiben.
signal a,b,s:std_logic_vector(n-1 downto 0);
signal cin, cout: std_logic;
...
tdVA
process(a, b, cin)
variable c: std_logic;
begin
c:=cin;
for i in 0 to n-1 loop
s(i) <= a(i) xor b(i) xor c;
c := (a(i) and b(i)) or (a(i) and c)
or (b(i) and c);
end loop;
cout<=c;
end process;
Prof. G. Kemnitz
·
cin
a0
b0
VA
s
s0
c
a1
b1
VA
an−1
bn−1
VA
s
s1
c
s
sn−1
c
cout
⇒Web-Projekt: P2.5/RippleAdd.vhdl
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 202/245
4. Rechenwerke
1. Addierer
Schneller Übertragsdurchlauf
Genau genommen summieren sich beim Ripple-Addierers nicht
die maximalen Verzögerungen der Volladdierer, sondern die
Verzögerungen zwischen Übertragseingang und -ausgang. Zur
Minimierung der Übertragsverzögerung werden bitweise zwei
Hilfssignale gebildet:
Übertrag weiterleiten (propagate):
pi = ai ⊕ bi
Übertrag erzeugen (generate):
gi = ai bi
Mit diesen Hilfssignalen vereinfacht sich der zeitkritische
Berechnungsteil zu:
ci+1 = pi ci ∨ gi .
Prof. G. Kemnitz
si
tdex
=1
ci−1
&
pi
tdex
=1
ai
·
tdcy
Institut für Informatik, Technische Universität Clausthal
≥1
gi
ci
&
bi
17. Juni 2014 203/245
4. Rechenwerke
1. Addierer
si
s0
tdex
VA
sn−1
=1
tdcy
c1
c0 tdcy
&
ci−1
tdex
a0
b1
pi
=1
ai
≥1
VA
ci
cn
cn−1
gi
tdcy
&
bi
an−1 bn−1
Der Aufwand ist etwa derselbe wie für den Ripple-Addierer mit
Volladdierern ohne schnellen Übertragsdurchlauf. Die
Verzögerung ist nur etwa halb so groÿ.
In dem FPGA für die Übungen gibt es spezielle Verbindungen
und Gatter für die schnelle Übertragsweitergabe zwischen
benachbarten Zellen. Dadurch ist die Addition im Vergleich zu
anderen gleichlangen Gatterverkettungen sehr schnell.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 204/245
4. Rechenwerke
1. Addierer
Hierarchische Addierer
Auch bei einem schnellen Übertragsdurchlauf nimmt die
Verzögerung proportional zur Bitanzahl zu. Für sehr groÿe
Bitbreiten gibt es mehrere Möglichkeiten, die Kettenstruktur für
die Übertragsberechnung durch eine Baumstruktur zu ersetzen.
Bei einem Baum nimmt die Verzögerung nur noch mit dem
Logarithmus der Bitbreite zu. Der Preis der höheren
Geschwindigkeit ist mehr Hardware-Aufwand.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 205/245
4. Rechenwerke
1. Addierer
c0
Aus den Generate- und
Propagate-Signalen gi und pi
der einzelnen Bitstellen wird
für jede Bitstelle i ein
Block-Generate-Signal g0.i und
ein Block-Propagate-Signal p0.i
gebildet. Diese beschreiben, ob
die Summandenbits 0 bis i
zusammen für Bit i einen
Übertrag generieren oder den
Eingangsübertrag c0 bis Bit i
weiterleiten. Die Bildung der
Block-Generate- und
Block-Propagate-Signale ist
assoziativ.
Prof. G. Kemnitz
·
p0,0
g0,0
p0
g0
p1
&
p2
&
p3
≥1
g0,1
≥1
c2
≥1
c3
≥1
c4
p0,2
&
≥1
&
&
g3
c1
&
&
g2
≥1
p0,1
&
g1
&
g0,2
p0,3
&
≥1
g0,3
assoziative Kette
O(1)
O(log(n)) möglich
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 206/245
4. Rechenwerke
1. Addierer
Die Kettenoperation zur Bildung der Block-Generate- und
Block-Propagate-Signale für drei aufeinanderfolgende Bits:
(p2 , g2 ) ◦ [(p1 , g1 ) ◦ (p0 , g0 )] = (p2 p1 p0 , g2 ∨ g1 p2 ∨ g0 p2 p1 )
führt bei Vertauschung der Berechnungsreihenfolgen auf
dieselben logischen Operationen (Beweis der Assoziativität):
[(p2 , g2 ) ◦ (p1 , g1 )] ◦ (p0 , g0 ) = (p2 p1 p0 , g2 ∨ g1 p2 ∨ g0 p2 p1 )
Für vier Bits besteht die Verarbeitungskette aus Operationen:
p0
g0
p1
g1
&
&
≥1
p0,1
&
g0,1
&
p2 g 2
(p0 , g0 )
(p1 , g1 )
Prof. G. Kemnitz
(p2 , g2 )
·
≥1
p0,2
&
g0,2
&
p0,3
≥1
g0,3
p3 g 3
(p3 , g3 )
Institut für Informatik, Technische Universität Clausthal
(p0,3 , g0,3 )
17. Juni 2014 207/245
4. Rechenwerke
1. Addierer
Mit einer anderen Ausführungsreihenfolge (Klammernsetzung)
(p3 , g3 )◦[(p2 , g2 ) ◦] [(p1 , g1 ) ◦ (p0 , g0 )] = [(p3 , g3 ) ◦ (p2 , g2 )]◦[(p1 , g1 ) ◦ (p0 , g0 )]
können die erste und die letzte Operation gleichzeitig erfolgen.
Aus dem kettenartigen wird ein baumartiger Datenuss:
p0
g0
p1
g1
p2
g2
p3
g3
&
p0,1
&
g0,1
≥1
p2,3
&
&
td◦
≥1
g2,3
(p0 , g0 )
(p1 , g1 )
(p2 , g2 )
(p3 , g3 )
&
&
td◦
(p0,3 , g0,3 )
p0,3 = p3 p2 p1 p0
≥1
g0,3 = g3 ∨ g2 p3 ∨
g 1 p3 p2 ∨ g 0 p3 p2 p1
(td◦ max. Verzögerung der Operatorfunktion (entspricht der
Verzögerung einer UND-ODER-Kette).
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 208/245
4. Rechenwerke
1. Addierer
Erweiterung auf die Berechnung aller Block-Propagate- und
Block-Generate-Signale für eine 8-Bit-Addition:
(p7 , g7 )
(p0,7 , g0,7 )
(p0,6 , g0,6 )
(p0,5 , g0,5 )
(p0,4 , g0,4 )
(p0,3 , g0,3 )
(p0,2 , g0,2 )
(p0,1 , g0,1 )
(p0 , g0 )
(p6 , g6 )
(p5 , g5 )
(p4 , g4 )
(p3 , g3 )
(p2 , g2 )
(p1 , g1 )
(p0 , g0 )
Die Verzögerungszeit wächst logarithmisch mit der Bitbreite n:
n
8
16
32
64
tdKette
≈ 8 · td◦
≈ 16 · td◦
≈ 32 · td◦
≈ 64 · td◦
tdBaum
Prof. G. Kemnitz
·
≈ 5 · td◦
≈ 6 · td◦
≈ 7 · td◦
Institut für Informatik, Technische Universität Clausthal
≈ 8 · td◦
17. Juni 2014 209/245
4. Rechenwerke
Carry-Save-Addierer
Ein Carry-Save-Addierer besteht je Bit aus einem Volladdierer, der drei Summandenbits zu einem Summen- und
einem Übertragsbit zusammenfasst.
Abschlieÿende Addition des
Summen- und der Übertragvektors mit einem normalen
Addierer.
Die gesamte Additionsdauer
für zwei Additionen ist nur um
eine Volladdiererverzögerung
länger als für eine Addition.
Prof. G. Kemnitz
·
1. Addierer
Carry-SaveAddierer
a0
b0
c0
a1
b1
c1
a2
b2
c2
VA
c
VA
VA
s
s2
···
s
si−1
c
s
HA
tdVA
Institut für Informatik, Technische Universität Clausthal
s1
c
VA
c
s
c
s
···
ai−1
bi−1
ci−1
HA
s
c
VA
s0
s
c
VA
RippleAddierer
s
si
c
si+1
tdRA
17. Juni 2014 210/245
4. Rechenwerke
1. Addierer
Für mehr als zwei Additionen erfolgt zuerst eine baumartige
3-zu-2-Reduktion und zum Abschluss wieder die Addition des
Summen und des Übertragsvektors mit einem normalen Addierer.
tdVA
x1
x2
x3
x4
x5
x6
n -1 : 0
n -1 : 0
CSA
n -1 : 0
s
c
n -1 : 0
n :1
tdVA
CSA
s
c
n -1 : 0
n -1 : 0
CSA
n -1 : 0
s n -1 : 0
n :1
c
n:0
n +1 :1
tdVA
CSA
tdRA
s
n +1 :0
c n +2 :1
RA
n +2 :0
y
CSA Carry-Save-Addierer
RA normaler, z.B. Ripple-Addierer
Beim Entwurf eines solchen Vektoraddierers ist zu beachten, dass
die Bitanzahl der Zwischensummen mit der Summandenanzahl
zunimmt, bei zwei Summanden um ein Bit, bei drei und vier
Summanden um zwei Bit etc.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 211/245
4. Rechenwerke
1. Addierer
Zusammenfassung
Ripple-Addierer: Kette von n Volladdierern; zur Bitbreite n
proportionale Verzögerungszeit.
Schneller Übertragsdurchlauf: Halbierung der
Additionsdauer ohne nennenswerten Zusatzaufwand.
Hierarchische Addierer: Nur logarithmisch mit der Bitbreite
zunehmende Verzögerung. Deutlich mehr
Schaltungsaufwand. Eingesetzt für die schnelle Addition von
Summanden groÿer Bitbreite.
Carry-Save-Addierer: Addierer für mehrere Summanden, bei
dem die Verzögerung mit der Summandenanzahl nur
unerheblich zunimmt.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 212/245
4. Rechenwerke
Prof. G. Kemnitz
2. Subtrahierer, Zähler etc.
Subtrahierer, Zähler etc.
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 213/245
4. Rechenwerke
2. Subtrahierer, Zähler etc.
Subtraktion
Die Subtraktion ist die Addition mit dem negierten Summanden:
a − b = a + (−b)
Die Negation ist Stellenkomplement +1:
−b = b̄ + 1
Zur Probe, die Summe aus einer Zahl und ihrem
Stellenkomplement ist die gröÿte darstellbare Zahl. Eins addiert
im Zahlenkreis ergibt null. Beispiel:
387 + 3̄8̄7̄ + 1
=
387 + 612 + 1
=
999 + 1 = (1∗ ) 000
(1∗ nicht darstellbare führende Eins). Das Stellenkomplement
für Binärzahlen ist die bitweise Negation:
(
1 für x = 0
x̄ =
0 für x = 1
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 214/245
4. Rechenwerke
2. Subtrahierer, Zähler etc.
Subtraktionsbeispiel und Subtrahierer
Addition des Stellenkomplements +1
a
1 1 1 0 0 1 0 1
+b̄
0 1 0 1 0 1 0 1
1
(+ci ) (0) (1) (0) (0) (0) (1) (0) (1) (-1)
0 0 1 1 1 0 1 0
bitweise Subtraktion
1 1 1 0 0 1 0 1
a
−b
1 0 1 0 1 0 1 0
(−ci ) (-1)(0) (-1)(-1)(-1) (0) (-1) (0) (-1)
0 0 1 1 1 0 1 0
(negierter) Eingangsübertrag
(negierter) Ausgangsübertrag
Die Summe aus Eingangsübertrag und eins ist der negierte
Eingangsübertrag:
1 − c0 = c̄0
Schaltung eines Subtrahierers:
c0
a0
b0
VA
Prof. G. Kemnitz
s
c
·
s0
c1
a1
b1
VA
s
c
s1
c2
cn−1
an−1
bn−1
Institut für Informatik, Technische Universität Clausthal
VA
s
c
sn−1
cn
17. Juni 2014 215/245
4. Rechenwerke
2. Subtrahierer, Zähler etc.
Binärzähler
Binärzähler bestehen aus einem Register für den Zustand und
einer Inkrement-Operation (+1) oder der Dekrement-Operation
(−1).
Prof. G. Kemnitz
Vorwärtszähler
1
I
T
Add
Rückwärtszähler
z
I
-1
I
T
Add
z
I
I Initialisierungssignal T Takt
z Signal für den Zählstand
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 216/245
4. Rechenwerke
2. Subtrahierer, Zähler etc.
Inkrement-Rechenwerk
Das Rechenwerk für die Inkrement-Operation ist ein Addierer mit
der Konstanten null und dem Eingabeübertrag.
a0
0
c0
0 a1
VA
s
0 an−1
VA
s0
c0
VA
s1
a1
c i bi a i
s
c
c
c
a0
s
Halbaddierer
Konstantencn
elimination
sn−1
a2
an−1
&
&
&
&
=1
=1
=1
=1
sn−1
s1
HA
HA
s2
HA
cn
vereinfachte
Schaltung
HA
0
0
1
1
·
Institut für Informatik, Technische Universität Clausthal
0
0
0
1
0
1
1
0
Schaltung
ai
ci
&
ci+1
=1
si
Ein Volladdierer mit einem konstanten Summanden null
vereinfacht sich zu einem Halbaddierer.
Prof. G. Kemnitz
ci+1 si
0 0
0 1
0 0
0 1
konstant
17. Juni 2014 217/245
4. Rechenwerke
2. Subtrahierer, Zähler etc.
Dekrement-Rechenwerk
Für die Dekrement-Operation werden die Zweierkomplementdarstellung von minus eins (11...1) und der negierte Eingabeübertrag c̄0 addiert. Das zweite Summandenbit der Volladdierer
ist konstant eins. Die vereinfachte Schaltung ähnelt dem
Halbaddierer für die Dekrement-Operation.
1 a1
a0
1
c̄0
s
VA
1 an−1
VA
s
s0
c̄0
VA
s1
an−1
≥1
≥1
≥1
≥1
=1
=1
=1
=1
Prof. G. Kemnitz
s0
·
s1
cn
sn−1
a2
a1
c i bi a i
s
c
c
c
a0
Wertetabelle eines
Volladdieres mit bi = 1
s2
cn
sn−1
Konstantenelimination
ci+1 si
0
0
1
1
1 0
0 1
1 1
1 0
1 0
1 0
1 1
1 1
konstant
vereinfachte Schaltung
ai
vereinfachte
≥1 ci+1
Schaltung
=1 si
ci
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 218/245
4. Rechenwerke
2. Subtrahierer, Zähler etc.
Rechenwerk für die Negation
Die Negation ist die Invertierung plus eins:
Prof. G. Kemnitz
x0
’1’
x
-x
HA
s
c
y
+1
x2
HA
y
x0
y0
HA
x1
s
c
y1
⇓
x2
&
=1
=1
Institut für Informatik, Technische Universität Clausthal
y2
xn−1
&
y1
·
s
c
y0
⇓
x
x1
=1
y2
yn−1
17. Juni 2014 219/245
4. Rechenwerke
2. Subtrahierer, Zähler etc.
Rechenwerk zur Betragsbildung
Die Betragsbildung ist eine bedingte Negation.
x
abs(x)
⇓
x
Prof. G. Kemnitz
+1
−x
xn−1
·
x0
y
1
0
x1
x2
xn−2
&
&
=1
=1
xn−1
y
y0
=1
0 1
0 1
0 1
’0’
y1
y2
yn−1
yn−1
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 220/245
4. Rechenwerke
Prof. G. Kemnitz
3. Multiplizierer
Multiplizierer
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 221/245
4. Rechenwerke
3. Multiplizierer
Vorzeichenfreie Multiplikation
(a3 · 23 + a2 · 22 + a1 · 21 + a0 · 20 ) · (b3 · 23 + b2 · 22 + b1 · 21 + b0 · 20 ) =
a3 b0 · 23 + a2 b0 · 22 + a1 b0 · 21 + a0 b0 · 20
a3 b1 · 2 + a2 b1 · 23 + a1 b1 · 22 + a0 b1 · 21
5
a3 b2 · 2 + a2 b2 · 24 + a1 b2 · 23 + a0 b2 · 22
6
a3 b3 · 2 + a2 b3 · 25 + a1 b3 · 24 + a0 b3 · 23
4
p7 p6
p5
p4
p3
p2
p1
p0
Die Multiplikation setzt sich zusammen aus
1-Bit-Multiplikation ⇒ UND
zeilen- und spaltenweise Addition ⇒ Halb- und Volladdierer
Das kleinstes Ergebnis ist 00002 · 00002 7→ 0000 00002 und das
gröÿte ist 11112 · 11112 7→ 1110 00012 . Allgemein ist die Anzahl
der Produktbits gleich der Summe der Anzahl der Operandenbits.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 222/245
4. Rechenwerke
b0
a0
a1
a2
a3
3. Multiplizierer
Matrixmultiplizierer
b1
&
p0
b2
HA
&
VA
VA
HA
&
einer der längsten Pfade
VA
VA
c
VA
&
c
Die Verzögerung eines Matrixmultiplizierers nimmt nur linear mit der
Bitanzahl n zu, der Aufwand quadratisch.
Prof. G. Kemnitz
·
VA
VA
Institut für Informatik, Technische Universität Clausthal
s
p4
s
p5
c
&
VA
&
p3
c
&
s
s
c
&
s
c
&
HA
s
c
&
s
p2
s
c
&
s
c
&
HA
s
c
&
&
b3
c
&
&
p1
s
s
p6
c
p7
17. Juni 2014 223/245
4. Rechenwerke
3. Multiplizierer
Matrix-Multiplizierer für Vorzeichenzahlen
(−a3 · 23 + a2 · 22 + a1 · 21 + a0 · 20 ) · (−b3 · 23 + b2 · 22 + b1 · 21 + b0 · 20 ) =
−p7 · 27
−a0 b3 · 23 + a0 b2 · 22 + a0 b1 · 21 + a0 b0 · 20
−a1 b3 · 24 + a1 b2 · 23 + a1 b1 · 22 + a1 b0 · 21
−a2 b3 · 25 + a2 b2 · 24 + a2 b1 · 23 + a2 b0 · 22
+a3 b3 · 26 − a3 b2 · 25 − a3 b1 · 24 − a3 b0 · 23
+p6 · 26
+p5 · 25
ai + bi + ci
Summanden
ci bi ai Wert ci+1 si
0
0
0
0
0
0
1
1
0
1
0
1
0
1
1
2
0
0
0
1
0
1
1
0
1
1
1
1
0
0
1
1
0
1
0
1
1
2
2
3
0
1
1
1
1
0
0
1
+p4 · 24
+p3 · 23
+p2 · 22
+p1 · 21
+p0 · 20
ai + bi − ci
ai − bi − ci
−ai − bi − ci
Wert ci+1 −si Wert −ci+1 si Wert −ci+1 −si
0
1
1
2
0
1
1
1
0
1
1
0
0
1
-1
0
0
0
1
0
0
1
1
0
0
-1
-1
-2
0
0
0
1
0
1
1
0
-1
0
0
1
0
0
0
1
1
0
0
1
-1
0
-2
-1
1
0
1
1
1
0
0
1
-1
-2
-2
-3
0
1
1
1
1
0
0
1
Schaltung wie bisheriger Matrixmultiplizierer, nur mit zum Teil
negativ bewerteten Zwischenergebnissen.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 224/245
4. Rechenwerke
Prof. G. Kemnitz
4. Komparatoren
Komparatoren
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 225/245
4. Rechenwerke
4. Komparatoren
Test auf Gleichheit oder Ungleichheit
signal a, b: std_logic_vector(n-1 downto 0);
signal v: std_logic;
Schaltung für einen
bitweisen Vergleich
a0
b0
a1
b1
···
an−1
bn−1
==
==
==
Prof. G. Kemnitz
·
v<=(a=b);
v0
v1
..
& v
.
vn−1
Regeln zur Konstanteneliminierung
0
ai
ai
1
ai
ai
==
vi
vi
==
vi
Vergleich mit
einer Konstanten
v<=(a=”1001”)
a0
a1
a2
a3
&
v
vi
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 226/245
4. Rechenwerke
4. Komparatoren
Test auf gröÿer, gröÿer oder gleich etc.
Ein Gröÿenvergleich ist eine Subtraktion bzw. die Addition des
Stellenkomplements (plus eins). Die Dierenz vorzeichenfreier
Operanden ist negativ, wenn das Übertragsbit cn = 1, und bei
vorzeichenbehafteten Operanden das Übertragsbit gleich dem
Vorzeichenbit ist cn = sn−1 ist.
Operation
Übertrag
kein Übertrag
negativ
positiv
a − b = a + b̄ + 1
<NVZ
≥NVZ
<VZ
≥VZ
a − b − 1 = a + b̄
≤NVZ
>NVZ
≤VZ
>VZ
NVZ vorzeichenfreie Zahlen; VZ vorzeichenbehaftete Zahlen
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 227/245
4. Rechenwerke
4. Komparatoren
In der nachfolgenden Subtrahierschaltung mit schnellem Übertragsdurchlauf können die EXOR-Gatter für die Bildung der
Summenbits weggelassen werden.
si−1
si
=1
&
ci−1
=1
tdcy
pi−1
=1
≥1
gi−1
&
&
ci
=1
tdcy
pi
=1
ai−1
≥1
gi
ci
&
ci+1
≥1
pi+1
=1
&
gi+1
ci+2
&
ai+1
ai
bi−1
Gatter eines Subtrahierers, die ein
Komparator nicht
braucht
si+1
bi
bi+1
Schaltungsaufwand und Verzögerung sind ähnlich wie bei einem
Subtrahierer. Wenn Schaltungsaufwand und Geschwindigkeit
wichtige Optimierungsziele sind, ist der Test auf Gleichheit einem
Gröÿenvergleich in der Zielfunktion vorzuziehen.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 228/245
4. Rechenwerke
Prof. G. Kemnitz
5. Block-Shifter
Block-Shifter
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 229/245
4. Rechenwerke
5. Block-Shifter
Verschiebung und Rotation
arithmetische Verschiebung
logische Verschiebung
y := x srl 2;
Rotation
y := x sra 2;
y := x ror 2;
x: 0
0 1 0 0 1 1 0 1
x:
0 1 0 0 1 1 0 1
x:
0 1 0 0 1 1 0 1
y:
0 0 0 1 0 0 1 1
y:
0 0 0 1 0 0 1 1
y:
0 1 0 1 0 0 1 1
y := x sll 2;
x: 0 1 0 0 1 1 0 1
y: 0 0 1 1 0 1 0 0
y := x sla 2;
0
y := x rol 2;
x: 0 1 0 0 1 1 0 1
x:
0 1 0 0 1 1 0 1
y: 0 0 1 1 0 1 1 1
y:
0 0 1 1 0 1 0 1
Operand 1: std_logic_vector, unsigned, signed
Operand 2: NATURAL
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 230/245
4. Rechenwerke
5. Block-Shifter
Logische Verschiebung: Füllen der freiwerdenden Bits mit
0; rechts 7→Verdopplung, links 7→Halbierung
1010 1101 srl 2 7→ 0010 10112
| {z }
| {z }2
AD16
2B16
0010 1011 sll 2 7→ 1010 11002
| {z }2
| {z }
2B16
AC16
Arithmetische Verschiebung: Füllen der freiwerdenden Bits
mit dem Vorzeichenbit; rechts 7→vorzeichenbehaftete
Halbierung
0100 1101
| {z }2
26 +23 +22 +1=77
1011 0010
| {z }2
−27 +25 +24 +2=−78
sra 2 7→ 0001 00112
| {z }
19≤77/4
sra 2 7→ 1110 11002
| {z }
−20≤−78/4
Auch bei negativen Ergebnissen wird abgerundet.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 231/245
4. Rechenwerke
Block-Shifter
Eine konstante
Verschiebung
beschreibt
Verbindungen
ohne logische
Verknüpfungen.
Eine variable
Verschiebung
beschreibt
umschaltbare
Verbindungen
mit Multiplexern,
realisiert als
Block-Shifter.
Prof. G. Kemnitz
·
5. Block-Shifter
Verschiebung
0 oder 1
0
Verschiebung
0 oder 2
Verschiebung
0 oder 4
1
0
0
1
0
0
1
0
y0
1
0
0
1
0
0
1
0
y1
1
0
1
0
0
1
0
y2
1
0
1
0
0
1
0
y3
1
0
1
0
1
0
y4
x0
x1
x2
x3
x4
s0
s1
Institut für Informatik, Technische Universität Clausthal
s2
17. Juni 2014 232/245
4. Rechenwerke
5. Block-Shifter
Rotation
Bei der Rotation werden die Bits im Kreis verschoben.
y := x ror 2;
y := x rol 2;
x:
0 1 0 0 1 1 0 1
0 1 0 0 1 1 0 1
y:
0 1 0 1 0 0 1 1
0 0 1 1 0 1 0 1
Verschiebung und Rotation lässt sich auch mit Indexoperationen
und Konkationation beschreiben:
signal x, y: std_logic_vector(7 downto 0);
...
y <= x(5 downto 0) & "00" -- identisch mit y <= x slr 2
y <= "00" & x(5 downto 0) -- identisch mit y <= x sll 2
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 233/245
4. Rechenwerke
Prof. G. Kemnitz
6. Aufgaben
Aufgaben
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 234/245
4. Rechenwerke
6. Aufgaben
Aufgabe 4.1: Carry-Save-Addierer
Die Signale a bis c und y seien 4-Bit vorzeichenbehaftete Zahlen:
signal a, b, c, d, y: signed(3 downto 0);
Entwickeln Sie eine aufwands- und geschwindigkeitsoptimierte
Schaltung mit der Funktion
y =a+b−c−d
nach dem Carry-Save-Prinzip und mit schnellem
Übertragsdurchlauf im abschlieÿenden Addierer.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 235/245
4. Rechenwerke
6. Aufgaben
Aufgabe 4.2: Hierarchischer Addierer
Entwickeln Sie in Anlehnung an Folie 209 die Schaltung zur
Bildung aller Block-Propagate- und Block-Generate-Signale g0.i
und p0.i aus den Bit-Propagate- und Bit-Generate-Signalen gi
und pi für die Bitbreite n = 6.
Wie viele Teilschaltungen mit der Operatorfunktion ◦ sind
erforderlich?
Wie groÿ ist die maximale Verzögerung gerechnet als
Vielfaches von td◦ ?
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 236/245
4. Rechenwerke
6. Aufgaben
Aufgabe 4.3: Vergleich für vorzeichenfreie Zahlen
Kontrollieren Sie anhand der nachfolgenden Zahlenbeispiele, dass
eine negative Dierenz für vorzeichenfreie Zahlen am
Übertragsbit cn = 1 zu erkennen ist:
a
W(a)
1000 1011
b
W(b)
c=a-b
W(c)
cn
1000 0111
84
85
255
0000 0011
4
37
255
14
(Bitvektorformat 8 Bit vorzeichenfrei, W(...) Wert dezimal).
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 237/245
4. Rechenwerke
6. Aufgaben
Aufgabe 4.4: Vergleich vorzeichenbehafteter Zahlen
Kontrollieren Sie anhand der nachfolgenden Zahlenbeispiele, dass
eine negative Dierenz für vorzeichenbehafteten Zahlen an
Vorzeichen- gleich Übertragsbit cn = sn−1 zu erkennen ist.
a
W (a)
b
W (b)
1000 1011
-117
1000 0111
-121
-127
c = a−b
W (c)
cn+1 = sn
-126
1111 1110
26
125
(Bitvektorformat 8 Bit vorzeichenbehaftet, W(...) Wert
dezimal).
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 238/245
4. Rechenwerke
a
W (a)
6. Aufgaben
b
W (b)
c = a−b
W (c)
(1)1000 1011
1000 1011
-117
1000 0111
-121
+(0)0111 1001
4
(0)0000 0100
(1)1000 0001
1000 0001
-127
1000 0010
-126
+(0)0111 1110
-1
(1)1111 1111
(1)1111 1011
1111 1011
-5
1111 11100
-3
+(0)0000 0011
-2
(1)1111 1110
(0)0001 1010
0001 1010
Prof. G. Kemnitz
26
1001 1101
-99
+(0)0110 0011
125
(0)0111 1101
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 239/245
4. Rechenwerke
6. Aufgaben
Man erkennt negative Ergebnisse nicht an Vorzeichen gleich
Übertrag, sondern man muss die Werte vor der Subtraktion um
ein Bit vorzeichenerweitert verlängern, so dass
Wertebereichsüberläufe ausgeschlossen sind. Im Beispiel ist das
zusätzliche Bit 8 dann das Vorzeichenbit, an dem negative Werte
zu erkennen sind. An Bit 7 exor Bit 8 erkennt man nicht das
Vorzeichen, sondern Wertebereichsüberläufe (sorry).
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 240/245
4. Rechenwerke
6. Aufgaben
Aufgabe 4.5: Matrixmultiplizierer
Entwickeln Sie die Schaltung für einen 2 × 2-Bit-Matrixmultiplizierer
1 für vorzeichenfreie Zahlen
2 für vorzeichenbehaftete Zahlen.
Stellen Sie zur Kontrolle für beide Multiplizierer die Wertetabellen auf:
Prof. G. Kemnitz
a
00
00
00
00
01
·
W (a)
b
00
01
10
11
00
W (b)
c=a·b
W (c)
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 241/245
4. Rechenwerke
6. Aufgaben
Lösung HA 7.1
(−a1 · 2 + a0 ) · (−b1 · 2 + b0 ) = a1 b1 · 22 − (a0 b1 + a1 b0 ) · 2 + a0 b0
a 1 a 0 b1 b0
&
p0
&
z1
&
z2
&
z3
z4
−a HA1 s
−b
−c
p1
−a HA2 s
−c
b
p2
p3
−a −b
0 0
0 1
1 0
1 1
−a b
0 0
0 1
1 0
1 1
s −c Wert
0
0 0
-1
1 1
-1
1 1
-2
0 1
s −c Wert
0 0
0
1 0
1
1 1
-1
0 0
0
Die Funktionsgleichungen der Halbaddierer sind aus den
Wertetabellen ablesbar.
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 242/245
4. Rechenwerke
6. Aufgaben
a 1 a 0 b1 b0
&
p0
&
z1
&
z2
&
z3
z4
−a HA1 s
−b
−c
p1
−a HA2 s
−c
b
p2
p3
−a −b
0 0
0 1
1 0
1 1
−a b
0 0
0 1
1 0
1 1
s −c Wert
0
0 0
-1
1 1
-1
1 1
-2
0 1
s −c Wert
0 0
0
1 0
1
1 1
-1
0 0
0
p1 = z1 ⊕ z2
z3 = z1 ∨ z2
p2 = z3 ⊕ z4
p3 = z3 ∧ z̄4
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 243/245
4. Rechenwerke
6. Aufgaben
Kontrolle durch Simulation:
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 244/245
4. Rechenwerke
6. Aufgaben
Aufgabe 4.6: Rotation und Verschiebung
Welche Werte werden den Variablen y1 bis y3 zugewiesen?
variable x: signed(7 downto 0):=b"1011_0111";
variable y1, y2, y3: signed(7 downto 0);
...
y1 := x ror 3;
y2 := x sra 2;
y3 := x srl 5;
Prof. G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
17. Juni 2014 245/245
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement