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


von Marco (Gast)


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.

?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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)?

von Marco (Gast)


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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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...

von J. S. (engineer) Benutzerseite


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.

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
Noch kein Account? Hier anmelden.