Cihan Kalayci schrieb:
> Weiterhin muss dafür dann ein IOBUF verwendet werden, wie z.B. so:
Man braucht solche manuellen Instantiierungen von simplen Komponenten
nicht, wenn man sich an die Synthese-Giudelines der Toolchain hält. Ich
würde genau diesen Tristate-Buffer wesentlich kompakter und generischer
so beschreiben:
1 | cf_dat <= datout_buf when dat_en='1' else (others=>'Z');
|
2 | i_cf_dat <= cf_dat;
|
Cihan Kalayci schrieb:
> Muss man diesen Vektor nun nochmal über 2 Pipelines einsynchronisieren
Nein. Es bringt nichts, Vektoren einzusynchronisieren, wenn die
Abtastfrequenz asynchron zu den Daten ist. Da muss dann ein anderes
Synchronisierungsverfahren her, z.B. mit den Steuersignalen WRn, RDn und
CSn.
> oder kann man es so direkt verwenden,
Ja. Weil die Ansteuerung ja synchron im FPGA gemacht wird ist auch das
Flash synchron zum FPGA.
> da man ja durch die Ansteuerung des Flash (durch das Timing)
> automatisch die Setup- / Hold-Zeiten eingehalten hat?
"Automatisch" geht da gar nichts. Man muss trotzdem kontrollieren, ob
die Laufzeiten vom und zum Flash eingehalten werden. Das kann entweder
durch entsprechende Constraints oder relaxtes Timing über mehrere
Taktzyklen erreicht werden. Das letztere Timing wird dann ja wieder
implizit über den Takt constrained.