Simulation des FPGA-Designs ohne die eigentliche Hardware

9

Ich bin neu im FPGA und nehme derzeit an der HDL-Klasse (insbesondere Verilog) teil. Ich habe ausreichende Kenntnisse im digitalen Design wie kombinatorischen und sequentiellen Schaltungen.

Ich möchte ein Projekt erstellen, das dem in diesem YouTube-Video gezeigten ähnelt .

Ich weiß auch, dass Xilinx ISE Logiksignale verarbeiten und Wellenformen simulieren kann. Verfügt es über zusätzliche Funktionen wie das Erhalten der Eingangssignale über USB, Kamera usw. und das Ausgeben auf Ihrem Computer?

Ist es möglich, dieses Projekt (wie eine Simulation im Computer) auszuführen, ohne eine tatsächliche FPGA-Karte zu kaufen? Was ich meine ist, kann ich dieses Projekt auf meinem Computer erstellen, codieren und ausführen und einfach meine Kamera über USB anschließen und dann die eingehenden Videosignale von HDL-Simulatoren wie Xilinx ISE usw. verarbeiten lassen (ohne wirklich zu kaufen) ein FPGA-Board und synthetisiere dein Projekt dort, ich habe derzeit nicht das Budget, um eines zu haben)

(Was ich wirklich meine, ist, das HDLl-Design in reale Quellen, C-Code usw. zu integrieren.)

Will es
quelle
5
Ich weiß nicht, ob Sie das mit dem Simulator von Xilinx tun können, aber so etwas wie Icarus Verilog ermöglicht es Ihrer Simluationsschnittstelle, C-Code zu verwenden, der Daten aus realen Quellen erhalten könnte. Es ist jedoch wahrscheinlich, dass es um Größenordnungen langsamer als in Echtzeit ausgeführt wird, sodass die Verarbeitung einer Live-Videoquelle schwierig wäre.
Chris Stratton
1
Oh, das ist der Satz, den ich finde und der mit Quellen aus der realen Welt verbunden ist
WantIt
2
@vvavepacket stimme den Kommentaren / Posts zu, um dem Kommentator / Poster zu danken.
Chetan Bhargava
1
Das FPGA im Video sieht aus wie Altera DE2. Es liegt zwischen 200 und 600 USD, abhängig von Lizenz und Chip. Es gibt Simulatoren bei csc.kth.se/~emille/niisim
Niklas
2
Der Terasic DE0-nano liegt in der Größenordnung von 80 US-Dollar und kann an Kameras und LCDs angeschlossen werden. Tatsächlich haben sie Demos davon auf ihrer Website. Nicht mit ihnen verbunden, aber der DE0-Nano hat ein hübsches kleines FPGA auf einem Board mit angemessenem Preis. Ich habe es immer gehasst, wie teuer die meisten Entwickler-Boards sind.
Akohlsmith

Antworten:

5

Soweit ich weiß, können die Xilinx-Tools nicht in Echtzeit ausgeführt werden. ModelSim (von Actels Libero IDE verwendet) kann
ich auch nicht über Open-Source-Simulatoren kennen. Es gibt einige ziemlich exotische Projekte, daher ist dies möglich etwas, das dies tun könnte.

Dies kann jedoch eine Antwort sein, nach der Sie nicht gefragt haben (ich werde sie löschen, wenn sie nicht hilfreich ist), aber ich würde in Betracht ziehen, ein eigenes FPGA-Board zu bauen, um dies zu tun, oder zumindest auf dem Weg dorthin loszulegen. Ich habe mein erstes FPGA-Board geätzt und obwohl es sehr einfach war (das Board nicht der Prozess ;-)), hat es mir sehr schnell sehr viel beigebracht.

Vorteile:

  • Billig
  • Springen Sie direkt in die Tiefe und erfahren Sie alles, was Sie über die Hardware-Überlegungen wissen müssen. Erzwingt, dass Sie zuerst die meisten Datenblätter lesen und Ihren eigenen Startercode schreiben, der meiner Meinung nach oft besser ist als der Plug-and-Play-Entwicklungsansatz für das Lernen.
  • Legen Sie nur das an die Tafel, was Sie brauchen.
  • Bringen Sie Sie mit möglicherweise dem gleichen Aufwand / Recherche weiter an Ihr Ziel eines real funktionierenden Designs heran, als wenn Sie herausfinden würden, wie Sie alles in Echtzeit simulieren können.

