Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

FPGA-Anwendung in der digitalen Bildverarbeitung

Ähnliche Präsentationen


Präsentation zum Thema: "FPGA-Anwendung in der digitalen Bildverarbeitung"—  Präsentation transkript:

1 FPGA-Anwendung in der digitalen Bildverarbeitung
Beitrag aus der HAW Hamburg. Im Hause R. Bosch Stuttgart Feuerbach. Abteilung VT-ATMO EKE21

2 Vorstellung 14000 Studierenden in 27 Studiengängen
13 Fachbereiche der HAW Hamburg; gegr. 1970 14000 Studierenden in 27 Studiengängen 471 Professorinnen und Professoren Fachbereich Elektrotechnik und Informatik, Berliner Tor 3 1.940 Studierende 69 Professoren, 64 Mitarbeiter 5 Studiengänge: Informatik - Technische Informatik - Automatisierungs-, Kommunikations- und Informationstechnik - Information Engineering - Europäischer Studiengang Informationstechnik mit drei Säulen Mikroprozessortechnik: Umstieg vom u. PI/T auf Hitachi H8S Bit µC im März 2003. Entwicklungsumgebung von IAR Embedded Workbench incl. IAR C-Spy Simulator. Schwerpunkt ist hardwarenahe C-Programmierung. Digitaltechnik: Labore mit Xilinx Foundation und ModelSim XE Starter. Siehe folgende. Digitale Signalverarbeitung: Bisher mit Motorola DSP. Umstieg auf TI TMS320C Bit Floating Point DSP. C6701 EVM PCI-Board mit Code Composer Studio. Digitale Schaltungstechnik: IC-Technologien, Chip-Interfacing, AD/DA-Umsetzer, Bussysteme, Messtechnik. Wahlfächer: Echtzeitbetriebssysteme, Bildverarbeitung, C++, Java, Fuzzy Logic mit 68xxx Hardware. ASIC Backend Design.

3 Schwerpunkte in der Digitaltechnik-Ausbildung Hardware-Plattformen
Inhalt Schwerpunkte in der Digitaltechnik-Ausbildung Hardware-Plattformen Ziele der Hardware-Anwendungen Entwurfsbeispiele aus Projekten und Diplomarbeiten Implementierung einer Laplace-Filterung Nachbarschaftsoperationen - Pixeladressierung Datenpfad mit Pipelining Timing-Schema der Laplace-Pipeline Steuerautomat Implementierungskennwerte Blitzlicht zu Entwicklungsergebnissen: Grauwertäqualisation – Kantenverstärkung

4 Digitaltechnik Ausbildung
Entwurf digitaler Funktionsblöcke als Prozessorelement Pipelining der Arithmetikstufen Resource Sharing mit Übertaktung Modellierung mit synthesefähigem VHDL-Code Implementierung mit Xilinx CPLDs und FPGAs Verifikation mit Backannotation-Simulation Messtechnische Analyse an den Hardware-Schnittstellen Ergebnisvergleich mit Matlab-Referenzen Prozessorelement: Datenpfad und Steuerpfad Sichere Automaten mit „recovery from unused states“. Entwurfsziele: Taktfrequenz und Hardware-Ressourcen Trade off erkennen und beherrschen. RTL Beschreibung mit VHDL. D-FF Bilanz, Gleichungsanalyse aus dem Fitting-Report, HW-Ressourcen-Bedarf bewerten. Backannotation Simulation auf Basis von SDF-Files mit wiederverwendbaren Testbenches. Oszilloskop, Logikanalysator und Frequenzanalyse für Filteranwendungen. Vergleichsrechnungen zur Festkommaarithmetik.

