Home Neuigkeit Die Coprozessor-Architektur: Eine eingebettete Systemarchitektur zum Erstellen von ...

Die Coprozessorarchitektur: Eine eingebettete Systemarchitektur für Rapid Prototyping

Digikey
Digikey

Von Noah Madinger, Colorado Electronic Product Design (CEPD)

Obwohl die Coprozessorarchitektur für ihren Durchsatz und ihre digitale Verarbeitungsleistung bekannt ist, bietet sie dem Entwickler eingebetteter Systeme Möglichkeiten, Projektmanagementstrategien anzuwenden, die sowohl die Entwicklungskosten als auch die Markteinführungszeit verbessern. Dieser Artikel konzentriert sich speziell auf die Kombination eines diskreten Mikrocontrollers (MCU) und eines diskreten feldprogrammierbaren Gate-Arrays (FPGA) und zeigt, wie sich diese Architektur für einen effizienten und iterativen Designprozess eignet. Anhand von Forschungsquellen, empirischen Ergebnissen und Fallstudien werden die Vorteile dieser Architektur untersucht und beispielhafte Anwendungen angeboten. Nach Abschluss dieses Artikels wird der Entwickler von eingebetteten Systemen besser verstehen, wann und wie diese vielseitige Hardwarearchitektur zu implementieren ist.

Einführung

Der Entwickler eingebetteter Systeme befindet sich an einem Knotenpunkt von Designbeschränkungen, Leistungserwartungen sowie Budget- und Zeitplanproblemen. Tatsächlich unterstreichen sogar die Widersprüche in den Schlagworten und Phrasen des modernen Projektmanagements die prekäre Natur dieser Rolle: „fail fast“; "sei agil"; „zukunftssicher“ und „sei disruptiv“. Die Akrobatik, die mit dem Versuch verbunden ist, diese Erwartungen auch nur zu erfüllen, kann herzzerreißend sein, und doch wurde darüber gesprochen und wird auf dem Markt weiterhin verstärkt. Was benötigt wird, ist ein Designansatz, der es ermöglicht, einen evolutionären iterativen Prozess zu implementieren, der wie bei den meisten eingebetteten Systemen mit der Hardwarearchitektur beginnt.

Als Hardwarearchitektur, die dafür bekannt ist, die Stärken von Mikrocontrollereinheiten (MCU) und feldprogrammierbaren Gate-Array-Technologien (FPGA) zu kombinieren, kann die Coprozessorarchitektur dem Entwickler eingebetteter Systeme einen Prozess bieten, der in der Lage ist, selbst die anspruchsvollsten Anforderungen zu erfüllen und gleichzeitig die nötige Flexibilität zu bieten bekannte und unbekannte Herausforderungen. Durch die Bereitstellung von Hardware, die sich iterativ anpassen kann, kann der Designer Fortschritte demonstrieren, kritische Meilensteine ​​erreichen und das Beste aus dem Rapid-Prototyping-Prozess herausholen.

Innerhalb dieses Prozesses gibt es wichtige Projektmeilensteine, von denen jeder seinen eigenen Mehrwert für die Entwicklungsanstrengungen hat. In diesem Artikel werden sie mit den folgenden Begriffen bezeichnet: Der Meilenstein von Digitale Signalverarbeitung mit der Mikrocontroller, der Meilenstein des Systemmanagements mit dem Mikrocontroller und der Meilenstein von Produktimplementierung.

Als Abschluss dieses Artikels wird gezeigt, dass eine flexible Hardwarearchitektur für modernes Embedded-System-Design möglicherweise besser geeignet ist als ein starrer Ansatz. Darüber hinaus kann dieser Ansatz zu Verbesserungen sowohl bei den Projektkosten als auch bei der Markteinführungszeit führen. Argumente, bereitgestellte Beispiele und Fallstudien werden verwendet, um diese Position zu verteidigen. Betrachtet man den Wert jedes Meilensteins in der Designflexibilität, die diese Architektur bietet, wird deutlich, dass eine adaptive Hardwarearchitektur ein leistungsstarker Motor ist, um das Design eingebetteter Systeme voranzutreiben.

Erkundung der Stärken der Coprozessorarchitektur: Designflexibilität und Hochleistungsverarbeitung

