Forum: FPGA, VHDL & Co. Pulserzeugung bei steigender Flanke


von DerDinsch (Gast)


Lesenswert?

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

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


Lesenswert?

> 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?

von DerDinsch (Gast)


Lesenswert?

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. :(

von g a s t (Gast)


Lesenswert?

>> 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

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


Lesenswert?

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