Was würde mich dazu bringen, Verilog oder VHDL dem schematischen Design auf CPLDs oder FPGAs vorzuziehen?

Ich habe absolut keinen Hintergrund in programmierbarer Logik, ich verwende hauptsächlich Mikrocontroller in meinen Projekten, aber vor kurzem musste ich mit Video arbeiten und der Mikrocontroller ist einfach zu langsam für das, was ich brauchte, also fing ich an, mit CPLDs zu spielen.

Ich konnte mit dem CPLD nur mit schematischem Design gute Ergebnisse erzielen, aber als ich nach Informationen zu CPLDs suchte, stieß ich auf viele Beispiele mit VHDL und Verilog. Ich bin neugierig, was mich dazu bringen könnte, mein Gerät in einer dieser Sprachen zu definieren. Was können sie, was der Schaltplan nicht kann? Werden sie hauptsächlich für Funktionen verwendet?

Bisher habe ich nur CPLDs verwendet, profitieren FPGA-Designs mehr von der Verwendung dieser Sprachen als CPLDs?

Sie werden wahrscheinlich von Anbietern bereitgestellte Synthesewerkzeuge sowohl für Verilog als auch für VHDL für Mainstream-Teile finden. Daher ist die Wahl reine Meinung. Ich würde Sie ermutigen, sich beide anzuschauen und zu entscheiden, welche Sie bevorzugen. Xilinx bietet gute Beispiele in beiden Sprachen, ich vermute, dass andere Anbieter dies auch tun.
Sie sollten sich auf jeden Fall von der schematischen Erfassung für das Logikdesign entfernen. Am Anfang fühlt es sich leichter an, aber das ist illusorisch. Meine 0,02 $ für Sprachen: VHDL ist ein Greuel, verwenden Sie Verilog.
@markt, warum denkst du, dass VHDL so schlecht ist?
Man könnte genauso gut sagen, dass Verilog ein Greuel ist, verwenden Sie VHDL. VHDL erwartet, dass Sie genau sagen, was Sie wollen, während Verilog eher rät. Aber das sind nur meine 0,02 £.
@Stacey ziemlich genau das, was Brian Drummond gesagt hat - VHDL ist viel, viel zu überspezifisch. Ja, es ist nützlich, sehr spezifisch sein zu können , aber dies zu verlangen , ist übertrieben und unnötig.
@markt, ich habe mit VHDL angefangen, also habe ich irgendwann die starke Typisierung davon geschätzt. Es zwang mich, darüber nachzudenken, was ich wollte, und gute Gewohnheiten zu entwickeln, als ich anfing. Jetzt bin ich viel zu weit im SystemVerilog-Lager, um mich ehrlich gesagt zu sehr darum zu kümmern.

Antworten (5)

Das schematische Design ist nur dann sinnvoll, wenn Sie nur einige Standardmodule (Zähler, Addierer, Speicher usw.) zusammenbinden. Aber die Implementierung eines tatsächlichen Algorithmus (z. B. eines Kryptografie-Hashing-Algorithmus) ist ohne HDL (wie VHDL oder Verilog) nahezu unmöglich, da es keine Möglichkeit gibt, ein System auf Verhaltensebene mit schematischen Symbolen zu beschreiben.

Die meisten Projekte werden in HDL im Verhaltensstil durchgeführt, da sie zu komplex sind, um von Hand synthetisiert und mit logischen Grundelementen schematisch gezeichnet zu werden.

CPLDs werden im Allgemeinen für die Glue-Logik und weniger für die Verarbeitung verwendet, und im Allgemeinen ist die Logik einfach schematisch zu implementieren, daher denke ich, dass Sie Recht haben, wenn Sie vorschlagen, dass FPGA-basierte Designs mehr von der Verwendung eines HDL profitieren.

In einem symbolischen Schaltplansystem können Sie sehr komplexe Dinge tun . Ich würde so weit gehen zu sagen, dass alles, was in einem HDL getan werden kann, in einem schaltplanbasierten System implementiert werden könnte, allerdings auf Kosten der Wartbarkeit. Solange das Toolset Symbolblöcke definieren kann, die als einzelnes Symbol fungieren, können Sie so ziemlich alles tun.
Ein gutes Beispiel ist hier labview. Es ist eine symbolische Programmierschnittstelle, in der Menschen äußerst komplexe Systeme entworfen haben, die ganze Fabriken automatisieren. Das Endergebnis ist nahezu nicht zu warten, aber es ist möglich (Anmerkung: Ich spreche nicht darüber, ob es eine gute Idee ist, sondern nur über die grundlegende Realisierbarkeit).
„Die meisten Projekte werden in HDL im Verhaltensstil durchgeführt …“ ist nicht tragbar und entspricht tatsächlich NICHT der Funktionsweise von Design-Flows.
@ConnorWolf Muss nicht zustimmen, dass Labview-Code so nicht wartbar ist - nicht, dass ich ein großer Fan wäre. Es gibt einige Best Practices, die wirklich helfen. Für mich ist es normalerweise das Aufgeben jeglicher Hoffnung auf Vorwärts- oder Rückwärtskompatibilität, das Wartungsprobleme verursacht, im Gegensatz zu allem, was der G-Sprache eigen ist ;)