Eine gängige Anwendung für FPGA-Designs ist die direkte Schnittstelle mit einem Hochgeschwindigkeits-Analog-Digital-Wandler (ADC). Das Signal wird digitalisiert, aus dem FPGA gelesen und dann werden einige Algorithmen des digitalen Signalprozessors (DSP) auf dieses Signal angewendet. Schließlich trifft das FPGA Entscheidungen basierend auf den Ergebnissen.

Diese Anwendung dient in diesem Artikel als Beispiel. Darüber hinaus zeigt Abbildung 1 eine generische Coprozessorarchitektur, bei der die MCU und das FPGA über die externe Speicherschnittstelle der MCU verbunden sind. Das FPGA wird behandelt, als wäre es ein Stück externer statischer Direktzugriffsspeicher (SRAM). Die Signale kehren vom FPGA zur MCU zurück und dienen als Hardware-Interrupt-Leitungen und Statusanzeigen. Dadurch kann das FPGA der MCU kritische Zustände anzeigen, wie z. B. das Melden, dass eine ADC-Wandlung bereit ist, oder dass ein Fehler aufgetreten ist oder dass ein anderes bemerkenswertes Ereignis aufgetreten ist.

Generisches KoprozessordiagrammAbbildung 1: Generisches Diagramm des Coprozessors (MCU + FPGA). (Bildquelle: CEPD)

Die Stärken des Coprozessor-Ansatzes zeigen sich wahrscheinlich am besten in den Ergebnissen für jeden der genannten Meilensteine. Der Wert wird nicht nur durch die Auflistung der Errungenschaften einer Aufgabe oder Phase bewertet, sondern auch durch die Bewertung der Befähigung, die diese Errungenschaften ermöglichen. Die Antworten auf die folgenden Fragen helfen, den Gesamtwert der Ergebnisse eines Meilensteins einzuschätzen:

  • Können Sie den Fortschritt anderer Teammitglieder schneller fortsetzen, da Abhängigkeiten und Engpässe aus dem Projekt entfernt werden?
  • Wie ermöglichen Meilensteinerreichungen andere parallele Ausführungspfade?

Digitale Signalverarbeitung mit dem Meilenstein Mikrocontroller

Architekturdiagramm - digitale Signalverarbeitung mit dem MikrocontrollerAbbildung 2: Architektur – digitale Signalverarbeitung mit dem Mikrocontroller. (Bildquelle: CEPD)

Die erste Entwicklungsstufe, die durch diese Hardwarearchitektur ermöglicht wird, bringt die MCU in den Vordergrund. Unter sonst gleichen Bedingungen erfordert die MCU- und ausführbare Softwareentwicklung weniger Ressourcen und Zeit als die FPGA- und HDL-Entwicklung. Dadurch, dass die Produktentwicklung mit der MCU als Hauptprozessor beginnt, können Algorithmen schneller implementiert, getestet und validiert werden. Dadurch können algorithmische und logische Fehler frühzeitig im Designprozess entdeckt und wichtige Teile der Signalkette getestet und validiert werden.

Die Rolle des FPGA bei diesem ersten Meilenstein besteht darin, als Hochgeschwindigkeits-Datenerfassungsschnittstelle zu dienen. Seine Aufgabe besteht darin, die Daten zuverlässig vom Hochgeschwindigkeits-ADC zu leiten, der MCU mitzuteilen, dass die Daten verfügbar sind, und diese Daten der externen Speicherschnittstelle der MCU bereitzustellen. Obwohl diese Rolle nicht die Implementierung von HDL-basierten DSP-Prozessen oder anderen Algorithmen umfasst, ist sie dennoch sehr kritisch.

Die in dieser Phase durchgeführte Entwicklung des FPGAs legt den Grundstein für den letztendlichen Erfolg des Produkts, sowohl bei seiner Entwicklung als auch bei seiner Markteinführung. Durch die Konzentration auf die Low-Level-Schnittstelle kann ausreichend Zeit zum Testen dieser wesentlichen Vorgänge aufgewendet werden. Erst wenn das FPGA diese Schnittstellenrolle zuverlässig und sicher erfüllt, kann dieser Meilenstein sicher abgeschlossen werden.

