Hallo ihr, ich habe in einem CPLD zwei unterschiedliche Takte. Einmal 30MHz und einmal 40MHz. Bausteintyp: CoolRunner von Xilinx Nun würde ich gern folgendes lösen: > if (rising_edge(40MHz)) then -- steigende Flanke > code; > if (30MHz = '1') and (30MHz_x = '0') then -- steigende Flanke > code; > end if; > 30MHz_x <= 30MHz; > end if; Da dies jedoch unsauber ist, wäre besser etwas wie... > if (rising_edge(40MHz) and falling_edge(40MHz)) then -- steigende und fallende Flanke > code; > if (30MHz = '1') and (30MHz_x = '0') then -- steigende Flanke > code; > end if; > 30MHz_x <= 30MHz; > end if; Ist dies irgendwie möglich? Meines Wissens nein, aber ich wollte den Versuch der Frage nicht auslassen... Danke, Gruß, Bustle
... der Hintergrund ist etwas aufwändiger ... Das Hauptproblem ist u.a. auch dass die 30MHz noch nicht von Beginn an anliegen.
Bustle schrieb: >> if (rising_edge(40MHz) and falling_edge(40MHz)) then -- steigende und fallende > Flanke Eine Flanke kann nie gleichzeitig fallend und steigend sein. Die Bedingung ist also immer falsch.
> Da dies jedoch unsauber ist... Richtig, du kannst nicht mal theoretisch ein 30MHz Signal mit 40MHz sicher abtasten... > if (rising_edge(40MHz) and falling_edge(40MHz)) then ... > Ist dies irgendwie möglich? Nein, weiter bei der Frage: was willst du damit machen?
@Bustle (Gast) >... der Hintergrund ist etwas aufwändiger ... Das Hauptproblem ist u.a. >auch dass die 30MHz noch nicht von Beginn an anliegen. Umso notwendiger ist eine GRUNDLEGENDE Erklärung des Problems, und NICHT deines vermeintlichen Lösungsweges. Siehe Netiquette. MFG Falk
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.