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
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.
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).
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"
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.