Zu den wichtigsten Ergebnissen dieses ersten Meilensteins gehören die folgenden Vorteile:

  1. Der komplette Signalweg – alle Verstärkungen, Dämpfungen und Wandlungen – wurde getestet und validiert.
  2. Zeit und Aufwand für die Projektentwicklung wurden durch die anfängliche Implementierung der Algorithmen in Software (C/C++) reduziert; Dies ist von erheblichem Wert für das Management und andere interessierte Parteien, die die Machbarkeit dieses Projekts prüfen müssen, bevor sie zukünftige Entwurfsphasen genehmigen.
  3. Die aus der Implementierung der Algorithmen in C/C++ gewonnenen Erkenntnisse werden direkt auf HDL-Implementierungen übertragbar sein – durch die Verwendung von HDL-Softwaretools, z. B. Xilinx HLS.

Systemmanagement mit Mikrocontroller-Meilenstein

Architekturdiagramm - Systemverwaltung mit dem MikrocontrollerAbbildung 3: Architektur – Systemmanagement mit dem Mikrocontroller. (Bildquelle: CEPD)

Die zweite Entwicklungsstufe, die dieser Coprozessor-Ansatz bietet, ist durch die Verlagerung von DSP-Prozessen und Algorithmusimplementierungen von der MCU auf das FPGA definiert. Das FPGA ist weiterhin für die Highspeed-ADC-Schnittstelle zuständig, durch die Übernahme dieser anderen Funktionen werden jedoch die Geschwindigkeit und Parallelität, die das FPGA bietet, voll ausgeschöpft. Außerdem können im Gegensatz zur MCU mehrere Instanzen der DSP-Prozesse und Algorithmus-Pipelines implementiert und gleichzeitig ausgeführt werden.

Aufbauend auf den Lehren aus der MCU-Implementierung bringt der Designer dieses Vertrauen in diesen nächsten Meilenstein. Werkzeuge, wie das erwähnte Lebendiges HLS von Xilinx bieten eine funktionale Übersetzung von ausführbarem C/C++-Code in synthetisierbares HDL. Jetzt müssen noch Zeitbeschränkungen, Prozessparameter und andere Benutzerpräferenzen definiert und implementiert werden, jedoch wird die Kernfunktionalität verfolgt und auf die FPGA-Fabric übertragen.

Für diesen Meilenstein ist die Rolle der MCU die des Systemmanagers. Die MCU überwacht, aktualisiert und meldet die Status- und Steuerregister innerhalb des FPGA. Außerdem verwaltet die MCU die Benutzerschnittstelle (UI). Diese Benutzerschnittstelle könnte die Form eines Webservers annehmen, auf den über eine Ethernet- oder Wi-Fi-Verbindung zugegriffen wird, oder es könnte sich um eine industrielle Touchscreen-Schnittstelle handeln, die Benutzern den Zugriff am Verwendungsort ermöglicht. Der Schlüssel zur neuen und verfeinerten Rolle der MCU ist folgender: Von rechenintensiven Aufgaben befreit, werden sowohl die MCU als auch das FPGA jetzt für Aufgaben genutzt, für die sie gut geeignet sind.

Zu den wichtigsten Ergebnissen dieses Meilensteins gehören die folgenden Vorteile:

  1. Das FPGA bietet eine schnelle, parallele Ausführung von DSP-Prozessen und Algorithmusimplementierungen.Die MCU bietet eine optimierte, agile Benutzeroberfläche und verwaltet Produktprozesse.
  2. Algorithmische Risiken wurden zunächst in der MCU entwickelt und validiert, und diese Minderungen werden auf synthetisierbares HDL übertragen. Die Werkzeuge, wie Lebendiges HLS, erleichtern diesen Übersetzungsprozess. Darüber hinaus können FPGA-spezifische Risiken mithilfe integrierter Simulationstools wie der Vivado Design Suite gemindert werden.
  3. Stakeholder sind durch die Verlagerung von Prozessen auf das FPGA keinem signifikanten Risiko ausgesetzt. Stattdessen können sie die Vorteile der FPGA-Geschwindigkeit und -Parallelität sehen und genießen. Es werden messbare Leistungsverbesserungen beobachtet, und die Aufmerksamkeit kann nun auf die Vorbereitung dieses Designs für die Fertigung gerichtet werden.

Der Meilenstein der Produktimplementierung

