Forum: FPGA, VHDL & Co. Spartan XC3S400 als quasi Dual-Port Ram


von P. Z. (fpga-anfaenger)


Lesenswert?

Hallo zusammen,

ich möchte 2 Spartan S400 miteinander koppeln.

1. Spartan S400 übernimmt das Einlesen der Daten mit Takt 75Mhz ( HDTV )
und 24 Bit Breite von der Analogen A/D Wandler Stufe.

- Daten puffern
- im Ping Pong Verfahren in den internen Block Ram schreiben
- Takt der eingehenden Daten dadurch vom internen festen TAkt des FPGA 
entkoppeln
- Daten umsortieren
- Daten an den zweiten S400 weitergeben

2. S400 Daten Bild-Datenmanipulation durchführen und ausgewählte Daten ( 
nicht alle ) über USB an den PC senden


Warum 2 * S400 und nicht einen S1000er ?

Ich hab bereits einiges in der WEB ISe simuliert und synthetisiert und 
brauche sowiso 2*S400er weil die Logik in einen nicht passt.
Und die Summe der Pins und internem Ram bei 2 Einzelbausteinen höher ist 
als bei einem S1000er.

Außerdem kann ich die Bausteine leicht bei Reichelt beziehen eine 
einfache Bezugsquelle für den 1000er ist mir nicht bekannt.

Wenn jemand eine andere deutsche Bezugsquelle für Spartan 400 und 1000er 
( also ohne Kreditkarte, Paypal usw. ) kennt, BITTE BITTE mitteilen.

Nun meine Fragen ?

Der S400 hat folgende Daten

- 280K Bits Block Ram  ( d.h. 36 KByte )
- 56K distributed Ram  ( d.h. 7 KByte )
- 400K System Gates    ( d.h. ??? Byte )

1. Wieviel Dual-Port Ram kann ich insgesamt effektiv realisieren ?

2. Kann man ungefähr rechen 400K System Gates macht ca. 50K Ram ???

3. Ist der Ram, den ich über System-Gates realisiere deutlich langsamer 
wie der Block-Ram ?

Ich hab auch schon über S-RAM Bausteine nachgedacht, aber die schnellen 
10ns Bausteine sind schwer zu bekommen und ich brauch dann auch wieder ( 
Adressbus, Datenbus, Steuerleitungen und 2 Bausteine wegen Ping-Pong 
Betrieb )

Gruß vom FPGA-Anfänger

von Falk (Gast)


Lesenswert?

> - 280K Bits Block Ram  ( d.h. 36 KByte )

Genauer gesagt 16 BRAM a 18 kbit.

> - 56K distributed Ram  ( d.h. 7 KByte )

Jepp, man kann die LUTs als RAM verwenden, allerdings bei S3 nur jeden 
2.

> - 400K System Gates    ( d.h. ??? Byte )

Also know as Marketing Gates. Vergiss die Angabe, hat keine Bedeutung 
für FPGA Design. Hier zählen nur Anzahl LUTs, BRAM, Multipliere etc. War 
ursprümglich eingeführt worden, um einen Vergleich mit ASICs zu 
ermöglichen.

> 1. Wieviel Dual-Port Ram kann ich insgesamt effektiv realisieren ?

16x 18kBit. Theoretisch kannst du auch noch die Hälfte der LUTs am Dual 
Port RAM gebrauchen, allerdings verringert sich die Kapazität bei 
Distributed RAM nochmal auf die Hälfte im Dual port Modus. Also nur 
3.5k.

> 2. Kann man ungefähr rechen 400K System Gates macht ca. 50K Ram ???

Nein. Siehe oben.

> 3. Ist der Ram, den ich über System-Gates realisiere deutlich langsamer
> wie der Block-Ram ?

Er ist SCHNELLER!! Aber auch wesentlich kleiner. PRaktisch realisiert 
man nur kleine RAMs und FIFOS damit (16...64 Worte Tiefe), frössere 
eigentlich immer mit BRAMs.

> Ich hab auch schon über S-RAM Bausteine nachgedacht, aber die schnellen
> 10ns Bausteine sind schwer zu bekommen und ich brauch dann auch wieder (
> Adressbus, Datenbus, Steuerleitungen und 2 Bausteine wegen Ping-Pong
> Betrieb )

Nimm die normalen. Die sind schnell genug.

MfG
Falk, FPGA-Profi ;-)

von P. Z. (fpga-anfaenger)


Lesenswert?

Hallo Falk,

erstmal Danke, für Deine Infos.

Allerdings verstehe ich den Satz nicht.

"Nimm die normalen. Die sind schnell genug"

