Hallo Ich habe folgendes Stück C-code. Alle Variablen sind im floating point format definiert. Kann man man diesen Code auch einem FPGA beibringen? while (1==1) { // initialisiere Parameter SIG_RUN = 0; // Pin für Ausgabe if (sIst < s1) { u = k1; t = 0; if (s1 > s) s1 = s; while ((sIst < s1) & (vNeu == vOld)) { sIst = u * t*t; if (sIst > 2000) SIG_RUN = 1; t = t + DeltaT; } if (vNeu != vOld) continue; } } Vielen Dank Frank
Kommt darauf an, was das darstellen soll. Du kannst definitiv mathematische Algorithmen in Hardware abbilden. Um was genau geht es denn eigentlich?
Hallo Es ist ein Rechenalgorithmus, der in Abhängigkeit von sIst einen digitalen Ausgang setzt. Der ganze Algorithmus ist noch etwas länger. Genau sollte er so funktionieren. Es werden von Aussen die Parameter k1, s1, sIst etc. vielleicht per SPI o.ä. im FPGA gesetzt. Anschliessend läuft der FPAG in der Schleife: while ((sIst < s1) & (vNeu == vOld)) { .. .. } bis eine der Abbruchbedingungen erfüllt ist. Er sprint dann wieder an den Programmanfang, liest die Parameter und geht wieder in die obige Schleife Der Algorithmus sollte von einem internen Taktsignal periodisch aufgerufen werden. Beste Grüsse Frank
Ja,da müsste man aber Einiges umschreiben. Floating Point sollte man wohl eher in fixed Point umwandeln, weil sich das effektiver auf einem FPGA abbilden lässt. Und die While-Schleife müsste man durch eine geeignete Kombination von VHDL-Konstrukten ersetzen. Schneller gehts mit sogenannten C-2-HW Tools, aber die gibts ja nicht gratis.... T.M.
Hallo Vielen Dank für Eure Rückmeldungen. Das klingt ja schon alles vielversprechend:) 1.) Ich habe mir gedacht, in VHDL gäbe es auch while-Schleifen:). Wenn die Routine dann periodisch aufgerfufen werden soll (DeltaT), ergibt sich dann ein Problem mit der Schleife? 2.) fixed point: Meinst du damit Real-zahlen, bei denen man die Genauigkeit hinter dem Komma angibt? 3.) C-2-HW Toos: Falls diese Variante gleich effizient ist wie unter Punkte 1, dann müsste es doch auch möglich sein, dass ich den Code schreibe und jemand, der über solche Tools verfügt compiliert sie mir:) 1 Schleifendurchlauf sollte etwa in Zyklus 1us möglich sein:) Beste Grüsse Frank
1) While "Schleifen" in VHDL wären nur synthetisierbar, wenn die Signale in der Bedingung konstant sind. 2) Fixed-point sind Festkommazahlen, da müsste man sich dann um die Genauigkeit kümmern. Es gibt zwar auch FloatingPoint-Libraries, die synthesefähig sind, nur bedeutet das einen viel höheren Ressourcenbedarf. 3) Solche Tools schlucken aber keinen "Stino" C-Code, sondern auf Untermengen von C aufsetzende Dialekte. Zum Beispiel Handel-C oder Impulse-C. Oder C++ mit zusätzlichen Libs, wie SystemC. Dein Design sollte sich auch normal in VHDL realisieren lassen... mit ein bisschen Aufwand, kommt drauf an, wie fit du in VHDL bist. T.M.
Die while in HDL hat hier nichts zu suchen! Den Loop im C muss man als state machine abbilden, was aber einfach ist. Die Rechenalgorithmik muss als mehrstufige untergelagerte state machine defiert werden, die von der ersten getriggert wird. Einen Bedarf für float sehe ich nicht. Die Werte müssen nur entsprechend gut aufgelöst eingespeist werden. Das ganze lässt sich in 1-2 Tagen codieren.
Hallo zusammen und vielen Dank für eure Rückmeldungen! Ich habe auch schon an eine State-machine gedacht, vor allem, weil der Algorithmus noch etwas komplexer ist, als hier dargestellt. Nach euren interessanten Antworten komme ich zum Schluss, dass es sich rentiert, die Sache mit FPGAs mal genauer anzuschauen. Ich denke, das beste ist, wenn ich mir erst mal ein gutes Buch bzgl. FPGA besorge und mir dann eines der kostenlosen Tools herunterladen. Dann kann ich auch das Ergebnis simulieren. @Michael: Bzgl. Auflösung. k1 >=0.0001 kann beliebig klein werden, s sehr gross <=500.000.000. .... Kann man mit den Dingern eigentlich auch mit 64 bit integer rechnen oder müsste ich mir hier zuerst die entsprechende Hardware zusammenstöpseln. Habt Ihr hier vielleicht ein gutes Werk, welches sich Eurer Erfahrung nach gut für den Einstieg eignet, auf der anderen Seite aber auch genügend Tiefgrund hat um die Leistungsfähigkeit eines solchen Chips bestmöglich zu nutzen. Mich würde hier vor allem auch die Vorgehensmethodik beim Schaltungsentwurf, Simulation, etc. interessieren. Ich habe gesehen, dass es bei ALTIUM ein sehr interessantes Board mit dem ALTERA Cyclon II gibt. Vielleicht macht es ja auch einmal Sinn so eines anzuschaffen. Vielen Dank Frank
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.