Mit der intensiven Verarbeitung der Berechnungen im FPGA und der MCU in der Verwaltung des Systems und der Benutzeroberfläche ist das Produkt einsatzbereit. Dieses Dokument empfiehlt jedoch nicht, die Alpha- und Beta-Versionen beiseite zu lassen; Der Schwerpunkt dieses Meilensteins liegt jedoch auf den Fähigkeiten, die die Coprozessorarchitektur zur Implementierung des Produkts bringt.

Sowohl die MCU als auch das FPGA sind vor Ort aufrüstbare Geräte. Es wurden mehrere Fortschritte gemacht, um FPGA-Upgrades so zugänglich wie Software-Upgrades zu machen. Da sich das FPGA innerhalb des adressierbaren Speicherbereichs der MCU befindet, kann die MCU außerdem als Zugangspunkt für das gesamte System dienen: Updates für sich selbst sowie für das FPGA empfangen. Updates können bedingt geplant, verteilt und für jeden Endbenutzer angepasst werden. Schließlich können Benutzer- und Anwendungsfallregistrierungen verwaltet und bestimmten Build-Implementierungen zugeordnet werden. Aus diesen Datensätzen kann die Leistung weiter verfeinert und verbessert werden, auch nachdem das Produkt im Feld ist.

Vielleicht werden die Stärken dieser systemweiten Aufrüstbarkeit offensichtlicher als bei Weltraumanwendungen. Sobald das Produkt freigegeben ist, müssen Wartung und Updates remote durchgeführt werden. Dies kann so einfach sein wie das Ändern von Logikbedingungen oder so kompliziert wie das Aktualisieren eines Kommunikationsmodulationsschemas. Die Programmierbarkeit, die FPGA-Technologien und die Coprozessor-Architektur bieten, kann diese gesamte Palette an Fähigkeiten aufnehmen und bietet gleichzeitig Optionen für strahlungsbeständige Komponenten.

Der letzte Kernpunkt dieses Meilensteins ist die schrittweise Reduzierung der Kosten. Auch Kostensenkungen, Stücklistenänderungen und andere Optimierungen können in dieser Phase erfolgen. Bei Feldeinsätzen kann sich herausstellen, dass das Produkt genauso gut mit einer weniger teuren MCU oder einem weniger leistungsfähigen FPGA funktionieren kann. Dank des Coprozessors sind Architekturdesigner nicht gezwungen, Komponenten zu verwenden, deren Fähigkeiten die Anforderungen ihrer Anwendung übersteigen. Auch wenn eine Komponente nicht mehr verfügbar ist, ermöglicht die Architektur die Integration neuer Komponenten in das Design. Dies ist bei einer Single-Chip-Architektur, einem System-on-a-Chip (SoC) oder einem Hochleistungs-DSP oder einer MCU, die versuchen, die gesamte Produktverarbeitung zu übernehmen, nicht der Fall. Die Coprozessor-Architektur ist eine gute Mischung aus Leistung und Flexibilität, die dem Designer sowohl in den Entwicklungsphasen als auch bei der Markteinführung mehr Auswahl und Freiheit gibt.

Unterstützende Forschung und verwandte Fallstudien

Beispiel Satellitenkommunikation

Kurz gesagt, der Wert eines Coprozessors besteht darin, die primäre Verarbeitungseinheit für Aufgaben zu entlasten, die auf Hardware ausgeführt werden, wo Beschleunigungen und Rationalisierungen genutzt werden können. Der Vorteil dieser Designwahl ist eine Nettoerhöhung der Rechengeschwindigkeit und -fähigkeiten und, wie in diesem Artikel argumentiert, eine Reduzierung der Entwicklungszeit und -kosten. Vielleicht einer der attraktivsten Bereiche für diese Vorteile sind Weltraumkommunikationssysteme.

In Ihrem Beitrag, FPGA-basierte Hardware als Coprozessor, G. Prasad und N. Vasantha erläutern, wie die Datenverarbeitung in einem FPGA die Rechenanforderungen von Satellitenkommunikationssystemen erfüllt, ohne die hohen einmaligen Engineering-Kosten (NRE) von anwendungsspezifischen integrierten Schaltungen (ASICs) oder die anwendungsspezifischen Einschränkungen eines Prozessors mit harter Architektur. Wie im beschrieben Meilenstein der digitalen Signalverarbeitung mit dem Mikrocontroller, beginnt sein Design damit, dass der Anwendungsprozessor die rechenintensivsten Algorithmen ausführt. Von diesem Ausgangspunkt aus identifizieren sie die Schlüsselabschnitte der Software, die die meisten CPU-Taktzyklen verbrauchen, und migrieren diese Abschnitte zur HDL-Implementierung. Die grafische Darstellung ist der bisher vorgestellten sehr ähnlich, jedoch haben sie sich für die Darstellung entschieden Anwendungsprogramm als eigener und unabhängiger Block, da er sowohl in der durchgeführt werden kann Host (Prozessor) wie in der FPGA-basierte Hardware.

