Geschwindigkeit DDR-Ram

#2008520
Lesenswert?

Hallo,

ich habe ein 200Mhz DDR Ram mit 16 Bit Datenbus und Burst=4 an einem 
Spartan6-3. Es wird nur kontinuierlich aufeinanderfolgend gelesen oder 
geschrieben.

Die Bandbreite von 800Mbyte/s schafft man doch nur während einem Burst.

Gibt es eine Daumenregel wieviel Bandbreite
davon in der Praxis übrig bleibt ?

Danke schon mal im Voraus :)
#2008618
Lesenswert?

@  Hans-georg Lehnard (h-g-l)

>Gibt es eine Daumenregel wieviel Bandbreite
>davon in der Praxis übrig bleibt ?

Hmm, bin da nicht ganz up to date. Aber vor einigen Jahren hab ich mal 
an einem Board gebaut, dort liefen 10 Gbit/s drüber, u.a. in einem 
DDR-Ram zwischengepuffert. 10Gbit/s-> 1,25 Gbyte/s. Da das ein FIFO 
war, muss jedes Datum gelesen und geschieben werden. -> 2,5 Gbyte/s

Der DDR-RAM war 64Bit breit bei 155 MHz Takt, macht theoretisch 2480 
Mbyte/s.

Also 101% ;-)

Ne, die 10G sind Brutto, Netto waren das irgendwas um die 9,5 Gbit/s. 
Dabei gab es den Effekt, dass mit Autorefresh vom DDR-Ram der Datenstrom 
Aussetzer hatte, nur mit vom Controller gesteuertem Refresh lief es 
richtig. Ist ja auch klar, denn damit kann der Datenfluss optimal 
geformt werden.

Ergo: Man erreicht 95%++

MfG
Falk
#2008870
Lesenswert?

Danke

das hilft doch schon mal weiter.

Fang ich mal mit der Hälfte an und lass noch Raum für Optimierungen ;)

Nächste Frage:

Wenn ich jetzt 16Bit mit 200Mhz Sample, habe ich:

2Byte / 5ps = 400Byte / ns

Der Ram braucht alle 7,8us einen Refresh der 70ns dauert.

Da fallen dann: 28 KByte in den 70ns an, die ich in einem FIFO 
zwischenspeichern muss wenn ich kontinuierlich Sampeln will.

Ist das auch richtig ?

Oder kann man beim kontinuierlichen schreiben da was am Refresh drehen ?
Gast #2009268
Lesenswert?

Ich würde ich Daten die aus dem AD-Wandler kommen zuerst mal in einem 
FIFO schreiben und dann kann man diese immer noch in den externen RAM 
schreiben. Umgekehrt ist es auch wichtig das man eine Anzahl X Werte 
zuerst aus dem externen RAM ausliest in den FPGA FIFO schreibt und dann 
über ein Interface an den PC sendet.

Ich habe dieses Jahr vor eine 1GBit Ethernet Interface zu programmieren. 
Da benötige ich dann auch einen einen externen DDR RAM. Jedoch verwende 
ich keinen Spartan 6 sondern einen Virtex 5. Ich habe auch 2x 400MHz 
Wandler. Da ich nicht alle Daten über die Schnittselle rüberbekomme, 
muss ich die Daten in den externen DDR RAM schreiben dann die 
Digitalisierung anhalten und die Daten per GBit Ethernet an den PC 
übertragen.
#2009276
Lesenswert?

Guten Morgen und Danke für die Antworten.

Mir ging es hauptsächlich um Grössenordnungen und Verständnis.

Zum Testen werde ich den Puffer erst einmal größer machen und den 
min/max Füllstand überwachen und den gefundenen max Puffer dann 
verdoppeln als Sicherheit.

Die Praxiswerte von ca 95% deuten in die gleiche Richtung. Wobei ich nur 
einen 16 Bit Bus zu den Rams habe und der mit einem 64 Bit Bus nicht so 
ohne weiteres vergleichbar ist.

Fazit:
32Bit mit 100 Mhz zu samplen und in ein DDR200 mit 16Bit Breite zu 
streamen ist problemlos, 200Mhz sind dagegen sportlich;)
Gast #2009287
Lesenswert?

@ Falk

Einfach nur Respekt Respekt Respekt. Da geht schon ordentlich Saft über 
die Leitung ^^

