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.)
Antworten:
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:
Nachteile:
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).
quelle
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
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.
quelle
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
ping
Befehl 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.quelle
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.
quelle