Verwendung von Falten in modernen Geräten. Nachrichten- und Analyseportal „Electronics Time“ Designbeispiele für große FPGA-Projekte

Stellen Sie sich vor, dass der Prozessor, anstatt einen bestimmten Befehlssatz auszuführen, für jedes Programm neu aufgebaut wird und den Algorithmus direkt in Hardware umwandelt. Genau so funktionieren FPGs. Im heutigen Artikel erzähle ich Ihnen, wie das überhaupt möglich ist und stelle Ihnen verschiedene FPGA-Designmethoden vor.

Zunächst müssen Sie ein wenig über die digitale Logik von ASIC-Chips Bescheid wissen, aber mit ihnen anzufangen ist sehr schwierig und teuer, und es ist besser, stattdessen mit FPGAs zu beginnen.

Was ist FPGA?

FPGA steht für Field Programmable Gate Array (User-Programmable Gate Arrays, FPGA). Im Allgemeinen werden sie FPGAs genannt – programmierbare logische integrierte Schaltkreise.

Mit einem FPGA können Sie im wahrsten Sinne des Wortes digitale Mikroschaltungen entwerfen, während Sie zu Hause mit einem verfügbaren Debug-Board auf dem Tisch und Entwicklersoftware für mehrere tausend grüne Rubel sitzen. Es gibt aber auch kostenlose Optionen. Bitte beachten Sie: Es geht um Design, nicht um Programmierung, denn am Ausgang erhalten wir eine physische digitale Schaltung, die einen bestimmten Algorithmus auf Hardwareebene ausführt, und kein Programm für den Prozessor.

Es funktioniert wie folgt. Es gibt eine fertige Leiterplatte mit einem Satz Schnittstellen, die mit einem auf der Platine installierten FPGA-Chip verbunden sind, etwa diese coole Platine für ein Rechenzentrum oder diese Debug-Platine für Schulungen.

Bis wir das FPGA konfiguriert haben, gibt es im Chip einfach keine Logik, um Daten von den Schnittstellen zu verarbeiten, und daher wird natürlich nichts funktionieren. Als Ergebnis des Designs wird jedoch eine Firmware erstellt, die nach dem Laden in das FPGA die von uns benötigte digitale Schaltung erstellt. Auf diese Weise können Sie einen 100G-Ethernet-Controller erstellen, der Netzwerkpakete empfängt und verarbeitet.

Ein wichtiges Merkmal von FPGA ist seine Rekonfigurierbarkeit. Nehmen wir an, wir benötigen jetzt einen 100G-Ethernet-Controller und in einer Woche kann dasselbe Board zur Implementierung von vier unabhängigen 25G-Ethernet-Schnittstellen verwendet werden.

Es gibt zwei führende Hersteller von FPGA-Chips auf dem Markt: die bekannten Intel und Xilinx. Sie kontrollieren 58 bzw. 42 % des Marktes. Die Gründer von Xilinx erfanden bereits 1985 ihren ersten FPGA-Chip. Intel ist erst vor kurzem in den Markt eingestiegen – im Jahr 2015, nachdem es Altera übernommen hatte, das gleichzeitig mit Xilinx gegründet wurde. Die Technologien Altera und Xilinx ähneln sich in vielerlei Hinsicht, ebenso wie die Entwicklungsumgebungen. Ich habe häufiger mit Xilinx-Produkten gearbeitet, wundern Sie sich also nicht über die ständige Erwähnung im Artikel.

FPGAs werden häufig in verschiedenen Bereichen eingesetzt: Unterhaltungselektronik, Telekommunikationsgeräte, Beschleunigerplatinen für den Einsatz in Rechenzentren, Robotik, Prototyping von ASIC-Chips. Ich werde mir unten ein paar Beispiele ansehen.

Wir werden uns auch mit der Technologie befassen, die eine Hardware-Neukonfiguration ermöglicht, uns mit dem Designprozess vertraut machen und uns ein einfaches Beispiel für die Implementierung eines Hardware-Zählers in Verilog ansehen. Wenn Sie über ein FPGA-Entwicklungsboard verfügen, sollten Sie dieses selbst replizieren können. Wenn kein Board vorhanden ist, können Sie sich trotzdem mit Verilog vertraut machen, indem Sie den Betrieb der Schaltung auf Ihrem Computer simulieren.

Funktionsprinzip von FPGA

Ein FPGA-Chip ist derselbe benutzerdefinierte ASIC-Chip, der aus denselben Transistoren besteht, aus denen Flip-Flops, Register, Multiplexer und andere Logikelemente für herkömmliche Schaltkreise zusammengesetzt sind. Natürlich ist es unmöglich, die Reihenfolge zu ändern, in der diese Transistoren angeschlossen sind. Aber architektonisch ist die Mikroschaltung so clever aufgebaut, dass es möglich ist, die Signalumschaltung zwischen größeren Blöcken zu ändern: Sie werden CLBs genannt – programmierbare Logikblöcke.

Es ist auch möglich, die logische Funktion zu ändern, die der CLB ausführt. Dies wird dadurch erreicht, dass der gesamte Chip mit Speicherzellen mit statischer RAM-Konfiguration durchzogen ist. Jedes Bit dieses Speichers steuert entweder eine Art Signalschalttaste oder ist Teil der Wahrheitstabelle einer logischen Funktion, die der CLB implementiert.

Da der Konfigurationsspeicher mithilfe der statischen RAM-Technologie aufgebaut ist, muss erstens beim Einschalten des FPGA der Chip konfiguriert werden, und zweitens kann der Chip nahezu unendlich oft neu konfiguriert werden.

Sehr vereinfachte 2D-Chipstruktur ohne Konfigurationsspeicher

CLBs befinden sich in einer Switch-Struktur, die die Verbindungen zwischen den Ein- und Ausgängen der CLBs definiert.

Schaltmatrixdiagramm

An jeder Leiterkreuzung befinden sich sechs Schaltschalter, die von eigenen Konfigurationsspeicherzellen gesteuert werden. Indem Sie einige öffnen und andere schließen, können Sie eine unterschiedliche Signalumschaltung zwischen CLBs ermöglichen.

CLB

CLB besteht ganz einfach aus einem Block, der eine boolesche Funktion aus mehreren Argumenten definiert (dies wird als Look Up Table, LUT bezeichnet) und einem Trigger (Flip-Flop, FF). In modernen FPGAs verfügt die LUT über sechs Eingänge, in der Abbildung sind der Einfachheit halber jedoch drei dargestellt. Der Ausgang der LUT wird dem CLB-Ausgang entweder asynchron (direkt) oder synchron (über ein FF-Flip-Flop, das mit dem Systemtakt läuft) zugeführt.

LUT-Implementierungsprinzip

Es ist interessant, sich das Prinzip der LUT-Implementierung anzusehen. Lassen Sie uns eine boolesche Funktion y = (a & b) | haben ~ c . Der Schaltplan und die Wahrheitstabelle sind in der Abbildung dargestellt. Die Funktion hat drei Argumente, also benötigt sie 2^3 = 8 Werte. Jeder von ihnen entspricht einer eigenen Kombination von Eingangssignalen. Diese Werte werden vom FPGA-Firmware-Entwicklungsprogramm berechnet und in spezielle Konfigurationsspeicherzellen geschrieben.

Der Wert jeder Zelle wird ihrem Eingang des Ausgangsmultiplexers LUT zugeführt, und die Eingangsargumente der booleschen Funktion werden verwendet, um den einen oder anderen Wert der Funktion auszuwählen. Der CLB ist die wichtigste Hardwareressource des FPGA. Die Anzahl der CLBs in modernen FPGA-Chips kann variieren und hängt von der Art und Kapazität des Chips ab. Xilinx verfügt über Matrizen mit CLB-Zahlen zwischen etwa viertausend und drei Millionen.

Neben dem CLB gibt es im FPGA eine Reihe weiterer wichtiger Hardwareressourcen. Zum Beispiel Hardware-Multiplikations-Akkumulations-Einheiten oder DSP-Einheiten. Jeder von ihnen kann in jedem Taktzyklus Multiplikations- und Additionsoperationen mit 18-Bit-Zahlen durchführen. In Quarzen der Spitzenklasse kann die Anzahl der DSP-Blöcke 6000 überschreiten.

Eine weitere Ressource sind Blöcke interner Speicher(Block-RAM, BRAM). Jeder Block kann 2 KB speichern. Die Gesamtkapazität eines solchen Speichers kann je nach Kristall zwischen 20 KB und 20 MB liegen. BRAMs und DSP-Blöcke sind wie CLBs durch eine Switch-Struktur verbunden und erstrecken sich über den gesamten Chip. Durch die Verbindung von CLB-, DSP- und BRAM-Blöcken können sehr effiziente Datenverarbeitungsschaltungen erhalten werden.

Vorteile von FPGA

Der erste von Xilinx im Jahr 1985 entwickelte FPGA-Chip enthielt nur 64 CLBs. Zu dieser Zeit war die Integration von Transistoren auf Chips viel geringer als heute, und digitale Geräte verwendeten häufig Chips mit „verstreuter Logik“. Es gab separate Mikroschaltungen für Register, Zähler, Multiplexer und Multiplikatoren. Unter spezifisches Gerät Wir haben unsere eigene Leiterplatte erstellt, auf der diese Mikroschaltungen mit geringer Integration installiert wurden.

