www.mikrocontroller.net

Forum: FPGA, VHDL & Co. C-Code


Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Xenu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommt darauf an, was das darstellen soll.
Du kannst definitiv mathematische Algorithmen in Hardware abbilden.

Um was genau geht es denn eigentlich?

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Jürgen Schuhmacher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ups, soory, vor lauter Schumi... Ich wollte eigentlich sagen Jürgen
anstatt Miachel:)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.