Probleme mit asynchronem Signal bei CPLD

Hallo,

ich verwende hier einen XILINX-Coolrunner XCR3064XL. Es soll eine Art digitales, nicht retriggerbares Monoflop realisiert werden, dessen Start natuerlich um die Taktperiode jittert.

Ausschnitt aus dem VHDL-Code: start ist das Eingangssignal, clk der dazu asynchrone Takt, run zeigt an, dass die Zeit laeuft, bloc verhindert das Retriggern, wenn start nach Ablauf der Zeit noch high sein sollte.

process (clk) begin if (rising_edge(clk)) then if (start = '1') and (run = '0') and (bloc = '0') then run

Reply to
Mathias Weierganz
Loading thread data ...

Mathias Weierganz wrote: : Hallo,

: ich verwende hier einen XILINX-Coolrunner XCR3064XL. : Es soll eine Art digitales, nicht retriggerbares Monoflop : realisiert werden, dessen Start natuerlich um die Taktperiode : jittert.

: Ausschnitt aus dem VHDL-Code: : start ist das Eingangssignal, clk der dazu asynchrone Takt, : run zeigt an, dass die Zeit laeuft, bloc verhindert das : Retriggern, wenn start nach Ablauf der Zeit noch high sein : sollte.

: process (clk) ... : if (start = '1') and (run = '0') and (bloc = '0') then ... : if (start = '0') then Du verwendest "start" an zwei Stellen. Da Start asynchron ist, wird es irgendwannmal bestimmt an der Taktflanke an einer Stelle schon gesetzt sein, and der anderen Stelle aber noch nicht. Und dann kracht es.

Setze mit "start" ein FF, dass Du zuruecksetzt, wenn Du den Start in der anderen Clockdomaene erkannt hast.

Bye

--
Uwe Bonnes                bon@elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
 Click to see the full signature
Reply to
Uwe Bonnes

Das koennte natuerlich Probleme bereiten, tut es hier aber nicht.

Mein Problem ist, dass manchmal das bloc-Signal kommt, obwohl das run-Signal

low ist. Meine Erklaerung waere, dass run in den Metastabilen Zustand kommt

und "etwas" high wird. Das bloc-Flipflop sieht dieses high und der Clock fuer dieses Flipflop ist minimal spaeter als fuer das run-Flipflop. Ergebnis: bloc ist und bleibt high, run faellt wieder runter auf low. Das ist genau das, was ich auch messen kann: bloc kommt zu frueh und auf run ist eine kleine Erhebung.

Als Loesung habe ich versucht, run mit der positiven Flanke zu triggern, bloc aber mit der negativen: Das hat merkwuerdigerweise aber nichts gebracht.

Interessanterweise kam das Problem erst jetzt auf, nachdem ich von Xilinx Webpack4.1 auf 4.2 gewechselt habe. Aber generell will ich wissen, wie ich so eine Schaltung sicher machen kann.

Mathias Weierganz Physikalisch Technische Bundesanstalt FB Neutronenstrahlung

Reply to
Mathias Weierganz

Moin Mathias,

Du könntest dafür sorgen, dass 'run' nur an einer Stelle (z.B. if) zugewiesen wird. Bei deinem Code könnten laufzeitbedingt beide zuweisungen erfolgen, so dass Dein Problem auftritt.

Grüsse Robert

Reply to
Robert Rottmerhusen

1) Ich würde trotzdem "start" sauber einsynchronisieren! 2) passen die timing-constraints für deinen clock? werden sie eingehalten?

wenn dein Start in der Nähe deiner Clockflanke umschalten kann, dann werden setup und hold-Zeiten verletzt -> im schlimmsten Fall ist das Verhalten nicht vorhersagbar - auch die Simulation merkt das nicht!

Die Synthese/Map/Routing kann nur synchrone Abläufe analysieren (eben von einer Clockflanke zur nächsten) - die Beziehung der Eingangssignale zum Clock ist hier schwer zu erfassen ...

Gegen Metastabile Zustände kann man meines Wissens nach nichts tun - sie werden nur durch mehrstufiges Einsynchronisieren unwahrscheinlicher. Ich glaube jedoch nicht, dass die hier das Problem sind ...

bye, Michael

Reply to
=?iso-8859-1?Q?Michael_Sch=F6b

Üblicherweise durch synchronisieren des Inputs mit Clk durch Schieberegister. [normalerweise sieht man den IC als Synchron und externe Signal asynchron dazu an :)]

start_sr

Reply to
Thomas Stanka

Dazu gab es vor einiger Zeit mal eine (Riesen-) Diskussion in der US-Forth-Newsgroup. Einer der Artikel hat folgende Header- Zeilen:

Newsgroups: comp.lang.forth Subject: Re: Is "meta-stability" a non-issue [was in thread of Re: Timer on PC with uS resolution.] Date: Sat, 09 Nov 2002 06:59:24 -0500 Organization: Arius, Inc Lines: 42 Message-ID:

Bernd Paysan (aus D) hat dazu die Meinung vertreten, dass Meta- stabilität _heute_ kein Problem mehr sei; einige andere Teilneh- mer bestanden vehement darauf, dass dieses 'Grundgesetz' der Schaltungstechnik nicht zu vernachlässigen sei...

Viel Zeit beim Lesen wünschend, Holger

Reply to
Holger Petersen

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.