Forum: FPGA, VHDL & Co. VHDL - Signal fester Länger erzeugen


von Justus (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
ich habe eine Frage:

Aus der Grafik könnt ihr sehen, dass es sich um die Auswertung eines 
Gray Codes handelt. Zusätzlich soll das Signal IMP*4 erzeugt werden (ich 
vermute zur Drehzahlbestimmung).

Das Signal wird ja nun immer gesetzt, sobald eine Flanke an phi bzw. 
phi90 erzeugt wird. Wie bekomme ich es hin, dass das Signal dann immer 
für eine bestimmte Zeit anhält? (Zumindest sieht es so aus als hätten 
die Impulse immer die selber Länge)

Mein erster Gedanke war den Impuls beim Erkennen einer Flanke zu setzten 
und immer wenn der Takt kommt (steigende Flanke) den Impuls wieder zu 
löschen. Doch fester Länge wäre er dann ja nicht wirklich, wenn ich in 
einer Periodendauer 8 mal takte.

Viele Grüße Jus

von Kritischer Hans (Gast)


Lesenswert?

und wo ist nun die eindeutige Frage?

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


Lesenswert?

Worauf und wie soll das Ganze denn implementiert werden.

von Gustl B. (-gb-)


Lesenswert?

Deine Idee ist doch schon ganz ok. Phi und Phi90 sind vermutlich 
eingetaktet, also synchron zum Takt, jetzt setzt du dein IMP*4 immer für 
konstante Zeit (= gleiche Taktanzahl) auf 1 wenn dich Phi oder Phi90 
ändern.

Das Problem könnte sein, dass sich Phi oder Phi90 schneller ändern wie 
dein IMP*4 erlaubt. Also wenn du z.B. in der Grafik von die statt den 
kurzen IMP*4 Zeiten das deutlich länger auf 1 lässt, dann könnte es 
passieren, dass das gar nicht auf 0 zurückgeht weil wärend es noch auf 1 
ist sich schon wieder Phi oder Phi90 ändert.

Also du musst die Zeit/Anzahl der Takte richtig wählen, aber sonst 
müsste es so gehen.

-gb-

von Schlumpf (Gast)


Lesenswert?

Die Phi-Signale gehen durch zwei hintereinandergeschaltete Register:

Phi --> Reg_1 --> Reg_2 -->

Phi90 --> Reg90_1 --> Reg90_2 -->

Dann prüfst du, ob Reg_1 und Reg_2 ungleich sind und erzeugst einen 
Impuls.
Analog dazu verfährst du mit den beiden anderen Registern.

Die Ergebisse der beiden Prüfungen veroderst du und erhältst Imp*4

Voraussetzung dafür ist aber, dass dein Systemtakt deutlich schneller 
läuft, als die beiden Phi-Signale kommen.

von Schlumpf (Gast)


Lesenswert?

Ach ja, ich vergaß:
Die Auswerteschaltung für die Drehrichtung muss dann natürlich auch 
entsprechend verzögert "gefüttert" werden. Sonst hast du zum Zeitpunkt, 
wenn Imp*4 kommt, nicht den passenden gültigen Drehrichtungswert.

von Justus (Gast)


Lesenswert?

Hallo und Danke!

Das ganze soll denn mal auf einen Coolrunner 2.

Das mit der Flankenerkennung durch, ich nenne es mal "Verzögerung" war 
mir bereits bewusst (hatte das hier auf µC.net im Wiki gelesen, dass das 
mit rising_edge nicht geht).
Das Problem war eher, dass ich dachte, dass dieser Lösungsansatz nicht 
wirklich elegant/zielführend ist..

Da PHI und PHI90 in einer Periodendauer groß T (wird noch gemessen) vier 
verschiedene Zustände annehmen können, muss ich doch nach dem 
Abtasttheorem >8 mal in T abtasten, oder?

Viele Grüße

von Schlumpf (Gast)


Lesenswert?

Beschreib doch mal genau, was du brauchst.
Möchtest du einen Drehgeber an ein CPLD anschließen und an den Ausgängen 
des CPLD ein Richtungsignal und diese Imp*4-Pulse bekommen, um sie 
danach weiter verarbeiten zu können?

Wenn ja, dann hat Lothar das Prinzip dahinter sehr schön erklärt

http://www.lothar-miller.de/s9y/archives/53-Drehgeber,-Encoder,-Quadraturdecoder.html

und du kannst es an deine Bedürfnisse anpassen

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


Lesenswert?

Justus schrieb:
> muss ich doch nach dem Abtasttheorem >8 mal in T abtasten, oder?
Das Abtasttheorem lässt sich nur theoretisch hier anwenden, weil es 
streng genommen für die Reproduzierung analoger Signale gilt, und 
asymetrische Setup- und Hold-Zeiten den Abtastzeitpunkt ungünstig 
verschieben (können). In der Praxis würde ich für eine zuverlässige 
Flankenerkennung mindestens 3-4 mal überabtasten.

Justus schrieb:
> Zusätzlich soll das Signal IMP*4 erzeugt werden
> (ich vermute zur Drehzahlbestimmung).
Wie lange sollen die Pulse da sein? Ausgehend aus dieser Pulsdauer lässt 
sich dann die Taktfrequenz für das zu realisierende synchrone Design 
leicht ermitteln. Und da gilt sowieso: eher zu hoch als knapp an der 
Grenze...

Schlumpf schrieb:
> Beschreib doch mal genau, was du brauchst.
Und nicht, wie du es machen willst.

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.