Infotainment FPGA Coprozessorarchitektur Beispielbild 1Abbildung 4: Anwendungsprogramm, Host-Prozessor und FPGA-basierte Hardware – verwendet im Beispiel der Satellitenkommunikation.

Durch die Verwendung einer Peripheral Component Interconnect (PCI)-Schnittstelle und eines direkten Speicherzugriffs (DMA) vom Host-Prozessor wird die Leistung der Peripherie erheblich gesteigert. Dies zeigt sich vor allem in den Verbesserungen des Verfahrens von Entdomestizierung. Als dieser Prozess in der Host-Prozessor-Software durchgeführt wurde, gab es eindeutig einen Engpass in der Echtzeitreaktion des Systems. Als es jedoch auf das FPGA verschoben wurde, wurden die folgenden Vorteile beobachtet:

  • Das Verfahren Derandomisierung läuft in Echtzeit, ohne Engpässe zu verursachen
  • Der Rechenaufwand des Host-Prozessors wurde erheblich reduziert und konnte nun die beabsichtigte Protokollierungsfunktion besser ausführen.
  • Die Gesamtleistung des Gesamtsystems wurde erweitert.

All dies wurde ohne die mit einem ASIC verbundenen Kosten und unter Nutzung der Flexibilität einer programmierbaren Logik erreicht [5]. Die Satellitenkommunikation stellt beträchtliche Herausforderungen dar, und dieser Ansatz kann diese Anforderungen nachweislich erfüllen und gleichzeitig Designflexibilität bieten.

Beispiel Infotainment im Auto

Car-Entertainment-Systeme sind ein Markenzeichen für den anspruchsvollsten Verbraucher. Im Gegensatz zu den meisten Automobilelektronikgeräten sind diese Geräte gut sichtbar und es wird erwartet, dass sie eine außergewöhnliche Reaktionszeit und Leistung bieten. Designer sind jedoch oft hin- und hergerissen zwischen den heutigen Designanforderungen und der Flexibilität, die zukünftige Funktionen erfordern werden. In diesem Beispiel werden die Implementierungsanforderungen für drahtlose Kommunikation und Signalverarbeitung verwendet, um die Stärken der Coprozessor-Hardwarearchitektur hervorzuheben.

Eine der am weitesten verbreiteten Fahrzeugunterhaltungssystemarchitekturen wurde von der Delphi Delco Electronics Systems Corporation veröffentlicht. Diese Architektur verwendete eine SH-4 MCU mit einem komplementären ASIC, dem Peripheriegerät HD64404 Amanda von Hitachi. Diese Architektur erfüllte mehr als 75 % der grundlegenden Unterhaltungsfunktionen des Automobilmarkts; es fehlte jedoch die Fähigkeit, drahtlose Kommunikations- und Videoverarbeitungsanwendungen zu adressieren. Indem ein FPGA in diese bestehende Architektur integriert wird, kann diesem bestehenden Designansatz mehr Flexibilität und Leistungsfähigkeit hinzugefügt werden.

Infotainment FPGA Coprozessorarchitektur Beispielbild 2Abbildung 5: Infotainment 1 FPGA-Coprozessor-Architekturbeispiel.

Die Architektur von Fig. 5 ist sowohl für die Videoverarbeitung als auch für die Verwaltung der drahtlosen Kommunikation geeignet. Indem die Funktionalitäten des DSP auf das FPGA, den Prozessor, verlagert werden Amandas es kann eine Systemverwaltungsfunktion ausführen und wird freigegeben, um einen drahtlosen Kommunikationsstapel zu implementieren. so viel die Amandas Da FPGAs Zugriff auf externen Speicher haben, können Daten schnell zwischen Prozessoren und Systemkomponenten ausgetauscht werden.

Infotainment FPGA Coprozessorarchitektur Beispielbild 2Abbildung 6: Infotainment 2 FPGA-Coprozessor-Architekturbeispiel.

