Forum: FPGA, VHDL & Co. Differentialgleichungen in VHDL-AMS


von Niko (Gast)


Angehängte Dateien:

Lesenswert?

Hello World =)
Wie kann man Differentialgleichung als simultane Gleichung in VHDL-AMS 
schreiben?
Dies ist eine mögliche Klausurfrage und ich habe keine Ahnung, wie ich 
die angehen soll...

von Duke Scarring (Gast)


Lesenswert?

Wo sind die Vorlesungsunterlagen? Wenn Du uns hier schon die 
Klausuraufgaben gibst...

von John D. (Firma: Privat) (doejohn)


Lesenswert?

Niko schrieb:
> Hello World =)
> Wie kann man Differentialgleichung als simultane Gleichung in VHDL-AMS
> schreiben?
> Dies ist eine mögliche Klausurfrage und ich habe keine Ahnung, wie ich
> die angehen soll...

Hi,

dx/dt = x_(n) - x_(n-1)/(t_(n) - t_(n-1). Angenommen das Design ist 
synchron, dann ist t_(n) - t_(n-1) deine Sampling-Rate oder 
Sampling-Clock. Dann vereinfacht sich obige Formel, zu x_(n) - x_(n-1), 
d.h du subtrahierst einfach die beiden aufeinanderfolgenden Werte von x.

Das gleiche kann man für d2x/dt2 machen, überlasse ich dir als Übung. 
Und google mal nach Digitalen Filter, das ist nämlich was deine 
Gleichung beschreibt.

Gruss,
  JD

von Niko (Gast)


Lesenswert?

Muchas gracias JD =)
Leider erschließt sich mir das System nicht!

Hier ist ein pdf dazu 
http://publications.eas.iis.fraunhofer.de/papers/2001/020/paper.pdf, 
z.B.:
i = c_value ⋅ dv/dt

wird dann so geschrieben:
i == c_value*v'DOT

x_(n) - x_(n-1)/(t_(n) - t_(n-1) sehe ich leider nicht, warum!

Kann jemand eine Seite oder ein Buch empfehlen?

von Trundle T. (shaheed)


Lesenswert?

Was JD  gemacht hat ist eine kontinuierliche Differentialgleichung in 
eine Differenzengleichung umzuwandeln, d.h kontinuierlich -> diskret 
(habs jetzt nicht nach gerechnet, aber es geht ums Prinzip). Wenn du 
jetzt mal folgenden Versuch im Kopf durchspielst verstehst du es 
hoffentlich.

1.Du nimmst jetzt deine eigene Diffenrentialgleichung (die für den 
Ladestrom vom Kondensator) wandelst sie entsprechend der Gleichung von 
JD um und implemetierst die in einem FPGA, n ist dabei irgendein x-Bit 
(bsp 16 Bit je nach dem wie genau das ganze werden soll) Vektor den 
speicherst halt mehrfach in Register (Bsp Register x(n) kommt der zur 
Zeit aktuelle Wert rein, x(n -1) wäre dann ein Register in dem du den 
vorherigem Wert speicherst (oder doch für den nächsten Wert??), etc). So 
dann verrechnest du entsprechend der obigen Differenzengleichung die 
gespeicherten Werten aus den Reigstern und gibts das dann auf einen 
Ausgang(n-
Bitbreit).

2. du bastelst dir jetzt ein ADC vor den Fpga, der dir entsprechend 
einen x-Bit digital Wert liefert (vom Fpga gesamplet ist das dann n). 
Zusätzlich bastelst du dir einen DAC ebenfalls an den Fpga, dieser soll 
den berechneten Ausgangswert der Differenzgleichung wieder in einen 
Analogwert wandeln.

So wenn du jetzt parallel dazu nen Versuch aufbaust in dem du abhängig 
von einer wählbaren Spannung einen Kondenstor entlädst/lädst und den 
Strom mist, dabei die freiwählbare Spannung an den ADC -> FPGA -> DAC 
weitergibst und nun den wirklichen Strom mit der Ausgangsspannung vom 
DAC vergleichst, dann werden die beiden Größen einen, bis auf nen 
Vorfaktor, gleichen Verlauf zeigen.
Vorausgesetzt du hast richtig gerechnet und deine Bitweite und 
Abtastrate passen einigermaßen. Jedoch weiß ich net wie man die für 
entsprechende Anwendung korrekt auslegt.

von Trundle T. (shaheed)


Lesenswert?

Zusatz:

-Stichwörter zum googlen wären : zeitdiskret Filter, z-Transformation, 
Diffenrenzengleichung

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.