Durch den Einsatz von FPGA konnte auf diesen Ansatz verzichtet werden. Selbst ein 64-CLB-FPGA spart erheblich Platz Leiterplatte, und die Verfügbarkeit der Rekonfiguration fügte die Möglichkeit hinzu, die Funktionalität von Geräten nach der Herstellung während des Betriebs zu aktualisieren, wie sie „im Feld“ sagen (daher der Name – feldprogrammierbares Gate-Array).

Aufgrund der Tatsache, dass jede beliebige Hardware-Digitalschaltung innerhalb eines FPGA erstellt werden kann (Hauptsache, es sind genügend Ressourcen vorhanden), ist eine der wichtigen Anwendungen von FPGAs das Prototyping von ASIC-Chips.

Die ASIC-Entwicklung ist sehr komplex und teuer, die Fehlerkosten sind sehr hoch und das Thema Logiktests ist von entscheidender Bedeutung. Daher war eine der Entwicklungsphasen, noch bevor mit der Arbeit an der physikalischen Topologie der Schaltung begonnen wurde, deren Prototyping auf einem oder mehreren FPGA-Chips.

Für die ASIC-Entwicklung werden spezielle Platinen hergestellt, die viele miteinander verbundene FPGAs enthalten. Der Prototyp-Mikroschaltkreis arbeitet mit deutlich niedrigeren Frequenzen (vielleicht mehrere zehn Megahertz), ermöglicht aber Einsparungen bei der Identifizierung von Problemen und Fehlern.

Meiner Meinung nach gibt es jedoch noch interessantere Anwendungen von FPGAs. Die flexible Struktur des FPGA ermöglicht die Implementierung von Hardwareschaltungen für eine schnelle und parallele Datenverarbeitung mit der Möglichkeit, den Algorithmus zu ändern.


Vergleich von Hardwareplattformen

Lassen Sie uns darüber nachdenken, wie sich CPU, GPU, FPGA und ASIC grundlegend unterscheiden. Die CPU ist universell, Sie können jeden Algorithmus darauf ausführen, sie ist am flexibelsten und dank der großen Anzahl an Programmiersprachen und Entwicklungsumgebungen am einfachsten zu verwenden.

Gleichzeitig sinkt aufgrund der Vielseitigkeit und sequentiellen Ausführung von CPU-Befehlen die Leistung und der Stromverbrauch der Schaltung steigt. Dies geschieht, weil für jeden nützlich Arithmetische Operation Die CPU führt viele zusätzliche Vorgänge im Zusammenhang mit dem Lesen von Anweisungen, dem Verschieben von Daten zwischen Registern und Cache und anderen Bewegungen aus.

Auf der anderen Seite befindet sich der ASIC. Auf dieser Plattform wird der erforderliche Algorithmus durch die direkte Verbindung von Transistoren in Hardware implementiert; alle Vorgänge beziehen sich nur auf die Ausführung des Algorithmus und es gibt keine Möglichkeit, ihn zu ändern. Daher die maximale Leistung und der niedrigste Stromverbrauch der Plattform. Es ist jedoch unmöglich, ASIC neu zu programmieren.

Rechts neben der CPU befindet sich die GPU. Diese Chips wurden ursprünglich für die Grafikverarbeitung entwickelt, werden aber mittlerweile auch für Mining-Computing eingesetzt. allgemeiner Zweck. Sie bestehen aus Tausenden kleiner Rechenkerne und führen parallele Operationen an einer Reihe von Daten durch.

Wenn der Algorithmus parallelisiert werden kann, kann die GPU im Vergleich zur CPU eine deutliche Beschleunigung erreichen. Andererseits werden sequentielle Algorithmen schlechter implementiert, sodass die Plattform weniger flexibel ist als die CPU. Um für die GPU zu entwickeln, müssen Sie außerdem über besondere Fähigkeiten verfügen und OpenCL oder CUDA kennen.

Schließlich FPGA. Diese Plattform kombiniert die Effizienz von ASICs mit der Möglichkeit, das Programm zu ändern. FPGAs sind nicht universell, aber es gibt eine Klasse von Algorithmen und Aufgaben, die auf ihnen eine bessere Leistung zeigen als auf einer CPU oder sogar einer GPU. Die Komplexität der Entwicklung für FPGAs ist höher, aber neue Entwicklungstools verkleinern diese Lücke.

Der entscheidende Vorteil von FPGAs ist die Fähigkeit, Daten sofort bei ihrem Eintreffen mit minimaler Antwortverzögerung zu verarbeiten. Als Beispiel können Sie sich einen intelligenten Netzwerk-Router mit vorstellen Große anzahl Ports: Wenn ein Ethernet-Paket an einem seiner Ports ankommt, müssen viele Regeln überprüft werden, bevor ein Ausgabeport ausgewählt wird. Möglicherweise müssen Sie einige Felder im Paket ändern oder neue hinzufügen.

Mit einem FPGA können Sie dieses Problem sofort lösen: Die Bytes des Pakets kommen gerade erst von der Netzwerkschnittstelle auf dem Chip an und sein Header wird bereits analysiert. Der Einsatz von Prozessoren kann hier die Geschwindigkeit der Verarbeitung des Netzwerkverkehrs deutlich verlangsamen. Es ist klar, dass Router über einen benutzerdefinierten ASIC verfügen können, der die effizienteste Leistung erbringt. Was aber, wenn sich die Regeln für die Paketverarbeitung ändern müssen? Nur FPGAs können die erforderliche Flexibilität bei gleichzeitig hoher Leistung erreichen.

Daher werden FPGAs dort eingesetzt, wo eine hohe Datenverarbeitungsleistung, kürzeste Reaktionszeiten und ein geringer Stromverbrauch erforderlich sind.

FPGA in der Cloud

Im Cloud Computing werden FPGAs für schnelle Berechnungen, Beschleunigung des Netzwerkverkehrs und Zugriff auf Datenfelder verwendet. Dazu gehört auch der Einsatz von FPGAs für den Hochfrequenzhandel an Börsen. FPGA-Boards mit PCI-Express und eine optische Netzwerkschnittstelle von Intel (Altera) oder Xilinx.

FPGAs eignen sich hervorragend für kryptografische Algorithmen, DNA-Sequenzvergleiche und wissenschaftliche Aufgaben wie Molekulardynamik. Microsoft nutzt FPGAs seit langem, um den Bing-Suchdienst zu beschleunigen und Software Defined Networking innerhalb der Azure-Cloud zu organisieren.

Der Boom des maschinellen Lernens hat auch FPGAs nicht verschont. Xilinx und Intel bieten FPGA-basierte Tools für die Arbeit mit tiefen neuronalen Netzen. Sie ermöglichen es Ihnen, FPGA-Firmware, die ein bestimmtes Netzwerk implementiert, direkt von Frameworks wie Caffe und TensorFlow zu beziehen.

Darüber hinaus können Sie all dies ausprobieren, ohne das Haus zu verlassen und es zu benutzen Cloud-Services. Sie können beispielsweise bei Amazon mieten virtuelle Maschine mit Zugriff auf das FPGA-Board und alle Entwicklungstools, einschließlich maschinellem Lernen.

FPGA am Rande

Welche weiteren interessanten Dinge machen FPGAs? Warum tun sie nichts! Robotik, selbstfahrende Autos, Drohnen, wissenschaftliche Instrumente, medizinische Geräte, kundenspezifisch mobile Geräte, intelligente CCTV-Kameras und so weiter.

Traditionell wurden FPGAs zur digitalen Verarbeitung eindimensionaler Signale in Radargeräten und Funktransceivern verwendet (und konkurrierten mit DSP-Prozessoren). Mit zunehmender Chipintegration und -leistung werden FPGA-Plattformen zunehmend für Hochleistungsrechnen eingesetzt, beispielsweise für die 2D-Signalverarbeitung am Rande der Cloud.

Am einfachsten lässt sich dieses Konzept am Beispiel einer Verkehrskamera mit Nummernschilderkennung verstehen. Sie können eine Kamera nehmen, die Videos über Ethernet übertragen kann, und den Stream auf einem Remote-Server verarbeiten. Mit zunehmender Anzahl an Kameras steigt auch die Belastung des Netzwerks, was zu Systemausfällen führen kann.

Stattdessen ist es besser, die Nummernschilderkennung auf einem Computer zu implementieren, der direkt im Gehäuse der Videokamera installiert ist, und Nummernschilder im Textformat an die Cloud zu übertragen. Dazu kann man sogar auf relativ preiswerte FPGAs mit geringem Stromverbrauch zurückgreifen und mit einer Batterie auskommen. Gleichzeitig besteht weiterhin die Möglichkeit, die Bedienlogik des FPGA zu ändern, beispielsweise bei einem Wechsel des Kennzeichenstandards.

Bei Robotik und Drohnen ist es in diesem Bereich besonders wichtig, zwei Bedingungen zu erfüllen – hohe Leistung und geringer Energieverbrauch. Die FPGA-Plattform ist ideal und kann insbesondere zur Erstellung von Flugsteuerungen für Drohnen genutzt werden. Sie stellen bereits UAVs her, die spontan Entscheidungen treffen können.

Projektentwicklung auf FPGA