Das zweite Infotainment in Abbildung 6 hebt die Fähigkeit des FPGA hervor, sowohl mit Hochgeschwindigkeit eingehende analoge Daten zu verarbeiten als auch die für Videoanwendungen erforderliche Komprimierung und Codierung zu handhaben. Tatsächlich kann all diese Funktionalität in das FPGA eingespeist und durch Parallelverarbeitung in Echtzeit adressiert werden.

Durch die Einbettung eines FPGA in eine vorhandene Hardwarearchitektur können Sie die bewährte Leistung vorhandener Hardware mit Flexibilität und Zukunftssicherheit kombinieren. Selbst innerhalb bestehender Systeme bietet die Coprozessor-Architektur Designern Optionen, die sonst nicht verfügbar sind [6].

Vorteile des Rapid Prototyping

Im Kern zielt der Rapid-Prototyping-Prozess darauf ab, einen beträchtlichen Teil des Produktentwicklungsbereichs abzudecken, indem Aufgaben parallel ausgeführt, „Bugs“ und Designprobleme schnell identifiziert und Entwicklungspfade, Daten und Signale validiert werden, insbesondere solche, die im kritischen Bereich liegen Weg eines Projektes. Damit dieser Prozess jedoch wirklich agil und effizient zu Ergebnissen führt, muss ausreichend Expertise in den erforderlichen Projektbereichen vorhanden sein.

Traditionell bedeutet dies, dass es einen Hardware-Ingenieur, einen Embedded-Software- oder DSP-Ingenieur und einen HDL-Ingenieur geben muss. Mittlerweile gibt es viele interdisziplinäre Fachleute, die mehrere Rollen übernehmen können, aber die Koordinierung dieser Bemühungen ist nach wie vor eine erhebliche Arbeitsbelastung.

In seinem Artikel Eine FPGA-basierte Rapid-Prototyping-Plattform für Wavelet-Coprozessorenfördern die Autoren die Idee, dass die Verwendung einer Coprozessorarchitektur es einem einzelnen DSP-Ingenieur ermöglicht, alle diese Funktionen effizient und effektiv auszuführen. Für diese Studie begann das Team mit dem Entwurf und der Simulation der gewünschten DSP-Funktionalität innerhalb des Simulink-Tools von MATLAB. Dies diente zwei Hauptfunktionen, da es 1) die gewünschte Leistung durch Simulation verifizierte und 2) als Basis diente, mit der zukünftige Designoptionen verglichen und referenziert werden konnten.

Nach der Simulation wurden kritische Funktionalitäten identifiziert und in verschiedene Kerne unterteilt, bei denen es sich um Softcore-Komponenten und Prozessoren handelt, die auf einem FPGA synthetisiert werden können. Der wichtigste Schritt während dieser Arbeit bestand darin, die Schnittstelle zwischen diesen Kerneln und Komponenten zu definieren und die Datenaustauschleistung mit der gewünschten und simulierten Leistung zu vergleichen. Dieser Designprozess ist eng mit dem Xilinx-Designablauf für eingebettete Systeme abgestimmt und in Abbildung 7 unten zusammengefasst.

Bild des Xilinx Vivado HLS-DesignablaufsAbbildung 7: Ablauf des Implementierungsdesigns.

Durch die Aufteilung des Systems in synthetisierbare Kerne kann sich der DSP-Ingenieur auf die kritischsten Aspekte der Signalverarbeitungskette konzentrieren. Sie müssen kein Hardware- oder HDL-Experte sein, um verschiedene Softcore-Prozessoren oder -Komponenten innerhalb des FPGA zu modifizieren, zu routen oder zu implementieren. Solange der Designer die Schnittstelle und die Datenformate kennt, hat er die volle Kontrolle über die Signalpfade und kann die Systemleistung feinabstimmen.

Empirische Ergebnisse: Der Fall der diskreten Kosinustransformation