5 Hardware-Plattformen
XS95/XS40 XST-1 LPT µC8032 32 kB SRAM 95108/ 4010XL Codec 20 Bit IPU 1 512 kB SRAM PAL22V10 4013E ISA IPU 2 MicroEnable PCI 4044XLA 2 MB SRAM CCD-Interface DSP Katana LPT/PCI 2 MB SRAM Codec 12 Bit Virtex 300 XS-Boards für den Laborbetrieb: Einzelversuche und Projekte. XC Gatter Äquiv. XC4010XL mit 400 CLBs hat Gatter Äquiv. Und 1120 D-FFs. Codec von Asahi Kasei AK4520A mit 64 Bit synchronem Protokoll für zwei Kanäle und 20 KHz Grenzfrequenz. IPU-1 Image Processing Unit Eigenentwicklung: 576 CLBs, Gatter Äqui., 1536 D-FF. 8-Bit ISA Interface. IPU-2 MicroEnable von Silicon SW Uni Mannheim: XC4044XLA 1600 CLBs, 3840 D-FF, Gatter Äquivalente. 32-Bit PCI Interface mit C-Treiber SW und vorsynthetisiertem Schnittstellen Rahmen. CCD-Kamera Interface (LVDS) mit Baseler Zeilenkamera L120-1k (1024 Pixel). Pixel 10x10µm; Sensorfläche 10,24x0,01 mm. Übersicht zu IPU-Boards vgl. TEBE2000.pdf. DSP Katana: Ziel-Anwendung ist ein Echokompensator mit adaptivem FIR-Filter XCV-300 Virtex mit 1536 CLBs = 3072 Slices a 2 D-FF, 6144 D-FFs 128kB und 2 MB SRAM. Audio Codec UCB1200 mit 2x64 Bit synchronem Protokoll incl. Funktionssteuerbits für interne Codec-Register. Interfaces für weitere Bedienelemente.

6 Ziele der Hardware-Anwendungen
Ausbildungsstufen vom 2. Semester bis zum 2. Jahr der Masterkurse werden mit zunehmender Hardware-Komplexität unterstützt. Zu implementierende Funktionen basieren auf Inhalten von Lehrveranstaltungen: Nachrichtentechnik, Signalverarbeitung, Bildverarbeitung, Datenübertragung, Mathematisch basierte Themen werden in praxisnahen Anwendungen vertieft. Hardware-Bezug betont elektrotechnische Aspekte. Messtechnik wird mit analytischer Vorhersage gekoppelt.

7 UART-Interface: CPLD  µC8032  Terminal
Entwurfsbeispiele  UART-Interface: CPLD  µC8032  Terminal  CISC- u. RISC-Prozessor-Modelle  Bildverarbeitung: Kontrastverstärkung Rauschunterdrückung - Kantenverstärkung Segmentierung  Signalverarbeitung:Audio-Codec-Interface FIR-Filter Implementierungsvarianten Quellen- und Kanalcodierung: Huffman-Decoder Viterbi-Decoder mit Traceback UART: 10 Bit Übertragung; Serielle Schnittstelle des 8051 µC nachempfunden. Dreifachabtastung der einzelnen Bits und Majoritätsentscheidung. RISC-Modell: Load/Store Architektur. Operationen nur mit Registerinhalten (8 Register a 1 Byte). Fünfstufige Pipeline (fetch, decode, fetch operands, execute, store result). 5 Pipeline Register. 16 Bit Datenbus, 11 Bit Adressbus. Datenworte 8 Bit, Befehle 16 Bit. Bildverarbeitung: Für die Anwendung wie die Objektvermessung werden scharfe und geschlossene Objektkanten benötigt, um das Objekt vom Hintergrund zu trennen. Die Kantenverstärkung mit dem Laplace-Operator, der die 2te-Ableitung in x- und y-Richtung bildet, ist deshalb ein wesentlicher Schritt in der Bildverarbeitungskette. Nach einer Schwellwertoperation, die den Übergang in die Schwarz/Weiß-Darstellung realisiert, können dann die Binäroperationen Opening/Closing zur Segmentierung angewandt werden. Damit wird ein Schließen von Objektkanten und eine Elimination von Kantenausbuchtungen erreicht, sodass Flächen- Umfangs- und Schwerpunktberechnung der Objekt präziser durchgeführt werden können. Signalverarbeitung: Als erste praktische Anwendung ist für die Audiosignalverarbeitung ein Zugang zu analogen Signalen erforderlich. Die Codecs der Boards XST-1/XS40 und DSP Katana sind jeweils mit einem synchronen Schnittstellenmodul in die jeweilige Top-Entity der FPGA-Anwendung eingebunden worden. Mit FIR-Filter Struktur-Implementierungsvarianten konnte aus der Zielsicht für die Taktfrequenz, die Bearbeitungszeit und den Ressourcenverbrauch die jeweils geeigneten VHDL-Templates erarbeitet werden. Verglichen wurden für linearphasige Filter die direkte Form, die transponierte Form und eine Ressource-Sharing Variante mit nur einer MAC-Einheit, die durch Übertaktung (2. Taktfrequenz) sequentiell für alle Filterstufen genutzt wird. Quellen- und Kanalcodierung: FPGAs und ASICs finden insbesondere auch in den Bereichen der Nachrichtentechnik ihren Einsatz, in denen dedizierte Algorithmen mit wenigen Fall- oder Entscheidungsvarianten einen kontinuierlichen Datenstrom zu verarbeiten haben. Ein synthesefähiger Huffman-Decoder wurde bis hin zur Backannotation Simulation entwickelt. Der Schwerpunkt der Lösung liegt in einem Verfahren, dass Codewörter mit höherer Wahrscheinlichkeit (90% der Decodiervorgänge) innerhalb des Codealphabetes mit lediglich einem Takt decodiert und nur für Exoten aus dem Alphabet mehrere Decodierschritte benötigt. Die Virtex-FPGA-Implementierung realisiert eine Adressierungstechnik mit RAM basierten LUTs (Look-Up-Tabellen). Die Codewörter werden dabei als Adressen der Decodier-LUTs eingesetzt. Viterbi-Decoder sind wesentliche Elemente zur Fehlersicherung und –korrektur in Mobilfunk-Übertragungssystemen. Die Auswertung codierter Codewörter durch den Empfänger mit einem Trellisdiagramm enthält Komparatorstrukturen und Ergebnisspeicher, die mit VHDL direkt in HW umgesetzt werden können. Für das Speichern der Bit-Prüfergebnisse wurde auch hier ein RAM basiertes LUT-Verfahren eingesetzt, das die Rekonstruktion des ursprünglichen Codewortes mit dem Tracebackverfahren parallel zum Empfang eines neuen Codewortes unterstützt.