Die Daten 3 * 8 Bit kommen mit 75 MHz !!!

Das heißt mit ca. 15 ns.

Nun muss das Ram ja geschrieben und nach einem bestimmten Muster gelesen 
werden (Umsortierung), um den kontinuierlichen Datenfluss zu 
gewährleisten.

Wie würdest du das Problem per S-RAM lösen ?

Gruß vom FPGA-Anfaenger, der für jede Antwort dankbar ist.

von Falk (Gast)


Lesenswert?

Ja und? Was sind heutzutage schon 75 MHz. Schon mal ins Datenblatt 
geschaut? Und auch verstanden? Ich fürchte, nein und nein.

*Blätter, blätter*

Seite 83

Clock to out time 2,4 ns max.
Setup time 0,49ns min.

Ausserdem gibts keine 10ns Version. Die heissen Speed Grade -4 und -5 
(sprich: Strich Vier, strich Fünf). Die mit dem kleineren Speedgrade 
sind "langsamer", im Gegensatz zur Angabe bei CPLDs, dort sind die mit 
den kleinen Zahlen schneller.

Die RAMs im S3 kann man bei halbwegs gescheiter Ansteuerung locker mit 
200 MHz takten, teilweise noch schneller wenn man Pipelining bis zum 
Anschlag betreibt. Also mach dir um deine 75 MHz keine Sorgen. Bei 
halbwegs gescheitert Umsetzung kein Thema.

> Wie würdest du das Problem per S-RAM lösen ?

Was meinst du mit S-RAM? Externen RAM? Kommt immer darauf an, wieviel 
Speicher gebraucht wird.

MfG
Falk

von T.M. (Gast)


Lesenswert?

"... 3. Ist der Ram, den ich über System-Gates realisiere deutlich 
langsamer
> wie der Block-Ram ?

Er ist SCHNELLER!! Aber auch wesentlich kleiner. PRaktisch realisiert
man nur kleine RAMs und FIFOS damit (16...64 Worte Tiefe), frössere
eigentlich immer mit BRAMs..."

Das gilt aber auch nur, wenn man wirklich kleine RAMs als Distributed 
Ram realisiert. Wenn man meinetwegen den halben Chip als RAM nutzt, kann 
man das vergessen. Das Timing wird bedeutend schlechter wegen den 
Laufzeiten und bei der Synthese und dem P&R kann man sich erstmal nen 
Kaffee holen, weil es dauert. Also praktisch schneller, theoretisch aber 
nicht.

von Falk (Gast)


Lesenswert?

>  Also praktisch schneller, theoretisch aber nicht.

Häää?

MFG
Falk

von P. Z. (fpga-anfaenger)


Lesenswert?

Hallo zusammen,

ich hab mich mißverständlich ausgedrückt, Sorry

Dass die internen Block Ram Bausteine Suuper schnell sind ist mir klar.

A. Ich habe jetzt soviel verstanden, dass man letztlich einen schnellen 
Dual Port Ram mit dem FPGA nur sinnvoll mit dem vorhandenen Block-RAM 
machen sollte.

Beim S400 wäre das dann auf

16 BRAM a 18 kbit = 36 KByte begrenzt

Dafür allerdings Super schnell


B. Wenn man mehr Pufferspeicher benötigt hat man ein Problem

=> Ich benötige eigentlich 48 KByte

Für diesen Fall war meine Frage gedacht bzgl. der S-RAMs und der 10ns 
Rams.

Ich müsst dann wohl die Daten im FPGA puffern und über einen z.B. 48 Bit 
Breiten Datenbus ins S-RAM schreiben.

Beispiel: Eingangsseitig: 75 MHz * 3 Byte macht 225 Mhz

Diese Ins S-RAM schreiben und über codierten Zähler auslesen macht

einen Bandbreite von 450 MByte/s

Bei einer Datenbusbreite von 6 Byte also 48 Bit macht das

75 Mhz Zugriffs Frequenz auf die S-RAMs das wären dann z.B. 10ns Ram.

Soviel ich weiß kann man allerdings die RAMs praktisch nicht so schnell 
schreiben und lesen.

Also würde das bedeuten ich müßte den Datenbus noch breiter machen, 
damit ich in vernünftige Zugriffszeiten komme, die auch tatsächlich 
stabil laufen.

Auf diese Weise verliere ich sehr viele PINs.

Ich denke die Problematik ist jetzt deutlicher geworden.

Deshalb nochmals meine Frage wie lößt der Profi so ein Problem.

Nochmals Danke, dass Ihr euch soviel Mühe gemacht habt zu antworten.

Ich weiß ich bin Anfänger und die Nerven manchmal.