Es gibt verschiedene Designstufen: Low, Block und High. Bei der niedrigen Ebene werden Sprachen wie Verilog oder VHDL verwendet, bei denen Sie die Entwicklung auf der Registerübertragungsebene (RTL) steuern. In diesem Fall bilden Sie Register wie in einem Prozessor und definieren logische Funktionen, die die Daten zwischen ihnen ändern.

FPGA-Schaltkreise arbeiten immer mit bestimmten Taktraten (typischerweise 100–300 MHz), und auf RTL-Ebene definieren Sie das Verhalten des Schaltkreises bis hin zur Systemtaktfrequenz. Das Ergebnis dieser sorgfältigen Arbeit sind Designs, die hinsichtlich Leistung, FPGA-Chip-Ressourcenverbrauch und Stromverbrauch so effizient wie möglich sind. Dies erfordert jedoch ernsthafte Kenntnisse im Schaltungsdesign, und selbst damit ist der Prozess langsam.

Auf Blockebene beschäftigen Sie sich hauptsächlich damit, vorgefertigte große Blöcke zu verbinden, die bestimmte Funktionen ausführen, um die von Ihnen benötigte System-on-Chip-Funktionalität zu erhalten.

Auf einem hohen Designniveau kontrollieren Sie nicht mehr die Daten bei jedem Taktzyklus, sondern konzentrieren sich stattdessen auf den Algorithmus. Es gibt Compiler bzw. Übersetzer von C und C++ auf die RTL-Ebene, zum Beispiel Vivado HLS. Es ist ziemlich intelligent und ermöglicht die Übersetzung einer breiten Klasse von Algorithmen auf Hardwareebene.

Der Hauptvorteil dieses Ansatzes gegenüber RTL-Sprachen ist die Beschleunigung der Entwicklung und insbesondere des Testens des Algorithmus: C++-Code kann auf einem Computer ausgeführt und überprüft werden, und dies ist viel schneller als das Testen von Algorithmusänderungen auf RTL-Ebene. Natürlich müssen Sie für die Bequemlichkeit bezahlen – das System ist möglicherweise nicht so schnell und beansprucht mehr Hardwareressourcen.

Oftmals sind wir bereit, diesen Preis zu zahlen: Wenn wir den Übersetzer richtig einsetzen, wird die Effizienz kaum darunter leiden und moderne FPGAs verfügen über genügend Ressourcen. In unserer Welt mit einem kritischen Time-to-Market-Indikator erweist sich dies als gerechtfertigt.

Oft müssen alle drei Entwicklungsstile in einem Design kombiniert werden. Nehmen wir an, wir müssen ein Gerät entwickeln, das wir in einen Roboter einbauen und ihm die Fähigkeit geben könnten, Objekte in einem Videostream zu erkennen – zum Beispiel Verkehrsschilder. Nehmen wir den Videosensorchip und verbinden ihn direkt mit dem FPGA. Zum Debuggen können wir verwenden HDMI-Monitor, ebenfalls mit dem FPGA verbunden.

Über eine vom Sensorhersteller klar definierte Schnittstelle (USB funktioniert hier nicht) werden Frames der Kamera an das FPGA übertragen, verarbeitet und auf dem Monitor angezeigt. Um Frames zu verarbeiten, benötigen Sie einen Framebuffer, der sich normalerweise in einem externen befindet DDR-Speicher auf einer Leiterplatte neben dem FPGA-Chip installiert.


Typisches Blockdiagramm eines FPGA-Designs

Wenn der Hersteller des Videosensors keine Schnittstellen-IP für unseren FPGA-Chip bereitstellt, müssen wir diese selbst in RTL schreiben und dabei Taktzyklen, Bits und Bytes gemäß der Spezifikation des Datenübertragungsprotokolls zählen. Wir werden höchstwahrscheinlich vorgefertigte Blöcke Preprocess, DDR Controller und HDMI IP nehmen und einfach deren Schnittstellen verbinden. Und wir können den HLS-Block, der eingehende Daten sucht und verarbeitet, in C++ schreiben und ihn mit Vivado HLS senden.

Höchstwahrscheinlich benötigen wir noch eine Art vorgefertigte Bibliothek eines Detektors und Klassifikators für Verkehrszeichen, angepasst für die Verwendung in einem FPGA. In diesem Beispiel präsentiere ich natürlich ein stark vereinfachtes Design-Flussdiagramm, aber es spiegelt die Funktionslogik korrekt wider.

Schauen wir uns den Entwurfspfad vom Schreiben von RTL-Code bis zum Erhalten einer Konfigurationsdatei zum Laden in das FPGA an.

Designpfad

Sie schreiben also RTL-Code, der die gewünschte Schaltung implementiert. Bevor Sie es auf echter Hardware testen, müssen Sie sicherstellen, dass es korrekt ist und das erforderliche Problem richtig löst. Hierzu wird die RTL-Modellierung in einem Simulator am Computer eingesetzt.

Sie nehmen Ihre Schaltung, die vorerst nur im RTL-Code dargestellt ist, und platzieren sie auf einer virtuellen Bank, wo Sie Sequenzen digitaler Signale an die Eingänge der Schaltung anlegen, die Ausgangsdiagramme und die Zeitabhängigkeiten der Ausgangssignale aufzeichnen und vergleichen sie mit den erwarteten Ergebnissen. Normalerweise findet man Fehler und schreibt wieder RTL.

Anschließend wird der logisch verifizierte Code als Eingabe in das Synthesizerprogramm eingespeist. Es wandelt eine Textbeschreibung der Schaltung in eine verknüpfte Liste digitaler Elemente aus der Bibliothek um, die für einen bestimmten FPGA-Chip verfügbar ist. In dieser Liste werden Elemente wie LUTs, Trigger und die Verbindungen zwischen ihnen angezeigt. Zu diesem Zeitpunkt sind die Elemente noch nicht an bestimmte Hardwareressourcen gebunden. Dazu müssen Sie der Schaltung Einschränkungen auferlegen – insbesondere angeben, mit welchen physischen I/O-Pins des FPGA-Chips die logischen Ein- und Ausgänge Ihrer Schaltung verbunden sind.

Diese Einschränkungen erfordern auch, dass Sie angeben, mit welchen Taktraten die Schaltung arbeiten muss. Die Synthesizer-Ausgabe und die Einschränkungsdatei werden an den Implementierungsprozessor gesendet, der unter anderem Platz und Route verwaltet.

Der Place-Prozess bindet jedes noch anonyme Element aus der Netzliste an ein bestimmtes Element innerhalb des FPGA-Chips. Als nächstes beginnt der Route-Prozess seine Arbeit, der versucht, die optimale Verbindung dieser Elemente für die entsprechende Konfiguration der FPGA-Schaltmatrix zu finden.

Place und Route basieren auf den Einschränkungen, die wir der Schaltung auferlegt haben: I/O-Pins und Taktrate. Die Taktperiode hat einen sehr starken Einfluss auf die Implementierung: Sie sollte nicht kleiner sein als die Zeitverzögerung der Logikgatter im kritischen Schaltkreis zwischen zwei aufeinanderfolgenden Flip-Flops.

Oft ist es nicht möglich, diese Anforderung sofort zu erfüllen, und dann müssen Sie zum Anfangsstadium zurückkehren und den RTL-Code ändern: Versuchen Sie beispielsweise, die Logik in der kritischen Kette zu reduzieren. Nach erfolgreicher Umsetzung wissen wir, welche Elemente wohin gehören und wie sie miteinander verbunden sind.

Erst danach beginnt der Prozess der Erstellung einer binären FPGA-Firmware-Datei. Es bleibt nur noch, es in echte Hardware zu laden und zu prüfen, ob es wie erwartet funktioniert. Treten in dieser Phase Probleme auf, bedeutet dies, dass die Modellierung unvollständig war und zu diesem Zeitpunkt noch nicht alle Fehler und Mängel behoben wurden.

Sie können zur Simulationsphase zurückkehren und eine Notfallsituation simulieren. Wenn dies nicht funktioniert, wird als letztes Mittel ein Debugging-Mechanismus direkt in der funktionierenden Hardware bereitgestellt. Sie können angeben, welche Signale Sie im Laufe der Zeit verfolgen möchten, und die Designumgebung generiert zusätzliche Logikanalysatorschaltkreise, die auf dem Chip neben Ihrem Design sitzen, eine Verbindung zu den Signalen herstellen, an denen Sie interessiert sind, und deren Werte im Laufe der Zeit speichern . Die gespeicherten Zeitdiagramme der gewünschten Signale können auf einen Computer heruntergeladen und analysiert werden.

UMSETZUNG DES PROJEKTS AUF FPGA

Nach dem Testen der Logikschaltung mittels funktionaler Modellierung ist es notwendig, sie auf dem Chip zu platzieren. Führen Sie dann eine Simulation der Schaltung durch und berücksichtigen Sie dabei die tatsächlichen Verzögerungen der Elemente, die nach der Platzierung der Schaltung auf dem Chip erhalten werden. Passen Sie ggf. die resultierenden Lösungen an. Anschließend wird die Schaltung in den FPGA geladen und auf dem Prüfstand getestet.

Reis. 82. Phasen des Entwurfs eines digitalen Geräts auf FPGA

