Forum: FPGA, VHDL & Co. Frage zum Block RAM


von Johann (Gast)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

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.

von user (Gast)


Lesenswert?

ja, sogar ist xst so schlau und kann sogar manche behavioral RAM 
beschreibungen als blockRAM erkennen

von Johann (Gast)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Johann schrieb:
> das der Autorouter einige sehr ungeschickte Platzierungen
> vorgenommen hat.
Wurden dabei deine Constraints erfüllt?

von Johann (Gast)


Lesenswert?

Nein die wurden leider nicht erfüllt

von Duke Scarring (Gast)


Lesenswert?

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

von Johann (Gast)


Lesenswert?

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 ^^)

von Duke Scarring (Gast)


Lesenswert?

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

von Johann (Gast)


Lesenswert?

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.

von Christian R. (supachris)


Lesenswert?

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