Gruß vom FPGA-Anfaenger

von Falk (Gast)


Lesenswert?

> A. Ich habe jetzt soviel verstanden, dass man letztlich einen schnellen
> Dual Port Ram mit dem FPGA nur sinnvoll mit dem vorhandenen Block-RAM
> machen sollte.

Ja.

> Beim S400 wäre das dann auf
> 16 BRAM a 18 kbit = 36 KByte begrenzt
> Dafür allerdings Super schnell

Ja.

> B. Wenn man mehr Pufferspeicher benötigt hat man ein Problem
=> Ich benötige eigentlich 48 KByte

Ja. ;-)

> Für diesen Fall war meine Frage gedacht bzgl. der S-RAMs und der 10ns
> Rams.

Du meinst externe SRAM Bausteine, nicht wahr?

> Ich müsst dann wohl die Daten im FPGA puffern und über einen z.B. 48 Bit
> Breiten Datenbus ins S-RAM schreiben.

Warum 48 Bit?

> Beispiel: Eingangsseitig: 75 MHz * 3 Byte macht 225 Mhz


AHHHH. Bitte sowas SOFORT abgewöhnen. Diese wilde Durcheinandergewürfle 
von MHz, Mbit/s und Msamples/s usw. ist SCHRECKLICH!!!

Dein 75 MHz x 8 bit sind
-- 75 Mwords/s a 24 Bit
-- oder 225 Mwords/s a 8 Bit

Aber ganz sicher NICHT 225 MHz.

> Diese Ins S-RAM schreiben und über codierten Zähler auslesen macht
> einen Bandbreite von 450 MByte/s

Du meinst sicher Schreiben und Lesen. Ja, das würde 450 Mbyte/s ergeben.

> Bei einer Datenbusbreite von 6 Byte also 48 Bit macht das
> 75 Mhz Zugriffs Frequenz auf die S-RAMs das wären dann z.B. 10ns Ram.

Ja.

> Soviel ich weiß kann man allerdings die RAMs praktisch nicht so schnell
> schreiben und lesen.

Welche RAMs? Die im FPGA? Locker? Externe SRAM? 100 MHz IC gibts wie 
Sand am Meer.

> Also würde das bedeuten ich müßte den Datenbus noch breiter machen,
> damit ich in vernünftige Zugriffszeiten komme, die auch tatsächlich
> stabil laufen.

Nein. Einfach nur 100 MHz (Eigentlich nur 75) SSRAMs (Synchrone SRAMs) 
nehmen.

> Auf diese Weise verliere ich sehr viele PINs.

Wozu brauchst du die?

> Deshalb nochmals meine Frage wie lößt der Profi so ein Problem.

Indem er einfach schnellere RAMs bei schmaleren Datenbussen nimmt. Z.B. 
DDR-RAM (Datenübertragung auf beiden Taktflanken). Deine 48 Bit/75 
Mwords/s kann man locker mit 16 Bit/225 MWords/s ereichen. Das wäre dann 
ein DDR-RAM mit 112,5 MHz. Macht jeder 0815 DDR Speicher. Ansteuerung 
sowie Hardware ist dann aber schon um einiges Anspruchsvoller. Nix für 
Anfänger!

MfG
Falk

von P. Z. (fpga-anfaenger)


Lesenswert?

Hallo Falk,

nochmals Danke für die Infos.

Die Problematik eines SD-Ram Controllers ist mir bekannt und damit 
wollte ich mich echt nicht belasten. Du hast schon recht, das ist nichts 
für Anfänger. Deshalb hab ich mich ja ganz bewußt nach S-RAM 
Alternativen umgeschaut.

Der nachfolgende Satz ist genau mein Problem:

"Welche RAMs? Die im FPGA? Locker? Externe SRAM? 100 MHz IC gibts wie
Sand am Meer"

1. Ich meine die externen SRAM Bausteine

2. 100 MHz IC gibts wie Sand am Meer ?????

Wo kann ich die als Privatperson beziehen ??

Wäre für einen Bezugshinweis dankbar

Gruß FPGA-Anfaenger




von Falk (Gast)


Lesenswert?

> "Welche RAMs? Die im FPGA? Locker? Externe SRAM? 100 MHz IC gibts wie
> Sand am Meer"

> 1. Ich meine die externen SRAM Bausteine

Hab ich auch so verstanden.

> 2. 100 MHz IC gibts wie Sand am Meer ?????

www.micron.com
www.idt.com

> Wo kann ich die als Privatperson beziehen ??

Tja, gute Frage. Keine Ahnung :-(

MFG
Falk


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.