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?
@ 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
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.
@ 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
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.
@ 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
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
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
@ 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
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
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.
@ 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
@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