Logikdesign für FPGAs mit C

Ich kenne mich gut mit der Programmierung von Prozessoren und Mikrocontrollern in C aus. Aber kann C-Code (nicht SystemC) für das Logikdesign für FPGAs verwendet werden? Gibt es spezielle Software-Tools für diesen Zweck?

Am Ende benötigt FPGA eine HDL-Sprache. Ich bin mir nicht sicher, wie gut die [Sprache] zu HDL-Compilern/-Konvertierern sind, aber die Sache ist, dass es am Ende alles HDL ist. C ist eine Programmiersprache (Softwaresprache). HDL ist eine hardwarebeschreibende Sprache (keine Software).

Antworten (3)

Ja , es ist möglich, High Level Logic (HLL) mit C oder C-ähnlichen Sprachen zu entwerfen. Hier ist eine Liste der beliebtesten Software-Tools:

Den Überblick zu behalten wird dadurch erschwert, dass sich diese Unternehmen regelmäßig gegenseitig komplett verschlucken, Namen ändern oder Produkte ganz einstellen.

Es sieht so aus, als ob der C-Code für alle Tools eine HDL-Zwischenstufe durchlaufen muss. Das Design wird also in Verilog oder VHDL übersetzt, und diese Tools erleichtern den Übergang, bevor es schließlich in Hardware umgesetzt wird. Denken Sie jedoch daran, dass Verilog und VHDL selbst Zwischenstufen sind. Sogar die Netzliste ist zwischengeschaltet. Die letzte Stufe wird eine proprietäre Binärdatei sein, die das FPGA neu konfiguriert. Das Entwerfen in C wird seine eigenen Herausforderungen und Kompromisse haben . Aber die Antwort auf die Frage ist ein klares Ja, Logikdesign in C ist möglich.

Eine schöne Einführung in C-to-FPGA wurde bereits 2005 geschrieben. Wikipedia hat eine schöne Liste von HDLs und Tools. Derzeit gibt es auch Tools für ähnliche Sprachen wie C, C++, Java, Python und Ruby. Bitte kommentieren Sie, wenn ich ein Tool verpasst habe, und ich werde es der Antwort hinzufügen.

Nein, FPGAs können nicht in C programmiert werden. Im Laufe der Jahre gab es verschiedene Versuche, eine C-ähnliche Sprache zu entwickeln, aber diese haben sich entweder nicht durchgesetzt und sind nicht vollständig gescheitert. Selbst diejenigen, die "erfolgreich" waren, würde ich nicht als echtes C bezeichnen. Sie könnten beispielsweise keinen bereits vorhandenen Code nehmen, der für einen Prozessor kompiliert werden soll, und ihn für ein FPGA neu kompilieren und erwarten, dass er funktioniert.

Verwenden Sie VHDL oder Verilog, Sie werden viel glücklicher sein.

Das ist falsch, es gibt Werkzeuge für den Logikentwurf in C. Ob sie nützlich sind oder "echtes" C verwenden, ist nur eine Meinung.
@trav1s Meinung vielleicht, aber eine solide Meinung. Impulse sagt zum Beispiel, dass "die Teile, die als dedizierte Hardware auf das FPGA verschoben werden, in der Ebene von C, die geschrieben werden kann, eingeschränkt sind ..." Sowohl Impulse als auch ROCCC arbeiten auf "untimed C" (kein Takt-Timing ist im Code angegeben), und es ist unklar, ob Sie "timed C" haben können. Es sieht fast so aus, als ob alle von Ihnen erwähnten Produkte auf die Beschleunigung von DSP-Algorithmen ausgerichtet sind und nicht auf die Entwicklung generischer Logik. Obwohl ich keine umfassende Recherche durchgeführt habe, scheint es, dass Sie mit diesen Tools keine einfache Logik wie einen UART ausführen können.

Wenn Sie ein System auf dem FPGA ausführen möchten, auf dem C ausgeführt wird, können Sie versuchen, einen CPU-Kern zu installieren. Dies macht jedoch den Zweck des FPGA zunichte.

Die Verwendung von C zum Programmieren von FPGAs wäre eine eher schlechte Designwahl, da C für iterative Programme und nicht für logische Arrays entwickelt wurde. Verilog und VHDL sind so konzipiert, dass Sie eine Struktur und keine Liste von Anweisungen erstellen.

Nun, da die Logik komplizierter wird und die FPGAs größer und billiger werden, ist es natürlich, C als Programmiersprache für FPGAs zu verwenden. Ich würde es nicht als schlechte Designwahl bezeichnen, da Sie damit SEHR große FPGA-Designs erstellen können ist viel übersichtlicher und kleiner und einfacher zu verwalten als Verilog oder VHDL. Natürlich hat es auch das Problem, schlechter C-Code kann wirklich schlechte HDL- und FPGA-Implementierung erzeugen, aber das geht mit jeder Programmiersprache.
C ist keine Programmiersprache. Ich stimme zu, dass Verilog nicht die ideale Sprache ist, aber C ist viel schlimmer. Es gibt sehr wenig zu gewinnen. C ist für iterative Programme konzipiert. Das bedeutet, dass alles, was Sie in Ihr FPGA einfügen, einen ITERATIVEN Prozess simulieren muss und nicht die ideale parallele Struktur, für die FPGAs am besten geeignet sind. Die Verwendung von C für FPGAs ist eine lächerliche Verschwendung von Ressourcen. Nun, eine neue Sprache im C-Stil, die für die Bedürfnisse von FPGAs entwickelt wurde, wäre nicht so schlecht.