Moin, ich hab da ein Verständnisproblem mit dem Clock Crossing. Signale aus einer langsamen clockdomain (30KHz) in eine schnelle (12MHz) zu übertragen funktioniert. Alles gut. allerdings blicke ich es nicht, wie ich es mit einem einzelnen Signal anders herum mache. Ich hab ein Xilinx XC95288XL CPLD und dummerweise nur noch eine magere hand voll Makrozellen übrig..... Ich hatte tatsächlich was gefunden, allerdings so abstrahiert, daß ich damit (jetzt, unter Zeitdruck) nicht so viel damit anfangen konnte. Wie lässt scih sowas in VHDL formulieren? Danke schon einmal im Voraus. :-) Sarah
@ Sarah (Gast) >ich hab da ein Verständnisproblem mit dem Clock Crossing. Und wir mit deinem Titel des Beitrags ;-) > Signale aus >einer langsamen clockdomain (30KHz) in eine schnelle (12MHz) zu >übertragen funktioniert. Wie hast du es genau gemacht? >Alles gut. Denken die meisten. >allerdings blicke ich es nicht, wie ich es mit einem einzelnen Signal >anders herum mache. Ähnlich. Nur dass dein Signal halt mehrere Takte aktiv sein muss, damit es die 300kHz Taktdomäne erkennt. Alternativ muss man halt mit RS-oder D-FlipFlops arbeiten, die von der einen Seite gesetzt und von der anderen gelesen und gelöscht werden können. >Ich hab ein Xilinx XC95288XL CPLD und dummerweise nur noch eine magere >hand voll Makrozellen übrig..... Reicht doch. Was für ein Signal soll denn übertragen werden?
Eigentlich nicht so schwierig. Die empfangende Seite sampled das Signal mit ihrer Clock. In deinem Fall darf die Frequenz des Signal natürlich nicht höher als 30 KHz sein, d.h. - wie Falk auch schon sagte - darf sich das Signal maximal alle 400 12-MHz Takte ändern.
Easylife schrieb: > Eigentlich nicht so schwierig. Ich würde ein Handshakeverfahren verwenden: auf der schnellen Seite wird der Wert "eingefroren" und mit einem Flag der langsamen Seite gesagt, dass die daten stabil sind (und bleiben werden!). Dann wird dieses eine Signal auf der langsamen Seite einsynchronisiert und dann die zwischenzeitlich immer noch stabilen Daten übernommen. Das geht natürlich nicth soooo einfach, wenn auf der "schnellen Seite" ein Zähler ist, der nicht angehalten werden darf. Das war es, warum Falk Brunner schrieb: >>> Was für ein Signal soll denn übertragen werden?
:
Bearbeitet durch Moderator
An dieser Stelle möchte ich der Vollständigkeit halber noch auf Cummings hinweisen: http://www.sunburst-design.com/papers/CummingsSNUG2008Boston_CDC.pdf Für die Anwendung sind Kapitel 4.4 und 4.5 interessant.
Allerdings ist in den allermeisten Fällen nicht Metastabilität die Ursache von "seltsamen" Problemen, sondern unterschiedlich lange Pfade zu unterschiedlichen Flipflops! Das was dort in allen Bildern als "bdat1" bezeichnet wird, ist bei heutigen FPGAs nämlich innerhalb von ein paar ps abgehandelt und stabil. Ein Flipflop-Ausgang floatet nicht 5ns undefiniert in der Gegend herum! Siehe den Beitrag "Detailbetrachtungen zur Metastabilität" Das Hauptproblem bei Verwendung nicht synchronisierter Eingänge ist also schlicht das hier: http://www.lothar-miller.de/s9y/archives/64-State-Machine-mit-asynchronem-Eingang.html
Nach meinem Verständnis muss man nur einen FIFO verwenden, dessen Signale entsprechend synchronisert werden. Natürlich muss das data enable das als hand shake funktioniert, lang genug gemacht werden, dass es von der langsamen domain erkannt wird. Einfach also so bauen, wie man es in hardware TTl auch bauen würde ..
Thomas Ulrich schrieb: > Einfach also so bauen, wie man es in hardware TTl auch bauen würde .. Einfach so beschreiben, wie man es mit TTL auch bauen würde... Fragt natürlich eine(s/r) der jungen Mädels oder Burschen sofort: Was ist TTL? Gibts dazu ein Video?
:
Bearbeitet durch Moderator
Das ist natürlich ein Problem. Die jungen "Mädels" haben sollten erst mal einen Kolben in der Hand nehmen und richtig löten. :-)
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.