Ich möchte den Block RAM von einem Virtex 5 verwenden. Ich habe eine Timing Simulation durchgeführt. Dabei ist mir aufgefallen das ein Block RAM immer einen ADDR_AL und ADDR_AU, EN_AL, EN_AU, WE_AL und WE_AU besitzt. Wo liegt denn der Unterschied zwischen den Signalen mit AL und AU? Wenn man sich die Timing Simulation anschaut, dann benötigen die Signale schon deutlich unterschiede bis zum BLOCK RAM
Warum machst du denn eine Timing Simulation? Neuerdings häuft sich das ja wieder hier. Die ist doch total nutzlos in 90% der Fälle. Den BlockRAM kannst du einfach benutzen ohne dir darum viel Gedanken zu machen. Im Datenblatt stehen die Setup- und Holdzeiten drinne.
ja, sogar ist xst so schlau und kann sogar manche behavioral RAM beschreibungen als blockRAM erkennen
Bei 400MHz muss man aber an einigen Stellen schon mal genauer hinschauen. Ich habe mein Design mit Plan Ahead kontrolliert und muste feststellen das der Autorouter einige sehr ungeschickte Platzierungen vorgenommen hat. Demnach habe ich einige Zeitkritischen Elemente selbst plaziert und fixiert. Ich habe bereits nach den Setup/Hold Zeiten im Xilinx Datenblatt nachgeschaut. Dort steht leider nur die Schaltzeit für EN oder WR. Dort ist nicht die Rede von EN_AU EN_AL, WR_AU und WR_AL Die jeweiligen Zeiten sind schon um 1ns auseinander.
user schrieb: > sogar ist xst so schlau und kann sogar manche behavioral RAM > beschreibungen als blockRAM erkennen Das geht ganz einfach: getaktete Leseadresse --> BRAM Und auf was es dabei ankommt steht ausführlich im XST-Users-Guide XUG.pdf
Johann schrieb: > das der Autorouter einige sehr ungeschickte Platzierungen > vorgenommen hat. Wurden dabei deine Constraints erfüllt?
Johann schrieb: > Bei 400MHz muss man aber an einigen Stellen schon mal genauer > hinschauen. Na 400 MHz ist auch kein Kindergeburtstag mehr, auch wenn das Marketing etwas anderes suggeriert. Was willst Du damit machen? Eventuell kannst Du ja den Speicher verdopplent und dafür nur mit 200 MHz nutzen. > Ich habe mein Design mit Plan Ahead kontrolliert und muste > feststellen das der Autorouter einige sehr ungeschickte Platzierungen > vorgenommen hat. Je größer der FPGA, um so schwerer hat es die P&R-Software... > Demnach habe ich einige Zeitkritischen Elemente selbst > plaziert und fixiert. Wenn Du das schon am Anfang der Designphase machen must, wünsche ich Dir viel Spaß. Unter Umständen darfst Du das dann bei jeder Neusynthese machen. Johann schrieb: > Ich möchte den Block RAM von einem Virtex 5 verwenden. Es gibt ca. 6 verschiedene Typen vom Virtex 5. Die dann noch in verschiedenen Speedgrades und Gehäusen. Welchen verwendest Du genau? Duke
Ich nehme Speedgrade -1 (muss ja auch alle bezahlbahr bleiben. Das Design ist nicht sehr umfangreich benutze geraqde mal 1% der FF und 1% der LUTs. Ich benötige auch nur 2 Block RAMS. Die Daten werden digitalisiert und gleich versendet. Daher ist dies auch och gut pero hand zu plazieren. (Es hat auch Vorteile man lernt besser den FPGA kennen ^^)
Duke Scarring schrieb: > Es gibt ca. 6 verschiedene Typen vom Virtex 5. Irgendwie ist mir da eine Ziffer abhanden gekommen: Ich meinte 26. Johann schrieb: > Speedgrade -1 Äh. Schau mal bitte hier rein: http://www.xilinx.com/publications/prod_mktg/virtex5-product-table.pdf Und die wichtigste Frage hast Du auch noch nicht beantwortet: Was soll Dein Design machen? > Die Daten werden > digitalisiert und gleich versendet Mit welcher Datenrate, Bitbreite, woher, wohin? Duke
Verwenden tue ich einen xc5vlx30t. Das Problem besteht schon darin das ich mit Plan Ahead und der Timing Simulation unterschiedlich Werte bei einfachen Datenleitungen bekomme. z.B. die Verzögerungszeit von einem LVDS_25 PAD beträgt laut Datenblatt 1.06ns. Mit Plan Ahead erhalte ich 1.055ns (was ja auch richtig ist) Mit der Timing Simulation erhalte ich 1.15ns Das ganze summiert sich dann bis zum 1. FF auf eine Abweichung von 1,5ns. Das ist viel zu viel ich weis momentan noch nicht woran es liegt. Ich verwende ISE 11.4. Ich werde es mal mit einer aktuellen ISE Version ausprobieren.
Und welche Constraints werden da nicht erfüllt? Wird da ein ADC eingelesen? 400MHz vom IO bis zum BlockRAM sollten eigentlich gut gehen, wo stört da di Pad-Verzögerung? Kommen doch dann alle Signale des ADC etwa gleich verzögert an. Nimmst du die IOB FlipFlops, um die Daten erst mal in das FPGA Fabric zu holen? Von Hand Platzieren sollte immer das letzte Mittel sein...
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.