Hauptphasen des FPGA-Designs (aus Vorlesungen):

    Ein Gerätediagramm wird entwickelt und in XILINX eingegeben.

    Die Implementierung wird durchgeführt (Übersetzung, Schaltungsbildung durch Extrahieren von Bibliothekselementen, Optimierung, Platzierung auf dem Chip).

    Programmierung.

  1. Assoziatives Gedächtnis. Organisation, Stichprobenverfahren, Unterschiede zur Adressspeicherung.

Assoziativer Zugriff implementiert die Suche nach Informationen basierend auf einem Merkmal und nicht auf deren Speicherort (Adresse oder Platz in der Warteschlange). In der vollständigsten Version werden alle im Speicher abgelegten Wörter gleichzeitig auf Übereinstimmung mit einem Merkmal überprüft, beispielsweise auf Übereinstimmung bestimmter Wortfelder (Tags – vom englischen Wort tag) mit dem durch das Eingabewort spezifizierten Merkmal (Tag-Adresse). ). Wörter, die das Kriterium erfüllen, werden ausgegeben. Die Disziplin für die Ausgabe von Wörtern, wenn mehrere Wörter einem Tag genügen, sowie die Disziplin für das Schreiben neuer Daten können unterschiedlich sein. Das Hauptanwendungsgebiet des assoziativen Speichers in modernen Computern ist das Daten-Caching.

In assoziativen Speichergeräten werden Informationen anhand eines in jeder Speicherzelle aufgezeichneten assoziativen Merkmals durchsucht.

In das Maskenregister wird ein Wort geschrieben, das eine Abfrage aller oder nur einiger Bits des assoziativen Attributs ermöglicht; mit einer Maske können Sie den Suchbereich verkürzen oder erweitern.

Die Suche nach Informationen erfolgt parallel über alle Zellen hinweg, indem die Anfrage mit dem assoziativen Merkmal jeder Zelle verglichen wird.

Das Suchergebnis wird von einer speziellen Kombinationsschaltung generiert, die Signale erzeugt, die über das Fehlen von Wörtern, die die Suchbedingungen erfüllen, über das Vorhandensein nur eines Wortes oder über das Vorhandensein mehrerer Wörter mit einem solchen assoziativen Merkmal informieren.

Nach der Erzeugung und Verarbeitung der Warnsignale liest die Steuerschaltung die notwendigen Informationen aus. Beim Schreiben wird anhand des Belegungsbitwerts eine freie Zelle gefunden und die Informationen werden in die erste gefundene freie Zelle geschrieben.

Die Prüfung der Belegungsziffer erfolgt durch Setzen der n-ten Ziffer (Besetztziffer) der Maske. Wenn Sie zusätzliche kombinatorische Schaltkreise im assoziativen Speicher verwenden, können Sie verschiedene logische Operationen ausführen, die maximale oder minimale Anzahl, die Anzahl der Wörter mit demselben assoziativen Merkmal usw. bestimmen. Die Speicherzellen eines assoziativen Speichergeräts müssen Elemente des statischen Speichers sein; im assoziativen Speicher wird auf alle Zellen gleichzeitig zugegriffen und darf nicht durch Regenerationszyklen unterbrochen werden. Der assoziative Speicher ist am schnellsten, aber sehr teuer, da er die Einführung einer zusätzlichen Vergleichsschaltung erfordert, die die Suche nach jeder Speicherzelle ermöglicht. Daher wird ein solcher Speicher normalerweise nicht in seiner reinen Form verwendet, und Speichergeräte vom Hochgeschwindigkeits-Cache-Typ werden normalerweise teilweise assoziativ implementiert.

INvollständig assoziativ Cache-Speicher (FACM, Fully Associated Cache Memory), jede Zelle speichert Daten und im Feld „Tag“ die vollständige physische Adresse der Informationen, von denen eine Kopie aufgezeichnet wird. Bei jedem Austausch wird die physische Adresse der angeforderten Informationen mit den „Tag“-Feldern aller Zellen verglichen und bei Übereinstimmung wird das Hit-Signal in jeder Zelle gesetzt.

Beim Lesen und dem Signalwert Hit = 1 werden die Daten auf den Datenbus ausgegeben, liegen jedoch keine Übereinstimmungen vor (Hit = 0), werden beim Lesen aus dem Hauptspeicher die Daten zusammen mit der Adresse in ein freies Feld gestellt oder die zuletzt nicht genutzte Cache-Speicherzelle.

Beim Schreiben werden in der Regel zunächst die Daten samt Adresse im Cache-Speicher abgelegt (in einer erkannten Zelle bei Hit = 1 und frei bei Hit = 0). Das Kopieren der Daten in den Hauptspeicher erfolgt unter der Kontrolle eines speziellen Controllers, wenn keine Speicherzugriffe stattfinden.

FACM-Speicher sind ein sehr komplexes Gerät und werden nur in kleinen Kapazitäten, hauptsächlich in Spezialanwendungen, eingesetzt. Gleichzeitig bietet dieser Cache-Speichertyp die größte funktionale Flexibilität und das Fehlen von Adresskonflikten, da jede Informationseinheit in jede Cache-Speicherzelle geladen werden kann.

Aus den Vorträgen:

Assoziative Speichergeräte

Der grundlegende Unterschied besteht darin, dass das System zum Abrufen von Informationen nicht auf der Grundlage einer eindeutigen Adresse erfolgt, an der sich die Informationen befinden, sondern auf der Grundlage eines bestimmten Merkmals, das tatsächlich Teil der gesuchten Informationen ist.

Information

Ein Tag ist ein charakteristisches Merkmal, mit dem zufällig eine Information gewonnen wird.

Vereinfachtes Diagramm eines assoziativen Gedächtnisses:

Die Speicherzone ist ein adressierbarer Speicher mit nummerierten Zellen, in dem Informationen und Tags gespeichert werden.

Um auf den assoziativen Speicher zuzugreifen, wird ein Beispiel des gewünschten Tags im Anforderungsregister abgelegt. Das Vergleichsschema vergleicht die Abfrage. Eine Übereinstimmung wird im Übereinstimmungsregister hergestellt, bei dem das Tag aus dem Speicher mit der Probe übereinstimmt. Reaktionen sind möglich (keine Übereinstimmungen; es gibt mindestens eine Übereinstimmung – in diesem Fall wird die gefundene Zelle im Datenregister abgelegt; mehrere Übereinstimmungen – der CS muss entscheiden, welche Zelle er zur Verarbeitung erhält).

Anwendung: Datenbank, Wissensdatenbank, PC als Cache.

Verwendung von FPGAs in modernen Geräten

Tupikow Pawel Andrejewitsch

Student im 5. Jahr, Abteilung für Kunst, Staatliche Technische Universität Omsk, Russische Föderation, Omsk

Heutzutage werden programmierbare logische integrierte Schaltkreise (FPGAs) zunehmend in verschiedenen modernen Geräten verwendet. Dies liegt daran, dass FPGAs gegenüber herkömmlichen digitalen Chips erhebliche Vorteile haben. Zu diesen Vorteilen gehören:

· Die vorübergehenden Eigenschaften des Produkts werden verbessert.

· Der Preis des Produkts sinkt.

· Produktabmessungen werden reduziert.

· Die Produktzuverlässigkeit steigt (die Anzahl der diskreten Chips nimmt ab)

Erhöht die Produktflexibilität (FPGAs können jederzeit neu programmiert werden)

Die FPGA-Architektur hat eine komplexe Struktur (Abb. 1)

Abbildung 1. Interne Struktur des FPGA

Wie aus Abbildung 1 ersichtlich ist, besteht der Hauptteil des FPGA aus programmierbaren und programmierbaren Logikblöcken interne Verbindungen.

Der Prozess der Programmierung (Firmware) des FPGA besteht darin, die notwendigen Verbindungen zwischen den Ein- und Ausgängen des Geräts herzustellen.

Heute gibt es zwei weltweit führende Hersteller von FPGAs. Dies sind die amerikanischen Unternehmen Xilinx und Altera.

Jedes Unternehmen bietet seine eigene CAD-Software für die Arbeit mit FPGAs an. Xilinx bietet das Xilinx Software Development Kit (SDK) an. Altera bietet Max+Plus II und Quartus II sowie das ModelSim-Modellierungssystem an.

Zur Erstellung von Firmware-Programmen werden üblicherweise Sprachen zur Beschreibung der Funktionsweise von Hardware verwendet; die heute gebräuchlichsten Sprachen sind die folgenden:

Verilog HDL.

VHDL ist die am schwierigsten zu erlernende Sprache, aber das ist auch der Fall größte Chancen auf funktionaler und verhaltensbezogener Abstraktionsebene, verfügt jedoch im Vergleich zu Verilog HDL über weniger Fähigkeiten auf der strukturellen Abstraktionsebene. Die VITAL-Bibliothek wurde entwickelt, um die Fähigkeiten der VHDL-Sprache zu erweitern (Abb. 2).


Abbildung 2. Abstraktionsebenen Verilog Und VHDL

Ein Beispiel für die Arbeit der Verilog HDL-Sprache ist ein auf dem FPGA CYCLONE III EP3C5E1444C8N des Mini-DiLab-Stands implementiertes Programm, dessen Gesamtansicht in Abb. dargestellt ist. 3.


Abbildung 3. Gesamtansicht der Platine Mini - DiLab

