Forum: FPGA, VHDL & Co. Cross Clock Domain Signal - Failing constraint trotz/wegen Synchronizer


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Burkhard K. (buks)


Angehängte Dateien:

Lesenswert?

O--->ADC (96 MHZ) --> DP RAM --> Audio Codec (12,288 MHz)--->O
                         |                |
                         |                |
                       synch              |
                         |                |
                         -- write enable --

Es geht um eine Anwendung mit zwei Clock Domänen (ADC: 96 MHz, Audio 
Codec (ae) 12,288 MHz). Zur Cross-Domain-Kommunikation dient ein Dual 
Ported RAM; dessen Überschreiben verhindert ein WE_N Signal, das vom 
Audio Codec gesteuert wird, bis die höchste RAM-Adresse auf Codec-Seite 
erreicht ist. Zum Vermeiden von metastabilen Zuständen durchläuft WE_N 
einen Synchronizer aus zwei FlipFlops. Also so etwas wie ein 
SchmalspurFiFo (ohne Zeigerschieberei).

ISE meldet mir eine Timing-Constraint Violation - und zwar im 
Synchronizer, siehe Anhang. Der Timing-Report erschliesst sich mir nicht 
in allen Details - daher folgende Fragen:

 * Wegen der Timing-Unterschiede beim Wechseln der Clock-Domänen habe 
ich den Synchronizer vorgesehen. Kann ich die Timing-Constraint 
Verletzung an dieser Stelle ignorieren? (Wäre der Audio Codec "off 
board", dann würde mein Synthese-Tool sich doch gar nicht mit dem 
Timing-Verhalten des dann externen Signals beschäftigen?)
 * Wenn ich sie ignoriere, kann ich diese Meldung gezielt ausschalten 
bzw. das betreffende Constraint lockern?
 * Liesse sich die Violation durch Einsatz eines "vollwertigen" DP FiFos 
mit entsprechenden Signalen (FiFo Full etc.) vermeiden?

Gruß,
Burkhard

von Sigi (Gast)


Lesenswert?

Bei "ungeraden" Taktverhältnissen kriegst du
immer solche Warnungen. Du musst deinem
Synthesizer mitteilen, dass er den
WriteEnable-Pfad ignorieren soll. Das wird
per TIG-Constraint gemacht (ToIgnore).

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Warum ist das denn ein "write enable "

Der Chip "liest" doch vom RAM.

Das mit dem Metastabil kannst Du hier vergessen wenn Du die Signale mit 
dem bitclock des Chips übernimmst, was Du hoffentlich tust.

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


Lesenswert?

Sigi schrieb:
> per TIG-Constraint gemacht (ToIgnore).
Richtigerweise ist das ein Timing Ignore...

von Burkhard K. (buks)


Lesenswert?

Danke Sigi,

"ToIgnore" war das Stichwort nachdem ich gesucht habe.

Details dazu habe ich jetzt im Abschnitt "Timing Exceptions" im Xilinx 
User Guide 
http://www.xilinx.com/itp/xilinx10/books/docs/timing_constraints_ug/timing_constraints_ug.pdf 
gefunden. Gruß, Burkhard

von Sigi (Gast)


Lesenswert?

Weltbester FPGA-Pongo schrieb im Beitrag #4226142:
> Warum ist das denn ein "write enable "
>
> Der Chip "liest" doch vom RAM.

Auch wenn's der TO nicht geschrieben hat, scheint
es doch offensichtlicht, dass des WriteEnable
der ADC-Stufe vom Codec freigegeben werden soll.

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.