Nachteile:

  • Ich muss noch einen Programmierer kaufen, obwohl billige Versionen der Xilinx / Altera-Programmierer bei eBay zu finden sind.
  • Wenn Sie sich nicht auf das Design und die Probleme der Leiterplatten- / Signalintegrität konzentrieren möchten, sind Sie möglicherweise nicht an einem Großteil des Wissens interessiert, das Sie auf diese Weise gewinnen können.

Ich verstehe, dass das Ätzen Ihres eigenen Boards wahrscheinlich unnötig ist. Ich habe es nur getan, weil ich die FPGAs dort hatte, ungeduldig war und nicht 2 Wochen auf das Eintreffen einer Leiterplatte warten wollte. Hier gibt es extrem günstige Angebote für 2-Layer-Boards, mit denen Sie Ihr Design zumindest ausführen können (möglicherweise mit niedrigeren Geschwindigkeiten als letztendlich gewünscht - normalerweise beträgt die Mindestschichtanzahl für ein Hochgeschwindigkeits-FPGA-Design 4, dies sind jedoch viel teurer)

Auf jeden Fall bietet Spirit Circuits einen völlig kostenlosen 2-Lagen-PCB-Deal mit "nackten Knochen" an (einen pro Monat, ein Design, keine Maske oder Siebdruck), der sich für ein einmaliges Design als nützlich erweist.
Für günstige 2- und 4-lagige billige Prototyp-Boards kosten ITead und Seed Studio nur 10 US-Dollar für 10 Boards (oder möglicherweise 5 zu diesem Preis).

Oli Glaser
quelle
sehr interessante Einstellung dazu! und ermutigend auch
Davidbak
6

Das Standard-Xilinx ISE-Webpack (die kostenlose Version, die Sie von xilinx.com herunterladen können) enthält einen Simulator namens iSim. Es ist kein großartiger Simulator, aber voll funktionsfähig und der Preis stimmt.

Obwohl ich die Altera-Tools nicht verwendet habe, würde es mich überraschen, wenn kein Simulator enthalten wäre.

Aber ... Sie müssen wissen, was ein Simulator kann und was nicht. Für den Anfang kann es kein FPGA simulieren, das mit voller Geschwindigkeit läuft. In der Tat sind sie ziemlich langsam. Abhängig von der Komplexität des zu simulierenden FPGA würde es mich nicht überraschen, wenn die Simulation von 1 ms "simulierter Zeit" 1 Minute dauert. Wenn Sie eine Stunde "simulierte Zeit" simulieren möchten, sind 1000 Stunden Echtzeit erforderlich.

Außerdem kann ein simuliertes FPGA nicht direkt mit Dingen wie Ihrem USB-Anschluss kommunizieren. Das simulierte FPGA kommuniziert mit einer "Testbench". Die Testbench ist ein Teil des VHDL- oder Verilog-Codes, der die Eingänge des FPGA (oder Teile des FPGA) speist und die Ausgabe Ihres FPGA überprüft. Sie können einige ziemlich komplexe Dinge in einer Testbench ausführen, z. B. Gleitkommazahlen verwenden, Dateien lesen und schreiben und Logik ausführen, die nicht synthetisiert werden kann.


quelle
1
Altera hat kostenlose Ausgaben von Quartus, die ModelSim enthalten. Die kostenlose Version von ModelSim begrenzt Ihre Simulationsgeschwindigkeit, und die kostenlose Version von Quartus begrenzt die Anzahl der für die Synthese verwendeten CPU-Kerne, ist aber ansonsten voll funktionsfähig.
Akohlsmith
1
Altera ModelSim unterstützt keine Co-Simulation von VHDL und Verilog im selben Design.
Shuckc
3

Ich kenne keinen Simulator, der direkt mit Signalen verbunden ist, die an einem USB-Anschluss (oder einer anderen Hardware) ankommen.

Zumindest theoretisch wäre es möglich, eine Software zu schreiben, die an einem Port ankommende Signale aufnimmt und diese in eine Testbench-Datei übersetzt, die ein Simulator verarbeiten könnte. Leider kenne ich keine vorhandene Software, um dies zu tun, und es wäre entschieden nicht trivial, sie selbst zu schreiben.

