Forum: FPGA, VHDL & Co. merkwürdiges Verhalten ab 25kHz


von OLEG (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

ich habe folgendes Problem, welches ich nicht verstehe:
Ich habe mir aus OP's einen Deltamodulator gebaut, welchen ich an zwei 
Pins des FPGA's angeschlossen habe.
Modul deltamod hat also einen Eingang und einen Ausgang.
Ist der Eing. 1, ist der Ausg. 0 und je nachdem wird im FPGA ein Zähler 
inkrementiert oder dekrementiert.

Jetzt das Merkwürdige Verhalten:
Gehe ich mit dem Deltamodulator-Takt zu hoch, habe ich Sprünge im Zähler 
wie im Bild "log_gnuplot_26kHz.png".

Normal sollte es immer so wie bei "log_gnuplot_20kHz.png" aussehen. Hier 
habe ich keine größeren Sprünge als + oder - 1. (Die Konfiguration lässt 
ja eig. nichts anderes zu.)

Woran könnte es liegen?
Benutze den MAX10 10M16DCF484C8G und den Internen Oscil sowie RAM.


Info zu vhdl-Dateien:
measurement.vhd bindet deltamod.vhd ein.
Der vhdl-Deltademodulator läuft ununterbrochen.
In measurement wird der Startpunkt einer Messung gesetzt:
-Werte des Deltamods in RAM speichern und anschließend über UART 
ausgeben.

Info zu Osci-Bildern:
blau: Deltamod FPGA-Ausgang
pink: Deltamod FPGA-Eingang
Grün: Analoger Integrator-Ausgang des Deltamods
Gelb: Deltamod Signal-Eingang (mittlere Aussteuerung)

Liebsten Dank.
Weitere Infos kann ich liefern. Mir geht es aber um die Sache wie mein 
Zähler intern im FPGA so zittern kann und nicht darum, dass ein 
selbstbau Deltamod seine Grenzen hat.

von Valko Z. (hydravliska)


Lesenswert?

Hi

hast du den Eingang einsynchronisiert?


Gruss

von OLEG (Gast)


Lesenswert?

nee hab ich nicht. Ich gucke einzig zur Steigenden den FPGA-Eing. und 
schalte dem entsprechend den Ausg.

Ist mir erst mal egal ob er den Eingang richtig erkennt.

Was ich nicht verstehe. Im Prog/Konfig ist das einzige, was ich mit dem 
8-bit-Signal mache, das Inrementieren und das Dekrementieren.
Es ist ein Überlaufen möglich aber doch keine Sprünge in Mitten des 
Wertebereichs.

von Achim S. (Gast)


Lesenswert?

OLEG schrieb:
> Ist mir erst mal egal ob er den Eingang richtig erkennt.

offensichtlich ist es das nicht, denn genau daher kommen die Sprünge in 
deinem Zähler.

Beim Zählen müssen ja mehrere Stellen deines Zählers gleichzeitig ihren 
Wert ändern. Zu den Sprüngen kommt es, wenn einige Bits deines Zählers 
glauben, sie müssen nach oben zählen, während andere Bits glauben, sie 
müssten nach unten zählen.

Das Problem vermeidest du, indem das externe Signal einsynchronisierst - 
dann zählen alle Bits deines Zählers in die selbe Richtung.

von OLEG (Gast)


Lesenswert?

ist ja lustig...

Tausend Dank es Funktioniert.

Jetz kann ich weiter experimentieren.

Werd jetz aber erstmal Lesen bis ich das Prob mit dem einsyncronisieren 
verstanden habe.

von Valko Z. (hydravliska)


Lesenswert?

Eine gute Quelle was Info angeht wäre die Seite von Lothar

http://www.lothar-miller.de/s9y/categories/35-Einsynchronisieren


Gruss

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.