Dieses Programm implementiert das sequentielle Schalten der LEDs led0-led7 mit der Möglichkeit, die Bewegung des „Lichts“ mit den Tasten pba und pbb zu erhöhen und die Schaltgeschwindigkeit mit den Schaltern sw0 und sw1 zu steuern.

//Programmtext

Modul Projekt( Ausgabe LED, Eingang clk_25mhz, Eingang pba Eingang pbb

Eingang sw);

// Zweck interner Projektverbindungen

Draht s1;

Draht s2;

Draht s3;

// Rufen Sie andere Dateien (Unterprogramme) auf, die mit dem Projekt verbunden sind

Tr tr_1 (.out(s2), .set(pba), .res(pbb));

Zähler counter_1 (.q(s1), .clk(clk_25mhz), .up(s2));

Mx mx_1 (.a(s3), .in(s1), .load(sw));

Dc3_8 dc3_8_1 (.out(led), .in(s3));

Endmodul// Ende des Programms

Unterprogramm tr

Modul tr(out, set, res); // Ein Programm erstellen

// Zuordnung der Ein-/Ausgänge

Ausgabereg aus;

Eingang Satz;

Eingang res;

// Initialisierung

anfänglich

beginnen

Aus<= 1"d0;

// Hauptprogrammcode

stets @(negieren setzen bzw negieren res)

beginnen

Wenn(~(eingestellt))

Aus<= 1"d1;

anders

Aus<= 1"d0;

Endmodule // Ende des Programms

Unterprogrammzähler

Modul counter(con, q, clk,up); // Start des Programms

Ausgabereg con;

Ausgabe q = con;

Eingang auf, clk;

// Hauptprogrammcode

stets @(gestellt clk)

beginnen

Wenn(clk)

Wenn(hoch)

Con<= con - 1"d1;

anders

Con<= con + 1"d1;

Endmodul//Ende des Programms

Unterprogramm mx(Multiplexer)

Modul mx( Ausgangsreg A, Eingang In, Eingang Belastung);

// Hauptprogrammcode

stets @*

beginnen

Fall(Belastung)

2"b00: a = in;

2"b01: a = in;

2"b10: a = in;

2"b11: a = in;

Endgehäuse

Endmodul // Ende des Programms

Unterprogramm dc3_8 (Multiplexer)

Modul dc3_8(out, in); // Start des Programms

// Zuordnung der Ein-/Ausgänge

Ausgangsreg aus;

Eingangskabel In;

// Hauptprogrammcode

stets @*

beginnen

Fall(In)

3"d0: out = 8"b11111110;

3"d1: out = 8"b11111101;

3"d2: out = 8"b11111011;

3"d3: out = 8"b11110111;

3"d4: out = 8"b11101111;

3"d5: out = 8"b11011111;

3"d6: out = 8"b10111111;

3"d7: out = 8"b01111111;

Endgehäuse

Endmodul // Ende des Programms

Das Programm wurde in der CAD-Software Quartus II implementiert.

Nach dem Kompilieren des Programms erzeugte der Compiler keine Fehler oder Kommentare im Programm im Zusammenhang mit der Analyse und Syntax des Programms (Abb. 4).


Abbildung 4. Projektnachrichtenfenster

Die Kommentare des Compilers deuten darauf hin, dass es keine Lizenz für Quartus II gibt (die kostenlose Version des Programms wurde für das Training verwendet) und dass die für die Modellierung des Projekts erforderlichen Dateien fehlen.

RTL Die Struktur dieses Projekts ist in Abb. dargestellt. 5.


Abbildung 5. Projektumsetzung ( RTL Struktur)

Wie in Abb. 6 In diesem Programm wird nur ein kleiner Teil der Fähigkeiten dieses FPGA genutzt.

Abbildung 6. Teil des am Projekt beteiligten FPGA

Schlussfolgerungen: Programmierbare integrierte Logikschaltkreise können in vielen Geräten verwendet werden. Um den Umgang mit ihnen zu erlernen, sollte die Vertrautheit mit Hardwarebeschreibungssprachen (Verilog HDL und VHDL) in das Ausbildungsprogramm für Fachgebiete im Zusammenhang mit dem Design und der Konstruktion elektronischer Geräte eingeführt werden.

Referenzliste:

1. Grushevitsky R.I. Entwurf von Systemen auf Programmlogikchips / R.I. Grushevitsky, A.X. Mursaev, E.P. Düster. St. Petersburg: BHV Petersburg, 2002. - 608 S.

2. Kolomov D.A. Computergestützte Designsysteme Altra MAX+plus II und Quartus II. Kurzbeschreibung und Tutorial / D.A. Kolomov, R.A. Myalk, A.A. Zobenko, A.S. Filippow. M.: IP RadioSoft, 2002. - 126 S.

3. Maxfield K. Design auf FPGA. Kurs für einen jungen Kämpfer./ K. Maxfield. M.: Verlag „Dodeka-XXI“, 2007. - 408 S. (Übersetzung aus dem Englischen).

Während der Ferien habe ich ein kleines Projekt in Verilog gemacht, das ich schon lange ausprobieren wollte.

Der Kern des Projekts ist wie folgt: Ein (natürlich relativ) Hochgeschwindigkeits-ADC mit zwei Kanälen und einer parallelen Schnittstelle (14-16 Bit pro Kanal) ist mit dem FPGA verbunden. Der FPGA liest Daten vom ADC und fügt sie einem Puffer (seinem internen BRAM-Speicher) hinzu. Wenn der Puffer voll ist, stoppt der Lesevorgang und ein externes Gerät (Mikrocontroller) kann über die SPI-Schnittstelle Daten aus dem Puffer lesen. Sie können einige Parameter auch über SPI konfigurieren (dies wird im nächsten Beitrag besprochen).

Projekttest (Bild anklickbar).

Syntheseergebnis für Cyclone IVE

Das Ergebnis habe ich in Quartus II für ein FPGA der Cyclone IVE-Familie (EP4CE6E22A7) synthetisiert. Dies ist einer der einfachsten und kostengünstigsten FPGAs in einem QFP144-Gehäuse mit 6272 Logikelementen. Der Chip hat eine Speicherkapazität von 30K * 9 Bit. Benutzer-Pins – 92.

Chip EP4CE6E22A7
logische Elemente – 301 (5 %)
Stifte – 41 (45 %)
Speicher – 65536 Bit (24 %)
Worst-Case-Frequenz (125 °C) – 151 MHz.

Der Speicher beträgt 8 KB, dies ist der eigentliche Puffer, in den Daten geschrieben werden. Bei zwei Kanälen mit jeweils 16 Bit ergibt sich ein Ergebnis von 32 Bit pro Sample und 2048 Samples. Ich entschied, dass dies völlig ausreichte, obwohl der Puffer auf mindestens das gesamte Volumen erweitert werden konnte.

Die Frequenz ist durchaus zufriedenstellend, ich hatte erwartet, dass es eine Taktfrequenz von 50 MHz und einen ADC von 25 MHz geben würde. Das heißt, es wird ein dreifacher Frequenzspielraum erhalten.

Die Anzahl der Logikelemente ist für ein solches FPGA völlig unbedeutend, d.h. Wenn Sie möchten, können Sie dort noch viele andere Dinge hinzufügen, zumal noch 51 Pins übrig sind.

Es gibt eine neuere Cyclone 10-Familie.

Syntheseergebnis für Zyklon 10

Wählen Sie den Chip 10CL006YE144C8G. Es verfügt über die gleiche Anzahl an Logikelementen (6272) wie die Version auf Cyclone 4 und die gleiche Speichermenge (30 KB x 9). Der Fall ist derselbe, QFP144, es gibt sogar noch weniger Benutzerpins – 89.

Chip 10CL006YE144C8G
logische Elemente - 289 (5 %)
Stifte – 41 (46 %)
Speicher – 65536 Bit (24 %)
Worst-Case-Frequenz (85 °C) – 145,5 MHz.

Es ist merkwürdig, dass das Projekt hinsichtlich der logischen Elemente kompakter geworden ist. Das heißt, mit der gleichen Logikkapazität kann Cyclone 10 ein komplexeres Projekt bewältigen. Alles andere ist ungefähr auf dem gleichen Niveau.

Es stellt sich die berechtigte Frage: Ist es möglich, durch die Installation eines anderen FPGA oder CPLD Geld zu sparen?

Versuchen wir es mit FPGA MAX10.

Syntheseergebnis für MAX 10

Hier könnte der Leser (sofern er Bescheid weiß) ausrufen: Nein, so ist es nicht! Die MAX-Familie ist ein CPLD, kein FPGA, und diese Konzepte zu verwechseln ist offensichtlich unprofessionell!

Durch die Bemühungen der Intel-Vermarkter (jeder weiß, dass es sich um Intel-Chips handelt?) hat sich die MAX10-Familie jedoch in ein FPGA verwandelt, obwohl sie wie jedes CPLD über einen internen nichtflüchtigen Konfigurationsspeicher verfügt.

Wählen Sie also einen Chip, zum Beispiel 10M02SCE144A7G (2304 LE, 101 GPIO, 12Kx9 BRAM), QFP144-Gehäuse.