8 FPGA-Prozessor ALGORITHMUS: Nachbarschafts-operationen/ Transformations- LUTs FSM-Controller RAMCOM: Multiplexer mit Tristate-Treibern Der FPGA- Prozessor (vgl. S. 4) ist für die Bildverarbeitungsanwendungen der IPU-2 Hardware entwickelt worden. Je nach spezieller Anwendung muss nur der Algorithmusblock modifiziert werden, der den Datenpfad und den steuernden Zustandsautomaten enthält. Die restlichen Infrastruktur-Blöcke können bis auf eine ggf. geänderte Parametrisierung unverändert bleiben. Nachbarschaftsoperationen sind solche Berechnungen, die aus den allen Pixeln einer Pixelumgebung mit einem strukturierenden Element, der (3x3)-Gewichtungsmatrix, ein neues Zielpixel für die Mitte des quadratischen Pixelfeldes berechnen. Für Pixel-Transformationen mit Look-Up-Tabellen werden die FPGA internen RAM-Ressourcen genutzt, die einmal als verteilte Speicher mit den CLBs gebildet werden können oder über die separaten RAM-Blöcke der Virtex-FPGAs verfügbar sind. Durch die Implementierung von Adress- und Datenleitungs-Multiplexern auf Basis von Busleitungen mit selektiv angesteuerten Tri-State-Treibern lassen sich die üblichen mehrstufigen UND-ODER-Realisierungen umgehen. Damit bleiben die Logik-Ressourcen wie CLBs und LEs geschont und die ohnehin vorhandenen Tri-State-Treiber in der Umgebung der Logikelemente kommen zum Einsatz. Die vermiedenen Logikketten führen insbesondere bei breiten Bussen (< 8 Bit) als Nebenprodukt zu kürzeren Signallaufzeiten.

