Forum: FPGA, VHDL & Co. Clock Domain Crossing schnell zu sehr langsam


von Sarah (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

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

von Easylife (Gast)


Lesenswert?

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.

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


Lesenswert?

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
von ElKo (Gast)


Lesenswert?

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.

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


Lesenswert?

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

von T.U.Darmstadt (Gast)


Lesenswert?

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

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


Lesenswert?

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
von Duke Scarring (Gast)


Lesenswert?

Lothar Miller schrieb:
> Was ist TTL? Gibts dazu ein Video?
Momentan der 10. Treffer bei Youtube...

von T.U.Darmstadt (Gast)


Lesenswert?

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