Hallo, hab jetzt schon ein Weilchen wegen meinem Problem gesucht... Ich hab das soweit verstanden, dass wenn ich einen niedrigen Takt im CPLD brauche, ich das am besten über die Enable Leitung mache... Habe nun das Problem, dass ich zwei EXTERNE Takte habe. Das Problem ist folgendes: Zum Zeitpunkt meiner Initialisierung ist nur ein Takt A vorhanden (66 MHz). Nach der Initialisierung stehen beide Takte A & B zur Verfügung, aber weitere externe Signale sind nach der Initialisierung zu diesem neuen Takt B synchron. Der Takt B liegt so zwischen 20 MHz und 80 MHz. Kann ich das intern im CPLD irgendwie umschalten? Vielen Dank für eure Hilfe
Hast Du denn die Information, wann Dein neuer Takt stabil verfügbar ist (nach der Initialisierung)? Dann damit geeignet auf die neue Clock umschalten. Rick
Ja diese Information habe ich. Ich weiss nicht wie ich auf den neuen Takt umschalten soll. Ein Multiplexer sollte man dort ja nicht verwenden...
Du könntest Takt B (neu, langsam) mit Takt A (alt, schnell) über ein/zwei FF (ist ja im CPLD eher knapp) einsynchronisieren. Dann sollte auch der MUX kein Problem sein. Rick
@Rick: Was machst du dann gegen Spikes beim Umschalten? Ein ordentlicher Clock-Mux braucht entweder spezielle Hardware (die es in CPLD mWn nicht gibt) oder einen ziemlichen Hardware-Aufwand mit einer ganzen Reihe von Flipflops (von denen man im CPLD meist zu wenig hat). Da hilft dann nur ein externen Taktschalter.
> einsynchronisieren... > Takt A = 66 MHz (Start) > Takt B = 20 MHz - 80 MHz Da scheidet einsynchronisieren wohl aus. Vielleicht kannst du während des Umschaltens den Rest des CPLDs über einen Zähler, der immer mit dem Takt A betrieben wird, im Reset halten. Dazu wären dann ja nur wenige 66MHz-Clocks (und somit nur ein "kleiner" Zähler mit wenig FFs) nötig. Dann ist eine Umschaltung über einen MUX kein Problem. Problematisch ist ja nur das Umschalten an sich, da dabei Glitches auf dem Takt entstehen könnten. Wenn die Schaltung im Reset ist, machen die nichts aus (muss in dem Fall natürlich ein asynchroner Reset sein). > Da hilft dann nur ein externen Taktschalter. Damit wäre die Umschaltung dann ohne Spikes/Glitches möglich.
@Lothar Miller: Die Frequenz von Takt A hatte ich überlesen. Somit fällt einsynchronisieren wirklich aus. Rick
@Jörg Du soltest dich mal zum Beispiel in das Thema: PCI Bus mit seiner spezifischen (FSM) einlesen, bzw. ein echtes PCI Eval Board besorgen. Mir hat das sehr geholfen, nicht nur Selbst-Befriedigung im Speicher mit den Sim-Tools zu machen. Du bekommst nach einiger Zeit da ein gutes Gefühl dafur was für gute u. schlechte Code-Techniken im Netz rumgeistern bzw. was für dedizierte I/0 oder Reset-Pinne man dem Teil noch so aufbürden sollte und kann. Durch ständiges spielen daran wird man immer besser. Nun kommt man aber leider dadurch zu dem Schluss: Je mehr man darüber weiss, desto .... weniger .... Und schwups is schon nen neues und besseres "Männerspielzeug" auf dem Markt, das man sich holen sollte, und an dem man sich wieder austoben kann. Der gute alte LANZ BULDOG mit seiner (FSM) warum habe ich den nicht mehr ??? Gruss Holger.
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.