9 Grauwertäqualisation
Schwarz Grau Weiß Schwarz Grau Weiß Das linke Bild zeigt ein Grauwerthistogramm eines Bildes mit 360x360 = Pixeln, das weder reine Schwarz- noch Weißanteile enthält, sondern hauptsächlich Grauanteile. Der damit verbundene schlechte Kontrast führt zu einer geringen Konturendeutlichkeit des Objektes. Eine Kontrastanreicherung des Bildes ergibt sich durch eine gleichmäßigere Grauwertverteilung, wie sie das rechte Histogramm als Ergebnis einer Grauwerttransformation zeigt. Die Form des ursprünglichen Histogramms bleibt dabei erhalten, allerdings liegt eine Häufigkeitsverteilung der Grauwertpixel über den gesamten 8 Bit Grauwertbereich (0 – 255) vor. Da die einzelnen Häufigkeitssäulen in der Anzahl nicht verändert werden, entstehen auf der Grauwertachse Lücken zwischen den Säulen.

10 Kontrastverstärkung Das Ursprungsbild mit dominierender Grauwerthäufigkeit ist links dargestellt. Durch die Transformation treten im rechten Bild die Konturen präziser hervor, da mit Schwarz-Weiß-Übergängen deutlichere Kanten erzeugt werden.

11 Transformationskennlinie Ergebnis
Die Pixel-Transformationskennlinie y(x) (Grauwert x  Grauwert y) wird aus dem Integral des Histogramms über der Grauwertachse entwickelt. Die einzelnen Kennlinienwerte y ergeben sich durch Summation aller Häufigkeiten bis einschließlich des jeweiligen Grauwertes x. Der Faktor 1/C = 1/(Pixelanzahl/Anzahl der Graustufen) normiert und skaliert die Kennlinie. Im realisierten Beispiel ist die Division mit dem Faktor C= 506,25 durch eine Schiebeoperation um 9 Bits nach rechts implementiert worden. Das rechte Diagramm zeigt das integrierte Histogramm des Ergebnisbildes (vgl. S. 8 rechts). Eine konstante Steigung des Integrationsergebnis zeigt, dass das Ergebnishistogramm eine konstante Grauwertverteilung aufweist, d.h. alle grauwerte treten gleich häufig auf. Die breiteren Stufen im Integrationsergebnis entstehen durch die Lücken zwischen den Häufigkeitssäulen.

12 Median-Filterung Rangordnungsfilter: Die 9 Elemente einer 3x3-Pixelmatrix werden auf den „mittleren“ Wert einer Größenrangfolge hin durchsucht, der dann anstelle des Pixels in der Mitte der Matrix als Ergebnispixel abgespeichert wird. . Extrem kleine und große Werte wie die schwarzen und weißen Pixel eines Salz und Pfeffer Rauschens werden somit vollständig eliminiert. Diese nichtlineare Tiefpassfilterung hat eine geringere Kantenverschlechterung zur Folge als typische Tiefpassfilter, die eine unvermeidbare Mittelwertbildung über alle Pixel einer 3x3-Nachbarschaft erzeugen. Das Medianfilter sortiert Störungen aus, ohne die anderen Elemente zu verändern.

13 Laplace-Filterung Dieses Kantenverstärkungsfilter bildet auf Basis einer Nachbarschaftsoperation neue Pixel O gemäß: O = I – Laplace-Operator(I) = I – I“. D. h. vom Originalbild I wird die zweite Ableitung I“ abgezogen. Das Originalbild ist in diesem Beispiel das Ergebnis der Medianfilterung. Die zweite Ableitung wird gebildet, damit bei einem Grauwertübergang (z. B. dunkel  hell Kante in X-Richtung) die Kante so betont wird, dass jeweils die Tendenz der Grauwerte links und rechts der Kante verstärkt wird (dunkler  heller). Eine erste Ableitung würde nur einen Grauwertbereich unterstützen. Glättungseffekte durch die Medianfilterung hebt die Laplace-Filterung deutlich wieder auf.

14 Implementierung einer Laplace-Filterung
Lokale Nachbarschaftsoperationen Pixeladressierung Datenpfad mit Pipelining Timing-Schema der Laplace-Pipeline Steuerautomat Implementierungskennwerte

