Forum: FPGA, VHDL & Co. VHDL Signalgenerator


von Daniel H. (spirit)


Angehängte Dateien:

Lesenswert?

Hallo,

ich möchte ein Signalgenerator (kein Sinus) in VHDL programmieren, habe 
aber ein paar Anfangsschwierigkeiten. Die Signalform entspricht ungefähr 
dem Bild und soll das generierte Signal eines Sensors abbilden.

Als Eingangssignal bekomme ich die Periodendauer (16bit) und die 
Amplitude (8bit) des Signals.
Die Periodendauer soll zwischen 0,01msek und 6000 msek und die Amplitude 
zwischen von 0,5V bis 10V variiert werden können. Der verwendete 
DA-Wandler hat 16bit.

Nun zu meinem Problem:
1) Wie muss ich die Werte für den LUT skalieren um die Anforderung zu 
erreichen?
2) Wie berechne ich aus der Periodendauer die Phaseninformation des 
Signals? Die Phaseninformation entspricht ja der Adresse des LUT.

Ich habe mir gedacht zwei LUT zu verwenden LTU1 von -1 bis  max 
Amplitude und LUT2 von max Amplitude bis 0. Da, wenn mehrere Pulse 
aufeinanderfolgen, das Signal nur aus den Werten vom LUT2 zusammengebaut 
wird und nur am Anfang bzw. Ende die Werte aus LTU1 verwendet werden.


Danke für Eure Hilfe
Gruß
Daniel

von Topingenieur (Gast)


Lesenswert?

Das sieht nach einem pulsartig eingeschalteten Sinus an, der geglättet 
wird.

Das mit den 2 LUTs mag stimmen, keine Ahnung, schlauer wäre es, eine zu 
nehmen und an die entsprechenden Stellen zu springen und zu loopen, wie 
es Musikprogramme machen.

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


Lesenswert?

Daniel Hinz schrieb:
> Ich habe mir gedacht zwei LUT zu verwenden LTU1 von -1 bis  max
> Amplitude und LUT2 von max Amplitude bis 0. Da, wenn mehrere Pulse
> aufeinanderfolgen, das Signal nur aus den Werten vom LUT2 zusammengebaut
> wird und nur am Anfang bzw. Ende die Werte aus LTU1 verwendet werden.
Für mich ist hier 1 LUT ausreichend, weil das Signal offenbar 
punktsymmetrisch zum Nullpunkt ist.

> Nun zu meinem Problem:
> 1) Wie muss ich die Werte für den LUT skalieren um die Anforderung zu
> erreichen?
Du skalierst die Werte in der LUT so, dass du z.B. bei einer 12 Bit LUT 
alle Werte von x000 bis xFFF belegst. Alles andere wäre verschwendeter 
Speicherplatz.
> 2) Wie berechne ich aus der Periodendauer die Phaseninformation des
> Signals? Die Phaseninformation entspricht ja der Adresse des LUT.
Ähm, das ist jetzt aber allersimpelste Mathematik.
Angenommen, deine LUT hat 100 Stützpunkte, dann mußt du bei einer 
geforderten Zeit von 100ms jede ms die Adresse erhöhen (etwas 
vereinfacht, die Zahl kann sich durch halbieren und spiegeln der LUT 
halbieren).

von H. G. (Gast)


Lesenswert?

Solche Sensoren sind nie symmetrisch. Im Gegenteil: Das Signal 
entspringt in der Regel einer nichtlinearen Quelle und zeigt auch noch 
Tiefpass-Verhalten. Da muss alles aufgenommen und wiedergegeben werden.

Beitrag "Universell programmierbarer DDS-Funktionsgenerator"

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


Lesenswert?

G. H. schrieb:
> Solche Sensoren sind nie symmetrisch.
Woher weißt du, was für Sensoren das sind?

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.