Es ist schon erstaunlich was für Datentransferraten mit einem FPGA 
möglich sind. Und es spricht ja auch nichts dagegen den Datenbs von 
64Bit auf 128 Bit zu verdoppeln :-) (außer das derjenige der das Routen 
durchführt graue Haare bekommt und die Hände übern Kopf zusammenschlägt)

Hast Du damals einen Spartan 3 oder Virtex 4, 5 verwendet?
#2009308
Lesenswert?

Johann schrieb:
> Ich würde ich Daten die aus dem AD-Wandler kommen zuerst mal in einem
> FIFO schreiben und dann kann man diese immer noch in den externen RAM
> schreiben.

Das externe Ram soll bei mir als Ringpuffer dienen und auf ein 
Triggersignal wird das Samplen angehalten und die Vorgeschichte aus dem 
Ram in den PC gelesen. Die Speicherkapazität von Rams ist größer und 
billiger wie die von FPGA's.

>Umgekehrt ist es auch wichtig das man eine Anzahl X Werte
> zuerst aus dem externen RAM ausliest in den FPGA FIFO schreibt und dann
> über ein Interface an den PC sendet.

Das Auslesen erfolgt bei mir über USB mit ca. 30MByte /s und ein Fifo
ist da wegen dem Clock domain crossing sicher notwendig aber unkritisch.

>
> Ich habe dieses Jahr vor eine 1GBit Ethernet Interface zu programmieren.
> Da benötige ich dann auch einen einen externen DDR RAM. Jedoch verwende
> ich keinen Spartan 6 sondern einen Virtex 5. Ich habe auch 2x 400MHz
> Wandler. Da ich nicht alle Daten über die Schnittselle rüberbekomme,
> muss ich die Daten in den externen DDR RAM schreiben dann die
> Digitalisierung anhalten und die Daten per GBit Ethernet an den PC
> übertragen.

Virtex kostet ein bissel mehr ;)
Gast #2009539
Lesenswert?

Verwendest Du den FTDI FT2232H als USB Interface. Mit dem habe ich 
gerade ein Projekt gemacht. Nur bei mir war die Digitalisierung deutlich 
langsamer (ca. 32MSample)

Außerdem habe ich noch aus 32 Messwerte durch aufaddieren 1 erzeugt. 
Daher reicht mir der interne RAM beim Spartan 3 aus.

Fals Du den FT2232H als USB Device benutzt dann achte auch die #THE 
Leitung. Die kann im Worst Case Fall 7ns hinter der ansteigenden CLK 
Flanke kommen, da die Periode nur 16ns ist und die Setup und Hold Zeit 
für die Daten mindestens 11ns beträgt muss man dementsprechend in die 
Zukunft schauen und die Daten dann gegenfalls erneut senden.
Gast #2009877
Lesenswert?

Ah so Du verwendest also den Cypress USB Chip. Es gibt ja nur 2 Chips 
uns zwar den von Cypress und den von FTDI. Der FTDI ist jedoch deutlich 
einfacher zu handhaben und die PC Seite ist da auch deutlich einfacher. 
(max Datendurchsatz ist 45MByte\s)
#2010177
Lesenswert?

@  Johann (Gast)

>Einfach nur Respekt Respekt Respekt. Da geht schon ordentlich Saft über
>die Leitung ^^

Kann man so sagen. Das Datenvolumen von 2 CDs pro Sekunde :-0

>Hast Du damals einen Spartan 3 oder Virtex 4, 5 verwendet?

Weder noch, es war ein ASSP, VSC9125 von Vitesse.

MFG
Falk
Gast #2010889
Lesenswert?

Ich bin momentan bei 1CD (ca.680MByte pro Sekunde) angekommen. Ich habe 
auch überlegt ob ich 10GBit Ethernet Vebindug als nächstes nehmen soll, 
da gibt es ja inzwischen PCIe Karten für den PC.

Der neue 10GBit Intel Standard der dieses Jahr erscheint ist aber auch 
sehr interessant
#2010933
Lesenswert?

Eine Alternative wäre auch PCI Express External Cabling. Da kannst du 
bis zu 7m Kupferkabel machen und das bei maximal PCIe x16. Die Hardware 
für die Host-Adapter gibts zum Beispiel hier: 
http://www.onestopsystems.com/pcie_host_adapters.php auf der Geräteseite 
ist dann lediglich ein Cable Driver Chip am PCIe Controller nötig. Mit 
Wenig Aufwand kannst du zum Beispiel den Gennum 4124 
http://www.gennum.com/products/bridges/gn4124 oder halt einen der PCIe 
x4 Endpoints im Virtex benutzen. Damit erreichst du dann die 680MB/s und 
bist nicht auf das für solche Zwecke bekloppte IP Protokoll angewiesen.
Gast #2011003
Lesenswert?

