mikrocontroller.net

Forum: FPGA, VHDL & Co. Integrale in VHDL numerisch berechnen


Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es irgendwelche Tricks, wie man Integrale in VHDL berechnen lassen 
kann / lassen sollte?

Ich habe 2-dimensionale und 3-dimensionale Integrale zu berechnen und 
würde jetzt einfach entsprechende Schleifen benutzen und numerisch 
Addieren.

?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marco schrieb:
> einfach entsprechende Schleifen benutzen und numerisch Addieren.
So geht das nicht. Denn mit einer Schleife in VHDL wird parallele Logik 
erzeugt. Und je nach dem wie groß das Array ist, sind entsprechend viele 
Addierer nötig. Für ein 4x4 Array werden das also z.B. 15 Addierer... 
:-o

Du wirst vermutlich eine FSM bauen müssen, die nacheinander jedes 
Element aus dem Array abholt und addiert.

Wie groß sind deine Arrays?
Liegen die in einem Speicher (RAMs sind nur wortweise addressierbar)?

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

das ist mir schon klar mit der FSM, so war es auch gemeint. Ich benutze 
3 Schleifen x,y,z, die mir eine entsprechende Zahl von Durchläufen 
generieren und z.b. (x+2)*(y+2)*(z+2) * 10ns brauchen.

Die Frage geht eher dahin, ob man nicht irgendwie was verbessern kann.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marco schrieb:
> Die Frage geht eher dahin, ob man nicht irgendwie was verbessern kann.
Das kommt erst mal darauf an, wie die Daten abgelegt sind. Wenn die in 
einem BRAM liegen, könnte man evtl. über die Wortbreite noch etwas 
parallelisieren, denn da (beim Speicherzugriff) dürfte der eigentliche 
Flaschenhals sein...

Autor: Jürgen S. (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Parallelisieren kann man, indem man z.B. Teile des Designs doppelt 
aufbaut und jeweils von 0... n/2-1 bzw. das parallele Design von n/2 ... 
n-1 zählt, integriert und hinherher addiert. Das kannst du für jede 
Ebene machen, wodurch du 8 designs hast, die 8 Räume eines 2x2x2 Würfels 
berechnen.

Je nachdem, wie die Formel aussieht, kann die Synthese sogar noch 
Kombinatorik vereinachen und zusammenfassen, wenn die Addition der 
beiden Stränge VOR der Summation / Integration der logischen Schleife 
liegt.

Du bekommst dann logischerweise 1/8 des Zeitbedarfs.

>denn da (beim Speicherzugriff) dürfte der eigentliche
>Flaschenhals sein...
Optimal ist es, wenn man die Daten für die parallelen Stränge gleich in 
verschiedene RAMs reinleiten kann.

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.