Ich wollte wissen, ob ich CPLDs/FPGAs mit der Sprache C programmieren kann? Wenn ja, wird es allgemein praktiziert? Was sind die Schritte und die erforderlichen & Tools dafür?
Im Allgemeinen können Sie. Es gibt kostenloses SystemC für HLS (High Level Synthesis). HLS wird immer beliebter, aber Sie müssen bedenken, dass Sie CPLDs / FPGAs nicht in C-Sprache programmieren, sondern Hardware in C-Sprache beschreiben. Damit es auf echter Hardware funktioniert, benötigen Sie herstellerspezifische HLS-Tools.
Meiner Meinung nach ist das Schreiben einer synthetisierbaren Beschreibung in C schwieriger als in Verilog/VHDL, aber normalerweise geht es schneller, wenn Sie mit der Syntax vertraut sind und einige zusätzliche Regeln befolgen.
Für FPGAs ja. Ich glaube nicht, dass es viele Tools gibt, um CPLDs mit C anzusprechen (obwohl es theoretisch durchaus möglich sein sollte).
Ich spreche hier vielleicht von Häresie, aber (für mich) besteht der Vorteil von C-to-Gates darin, dass Sie einen großen Teil Ihrer Algorithmusentwicklung und -verifizierung in reinem C ausführen können (unter Verwendung Ihrer normalen C-Entwicklungsumgebung und gut verstandener Software). Tools/Debugger...) und sobald es zu Ihrer Zufriedenheit funktioniert, richten Sie es auf das FPGA aus.
Dann müssen Sie nur noch die C-to-Gates- Transformation (dh das Werkzeug) in Simulation und Hardware validieren. Wenn Sie Ihren Algorithmus in HDL schreiben, müssen Sie den Algorithmus in einer sehr langsamen Simulation verifizieren und dann Ihre Implementierung in Hardware (und/oder einer noch langsameren Simulation auf Gatterebene) verifizieren und validieren.
Möglicherweise müssen Sie für die Leistung iterieren (aber Sie mussten dies wahrscheinlich sowieso nach der Synthese tun, sogar in HDL, es sei denn, Sie waren sehr gut in der HDL-Optimierung ... und ich behaupte, dass Sie nach ein paar Monaten sehr gut in C- sein können. For-Gates-Optimierung und dann auch nicht so viel iterieren)
Dazu gibt es im Wesentlichen zwei Möglichkeiten: Eine ist mit HLS, wo Sie eine Beschreibung eines High-Level-Algorithmus in c schreiben und diese in HDL oder eine Netzliste übersetzt wird. HLS ist jedoch nicht wirklich für ein komplettes Design geeignet, normalerweise nur für einige wenige Teile. Die andere Möglichkeit besteht darin, eine Soft-CPU auf das FPGA zu setzen und diese dann in C zu programmieren. Einige FPGAs enthalten auch harte CPU-Kerne (Zynq hat ARM-Kerne, verschiedene Virtex-Chips haben PowerPC-Kerne) und diese können sicherlich in C programmiert werden.
jonk
arminb
Andersen Grün
gegangen