Konvertieren Sie C in FPGA

Ich bin neu in der Programmierung für FPGAs, daher wurde mir empfohlen, einen verfügbaren C/C++-zu-VHDL-Übersetzer zu verwenden.

Das Problem ist, dass es Unmengen an Informationen gibt und fast alle guten Programme eine teure Lizenz benötigen.

Ich werde ein Xilinx FPGA (wahrscheinlich ein Virtex-6) bekommen und damit eine gültige Lizenz zur Nutzung von Vivado HLS und ISE haben. Also, meine Idee, wie man einen C-Algorithmus in das FPGA umwandelt, ist folgende:

1 - Konvertieren Sie den Algorithmus von C nach VHDL und optimieren Sie ihn mit Vivado HLS (bereits aus Tutorials verstanden, wie dieser Schritt ausgeführt wird)

2 - Verwenden Sie die neu generierten VHDL-Dateien in ISE, um einen Bitstream zu generieren (keine Ahnung, wie das geht)

3 - Verwenden Sie den Xillybus , um ein C-Programm mit dem FPGA (mit dem Bitstream) zu verbinden und Informationen zu senden/empfangen, um die Ausgänge sehen zu können.

Bin ich auf dem richtigen Weg und fehlt mir ein Schritt? Zu Schritt 2: Ist es einfach, den Bitstream in ISE zu generieren, oder brauche ich viel Wissen über Portweiterleitung?

Wenn Ihr VHDL für die Synthese ausgelegt ist, drücken Sie in Schritt 2 im Grunde nur eine Taste in Vivado (dann Fehler überprüfen, Ihre Fehler korrigieren und es erneut tun, bis Sie alle Fehler behoben haben).
Dieser 1-Knopf-Druck ist in ISE/Vivado und nicht in Vivado HLS, richtig? Und dieser Knopf, auf den Sie sich beziehen, erzeugt den endgültigen Bitstream?
Ist es wirklich ein komplexer Algorithmus? Vielleicht lohnt es sich, es für Hardware auf die richtige Weise neu zu implementieren.
Auf jeden Fall im ISE. Ich habe Vivado noch nicht viel benutzt. Wenn Sie die Schaltfläche zum Generieren eines Bitstroms drücken, werden alle früheren Schritte (Synthese, Mapping, Place & Route) im Workflow für Sie ausgeführt, sofern sie noch nicht ausgeführt wurden.
@ Eugene Sh: Ja, der Algorithmus ist ziemlich komplex, aber ich bin mir ziemlich sicher, dass dies mit den richtigen Vivado HLS-Optimierungen richtig gemacht werden kann. Und außerdem ist Vivado HLS nur eine Zwischentestphase, in Zukunft muss ich oder jemand den Code in HDL wahrscheinlich von Grund auf neu implementieren
@The Photon Ok ty für den Rat. Also nur zur Verdeutlichung: Sie denken, es ist besser, Vivado HLS zu verwenden, um VHDL/Verilog zu generieren, als ISE, um den Bitstream zu generieren, richtig? Was ist mit dem Schritt, den Bitstream an das FPGA zu senden und die Ausgabe zu beobachten, kennen/empfehlen Sie Xillybus oder machen Sie das mit einer anderen Xilinx-Software?
Nein. Entscheiden Sie sich für das eine oder andere Werkzeug. Die Leute von Xilinx empfehlen Vivado dringend für neue Designs. Ich gehe davon aus, dass das Workflow-Management noch in Vivado vorhanden ist, aber ich habe es noch nicht verwendet. Ich weiß nichts über Xillybus, hatte noch nicht einmal davon gehört, bis Sie es erwähnt haben.
Hast du dir opencl angeschaut? Ich mag die Integration von Altera in den C-Code auf dem Host, sie abstrahiert gewissermaßen den Teil der Datenbewegung für Sie. Xilinx scheint eine Lösung zu haben, aber ich weiß nicht so viel darüber xilinx.com/products/design-tools/sdx/sdaccel.html
vivado ist das gleiche. 1-Knopf-Bitstream-Generierung.
Vivado kann nicht für Geräte vor der 7er-Serie verwendet werden. Gemeinsam: Die Übersetzung von C in HDL spart nicht so viel Zeit, wie die Flyer vorhersagen. Darüber hinaus müssen Benutzer auch die zugrunde liegende Hardware kennen, um die richtigen Synthesehinweise auszuwählen.
Ok Leute, danke für die Antworten, ich denke, Vivado (und Vivado HLs zum Konvertieren von C in VHDL/Verilog) ist eine gute Wahl, um den Bitstream zu generieren und an den FPGA zu senden. Aber was ist mit dem Testen der empfangenen Daten vom FPGA, das kann man auch mit Vivado machen? Ich habe mir Xillybus angesehen, weil es sehr unkompliziert aussieht.
@SomeHardwareGuy Ich habe nicht ganz verstanden, für welchen Schritt das Xilinx-Programm gedacht ist. Können Sie mich informieren, bevor ich gehe und Stunden damit verbringe, Tutorials anzusehen/zu lesen?
@SomeHardwareGuy oh und von dem, was ich sehe, ist SDAccel noch nicht veröffentlicht

