Forum: FPGA, VHDL & Co. Timing Probleme durch Pullups


von Jan (Gast)


Lesenswert?

Moin,

habe ein Projekt das große Datenmenge mit einer relativ ordentlichen 
Frequenz auf einen Virtex 4 verarbeitet.

Immer wenn ich einen Pullup oder Pulldown im UCF setze bekomme ich 
timing Probleme. Wahrscheinlich weil mein Chip schon ziemlich voll ist 
(ca 70%)

Habt Ihr auch schon mal so etwas bemerkt? Wenn ja habt ihr eine Lösung 
gefunden?

Stellt ein Pullup oder Pulldown so viel Logik da, dass die Wege im 
Virtex sooo viel länger werden?

von Falk B. (falk)


Lesenswert?

@ Jan (Gast)

>habe ein Projekt das große Datenmenge mit einer relativ ordentlichen
>Frequenz auf einen Virtex 4 verarbeitet.

ZAHLEN!

>Immer wenn ich einen Pullup oder Pulldown im UCF setze bekomme ich
>timing Probleme. Wahrscheinlich weil mein Chip schon ziemlich voll ist
>(ca 70%)

Niemals.

>Habt Ihr auch schon mal so etwas bemerkt? Wenn ja habt ihr eine Lösung
>gefunden?

Dein Problem ist ein anderes. Zu 100%.

>Stellt ein Pullup oder Pulldown so viel Logik da, dass die Wege im
>Virtex sooo viel länger werden?

Niemals. Die Pullups sind parallel in den IO-Zellen dran, da verlängert 
sich kein Timing. Ausserdem sind die so hochohmig (10k++), das 
interessiert niemanden.

MfG
Falk

von Jan (Gast)


Lesenswert?

Hm komisch bzw. schade,

das ist nämlich die einzige Änderung die ich mache und mit habe ich 
Fehler und ohne nicht!!

Aus diesem Grund denke ich schon das das was mit den Pullup´s zu tun 
hat.

Mit Abschlüssen kann das ja wohl auch nichts zu tun haben oder?

Zu den Zahlen 200MHz bei ca 100MB/s.

von Falk B. (falk)


Lesenswert?

@ Jan (Gast)

>das ist nämlich die einzige Änderung die ich mache und mit habe ich
>Fehler und ohne nicht!!

>Aus diesem Grund denke ich schon das das was mit den Pullup´s zu tun
>hat.

>Mit Abschlüssen kann das ja wohl auch nichts zu tun haben oder?

Kein Ahnung. Was für "Abschlüsse" hast du denn?

>Zu den Zahlen 200MHz bei ca 100MB/s.

Werd doch mal ein wenig konkreter und lass dir nicht alles aus der Nase 
ziehen.
Wie kommen die Daten in den FPGA? Busbreite, Takt etc.

MFg
Falk

von Jan (Gast)


Lesenswert?

OK,

Abschlüsse habe ich keine! Also könnten doch Reflektionen entstehen?! 
Sonst kann ich mir keine Reim darauf machen warum warum der Pullup 
manchmal Fehler erzeugt.

Die Daten selber kommen über LVDS 8 Bit breite mit 200 MHz. zu einem 
Speicher mit 166 MHz und einer Busbreite von 32 Bit.

Allerdings kommen meine Steuersignale über normale IO´s mit 50 MHz. wenn 
ich diese nicht abschließe und ich meine steuerlogik nicht angeschlossen 
habe ziehen die Pinne sich Dreck rein und brignen meine Steuerung 
durcheinander. Um dieses zu umgehen wollte ich Pullup´s anschließen. Mit 
dem Erfolg, dass ich manchmal Fehler habe. Und genau das kann ich mir 
nicht erklären.

von Jan (Gast)


Lesenswert?

Halt bei den LVDS Leitungen habe ich natürlich Abschlüsse

DIFF_TERM = TRUE

Aber nur da

von Falk B. (falk)


Lesenswert?

@ Jan (Gast)

>Die Daten selber kommen über LVDS 8 Bit breite mit 200 MHz. zu einem
>Speicher mit 166 MHz und einer Busbreite von 32 Bit.

Das ist schon mal kein Kindergeburtstag mehr. Ich gehe mal davon aus, 
dass die Platine jemand anders entworfen hat.

>Allerdings kommen meine Steuersignale über normale IO´s mit 50 MHz. wenn
>ich diese nicht abschließe und ich meine steuerlogik nicht angeschlossen
>habe ziehen die Pinne sich Dreck rein und brignen meine Steuerung
>durcheinander.

50 MHz ist auch keine Eieruhr! Da muss man auch solide arbeiten. Layout 
und ggf. Terminierung.

> Um dieses zu umgehen wollte ich Pullup´s anschließen. Mit

Vollkommen sinnlos.

>dem Erfolg, dass ich manchmal Fehler habe. Und genau das kann ich mir
>nicht erklären.

Schon mal richtig (tm) gemessen wie die Signale aussehen?

MfG
Falk

von Kest (Gast)


Lesenswert?

Hast Du Timingprobleme im FPGA? Wenn ja, dann können die PullUps schon 
was dafür. Die verbrauchen zwar keine Logik, aber die Contraints für 
FPGAs (IOs) können anders aussehen, somit wird anders optimiert -> 
unterschiedliche Annahmen bezüglich Laufzeiten -> Timingprobleme.
Genaueres weiß ich aber leider auch nicht. Vielleicht sagen ja die 
Datenblätter was dazu.


Gruß,

Kest

von Jan (Gast)


Lesenswert?

Hallo,

