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