15 Lokale Nachbarschaftsoperationen
Strukturierendes Element: Laplace-Operator 1 m 2 3 4 Eingangsbild 5 6 I 7 m,n 1 4 - = L1 M11 M12 M13 Strukturelement M21 M22 M23 M31 M32 M33 S n Die Nachbarschaftsoperation besteht darin, dass die Pixel eines quadratischen Bildausschnittes wie dargestellt mit den Gewichtungsfaktoren Mm,n des strukturierenden Elementes multipliziert werden und in einer Summe zum neuen Ergebnispixel zusammengefasst werden. Beim Laplace-Filter kommt hinzu, dass zusätzlich die Differenz mit dem Originalpixel zu bilden ist. Die Anwendung des Laplace-Operators ist dadurch gekennzeichnet, das zum einen eine mittlere Spalte (M12, M22,M32) auszuwerten ist und zum anderen zwei Elemente einer mittleren Zeile (M21, M23) zu bestimmen sind, die dann in die Gesamtsumme I“ eingehen, die wiederum vom Originalpixel I abgezogen wird. Om,n = I m,n - I‘‘ m,n 1 m 2 3 4 Ergebnisbild 5 6 7 O m,n

16 Pixeladressierung in 4 SRAM-Blöcken
Der FPGA-Prozessor (vgl. S. 7 u. 4) ist mit einem externen SRAM gekoppelt, dass physikalisch in 4 gleich große Blöcke aufgeteilt ist. Der 32-Bit breite externe Datenbus und die Organisation von .BMP Files unterstützt die dargestellte Reihenfolge der Pixelspeicherung. Die C-Treibersoftware, die den File-Transfer vom PC über den PCI-Bus durch das FPGA ins SRAM übernimmt, erzeugt im Burstmodus die Adressierung der SRAM-Blöcke, sodass die 4-Byte Scheiben abgelegt oder gelesen werden. Für das Auffüllen der 3x3 Pixelmatrix ist ein spaltenweises Hinzufügen von jeweils drei Pixeln erforderlich. Mit jeder neuen Spalte kann eine nächste Berechnung erfolgen. Dadurch ergibt sich die dargestellte Pixeladressierung, bei der jeweils in einem SRAM-Block auf drei Speicherplätze zugegriffen werden muss. Dies bedeutet, dass kein paralleler Zugriff auf drei Bytes erfolgen kann, sondern drei Bytes sequentiell einzulesen sind. Der Multiplexer im Modul RAMCOM steuert den 8-Bit Eingangspfad zum Bildverarbeitungs-algorithmus, der wiederum über einen Demultiplexer drei parallele Synchronisationsregister(P13, P23, P33 S. 17 u. 18) auffüllt. Mit jedem Zeilenwechsel der wandernden 3x3 Pixelmatrix, der am rechten Bildrand auftritt, müssen alle 9 Pixel spaltenweise neu eingelesen werden.

17 Laplace-Filter ohne Pipelining
Diese Arithmetikübersicht stellt die Additionen und Multiplikationen für ein voll besetztes strukturierendes Element dar. Hier ist noch die gleichzeitige Verfügbarkeit von allen 9 gelesenen Pixeln angenommen. Die fett angegebenen Mm,n Faktoren gelten für den Laplace-Operator. Die Multiplikationen reduzieren sich auf eine Schiebeoperation für den Faktor –4 = M22. Die Summenbildung ist als Addierer-Kaskade dargestellt, damit eine Auftrennung der Logiklaufzeitpfade durch Pipeliningregister naheliegt. Die drei mittleren Multiplikationen (M23, M22, M21) beschreiben die Berechnung der mittleren Spalte (vgl. S. 14). Der äußerst linke (M12) und der rechte Pfad (M32) verknüpfen die Pixel aus der mittleren Zeile.