Die empirischen Ergebnisse bestätigten nicht nur die Flexibilität, die die Coprozessorarchitektur dem Embedded-System-Designer bietet, sondern zeigten auch die Möglichkeiten zur Leistungssteigerung, die mit modernen FPGA-Tools verfügbar sind. Verbesserungen, wie die unten aufgeführten, sind möglicherweise nicht verfügbar oder haben weniger Auswirkungen auf andere Hardwarearchitekturen. Die Diskrete Kosinustransformation (DCT) wurde ausgewählt, da es sich um einen rechenintensiven Algorithmus handelt und seine Weiterentwicklung von einer C-basierten zu einer HDL-basierten Implementierung im Mittelpunkt dieser Ergebnisse stand. DCT wurde gewählt, weil dieser Algorithmus in der digitalen Signalverarbeitung zur Mustererkennung und Filterung verwendet wird [8]. Die empirischen Erkenntnisse basierten auf einer Laborübung, die vom Autor und seinen Mitarbeitern durchgeführt wurde, um die Xilinx Alliance Partner-Zertifizierung für 2020 – 2021 zu erhalten.

Dazu wurden folgende Werkzeuge und Geräte verwendet:

  • Lebendiges HLS v2019
  • Das Auswertungs- und Simulationsgerät war xczu7ev-ffvc1156-2-e

Beginnend mit der C-basierten Implementierung akzeptiert der DCT-Algorithmus zwei 16-Bit-Arrays von Zahlen; Matrix "a" ist die Eingabematrix für die DCT, und Matrix "b" ist die Ausgabematrix der DCT. Die Datenbreite (DW) ist daher mit 16 definiert, und die Anzahl der Elemente innerhalb der Arrays (N) ist 1024/DW, also 64. Schließlich wird die Größe des DCT-Arrays (DCT_SIZE) auf 8 gesetzt, was bedeutet, dass es wird eine 8 x 8 Matrix verwendet.

Gemäß der Prämisse dieses Artikels ermöglicht die C-basierte Implementierung des Algorithmus dem Designer, die Funktionalität des Algorithmus schnell zu entwickeln und zu validieren. Obwohl dies eine wichtige Überlegung ist, legt diese Validierung mehr Wert auf die Funktionalität als auf die Laufzeit. Diese Gewichtung ist zulässig, da die endgültige Implementierung dieses Algorithmus auf einem FPGA erfolgen wird, wo Hardwarebeschleunigung, Schleifenabwicklung und andere Techniken leicht verfügbar sind.

Bild des Xilinx Vivado HLS-DesignablaufsAbbildung 8: Xilinx Vivado HLS-Designablauf.

Sobald der DCT-Code im Tool erstellt wurde Lebendiges HLS Als Projekt besteht der nächste Schritt darin, mit der Synthese des Designs für die FPGA-Implementierung zu beginnen. In diesem nächsten Schritt werden einige der wirkungsvollsten Vorteile der Verlagerung der Ausführung eines Algorithmus von einer MCU auf ein FPGA deutlicher – als Referenz entspricht dieser Schritt dem oben besprochenen Meilenstein „Systemmanagement mit dem Mikrocontroller“.

Moderne FPGA-Tools ermöglichen eine Reihe von Optimierungen und Erweiterungen, die die Leistung komplexer Algorithmen erheblich steigern. Bevor Sie die Ergebnisse analysieren, sollten Sie einige wichtige Begriffe beachten:

  • Latenz – Die Anzahl der Taktzyklen, die erforderlich sind, um alle Iterationen der Schleife auszuführen [10]
  • Intervall – Die Anzahl der Taktzyklen, bevor die nächste Iteration einer Schleife mit der Verarbeitung von Daten beginnt [11]
  • BRAM – Block Random Access Memory
  • DSP48E – Digitale Signalverarbeitungsfolie für UltraScale-Architektur
  • FF – Flipflop
  • LUT – Nachschlagetabelle
  • URAM – Unified Random Access Memory (kann aus einem einzelnen Transistor bestehen)
Latenz Intervall
Mindest Max Mindest Max
Standard (Lösung 1) 2935 2935 2935 2935
Interne Schleife des Rohres (Lösung 2) 1723 1723 1723 1723
Außenschleife des Rohres (Lösung 3) 843 843 843 843
Array-Partition (Lösung 4) 477 477 477 477
Datenfluss (Lösung 5) 476 476 343 343
Online (Lösung 6) 463 463 98 98

Tabelle 1: Ergebnisse der Optimierung der Ausführung des FPGA-Algorithmus (Latenz und Intervall).

