Forum: FPGA, VHDL & Co. "Clock Enable"-Signal mit Kombinatorik


von MacMenace (Gast)


Lesenswert?

Hallo!

Ich habe folgendes Problem: Das synchrone "Clock Enable"-Signal eines 
Registers soll von zwei verschiedenen Quellen gesteuert werden, 
"A_wr_ena" und "B_wr_ena".

In VHDL habe ich mir das so überlegt:
1
wr_ena <= A_wr_ena = '1' or B_wr_ena = '1';

"wr_ena" führt in das "Clock Enable" des Registers.
Ich verwende Altera. Kann man das da so machen oder könnte die 
Kombinatorik vor dem CE Probleme (Stichwort Glitches) bereiten?
In der Simulation läuft es, auf dem FPGA aber nur instabil und ich 
vermute das es daran liegen könnte...

Gruß,
MacMenace

von Klaus F. (kfalser)


Lesenswert?

Das hängt davon ab wo A_wr_ena und B_wr_ena herkommen.
Wenn beide ebenfalls synchron zum gleichen Takt sind, dann darf es keine 
Probleme geben.

von Hagen R. (hagen)


Lesenswert?

Klaus Falser schrieb:
> Das hängt davon ab wo A_wr_ena und B_wr_ena herkommen.
> Wenn beide ebenfalls synchron zum gleichen Takt sind, dann darf es keine
> Probleme geben.

Und wenn die Kombinatorik selber nicht länger als die Taktbasis der 
Steuersignal wird. In deinem Fall ist es ein

ODER Gatter mit zwei Eingängen.
1
wr_ena <= A_wr_ena or B_wr_ena;

Die Gatterlaufzeit dieses ODER Gatters darf nicht die sich aus dem 
synchronen Takt ergebenden Restriktionen überschreirten.

Gruß Hagen

von MacMenace (Gast)


Lesenswert?

Okay Danke! Ich habe schon befürchtet, dass das nicht das Problem ist.

von Hagen R. (hagen)


Lesenswert?

naja, gundsätzlich kann dir das nur eine Simulation/Timinganalyse 
beantworten. Wir wissen ja nicht wie deine beiden ver'oder'ten 
EN-Signale erzeugt wurden. Die könnten sich ebenfalls aus einer 
Kombinatorik ergeben. Zudem wissen wir nicht welche Taktbasis und 
welches Silizium du verwendet hast.

Im ungünstigsten Fall könnte es bei dir also so sein das
1.) beide Enable Signale ebenfalls kombinatorisch erzeugt wurden
2.) der Takt für die Gatterlaufzeiten deines Stückchen Silizium in 
Relation zur Gatterlaufzeiten aus Punkt 1.) zu schnell ist.

Es liegt nun an dir in deiner Simulation/Timinganalyse diesen als 
Fehlerverursacher vermuteten Pfad detailierter unter die Lupe zu nehmen. 
Das geht mit fast jedem guten Simulator zu konfigurieren. Genaugenommen 
meldet dir das die Timinganalyse sowieso. Man muß sie nur machen und 
vestehen sie zu lesen. (das ist das was mir am Anfang schwer viel).
Diese Analyse wird dir normalerweise was von der Verletzung von 
Setup/Holdzeiten vorjammern, falls sich deine Vermutung bestätigen 
würde.

Gruß Hagen

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.