Mikroschaltung 10M02SCE144A7G.
logische Elemente – 298 (13 %)
Stifte – 41 (41 %)
Speicher – 65536 Bit (59 %)
Worst-Case-Frequenz (125 °C) – 153 MHz.

Wir sehen, dass die absoluten Indikatoren nahezu gleich geblieben sind, nur der Füllgrad des Kristalls hat zugenommen, was verständlich ist - 2304LE gegenüber 6272 LE.

Kann ich MAX II verwenden?

Die Frage ist nun: Ist es möglich, ein sehr günstiges CPLD wie MAX II zu verwenden? Hier ist alles komplizierter. Sie haben keinen BRAM-Speicher, d.h. Sie benötigen außerdem ein externes schnelles SRAM.

Um SRAM anzuschließen, benötigen Sie natürlich zusätzliche Logik. Wenn wir 4K x 16 Speicher verwenden, benötigen wir zusätzliche 16 Pins für Daten, 12 für Adressen und 3 für Steuerung (/cs, /we, /oe), also insgesamt 31 zusätzliche Pins.

Auch die Logik wird größer. Es ist schwer, genau zu sagen, wie viel, aber es passt zunächst nicht in einen CPLD auf 240 LE, aber vielleicht passt es in einen 570 LE.

Wir wählen CPLD EPM570 im QFP100-Paket. Wir benötigen nur 72 Pins, das Gehäuse hat 76 Pins für GPIO, d.h. Es sollte für alles reichen, aber es gibt nur sehr wenig Raum für Erweiterungen.

Vorteile dieser Lösung: möglicherweise geringerer Preis (auch unter Berücksichtigung des zusätzlichen SRAM-Chips), Nachteile: höhere Komplexität des Schaltungs- und Platinenbereichs.

Preisproblem

Folgendes habe ich mit efind gefunden. Die Mikroschaltungen unterscheiden sich geringfügig, aber die Zahl und der Buchstabe am Ende geben den Geschwindigkeitsindex und den Temperaturbereich (kommerziell) an. Da wir über eine dreifache Frequenzreserve verfügen, sind diese Zahlen für uns absolut nicht wichtig.

EP4CE6E22C8N – 456,55 R (Promelektronika, Ekb, Einzelhandel)
10CL006YE144C – 754,71 (Fünftes Element, St. Petersburg, Großhandel)
10M02SCE144C8G - 456 R (Elitan, Ekb, Großhandel)
EPM570F100C5N – 368 R (Hi-Tech, St. Petersburg) + Speicher (CY7C1021DV33-10ZSXI, SRAM 1MBIT 10NS 44TSOP) – 92,51 R (Promelektronika, Ekb, Einzelhandel)

Natürlich können Sie es auch günstiger finden, es handelt sich dabei nur um Einzelhandelspreise im Laden, aber das Verhältnis wird ungefähr gleich sein.

Es zeigt sich, dass die Variante mit CPLD preislich keinerlei Vorteile bringt, aber viele Nachteile mit sich bringt. Die übrigen Optionen sind ungefähr gleich, außer dass Cyclone 10 immer noch etwas teurer ist und nur wenige Leute ihn auf Lager haben. Allerdings handelt es sich hierbei um eine völlig neue Familie; alle Händler haben sie noch nicht auf den Markt gebracht.

Persönlich gefällt mir die Option auf MAX 10 am besten. Sie hat einen Vorteil: Sie müssen die FPGA-Konfiguration beim Start nicht laden. In der Cyclone 4-Version müssen Sie die FPGA-Konfiguration laden, was entweder über einen zusätzlichen Konfigurationsspeicherchip oder über einen Mikrocontroller erfolgen kann. Es gibt noch eine dritte Möglichkeit: über JTAG flashen und den Chip niemals von der Stromversorgung trennen. Ich habe gehört, dass das jemand getan hat. Ich weiß nicht, ob es ein Witz ist oder nicht, aber ich werde es auf keinen Fall tun.

Die Option mit Cyclone 4-Firmware über einen Mikrocontroller hat jedoch einen Vorteil: die Möglichkeit, die FPGA-Firmware über Benutzerschnittstellen zu aktualisieren: USB, Ethernet usw.

Eine weitere nicht triviale Option ist möglich: Installieren Sie überhaupt keinen Mikrocontroller, sondern flashen Sie eine Art eingebetteten Prozessor in das FPGA. Aber das ist keine sehr gute Option, vielleicht weil... In diesem Fall benötigen Sie auf jeden Fall externes ROM und RAM sowie mindestens eine USB-Brücke. Auf diese Option muss man natürlich nicht bewusst verzichten, sie erscheint mir aber schwieriger umsetzbar als mit einem Mikrocontroller.

Welche Funktionen diese Firmware erfüllt, werde ich im nächsten Beitrag schreiben.

Der Artikel unternimmt den Versuch, die Zusammensetzung der Begleitdokumentation für die entwickelten digitalen Module für programmierbare logische integrierte Schaltkreise (FPGAs) zu ermitteln. Entwickler müssen diese Begleitdokumentation dem Verbraucher/Kunden zur erfolgreichen weiteren Verwendung des entwickelten digitalen Moduls in ihren Projekten in der Phase des Entwurfs digitaler Geräte auf dem FPGA zur Verfügung stellen.

Einführung

Welche Art von Designdokumentation sollte der Entwickler also verlangen, wenn das Kundenunternehmen oder ein anderer Entwickler später ein „fremd“ entwickeltes Gerät in seinen Projekten verwenden wird? Dieser Artikel kann als „Spickzettel“ dienen, um zunächst korrekt technische Spezifikationen für die Entwicklung eines digitalen Geräts für FPGAs auszugeben und dann den Entwickler um Designdokumentation für ein bereits entwickeltes digitales Gerät zu bitten. Basierend auf früheren Erfahrungen mit der Konstruktionsdokumentation verwendet ein Unternehmen oder eine Firma normalerweise die folgenden Standards und Regulierungsdokumente:

  • GOST 2.102-68 ESKD. Arten und Vollständigkeit der Konstruktionsunterlagen.
  • GOST 15.101-98. System zur Entwicklung und Inbetriebnahme von Produkten. Das Verfahren zur Durchführung von Forschungsarbeiten.
  • GOST R 15.201-20-00. System zur Entwicklung und Inbetriebnahme von Produkten. Produkte für industrielle und technische Zwecke. Das Verfahren zur Entwicklung und Inbetriebnahme von Produkten.

In der Regel handelte es sich dabei um Firmware-Dateien und ein Programm (Beschreibung eines digitalen Geräts in VHDL/Verilog oder eine Reihe digitaler Schaltkreise, die in einem Schaltkreiseditor unter Verwendung von Bibliothekselementen der digitalen Logik, wie Flip-Flops, Register, Zähler, Decoder, entwickelt wurden , etc.) auf CD oder DVD und Programmieranleitungen. Und alle.

Der Autor stand beispielsweise vor dem folgenden Problem. Einer der Mitarbeiter entwickelte ein komplexes digitales Gerät mit mehreren Modulen. Ich habe alle Module in VHDL beschrieben und mir die Zyklogramme der Funktionsweise dieser Module und des digitalen Geräts als Ganzes auf einem guten und teuren Oszilloskop angesehen. Er kannte Prüfstandsdateien und die Möglichkeit, Simulationen durchzuführen, nicht oder wusste nicht, wie man sie schreibt; Kommentare zum Projekt und zu den Modulbeschreibungen gab es übrigens auch nicht. Die Situation kann noch schlimmer sein, wenn die Module durch digitale Schaltkreise dargestellt werden, die in einem Schaltkreiseditor unter Verwendung von Bibliothekselementen entworfen wurden. Hier liegt einer der Hauptnachteile: Außer dem Entwickler selbst ist es unwahrscheinlich, dass jemand anderes dieses digitale Gerät versteht, insbesondere wenn das Projekt mehrere Module umfasst und die Beschreibung jedes Moduls mehr als 100 Zeilen oder mehr als einen Monitor umfasst Bildschirm. Das heißt, wenn ein anderer Entwickler ein solches bereits entwickeltes digitales Gerät für FPGA in eine neue Entwicklung oder ein neues Projekt einführen möchte, muss er erneut Zeit in die Entwicklung dieses digitalen Geräts investieren.

Geschichte des Designproblems für FPGAs

Derzeit ist der FPGA-Markt einer der sich am dynamischsten entwickelnden. FPGAs werden in vielen Branchen eingesetzt. Derzeit gibt es keine eindeutige Methode, die alle Hardwareentwickler zufriedenstellt, um die FPGA-Konfiguration basierend auf dem Funktionsmodell des Geräts auf Systemebene zu erhalten. Der beliebteste Ansatz zur Lösung dieses Problems ist der Einsatz der IP-Core-Technologie (Intellectual Property Cores). IP-Cores sind vorgefertigte Komponenten, die es einfach machen, sie in Ihr eigenes Projekt zu integrieren, um ein komplexeres System zu erstellen. Dieser Ansatz hat einen wesentlichen Nachteil – die Anlagerung von IP-Kernen an die elementare Basis. Jeder IP-Kern ist für eine bestimmte Chipserie eines bestimmten Herstellers optimiert, was die Fähigkeit, bereits erstellte Geräte von einer Elementbasis auf eine andere zu übertragen, erheblich beeinträchtigt. Der geschlossene Charakter kommerzieller CAD-Architekturen macht es unmöglich, eigene funktionale Gerätemodelle auf Systemebene hinzuzufügen, um darauf basierend Gerätemodelle auf Registertransferebene (RTL) abzuleiten. Die Entwicklung eines digitalen Moduls erfolgt in Form einer digitalen Schaltung, die in einem Schaltungseditor unter Verwendung der integrierten CAD-Bibliothek des Herstellers mit grundlegenden Schaltungselementen wie Flip-Flops, Decodern, Zählern, Addierern usw. gezeichnet wird.

