Clock Domain Crossing schnell zu sehr langsam

Gast #3869953
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
#3869986
@ 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?
Gast #3870567
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.
Moderator (Firma: Titel) Persönliche Seite #3870646
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?
Moderator (Firma: Titel) Persönliche Seite #3874006
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
Gast #3874036
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 ..

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.