Ein paar praktische Aspekte zusätzlich zu Jays ausgezeichneter Antwort:

  • Fehler. Die Schaltplan-Tools sind in der Regel fehlerhafter* als der Rest des Toolsets. Dies liegt möglicherweise an der Bevorzugung von Verilog/VHDL gegenüber Schaltplänen in der Industrie, und daher wird der Schaltplaneingabe von den Softwareentwicklern weniger Aufmerksamkeit geschenkt.
  • Geschwindigkeit. Der Schaltplan muss zuerst in ein HDL konvertiert werden, bevor er an das Synthesetool übergeben wird. Dies kann sich negativ auf die Bauzeit auswirken. Das generierte HDL ist möglicherweise auch nicht sehr gut lesbar, falls Sie es aus irgendeinem Grund überprüfen müssen.
  • Portabilität. Abhängig von der Menge der verwendeten herstellerspezifischen Primitiven sind Verilog und VHDL mehr oder weniger zwischen Geräten portierbar. Beim Portieren von Schaltplänen müssen Sie entweder alles neu zeichnen oder sich auf die bereitgestellten Import-/Exportfunktionen (falls vorhanden) verlassen.

*Mein Lieblingsfehler in Xilinx ISE war die Unfähigkeit, vertikale Drähte auszuwählen.

Es gibt viele Vorteile einer HDL (Hardware Description Languages) als Design-Entry-Standard.

Die Beschreibung der Funktionalität kann auf einer höheren Ebene erfolgen, HDL-basierte Designs können zu einer Beschreibung einer ausgewählten Technologie auf Gate-Ebene synthetisiert werden. Ein HDL-Design ist leichter verständlich als eine Netzliste auf Gate-Ebene oder eine schematische Beschreibung und HDLs Reduzieren Sie Fehler aufgrund einer starken Typprüfung.

Die Hardwarebeschreibungssprachen VHDL und Verilog wurden für die Modellierung von Hardware mit der Absicht entwickelt, auf einer höheren Abstraktionsebene zu modellieren, die Merkmale wie Parallelität, Timing, Hierarchie, Wiederverwendung von Komponenten, Zustandsverhalten, synchrones Verhalten, asynchrones Verhalten, Synchronisation und inhärente Parallelität umfasst .

Probleme treten während der Synthese auf, wenn die Entwurfsbeschreibung einem bestimmten Prozess und einer Gate-Implementierung zugeordnet wird. Dies erfordert, dass Sie die High-Level-Funktionen von HDL nicht verwenden können – Sie müssen „synthetisierbares Verilog/VHDL“ erstellen.

Sie haben also HDL für die Synthese und HDL für die Simulation, und die synthetisierbare Teilmenge ist werkzeugspezifisch.

Sie können nicht von einer Verhaltensdesignbeschreibung zu einer Netzliste/einem Netzlayout wechseln. Sie können Ihr Design jedoch so strukturieren, dass es Verhaltenskomponenten enthält, die auch einen synthetisierbaren Aspekt haben, der miteinander verglichen werden kann. Sie beginnen mit dem Verhalten und sobald das funktioniert, schreiben Sie es für die Synthese um (was eine Teilmenge ist). Sie gehen vom Allgemeinen zum Spezifischen und bauen nebenbei Prüfstände auf.

Ein weiterer Vorteil ist, dass HDLs dieselben Vorteile wie normale Programmiersprachen haben, indem sie in Standard-Versionskontrollsystemen verwendet werden können, um Änderungen zu untersuchen usw.

Ergänzend zu dem bereits Gesagten: Textdarstellungen sind einfach viel handlicher, gerade in großen Projekten. Sie können (wenn auch mit großen Schwierigkeiten) jedes synthetisierbare HDL in ein Schaltbild umwandeln, aber mit Hunderten von Zeilen reinem Text ist es einfacher zu arbeiten als mit Hunderten von Schaltplanelementen.