Hallo! Im Rahmen meiner Bachelorarbeit bin ich dabei, eine Regelung eines Umrichters zu realisieren. Die Regelung läuft auf einem dSpace System, die Pulsweitenmodulation mache ich auf einem FPGA (XILINX Spartan 3AN Starter Kit). Das Problem, das ich jetzt noch habe, ist die Synchronisation der beiden Systeme. Das dSpace System läuft mit 10kHz, die PWM auf dem FPGA auch, dennoch kommt es bei den erzeugten Signalen nicht immer ganz zum erwünschten Ergebnis. Was ich benötige, ist ein kurzer Impuls, um meinen Counter auf 0 zu setzen, wenn ich am Eingang meines FPGA eine steigende/fallende Flanke anliegen habe. Der Puls sollte möglichst kurz sein, damit der Counter direkt wieder anfängt zu zählen und meine PWM damit synchron läuft. Vom Prinzip her also so: if rising_edge(Signal) then CLK_Reset <='1', '0' after 100ns; end if; Da ein Delay bei der Synchronisation des FPGA bekanntermaßen nicht funktioniert, habe ich bisher noch keine Lösung gefunden. Zum Designen nutze ich übrigens Altium Designer + VHDL. Ich hoffe, ihr könnt mir helfen. LG, DerDinsch
> nicht immer ganz zum erwünschten Ergebnis. Du willst damit sagen: "Ich bin zu 95% fertig. Eigentlich geht es ja, aber ab&zu gibts noch kleine Problemchen." Wieviele Takte hast du in deinem Design? Zur Erinnerung: ein Takt ist jedes XXX bei rising_edge(XXX), falling_edge(XXX) und bei XXX'event Wielviele XXX'e hast du? Welche Systemtaktfrequenz hast du? Noch was: verwendest du asynchrone Resets? Oder gar kombinatorische asynchrone Resets? > Was ich benötige, ist ein kurzer Impuls, um meinen Counter auf 0 zu > setzen, wenn ich am Eingang meines FPGA eine steigende/fallende Flanke > anliegen habe. Der Begriff "Einsynchronisieren von asynchronen Signalen" ist dir bekannt?
Danke schonmal für deine Antwort! > Du willst damit sagen: "Ich bin zu 95% fertig. Eigentlich geht es ja, > aber ab&zu gibts noch kleine Problemchen." Richtig. Mit der Pulsweitenmodulation erzeuge ich ein Sinusförmiges Signal, das jedoch auf Grund der leicht verschobenen Taktung nach einer Zeit sehr verrauscht und später wieder besser wird...usw. > Wieviele Takte hast du in deinem Design? > Zur Erinnerung: ein Takt ist jedes XXX bei > rising_edge(XXX), falling_edge(XXX) und bei XXX'event > > Wielviele XXX'e hast du? > Welche Systemtaktfrequenz hast du? Die Taktfrequenz des dSpace-Systems ist 10kHz. Von dort übergebe ich Pulszeiten, die sich auf insgesamt 250 Werte aufteilen (t0,t1,t2) und sich auf die Pulslänge der 10kHz beziehen. An meinem Counter habe ich also eine Frequenz von 10kHz*250=2,5MHz, um innerhalb der Pulsperiode von 0 bis 250 zu zählen. Danach bekomme ich dann wieder neue Werte vom dSpace System, die in der PWM bearbeitet werden. Der Counter muss also null gesetzt werden, damit er synchron zu dem System läuft. Ich hoffe, du kannst mir folgen. Ist es da von Belangen, wie mein Counter-Reset definiert ist (asynchron oder komb. asynchron)? > Der Begriff "Einsynchronisieren von asynchronen Signalen" ist dir > bekannt? Der Begriff ist mir leider nicht bekannt. :(
>> Der Begriff "Einsynchronisieren von asynchronen Signalen" ist dir >> bekannt? > > Der Begriff ist mir leider nicht bekannt. :( Das ist eines von Lothar's Lieblingsthemen. ;-) http://www.lothar-miller.de/s9y/categories/35-Einsynchronisieren
DerDinsch schrieb: > Der Counter muss also > null gesetzt werden, damit er synchron zu dem System läuft. Einsynchronisieren und anschliessende Flankenerkennung. http://www.lothar-miller.de/s9y/categories/18-Flankenerkennung Wobei die Frage nach dem Systemtakt des FPGAs (2,5MHz scheint mir arg niedrig...) noch nicht beantwortet wurde, genauso wenig wie die nach der Zahl der verwendeten Takte... > Ist es da von Belangen, wie mein Counter-Reset definiert ist (asynchron > oder komb. asynchron)? Ja, sehr: http://www.lothar-miller.de/s9y/categories/34-Getakteter-Prozess g a s t schrieb: >>> Einsynchronisieren von asynchronen Signalen >> Der Begriff ist mir leider nicht bekannt. :( > Das ist eines von Lothar's Lieblingsthemen. ;-) Ja, weils immer wieder kommt... ;-)
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.