18 Laplace-Filter mit Pipelining (1)
Diese Struktur berücksichtigt nun die sequentielle Spaltensicht (vgl. S. 16) und eine erste Entkopplung von Logikblöcken durch Pipeliningregister Z. Die Pixelspalten kann man sich von links in den Bereich des strukturierenden Elementes M (vgl. 14) hingeschoben denken. Über das Synchronisationsregister P13 strömen die Pixel der obersten Zeile ein. P23 speist die mittlere Zeile und P33 die untere Zeile. Diese Spaltenpfade sind nur mit den Gewichtungen Mm,n verknüpft, mit denen sie in Berührung kommen müssen. Wenn nun die ersten drei Spalten eingetaktet worden sind, dann ist das Pixel P23 in Z3c und P21 in Z1 gespeichert, sodass die mittlere Zeile über die Addierer ausgewertet wird. Nach diesen drei Takten enthält das Register Z2b die Verknüpfung der Pixel aus der mittleren Spalte. Die Verknüpfungen der ersten Spalte waren ohne Interesse, sodass sie herausgeschoben wurde. Mit dem Addiererausgang RESULT liegt nach den drei Takten ein erstes Ergebnis I“ des Laplace-Operators vor. Mit jeder weiteren eingetakteten Spalte unterstützen die Registerinhalte Z3c, Z2b und Z1 eine komplette Auswertung RESULT = I“ von 9 Pixeln, da die Registerketten vorherige Teilergebnisse bereithalten. Sobald die Pipeline gefüllt ist, können also mit jeder Spaltenaktualisierung neue Berechnungsergebnisse abgeholt werden. Pipelining des Datenpfades: Höhere Taktfrequenz aufgrund kürzerer Logikpfade. Wie im Fließband werden zur Weiterverarbeitung Teilergebnisse vorgehalten. Da im Fall des Laplace-Operators M23 = M21 = 1 gilt, sind in den Registern Z3 und Z1 die gleichen Werte gespeichert, sodass ein Register Z31 ausreicht. Der Ausgang von Z31 muss allerdings über einen Abgriff einem Addierer zugeführt werden.

19 Laplace-Filter mit vollständigem Pipelining (2)
Diese Struktur realisiert das vollständige Laplace-Filter O = I – I“ und alle Arithmetikblöcke sind durch Pipeliningregister getrennt. Die grünen Register übernehmen die Trennfunktion und die grauen dienen dem Laufzeitausgleich, der für symmetrische Sequenzen erforderlich ist. Der linke Pfad bildet die Auswertung für die mittlere Spalte (Z2, Z2b). Die dreier Kette liefert die die mittlere Zeile (Z31, Z3b, Z3c). Der Abgriff des Registers Z3b speist jeweils das zentrale Element P22 der Pixelmatrix ein, das für die Differenz I – I“ des Laplace-Filter benötigt wird. Das Ausgangsschaltnetz hinter dem Register REG 8 begrenzt die Filterergebnisse auf den positiven Wertebereich, der durch das .BMP Fileformat gefordert ist. An den Arithmetikblöcken ist jeweils die bitweise Vektorerweiterung angegeben, die für die realisierte 2er-Komplementberechnung auf Basis des VHDL-Datentyps signed notwendig ist. Die Abläufe sind durch das Taktschema der Register-Enableeingänge READ_DATA und EN_REG bestimmt: Während drei Takte werden die Register P13, P33 und P23 gesteuert von SEL[1:0] und READ_DATA mit Pixeln gefüllt. Danach wird dann EN_REG für einen Takt aktiviert und die Pipeline einen Schritt vorangetrieben. Es sind also minimal 4 Takte für ein neues Ergebnis erforderlich: Latenz = 4 Takte Ein optimiertes Pixelspeicherschema, das einen parallelen Pixelzugriff unterstützt, kann also erheblich zu Latenzverkürzung beitragen.