@ Frank

>> Um dieses zu umgehen wollte ich Pullup´s anschließen. Mit

>Vollkommen sinnlos.

Naja mit einem Pullup kann ich die Eingänge ja einem definierten Wert 
zuweisen. Somit fange ich mir keine Störungen ein. Darum denke ich mal 
das es nicht vollkommen Sinnlos ist.

>>dem Erfolg, dass ich manchmal Fehler habe. Und genau das kann ich mir
>>nicht erklären.

>Schon mal richtig (tm) gemessen wie die Signale aussehen?

Signale sehen toll aus! Steile Flanken keine Einbrüche oder ähnliches.

So jetzt mal ne ganz doofe Frage wie sieht eine solche Terminierung bei 
normalen IO´s denn aus?

@ Kest

Jo die Timing Probleme sind im FPGA. Ohne Pullup´s habe ich keine 
probleme allo Constrains sind eingehalten und das Programm läuft. Mit 
Pullup´s allerdings verletze ich allerdings ein Constrain und es kommt 
zu manchmal Fehlern ca. alle 10.000.000.000 Byte.

Jetzt werde ich erst mal deiner Idee Folgen und ein bißchen lesen.

Danke an euch beiden.

Wenn Ihr noch Ideen habt ich sage nicht nein

von Jan (Gast)


Lesenswert?

Oh entschuldigung ich meinte natürlich @Falk

das kommt davon wenn man immer so hektisch ist!

von Falk B. (falk)


Lesenswert?

@ Jan (Gast)

>>Vollkommen sinnlos.

>Naja mit einem Pullup kann ich die Eingänge ja einem definierten Wert
>zuweisen. Somit fange ich mir keine Störungen ein. Darum denke ich mal
>das es nicht vollkommen Sinnlos ist.

Wir reden doch über Eingänge, welche von aussen angesteuert werden. Und 
nciht welche in der Luft hängen.

>Signale sehen toll aus! Steile Flanken keine Einbrüche oder ähnliches.

Wie gemessen? Mit welchem Tastkopf und Oszilloskop?

>So jetzt mal ne ganz doofe Frage wie sieht eine solche Terminierung bei
>normalen IO´s denn aus?

Kommt drauf an. Bei 3.3V LVCMOS meist nur Serienterminierung.

>zu manchmal Fehlern ca. alle 10.000.000.000 Byte.

10 Gigabyte? Hmmm. Das kann auch ein Designfehler sein.

MFg
Falk

von Kest (Gast)


Lesenswert?

Ich habe bei Altera z.B. Erfahrung gemacht, dass obwohl alle Timings 
eingehalten werden, das Verhalten von der Temperatur abhängen kann.

Es macht eventuell Sinn, die Contstrains auf "agressive" zu trimmen, 
irgendwas ähnliches muss doch bei Xilinx auch geben. Es kann natürlich 
auch Designfehler vorliegen, wie Falk sagt, aber als erstes würde ich 
alle Timingcontraint-Verletzungen eliminieren. Vielleicht hilft da 
einfach ein FF davor zu setzen, die Werkzeuge haben dann mehr Spielraum 
in der Platzierung.

Grüße,

Kest

von Jan (Gast)


Lesenswert?

Oh Oh wenn das die Temperatur ist schreie ich!

das mit den FF werde ich mal versuchen. Naja und die Constrains einfach 
mal anziehen und ihm sagen er soll es 1000 mal versuchen und hoffen.

von Falk B. (falk)


Lesenswert?

@ Kest (Gast)

>Ich habe bei Altera z.B. Erfahrung gemacht, dass obwohl alle Timings
>eingehalten werden, das Verhalten von der Temperatur abhängen kann.

Dann hast entweder du was falsch gemacht oder Altera ihre ICs falsch 
vermessen. Was ist wahrscheilicher . . . ? ;-)

>auch Designfehler vorliegen, wie Falk sagt, aber als erstes würde ich
>alle Timingcontraint-Verletzungen eliminieren. Vielleicht hilft da

Dazu müsste man aber auch sämtliche Takte und IOs mit Timing-Constriants 
versehen bzw. diese auch real einhalten.

@ Jan (Gast)

>Oh Oh wenn das die Temperatur ist schreie ich!

Wenn es schon bei Raumtemperatur Probleme hat, dann läuft es auf dem 
letzten Loch. Kann man aber leicht testen. Einfach in den Klimaschrank 
und hochheizen, so bis 70..85 Grad.

>mal anziehen und ihm sagen er soll es 1000 mal versuchen und hoffen.

Wenn es ein grösseres Design ist willst du sicher nicht wochenlang auf 
den 1000 Durchlauf warten.

MfG
Falk

von Kest (Gast)


Lesenswert?

@Falk:
> Dann hast entweder du was falsch gemacht oder Altera ihre ICs falsch
> vermessen. Was ist wahrscheilicher . . . ? ;-)

Na ja, ich sag' mal so: wenn ich mit der Heißluftpistole FPGA erhitze, 
kommen die ersten Fehler. Mit dem Kältespray verschwinden diese. Die 
Setup und Holdzeiten verändern sich, das ist auch klar. Ich erwarte 
einfach, dass wenn ich in den Tools die Vorgaben mache, diese auch 
eingehalten werden. Lustig wird erst, wenn es bei 10 Boards läuft und 
bei einem zu Problemen führt.

Übrigens, Altera macht auch Fehler ;-) Die geben diese auch zu :-) 
Deshalb gibt es auch Service Packs mit neueren Timingconstrains für 
unterschiedliche Chips.

Grüße,

Kest

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.