Hallo, zwei Fragen sind bei mir gerade aufgekommen. 1. Nach der Synthese mit der Xilinx ISE bekommt man ja schonmal eine grobe Aussage, wie hoch die maximale Clockfrequenz sein darf. Nun habe ich in einem Design einen DCM, der die Clock verdoppelt. Gilt diese, natürlich unverbindliche, Maximalfrequenz für die schon gedoppelte, oder für die einfache Ursprungsfrequenz? Also Beispiel: CLK_IN -> 40 MHZ, CLK_2x -> 80 MHz, Max. Frequenz: 68 MHz. Heißt das, dass CLK_IN max. 68 MHz haben darf, oder heißt es, dass es schon eng wird mit der CLK_2x? 2. Ich hatte kürzlich ein sehr merkwürdiges Problem/Phänomen. Ich habe bei einem Design einen Adressbus, an dem mehrere Komponenten hängen. Diese teilen sich den Bus über die höchsten Adressbits. Normalerweise ist es natürlich so, dass bei jeder Adresse nur ein Gerät angesprochen wird. Jetzt war es aber durch eine spontane Umschichtung von mehreren Sachen kurz so, dass sowohl das FPGA einen bestimmten Adressbereich bediente, als auch ein CPLD, welches dafür verantwortlich ist, das FPGA beim Start zu laden. Was passierte war, dass immer kurz vor dem Ende der Übertragung der FPGA-Firmware falsche Ready-Signale auftauchten, und dann sagte das FPGA CRC-Fehler. Das war aber noch bevor das DONE-Bit high ging, und lange bevor die Outputs im FPGA aktiviert werden. Auf Grund der Art des falschen Readys (beim CPLD geht es durch einen Pullup von 0 auf 1, beim FPGA wird es aktiv auf 1 gezogen) steht fest, dass das FPGA bei seinem eigenen Ladeprozess am Ende schon dazwischengefunkt hat. Mal abgesehen von der Tatsache, dass das ein sehr spezieller und normalerweise nie auftretender Fehler ist, der sich wie gesagt nur durch die Doppelbelegung zweier Adressen ergab, wie kann es sein, dass das FPGA schon so früh zuckt und agiert?! Das ist doch der Sinn des Startup-Prozesses, dass man das kontrolliert und in der Hand hat, wann es losgeht?!
Zu deiner ersten Frage: Die Maximalfrequenz ist der Kehrwert der Verzögerungszeit des längsten Pfades f_max = 1 / T_lp Also darfst du keinen Teil der Schaltung schneller takten. Auch nicht wenn du einen Taktverdoppler dazwischenhängst. Um eine exakte Timing-Analyse zu erreichen empfehle ich dir aber für jeden clock ein constraint zu machen, wo du due benötigte Frequenz angibst.
Zu Frage 1.: Die angegebene Maximalfrequenz ist die Ursprungsfrequenz CLK_IN. Das kannst Du ganz leicht selbst herausfinden, indem Du einfach die DCM weglässt. Dann sollte sich die Angabe der Maximalfrequenz verdoppeln.
zu der ersten frage würde ich nicht sagen "Also darfst du keinen Teil der Schaltung schneller takten." der kritische pfad, welcher die längste kombinatorische kette hat darf maximal mit den 68MHz getaktet werden. andere stellen im design können ohne weiteres sicher auch mit den 80Mhz getaktet werden. was es jetzt rauszufinden gilt ist, welcher schaltungsteil deinen speed derart einschränkt und ob dort die 80MHz als Takt anliegen.
> "Also darfst du keinen Teil der Schaltung schneller takten."
Das stimmt nicht ganz, ISE gibt eine Schätzung aus. Könnte in der Praxis
auch schneller gehen.
Aus meiner sicht wäre die einzige saubere lösung für jeden Clock ein eigenes Timing-Constraing zu machen, in dem du die benötigte Maximalfrequenz angibtst. Dann Siehst du ob alles klappt oder nicht bzw. das Tool kann auch darauf hin optimieren. Mit ISE kenn ich mich nicht aus (bin eigentlich Altera User) aber meines wissens geben alle Synthesetools Worst-Case Werte und keine "Schätzungen" aus. Klar läuft das bei Zimmertemperatur normalerweise schneller, da dies aber nicht garantiert ist sollte man es auch nicht so betreiben. Wenn der Hersteller am Baustein was ändert (z.B. einen Shrink vornimmt) kann das ganze dann plötzlich nicht mehr laufen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.