Jerry Sarg
quelle
dann ist der beste Weg, um ein Einstiegs-Low-Cost-Fpga-Board für n00bs wie mich zu bekommen
WantIt
Sie müssen keine Testbench-Datei durchgehen, wenn Sie einen Simulator haben, der eine Schnittstelle zu benutzerdefiniertem Code wie einem VPI unterstützt. Da der Simulator jedoch um Größenordnungen langsamer als in Echtzeit ausgeführt wird, ist es möglicherweise einfacher, damit umzugehen mit erfassten Daten in einer Datei, die mit der Geschwindigkeit der Simulation gelesen werden kann.
Chris Stratton
@ChrisStratton Ich bin an der Idee interessiert, Daten in einer Datei zu erfassen. Irgendwelche Ressourcen dafür? Vielen Dank
WantIt
Dies hängt vollständig von den Peripheriegeräten ab, die Sie als Datenquellen verwenden möchten.
Chris Stratton
3

Sie müssen eine Co-Simulationsschnittstelle (DPI, VPI, VHPI, FLI) verwenden, mit der Sie Code schreiben können, der sich in den Simulator einhakt und so eine Brücke zwischen der in der Simulation ausgeführten RTL und der realen Hardware auf Ihrem Computer schlägt.

Die wesentlichen Probleme (abgesehen von schlecht dokumentierten Schnittstellen) sind Synchronisation und Timing. RTL, das in der Simulation ausgeführt wird, ist weitaus langsamer als echte Hardware. Sie müssen in der Lage sein, die Interaktionen mit der externen Schnittstelle schrittweise durchzuführen, um die Simulationsgeschwindigkeit anzupassen. Einige Hardware-Schnittstellen mögen das nicht! Wenn Sie beispielsweise TCP verwenden, müssen Sie möglicherweise die Timer im Kernel-Stack verfälschen, um falsche Neuübertragungen usw. zu vermeiden.

Icarus unterstützt den VPI und ist kostenlos, sodass Sie experimentieren können, ohne Geld für Lizenzen auszugeben. Möglicherweise möchten Sie sich vorhandene Frameworks ansehen, die einen Teil des Co-Simulations-Schwerhebens ausführen und dem Simulator eine sauberere Abstraktion bieten. Ein solches Framework ist Cocotb , eine Open-Source-Bibliothek, die dem Simulator eine Python-Schnittstelle bietet. ( Haftungsausschluss: Ich bin einer der Entwickler von Cocotb.)

Ein Beispiel, das relevant sein könnte: Gestern habe ich eine RTL aktiviert, um auf Ping-Anfragen zu antworten, und eine Testbench erstellt, die eine TUN-Schnittstelle öffnet. Sie können dann die Schnittstelle mit dem pingBefehl pingen, und die in der Simulation ausgeführte RTL empfängt den Ping und antwortet. Die gesamte Testbench besteht aus weniger als 50 Python-Zeilen! Der Quellcode für dieses Beispiel befindet sich auf Github und läuft unter Icarus unter Linux.

Chiggs
quelle
0

In den allermeisten Fällen bleibt alles, was Sie in der Simulation tun, in der Simulation. Sie können nicht auf echte Hardware zugreifen - Sie müssen ein Simulationsmodell der realen Hardware haben.

Wenn Sie jedoch bereit sind, einige Anstrengungen zu unternehmen, verfügen die meisten Simulatoren über eine Schnittstelle zu beliebigem Code. In Verilog ist es eine ziemlich Standardschnittstelle, wie ich es verstehe, so dass die Verilog-Seite der Dinge zwischen Simulatoren portiert wird. In VHDL-Land gibt es eine Standardmethode, aber mindestens einer der großen Anbieter hat seine eigene Vorgehensweise!

Denken Sie auch daran, dass eine Schnittstelle in Echtzeit (dh mit der Geschwindigkeit, mit der das FPGA dies tun würde) sehr unwahrscheinlich ist - und der Rest Ihrer Simulation (HDL) wird auch nicht in Echtzeit ausgeführt. Wie in den Kommentaren erwähnt, ist eine simulierte Echtzeitverarbeitung von Videos auf diese Weise nicht möglich.

Persönlich musste ich das nie ausprobieren. Ich finde, ich bin produktiver beim Schreiben von Hardwaremodellen und beim Ausführen von VHDL.

Aber übersehen Sie nicht die Vorteile der Simulation - es ist eine viel schnellere Möglichkeit, festzustellen, ob die Dinge funktionieren (Kompilierungen dauern Sekunden), als Bitstreams zu erstellen (Kompilierungen dauern mehrere zehn Minuten bis Stunden) und sie in Hardware zu testen.

Martin Thompson
quelle
Unwahr, siehe Kommentare zur Frage.
Chris Stratton
OK, ich hätte klarer sein sollen - ich habe meine Antwort auf die Stufe "Ich bin neu im FPGA" beschränkt :) Antwort aktualisiert
Martin Thompson