Forum: FPGA, VHDL & Co. 2 Fragen - Frühstart und Maximalfrequenz


von Christian P. (kron)


Lesenswert?

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?!

von Oliver Bründler (Gast)


Lesenswert?

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.

von Xenu (Gast)


Lesenswert?

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.

von Nephilim (Gast)


Lesenswert?

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.

von A. F. (artur-f) Benutzerseite


Lesenswert?

> "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.

von Oliver Bründler (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.