20 Timing-Schema der Laplace-Pipeline
Für ein Bildschema mit 6x16 Pixeln sind die Schritte der Bildverarbeitung mit dem Verhalten der Datenpfadpipeline in ihren groben Eckwerten dargestellt. Viermal 16 Spalten sind insgesamt einzulesen und während des Anlaufens der Pipeline sowie bei den dreimal auftretenden Zeilenwechsel dürfen keine Pixel als Zielpixel gespeichert werden, da die achte Registerstufe REG 9 der Pipeline kein korrektes Endergebnis enthält und die beiden davor liegenden Stufen keine vorbereiteten Teilergebnisse enthalten. Nach jedem Zeilenwechsel wird die wandernde Pixelmatrix um eine Zeile nach unten verschoben und liest eine neue erste Spalte ein. Zur Überwachung dieses Zeilenwechsels enthalten die Algorithmen der Nachbarschaftsoperationen einen zusätzlichen Spaltenzähler (column_counter), der mit jedem neuen Auffüllzustand der Synchronisationsregister Pi,j inkrementiert wird und entsprechend der Bildbreite einen automatischen Neustart vollzieht. Dessen Zählerstände sind dem Pipeliningschema mit den über der Zeit aufgetragenen Registerzuständen gegenübergestellt (space-time diagram). In die Felder der Registerebenen ist die Nummer der Spalte aus dem Bildschema eingetragen, die eingetaktet wurde. Anlaufverhalten: Mit dem Spaltenzählerstand 8 ist die Pipeline erstmalig gefüllt und das erste Ergebnispixel darf gespeichert werden. Normalbetrieb: Es liegt mit jeder eingelesenen Spalte in der 8. Ebene ein aktuelles Ergebnis vor, das an die Stelle des zentralen Pixels, der von der wandernden Maske umrandeten Fläche geschrieben wird (2. Bildspeicherhälfte des SRAM). Zeilenwechsel: Der Reihenwechsel wird am Pipelineausgang erst nach einer Verzögerung wirksam, wenn in den letzten drei Registerebenen (8, 7, 6) Spaltenelemente enthalten sind, die nicht zu einem zusammengehörenden 3x3 Block gehören. Dies ist mit den Spaltenzählerständen 6 und 7 der Fall. Dem Steuerautomaten zeigt der Spaltenzähler dies mit dem Signal ROW_BEGIN an, sodass der Automat zur weiteren Pixeladressierung verzweigt und nicht zum Speichervorgang (vgl. S. 20). Zur Vereinfachung der Nummerierung des Pipeliningschemas ist in dieser Darstellung von nur einem einzigen Zeilenwechsel ausgegangen worden, der die Matrix gleich um drei Zeilen springen lässt. Leerlaufen: Sobald die letzte Spalte eines Bildes (hier 32) in die erste Pipelineebene eingetaktet wurde, beginnt das Leerlaufen der Registerebenen. Es sind hier nur die letzten drei Pipelineschritte dieses Vorgangs dargestellt, bei dem jeweils gespeichert wird und die eingelesenen Werte keine Bedeutung mehr haben.

21 Zustandsdiagramm des Steuerautomaten
Das Zustandsdiagramm beschreibt einen Moore-Automaten mit fünf Eingangsbits und mit 11 Ausgängen (13 Bit). Der Moore-Typ wurde gewählt, um die Steuergrößen mit jedem Zustandswechsel für eine Taktperiode in den Datenpfad einzuspeisen, ohne dass Eingangspegel einen unmittelbaren Durchgriff haben. Damit wird weiterhin verhindert, dass sich kombinatorische Schleifen mit den Statusrückmeldungen des Datenpfades ergeben. Die Zustandscodierung wurde mit der one-hot Codierung realisiert, die jedem Zustand genau ein Zustandsspeicherflipflop zuordnet. Im Vergleich zu Varianten von binären Codierungen liefert diese Codierungsart geringer stufige Übergangsschaltnetze, sodass die Signallaufzeiten dieser Logikpfade nicht zur Begrenzung der maximal realisierbaren Taktfrequenz führen. Eine Zustandsminimierung hat hier keine Priorität, da der Automat mit 28 Zuständen weniger als 5% der gesamten Hardware-Ressourcen beansprucht. Das Zustandsdiagramm beschreibt die Steuerung der Algorithmussequenz, die aus der Reihenfolge Median-/ Laplace-Filterung besteht. Die Zustände mit der grünen Kennzeichnung steuern das Anlaufen der Pipeline und werden im Fall der Laplace-Filterung sechsmal in einer Schleife durchlaufen, sodass nach dem 7. Durchgang der Übergang zu den grau markierten Zuständen erfolgt (fstep = 1), die den Normalbetrieb und den Zeilenwechsel realisieren. Eingeleitet durch den Zustand READREGS findet das Eintakten der Registerinhalte (P13, P33, P23) in die Pipeline statt. Die vorausgehenden Zustände steuern die Pixeladressierung und die Freigabe der Synchronisationsregister (P13, P33, P23). Die Anzahl dieser Zustände A0 – D2 ist größer als 3 (vgl. S. 18), da die synchrone SRAM-Schnittstelle mit zwei wait-states arbeitet und eine zusätzliche Steuerpfad/Datenpfad-Entkopplung (Pipelining) realisiert wurde. Im grau markierten Bereich ist die gleiche Zustandskette realisiert wie im Anlaufbereich. Hinzu gekommen sind die Zustände PIXWRITE und WD, damit nach jedem Pipelineschritt Ergebnispixel in das externe SRAM abgespeichert werden, sofern kein Zeilenwechsel stattfindet. Die Differenz zwischen der Leseadresse und der Adresse für die zu schreibenden Zielpixel, die tief in der Pipeline enthalten sind, wird durch Offsets zum Adresszählerstand realisiert. Über die Wahl des Endekriterium P_END ist das Auslaufen der Pipeline in den Zustandszyklus des Normalbetriebes mit integriert. Im Zustand ALGO2 erfolgt die Entscheidung, ob der erste Algorithmus oder der zweite abgeschlossen wurde.