Antworten (1)

Beantworten Sie Ihre Kommentarfrage hier, wo ich mehr Platz habe. Angenommen, Sie haben eine Anwendung, die Sie auf einem Linux-Rechner entworfen haben, und sie führt einen Algorithmus aus, den Sie zum Zählen der Anzahl von Katzenbildern im Internet geschrieben haben. Jetzt läuft es, aber es ist langsam, weil es eine Menge Katzenbilder zu durchlaufen gibt, also möchten Sie es in Hardware beschleunigen.

Sie verwenden dieses Tool also, um OpenCL-Code zu schreiben, der in C vorliegt, jedoch mit einigen Einschränkungen hinsichtlich der Form, da er für die Ausführung auf einem FPGA "kompiliert" wird. Diesen Teil des Code-Kernels nennen wir. Jetzt werden diese Kernel synthetisiert und auf dem FPGA ausgeführt, vielleicht haben Sie 1 oder vielleicht 100, die parallel arbeiten.

All dies erledigen Sie direkt in Ihrer Anwendung, inline. Wenn Sie also an den Punkt kommen, an dem Sie die Katzen tatsächlich zählen, verwenden Sie deren APIs, um die Verarbeitung auf dem FPGA durchzuführen.

Ich habe gerade deinen anderen Kommentar gesehen, dass es noch nicht draußen ist, ich weiß, dass Alteras Sachen schon eine Weile draußen sind, du kannst hier eine Menge Designbeispiele finden

Alles in allem hängt es davon ab, was Ihr Ziel hier ist. Möchten Sie lernen, wie man Verilog schreibt, Prüfstände testet und ein FPGA-Designer wird? Oder möchten Sie Algorithmen oder Funktionen nur mit Hardware beschleunigen, ohne das alles zu tun?

Wie bei jedem Werkzeugsatz hängt es von der jeweiligen Aufgabe ab, welches man verwendet.

Ty für die gute und vollständige Antwort und für den Link von Altera. Leider ist das FPGA, das ich verwenden werde, von Xilinx, also denke ich, dass ich das SDK von Altera nicht verwenden kann, oder? Zu Ihrer Frage: In der ersten Phase besteht das Ziel nur darin, Algorithmen zu beschleunigen und sie in FPGAs implementiert zu sehen, sodass das SDK von Altera und das SDAccel von Xilinx ausreichen würden. Wenn ich richtig liege, dass ich das SDK von Altera nicht für ein Xilinx-FPGA verwenden kann und weiß, dass SDAccel noch nicht da draußen ist, ist meine Lösung dann Vivado HLS (Programm, das ich jetzt aufgrund der langen Tage des Lesens von Tutorials gut verstehe) und dann Vivado zu ...
...mit dem FPGA kommunizieren. Sind Sie einverstanden?
Ja, das klingt so, es wird sowieso eine gute Lernerfahrung.