Ein weiterer beliebter Ansatz, der den Übergang von einem Funktionsmodell auf Systemebene zu einem Gerätemodell auf Registerübertragungsebene ermöglicht, ist die Verwendung von System-Level-Design-Sprachen (SLDLs). Zu diesen Sprachen gehören SystemC, Handel-C, VHDL, Verilog und System Verilog. Der Hauptvorteil ist die Unabhängigkeit von der Hardwarebasis, in der das Gerät implementiert wird.

Somit erhält der Hardware-Entwickler beim Einsatz der IP-Core-Technologie einerseits eine qualitativ hochwertige Lösung, die jedoch streng an die Hardware-Basis gebunden ist, in der das Gerät implementiert ist. Bei der Verwendung von Hardwarebeschreibungssprachen auf Systemebene ist die Geräteimplementierung hingegen hardwareunabhängig. Daraus folgt, dass es derzeit wichtig ist, die Hardwarebeschreibungssprache und IP-Kerne des Herstellers (Xilinx, Altera, Actel usw.) und Drittentwicklungsunternehmen gemeinsam zu nutzen, um den Designprozess digitaler Module zu beschleunigen. Bei der Verwendung digitaler Module von Drittherstellern kann es manchmal zu Informationsdefiziten in der Begleitdokumentation kommen.

Bereitstellung von Informationen über das entwickelte digitale Modul für FPGA

Abhängig von der Methodik zum Erhalten der FPGA-Konfiguration basierend auf dem Funktionsmodell des Geräts auf Systemebene kann der Entwickler die folgenden Arten von digitalen Modulen für den FPGA unterscheiden:

  • Software - ein entwickeltes digitales Modul, das dem Verbraucher in Form einer Beschreibung in der Hardwarebeschreibungssprache (VHDL, Verilog) übermittelt und/oder im Schaltplaneditor zur weiteren Verwendung in Programmen zur automatisierten Synthese von Logikschaltungen entwickelt und auf Funktionsparameter optimiert wird .
  • Firmware - ein von einem Drittentwicklungsunternehmen entwickeltes digitales Modul, genannt IP-Core, das in Form einer logischen Schaltung (Netzliste) an den Verbraucher übertragen wird, die auf der logischen Elementbibliothek des FPGA-Herstellers basiert und für funktionale und elektrische Parameter optimiert ist.

In der Phase der Dokumentationsentwicklung ist es auf der Grundlage persönlicher Erfahrungen erforderlich, zusätzlich zu den üblichen Konstruktionsdokumentationen und Spezifikationen gemäß GOST 15.101, GOST 15.201, GOST 2.102, GOST 2.114 Dokumentationen für alle Arten von zu erstellen Modelle (System, Logik, Schaltungstechnik), die in den Phasen des Entwurfs digitaler Geräte auf FPGAs erstellt wurden.

Mit anderen Worten: Die Designdokumentation für ein digitales Gerät für FPGAs muss neben der Firmware-Datei, Programmieranweisungen und einem aufgezeichneten Projekt auf CD/DVD auch eine Begleitdokumentation enthalten.

Tisch. Liste der Abschnitte der Begleitdokumentation

Abschnittsüberschrift Sicht
Software Firmware
allgemeine Informationen
Zweck und Umfang UM R
Technische Eigenschaften UM UM
Beschreibung der Reset-Signale UM UM
Beschreibung der Synchronisationssignale UM UM
Beschreibung der Schnittstellen UM R
Timing-Diagramme R UM
Beschreibung der Steuerregister UM UM
Strukturelles (funktionales) Diagramm R R
Programmierhandbuch UM UM
FPGA-Modell oder -Familie,
Firmenhersteller
R UM
Digitale Modulpräsentation
für Logikdesign auf FPGA
RTL-Modell UM Nein
Logikmodell Nein UM
Designeinschränkungen UM UM

Hier ist eine Liste der Abschnitte (Tabelle), die in der Begleitdokumentation für ein digitales Modulprojekt für FPGAs enthalten sein sollten. Für jeden Abschnitt werden Anzeichen für die Notwendigkeit angezeigt, den Abschnitt in den Dokumentensatz aufzunehmen:

  • „O“ ist ein erforderlicher Abschnitt;
  • „P“ ist der für die Lieferung empfohlene Abschnitt.

Empfohlene Dateiformate für die Einreichung unterstützender Dokumentation sind MS Word, PDF (bestes Format) und HTML. Beschreibungsdateien in der Hardwarebeschreibungssprache (VHDL, Verilog) und/oder entwickelt im Schaltplaneditor werden in der Form bereitgestellt, die die CAD-Software für die Entwicklung benötigt. Eine Ausnahme kann die zusätzliche Bereitstellung im Grafikformat (JPEG, BMP) von im Schaltplaneditor entwickelten digitalen Schaltungsdateien sein.

allgemeine Informationen

In diesem Abschnitt werden die allgemeinen Informationen zum entwickelten Digitalmodul in Form einer Beschreibung beschrieben:

  • Funktionsdiagramm und seine Komponentenblöcke/Teile;
  • Reset-Signale, Synchronisation;
  • angewandte Schnittstellen;
  • Kontrollregister;
  • Zeitdiagramm;
  • Programmierung.

Zweck und Umfang

Der Zweck des Digitalmoduls und seine Einsatzbereiche werden festgelegt.

Technische Eigenschaften

Es wird eine Beschreibung seiner wichtigsten technischen Merkmale bereitgestellt, wie z. B. Leistung, Stromverbrauch für einen bestimmten FPGA-Chip, die Anzahl der belegten Gates und der Typ des verwendeten FPGA-Chips. Darüber hinaus wird die CAD-Software des FPGA-Herstellers angegeben, die bei der Entwicklung des digitalen Moduls verwendet wurde, sowie die Software, die zur Modellierung und Verifizierung verwendet wurde. Für alle genutzten Programme werden die Version und installierte Updates angezeigt. Es erfolgt eine grafische Darstellung des Digitalmoduls in Form einer „Blackbox“ mit der Bezeichnung externer Ein-/Ausgänge und einer kurzen Beschreibung ihres Zwecks.

Beschreibung der Reset-Signale

Einzelheiten zu den Reset-Signalen finden Sie unten:

  • Liste externer und interner Reset-Signale.
  • Timing-Parameter und Timing-Diagramme von Reset-Signalen.
  • Schaltungen zur Generierung interner Reset-Signale, sofern vorhanden, sind Bestandteil des Digitalmoduls.
  • Beziehungen zu anderen Signalen (insbesondere Synchronisationssignalen).

Beschreibung der Synchronisationssignale

Hier die Details zu den Synchronisationssignalen:

  • Beschreibung externer Synchronisationssignale;
  • Timing-Parameter von Synchronisationssignalen;
  • Beschreibung der internen Synchronisationssignale und des Schemas zu ihrer Erzeugung;
  • Zeitbeziehungen zwischen Synchronisationssignalen aus verschiedenen Quellen;

Beschreibung der Schnittstellen

Es werden Merkmale der Nutzung aller Schnittstellen angegeben, die Teil des entwickelten digitalen Moduls sind, vorzugsweise vereinheitlicht, um die Interaktion mit anderen Knoten des Systems auf einem Chip zu organisieren. Darüber hinaus wird ein Internet-Link zu einer vollständigen Beschreibung der Standardschnittstelle oder eine Beschreibung der Schnittstelle selbst bereitgestellt. Derzeit werden AMBA-, PLB- und Wishbone-Busschnittstellen als einheitliche Schnittstellen für digitale Module akzeptiert.

Timing-Diagramme

Für die Organisation des Datenaustauschs über Schnittstellen und andere Ein-/Ausgänge des Digitalmoduls werden die notwendigen Informationen bereitgestellt: grafische Darstellung von Zeitdiagrammen, Beschreibung von Datenübertragungsprotokollen, Anforderungen an externe Signale, die dem Digitalmodul zugeführt werden (Dauer, Frequenz usw.) und andere Informationen.

Beschreibung der Steuerregister

Es wird eine Beschreibung aller Steuerregister des Digitalmoduls bereitgestellt. Eine typische Beschreibung des Steuerregisters enthält den Registernamen, die Registeradresse im internen Adressraum, den Anfangswert nach Entfernen des Reset-Signals, den Zugriffstyp (Lesen/Schreiben) und eine Beschreibung der internen Felder.

Strukturelles (funktionales) Diagramm

Es wird ein Bild der internen Struktur der Verbindungen der wichtigsten internen Knoten/Blöcke des Digitalmoduls sowie deren kurze Textbeschreibung bereitgestellt. Zusätzlich erfolgt eine Beschreibung der wichtigsten internen Bausteine ​​des Digitalmoduls. Der Zweck dieses Dokuments besteht darin, dem Verbraucher die Informationen zur Verfügung zu stellen, die er zum Verständnis der Funktionsprinzipien des Digitalmoduls benötigt.