Aber ich muss doch dann das PCIe Protokoll implementieren und das ist 
doch sicherlich auch nicht besser und wenn ich dann noch an den PC 
Treiber denke ^^

Wenn ich so ein PCIe Evaluation Board kaufe, dann kann ich dies 
sicherlich nicht mit dem Kabel an den PC anschließen sondern muss mir 
sicherlich zuerst eine eine neue Hardware erstellen?
#2011038
Lesenswert?

Wenn du einen Gennum Chip nimmst, musst du gar nix implementieren, macht 
alles der Chip und der mitgelieferte DMA Core. Beim Xilinx EndPoint 
Block siehts ähnlich aus, da wird das meiste im Core abgehandelt. DMA 
müsste man da noch selbst implementieren, soweit ich das überblicke. 
Treiber gibts von Gennum bzw. Xilinx für die PC Seite. Bei Xilinx ist es 
glaub der Jungo Driver.
Wir setzen den PLX x1 Chip ein, ist total einfach anzusteuern.
Gast #2011147
Lesenswert?

Hallo Christian das hört sich doch sehr vielversprechend an. Ich habe 
die Dokumente schon mal überflogen. Eigentlich sollte es doch auch 
möglich sein 2 von diesen Chips parallel zu schalten und dann PCIe X8 
für wenig Geld zuhaben.

Ich suche gerade na dem Evaluation Board und wo man es kaufen kann.

Vielleicht sollten wir ein eigenes Thema aufmachen für diesen Chip und 
dem Evaluation Board
#2011247
Lesenswert?

Johann schrieb:
> Ah so Du verwendest also den Cypress USB Chip. Es gibt ja nur 2 Chips
> uns zwar den von Cypress und den von FTDI. Der FTDI ist jedoch deutlich
> einfacher zu handhaben und die PC Seite ist da auch deutlich einfacher.
> (max Datendurchsatz ist 45MByte\s)

Hallo Johann,

hab mir gerade mal den FT2232H auf der FTDI Seite angeguckt.

Da steht:

RS232/RS422/RS485 UART Transfer Data Rate up to 12Mbaud.
USB to parallel FIFO transfer data rate up to 10Mbyte/sec.
Single channel synchronous FIFO mode for transfers > 25 Mbytes/sec.

Wie kommst du auf 45MByte /s mit dem Ding ?

Ich glaube nicht, das FTDI so untertreibt ;)

Was hab ich da übersehen ?
#2011293
Lesenswert?

Johann schrieb:
> Ich kann leider kein Infos zum Demoboard finden. Ich habe zwar den
> Schaltplan jedoch kann ich nicht kaufen. Gibt es überhaupt eine Version
> zu kaufen oder muss man es sich selber fertigen lassen?

Hm, gute Frage. Wir haben dann wie gesagt, erst mal den PLX 8311 
genommen, weil wir nicht so viel Zeit hatten. Parallel schalten...naja, 
so einfach ist das auch nicht, die Daten müssen ja irgendwann 
synchronisiert werden. PCIe x8 geht ja aber schon mit dem Virtex 5 im 
Hard IP Block. Das x8 kann man auch locker über die iPass Kabel leiten. 
Die Frage ist eher, was du mit den Daten im PC dann machst.....wohin so 
schnell speichern?
Gast #2011322
Lesenswert?

Wenn man den FTDI im sync FIFO Mode betreibt dann erreicht man zwischen 
41 und 45MByte pro Sekunde es steht größer als 25MByte. In einem 
Treiberrelease steht das die Datentransferrate deutlich gesteigert wurde 
so das jetzt 41Mbyte erreicht werden. ICh habe es selbst getestet.
Gast #2011356
Lesenswert?

Das mit dem PC ist nicht das Problem. Ich verwende auf Grafikkarte als 
CO Prozessor um die Daten schnell genug auszuwerten. Dann wird das 
Ergbnis in eine PCIe SSD geschrieben, die Kann momentan gute 700MBtye 
pro Sekunde speichern. Die SSD hat 100GByte und ist per PCIex8 
angeschlossen und kostet so ca 350€.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren