Gast
#2795984
Ich bekomme mein externes RAM nicht korrekt gelesen. Es hat ein Standard SRAM Interface mit 12ns und ich arbeite bei entspannten 50 bei 100MHz Takt. Adressen und Strobes anlegen scheint zu funktionieren, aber ich bekomme jedesmal einen Lesefehler bei bestimmten Zeitfolgen. Ganz offenbar wird mitten auf den Taktflanken gelesen, weil die beteiligten Daten sowohl einen Takt vor, als auch einen nachgehen können. Ausschauen tut das etwa so: _____*************_______********_____ ____*******_*****__________*********** ******____________**********______ Die Wechsel liegen also nicht in einem Takt. Alle IOs liegen auf IOB-FFs, bis auf die Datenleitungen, die sind ja TRistatebuffer und da findet er keine FFs um sie in die IBOs zu schieben. Ich habe schon den externen Takt für das RAM hin und hergeschoben, komme aber immer wieder zu Lesefehlern.. Frage: Wie muss man das constrainen? Ich habe einen 33 MHz Quarz und erzeuge per DCM die 100MHz. Bei der time SEPC habe ich für den Oszillator die 30ns angegeben. Wie aber belege ich die Offset constraints? Ich möchte dafür sorgen, dass die Daten center aligend gegenüber dem internen Takt liegen, also ungefähr in der Mitte der Daten gesampelt wird. Muss ich dazu 5ns/10ns angeben oder reichten die 15ns die sich aus der Betrachtung des Oszillators ergeben, d.h. treibt Xilinx die selber weiter? Muss ich mich auf Rising oder Faling beziehen? Wie würde ein solcher Constraint-Konstrukt aussehen?