BRAM_18K DSP48E FF LUT uram
Standard (Lösung 1) 5 1 246 964 0
Interne Schleife des Rohres (Lösung 2) 5 1 223 1211 0
Außenschleife des Rohres (Lösung 3) 5 8 516 1356 0
Array-Partition (Lösung 4) 3 8 862 1879 0
Datenfluss (Lösung 5) 3 8 868 1654 0
Online (Lösung 6) 3 16 1086 1462 0

Tabelle 2: Ergebnisse der Optimierung der Ausführung des FPGA-Algorithmus (Ressourcenverbrauch).

Vorbestimmte

Die standardmäßigen Optimierungseinstellungen stammen aus dem unveränderten Ergebnis der Übersetzung des C-basierten Algorithmus in synthetisierbares HDL. Es sind keine Optimierungen aktiviert, und dies kann als Leistungsmaßstab verwendet werden, um die anderen Optimierungen besser zu verstehen.

Innere Rohrschlaufe

Richtlinie PIPELINE weist auf die hin Lebendiges HLS um die inneren Schleifen abzuwickeln, damit neue Daten verarbeitet werden können, während sich vorhandene Daten noch in der Pipeline befinden. Somit müssen die neuen Daten nicht auf die Vervollständigung der bestehenden warten, um mit der Verarbeitung beginnen zu können.

äußere Rohrschlaufe

Anwendung der Richtlinie PIPELINE zur äußeren Schleife werden nun die Operationen der äußeren Schleife geleitet. Operationen in inneren Schleifen treten jedoch jetzt gleichzeitig auf. Sowohl die Latenz- als auch die Intervallzeit werden halbiert, indem sie direkt auf die äußere Schleife angewendet werden.

Array-Partition

Diese Direktive weist den Inhalt von Schleifen Arrays zu und glättet somit alle Speicherzugriffe auf einzelne Elemente innerhalb dieser Arrays. Dadurch wird mehr RAM verbraucht, aber auch hier wird die Ausführungszeit dieses Algorithmus halbiert.

Datenfluss

Diese Anweisung ermöglicht es dem Designer, die Zielanzahl von Taktzyklen zwischen jedem der Eingabelesevorgänge anzugeben. Diese Direktive wird nur von der Top-Level-Funktion unterstützt. Nur Schleifen und Funktionen, die auf dieser Ebene verfügbar gemacht werden, profitieren von dieser Direktive.

In der Schlange

Richtlinie IN DER REIHE glätten Sie alle Schlaufen, sowohl die inneren als auch die äußeren. Zeilen- und Spaltenprozesse können jetzt gleichzeitig ausgeführt werden. Die Anzahl der benötigten Taktzyklen wird auf ein Minimum reduziert, obwohl dies mehr FPGA-Ressourcen verbraucht.

Schlussfolgerung:

Die Coprozessor-Hardwarearchitektur bietet dem Entwickler eingebetteter Systeme eine Hochleistungsplattform, die während der gesamten Produktentwicklung und -freigabe die Designflexibilität aufrechterhält. Indem zunächst Algorithmen in C oder C++ validiert werden, können Prozesse, Daten- und Signalpfade sowie kritische Funktionalitäten in relativ kurzer Zeit verifiziert werden. Durch die anschließende Verlagerung der prozessorintensiven Algorithmen auf das Coprozessor-FPGA kann der Designer die Vorteile der Hardwarebeschleunigung und eines modulareren Designs genießen.

Falls Teile obsolet werden oder Optimierungen erforderlich sind, kann die Architektur selbst diese Änderungen zulassen. Neue MCUs und FPGAs können in das Design integriert werden, während die Schnittstellen relativ intakt bleiben können. Da sowohl die MCU als auch das FPGA vor Ort aufgerüstet werden können, können außerdem benutzerspezifische Änderungen und Optimierungen vor Ort und aus der Ferne vorgenommen werden.

Schließlich kombiniert diese Architektur die Entwicklungsgeschwindigkeit und Verfügbarkeit einer MCU mit der Leistung und Erweiterbarkeit eines FPGA. Mit Optimierungen und Leistungssteigerungen, die bei jedem Entwicklungsschritt verfügbar sind, kann die Coprozessorarchitektur die Anforderungen der anspruchsvollsten Anforderungen für aktuelle und zukünftige Designs erfüllen.

Quelle: https://www.digikey.com.mx/es/articles/the-co-processor-architecture-an-embedded-system-architecture-for-rapid-prototyping