22 Implementierungskennwerte
Gesamtsystem Verarbeitungs-takte pro Bild maximale Betriebsfrequenz maximale Datenpfadfreq. (Median) Verarbeitungszeit pro Bild Median 8 stufig 32 MHz 40,5 MHz 63,9 ms Median/Laplace 10/8 stufig 43,4 MHz 54.7 MHz 70.7 ms Differenz relativ +49,97 % +35,41 % +35,06% +10,64% Gesamtsystem Anzahl der Flip Flops Gatter -Äquivalente Implementierungs- zeit mit F2.1i Median 8 stufig 354 6973 ca. 46 Min. Median/Laplace 10/8stufig 775 11007 ca. 12 Min. Die Implementierungskennwerte stellen die Ergebnisse des beschriebenen Systems denen einer Vorläufervariante gegenüber, die nur einen Algorithmus (Median) mit einer geringer stufigen Pipeline enthält. In beiden Fällen ist die maximal realisierbare Taktfrequenz nicht durch den Datenpfad vorgegeben, sondern durch die Verknüpfung des Adresszählers mit der synchronen SRAM-Schnittstelle. Demnach ist das Datenpfadpipelining optimaler realisiert als die Entkopplung der Steuerpfadelemente. Eine weiteres Pipelining im Steuerpfad ist jedoch nicht sinnvoll, da jede Verzögerung im Steuerpfad verspätete Reaktionen aus den angeschlossenen Komponenten bewirkt, sodass der Steuerautomat entsprechende zyklische Zustände (quasi wait states) enthalten muss. Je länger aber die Zustandsketten werden (vgl. S.20 grüne u. graue Schleife), umso größer wird die Zahl der Takte, die für einen letztlich interessierenden Ergebnisschreibvorgang aufzubringen ist. Anders als beim Datenpfadpipelining schlägt sich dies direkt in der Verarbeitungszeit nieder. Eine verlängerte Pipelineanlaufzeit fällt im Allgemeinen bei der insgesamt großen Zahl von zu bearbeitenden Pixeln nur gering ins Gewicht. Deshalb konnten auch mit reduziertem Steuerpfadpipelining und folgedessen geringerer Taktfrequenz kürzere Verarbeitungszeiten erreicht werden. Die Implementierungszeit des Place and Route Werkzeuges Xilinx Foundation F2.1i wurde insbesondere durch das Datenpfadpipelining deutlich verringert, obwohl 50 % mehr Logik und 100% mehr Flipflops zu platzieren und zu verbinden waren. Ursache dafür ist die reduzierte Logikstufenanzahl, sodass ein Logikblock (z. B. Addierer) auf weniger CLBs zu platzieren ist, was gleichzeitig den zeitkritischen Verdrahtungsaufwand zwischen zwei Flipflops mindert. Die weiteren Arbeitsschritte sind auf Modifikationenen zur Echtzeitfähigkeit der Algorithmen ausgerichtet, d.h. 25 Bilder pro Sekunde müssen bearbeitet werden, um einen typischen CCD-Kamera Bildstrom verarbeiten zu können. Die Verarbeitungszeit der Algorithmussequenz kann insbesondere durch schnellere Pixel-Lesevorgänge mit paralleler Aufnahme von drei Pixeln verringert werden. Dazu ist ein geschicktes Abspeichermuster zu entwickeln, das andererseits die Bildspeichertransfers zum und vom PC nicht verschlechtert.


Herunterladen ppt "FPGA-Anwendung in der digitalen Bildverarbeitung"

Ähnliche Präsentationen


Google-Anzeigen