Die Anzahl der beschriebenen Blöcke und der Umfang der Beschreibung werden vom Entwickler des Digitalmoduls bestimmt. Vorzugsweise entspricht die Mindestanzahl der beschriebenen Module der Anzahl der Elemente des Struktur-(Funktions-)Diagramms des Digitalmoduls.

Eine typische Beschreibung des Innengeräts enthält:

  • Zweck der Sperre;
  • strukturelles (funktionales) Diagramm des Blocks (falls erforderlich);
  • Betriebsarten und Algorithmen;
  • Arbeitszeitdiagramme;
  • Organisation der Blockverwaltung;
  • Organisation der Kommunikation mit anderen Blöcken;
  • irgendwelche andere Informationen.

Programmierhandbuch

Bietet alle notwendigen Informationen zum Programmierprozess mithilfe der CAD-Software des Herstellers des digitalen Moduls im FPGA, der erforderlichen Tools für Softwareentwicklung und Debugging sowie Softwarebibliotheken.

FPGA-Modell oder -Familie, Hersteller

Bei der Firmware eines Digitalmoduls werden der FPGA-Hersteller, das FPGA-Modell oder die FPGA-Familie und seine Geschwindigkeitseigenschaften angegeben. Für das Software-Digitalmodul werden Informationen über die Menge der belegten Ressourcen und die Anforderungen an den verwendeten FPGA bereitgestellt.

Darstellung eines digitalen Moduls für den Logikentwurf

In dem Artikel wurden die Schwierigkeiten bei der Verwendung eines „fremden“ Projekts in VHDL erörtert – das Fehlen geeigneter Richtlinien für die Benennung und Regeln für das Schreiben von Programmen. Außerdem wurden allgemeine Richtlinien zu Namen, gute Manieren beim Schreiben von Programmen und Richtlinien zur Synthese gegeben. Diese Fragen sollten möglichst detailliert mit dem Entwickler besprochen werden, wenn Sie in Zukunft planen, die Entwicklung oder Aktualisierung selbst fortzusetzen, bevor er mit der Entwicklung des RTL-Modells des digitalen Moduls auf dem FPGA beginnt. Dies gilt insbesondere für die Art des Software-Digitalmoduls auf FPGA. Dieser Teil des Artikels beschreibt die allgemeinen Anforderungen für das gesamte Projekt des entwickelten digitalen Moduls auf FPGA. Hier sind die Punkte, auf die Sie bei der Erstellung technischer Spezifikationen für die Entwicklung eines digitalen Moduls auf einem FPGA achten sollten, und dies betrifft insbesondere die Übertragung von Arbeitsergebnissen.

RTL-Modell

Ein digitales Modul, das in einer synthetisierten Teilmenge der Verilog- oder VHDL-Sprache beschrieben und/oder im Schaltplaneditor entwickelt wird, ist für den Einsatz in der Phase der FPGA-Logiksynthese vorgesehen. Geliefert wird die Software in Form eines zusammengestellten digitalen Modulprojekts in der CAD-Software des FPGA-Herstellers. Für das digitale Firmware-Modul wird das RTL-Modell im Rahmen einer separaten Vereinbarung bereitgestellt.

Zusätzlich zu den RTL-Modelldateien werden übertragen:

  • Anleitung zur Verwendung des Modells.
  • Beschreibung der im Modell enthaltenen Speicherblöcke, einschließlich Speichertyp, Größe, Anzahl der Speicherblöcke, hierarchischer Name des Speicherblocks.
  • Beschreibung des Prozesses zum Erstellen vorgefertigter Kernel mithilfe von Programmen zu deren Erstellung (z. B. CoreGenerator für Xilinx ISE). Mangels Beschreibungen kann es aufgrund der Technologie- und Herstellerabhängigkeit zu Einschränkungen bei der Neugestaltung und Anwendung kommen.
  • Bei Verwendung eines Mikroprozessors eines Herstellers (z. B. von Altera – Nios-Prozessor; von Xilinx – Microblaze, PowerPC-Mikroprozessoren) ist eine Beschreibung des Prozesses zur Konfiguration des Prozessorkerns und seiner Peripherie erforderlich.
  • Eine Reihe von Tests (Prüfstandsdateien) zur Verifizierung und Simulation eines digitalen Moduls, geschrieben in Verilog und/oder VHDL und/oder System Verilog.
  • Weitere zusätzliche Informationen.

Logikmodell

Das Modell ist eine Liste von Schaltkreisen, die mithilfe der Sprachen Verilog oder VHDL auf Basis der FPGA-Herstellerbibliothek beschrieben werden und für die Firmware des Digitalmoduls bereitgestellt werden.

Zusätzlich zu den logischen Modelldateien werden übertragen:

  • Anweisungen zur Verwendung dieses Modells.
  • Eine Reihe von Tests (Prüfstandsdateien) zur Verifizierung und Simulation eines digitalen Moduls, geschrieben in Verilog und/oder VHDL und/oder System Verilog.
  • Leitfaden zum Arbeiten mit einer Reihe von Tests zur Modellierung und Verifizierung eines digitalen Moduls.
  • Weitere zusätzliche Informationen.

Designeinschränkungen

Designeinschränkungen werden als Datei bereitgestellt, die eine Reihe von Einschränkungen beschreibt, die dem digitalen Modul auferlegt werden, wenn es in das System-on-Chip-Logikmodell einbezogen wird. Dieser Satz umfasst Takteinschränkungen, Zeiteinschränkungen, Einschränkungen bei der Interaktion des Digitalmoduls mit anderen Modulen und Betriebsbedingungen für das Digitalmodul. Bevorzugt wird das Synopsis Design Constraints (SDC)-Format oder das CAD-Format des FPGA-Herstellers.

Eine Beispielliste von Einschränkungen für Synchronisationssignale:

  • Zeitdiagramm (Uhrwellenform);
  • Instabilität der Taktfrequenz (Jitter);
  • Ändern der Taktfrequenzphase;
  • Dauer der Schaltzeiten (Übergangszeiten);
  • Zeitdiagramme abgeleiteter Taktwellenformen;
  • weitere zusätzliche Informationen.

Für Software- und Firmware-Digitalmodule sind eine Reihe von Einschränkungen für Synchronisationssignale erforderlich.

Beispielliste der Zeitbeschränkungen:

  • Ankunftszeiten an den Eingängen;
  • Zeitpunkt des Auftretens von Signalen an Ausgängen (erforderliche Zeiten an Ausgängen);
  • Mehrradwege;
  • falsche Wege;
  • Dauer der Datensignal-Umschaltzeiten (Datensignal-Übergangszeiten);
  • weitere zusätzliche Informationen.

Abschluss

Die folgende Begleitdokumentation für die entwickelten digitalen Module für FPGAs wird nach Vereinbarung zwischen dem Verbraucher und dem Entwickler bereitgestellt. Meistens stellt der Entwickler einfach ein digitales Modul bereit, das in VHDL, Verilog, System Verilog beschrieben und/oder in einem Schaltungseditor entwickelt wurde. Was die zusätzliche Dokumentation betrifft, lautet die Antwort des Entwicklers meist wie folgt: „Das digitale Modul funktioniert, also nehmen Sie es und nutzen Sie es.“ Es ist nicht kompliziert, die Schaltung in Hardware-Sprache zu beschreiben: Sie können es selbst herausfinden.“

Nach Meinung des Autors kann man alles herausfinden, alles hängt vom Wunsch und der aufgewendeten Zeit ab, und die Zeit, die für das Verständnis des Projekts „anderer“ für ein bereits entwickeltes digitales Modul aufgewendet wird, ist direkt proportional zur Erfahrung bei der Beschreibung von Geräten in VHDL. Verilog und Wissen über Digital- und Mikroprozessorschaltungen. Dies kann vermieden werden, wenn Sie sich zunächst mit dem Entwickler auf die Zusammenstellung der Begleitdokumentation einigen. Dann wird der Einsatz des digitalen Moduls in Ihrem Projekt einfacher und die Umsetzung geht schneller vonstatten.

Zusammenfassend möchte der Autor darauf hinweisen, dass man sich bei der Formulierung der Aufgabe, ein digitales Gerät auf einem FPGA zu entwickeln, an die Empfehlungen des Artikels halten sollte, damit es bei der Wiederverwendung oder Aufrüstung eines zuvor entwickelten digitalen Geräts nicht zu Problemen kommt.

Literatur

  1. Denisov A. Einige Tipps zum Entwerfen digitaler Geräte auf VHDL für FPGAs // Komponenten und Technologien. 2009. Nr. 12.
  2. GOST 2.102-68 ESKD. Arten und Vollständigkeit der Konstruktionsunterlagen.
  3. GOST 2.114-95 ESKD. Technische Bedingungen.
  4. GOST 15.101-98. System zur Entwicklung und Inbetriebnahme von Produkten. Das Verfahren zur Durchführung wissenschaftlicher Forschungsarbeiten.
  5. GOST R 15.201-20-00. System zur Entwicklung und Inbetriebnahme von Produkten. Produkte für industrielle und technische Zwecke. Das Verfahren zur Entwicklung und Inbetriebnahme von Produkten.