View
0
Download
0
Category
Preview:
Citation preview
Juni 2009
1
Echtzeitfähige Berechnung der Modellgleichungen von Huber-Braun-Neuronen auf einem Virtex-4-FPGA
Marcel Beuler, Werner Bonath Fachhochschule Gießen-Friedberg, Fachbereich EI
Wiesenstraße 14, D-35390 Gießen, Germany marcel.beuler@web.de, bonath@ieee.org
Abstract – Das in der Physiologie zum Einsatz kommende Huber-Braun-Neuronenmodell erfordert pro Iterationsschritt die Berechnung von 64 arithmetischen Operationen einschließlich mathe-matischer Funktionen. Da die Schrittweite des Modells auf 100µs festgelegt ist, müssen somit für ein Neuron pro Sekunde 640000 Operationen zur Bestimmung der Modellgleichungen ausgeführt werden. Dieser Rechenaufwand wird durch die Implementierung des synaptischen Prozesses sowie einer Netztopologie noch weiter erhöht, so dass für die Berechnung “größerer“ leitfähigkeitsbasierter neuronaler Netze (> 100 Neuronen) zur Erfüllung der Echtzeitanforderung die Entwicklung einer dedizierten Hardware, d.h. eines applikations-spezifischen Prozessors (ASP), unumgänglich ist. Auf diese Weise kann man sich von dem klassischen Von-Neumann-Konzept lösen und durch massive Parallelisierung und Pipelining eine an die Modellgleichungen des Neurons angepasste Architektur herausarbeiten, die einen drastischen Performancegewinn ermöglicht. Das hier vorge-stellte Architekturkonzept berechnet auf einem Virtex-4-FPGA bei 100MHz alle relevanten Modell-gleichungen für 400 Neuronen in Echtzeit und ist als Grundlage für die ASIC-basierte Entwicklung eines digitalen Neuroprozessor für das gewünschte Modell anzusehen.
I. Einleitung Viele Neuronen innerhalb des zentralen Nervensys-tems zeigen ein elektrisches Verhalten, das durch unterschwellige Membranpotential-Oszillationen und der Generierung von Aktionspotentialen (Spikes), falls die Oszillationen den Schwellwert erreichen, charakterisiert werden kann [2]. Solche Oszillation-en stellen eine Erweiterung des klassischen Hodgkin-Huxley-Modells zum sog. Huber-Braun-Modell dar und sind eine inhärente Eigenschaft des Neurons. Zusätzlich unterliegt jedes biologische System einem Rauschen, welches sich in der zufälligen Schwankung des Membranpotentials äußert. Wenn sich Oszillationen in der Nähe des Schwellwerts bewegen, hat dieser Rauschanteil maßgeblichen Einfluss darauf, ob ein Aktions-potential generiert wird oder nicht.
Im Modell wird der Rauschanteil mittels Box-Mueller-Algorithmus nachgebildet, was die Berechnung der elementaren Funktionen cos, ln und sqrt erfordert. Für die Hodgkin-Huxley-typische
Spike-Generierung muss zusätzlich noch die exp-Funktion bestimmt werden. Bei einer gewählten Schrittweite von 100µs sind alle relevanten Modell-gleichungen 10000 Mal pro Sekunde zu durch-laufen, d.h. das Huber-Braun-Modell ist sehr rechenintensiv. Selbst auf aktuellen Rechnern bei 2,5 bis 3 GHz Taktrate kann man weniger als 100 Neuronen in Echtzeit berechnen. Weiterhin muss berücksichtigt werden, dass ein Neuronenverbund charakterisiert wird durch eine Netztopologie, d.h. die Verbindung der einzelnen Neuronen unter-einander.
Der synaptische Prozess, d.h. die Ausbreitung des postsynaptischen Potentials (PSP) entlang des Dendriten, sowie die Aufintegration der einzelnen PSPs am Soma wird zunächst ersetzt durch einen Injektionsstrom Iinj, der das Membranpotential depolarisieren kann. Für die spätere Signalweiter-leitung innerhalb eines Neuronenverbundes ist die digital-diskrete Nachbildung der Ausbreitung der PSPs zwingend erforderlich, was den Rechenauf-wand weiter ansteigen lässt.
Die hier vorgestellte Architektur wird in VHDL programmiert, auf einem Virtex-4-FPGA syntheti-siert und funktional verifiziert. Dadurch können Änderungen innerhalb des Entwurfsprozesses nicht nur per Simulation, sondern auch auf einer Hardwareplattform überprüft werden.
II. Das Huber-Braun-Neuronenmodell Das Huber-Braun-Modell ist ein leitfähigkeitsbasier-tes Neuronenmodell, welches sich aus zwei Teilen mit jeweils einem Natrium- und einem Kaliumkanal zusammensetzt [1,2]:
• Hodgkin-Huxley-typische Komponente mit einem schnellen, unmittelbar aktiven, depolari-sierenden Natriumkanal (Index d) und einem schnellen repolarisierenden Kaliumkanal (Index r) mit den Leitfähigkeiten gd bzw. gr;
• Komponente für unterschwellige Oszillationen, bestehend aus einem langsamen depolarisie-renden Natriumkanal (Index sd) und einem langsamen repolarisierenden Kaliumkanal (Index sr) mit den Leitfähigkeiten gsd bzw. gsr;
Abb. 1 zeigt das Ersatzschaltbild des Huber-Braun-Neuronenmodells mit den insgesamt fünf Ionen-kanälen, wobei Il den schon vom Hodgkin-Huxley-
2
Modell her bekannten Leckstrom symbolisiert und die übrigen Ströme mit den oben beschriebenen Ionenkanälen korrespondieren. Der synaptische Prozess, d.h. die Reizung der Zelle, wird über eine Stromquelle mit dem Injektionsstrom Iinj nachgebil-det. Für die in Abb. 1 eingezeichnete Richtung bewirkt Iinj > 0 eine Depolarisation der Membran.
dV
dg
rV
rg
dI− rI
iV
eV
lV
lg
lI
mC
CI
srV
srg
srI
sdV
sdg
sdI− injI
(intracellular)
(extracellular)
action potential oscillation
dV
dg
rV
rg
dI− rI
iV
eV
lV
lg
lI
mC
CI
srV
srg
srI
sdV
sdg
sdI− injI
(intracellular)
(extracellular)
action potential oscillation
Abb. 1: ESB des Huber-Braun-Neuronenmodells
Über die Strom-Spannungs-Beziehung der Membrankapazität sowie dem Knotenpunktsatz erhält man Gl. (1). Der Leckstrom und die spannungsabhängigen Ströme werden mittels Gln. (2) und (3) modelliert, wobei gi die max. Leitfähigkeit (Index i steht für d, r, sd, sr), ai die spannungsab-hängige Gating-Variable und Vi das zugehörige Nernst-Potential darstellt.
( ) M l d r sd sr injdV
f V C I I I I I Idt
= ⋅ = − − − − − + (1)
( )l l lI g V V= ⋅ − (2)
( )i i i iI g a V Vρ= ⋅ ⋅ ⋅ − (3)
Analog zu Hodgkin-Huxley wird der Gating-Mecha-nismus, also die Öffnungswahrscheinlichkeit eines Kanals, über eine DGL 1. Ordnung beschrieben:
( )ϕτ∞⋅ −
=i i i
i
da a a
dt (4)
[ ]0
1
1 exp ( )∞ =+ − ⋅ −i
i i
as V V
(5)
Speziell für den unmittelbar aktiven, depolarisieren-den Natriumkanal gilt ad = ad∞. Die temperatur-abhängigen Faktoren ϕ und ρ sind 1.0 bei der Referenztemperatur von 25°C [1]. Die Differential-quotienten werden numerisch über die Euler-Integration mit einer Schrittweite von ∆t = 100µs = 0.1ms gelöst [2]:
1
( )+∆ = + ⋅ ⋅ ∆t t t tM
V V f V tC
(6)
, , , ,( )ϕ τ+∆ ∞= + ⋅∆ ⋅ −i t t i t i i t i ta a t a a (7)
Der dem Membranpotential überlagerte Rausch-anteil als inhärente Eigenschaft biologischer Systeme wird über ein mathematisches Modell beschrieben, dessen Signalamplituden (in mV) eine Gaußverteilung aufweisen. Ausgangspunkt für diesen weißen gaußschen Rauschprozess sind zwei gleichverteilte Zufallszahlen im Intervall [0,1].
Daraus erhält man über die Box-Mueller-Methode nach folgender Transformationsvorschrift eine normalverteilte Zufallszahl [2]:
4 ln( ) cos(2 ) ; [ ] mVπ= − ⋅ ∆ ⋅ ⋅ ⋅ =w wg d t a b g (8)
1
( )+∆ = + ⋅ ⋅∆ +t t t t wM
V V f V t gC
(9)
A Numerische Parameter und Simulation Die numerischen Parameter für das Huber-Braun-Modell werden aus [2] entnommen und die Betriebstemperatur des Neurons auf 25°C festgelegt. Die Konstanten sind in Appendix A zusammengefasst.
Der Rauschparameter noise_D und der Injektions-strom I_inj sind die Größen, die für die Simulation variiert werden können. In Abb. 2 betragen die Startwerte noise_D = 0.1 und I_inj = 1.0. Das oberste Teilbild zeigt das zugehörige Mem-branpotential mit den unterschwelligen Oszillation-en. Der Injektionsstrom ist so gering, dass auch der überlagerte Rauschanteil keine Spike-Generierung zur Folge hat. Im nächsten Teilbild wird I_inj auf 1.2 erhöht, so dass sich die Oszillationen in der Nähe des Schwellwerts bewegen. Im vorletzten Teilbild beträgt I_Inj = 1.4, d.h. die Amplituden der Oszillationen sind größer und die Wahrscheinlichkeit einer Spike-Generierung steigt drastisch an. Das letzte Teilbild zeigt schließlich den Ausgangs-Injek-tionsstrom mit deutlich höherem Rauschanteil, so dass auch hier Aktionspotentiale auftreten.
Abb. 2: Membranpotential in Abhängigkeit von noise_D und I_inj
3
B Analyse der Modellgleichungen In Tab. 1 sind alle notwendigen Operationen zur Berechnung des Membranpotentials eines Neurons in einem Iterationsschritt (Neuronenzyklus) zusam-mengefasst, um den späteren Berechnungsaufwand abschätzen zu können. Die jeweiligen Operationen werden durch den Buchstaben A für das erste Neuron gekennzeichnet, Buchstabe B würde das zweite Neuron kennzeichnen usw. Als Vorgriff auf den Einsatz des CORDIC-Algorithmus sei erwähnt, dass die Umsetzung der mathematischen Funktionen sowie der Divisionen in A13, A22, A35 und A48 über diesen Algorithmus erfolgt. Weiterhin sollten die folgenden Terme zur Reduktion der Rechenzeit in ROMs abgelegt werden:
• -4dּ∆t (abgelegt für d = {0.0,0.1,0.2,…,0.5}) • ∆t/τr , ∆t/τsd und ∆t/τsr • ∆t/CM • 2π
Insgesamt sind pro Neuron ohne synaptischen Prozess in einem Neuronenzyklus 64 Arithmetik-operationen auszuführen, in einer Sekunde entsprechend 640000. Im Einzelnen sind 11 CORDIC-Operationen, 26 kombinierte Additionen / Subtraktionen und 27 Multiplikationen erforderlich.
Abk. Operation Abk. Operation A01 log(a) A33 exp(A32) A02 2π*b A34 A33+1 A03 cos(A02) A35 1/A34 A04 A01*(-4dּ∆t) A36 A35-asd_old A05 sqrt(A04) A37 A36*ϕ A06 A05*A03 A38 A37*(∆t/τsd) A07 V-Vl A39 A38+asd_old A08 gl*A07 → Il A40 V-Vsd A09 V-V0d A41 A40*asd_old A10 A09*(-sd) A42 ρ*gsd A11 exp(A10) A43 A41*A42 → Isd A12 A11+1 A44 V-V0sr A13 1/A12 A45 A44*(-ssr) A14 V-Vd A46 exp(A45) A15 A14*A13 A47 A46+1 A16 ρ*gd A48 1/A47 A17 A16*A15 → Id A49 A48-asr_old A18 V-V0r A50 A49*ϕ A19 A18*(-sr) A51 A50*(∆t/τsr) A20 exp(A19) A52 A51+asr_old A21 A20+1 A53 V-Vsr A22 1/A21 A54 A53*asr_old A23 A22-ar_old A55 ρ*gsr A24 A23*ϕ A56 A54*A55 → Isr A25 A24*(∆t/τr) A57 A30+A08 → Ir+Il A26 A25+ar_old A58 A43+A56 → Isd+Isr A27 V-Vr A59 A57+A58 A28 A27*ar_old A60 A59+A17 A29 ρ*gr A61 A60-Iinj A30 A28*A29 → Ir A62 A61*(∆t/CM) A31 V-V0sd A63 V-A62 A32 A31*(-ssd) A64 A63+A06
Tab. 1: Operationen während eines Neuronenzyklus
Der Rechenaufwand ist also nicht ganz unerheblich und bringt handelsübliche PCs mit Blick auf die Echtzeitanforderung recht schnell an die Grenzen
ihrer Leistungsfähigkeit. Eine Möglichkeit, das Echtzeit-Kriterium zu erfüllen, stellt der Einsatz eines Großrechners dar. Die andere besteht in der Entwicklung einer dedizierten Hardware mit einer möglichst effektiven Implementierung der Modell-gleichungen.
III. Generierung der Pseudo-Zufallszahlen Die beiden zur Ermittlung des Rauschanteils notwendigen gleichverteilten Zufallszahlen im Intervall [0,1] sollen in einer digitalen Architektur über ein rückgekoppeltes Schieberegister (LFSR = Linear Feedback Shift Register) bestimmt werden, da sich hier der Hardwareaufbau sehr einfach gestaltet. Abb. 3 zeigt beispielhaft ein 16-Bit-LFSR.
Abb. 3: 16-Bit-LFSR [3]
In jedem Takt wird das frei werdende Bit am Eingang des Schieberegisters mit dem Ergebnis der EXOR-Verknüpfung der Abzweig-Positionen 11, 13, 14 und 16 gefüllt (Zählung beginnt links mit 1). Bei geeigneter Wahl dieser Abzweigungen wiederholt sich die ursprüngliche Bitkombination erst nach einer max. Periodenlänge von 2n-1, wobei n die Anzahl der Bits des LFSRs ist. Zur Initialisierung kann das Schieberegister mit beliebigen Werten gefüllt werden, nicht jedoch nur mit Nullen.
Der Zustand des Schieberegisters ist nicht als Pseudo-Zufallszahl zu betrachten, sondern lediglich das Eingangsbit [3]. Kennt man das zum aktuellen Zeitpunkt in den Flipflops gespeicherte Bitmuster, so wird dieses Muster im nächsten Takt lediglich um eine Position weiter geschoben. Die Hardware generiert zur Berechnung einer gleichverteilten Zufallszahl 16 Zufallsbits, was bzgl. der Genauigkeit ausreichend ist. Da die Zahl im Intervall [0,1] liegen soll, entspricht das zuletzt ermittelte, höchstwertige Bit dem Stellenwert 2-1 und das zuerst ermittelte, niederwertigste Bit dem Stellenwert 2-16.
Als Länge des LFSRs werden n=32 Bit angesetzt. Um max. Periodizität zu erhalten, können die Abzweig-Positionen der Rückkopplung aus [4] entnommen werden, wobei die dort gewählte EXNOR-Verknüpfung durch EXOR zu ersetzen ist (alle generierten Bits werden invertiert). Das LFSR kann somit nicht den Nullzustand durchlaufen, wohl aber die 16 Zufallsbits. Tritt dieser Zustand ein, dann wird die Wertigkeit der Zufallszahl auf 2-17 gesetzt. Auf diese Weise kann der Fall = −∞ln(0) in Gl. (8) nicht auftreten.
4
Die Rückkopplung eines LFSRs kann allgemein durch ein Polynom P beschrieben werden, wobei die dort auftretende ’1’ die Rückkopplung auf das 1. Bit kennzeichnet (x0) und nicht als Abzweigung gerechnet wird [3]. Mit [4] ergibt sich für n=32:
32 22 2 1 1= + + + +P x x x x (10)
Um Matlab-, C- und VHDL-Ergebnisse miteinander vergleichen zu können, werden die Zufallszahlen generell nach diesem Verfahren bestimmt.
A VHDL-Implementierung Als Vorgriff sei erwähnt, dass in 200 Taktzyklen die blockorientierte Berechnung von 10 Neuronen erfolgt, d.h. es sind 20 Zufallszahlen in diesem zeitlichen Rahmen zu bestimmen. Für jede Zufallszahl werden 16 Bits über ein nach Gl. (10) rückgekoppeltes, 32-Bit-Schieberegister generiert.
016 Bit0 0 0 0 0 0 0016 Bit0 0 0 0 0 0 0
Abb. 4: Zufallszahl als denormalisierte Mantisse
Diese 16 Bits werden linksseitig um eine 0 (hidden bit) und rechtsseitig um 7 Nullen ergänzt, so dass eine um das Hidden-Bit erweiterte, denormalisierte 24-Bit-Mantisse entsteht. Alle zum Einsatz kommen-den Arithmetikeinheiten arbeiten intern mit einem 32-Bit-Gleitkommaformat, d.h. das Format nach Abb. 4 muss vor der Weiterverarbeitung noch in eine normalisierte 32-Bit-Gleitkommazahl umgewan-delt werden. Die Anzahl der führenden Nullen wird über einen 16-Bit Barrel-Shifter ermittelt. Beinhaltet die 24-Bit-Mantisse nur Nullen, dann wird der zugehörige Exponent der Gleitkommazahl auf 0x6E für 2-17 gesetzt. Die Generierung einer Zufallszahl nimmt 20 Taktzyklen in Anspruch, so dass insgesamt drei parallel arbeitende LFSRs vorgesehen sind.
Abb. 5 zeigt den prinzipiellen Aufbau des PRN-Moduls (PRN = Pseudo Random Number) mit den drei 32-Bit-Registern QLFSR_X und den drei 16-Bit-Registern QPseudo_X. Der Inhalt von QPseudo_X wird in Man_X auf 24 Bit erweitert und über einen Multiplexer an den Barrelshifter zur Normalisierung angelegt. Die ermittelten Ergebnisse werden schließlich in einem FIFO abgelegt.
QLFSR_0
feedback
QPseudo_0
QLFSR_1
feedback
QPseudo_1
QLFSR_2
feedback
QPseudo_2
MU
X
16-B
it B
arre
l Shi
fter
32-B
it F
P-N
umbe
r
FIFO_7
Man_0
Man_1
Man_2
031
0
0
0
0
0
31
31
15
15
15
appropriate taps are 1, 2, 22 and 32
QLFSR_0
feedback
QPseudo_0
QLFSR_1
feedback
QPseudo_1
QLFSR_2
feedback
QPseudo_2
MU
X
16-B
it B
arre
l Shi
fter
32-B
it F
P-N
umbe
r
FIFO_7
Man_0
Man_1
Man_2
031
0
0
0
0
0
31
31
15
15
15
appropriate taps are 1, 2, 22 and 32
Abb. 5: Prinzipieller Aufbau des PRN-Moduls (ohne Steuerwerk)
Der FIFO ist zu Beginn mit 20 Zufallszahlen initialisiert, die in den ersten 200 Taktzyklen (1. Block) benötigt werden. In dieser Zeit generiert das PRN-Modul die 20 Zufallszahlen für den nächsten Block usw.
Zu diesem Zweck ist für das PRN-Modul ein eigener Befehlsspeicher vorgesehen, wobei pro Befehl nur eines der drei QLFSRs gestartet werden kann. Jeder dieser Zweige verfügt über einen Zähler für die 16 zu generierenden Bits. Ist ein QLFSR gestartet, dann ist jeder weitere Befehl, der dieses Register betrifft, unwirksam. Der 4-stellige OP-Code ist in Tab. 2 zusammengefasst.
Code Befehl 00xx NOP 0100 QLFSR_0 0101 QLFSR_1 0110 QLFSR_2
Tab. 2: Befehlssatz des PRN-Moduls
In Appendix B sind die Initialwerte der ersten 20 FIFO-Einträge sowie der Register QLFSR_0 bis QLFSR_2 aufgeführt.
IV. Architektur Zu Beginn muss festgelegt werden, ob als Datenformat ein Fest- oder Gleitkommaformat zum Einsatz kommt.
Aufgrund der in [1] aufgeführten numerischen Probleme einer VHDL-AMS-Simulation des Huber-Braun-Modells fällt die Wahl auf das 32-Bit-Gleitkommaformat, um Bereichsüberschreitungen vorzubeugen. Das 32-Bit-Format (float) stellt einen Kompromiss zwischen einer einfacher zu implemen-tierenden Festkommaarithmetik und dem wesentlich genaueren, aber auch aufwändigeren 64-Bit-Gleit-kommaformat (double) dar.
Die geringere Genauigkeit von float hat natürlich zur Folge, dass sich die numerisch bedingten Fehler in den einzelnen Neuronenzyklen schneller aufad-dieren und zu Abweichungen bzgl. der Matlab-Simulation führen, da diese standardmäßig mit double arbeitet. Somit ist nicht damit zu rechnen, dass der Virtex-4-FPGA und Matlab den gleichen Membranpotentialverlauf liefern. Weiterhin sehen bei einer Änderung der Pseudo-Zufallszahlen-sequenz auch die Matlab-Ergebnisse nach Abb. 2 völlig anders aus. Daher ist es von entscheidender Bedeutung, dass trotz der geringeren Genauigkeit der FPGA-Lösung die grundsätzlichen Eigenschaf-ten des Neuronenmodells nicht verloren gehen.
Das Huber-Braun-Modell weist eine Schrittweite von ∆t = 100µs auf. Um Echtzeitfähigkeit zu garantieren, müssen alle für dieses Modell relevanten Berech-nungen nach Tab. 1 in max. 100µs ausgeführt werden. Wir gehen zunächst von 10MHz Taktrate aus, d.h. bei der angegebenen Schrittweite und einer Periodendauer von 100ns stehen pro Neuronenzyklus 1000 Taktzyklen für die Berech-nung der Modellgleichungen zur Verfügung. Da an
5
dieser Stelle die Netztopologie und die zur Depolari-sation der Membran beitragenden postsynaptischen Potentiale (PSPs) noch nicht in den Entwicklungs-prozess einfließen, sollen von diesen 1000 Taktzyklen zunächst max. 800 für die Berechnung der Modellgleichungen möglichst vieler Neuronen verwendet werden.
A Aufbau eines Neuronenkerns In Anlehnung an die Computertechnik wird eine vollständige Einheit zur Berechnung der Modell-gleichungen als Neuronenkern bezeichnet. Ein digitaler Neuroprozessor setzt sich dann aus mehreren (10…40) solcher Kerne zusammen.
Abb. 6 zeigt den prinzipiellen Aufbau eines Neuronenkerns, bestehend aus 6 Arithmetikeinhei-ten (AE) und dem PRN-Modul zur Erzeugung der gleichverteilten Zufallszahlen:
• 2 Addierer/Subtrahierer (9 Taktzyklen, 2 ROMs 1 Dualport-RAM, 1 FIFO)
• 3 Multiplizierer (8 Taktzyklen, 2 ROMs, 1 FIFO) • 1 CORDIC (42 Taktzyklen, 1 ROM, 1 FIFO) • 1 PRN-Modul (20 Taktzyklen, drei parallele
LFSRs, 1 FIFO)
Jede Arithmetikeinheit verfügt über einen eigenen Befehlsspeicher, einen FIFO zum Ablegen des berechneten Ergebnisses und eigene ROMs bzw. RAMs für den Zugriff auf Konstanten bzw. Variablen gemäß den Modellgleichungen. Hier ist bewusst etwas Redundanz eingebaut, beispielsweise benötigen die AEs keinen zweiten ROM.
Cod
eC
ode
Cod
eC
ode
Cod
e
RA
MR
AM
RO
M
FIFO_1ADD_SUB_MODULE_A
RO
M
ADD_SUB_MODULE_B
RO
M
MULT_MODULE_A
RO
M
MULT_MODULE_B
RO
M
CORDIC_MODULE
RO
MR
OM
RO
MR
OM
FIFO_2
FIFO_3
FIFO_4
FIFO_6
FIFO_8
Cod
e
RO
M
MULT_MODULE_C
RO
M
FIFO_5
PRN_MODULE
Cod
e
FIFO_7
Cod
eC
ode
Cod
eC
ode
Cod
e
RA
MR
AM
RO
M
FIFO_1ADD_SUB_MODULE_A
RO
M
ADD_SUB_MODULE_B
RO
M
MULT_MODULE_A
RO
M
MULT_MODULE_B
RO
M
CORDIC_MODULE
RO
MR
OM
RO
MR
OM
FIFO_2
FIFO_3
FIFO_4
FIFO_6
FIFO_8
Cod
e
RO
M
MULT_MODULE_C
RO
M
FIFO_5
PRN_MODULE
Cod
e
FIFO_7
Abb. 6: Architektur eines Neuronenkerns
Im Befehlscode werden neben der eigentlichen Operation die Adressen der beiden Operanden angegeben. Hierbei kann es sich um die eigenen ROMs, den eigenen Dualport-RAM (falls vorhanden) oder einen der Ergebnisspeicher FIFO_1 bis FIFO_6 handeln (der Zugriff auf FIFO_7 und FIFO_8 erfolgt etwas anders und soll später erläu-tert werden). Wichtig ist, dass grundsätzlich jede AE auf alle Ergebnisspeicher über ein globales Bus-System mit zunächst 6 32 192⋅ = Busleitungen zugreifen kann. Da jede AE ihr Ergebnis auf dem eigenen FIFO ablegt, kann hier die Adressangabe entfallen. Eine Analyse der Datenabhängigkeit der Modellgleichungen zeigt, dass gelegentlich der Zugriff auf 2 FIFO-Einträge desselben Speichers in einem Taktzyklus notwendig ist. Daher verfügen alle auf dem Virtex-4-FPGA synthetisierten Ergebnis-speicher über einen Schreib- und zwei Leseports, mit der Konsequenz, dass sich die Anzahl der globalen Busleitungen verdoppelt auf jetzt insgesamt 384.
Um die mathematischen Funktionen ln, sqrt, exp und cos in einer einheitlichen Architektur realisieren zu können, kommt der CORDIC-Algorithmus zur Anwendung. Eine umfassende Beschreibung der mathematischen Grundlagen dieses Hardware-Algorithmus ist beispielsweise in [6,7] zu finden. In [6] ist auch der vollständige VHDL-Quellcode der bitparallelen iterativen CORDIC-Struktur in einer 32-Bit-Gleitkommaumgebung angegeben und per Simulation verifiziert. Damit ein Neuronenkern einen möglichst hohen Durchsatz erzielen kann, ist eine Fließbandarchitektur für jede AE unumgänglich.
Im Gegensatz zur klassischen Von-Neumann-Architektur ist bei einem Fließband-Konzept kein Steuerwerk vorhanden. Die einzelnen Befehle einer AE benötigen für einen Fließbanddurchlauf genauso viele Taktschritte wie sie ohne Fließbandtechnik, d.h. mikroprogrammiert, benötigen würden. Die Mikroprogrammteile der Befehle erscheinen sozusagen aufgerollt auf dem Fließband, die Zustandsfolgen dieser Teile finden sich praktisch in den Stufenfolgen der einzelnen Fließbandregister wieder [8].
Die bei der Bestimmung der ai∝-Werte auftretenden Divisionen haben alle die gleiche Struktur nach Gl. (5). Die Exponentialfunktion kann nicht negativ werden, somit beträgt der Quotient max. 1. Daher lässt sich nach [6] auch hier der CORDIC-Algorithmus anwenden, was zwei Vorteile hat:
• Für die Implementierung der Modellgleichungen ist kein Dividierer notwendig;
• Bessere Ausnutzung der CORDIC-Pipeline.
Zunächst wird die exp-Funktion berechnet, anschlie-ßend erfolgt nach der Addition von 1 die Division. Das zweimalige Durchlaufen der CORDIC-Pipeline stellt kein Problem dar, weil dies zur Bestimmung des Rauschanteils ohnehin notwendig ist, da in Gl. (8) der Logarithmus unter der Wurzel steht.
6
B Blockweise Berechnung der Neuronen Nach Abb. 6 ist für jede AE ein eigener OP-Code vorgesehen, der jeweils von einem eigenen Programmzähler adressiert wird, vgl. Abb. 7. Diese Architektur hat Vor- und Nachteile.
Vorteile:
• Alle AEs arbeiten parallel, so dass bei entspre-chender Programmierung eine hohe Auslastung der Hardware erreichbar ist.
• Durch Austausch der OP-Codes können Modell-gleichungen geändert bzw. in gewissem Umfang neue Modelle implementiert werden (keine starre Datenflussarchitektur).
Nachteile:
• Aufgrund der parallelen Berechnung der Modell-gleichungen mehrerer Neuronen ist ein einzel-nes Neuron nicht lokalisierbar, daher ist eine Fehlersuche während des Entwicklungspro-zesses schwieriger.
• Für die Berechnung möglichst vieler Neuronen innerhalb eines Neuronenzyklus (zunächst 800 von 1000 Taktschritten vorgesehen) ist die Programmierung durch Maschinenbefehle ent-sprechend unübersichtlich.
Um mit Blick auf den letzten Punkt die Komplexität der Programmierung in Grenzen zu halten, werden die zur Verfügung stehenden 800 Taktzyklen in 4 Blöcke mit jeweils 200 Taktzyklen aufgeteilt. Für jede AE müssen 200 Maschinenbefehle angegeben werden, insgesamt also 6 200 1200⋅ = Befehle. Jeder der 6 Befehlsspeicher wird dann pro Neuronen-zyklus viermal durchlaufen (bei 10MHz), wodurch es notwendig ist, auf Variablen über einen Offset zugreifen zu können. Hierzu werden Index-Adressregister eingeführt, die innerhalb des struk-turellen VHDL-Entwurfs zentral über das Top-Level-Modul beeinflusst werden, siehe Abb. 7.
Im RAM von ADD_SUB_MODULE_A werden die Membranpotentiale V nach Gl. (6) und im RAM von ADD_SUB_MODULE_B die a_i_new-Werte nach Gl. (7) für alle Neuronen eines Kerns gespeichert, d.h. in jedem Block müssen die beiden zugehörigen Index-Adressregister angepasst werden. Die Adressierung der RAMs ist generell nur register-indirekt möglich. Pro Neuron sind ein V- und drei a_i_new-Werte abzulegen, so dass der RAM in MODULE_A die Organisation 512*32-Bit und in MODULE_B 2048*32-Bit aufweist. Damit ließen sich bzgl. des zur Verfügung stehenden Speichers die Modellgleichungen von max. 512 Neuronen pro Kern berechnen. Die restlichen 512 Speicherzellen des RAMs in MODULE_B blieben ungenutzt.
Weiterhin sind die temperaturabhängigen Faktoren ρ und ϕ (siehe [1,2]) als Konstanten in den ROMs der MULT-Module für den Temperaturbereich 23° bis 27°C in 0,5°-Schritten abgelegt. Im ersten Systementwurf soll jedes Neuron die gleiche
Temperatur aufweisen, die Faktoren ρ und ϕ sind daher innerhalb eines Neuronenzyklus konstant.
INDEX_ADDR_ADD_SUB_A_RAM
Top-Level-Module PCs Neuron Core
INDEX_ADDR_ADD_SUB_A_ROM
INDEX_ADDR_MULT_B_ROM
INDEX_ADDR_MULT_A_ROM
INDEX_ADDR_ADD_SUB_B_RAM
INDEX_ADDR_ADD_SUB_B_ROM
INDEX_ADDR_MULT_C_ROM
INDEX_ADDR_ADD_SUB_A_RAM
Top-Level-Module PCs Neuron Core
INDEX_ADDR_ADD_SUB_A_ROM
INDEX_ADDR_MULT_B_ROM
INDEX_ADDR_MULT_A_ROM
INDEX_ADDR_ADD_SUB_B_RAM
INDEX_ADDR_ADD_SUB_B_ROM
INDEX_ADDR_MULT_C_ROM
Abb. 7: Index-Adressregister
Für die ROMs der ADD/SUB- und MULT-Module ist neben der direkten auch die registerindirekte Adressierung implementiert, wobei hier der Index für beide ROMs jeweils identisch ist. Im CORDIC-Modul hingegen ist nur die direkte Adressierung möglich.
C Befehlsformat und Befehlssatz Das für alle AEs identische 28-Bit-Befehlsformat nach Abb. 8 setzt sich zusammen aus 4 Bit für die Codierung des Maschinenbefehls und jeweils 12 Bit für die beiden Operanden OPA und OPB. Jede Operandenangabe wiederum teilt sich auf in 4 Bit für den Speichertyp und 8 Bit für die Adressbildung (letztere wird intern auf 11 Bit erweitert). Da jedes berechnete Ergebnis auf dem eigenen FIFO abge-legt wird, kann hier die Adressangabe entfallen.
827 07111219202324
Code Memory type Address Memory type Address
Operand A Operand B
827 07111219202324
Code Memory type Address Memory type Address
Operand A Operand B Abb. 8: 28-Bit-Befehlsformat für alle AEs
Bei den Speichern wird zwischen dem eigenen ROM, dem eigenen RAM (falls vorhanden) und den Ergebnis-Speichern FIFO_1 bis FIFO_6 (F1 – F6) unterschieden. Hinzu kommen noch FIFO_8 für den nur über MULT_MODULE_A möglichen Zugriff auf RAM-Inhalte von ADD_SUB_MODULE_B und FIFO_7 für den Zugriff des CORDIC-Moduls bzw. der MULT-Module auf die generierten, gleichverteil-ten Zufallszahlen. Die 4-Bit-Speichertypcodierung ist in Tab. 3 zusammengefasst.
Codierung Sp-typ Adress. Modul 0000 ROM direkt alle AEs 0001 FIFO_1 - alle AEs 0010 FIFO_2 - alle AEs 0011 FIFO_3 - alle AEs 0100 FIFO_4 - alle AEs 0101 FIFO_5 - alle AEs 0110 FIFO_6 - alle AEs 0111 FIFO_7 - MULT; CORDIC 1000 FIFO_8 - MULT_A 1110 ROM reg-indirekt MULT; ADD_SUB 1111 RAM reg-indirekt ADD_SUB
Tab. 3: Speichertyp-Codierung
7
Ein Maschinenbefehl wird in mnemonischer Schreibweise wie folgt dargestellt:
<Operation>{_<Operand A>}{,<Operand B>}
Bei der direkten Adressierung eines RAMs wird die Adresse in rechteckige Klammern gesetzt, bei direkter ROM-Adressierung entfällt die Klammer. Handelt es sich um eine registerindirekte ROM-Adressierung, so wird dies durch runde Klammern kenntlich gemacht. Tab. 4 zeigt alle Maschinenbe-fehle einschließlich Codierung, möglicher Operan-den und ihrer Modul-Implementierung.
Befehl Code OPA OPB Modul NOP 0000 - - alle AEs ADD 0001 ROM; RAM;
F1-F6 ROM; RAM;
F1-F6 ADD_SUB
SUB 0010 ROM; RAM; F1-F6
ROM; RAM; F1-F6
ADD_SUB
ADDS 0101 ROM; RAM; F1-F6
ROM;F1-F6 ADD_SUB
SUBS 0110 ROM; RAM; F1-F6
ROM;F1-F6 ADD_SUB
SAV 0011 F1-F6 RAM ADD_SUB SEND 1111 ROM; RAM;
F1-F6 - ADD_SUB_A
MULT 0100 ROM;F1-F7 ROM;F1-F7 MULT COS 0001 ROM;F1-F7 - CORDIC EXP 0011 ROM;F1-F7 - CORDIC LN 0100 ROM;F1-F7 - CORDIC
SQRT 0101 ROM;F1-F7 - CORDIC DIVC 0110 ROM;F1-F7 ROM;F1-F7 CORDIC
Tab. 4: Befehlssatz eines Neuronenkerns
NOP (No Operation) ist ein Wait-Befehl für einen Takt und legt kein Ergebnis auf dem zugehörigen FIFO ab. Der Befehl ist in jeder AE implementiert. Die ADD/SUB-Befehle führen in 8 Taktzyklen eine Gleitkommaaddition bzw. –subtraktion aus (ein-schließlich Laden der Operanden) und legen das Ergebnis im 9. Takt auf dem zugehörigen FIFO F1 oder F2 ab.
Auch ADDS/SUBS führen in 8 Taktzyklen eine Gleit-kommaaddition bzw. –subtraktion aus. Im 9. Takt wird das Ergebnis jedoch nicht auf dem FIFO abgelegt, sondern im zugehörigen RAM gespei-chert. Hierbei muss man beachten, dass die Adresse von OPB auch gleichzeitig die Ergebnis-adresse des RAMs darstellt (registerindirekt adressiert), auch wenn als Speichertyp beispiels-weise ein FIFO ausgewählt ist. Durch diese Ein-schränkung kann im Befehlsformat auf die explizite Angabe einer Ergebnisadresse verzichtet werden.
Der SAV-Befehl legt ein FIFO-Ergebnis F1 bis F6 auf dem zugehörigen RAM ab, der SEND-Befehl in ADD_SUB_A ist zur Übertragung der berechneten Membranpotentiale an einen Host-Rechner vorge-sehen. Als Schnittstelle kommt hier zunächst RS232 zum Einsatz, da diese sehr leicht in VHDL programmierbar ist. Um das Echtzeitkriterium auch bzgl. der Datenübertragung sicherzustellen, soll im nächsten Schritt USB 2.0 (mit Ausblick auf USB 3.0) implementiert werden. Die übrigen Befehle sind selbsterklärend, wobei der Quotient der CORDIC-
Division (DIVC) nach [6] max. 2 betragen darf, da dies der Grenzwert der aufakkumulierten Teilwinkel in der Betriebsart Vectoring im linearen Modus darstellt. Ist der Quotient größer, sind die berech-neten Ergebnisse fehlerhaft! Dieser Fall kann allerdings nach Gl. (5) für das Huber-Braun-Modell nicht auftreten.
D FIFO-Konzept Jede AE legt ihr berechnetes Ergebnis auf einem Pufferspeicher der Organisation 64*32-Bit ab. Hierbei handelt es sich um Speicher mit sequen-tiellem Zugriffsalgorithmus „first in first out“, kurz FIFO. Aufgrund der Datenabhängigkeit bei einigen Operationen ist der gleichzeitige Lesezugriff auf 2 FIFO-Einträge erforderlich. Beispielsweise werden die Operationen A43 und A56 hintereinander auf dem gleichen MULT-Modul berechnet (vgl. Appendix C), was wiederum zwei gleichzeitige Lesezugriffe der Operation A58 zur Ermittlung von Isd + Isr nach Tab. 1 bedingt. Ein FIFO setzt sich daher aus einem Schreib- und zwei Leseports zusammen.
Weiterhin verfügt jeder FIFO über einen Schreib- und Lesepointer zur Adressierung und ist als Umlaufspeicher ausgeführt. Somit werden beim Überlauf des Schreibpointers wieder die Spei-cherzellen mit den Anfangsadressen beschrieben, d.h. die Ergebnisse an diesen Positionen müssen zuvor gelesen (weiterverarbeitet) worden sein.
Im VHDL-Entwurf kommen pro Ergebnisspeicher 2 Dualport-RAMs mit jeweils einem Schreib- und Leseport zum Einsatz. Nachfolgend ist der Quell-code eines 64*32-Bit-Dualport-RAMs sowie stell-vertretend für alle AEs die zugehörige Kompo-nenten-Instanziierung für das ADD_SUB_A-Modul angegeben. Die Synchronität der Leseoperation ergibt sich aus der Abspeicherung der Leseadresse für den Port B im internen Adressregister QADDRB[5:0] mit der steigenden Flanke des CLK-Signals in der Prozessanweisung portB [9]. entity DPR_FIFO is port (CLK,WEA: in std_logic; ADDRA,ADDRB: in std_logic_vector(5 downto 0); DIA: in std_logic_vector(31 downto 0); DOB: out std_logic_vector(31 downto 0) ); end DPR_FIFO; architecture Behavioral of DPR_FIFO is type MMX64_32 is array(63 downto 0) of std_logic_ve ctor(31 downto 0); signal QRAM64_32: MMX64_32 := (others => (others => '0')); signal QADDRB: std_logic_vector(5 downto 0); --inte rnal Address- --Regi ster begin portA: process(CLK) begin if rising_edge(CLK) then if WEA = '1' then QRAM64_32(conv_integer(ADDRA)) <= DIA; end if; end if; end process; portB: process(CLK) begin if rising_edge(CLK) then QADDRB <= ADDRB; end if; end process; DOB <= QRAM64_32(conv_integer(QADDRB)); end Behavioral;
8
-- ADD_SUB_MODULE_A -- Component-Instantiation FIFO_1A: DPR_FIFO port map (CLK=>CLK,WEA=>ADD_SUB_A_BUSY(0), ADDRA=>FIFO_1_W_POINTER,ADDRB=>FIFO_1_R_P OINTER, DIA=>L8_QS,DOB=>QBUS_FIFO_1A ); FIFO_1B: DPR_FIFO port map (CLK=>CLK,WEA=>ADD_SUB_A_BUSY(0), ADDRA=>FIFO_1_W_POINTER,ADDRB=>FIFO_1_R_P OINTER_plus1, DIA=>L8_QS,DOB=>QBUS_FIFO_1B );
Die Schreibpointer sind jeweils identisch, d.h. beide RAMs weisen den gleichen Dateninhalt auf. Der Wert des Lesepointers von FIFO_1B ist stets um 1 höher als der von FIFO_1A. Auf diese Weise ist der gleichzeitige Lesezugriff auf zwei Speicherzellen möglich (nur für FIFO_1 bis FIFO_6 implementiert). In einem solchen Fall müssen natürlich beide Lesepointer um 2 inkrementiert werden.
Für den Schreib- und Lesezugriff ist jeweils eine eigene Prozessanweisung vorgesehen. Der Vektor ADD_SUB_A_BUSY[7:0] speichert die aktuelle Auslastung der Pipeline. Hierbei handelt es sich um ein Schieberegister, dessen höchstwertiges Bit beim Start einer Arithmetikoperation auf 1 gesetzt und dann in jedem Takt um eine Stelle nach rechts geshiftet wird. Ist das niederwertigste Bit eine 1, dann ist die Berechnung abgeschlossen und das Ergebnis wird im nächsten Takt auf dem FIFO abgelegt. ADD_SUB_A_BUSY(0) dient hierbei als Write-Enable-Signal, siehe Komponenten-Instanzi-ierung. Zusätzlich wird der Schreibpointer um 1 inkrementiert.
Der Lesezugriff einer beliebigen AE auf einen FIFO wird über den Vektor GLOBAL_FIFO_READ[7:0] gesteuert. Bit 0 entspricht FIFO_1 und Bit 5 entsprechend FIFO_6. Bei einem zweifachen Lese-zugriff ist zusätzlich das korrespondierende Bit im Vektor GLOBAL_FIFO_READ_DOUBLE[5:0] ge-setzt. -- ADD_SUB_MODULE_A FIFO_1_WR: process(CLK) begin if rising_edge(CLK) then if (ADD_SUB_A_BUSY(0) = '1') then FIFO_1_W_POINTER <= FIFO_1_W_POINTER + 1; end if; end if; end process; FIFO_1_RD: process(CLK) begin if rising_edge(CLK) then if ((GLOBAL_FIFO_READ(0) = '1') and GLOBAL_FIFO_READ_DOUBLE(0 ) = '0') then FIFO_1_R_POINTER <= FIFO_1_R_POINTER + 1; FIFO_1_R_POINTER_plus1 <= FIFO_1_R_POINTER_ plus1 + 1; elsif ((GLOBAL_FIFO_READ(0) = '1') and GLOBAL_FIFO_READ_DOUBLE(0 ) = '1') then FIFO_1_R_POINTER <= FIFO_1_R_POINTER + 2; FIFO_1_R_POINTER_plus1 <= FIFO_1_R_POINTER_ plus1 + 2; end if; end if; end process;
Die o. g. globalen Vektoren werden im Top-Level-Modul durch die lokalen FIFO-Read-Signale aller AEs bestimmt. Für GLOBAL_FIFO_READ(0) gilt beispielsweise: GLOBAL_FIFO_READ(0) <= ADD_SUB_A_FIFO_READ(0) or ADD_SUB_B_FIFO_READ(0) or MULT_A_FIFO_READ(0) or MULT_B_FIFO_READ(0) or MULT_C_FIFO_READ(0) or CORDIC_FIFO_READ(0);
Die lokalen FIFO-Read-Signale wiederum werden aus den beiden Speichertyp-Angaben im Befehl gebildet. Steht z.B. in einem Befehl des Moduls ADD_SUB_A als OPA- oder OPB-Speichertyp “0011“, dann werden ADD_SUB_A_FIFO_READ(2) und damit auch GLOBAL_FIFO_READ(2) auf 1 gesetzt. Sind hingegen beide OP-Speichertypen “0011“, dann wird zusätzlich noch das Bit ADD_SUB_A_FIFO_READ_DOUBLE(2) und somit auch GLOBAL_FIFO_READ_DOUBLE(2) für zwei-fachen Lesezugriff gesetzt. Greifen pro Taktzyklus mehrere AEs auf den gleichen FIFO zu, dann wird jeder Einheit der gleiche Speicherinhalt als Operand zur Verfügung gestellt.
Für FIFO_7 und FIFO_8 ist kein zweifacher Lese-zugriff implementiert, weil die Abbildung der Modell-gleichungen auf die hier vorgestellte Architektur dies nicht erfordert. Zur weiteren Reduzierung des Hardwareaufwands können die in FIFO_7 abgeleg-ten Pseudo-Zufallszahlen des PRN-Moduls nur von den drei Multiplizierern und dem CORDIC geladen werden.
Nach Tab. 1 erfordern die MULT-Operationen A28, A41 und A54 als Operand einen der drei ai_old-Werte der vorherigen Iteration (ar_old, asd_old, asr_old). Diese wiederum sind im RAM des ADD_SUB_B-Moduls abgelegt. Da die Multiplizierer auf diesen Dualport-RAM keinen Zugriff haben, ist als zusätzlicher Puffer zur Aufnahme der ai_old-Werte bei jeder Speicher-operation FIFO_8 vorgesehen. Gemäß Abb. 6 hat nur das MULT_A-Modul Zugriff auf diesen FIFO, d.h. die MULT-Operationen A28, A41 und A54 lassen sich nur von diesem Modul ausführen.
V. Aufbau der AEs Wie bereits erwähnt, weist jede AE zur Erhöhung des Durchsatzes eine Pipeline-Struktur auf. Neben der eigentlichen Arithmetikoperation müssen zusätz-lich noch 1 bis 2 Operanden geladen und das Ergebnis auf dem FIFO abgelegt werden. Die Auslastung jeder Pipeline wird pro Takt in einem als Schieberegister ausgeführten BUSY-Signal ge-speichert. Hierüber wird am Ende einer Arithmetik-operation die Übernahme des Ergebnisses auf den FIFO gesteuert, siehe letzten Abschnitt. Die Länge dieses Signalvektors entspricht immer der um 1 reduzierten Anzahl an Pipelinestufen einer AE.
A ADD_SUB-Modul Ein ADD_SUB-Modul ist ein kombinierter Addierer/Subtrahierer für das 32-Bit-Gleitkomma-format, ausgeführt als 9-stufige Pipeline:
1. Zyklus: Befehl holen 2./3. Zyklus: OPA und OPB laden 4.-8. Zyklus: Befehl ausführen 9. Zyklus: Ergebnis auf FIFO ablegen
Die um das Hidden-Bit erweiterte Mantisse jedes Operanden wird noch um drei Zusatzbits (Guard-Bit g, Round-Bit r und Sticky-Bit s) zur Rundung auf
9
jetzt insgesamt 27 Bits ergänzt. Hierbei entsprechen g und r den beiden Stellen hinter der Stelle, auf die gerundet werden soll und das Sticky-Bit stellt eine ODER-Verknüpfung aller Stellen hinter dem Round-Bit dar [11]. Zur Anpassung des kleineren Exponenten an den größeren wird ein Barrelshifter eingesetzt. Dieser schiebt die Mantisse, die zum kleineren Exponenten gehört, um so viele Stellen nach rechts wie die Differenz der Exponenten beträgt [10]. Das Sticky-Bit als niederwertigste Stelle wird durch die ODER-Verknüpfung gesondert bestimmt.
Die Vorzeichenbits der beiden Operanden werden separat gespeichert. Liegt ein SUB- bzw. SUBS-Befehl vor, dann wird das Vorzeichen von OPB invertiert. Sollte ein Operand negativ sein, erfolgt vor der eigentlichen Mantissen-Addition noch dessen Komplementbildung. Ein möglicher Übertrag bei der Addition wird in einem weiteren Bit aufgefangen. Abb. 9 zeigt die expandierte 28-Bit Mantissen-Darstellung.
23-Bit-Mantissa
2 027 25 13
g r s
26
p0 r‘ s‘
23-Bit-Mantissa
2 027 25 13
g r s
26
p0 r‘ s‘ Abb. 9: Expandierte Mantissen-Darstellung
Nach der Mantissen-Addition werden wieder beide Vorzeichenbits analysiert. Sind sie identisch (positiv oder negativ), dann wird bei einem evtl. aufgetre-tenen Mantissenübertrag eine Korrektur durchge-führt. Eine solche Korrektur beinhaltet nach [10] eine zusätzliche Rechtsverschiebung der Ergebnis-Mantisse um eine Bitstelle und die Erhöhung des Ergebnis-Exponenten um den Wert 1. Sind die Vorzeichenbits ungleich und tritt kein Mantissen-übertrag auf, dann ist das Ergebnis nach [10] negativ, und es muss eine Komplementbildung erfolgen. Tritt hingegen ein Übertrag bei ungleichen Vorzeichen auf, ist das Ergebnis positiv (der Übertrag bleibt in diesem Fall für die weitere Berechnung unberücksichtigt).
Durch die vorzeichenbehaftete Addition kann die Ergebnis-Mantisse führende Nullen aufweisen. Damit das Hidden-Bit in Abb. 9 wieder an Position 26 steht, ist ein Linksshift um NLZ Stellen notwendig (NLZ = Number of Leading Zeros). Im Rundungs-modus “Round to Even“ wird genau dann eine 1 hinzuaddiert, wenn folgende Bedingung erfüllt ist:
0 01 ' ( ' ) ' ' '= ⋅ + = ⋅ + ⋅r s p r s r p (11)
Nach Abb. 9 ist p0 die letzte Stelle, die stehen bleibt. Die Bitstellen p0, r’ und s’ werden nach Tab. 5 in Abhängigkeit von NLZ über das Guard-, Round- und Sticky-Bit generiert. Innerhalb des strukturellen VHDL-Entwurfs sind diese Operationen im Modul LINKSSHIFT_ADD_SUB implementiert.
NLZ 0 1 2 3 Linksshift r’=g
s’=(r+s) p0=g r’=r s’=s
p0=r r’=s s’=0
p0=s r’=0 s’=0
Tab. 5: Operationen in Abhängigkeit von NLZ
B MULT-Modul Ein MULT-Modul führt eine 32-Bit-Gleitkomma-multiplikation in einer 8-stufigen Pipeline aus:
1. Zyklus: Befehl holen 2./3. Zyklus: OPA und OPB laden 4.-7. Zyklus: Befehl ausführen
8. Zyklus: Ergebnis auf FIFO ablegen
Der in [10] angegebene serielle Gleitkommamultipli-zierer ist mit 24 Verarbeitungstakten zu langsam und scheidet daher für eine Hardware-Umsetzung aus. Allerdings verfügt der zum Einsatz kommende XC4VLX60-FPGA der Virtex-4-Serie nach [12] über 64 18×18 Multiplizierer auf dem Chip. Deren Kaska-dierung zu 24×24-Bit Multiplizierer führt jedoch zu höheren Verzögerungszeiten und damit niedrigerer maximaler Taktrate.
Mit Blick auf die Pipeline-Stufen ist es günstiger, die 24×24-Bit Multiplikation der beiden um das Hidden-Bit erweiterten 24-Bit-Mantissen in Teilmultiplika-tionen zu gliedern. Abb. 10 zeigt die Aufteilung in vier Teilmultiplikationen zu je 12×12 Bit.
Aus diesen 24-Bit-Teilprodukten bildet man nun zwei 36-Bit-Teilsummen SUM_L und SUM_H, wobei die von 24 auf 36 Bit zu ergänzenden Stellen der Teilprodukte links- bzw. rechtsseitig mit Nullen aufgefüllt werden. Schließlich wird aus den beiden 36-Bit-Teilsummen durch stellenverschobene Addition das 48-stellige Produkt AB×CD gebildet.
A ×B C D
ManA ManB
×B D = B×D
×A D = A×D
×B C = B×C
×A C = A×C
0 0
0
0
0
0
0
0
0
0
0
0
11
11
11
11
11
11
11
11
23
23
23
23
0……………00
0……………0
2335
B×DA×D
∑ SUM_L
0……………00
0……………0
2335
B×CA×C
∑ SUM_H
0……………03547
SUM_LSUM_H 0……………0
∑ SUM = AB×CD
11
11
11
23 0 023
A ×B C D
ManA ManB
×B D = B×D
×A D = A×D
×B C = B×C
×A C = A×C
0 0
0
0
0
0
0
0
0
0
0
0
11
11
11
11
11
11
11
11
23
23
23
23
0……………00
0……………0
2335
B×DA×D
∑ SUM_L
0……………00
0……………0
2335
B×CA×C
∑ SUM_H
0……………03547
SUM_LSUM_H 0……………0
∑ SUM = AB×CD
11
11
11
23 0 023
Abb. 10: Umsetzung der Multiplikation durch Teil-produktbildung mit anschließender Addition
Das Hidden-Bit der in SUM[47:0] stehenden 48-Bit-Produktmantisse ist auf Position 46 zu finden. Nach [10] liegt dieses Produkt mit der Stellenzahl r = 23 in den Grenzen 1 4≤ <mp , d.h. das Produkt ist nicht
10
notwendigerweise normalisiert. Für SUM(47) = 0 liegt eine normalisierte Mantisse vor. Da zur wei-teren Verarbeitung das Hidden-Bit an der höchst-wertigen Position stehen soll, erfolgt ein Linksshift um eine Stelle. Ist hingegen SUM(47) = 1, dann liegt eine denormalisierte Mantisse vor und der Ergebnis-Exponent wird um 1 inkrementiert. In diesem Fall steht das Hidden-Bit bereits an der höchstwertigen Position, so dass keine Shiftoperation notwendig ist.
SUM[47:24]
SUM[23:0]
24
0
47
23
'r
's
0p1 SUM[47:24]
SUM[23:0]
24
0
47
23
'r
's
0p1
Abb. 11: Normalisierte 48-Bit-Produktmantisse
Abb. 11 zeigt die Verhältnisse für eine in SUM[47:0] stehende, normalisierte Mantisse. Die Rundung des Ergebnisses kann nun wieder mittels Gl. (11) erfol-gen. Hierbei stellt s’ die ODER-Verknüpfung von SUM[22:0] dar.
C CORDIC-Modul Im CORDIC-Modul sind ausschließlich die gemäß den Modellgleichungen erforderlichen mathemati-schen Funktionen ln, sqrt, exp und cos sowie die Division im linearen Modus (Betriebsart Vectoring) implementiert. Das in [6,7] angegebene Blockdia-gramm der Hardware-Umsetzung mit der Aufteilung in eine Vorstufe, den eigentlichen CORDIC-Iterationen und eine die Skalierung einschließenden Endstufe wird grundsätzlich beibehalten, allerdings jetzt in einer bitparallelen CORDIC-Struktur mit 28 Iterationen, siehe Abb. 12. Die in [6] verwendeten Barrelshifter für die Schiebeoperationen im X- und Y-Zweig können nun durch eine fest verdrahtete Logik ersetzt werden. In jeder Iterationsstufe ist neben dem zirkularen auch der hyperbolische Modus mit einer geänderten Shiftfolge zu berück-sichtigen.
Instructions / Data
Preliminary Stage
X_INT[31:0] Y_INT[31:0] Z_INT[31:0]
CORDIC-Pipelinewith 28 Stages
QX_INT[31:0] QY_INT[31:0] QZ_INT[31:0]
Final Stage including scale operations
ES_L7_CORDIC[31:0]
± ±
hard-wired shift
Register Register
ControlUnit
,i im σRegister
X_INTi Y_INTi Instructioni ; mi ; σi
±
Register
αm,i Z_INTi
X_INTi+1 Y_INTi+1 Instructioni+1 ; σi+1 Z_INTi+1
floating-point
fixed-point
fixed-point
floating-point
FIFO_6
Instructions / Data
Preliminary Stage
X_INT[31:0] Y_INT[31:0] Z_INT[31:0]
CORDIC-Pipelinewith 28 Stages
QX_INT[31:0] QY_INT[31:0] QZ_INT[31:0]
Final Stage including scale operations
ES_L7_CORDIC[31:0]
± ±
hard-wired shift
Register Register
ControlUnit
,i im σRegister
X_INTi Y_INTi Instructioni ; mi ; σi
±
Register
αm,i Z_INTi
X_INTi+1 Y_INTi+1 Instructioni+1 ; σi+1 Z_INTi+1
floating-point
fixed-point
fixed-point
floating-point
FIFO_6 Abb. 12: Blockdiagramm der CORDIC-Pipeline
Die Vorstufe beinhaltet neben der Umwandlung des externen 32-Bit-Gleitkommaformats in das interne 32-Bit-Festkommaformat nach Abb. 13 auch das Laden der Befehle/Operanden aus den Speichern. Hierfür werden 6 Taktzyklen benötigt. Die Endstufe für die Skalierung des Ergebnisses sowie die
Umwandlung des internen Festkomma- in das externe Gleitkommaformat erfordert weitere 7 Taktzyklen, so dass mit Speicherung des Ergeb-nisses auf dem FIFO insgesamt 42 Pipeline-Stufen notwendig sind.
S OV H 23-Bit-Mantissa Addition-Bits
31 30 28 27 05 4
S OV H 23-Bit-Mantissa Addition-Bits
31 30 28 27 05 4
Abb. 13: Internes 32-Bit-Festkommaformat [5,6]
Zur Skalierung der x- und y-Werte innerhalb der Endstufe kommen ebenfalls die Konstantenmulti-plizierer aus [6] zum Einsatz. Bedingt durch die Pipeline-Struktur sind insgesamt 5 K1_ROM-Speicher mit je zwei Leseports zur Skalierung im zirkularen Modus und 5 K2_ROM-Speicher mit je einem Leseport zur Skalierung im hyperbolischen Modus erforderlich.
VI. Programmierung Die Gleichungen des Huber-Braun-Neuronenmo-dells aus Abschnitt II müssen nun mit der Architektur des Neuronenkerns nach Abb. 6 berech-net werden. Nach Abschnitt IV B stehen im ersten Systementwurf 200 Taktzyklen für jede AE zur Verfügung, in denen die Modellgleichungen möglichst vieler Neuronen zu implementieren sind. Es zeigt sich, dass pro Block bis zu 10 Neuronen parallel berechnet werden können, d.h. 64 10 640⋅ = Gleitkommaoperationen in diesem Zeitraum. Die einzelnen Operationen lassen sich durch die Groß-buchstaben A bis J für das jeweilige Neuron sowie der jeweiligen Operationsnummer (01 bis 64) nach Tab. 1 unterscheiden.
Nach [13] werden zur Darstellung der zeitlichen Abläufe in einer Pipeline sog. Time-Space-Diagram-me benutzt. Hier sind auf der Ordinaten- bzw. Space-Achse die einzelnen Pipeline-Stufen und auf der Abszissen- bzw. Time-Achse die einzelnen Operationsaufträge eingetragen. Um den Darstel-lungsaufwand in Grenzen zu halten, sollen hier für die einzelnen AEs nur “reduzierte“ Time-Space-Diagramme angegeben werden, bei denen auf die explizite Angabe der Space-Achse verzichtet wird. Stattdessen erfolgt nach m Verarbeitungstakten in der Pipeline die Kennzeichnung eines auf dem FIFO abgelegten Ergebnisses durch einen Pfeil mit Angabe des zugehörigen Operationsauftrags. Abb. 14 zeigt einen Ausschnitt des reduzierten Time-Space-Diagramms für das ADD_SUB_A-, MULT_B- und CORDIC-Modul.
NOP
NOP
000
ADD_SUB_MODUL_A m=9
A09
001
B09
002
C09
003
D09
004
E09
005
F09
006
---
G09
007
---
H09
008
---
I09
009
A09*
J09
010
B09*
A18
011
C09*
A31
012
D09*
A44
013
E09*
B18
014
F09*
B31
015
G09*
B44
016
H09*
C18
017
I09*
C31
018
J09*
C44
019
A18*
000
MULT_MODUL_B m=8
NOP
001
NOP
002
NOP
003
NOP
004
NOP
005
NOP
006
---
NOP
007
---
NOP
008
---
A10
009
---
B10
010
---
C10
011
---
D10
012
---
E10
013
---
F10
014
---
G10
015
---
H10
016
A10*
I10
017
B10*
J10
018
C10*
A19
019
D10*
NOP
000
CORDIC_MODUL m=42
NOP
001
NOP
002
NOP
003
NOP
004
NOP
005
NOP
006
---
NOP
007
---
NOP
008
---
NOP
009
---
NOP
010
---
NOP
011
---
NOP
012
---
NOP
013
---
NOP
014
---
NOP
015
---
A11
016
---
B11
017
---
C11
018
---
D11
019
---
NOP
NOP
000
ADD_SUB_MODUL_A m=9
A09
001
B09
002
C09
003
D09
004
E09
005
F09
006
---
G09
007
---
H09
008
---
I09
009
A09*
J09
010
B09*
A18
011
C09*
A31
012
D09*
A44
013
E09*
B18
014
F09*
B31
015
G09*
B44
016
H09*
C18
017
I09*
C31
018
J09*
C44
019
A18*
000
MULT_MODUL_B m=8
NOP
001
NOP
002
NOP
003
NOP
004
NOP
005
NOP
006
---
NOP
007
---
NOP
008
---
A10
009
---
B10
010
---
C10
011
---
D10
012
---
E10
013
---
F10
014
---
G10
015
---
H10
016
A10*
I10
017
B10*
J10
018
C10*
A19
019
D10*
NOP
000
CORDIC_MODUL m=42
NOP
001
NOP
002
NOP
003
NOP
004
NOP
005
NOP
006
---
NOP
007
---
NOP
008
---
NOP
009
---
NOP
010
---
NOP
011
---
NOP
012
---
NOP
013
---
NOP
014
---
NOP
015
---
A11
016
---
B11
017
---
C11
018
---
D11
019
---
Abb. 14: Reduziertes Time-Space-Diagramm
11
Bei der Programmierung erweist es sich als günstig, mit der Gating-Variablen ad = ad∞ für den unmittelbar aktiven, depolarisierenden Natriumkanal zu starten, d.h. zunächst V-V0d (Operationsauftrag A09) zu be-rechnen. Weiterhin ist es zweckmäßig, Gruppen von Operationsaufträgen zu bilden, die jeweils ein bis drei gleiche Operationen für alle Neuronen beinhalten. Auf diese Weise erhält man innerhalb eines Blocks für alle Neuronen den gleichen Berechnungsfortschritt.
In Abb. 14 wird im ADD_SUB_A-Modul zunächst die Gruppe [A09:J09] berechnet, anschließend die Gruppe [(A18,A31,A44):(J18,J31,J44)] als erste Arithmetikoperation zur Bestimmung der übrigen 3 Gating-Variablen pro Neuron. Das Ergebnis von A09 wird in Takt 009 auf dem zugehörigen FIFO abgelegt (FIFO_1 bzw. F1) und stellt einen Operanden für den Operationsauftrag A10 des MULT_B-Moduls dar, siehe Tab. 1. In Abb. 14 ist diese Datenabhängigkeit durch zwei über einen Pfeil verbundene Kreise kenntlich gemacht (rot für den Beginn und blau für das Ende einer Gruppe). In den grau hinterlegten Teilflächen werden NOPs zur Erzeugung von Wartezyklen ausgeführt. Nachfol-gend ist der Quellcodeausschnitt für die ersten 50 (von 200) Befehle des ADD_SUB_A- und MULT_B-Moduls angegeben. Die Speicherinhalte der ROMs sowie das reduzierte Time-Space-Diagramm für alle 6 AEs stehen in Appendix C bzw. D. // Source-Code ADD_SUB_A_MODULE // Source-Code M ULT_B_MODULE 000: NOP 000: NOP 001: SUB [0x00], 0x08 // A09 001: NOP 002: SUB [0x01], 0x08 // B09 002: NOP 003: SUB [0x02], 0x08 // C09 003: NOP 004: SUB [0x03], 0x08 // D09 004: NOP 005: SUB [0x04], 0x08 // E09 005: NOP 006: SUB [0x05], 0x08 // F09 006: NOP 007: SUB [0x06], 0x08 // G09 007: NOP 008: SUB [0x07], 0x08 // H09 008: NOP 009: SUB [0x08], 0x08 // I09 009: MULT F1, 0x 0A // A10 010: SUB [0x09], 0x08 // J09 010: MULT F1, 0x 0A // B10 011: SUB [0x00], 0x09 // A18 011: MULT F1, 0x 0A // C10 012: SUB [0x00], 0x0A // A31 012: MULT F1, 0x 0A // D10 013: SUB [0x00], 0x0B // A44 013: MULT F1, 0x 0A // E10 014: SUB [0x01], 0x09 // B18 014: MULT F1, 0x 0A // F10 015: SUB [0x01], 0x0A // B31 015: MULT F1, 0x 0A // G10 016: SUB [0x01], 0x0B // B44 016: MULT F1, 0x 0A // H10 017: SUB [0x02], 0x09 // C18 017: MULT F1, 0x 0A // I10 018: SUB [0x02], 0x0A // C31 018: MULT F1, 0x 0A // J10 019: SUB [0x02], 0x0B // C44 019: MULT F1, 0x 09 // A19 020: SUB [0x03], 0x09 // D18 020: MULT F1, 0x 0A // A32 021: SUB [0x03], 0x0A // D31 021: MULT F1, 0x 0B // A45 022: SUB [0x03], 0x0B // D44 022: MULT F1, 0x 09 // B19 023: SUB [0x04], 0x09 // E18 023: MULT F1, 0x 0A // B32 024: SUB [0x04], 0x0A // E31 024: MULT F1, 0x 0B // B45 025: SUB [0x04], 0x0B // E44 025: MULT F1, 0x 09 // C19 026: SUB [0x05], 0x09 // F18 026: MULT F1, 0x 0A // C32 027: SUB [0x05], 0x0A // F31 027: MULT F1, 0x 0B // C45 028: SUB [0x05], 0x0B // F44 028: MULT F1, 0x 09 // D19 029: SUB [0x06], 0x09 // G18 029: MULT F1, 0x 0A // D32 030: SUB [0x06], 0x0A // G31 030: MULT F1, 0x 0B // D45 031: SUB [0x06], 0x0B // G44 031: MULT F1, 0x 09 // E19 032: SUB [0x07], 0x09 // H18 032: MULT F1, 0x 0A // E32 033: SUB [0x07], 0x0A // H31 033: MULT F1, 0x 0B // E45 034: SUB [0x07], 0x0B // H44 034: MULT F1, 0x 09 // F19 035: SUB [0x08], 0x09 // I18 035: MULT F1, 0x 0A // F32 036: SUB [0x08], 0x0A // I31 036: MULT F1, 0x 0B // F45 037: SUB [0x08], 0x0B // I44 037: MULT F1, 0x 09 // G19 038: SUB [0x09], 0x09 // J18 038: MULT F1, 0x 0A // G32 039: SUB [0x09], 0x0A // J31 039: MULT F1, 0x 0B // G45 040: SUB [0x09], 0x0B // J44 040: MULT F1, 0x 09 // H19 041: SUB [0x00], 0x05 // A27 041: MULT F1, 0x 0A // H32 042: SUB [0x00], 0x06 // A40 042: MULT F1, 0x 0B // H45 043: SUB [0x00], 0x07 // A53 043: MULT F1, 0x 09 // I19 044: SUB [0x01], 0x05 // B27 044: MULT F1, 0x 0A // I32 045: SUB [0x01], 0x06 // B40 045: MULT F1, 0x 0B // I45 046: SUB [0x01], 0x07 // B53 046: MULT F1, 0x 09 // J19 047: SUB [0x02], 0x05 // C27 047: MULT F1, 0x 0A // J32 048: SUB [0x02], 0x06 // C40 048: MULT F1, 0x 0B // J45 049: SUB [0x02], 0x07 // C53 049: MULT (0x20) , 0x05 // A29 050: SUB [0x03], 0x05 // D27 050: MULT (0x20) , 0x06 // A42 … …
A Bewertung der Pipeline-Struktur Nach [13] kann man zur Bewertung der Leistung einer Pipeline verschiedene Bewertungsmaße defi-nieren, von denen hier die Effizienz herausgegriffen werden soll.
Bei der Effizienz η handelt es sich um ein Maß für die Auslastung der einzelnen Pipeline-Stufen. Diese ist umso besser, je mehr Teilflächen im Time-Space-Diagramm belegt sind. Da die Pipeline zwangsläufig aufgefüllt und geleert werden muss, sind immer nicht belegte Teilflächen vorhanden. Bezieht man diese auf die insgesamt vorhandenen Teilflächen im Time-Space-Diagramm, erhält man für die Effizienz (m = Anzahl der Pipeline-Stufen; M = Anzahl der aufeinander folgenden Operations-aufträge):
max ( 1) 1
m M M
m m M m Mη ⋅= =
⋅ + − + − (12)
Wenn die Operationsaufträge lückenlos aufeinander folgen, erhält man mit Gl. (12) die max. mögliche Effizienz. Für M >> m strebt ηmax gegen 1, d.h. das Füllen und Leeren der Pipeline fällt nicht mehr ins Gewicht. Gl. (12) kann für die einzelnen AEs nicht unmittelbar angewandt werden, da hier nicht die Anzahl M an Operationsaufträgen der Ausgangs-punkt ist, sondern die Anzahl an Taktzyklen TAnz:
max1
1Anz
m
Tη −= − (13)
Die max. Effizienz ist ein theoretischer Wert, der in der Praxis aufgrund der Datenabhängigkeit der einzelnen Module auf jeden Fall kleiner ist. Mit Gl. (14) erhält man die Effizienz einer AE unter Berück-sichtigung von Wartezyklen zwischen den einzelnen Operationsaufträgen:
Anz
M
Tη = (14)
Tab. 6 fasst die Werte für alle AEs zusammen, wobei für η die Anzahl der Operationsaufträge M aus dem reduzierten Time-Space-Diagramm nach Appendix D ermittelt wird. Man erkennt, dass bis auf das ADD_SUB_A-Modul alle AEs eine gegenüber dem theoretischen Maximalwert deutlich schlechtere Auslastung aufweisen. Die Effizienz der CORDIC-Pipeline ließe sich bei gegebener Architektur evtl. durch Erhöhung der Anzahl an Taktzyklen pro Block steigern, z.B. von 4 Blöcken mit je 200 Zyklen auf 2 Blöcke mit je 400 Zyklen. Damit verbunden wäre jedoch ein doppelt so hoher Programmieraufwand!
MODULE TAnz m M ηmax η ADD_SUB_A 200 9 160 96,0% 80,0% ADD_SUB_B 200 9 100 96,0% 50,0%
MULT_A 200 8 70 96,5% 35,0% MULT_B 200 8 120 96,5% 60,0% MULT_C 200 8 80 96,5% 40,0% CORDIC 200 42 110 79,5% 55,0%
Tab. 6: Effizienz der AEs
12
Generell dürfen die AEs aufgrund der Daten-abhängigkeit nicht isoliert betrachtet werden. Beispielsweise wurde versucht, die Operationen des MULT_A-Moduls auf die beiden übrigen MULT-Module zu verteilen. Damit konnte dann allerdings die Obergrenze von 200 Taktzyklen für die Berechnung von 10 Neuronen nicht mehr eingehalten werden, was sich wiederum negativ auf die Effizienz der verbleibenden 5 AEs auswirkte.
VII. Ergebnisse Abb. 15 zeigt einen Ausschnitt der VHDL-Simulation mit ModelSim für eine Simulationsdauer von 0.1ms, also einem Iterationszyklus des Modells. Das CLK-Signal der Stimuli-Datei weist eine Periodendauer von 10ns auf, was einer FPGA-Clockfrequenz von 100MHz entspricht. Dadurch können die 4 Blöcke eines Neuronenzyklus pro Schrittweite 10 Mal durchlaufen bzw. die Modellgleichungen von insge-samt 4 10 10 400⋅ ⋅ = Neuronen in Echtzeit berechnet werden.
Abb. 15: VHDL-Simulationsausschnitt für ∆t = 0.1ms
Mit der gewählten Skalierung der Zeitachse von Abb. 15 sind diese 10 Durchläufe der 4 Blöcke gut zu erkennen.
Der zur Hardware-Verifikation eingesetzte FPGA XC4VLX60 der Virtex-4-Serie stellt ca. 53000 LUTs zur Verfügung, von denen etwa 16700 LUTs für die Synthese benötigt werden. Das entspricht ca. 31% der Hardware-Ressourcen des Chips. Die max. Taktrate wird vom Synthesetool mit knapp 120MHz angegeben.
Um die Auswirkungen von Rundungsfehlern zu vergleichen, sollen für eine Simulationsdauer von 10s die mittels einer C-Konsolenanwendung berech-neten Membranpotentiale eines Neurons sowohl für den Datentyp double als auch für float in hexadezi-maler Form jeweils in einem Texteditor abgelegt werden. Hierbei ist ein double-Ergebnis vor der Speicherung auf float zu runden, ein float-Ergebnis wird direkt übernommen. Schließlich sind die von der RS232-Schnittstelle eingelesenen FPGA-Werte in einem dritten Editor abzulegen, siehe Abb. 16.
Die abhängig vom gewählten Rauschparameter und dem Injektionsstrom ermittelten Ergebnisse in den Editoren können nun mit Matlab eingelesen und grafisch dargestellt werden. Auf diese Weise kann für die ersten Tests die Entwicklung einer grafischen Benutzeroberfläche entfallen. Abb. 17 zeigt den Verlauf der einzelnen Membranpotentiale für eine Simulationsdauer von 10s (Oben: C-Code (double); Mitte: C-Code (float); Unten: FPGA (float)), wobei noise_D, I_inj und die Pseudo-Zufallszahlen-sequenz jeweils identisch sind zu Abb. 2.
Abb. 16: Ausschnitt der drei Ergebnis-Editoren
Abb. 17a: Membranpotentiale; n_D = 0.1, I_inj = 1.0
13
Abb. 17b: Membranpotentiale; n_D = 0.1, I_inj = 1.2
Abb. 17c: Membranpotentiale; n_D = 0.1, I_inj = 1.4
Abb. 17d: Membranpotentiale; n_D = 0.4, I_inj = 1.0
Man erkennt, dass aufgrund der Rundung die ein-zelnen Membranpotentiale zwar nicht identisch, aber doch ähnlich sind. Mit steigendem Injektions-strom nimmt auch die Anzahl der generierten Spikes zu. Für das letzte Teilbild mit dem Ausgangs-Injek-tionsstrom und deutlich höherem Rauschanteil stimmen sogar alle drei Verläufe überein. Die grund-legenden Eigenschaften des Huber-Braun-Modells gehen somit trotz der geringeren Genauigkeit der FPGA-Lösung nicht verloren.
VIII. Zusammenfassung Mit der vorgestellten Architektur eines digitalen Neu-ronenkerns können auf einem XC4VLX60-FPGA der Virtex-4-Serie bei einer Taktfrequenz von 100MHz die Huber-Braun-Modellgleichungen von 400 Neuro-nen in Echtzeit berechnet werden. Hierbei handelt es sich um 256 Mio. 32-Bit-Gleitkommaoperationen
pro Sekunde. Die in den Modellgleichungen auf-tretenden mathematischen Funktionen werden über den CORDIC-Algorithmus in einer einheitlichen Architektur bestimmt. Dieser gestattet auch die Durchführung der Division, so dass kein expliziter Dividierer erforderlich ist. Insgesamt ist der FPGA etwa 10-mal schneller als ein PC mit 2,5GHz Taktrate. Trotz der geringeren Genauigkeit gegen-über double aus Matlab bzw. C und den damit ver-bundenen Rundungseffekten bleiben die prinzipi-ellen Eigenschaften des Neuronenmodells erhalten.
Aktuell wird jedes Neuron isoliert betrachtet und über einen konstanten Injektionsstrom depolarisiert. Der nächste Schritt ist die Implementierung der postsynaptischen Potentiale und der Netztopologie. Weiterhin soll zur schnelleren Datenübertragung zwischen FPGA und Host-Rechner USB 2.0 zum Einsatz kommen.
IX. Literatur [1] Jarzab, M.: Hardware Architecture of a Neuron
Model; Overseas Work Experience Program – Report, University of Applied Sciences Giessen-Friedberg, March 2008.
[2] Huber, M.T.; Braun, H.A.: Stimulus – response curves of a neuronal model for noisy subthreshold oscillations and related spike generation; University of Marburg, 2005.
[3] Rabe, D.: Versuchsanleitung Praktikum Digital-technik; Fachhochschule OOW, 2008.
[4] Alfke, P.: Efficient Shift Registers, LFSR Counters, and Long Pseudo-Random Sequence Generators; Xilinx, 1996.
[5] Timmermann, D.; Rix, B.; Hahn, H.; Hosticka, B.J.: 24 Bit CMOS Gleitkomma Vektorarithme-tik Chip; Fraunhofer-Institut für mikroelektroni-sche Schaltungen und Systeme, 1993.
[6] Beuler, M.: CORDIC-Algorithmus zur Auswer-tung elementarer Funktionen in Hardware; FH-Report, Juni 2008.
http://dok.bib.fh-giessen.de/opus/volltexte/2009/4148/ [7] Beuler, M.; Bonath, W.: Berechnung elemen-
tarer Funktionen für das Huber/Braun-Neuronenmodell in digitaler Architektur; MPC-Workshop Konstanz, Juli 2008.
http://dok.bib.fh-giessen.de/opus/volltexte/2009/4149/ [8] Liebig, H.; Thome, S.: Logischer Entwurf digita-
ler Systeme; 3. Auflage, Springer-Verlag, 1996. [9] Jorke, G.: Rechnergestützter Entwurf digitaler
Schaltungen; 1. Auflage, Carl Hanser Verlag, 2004.
[10] Beuler, M.: Realisierung von Arithmetik-Baugruppen für das 32-Bit-Gleitkommaformat der Norm ANSI/IEEE 754 mittels VHDL; FH-Report, April 2008.
http://dok.bib.fh-giessen.de/opus/volltexte/2009/4146/ [11] Wunderlich, H.-J.: Rechnerorganisation; Vorle-
sungsskript, Universität Stuttgart, WS02/03. [12] Xilinx: Virtex-4 Family Overview; Sept. 2007. [13] Schiffmann, W.; Schmitz, W.: Technische Infor-
matik 2; 3. Auflage, Springer-Verlag, 1999.
14
Appendix A Zusammenfassung der aus [2] entnommenen numerischen Parameter für das Huber-Braun-Neuronenmodell: delta_t = 0.1; % Schrittweite in ms C_M = 1; g_l = 0.1; V_l = -60; % schneller depolarisierender Natriumkanal für Spik e-Generierung g_d = 2.0; V_0d = -25; s_d = 0.25; V_d = 50; % schneller repolarisierender Kaliumkanal für Spike -Generierung g_r = 2.0; V_0r = -25; s_r = 0.25; V_r = -90; tau_r = 2; % langsamer depolarisierender Natriumkanal für Oszi llationen g_sd = 0.4; V_sd = 50; V_0sd = -40; s_sd = 0.25; tau_sd = 10; % langsamer repolarisierender Kaliumkanal für Oszil lationen g_sr = 2.0; V_sr = -90; V_0sr = -40; s_sr = 0.25; tau_sr = 50;
Appendix B Nachfolgend sind die Initialwerte der ersten 20 Einträge von FIFO_7 sowie der Register QLFSR_0 bis QLFSR_2 zur Generierung der Pseudo-Zufalls-zahlen aufgeführt. In einem Matlab-m-File bzw. in C-Quellcode sind für die QLFSRs andere Startwerte vorzusehen, um die oben angegebenen 20 Zufallszahlen berechnen zu können. Nach dem Durchlaufen des ersten Blocks sind diese Registerinhalte dann identisch zu den Initialwerten des VHDL-Quellcodes. type MMX64_32 is array(63 downto 0) of std_logic_ve ctor(31 downto 0); signal QRAM64_32: MMX64_32 := ("00000000000000000000000000000000", "00000000000000000000000000000000", ... ... "00000000000000000000000000000000", "00000000000000000000000000000000", "00111111000010101011101100000000", -- 0x3F0ABB00 "00111111011100101101000100000000", -- 0x3F72D100 "00111111000101101101011000000000", -- 0x3F16D600 "00111110101000100000101000000000", -- 0x3EA20A00 "00111110010000110101110000000000", -- 0x3E435C00 "00111101010001010011000000000000", -- 0x3D453000 "00111111011101000101110100000000", -- 0x3F745D00 "00111111011010011100110100000000", -- 0x3F69CD00 "00111111011101001101111100000000", -- 0x3F74DF00 "00111111001000000111000100000000", -- 0x3F207100 "00111111011000010101111100000000", -- 0x3F615F00 "00111101100100111111100000000000", -- 0x3D93F800 "00111111010100011110010000000000", -- 0x3F51E400 "00111111010010101001001100000000", -- 0x3F4A9300 "00111110101000111001001000000000", -- 0x3EA39200 "00111101110000101001100000000000", -- 0x3DC29800 "00111100000101111100000000000000", -- 0x3C17C000 "00111101010100111111000000000000", -- 0x3D53F000 "00111110000001011101000000000000", -- 0x3E05D000 "00111111011000100000000100000000"); -- 0x3F620100 -- initial values of QLFSR_X in PRN_MODULE signal QLFSR_0 : std_logic_vector(31 downto 0) := X "FFB9EC33"; signal QLFSR_1 : std_logic_vector(31 downto 0) := X "B3DE9246"; signal QLFSR_2 : std_logic_vector(31 downto 0) := X "0B3D3E9D"; -- in Matlab- or C-Code QLFSR_0 = X"025FE201"; QLFSR_1 = X"18532174"; QLFSR_2 = X"51C90D3F";
Appendix C Die Tabellen A1 und A2 zeigen die Inhalte der ROMs der ADD_SUB- und MULT-Module. Aus Tab. A1 geht hervor, dass die Injektionsströme für 40 Neuronen (10 Neuronen mal 4 Blöcke) abgelegt sind, jeweils mit dem Wert 1.2. Im experimentellen Stadium können diese Werte individuell angepasst werden. Eine Erweiterung des Speichers auf insgesamt 400 Injektionsströme ist hier nicht vorgesehen, d.h. für jeden der 10 Blockdurchläufe pro Schrittweite gelten die gleichen Ströme.
Adr. (hex)
Bedeu-tung
Wert (dez)
Adr. (hex)
Bedeu- tung
Wert (dez)
00 Null 0 20 I_inj_B2 1.2 01 Eins 1 21 I_inj_C2 1.2 02 -Eins -1 22 I_inj_D2 1.2 03 V_l -60 23 I_inj_E2 1.2 04 V_d 50 24 I_inj_F2 1.2 05 V_r -90 25 I_inj_G2 1.2 06 V_sd 50 26 I_inj_H2 1.2 07 V_sr -90 27 I_inj_I2 1.2 08 V_0d -25 28 I_inj_J2 1.2 09 V_0r -25 29 I_inj_A3 1.2 0A V_0sd -40 2A I_inj_B3 1.2 0B V_0sr -40 2B I_inj_C3 1.2 0C --- --- 2C I_inj_D3 1.2 0D --- --- 2D I_inj_E3 1.2 0E --- --- 2E I_inj_F3 1.2 0F --- --- 2F I_inj_G3 1.2 10 --- --- 30 I_inj_H3 1.2 11 --- --- 31 I_inj_I3 1.2 12 --- --- 32 I_inj_J3 1.2 13 --- --- 33 I_inj_A4 1.2 14 --- --- 34 I_inj_B4 1.2 15 I_inj_A1 1.2 35 I_inj_C4 1.2 16 I_inj_B1 1.2 36 I_inj_D4 1.2 17 I_inj_C1 1.2 37 I_inj_E4 1.2 18 I_inj_D1 1.2 38 I_inj_F4 1.2 19 I_inj_E1 1.2 39 I_inj_G4 1.2 1A I_inj_F1 1.2 3A I_inj_H4 1.2 1B I_inj_G1 1.2 3B I_inj_I4 1.2 1C I_inj_H1 1.2 3C I_inj_J4 1.2 1D I_inj_I1 1.2 3D --- --- 1E I_inj_J1 1.2 3E --- --- 1F I_inj_A2 1.2 3F --- ---
Tab. A1: ROM-Inhalt der ADD_SUB-Module
Adr. (hex)
Bedeu- tung
Wert (dez)
Adr. (hex)
Bedeu-tung
Wert (dez)
00 Null 0 20 ρ(25.0°) 1
01 Eins 1 21 ϕ(25.5°) 1.05647
02 -Eins -1 22 ρ(25.5°) 1.0132047
03 g_l 0.1 23 ϕ(26.0°) 1.11612
04 g_d 2 24 ρ(26.0°) 1.0265837
05 g_r 2 25 ϕ(26.5°) 1.17915
06 g_sd 0.4 26 ρ(26.5°) 1.0401393
07 g_sr 2 27 ϕ(27.0°) 1.24573
08 -s_d -0.25 28 ρ(27.0°) 1.0538739
09 -s_r -0.25 29 --- --- 0A -s_sd -0.25 2A --- --- 0B -s_sr -0.25 2B --- --- 0C dt/tau_r 0.05 2C --- --- 0D dt/tau_sd 0.01 2D --- --- 0E dt/tau_sr 0.002 2E --- --- 0F dt/C_M 0.1 2F --- --- 10 2π 6.2831855 30 --- ---
11 -4*0.0*dt 0 31 --- --- 12 -4*0.1*dt -0.04 32 --- --- 13 -4*0.2*dt -0.08 33 --- --- 14 -4*0.3*dt -0.12 34 --- --- 15 -4*0.4*dt -0.16 35 --- --- 16 -4*0.5*dt -0.2 36 --- --- 17 ϕ(23.0°) 0.802742 37 --- ---
18 ρ(23.0°) 0.94888 38 --- ---
19 ϕ(23.5°) 0.84807 39 --- ---
1A ρ(23.5°) 0.9614097 3A --- ---
1B ϕ(24.0°) 0.895958 3B --- ---
1C ρ(24.0°) 0.97410476 3C --- ---
1D ϕ(24.5°) 0.946551 3D --- ---
1E ρ(24.5°) 0.98696744 3E --- ---
1F ϕ(25.0°) 1 3F --- ---
Tab. A2: ROM-Inhalt der MULT-Module
15
Appendix D E
44
02
5
C1
8 *F
18
02
6
C3
1 *F
31
02
7
C4
4 *F
44
028
D1
8 *G
18
02
9
D31 *
G3
1
03
0
D4
4 *G
44
031
E1
8 *H
18
03
2
E3
1 *H
31
03
3
E4
4 *H
44
03
4
F1
8 *I1
8
03
5
F3
1 *I3
1
03
6
F4
4 *I4
4
03
7
G1
8 *J1
8
03
8
G3
1 *J3
1
03
9
G4
4 *J4
4
04
0
H1
8 *A
27
04
1
H3
1 *A
40
04
2
H4
4 *A
53
04
3
I18 *
B2
7
04
4
I31 *
B4
0
04
5
I44 *
B5
3
04
6
J18 *
C2
7
04
7
J31 *
C4
0
04
8
J44 *
C53
04
9
A2
7 *
NO
P
02
5
---
NO
P
026
---
NO
P
02
7
---
NO
P
02
8
---
NO
P
02
9
---
NO
P
030
---
NO
P
03
1
---
NO
P
032
---
NO
P
033
---
NO
P
03
4
---
NO
P
03
5
---
NO
P
036
---
NO
P
037
---
NO
P
038
---
NO
P
03
9
---
NO
P
04
0
---
NO
P
04
1
---
NO
P
042
---
NO
P
043
---
NO
P
04
4
---
NO
P
045
---
NO
P
04
6
---
NO
P
04
7
---
NO
P
04
8
---
NO
P
04
9
---
NO
P
02
5
---
NO
P
02
6
---
NO
P
02
7
---
NO
P
02
8
---
NO
P
02
9
---
NO
P
03
0
---
NO
P
03
1
---
NO
P
032
---
NO
P
03
3
---
NO
P
034
---
NO
P
035
---
NO
P
03
6
---
NO
P
03
7
---
NO
P
038
---
NO
P
039
---
NO
P
04
0
---
NO
P
04
1
---
NO
P
04
2
---
NO
P
04
3
---
NO
P
04
4
---
NO
P
04
5
---
NO
P
04
6
---
NO
P
04
7
---
NO
P
048
---
A2
8
049
---
C1
9
02
5
J10 *
C3
2
02
6
A1
9 *C
45
02
7
A3
2 *D
19
028
A4
5 *D
32
02
9
B1
9 *D
45
030
B32 *
E1
9
03
1
B4
5 *E
32
03
2
C1
9 *E
45
03
3
C3
2 *F
19
03
4
C4
5 *F
32
03
5
D1
9 *F
45
03
6
D3
2 *G
19
03
7
D4
5 *G
32
03
8
E1
9 *G
45
03
9
E3
2 *H
19
04
0
E4
5 *H
32
04
1
F1
9 *H
45
04
2
F3
2 *I1
9
04
3
F4
5 *I3
2
04
4
G1
9 *I4
5
04
5
G3
2 *J1
9
04
6
G4
5 *J3
2
04
7
H1
9 *J4
5
04
8
H3
2 *A
29
04
9
H4
5 *
NO
P
025
---
NO
P
026
---
NO
P
02
7
---
NO
P
02
8
---
NO
P
02
9
---
NO
P
03
0
---
NO
P
03
1
---
NO
P
03
2
---
NO
P
03
3
---
NO
P
034
---
NO
P
03
5
---
NO
P
036
---
NO
P
03
7
---
NO
P
03
8
---
NO
P
03
9
---
NO
P
04
0
---
NO
P
041
---
NO
P
042
---
NO
P
04
3
---
NO
P
04
4
---
NO
P
045
---
NO
P
046
---
NO
P
04
7
---
NO
P
04
8
---
NO
P
04
9
---
J11
025
---
A2
0
026
---
A3
3
02
7
---
A4
6
02
8
---
B2
0
02
9
---
B33
030
---
B4
6
031
---
C2
0
03
2
---
C3
3
03
3
---
C4
6
034
---
D2
0
03
5
---
D3
3
036
---
D4
6
03
7
---
E2
0
03
8
---
E3
3
03
9
---
E4
6
04
0
---
F2
0
041
---
F3
3
042
---
F4
6
04
3
---
G2
0
04
4
---
G3
3
045
---
G46
046
---
H20
04
7
---
H3
3
04
8
---
H4
6
04
9
---
E4
4
02
5
C1
8 *F
18
02
6
C3
1 *F
31
02
7
C4
4 *F
44
028
D1
8 *G
18
02
9
D31 *
G3
1
03
0
D4
4 *G
44
031
E1
8 *H
18
03
2
E3
1 *H
31
03
3
E4
4 *H
44
03
4
F1
8 *I1
8
03
5
F3
1 *I3
1
03
6
F4
4 *I4
4
03
7
G1
8 *J1
8
03
8
G3
1 *J3
1
03
9
G4
4 *J4
4
04
0
H1
8 *A
27
04
1
H3
1 *A
40
04
2
H4
4 *A
53
04
3
I18 *
B2
7
04
4
I31 *
B4
0
04
5
I44 *
B5
3
04
6
J18 *
C2
7
04
7
J31 *
C4
0
04
8
J44 *
C53
04
9
A2
7 *
NO
P
02
5
---
NO
P
026
---
NO
P
02
7
---
NO
P
02
8
---
NO
P
02
9
---
NO
P
030
---
NO
P
03
1
---
NO
P
032
---
NO
P
033
---
NO
P
03
4
---
NO
P
03
5
---
NO
P
036
---
NO
P
037
---
NO
P
038
---
NO
P
03
9
---
NO
P
04
0
---
NO
P
04
1
---
NO
P
042
---
NO
P
043
---
NO
P
04
4
---
NO
P
045
---
NO
P
04
6
---
NO
P
04
7
---
NO
P
04
8
---
NO
P
04
9
---
NO
P
02
5
---
NO
P
02
6
---
NO
P
02
7
---
NO
P
02
8
---
NO
P
02
9
---
NO
P
03
0
---
NO
P
03
1
---
NO
P
032
---
NO
P
03
3
---
NO
P
034
---
NO
P
035
---
NO
P
03
6
---
NO
P
03
7
---
NO
P
038
---
NO
P
039
---
NO
P
04
0
---
NO
P
04
1
---
NO
P
04
2
---
NO
P
04
3
---
NO
P
04
4
---
NO
P
04
5
---
NO
P
04
6
---
NO
P
04
7
---
NO
P
048
---
A2
8
049
---
C1
9
02
5
J10 *
C3
2
02
6
A1
9 *C
45
02
7
A3
2 *D
19
028
A4
5 *D
32
02
9
B1
9 *D
45
030
B32 *
E1
9
03
1
B4
5 *E
32
03
2
C1
9 *E
45
03
3
C3
2 *F
19
03
4
C4
5 *F
32
03
5
D1
9 *F
45
03
6
D3
2 *G
19
03
7
D4
5 *G
32
03
8
E1
9 *G
45
03
9
E3
2 *H
19
04
0
E4
5 *H
32
04
1
F1
9 *H
45
04
2
F3
2 *I1
9
04
3
F4
5 *I3
2
04
4
G1
9 *I4
5
04
5
G3
2 *J1
9
04
6
G4
5 *J3
2
04
7
H1
9 *J4
5
04
8
H3
2 *A
29
04
9
H4
5 *
NO
P
025
---
NO
P
026
---
NO
P
02
7
---
NO
P
02
8
---
NO
P
02
9
---
NO
P
03
0
---
NO
P
03
1
---
NO
P
03
2
---
NO
P
03
3
---
NO
P
034
---
NO
P
03
5
---
NO
P
036
---
NO
P
03
7
---
NO
P
03
8
---
NO
P
03
9
---
NO
P
04
0
---
NO
P
041
---
NO
P
042
---
NO
P
04
3
---
NO
P
04
4
---
NO
P
045
---
NO
P
046
---
NO
P
04
7
---
NO
P
04
8
---
NO
P
04
9
---
J11
025
---
A2
0
026
---
A3
3
02
7
---
A4
6
02
8
---
B2
0
02
9
---
B33
030
---
B4
6
031
---
C2
0
03
2
---
C3
3
03
3
---
C4
6
034
---
D2
0
03
5
---
D3
3
036
---
D4
6
03
7
---
E2
0
03
8
---
E3
3
03
9
---
E4
6
04
0
---
F2
0
041
---
F3
3
042
---
F4
6
04
3
---
G2
0
04
4
---
G3
3
045
---
G46
046
---
H20
04
7
---
H3
3
04
8
---
H4
6
04
9
---
NO
P
NO
P
00
0
AD
D_
SU
B_
MO
DU
L_
A
m=
9
A0
9
00
1
B0
9
00
2
C0
9
00
3
D0
9
00
4
E0
9
00
5
F0
9
00
6
---
G0
9
00
7
---
H0
9
008
---
I09
009
A0
9 *J0
9
01
0
B09 *
A1
8
01
1
C09 *
A3
1
012
D0
9 *A
44
013
E0
9 *B
18
01
4
F0
9 *B
31
015
G0
9 *B
44
016
H0
9 *C
18
01
7
I09 *
C3
1
01
8
J09 *
C4
4
01
9
A1
8 *D
18
02
0
A3
1 *D
31
02
1
A4
4 *D
44
02
2
B1
8 *E
18
02
3
B3
1 *E
31
024
B4
4 *
NO
P
000
AD
D_S
UB
_M
OD
UL
_B
m
=9
NO
P
00
1
NO
P
00
2
NO
P
00
3
NO
P
00
4
NO
P
00
5
NO
P
00
6
---
NO
P
00
7
---
NO
P
00
8
---
NO
P
00
9
---
NO
P
01
0
---
NO
P
01
1
---
NO
P
01
2
---
NO
P
01
3
---
NO
P
01
4
---
NO
P
01
5
---
NO
P
01
6
---
NO
P
017
---
NO
P
018
---
NO
P
01
9
---
NO
P
02
0
---
NO
P
021
---
NO
P
02
2
---
NO
P
02
3
---
NO
P
02
4
---
NO
P
00
0
MU
LT
_M
OD
UL
_A
m=
8
NO
P
00
1
NO
P
00
2
NO
P
00
3
NO
P
00
4
NO
P
005
NO
P
006
---
NO
P
00
7
---
NO
P
00
8
---
NO
P
00
9
---
NO
P
01
0
---
NO
P
01
1
---
NO
P
01
2
---
NO
P
01
3
---
NO
P
01
4
---
NO
P
01
5
---
NO
P
01
6
---
NO
P
01
7
---
NO
P
01
8
---
NO
P
01
9
---
NO
P
02
0
---
NO
P
02
1
---
NO
P
02
2
---
NO
P
02
3
---
NO
P
024
---
00
0
MU
LT
_M
OD
UL
_B
m=
8
NO
P
00
1
NO
P
00
2
NO
P
00
3
NO
P
00
4
NO
P
00
5
NO
P
00
6
---
NO
P
007
---
NO
P
00
8
---
A1
0
00
9
---
B1
0
010
---
C10
01
1
---
D1
0
01
2
---
E1
0
013
---
F1
0
01
4
---
G1
0
015
---
H1
0
01
6
A1
0 *I1
0
01
7
B1
0 *J1
0
01
8
C1
0 *A
19
01
9
D1
0 *A
32
02
0
E1
0 *A
45
02
1
F1
0 *B
19
02
2
G1
0 *B
32
02
3
H1
0 *B
45
02
4
I10 *
NO
P
00
0
MU
LT
_M
OD
UL
_C
m=
8
NO
P
00
1
NO
P
00
2
NO
P
00
3
NO
P
00
4
NO
P
00
5
NO
P
00
6
---
NO
P
00
7
---
NO
P
00
8
---
NO
P
00
9
---
NO
P
01
0
---
NO
P
01
1
---
NO
P
01
2
---
NO
P
01
3
---
NO
P
01
4
---
NO
P
01
5
---
NO
P
01
6
---
NO
P
017
---
NO
P
01
8
---
NO
P
01
9
---
NO
P
020
---
NO
P
021
---
NO
P
02
2
---
NO
P
02
3
---
NO
P
02
4
---
NO
P
000
CO
RD
IC_
MO
DU
L
m
=4
2
NO
P
001
NO
P
00
2
NO
P
003
NO
P
00
4
NO
P
005
NO
P
00
6
---
NO
P
00
7
---
NO
P
00
8
---
NO
P
00
9
---
NO
P
01
0
---
NO
P
01
1
---
NO
P
01
2
---
NO
P
01
3
---
NO
P
014
---
NO
P
01
5
---
A1
1
01
6
---
B1
1
01
7
---
C11
018
---
D11
01
9
---
E1
1
02
0
---
F1
1
02
1
---
G1
1
02
2
---
H1
1
02
3
---
I11
02
4
---
NO
P
NO
P
00
0
AD
D_
SU
B_
MO
DU
L_
A
m=
9
A0
9
00
1
B0
9
00
2
C0
9
00
3
D0
9
00
4
E0
9
00
5
F0
9
00
6
---
G0
9
00
7
---
H0
9
008
---
I09
009
A0
9 *J0
9
01
0
B09 *
A1
8
01
1
C09 *
A3
1
012
D0
9 *A
44
013
E0
9 *B
18
01
4
F0
9 *B
31
015
G0
9 *B
44
016
H0
9 *C
18
01
7
I09 *
C3
1
01
8
J09 *
C4
4
01
9
A1
8 *D
18
02
0
A3
1 *D
31
02
1
A4
4 *D
44
02
2
B1
8 *E
18
02
3
B3
1 *E
31
024
B4
4 *
NO
P
000
AD
D_S
UB
_M
OD
UL
_B
m
=9
NO
P
00
1
NO
P
00
2
NO
P
00
3
NO
P
00
4
NO
P
00
5
NO
P
00
6
---
NO
P
00
7
---
NO
P
00
8
---
NO
P
00
9
---
NO
P
01
0
---
NO
P
01
1
---
NO
P
01
2
---
NO
P
01
3
---
NO
P
01
4
---
NO
P
01
5
---
NO
P
01
6
---
NO
P
017
---
NO
P
018
---
NO
P
01
9
---
NO
P
02
0
---
NO
P
021
---
NO
P
02
2
---
NO
P
02
3
---
NO
P
02
4
---
NO
P
00
0
MU
LT
_M
OD
UL
_A
m=
8
NO
P
00
1
NO
P
00
2
NO
P
00
3
NO
P
00
4
NO
P
005
NO
P
006
---
NO
P
00
7
---
NO
P
00
8
---
NO
P
00
9
---
NO
P
01
0
---
NO
P
01
1
---
NO
P
01
2
---
NO
P
01
3
---
NO
P
01
4
---
NO
P
01
5
---
NO
P
01
6
---
NO
P
01
7
---
NO
P
01
8
---
NO
P
01
9
---
NO
P
02
0
---
NO
P
02
1
---
NO
P
02
2
---
NO
P
02
3
---
NO
P
024
---
00
0
MU
LT
_M
OD
UL
_B
m=
8
NO
P
00
1
NO
P
00
2
NO
P
00
3
NO
P
00
4
NO
P
00
5
NO
P
00
6
---
NO
P
007
---
NO
P
00
8
---
A1
0
00
9
---
B1
0
010
---
C10
01
1
---
D1
0
01
2
---
E1
0
013
---
F1
0
01
4
---
G1
0
015
---
H1
0
01
6
A1
0 *I1
0
01
7
B1
0 *J1
0
01
8
C1
0 *A
19
01
9
D1
0 *A
32
02
0
E1
0 *A
45
02
1
F1
0 *B
19
02
2
G1
0 *B
32
02
3
H1
0 *B
45
02
4
I10 *
NO
P
00
0
MU
LT
_M
OD
UL
_C
m=
8
NO
P
00
1
NO
P
00
2
NO
P
00
3
NO
P
00
4
NO
P
00
5
NO
P
00
6
---
NO
P
00
7
---
NO
P
00
8
---
NO
P
00
9
---
NO
P
01
0
---
NO
P
01
1
---
NO
P
01
2
---
NO
P
01
3
---
NO
P
01
4
---
NO
P
01
5
---
NO
P
01
6
---
NO
P
017
---
NO
P
01
8
---
NO
P
01
9
---
NO
P
020
---
NO
P
021
---
NO
P
02
2
---
NO
P
02
3
---
NO
P
02
4
---
NO
P
000
CO
RD
IC_
MO
DU
L
m
=4
2
NO
P
001
NO
P
00
2
NO
P
003
NO
P
00
4
NO
P
005
NO
P
00
6
---
NO
P
00
7
---
NO
P
00
8
---
NO
P
00
9
---
NO
P
01
0
---
NO
P
01
1
---
NO
P
01
2
---
NO
P
01
3
---
NO
P
014
---
NO
P
01
5
---
A1
1
01
6
---
B1
1
01
7
---
C11
018
---
D11
01
9
---
E1
1
02
0
---
F1
1
02
1
---
G1
1
02
2
---
H1
1
02
3
---
I11
02
4
---
Abb. A1a: Reduziertes Time-Space-Diagramm für alle AEs, Takt 000 bis 049
H3
4 *
H56
I30 *
I43 *-*
J30 *
J43 *-*
F0
8 *G
08 *
H0
8 *I0
8 *J0
8 *E
08 *
J41 *
J28 *
I54 *
E0
7
07
5
I53 *
F0
7
07
6
J27 *
G0
7
07
7
J40 *
H0
7
07
8
J53 *
I07
07
9
A0
7 *J0
7
08
0
B0
7 *A
14
08
1
C0
7 *B
14
08
2
D0
7 *C
14
08
3
E0
7 *D
14
08
4
F0
7 *E
14
08
5
G0
7 *F
14
08
6
H0
7 *G
14
08
7
I07 *
H1
4
08
8
J07 *
I14
08
9
A1
4 *J1
4
09
0
B1
4 *A
57
09
1
C1
4 *A
58
09
2
D1
4 *B
57
09
3
E1
4 *B
58
09
4
F1
4 *C
57
09
5
G1
4 *C
58
09
6
H1
4 *D
57
09
7
I14 *
D5
8
09
8
J14 *
E57
09
9
A5
7 *-
C47
075
A21 *
D2
1
076
A34 *
D3
4
07
7
A4
7 *D
47
07
8
B2
1 *E
21
079
B3
4 *E
34
080
B4
7 *E
47
08
1
C21 *
F2
1
082
C34 *
F3
4
08
3
C4
7 *F
47
08
4
D2
1 *G
21
08
5
D3
4 *G
34
086
D47 *
G4
7
08
7
E21 *
H2
1
088
E34 *
H3
4
08
9
E4
7 *H
47
09
0
F2
1 *I2
1
091
F34 *
I34
092
F47 *
I47
09
3
G2
1 *J2
1
09
4
G3
4 *J3
4
095
G47 *
J47
09
6
H2
1 *N
OP
09
7
NO
P
09
8
H4
7 *N
OP
09
9
I21 *
I54
07
5
G4
1 *J2
8
07
6
G5
4 *J4
1
07
7
H2
8 *J5
4
07
8
H4
1 *N
OP
07
9
H5
4 *N
OP
08
0
I28 *
NO
P
08
1
I41 *
NO
P
08
2
NO
P
08
3
NO
P
084
NO
P
085
J54 *
NO
P
08
6
---
NO
P
08
7
---
NO
P
088
---
NO
P
089
---
NO
P
09
0
---
NO
P
09
1
---
NO
P
09
2
---
NO
P
09
3
---
NO
P
09
4
---
NO
P
09
5
---
NO
P
09
6
---
NO
P
09
7
---
NO
P
098
---
NO
P
099
---
I55
07
5
G4
2 *J2
9
07
6
G5
5 *J4
2
07
7
H2
9 *J5
5
07
8
H42 *
A0
8
07
9
H5
5 *B
08
08
0
I29 *
C0
8
08
1
I42 *
D0
8
08
2
I55 *
E08
08
3
J29 *
F0
8
08
4
J42 *
G0
8
08
5
J55 *
H0
8
08
6
A0
8 *I0
8
08
7
B0
8 *J0
8
08
8
C0
8 *N
OP
08
9
D0
8 *N
OP
09
0
NO
P
09
1
NO
P
09
2
NO
P
09
3
NO
P
09
4
NO
P
09
5
NO
P
09
6
---
NO
P
097
---
NO
P
09
8
---
NO
P
09
9
---
G4
3
075
E3
0 *G
56
07
6
E4
3 *-* H
30
07
7
E5
6
H4
3
07
8
F3
0 *H
56
079
F43 *-* I3
0
08
0
F5
6
I43
08
1
G3
0 *I5
6
08
2
G4
3 *-* J3
0
08
3
G5
6
J43
084
H3
0 *J5
6
08
5
H4
3 *-* N
OP
086
NO
P
08
7
NO
P
08
8
NO
P
08
9
I56
NO
P
09
0
NO
P
091
NO
P
092
J56
NO
P
09
3
---
NO
P
094
---
NO
P
095
---
NO
P
09
6
---
A04
09
7
---
B0
4
09
8
---
C0
4
099
---
J13
07
5
C4
6 *A
22
076
D20 *
A3
5
077
D33 *
A4
8
078
D46 *
B2
2
079
E20 *
B35
08
0
E3
3 *B
48
08
1
E46 *
C2
2
082
F20 *
C3
5
083
F33 *
C48
08
4
F4
6 *D
22
085
G20 *
D35
08
6
G3
3 *D
48
087
G46 *
E2
2
088
H20 *
E3
5
08
9
H3
3 *E
48
090
H46 *
F22
09
1
I20 *
F3
5
092
I33 *
F4
8
093
I46 *
G22
09
4
J20 *
G35
09
5
J33 *
G4
8
096
J46 *
H2
2
09
7
A0
1 *H
35
098
B01 *
H48
09
9
C0
1 *
H3
4 *
H56
I30 *
I43 *-*
J30 *
J43 *-*
F0
8 *G
08 *
H0
8 *I0
8 *J0
8 *E
08 *
J41 *
J28 *
I54 *
E0
7
07
5
I53 *
F0
7
07
6
J27 *
G0
7
07
7
J40 *
H0
7
07
8
J53 *
I07
07
9
A0
7 *J0
7
08
0
B0
7 *A
14
08
1
C0
7 *B
14
08
2
D0
7 *C
14
08
3
E0
7 *D
14
08
4
F0
7 *E
14
08
5
G0
7 *F
14
08
6
H0
7 *G
14
08
7
I07 *
H1
4
08
8
J07 *
I14
08
9
A1
4 *J1
4
09
0
B1
4 *A
57
09
1
C1
4 *A
58
09
2
D1
4 *B
57
09
3
E1
4 *B
58
09
4
F1
4 *C
57
09
5
G1
4 *C
58
09
6
H1
4 *D
57
09
7
I14 *
D5
8
09
8
J14 *
E57
09
9
A5
7 *-
C47
075
A21 *
D2
1
076
A34 *
D3
4
07
7
A4
7 *D
47
07
8
B2
1 *E
21
079
B3
4 *E
34
080
B4
7 *E
47
08
1
C21 *
F2
1
082
C34 *
F3
4
08
3
C4
7 *F
47
08
4
D2
1 *G
21
08
5
D3
4 *G
34
086
D47 *
G4
7
08
7
E21 *
H2
1
088
E34 *
H3
4
08
9
E4
7 *H
47
09
0
F2
1 *I2
1
091
F34 *
I34
092
F47 *
I47
09
3
G2
1 *J2
1
09
4
G3
4 *J3
4
095
G47 *
J47
09
6
H2
1 *N
OP
09
7
NO
P
09
8
H4
7 *N
OP
09
9
I21 *
I54
07
5
G4
1 *J2
8
07
6
G5
4 *J4
1
07
7
H2
8 *J5
4
07
8
H4
1 *N
OP
07
9
H5
4 *N
OP
08
0
I28 *
NO
P
08
1
I41 *
NO
P
08
2
NO
P
08
3
NO
P
084
NO
P
085
J54 *
NO
P
08
6
---
NO
P
08
7
---
NO
P
088
---
NO
P
089
---
NO
P
09
0
---
NO
P
09
1
---
NO
P
09
2
---
NO
P
09
3
---
NO
P
09
4
---
NO
P
09
5
---
NO
P
09
6
---
NO
P
09
7
---
NO
P
098
---
NO
P
099
---
I55
07
5
G4
2 *J2
9
07
6
G5
5 *J4
2
07
7
H2
9 *J5
5
07
8
H42 *
A0
8
07
9
H5
5 *B
08
08
0
I29 *
C0
8
08
1
I42 *
D0
8
08
2
I55 *
E08
08
3
J29 *
F0
8
08
4
J42 *
G0
8
08
5
J55 *
H0
8
08
6
A0
8 *I0
8
08
7
B0
8 *J0
8
08
8
C0
8 *N
OP
08
9
D0
8 *N
OP
09
0
NO
P
09
1
NO
P
09
2
NO
P
09
3
NO
P
09
4
NO
P
09
5
NO
P
09
6
---
NO
P
097
---
NO
P
09
8
---
NO
P
09
9
---
G4
3
075
E3
0 *G
56
07
6
E4
3 *-* H
30
07
7
E5
6
H4
3
07
8
F3
0 *H
56
079
F43 *-* I3
0
08
0
F5
6
I43
08
1
G3
0 *I5
6
08
2
G4
3 *-* J3
0
08
3
G5
6
J43
084
H3
0 *J5
6
08
5
H4
3 *-* N
OP
086
NO
P
08
7
NO
P
08
8
NO
P
08
9
I56
NO
P
09
0
NO
P
091
NO
P
092
J56
NO
P
09
3
---
NO
P
094
---
NO
P
095
---
NO
P
09
6
---
A04
09
7
---
B0
4
09
8
---
C0
4
099
---
J13
07
5
C4
6 *A
22
076
D20 *
A3
5
077
D33 *
A4
8
078
D46 *
B2
2
079
E20 *
B35
08
0
E3
3 *B
48
08
1
E46 *
C2
2
082
F20 *
C3
5
083
F33 *
C48
08
4
F4
6 *D
22
085
G20 *
D35
08
6
G3
3 *D
48
087
G46 *
E2
2
088
H20 *
E3
5
08
9
H3
3 *E
48
090
H46 *
F22
09
1
I20 *
F3
5
092
I33 *
F4
8
093
I46 *
G22
09
4
J20 *
G35
09
5
J33 *
G4
8
096
J46 *
H2
2
09
7
A0
1 *H
35
098
B01 *
H48
09
9
C0
1 *
D2
7
05
0
A4
0 *D
40
05
1
A5
3 *D
53
05
2
B2
7 *E
27
053
B4
0 *E
40
05
4
B53 *
E5
3
05
5
C2
7 *F
27
05
6
C4
0 *F
40
05
7
C5
3 *F
53
05
8
D2
7 *G
27
05
9
D4
0 *G
40
06
0
D5
3 *G
53
06
1
E2
7 *H
27
06
2
E4
0 *H
40
06
3
E5
3 *H
53
06
4
F2
7 *I2
7
06
5
F4
0 *I4
0
06
6
F5
3 *I5
3
06
7
G2
7 *J2
7
06
8
G4
0 *J4
0
06
9
G5
3 *J5
3
07
0
H27 *
A07
07
1
H4
0 *B
07
07
2
H5
3 *C
07
07
3
I27 *
D0
7
07
4
I40 *
NO
P
05
0
---
NO
P
05
1
---
NO
P
05
2
---
NO
P
05
3
---
NO
P
05
4
---
NO
P
055
---
NO
P
05
6
---
A12
057
---
B1
2
05
8
---
C1
2
05
9
---
D1
2
06
0
---
E1
2
06
1
---
F1
2
06
2
---
G1
2
06
3
---
H1
2
06
4
---
I12
06
5
A1
2 *J1
2
06
6
B1
2 *A
21
06
7
C1
2 *A
34
06
8
D1
2 *A
47
06
9
E1
2 *B
21
07
0
F1
2 *B
34
07
1
G1
2 *B
47
07
2
H1
2 *C
21
07
3
I12 *
C3
4
07
4
J12 *
A4
1
05
0
---
A5
4
05
1
---
B2
8
05
2
---
B4
1
05
3
---
B5
4
05
4
---
C2
8
05
5
---
C4
1
05
6
A2
8 *C
54
057
A41 *
D28
05
8
A5
4 *D
41
059
B28 *
D5
4
060
B41 *
E28
06
1
B5
4 *E
41
06
2
C2
8 *E
54
063
C41 *
F2
8
064
C5
4 *F
41
065
D2
8 *F
54
06
6
D4
1 *G
28
06
7
D5
4 *G
41
068
E28 *
G5
4
069
E41 *
H28
07
0
E5
4 *H
41
071
F28 *
H5
4
072
F41 *
I28
07
3
F5
4 *I4
1
07
4
G2
8 *
A4
2
05
0
I19 *
A5
5
05
1
I32 *
B2
9
05
2
I45 *
B4
2
053
J19 *
B5
5
05
4
J32 *
C2
9
055
J45 *
C4
2
05
6
A2
9 *C
55
05
7
A4
2 *D
29
05
8
A5
5 *D
42
05
9
B2
9 *D
55
06
0
B4
2 *E
29
06
1
B5
5 *E
42
06
2
C2
9 *E
55
06
3
C4
2 *F
29
06
4
C5
5 *F
42
06
5
D2
9 *F
55
06
6
D4
2 *G
29
06
7
D5
5 *G
42
06
8
E2
9 *G
55
06
9
E4
2 *H
29
07
0
E5
5 *H
42
07
1
F2
9 *H
55
07
2
F4
2 *I2
9
07
3
F5
5 *I4
2
07
4
G2
9 *
NO
P
050
---
NO
P
051
---
NO
P
05
2
---
NO
P
05
3
---
NO
P
05
4
---
NO
P
05
5
---
A3
0
05
6
---
A4
3
05
7
---
A5
6
05
8
---
B3
0
05
9
---
B4
3
06
0
---
B5
6
06
1
---
C3
0
06
2
---
C4
3
06
3
A3
0 *C
56
06
4
A4
3 *-* D
30
06
5
A5
6
D4
3
06
6
B3
0 *D
56
06
7
B4
3 *-* E
30
06
8
B5
6
E4
3
06
9
C3
0 *E
56
07
0
C4
3 *-* F
30
07
1
C5
6
F4
3
07
2
D3
0 *F
56
07
3
D4
3 *-* G
30
074
D56
I20
050
---
I33
05
1
---
I46
05
2
---
J20
05
3
---
J33
05
4
---
J46
055
---
A0
1
05
6
---
B0
1
057
A1
1 *C
01
05
8
B1
1 *D
01
05
9
C1
1 *E
01
06
0
D1
1 *F
01
06
1
E1
1 *G
01
06
2
F1
1 *H
01
06
3
G1
1 *I0
1
06
4
H1
1 *J0
1
06
5
I11 *
A1
3
06
6
J11 *
B1
3
06
7
A2
0 *C
13
06
8
A3
3 *D
13
06
9
A4
6 *E
13
07
0
B2
0 *F
13
07
1
B3
3 *G
13
07
2
B4
6 *H
13
07
3
C2
0 *I1
3
07
4
C3
3 *
D2
7
05
0
A4
0 *D
40
05
1
A5
3 *D
53
05
2
B2
7 *E
27
053
B4
0 *E
40
05
4
B53 *
E5
3
05
5
C2
7 *F
27
05
6
C4
0 *F
40
05
7
C5
3 *F
53
05
8
D2
7 *G
27
05
9
D4
0 *G
40
06
0
D5
3 *G
53
06
1
E2
7 *H
27
06
2
E4
0 *H
40
06
3
E5
3 *H
53
06
4
F2
7 *I2
7
06
5
F4
0 *I4
0
06
6
F5
3 *I5
3
06
7
G2
7 *J2
7
06
8
G4
0 *J4
0
06
9
G5
3 *J5
3
07
0
H27 *
A07
07
1
H4
0 *B
07
07
2
H5
3 *C
07
07
3
I27 *
D0
7
07
4
I40 *
NO
P
05
0
---
NO
P
05
1
---
NO
P
05
2
---
NO
P
05
3
---
NO
P
05
4
---
NO
P
055
---
NO
P
05
6
---
A12
057
---
B1
2
05
8
---
C1
2
05
9
---
D1
2
06
0
---
E1
2
06
1
---
F1
2
06
2
---
G1
2
06
3
---
H1
2
06
4
---
I12
06
5
A1
2 *J1
2
06
6
B1
2 *A
21
06
7
C1
2 *A
34
06
8
D1
2 *A
47
06
9
E1
2 *B
21
07
0
F1
2 *B
34
07
1
G1
2 *B
47
07
2
H1
2 *C
21
07
3
I12 *
C3
4
07
4
J12 *
A4
1
05
0
---
A5
4
05
1
---
B2
8
05
2
---
B4
1
05
3
---
B5
4
05
4
---
C2
8
05
5
---
C4
1
05
6
A2
8 *C
54
057
A41 *
D28
05
8
A5
4 *D
41
059
B28 *
D5
4
060
B41 *
E28
06
1
B5
4 *E
41
06
2
C2
8 *E
54
063
C41 *
F2
8
064
C5
4 *F
41
065
D2
8 *F
54
06
6
D4
1 *G
28
06
7
D5
4 *G
41
068
E28 *
G5
4
069
E41 *
H28
07
0
E5
4 *H
41
071
F28 *
H5
4
072
F41 *
I28
07
3
F5
4 *I4
1
07
4
G2
8 *
A4
2
05
0
I19 *
A5
5
05
1
I32 *
B2
9
05
2
I45 *
B4
2
053
J19 *
B5
5
05
4
J32 *
C2
9
055
J45 *
C4
2
05
6
A2
9 *C
55
05
7
A4
2 *D
29
05
8
A5
5 *D
42
05
9
B2
9 *D
55
06
0
B4
2 *E
29
06
1
B5
5 *E
42
06
2
C2
9 *E
55
06
3
C4
2 *F
29
06
4
C5
5 *F
42
06
5
D2
9 *F
55
06
6
D4
2 *G
29
06
7
D5
5 *G
42
06
8
E2
9 *G
55
06
9
E4
2 *H
29
07
0
E5
5 *H
42
07
1
F2
9 *H
55
07
2
F4
2 *I2
9
07
3
F5
5 *I4
2
07
4
G2
9 *
NO
P
050
---
NO
P
051
---
NO
P
05
2
---
NO
P
05
3
---
NO
P
05
4
---
NO
P
05
5
---
A3
0
05
6
---
A4
3
05
7
---
A5
6
05
8
---
B3
0
05
9
---
B4
3
06
0
---
B5
6
06
1
---
C3
0
06
2
---
C4
3
06
3
A3
0 *C
56
06
4
A4
3 *-* D
30
06
5
A5
6
D4
3
06
6
B3
0 *D
56
06
7
B4
3 *-* E
30
06
8
B5
6
E4
3
06
9
C3
0 *E
56
07
0
C4
3 *-* F
30
07
1
C5
6
F4
3
07
2
D3
0 *F
56
07
3
D4
3 *-* G
30
074
D56
I20
050
---
I33
05
1
---
I46
05
2
---
J20
05
3
---
J33
05
4
---
J46
055
---
A0
1
05
6
---
B0
1
057
A1
1 *C
01
05
8
B1
1 *D
01
05
9
C1
1 *E
01
06
0
D1
1 *F
01
06
1
E1
1 *G
01
06
2
F1
1 *H
01
06
3
G1
1 *I0
1
06
4
H1
1 *J0
1
06
5
I11 *
A1
3
06
6
J11 *
B1
3
06
7
A2
0 *C
13
06
8
A3
3 *D
13
06
9
A4
6 *E
13
07
0
B2
0 *F
13
07
1
B3
3 *G
13
07
2
B4
6 *H
13
07
3
C2
0 *I1
3
07
4
C3
3 *
Abb. A1b: Reduziertes Time-Space-Diagramm für alle AEs, Takt 050 bis 099
16
I59 *
J59 *
H5
9 *G
59 *
F59 *
E5
9 *D
59 *
C5
9 *
E1
6 *F
16 *
G1
6 *H
16 *
I16 *
J16 *
D17 *
E1
7 *F
17 *
G1
7 *H
17 *
I17 *
J17 *
F2
2 *F
35 *
F4
8 *G
22 *
G3
5 *G
48 *
H2
2 *H
35 *
H4
8 *I2
2 *I3
5 *I4
8 *J2
2 *J3
5 *J4
8 *E
48 *
---
I59
12
5
A5
9 *J5
9
126
B59 *
NO
P
12
7
NO
P
12
8
NO
P
12
9
NO
P
130
NO
P
13
1
NO
P
13
2
NO
P
13
3
NO
P
13
4
NO
P
13
5
---
NO
P
13
6
---
NO
P
137
---
NO
P
13
8
---
NO
P
13
9
---
A60
14
0
---
B6
0
141
---
C6
0
142
---
D6
0
14
3
---
E6
0
14
4
---
F60
14
5
---
G6
0
14
6
---
H60
14
7
---
I60
14
8
A6
0 *J6
0
14
9
B6
0 *
C49
125
A2
3 *D
23
12
6
A3
6 *D
36
127
A4
9 *D
49
12
8
B2
3 *E
23
129
B36 *
E3
6
13
0
B4
9 *E
49
131
C23 *
F2
3
13
2
C3
6 *F
36
13
3
C49 *
F4
9
134
D2
3 *G
23
13
5
D3
6 *G
36
13
6
D4
9 *G
49
13
7
E23 *
H2
3
13
8
E3
6 *H
36
13
9
E4
9 *H
49
14
0
F2
3 *I2
3
141
F36 *
I36
14
2
F4
9 *I4
9
143
G23 *
J23
14
4
G3
6 *J3
6
145
G49 *
J49
146
H23 *
A2
6
14
7
H3
6 *A
39
14
8
H4
9 *A
52
149
I23 *
A2
4
12
5
---
A3
7
12
6
---
A5
0
12
7
---
B2
4
12
8
---
B3
7
12
9
---
B50
130
---
C24
13
1
---
C3
7
13
2
A2
4 *C
50
133
A3
7 *D
24
13
4
A5
0 *D
37
135
B2
4 *D
50
13
6
B3
7 *E
24
137
B5
0 *E
37
13
8
C2
4 *E
50
139
C3
7 *F
24
140
C50 *
F3
7
14
1
D2
4 *F
50
142
D3
7 *G
24
14
3
D5
0 *G
37
144
E2
4 *G
50
14
5
E3
7 *H
24
14
6
E5
0 *H
37
14
7
F2
4 *H
50
14
8
F37 *
I24
14
9
F5
0 *
NO
P
125
NO
P
126
NO
P
12
7
NO
P
12
8
NO
P
12
9
NO
P
13
0
NO
P
13
1
---
A2
5
13
2
---
A3
8
13
3
---
A5
1
13
4
---
B2
5
13
5
---
B3
8
13
6
---
B5
1
13
7
---
C2
5
13
8
---
C3
8
13
9
A2
5 *C
51
14
0
A3
8 *D
25
14
1
A5
1 *D
38
14
2
B2
5 *D
51
14
3
B3
8 *E
25
14
4
B5
1 *E
38
14
5
C2
5 *E
51
14
6
C3
8 *F
25
147
C51 *
F38
148
D25 *
F5
1
14
9
D3
8 *
NO
P
12
5
---
NO
P
126
---
NO
P
12
7
---
NO
P
12
8
---
NO
P
12
9
A1
7
13
0
---
B17
13
1
---
C17
13
2
---
D1
7
133
---
E17
13
4
---
F1
7
135
---
G1
7
13
6
---
H1
7
13
7
A17 *
I17
13
8
B1
7 *J1
7
13
9
C17 *
NO
P
14
0
NO
P
141
NO
P
14
2
NO
P
143
NO
P
14
4
NO
P
14
5
NO
P
146
NO
P
14
7
---
NO
P
14
8
---
NO
P
149
---
H0
5
12
5
C4
8 *H
03
126
D22 *
I05
12
7
D3
5 *I0
3
12
8
D4
8 *J0
5
129
E22 *
J03
13
0
E3
5 *N
OP
131
NO
P
13
2
NO
P
133
NO
P
13
4
NO
P
135
NO
P
13
6
NO
P
13
7
NO
P
13
8
NO
P
13
9
NO
P
14
0
NO
P
141
NO
P
14
2
NO
P
143
NO
P
14
4
NO
P
14
5
NO
P
146
NO
P
14
7
---
NO
P
14
8
---
NO
P
149
---
I59 *
J59 *
H5
9 *G
59 *
F59 *
E5
9 *D
59 *
C5
9 *
E1
6 *F
16 *
G1
6 *H
16 *
I16 *
J16 *
D17 *
E1
7 *F
17 *
G1
7 *H
17 *
I17 *
J17 *
F2
2 *F
35 *
F4
8 *G
22 *
G3
5 *G
48 *
H2
2 *H
35 *
H4
8 *I2
2 *I3
5 *I4
8 *J2
2 *J3
5 *J4
8 *E
48 *
---
I59
12
5
A5
9 *J5
9
126
B59 *
NO
P
12
7
NO
P
12
8
NO
P
12
9
NO
P
130
NO
P
13
1
NO
P
13
2
NO
P
13
3
NO
P
13
4
NO
P
13
5
---
NO
P
13
6
---
NO
P
137
---
NO
P
13
8
---
NO
P
13
9
---
A60
14
0
---
B6
0
141
---
C6
0
142
---
D6
0
14
3
---
E6
0
14
4
---
F60
14
5
---
G6
0
14
6
---
H60
14
7
---
I60
14
8
A6
0 *J6
0
14
9
B6
0 *
C49
125
A2
3 *D
23
12
6
A3
6 *D
36
127
A4
9 *D
49
12
8
B2
3 *E
23
129
B36 *
E3
6
13
0
B4
9 *E
49
131
C23 *
F2
3
13
2
C3
6 *F
36
13
3
C49 *
F4
9
134
D2
3 *G
23
13
5
D3
6 *G
36
13
6
D4
9 *G
49
13
7
E23 *
H2
3
13
8
E3
6 *H
36
13
9
E4
9 *H
49
14
0
F2
3 *I2
3
141
F36 *
I36
14
2
F4
9 *I4
9
143
G23 *
J23
14
4
G3
6 *J3
6
145
G49 *
J49
146
H23 *
A2
6
14
7
H3
6 *A
39
14
8
H4
9 *A
52
149
I23 *
A2
4
12
5
---
A3
7
12
6
---
A5
0
12
7
---
B2
4
12
8
---
B3
7
12
9
---
B50
130
---
C24
13
1
---
C3
7
13
2
A2
4 *C
50
133
A3
7 *D
24
13
4
A5
0 *D
37
135
B2
4 *D
50
13
6
B3
7 *E
24
137
B5
0 *E
37
13
8
C2
4 *E
50
139
C3
7 *F
24
140
C50 *
F3
7
14
1
D2
4 *F
50
142
D3
7 *G
24
14
3
D5
0 *G
37
144
E2
4 *G
50
14
5
E3
7 *H
24
14
6
E5
0 *H
37
14
7
F2
4 *H
50
14
8
F37 *
I24
14
9
F5
0 *
NO
P
125
NO
P
126
NO
P
12
7
NO
P
12
8
NO
P
12
9
NO
P
13
0
NO
P
13
1
---
A2
5
13
2
---
A3
8
13
3
---
A5
1
13
4
---
B2
5
13
5
---
B3
8
13
6
---
B5
1
13
7
---
C2
5
13
8
---
C3
8
13
9
A2
5 *C
51
14
0
A3
8 *D
25
14
1
A5
1 *D
38
14
2
B2
5 *D
51
14
3
B3
8 *E
25
14
4
B5
1 *E
38
14
5
C2
5 *E
51
14
6
C3
8 *F
25
147
C51 *
F38
148
D25 *
F5
1
14
9
D3
8 *
NO
P
12
5
---
NO
P
126
---
NO
P
12
7
---
NO
P
12
8
---
NO
P
12
9
A1
7
13
0
---
B17
13
1
---
C17
13
2
---
D1
7
133
---
E17
13
4
---
F1
7
135
---
G1
7
13
6
---
H1
7
13
7
A17 *
I17
13
8
B1
7 *J1
7
13
9
C17 *
NO
P
14
0
NO
P
141
NO
P
14
2
NO
P
143
NO
P
14
4
NO
P
14
5
NO
P
146
NO
P
14
7
---
NO
P
14
8
---
NO
P
149
---
H0
5
12
5
C4
8 *H
03
126
D22 *
I05
12
7
D3
5 *I0
3
12
8
D4
8 *J0
5
129
E22 *
J03
13
0
E3
5 *N
OP
131
NO
P
13
2
NO
P
133
NO
P
13
4
NO
P
135
NO
P
13
6
NO
P
13
7
NO
P
13
8
NO
P
13
9
NO
P
14
0
NO
P
141
NO
P
14
2
NO
P
143
NO
P
14
4
NO
P
14
5
NO
P
146
NO
P
14
7
---
NO
P
14
8
---
NO
P
149
---
I34 *
I47 *
J21 *
J34 *
J47 *
D02 *
E0
2 *F
02 *
G0
2 *H
02 *
I02 *
J02 *
H15 *
I15 *
J15 *
H5
7 *-*
I57 *-*
J57 *-*
G5
7 *-*
D1
5 *E
15 *
F1
5 *G
15 *
J01 *
A1
3 *B
13 *
C1
3 *D
13 *
E5
8
10
0
A5
8*
F5
7
10
1
B57 *-* F
58
10
2
B5
8
G57
10
3
C5
7 *-* G
58
10
4
C5
8
H57
105
D57 *-* H
58
10
6
D5
8
I57
10
7
E5
7 *-* I5
8
10
8
E5
8
J57
10
9
F5
7 *-* J5
8
11
0
F5
8
NO
P
11
1
NO
P
11
2
G5
8
NO
P
113
NO
P
11
4
H5
8
NO
P
11
5
NO
P
11
6
I58
A5
9
11
7
B5
9
11
8
J58
C5
9
11
9
---
D5
9
120
---
E59
12
1
---
F5
9
122
---
G5
9
123
---
H5
9
12
4
---
NO
P
100
NO
P
10
1
NO
P
102
NO
P
10
3
NO
P
104
NO
P
10
5
---
NO
P
106
---
NO
P
10
7
---
NO
P
108
---
NO
P
10
9
---
NO
P
11
0
---
NO
P
11
1
---
NO
P
112
---
NO
P
11
3
---
NO
P
114
---
NO
P
11
5
---
NO
P
11
6
---
A2
3
11
7
---
A36
118
---
A4
9
11
9
---
B2
3
120
---
B3
6
12
1
---
B4
9
12
2
---
C2
3
12
3
---
C36
12
4
---
NO
P
10
0
---
NO
P
10
1
---
NO
P
10
2
---
NO
P
103
---
NO
P
10
4
---
A02
10
5
---
B0
2
10
6
---
C0
2
10
7
---
D02
10
8
---
E0
2
10
9
---
F02
11
0
---
G0
2
111
---
H02
11
2
A0
2 *I0
2
11
3
B0
2 *J0
2
11
4
C02 *
NO
P
11
5
NO
P
11
6
NO
P
11
7
NO
P
11
8
NO
P
11
9
NO
P
12
0
NO
P
121
NO
P
12
2
---
NO
P
12
3
---
NO
P
12
4
---
NO
P
10
0
---
NO
P
10
1
---
NO
P
10
2
---
NO
P
10
3
---
NO
P
10
4
---
NO
P
10
5
---
NO
P
10
6
---
NO
P
10
7
---
NO
P
10
8
---
NO
P
10
9
---
NO
P
11
0
---
NO
P
11
1
---
NO
P
11
2
---
NO
P
11
3
---
A1
6
11
4
---
B1
6
11
5
---
C1
6
11
6
---
D1
6
117
---
E1
6
11
8
---
F1
6
11
9
---
G1
6
12
0
---
H1
6
12
1
A1
6 *I1
6
12
2
B1
6 *J1
6
123
C16 *
NO
P
12
4
D1
6 *
D0
4
100
---
E04
10
1
---
F0
4
10
2
---
G0
4
10
3
---
H0
4
104
A04 *
I04
10
5
B0
4 *J0
4
106
C0
4 *A
15
10
7
D0
4 *B
15
10
8
E0
4 *C
15
10
9
F0
4 *D
15
11
0
G0
4 *E
15
11
1
H0
4 *F
15
11
2
I04 *
G1
5
11
3
J04 *
H1
5
11
4
A1
5 *I1
5
11
5
B1
5 *J1
5
116
C15 *
NO
P
11
7
NO
P
118
NO
P
11
9
NO
P
120
NO
P
121
NO
P
12
2
NO
P
12
3
NO
P
12
4
---
I22
10
0
D0
1 *I3
5
101
E01 *
I48
10
2
F0
1 *J2
2
10
3
G0
1 *J3
5
104
H01 *
J48
10
5
I01 *
NO
P
106
NO
P
10
7
NO
P
10
8
NO
P
10
9
NO
P
11
0
A05
11
1
E1
3 *A
03
112
F13 *
B05
11
3
G1
3 *B
03
11
4
H1
3 *C
05
11
5
I13 *
C03
11
6
J13 *
D0
5
11
7
A2
2 *D
03
11
8
A3
5 *E
05
11
9
A4
8 *E
03
12
0
B2
2 *F
05
121
B3
5 *F
03
12
2
B4
8 *G
05
12
3
C2
2 *G
03
12
4
C3
5 *
I34 *
I47 *
J21 *
J34 *
J47 *
D02 *
E0
2 *F
02 *
G0
2 *H
02 *
I02 *
J02 *
H15 *
I15 *
J15 *
H5
7 *-*
I57 *-*
J57 *-*
G5
7 *-*
D1
5 *E
15 *
F1
5 *G
15 *
J01 *
A1
3 *B
13 *
C1
3 *D
13 *
E5
8
10
0
A5
8*
F5
7
10
1
B57 *-* F
58
10
2
B5
8
G57
10
3
C5
7 *-* G
58
10
4
C5
8
H57
105
D57 *-* H
58
10
6
D5
8
I57
10
7
E5
7 *-* I5
8
10
8
E5
8
J57
10
9
F5
7 *-* J5
8
11
0
F5
8
NO
P
11
1
NO
P
11
2
G5
8
NO
P
113
NO
P
11
4
H5
8
NO
P
11
5
NO
P
11
6
I58
A5
9
11
7
B5
9
11
8
J58
C5
9
11
9
---
D5
9
120
---
E59
12
1
---
F5
9
122
---
G5
9
123
---
H5
9
12
4
---
NO
P
100
NO
P
10
1
NO
P
102
NO
P
10
3
NO
P
104
NO
P
10
5
---
NO
P
106
---
NO
P
10
7
---
NO
P
108
---
NO
P
10
9
---
NO
P
11
0
---
NO
P
11
1
---
NO
P
112
---
NO
P
11
3
---
NO
P
114
---
NO
P
11
5
---
NO
P
11
6
---
A2
3
11
7
---
A36
118
---
A4
9
11
9
---
B2
3
120
---
B3
6
12
1
---
B4
9
12
2
---
C2
3
12
3
---
C36
12
4
---
NO
P
10
0
---
NO
P
10
1
---
NO
P
10
2
---
NO
P
103
---
NO
P
10
4
---
A02
10
5
---
B0
2
10
6
---
C0
2
10
7
---
D02
10
8
---
E0
2
10
9
---
F02
11
0
---
G0
2
111
---
H02
11
2
A0
2 *I0
2
11
3
B0
2 *J0
2
11
4
C02 *
NO
P
11
5
NO
P
11
6
NO
P
11
7
NO
P
11
8
NO
P
11
9
NO
P
12
0
NO
P
121
NO
P
12
2
---
NO
P
12
3
---
NO
P
12
4
---
NO
P
10
0
---
NO
P
10
1
---
NO
P
10
2
---
NO
P
10
3
---
NO
P
10
4
---
NO
P
10
5
---
NO
P
10
6
---
NO
P
10
7
---
NO
P
10
8
---
NO
P
10
9
---
NO
P
11
0
---
NO
P
11
1
---
NO
P
11
2
---
NO
P
11
3
---
A1
6
11
4
---
B1
6
11
5
---
C1
6
11
6
---
D1
6
117
---
E1
6
11
8
---
F1
6
11
9
---
G1
6
12
0
---
H1
6
12
1
A1
6 *I1
6
12
2
B1
6 *J1
6
123
C16 *
NO
P
12
4
D1
6 *
D0
4
100
---
E04
10
1
---
F0
4
10
2
---
G0
4
10
3
---
H0
4
104
A04 *
I04
10
5
B0
4 *J0
4
106
C0
4 *A
15
10
7
D0
4 *B
15
10
8
E0
4 *C
15
10
9
F0
4 *D
15
11
0
G0
4 *E
15
11
1
H0
4 *F
15
11
2
I04 *
G1
5
11
3
J04 *
H1
5
11
4
A1
5 *I1
5
11
5
B1
5 *J1
5
116
C15 *
NO
P
11
7
NO
P
118
NO
P
11
9
NO
P
120
NO
P
121
NO
P
12
2
NO
P
12
3
NO
P
12
4
---
I22
10
0
D0
1 *I3
5
101
E01 *
I48
10
2
F0
1 *J2
2
10
3
G0
1 *J3
5
104
H01 *
J48
10
5
I01 *
NO
P
106
NO
P
10
7
NO
P
10
8
NO
P
10
9
NO
P
11
0
A05
11
1
E1
3 *A
03
112
F13 *
B05
11
3
G1
3 *B
03
11
4
H1
3 *C
05
11
5
I13 *
C03
11
6
J13 *
D0
5
11
7
A2
2 *D
03
11
8
A3
5 *E
05
11
9
A4
8 *E
03
12
0
B2
2 *F
05
121
B3
5 *F
03
12
2
B4
8 *G
05
12
3
C2
2 *G
03
12
4
C3
5 *
Abb. A1c: Reduziertes Time-Space-Diagramm für alle AEs, Takt 100 bis 149
H6
3
17
5
---
I63
176
A6
3 *J6
3
17
7
B6
3 *A
64
178
C6
3 *B
64
17
9
D63 *
C6
4
18
0
E63 *
D6
4
181
F6
3 *E
64
18
2
G6
3 *F
64
18
3
H6
3 *G
64
18
4
I63 *
H6
4
18
5
J63 *
I64
18
6
SA
V
J64
18
7
SA
V
NO
P
18
8
SA
V
NO
P
18
9
SA
V
NO
P
19
0
SA
V
NO
P
19
1
SA
V
NO
P
19
2
SA
V
NO
P
19
3
SA
V
NO
P
19
4
SA
V
NO
P
19
5
SA
V
NO
P
19
6
---
NO
P
19
7
---
NO
P
19
8
---
NO
P
19
9
---
J39
17
5
SA
V
J52
17
6
SA
V
NO
P
17
7
SA
V
NO
P
17
8
SA
V
NO
P
17
9
SA
V
NO
P
18
0
SA
V
NO
P
18
1
SA
V
NO
P
182
SA
V
NO
P
183
SA
V
NO
P
18
4
SA
V
NO
P
18
5
---
NO
P
186
---
NO
P
187
---
NO
P
188
---
NO
P
18
9
---
NO
P
19
0
---
NO
P
19
1
---
NO
P
192
---
NO
P
19
3
---
NO
P
19
4
---
NO
P
195
---
NO
P
19
6
---
NO
P
19
7
---
NO
P
19
8
---
NO
P
19
9
---
NO
P
17
5
---
NO
P
17
6
---
NO
P
17
7
---
NO
P
17
8
---
NO
P
17
9
---
NO
P
18
0
---
NO
P
18
1
---
NO
P
18
2
---
NO
P
18
3
---
NO
P
18
4
---
NO
P
185
---
NO
P
18
6
---
NO
P
18
7
---
NO
P
18
8
---
NO
P
189
---
NO
P
19
0
---
NO
P
19
1
---
NO
P
19
2
---
NO
P
19
3
---
NO
P
19
4
---
NO
P
19
5
---
NO
P
19
6
---
NO
P
19
7
---
NO
P
198
---
NO
P
199
---
NO
P
17
5
---
NO
P
176
---
NO
P
17
7
---
NO
P
178
---
NO
P
17
9
---
NO
P
180
---
NO
P
18
1
---
NO
P
18
2
---
NO
P
18
3
---
NO
P
18
4
---
NO
P
18
5
---
NO
P
18
6
---
NO
P
18
7
---
NO
P
18
8
---
NO
P
18
9
---
NO
P
19
0
---
NO
P
19
1
---
NO
P
19
2
---
NO
P
19
3
---
NO
P
19
4
---
NO
P
19
5
---
NO
P
19
6
---
NO
P
19
7
---
NO
P
19
8
---
NO
P
19
9
---
F0
6
175
I62 *
G0
6
176
J62 *
H06
17
7
A0
6 *I0
6
17
8
B0
6 *J0
6
17
9
C0
6 *N
OP
18
0
D0
6 *N
OP
18
1
E06 *
NO
P
18
2
F06 *
NO
P
18
3
G06 *
NO
P
184
H0
6 *N
OP
185
I06 *
NO
P
186
J06 *
NO
P
18
7
---
NO
P
18
8
---
NO
P
189
---
NO
P
19
0
---
NO
P
191
---
NO
P
192
---
NO
P
19
3
---
NO
P
194
---
NO
P
195
---
NO
P
196
---
NO
P
19
7
---
NO
P
19
8
---
NO
P
19
9
---
NO
P
17
5
---
NO
P
17
6
---
NO
P
177
---
NO
P
17
8
---
NO
P
179
---
NO
P
18
0
---
NO
P
18
1
---
NO
P
18
2
---
NO
P
18
3
---
NO
P
184
---
NO
P
185
---
NO
P
18
6
---
NO
P
187
---
NO
P
18
8
---
NO
P
18
9
---
NO
P
190
---
NO
P
19
1
---
NO
P
19
2
---
NO
P
19
3
---
NO
P
19
4
---
NO
P
19
5
---
NO
P
196
---
NO
P
19
7
---
NO
P
19
8
---
NO
P
19
9
---
H6
3
17
5
---
I63
176
A6
3 *J6
3
17
7
B6
3 *A
64
178
C6
3 *B
64
17
9
D63 *
C6
4
18
0
E63 *
D6
4
181
F6
3 *E
64
18
2
G6
3 *F
64
18
3
H6
3 *G
64
18
4
I63 *
H6
4
18
5
J63 *
I64
18
6
SA
V
J64
18
7
SA
V
NO
P
18
8
SA
V
NO
P
18
9
SA
V
NO
P
19
0
SA
V
NO
P
19
1
SA
V
NO
P
19
2
SA
V
NO
P
19
3
SA
V
NO
P
19
4
SA
V
NO
P
19
5
SA
V
NO
P
19
6
---
NO
P
19
7
---
NO
P
19
8
---
NO
P
19
9
---
J39
17
5
SA
V
J52
17
6
SA
V
NO
P
17
7
SA
V
NO
P
17
8
SA
V
NO
P
17
9
SA
V
NO
P
18
0
SA
V
NO
P
18
1
SA
V
NO
P
182
SA
V
NO
P
183
SA
V
NO
P
18
4
SA
V
NO
P
18
5
---
NO
P
186
---
NO
P
187
---
NO
P
188
---
NO
P
18
9
---
NO
P
19
0
---
NO
P
19
1
---
NO
P
192
---
NO
P
19
3
---
NO
P
19
4
---
NO
P
195
---
NO
P
19
6
---
NO
P
19
7
---
NO
P
19
8
---
NO
P
19
9
---
NO
P
17
5
---
NO
P
17
6
---
NO
P
17
7
---
NO
P
17
8
---
NO
P
17
9
---
NO
P
18
0
---
NO
P
18
1
---
NO
P
18
2
---
NO
P
18
3
---
NO
P
18
4
---
NO
P
185
---
NO
P
18
6
---
NO
P
18
7
---
NO
P
18
8
---
NO
P
189
---
NO
P
19
0
---
NO
P
19
1
---
NO
P
19
2
---
NO
P
19
3
---
NO
P
19
4
---
NO
P
19
5
---
NO
P
19
6
---
NO
P
19
7
---
NO
P
198
---
NO
P
199
---
NO
P
17
5
---
NO
P
176
---
NO
P
17
7
---
NO
P
178
---
NO
P
17
9
---
NO
P
180
---
NO
P
18
1
---
NO
P
18
2
---
NO
P
18
3
---
NO
P
18
4
---
NO
P
18
5
---
NO
P
18
6
---
NO
P
18
7
---
NO
P
18
8
---
NO
P
18
9
---
NO
P
19
0
---
NO
P
19
1
---
NO
P
19
2
---
NO
P
19
3
---
NO
P
19
4
---
NO
P
19
5
---
NO
P
19
6
---
NO
P
19
7
---
NO
P
19
8
---
NO
P
19
9
---
F0
6
175
I62 *
G0
6
176
J62 *
H06
17
7
A0
6 *I0
6
17
8
B0
6 *J0
6
17
9
C0
6 *N
OP
18
0
D0
6 *N
OP
18
1
E06 *
NO
P
18
2
F06 *
NO
P
18
3
G06 *
NO
P
184
H0
6 *N
OP
185
I06 *
NO
P
186
J06 *
NO
P
18
7
---
NO
P
18
8
---
NO
P
189
---
NO
P
19
0
---
NO
P
191
---
NO
P
192
---
NO
P
19
3
---
NO
P
194
---
NO
P
195
---
NO
P
196
---
NO
P
19
7
---
NO
P
19
8
---
NO
P
19
9
---
NO
P
17
5
---
NO
P
17
6
---
NO
P
177
---
NO
P
17
8
---
NO
P
179
---
NO
P
18
0
---
NO
P
18
1
---
NO
P
18
2
---
NO
P
18
3
---
NO
P
184
---
NO
P
185
---
NO
P
18
6
---
NO
P
187
---
NO
P
18
8
---
NO
P
18
9
---
NO
P
190
---
NO
P
19
1
---
NO
P
19
2
---
NO
P
19
3
---
NO
P
19
4
---
NO
P
19
5
---
NO
P
196
---
NO
P
19
7
---
NO
P
19
8
---
NO
P
19
9
---
B0
5 *-*
C0
5 *-*
D0
5 *-*
E0
5 *-*
F0
5 *-*
G0
5 *-*
H0
5 *-*
I05 *-*
J05 *-*
A0
3A
05 *-*
A6
1
15
0
C6
0 *B
61
15
1
D6
0 *C
61
15
2
E6
0 *D
61
153
F6
0 *E
61
15
4
G60 *
F6
1
15
5
H6
0 *G
61
156
I60 *
H6
1
15
7
J60 *
I61
15
8
A6
1 *J6
1
15
9
B6
1 *N
OP
16
0
C6
1 *N
OP
16
1
D6
1 *N
OP
16
2
E6
1 *N
OP
16
3
F6
1 *N
OP
16
4
G6
1 *N
OP
16
5
H6
1 *N
OP
16
6
I61 *
NO
P
16
7
J61 *
A6
3
16
8
---
B6
3
16
9
---
C6
3
17
0
---
D6
3
17
1
---
E6
3
17
2
---
F6
3
17
3
---
G63
17
4
---
B26
15
0
I36 *
B3
9
151
I49 *
B52
15
2
J23 *
C2
6
15
3
J36 *
C3
9
15
4
J49 *
C52
155
SA
V
D2
6
15
6
SA
V
D39
157
SA
V
D52
158
SA
V
E2
6
15
9
SA
V
E3
9
16
0
SA
V
E52
161
SA
V
F2
6
162
SA
V
F3
9
163
SA
V
F5
2
16
4
SA
V
G26
16
5
SA
V
G39
16
6
SA
V
G5
2
167
SA
V
H2
6
168
SA
V
H39
16
9
SA
V
H5
2
170
SA
V
I26
17
1
SA
V
I39
17
2
SA
V
I52
17
3
SA
V
J26
17
4
SA
V
I37
15
0
D5
1 *I5
0
15
1
G3
7 *J2
4
15
2
G5
0 *J3
7
15
3
H2
4 *J5
0
15
4
H3
7 *N
OP
15
5
H5
0 *N
OP
15
6
I24 *
NO
P
157
I37 *
NO
P
15
8
I50 *
NO
P
159
J24 *
NO
P
160
J37 *
NO
P
16
1
J50 *
NO
P
16
2
---
NO
P
163
---
NO
P
164
---
NO
P
16
5
---
NO
P
16
6
---
NO
P
16
7
---
NO
P
16
8
---
NO
P
16
9
---
NO
P
17
0
---
NO
P
17
1
---
NO
P
17
2
---
NO
P
173
---
NO
P
174
---
G2
5
15
0
D5
1 *G
38
15
1
E2
5 *G
51
15
2
E3
8 *H
25
153
E5
1 *H
38
15
4
F2
5 *H
51
155
F38 *
I25
15
6
F5
1 *I3
8
15
7
G2
5 *I5
1
15
8
G3
8 *J2
5
15
9
G5
1 *J3
8
16
0
H2
5 *J5
1
16
1
H3
8 *N
OP
16
2
H5
1 *N
OP
16
3
I25 *
NO
P
16
4
I38 *
NO
P
16
5
I51 *
NO
P
16
6
J25 *
NO
P
16
7
J38 *
NO
P
16
8
J51 *
NO
P
16
9
---
NO
P
17
0
---
NO
P
17
1
---
NO
P
17
2
---
NO
P
17
3
---
NO
P
17
4
---
NO
P
150
---
NO
P
151
---
NO
P
15
2
---
NO
P
15
3
---
NO
P
15
4
---
NO
P
15
5
---
NO
P
15
6
---
NO
P
15
7
---
NO
P
15
8
---
NO
P
159
---
A6
2
16
0
---
B6
2
161
---
C6
2
16
2
---
D6
2
16
3
---
E6
2
16
4
---
F6
2
16
5
---
G6
2
166
---
H6
2
167
A62 *
I62
16
8
B6
2 *J6
2
16
9
C6
2 *A
06
170
D62 *
B0
6
171
E62 *
C06
17
2
F6
2 *D
06
17
3
G6
2 *E
06
17
4
H6
2 *
NO
P
150
---
NO
P
151
---
NO
P
15
2
NO
P
15
3
NO
P
15
4
NO
P
155
B03
NO
P
156
NO
P
15
7
C0
3
NO
P
15
8
NO
P
159
D03
NO
P
16
0
NO
P
161
E03
NO
P
16
2
NO
P
16
3
F0
3
NO
P
16
4
NO
P
16
5
G0
3
NO
P
166
NO
P
167
H03
NO
P
16
8
NO
P
16
9
I03
NO
P
170
NO
P
171
J03
NO
P
17
2
---
NO
P
17
3
---
NO
P
17
4
---
B0
5 *-*
C0
5 *-*
D0
5 *-*
E0
5 *-*
F0
5 *-*
G0
5 *-*
H0
5 *-*
I05 *-*
J05 *-*
A0
3A
05 *-*
A6
1
15
0
C6
0 *B
61
15
1
D6
0 *C
61
15
2
E6
0 *D
61
153
F6
0 *E
61
15
4
G60 *
F6
1
15
5
H6
0 *G
61
156
I60 *
H6
1
15
7
J60 *
I61
15
8
A6
1 *J6
1
15
9
B6
1 *N
OP
16
0
C6
1 *N
OP
16
1
D6
1 *N
OP
16
2
E6
1 *N
OP
16
3
F6
1 *N
OP
16
4
G6
1 *N
OP
16
5
H6
1 *N
OP
16
6
I61 *
NO
P
16
7
J61 *
A6
3
16
8
---
B6
3
16
9
---
C6
3
17
0
---
D6
3
17
1
---
E6
3
17
2
---
F6
3
17
3
---
G63
17
4
---
B26
15
0
I36 *
B3
9
151
I49 *
B52
15
2
J23 *
C2
6
15
3
J36 *
C3
9
15
4
J49 *
C52
155
SA
V
D2
6
15
6
SA
V
D39
157
SA
V
D52
158
SA
V
E2
6
15
9
SA
V
E3
9
16
0
SA
V
E52
161
SA
V
F2
6
162
SA
V
F3
9
163
SA
V
F5
2
16
4
SA
V
G26
16
5
SA
V
G39
16
6
SA
V
G5
2
167
SA
V
H2
6
168
SA
V
H39
16
9
SA
V
H5
2
170
SA
V
I26
17
1
SA
V
I39
17
2
SA
V
I52
17
3
SA
V
J26
17
4
SA
V
I37
15
0
D5
1 *I5
0
15
1
G3
7 *J2
4
15
2
G5
0 *J3
7
15
3
H2
4 *J5
0
15
4
H3
7 *N
OP
15
5
H5
0 *N
OP
15
6
I24 *
NO
P
157
I37 *
NO
P
15
8
I50 *
NO
P
159
J24 *
NO
P
160
J37 *
NO
P
16
1
J50 *
NO
P
16
2
---
NO
P
163
---
NO
P
164
---
NO
P
16
5
---
NO
P
16
6
---
NO
P
16
7
---
NO
P
16
8
---
NO
P
16
9
---
NO
P
17
0
---
NO
P
17
1
---
NO
P
17
2
---
NO
P
173
---
NO
P
174
---
G2
5
15
0
D5
1 *G
38
15
1
E2
5 *G
51
15
2
E3
8 *H
25
153
E5
1 *H
38
15
4
F2
5 *H
51
155
F38 *
I25
15
6
F5
1 *I3
8
15
7
G2
5 *I5
1
15
8
G3
8 *J2
5
15
9
G5
1 *J3
8
16
0
H2
5 *J5
1
16
1
H3
8 *N
OP
16
2
H5
1 *N
OP
16
3
I25 *
NO
P
16
4
I38 *
NO
P
16
5
I51 *
NO
P
16
6
J25 *
NO
P
16
7
J38 *
NO
P
16
8
J51 *
NO
P
16
9
---
NO
P
17
0
---
NO
P
17
1
---
NO
P
17
2
---
NO
P
17
3
---
NO
P
17
4
---
NO
P
150
---
NO
P
151
---
NO
P
15
2
---
NO
P
15
3
---
NO
P
15
4
---
NO
P
15
5
---
NO
P
15
6
---
NO
P
15
7
---
NO
P
15
8
---
NO
P
159
---
A6
2
16
0
---
B6
2
161
---
C6
2
16
2
---
D6
2
16
3
---
E6
2
16
4
---
F6
2
16
5
---
G6
2
166
---
H6
2
167
A62 *
I62
16
8
B6
2 *J6
2
16
9
C6
2 *A
06
170
D62 *
B0
6
171
E62 *
C06
17
2
F6
2 *D
06
17
3
G6
2 *E
06
17
4
H6
2 *
NO
P
150
---
NO
P
151
---
NO
P
15
2
NO
P
15
3
NO
P
15
4
NO
P
155
B03
NO
P
156
NO
P
15
7
C0
3
NO
P
15
8
NO
P
159
D03
NO
P
16
0
NO
P
161
E03
NO
P
16
2
NO
P
16
3
F0
3
NO
P
16
4
NO
P
16
5
G0
3
NO
P
166
NO
P
167
H03
NO
P
16
8
NO
P
16
9
I03
NO
P
170
NO
P
171
J03
NO
P
17
2
---
NO
P
17
3
---
NO
P
17
4
---
Abb. A1d: Reduziertes Time-Space-Diagramm für alle AEs, Takt 150 bis 199
Recommended