0 0 0 0

Werbung
FPGA Praktikum WS 00/01
Linear Rückgekoppelte
Schieberegister und
Tristate Treiber
Gewöhnlicher Zähler
Ripple-Carry Zähler werden mit zunehmender
Größe langsamer.
1
&
≠
DFF
&
≠
DFF
&
≠
DFF
&
≠
DFF
Alternative
Manchmal gibt es eine Alternative zu RippleCarry Zählern
LFSR:
Linear Feedback Schift Register
Linear Rückgekoppelte Schieberegister
Bestimmte Bits eines Schieberegisters werden
über ein XNOR an den Eingang Rückgekoppelt
Beispiel 4-Bit LFSR
=
DFF
0
1
3
7
14
13
11
6
12
9
2
5
10
4
8
0
0
0
0
0
1
1
1
0
1
1
0
0
1
0
1
0
DFF
0
0
0
1
1
1
0
1
1
0
0
1
0
1
0
0
DFF
0
0
1
1
1
0
1
1
0
0
1
0
1
0
0
0
DFF
0
1
1
1
0
1
1
0
0
1
0
1
0
0
0
0
1
1
1
0
1
1
0
0
1
0
1
0
0
0
0
0
Nachteile LFSR
Durchläuft nur 2n-1 Zustände
Verschiedene Schrittgrößen sind nicht möglich
(+3, etc)
Die Reihenfolge ist ziemlich zufällig
Kein effizienter Vergleich „>“ möglich.
Vorteile LFSR
Extrem schnell und klein
Nur ein LUT auch bei 168-Bit Zählern
Rückwärts zählen ist möglich
Mit Zusatzaufwand ist eine Erweiterung auf 2n
Zustände möglich
Die Reihenfolge ist ziemlich zufällig
Rauschgenerator (z.B. C64 SID)
Zufallsmuster z.B. für Selbsttest (BIST)
Paramter
Es gibt keine geschlossene Form, um
auszurechnen, welche Bits rückgekoppelt
werden müssen.
Es gibt Tabellen z.B. von Xilinx
Bits
3
4
5
6
7
8
XNOR from
3,2
4,3
5,3
6,5
7,6
8,6,5,4
Bits
9
10
11
12
13
14
XNOR from
9,5
10,7
11,9
12,6,4,1
13,4,3,1
14,5,3,1
Tristate Treiber
Ein normales Gatter treibt an seinen Ausgang
immer entweder 0 oder 1.
Der Zustand ‘X‘ in der Simulation bedeutet nur, daß
der Simulator nicht weis, welchen Wert der Ausgang
hat.
Tristate Treiber können zusätzlich als dritten
Zustand den Ausgang ausschalten.
Diesen Zustand nennt man „hochohmig“, „tristated“
oder „high impedance“
Abgekürzt wird er mit ‘Z‘
Tristate Treiber Eigenschaften
 So sieht ein Tristate Treiber im Schaltplan aus:
Enable
Out
In
 Die Wertetabelle sieht so aus:
Enable
1
1
0
0
In
0
1
0
1
Out
0
1
Z
Z
 Vorsicht: Es gibt auch Treiber mit invertiertem Enable
Anwendung 1:
Bidirektionale Signale
Write/notRead
output
output
input
input
 So werden beispielsweise RAMs an Prozessoren
angeschlossen
Das selbe Signal wird zum lesen und Schreiben von
Daten verwenden.
Der Prozessor teilt dem RAM mit einem zusätzlichen
Signal die Richtung der Datenübertragung mit.
Anwendung 2:
Große Multiplexer
 Standard N-zu-1 Multiplexer aus 2-zu-1 Muxes
 Kosten:
N-1 LUTs
N-2 zusätzliche Signale
Signallaufzeit O(log(N))
 Kodierte Eingänge
Anwendung 2:
Große Multiplexer
In1
Sel1
InN SelN
In2 Sel2
...
 N-zu-1 Multiplexer aus Tristate Treibern
 Kosten:
0 LUTs
N Tristate Treiber (Bei Xilinx praktisch gratis)
0 zusätzliche Signale
Signallaufzeit O(1), bei kleinen Muxes jedoch größer als die LUT
Variante.
 Dekodierte Eingänge
Anwendung 2:
Wired-OR (Open Collector)
out
b
R
a
gnd
 Die Eingänge treiben den Ausgang auf 1 oder Z, nie jedoch auf 0.
 Wenn beide Eingänge auf Z treiben, kann der schwache Widerstand
das Signal auf 0 ziehen.
 Die Schaltung berechnet also ein ODER aus allen Eingängen.
 Sie ist relativ langsam und wird vor allem auf Platinen verwendet,
wenn die Anzahl der Eingänge nicht im Voraus bekannt ist. (z.B.
Steckkarten)
 Im FPGA macht diese Technik Sinn, wenn ein ODER aus sehr vielen
Eingängen berechnet werden soll.
 Wired-AND geht über die DeMorgan Regel
Tristate in VHDL
 In VHDL könnt ihr einem IEEE.STD_LOGIC Signal den
Wert ‘Z‘ zuweisen.
 Ein Tristate Treiber sieht dann z.B. so aus:
if enable=‘1‘ then
out <= in;
else
out <= ‘Z‘;
end if;
Bidirektionale Ports werden als „inout“
deklariert.
Herunterladen