Forum: FPGA, VHDL & Co. Spartan 6 single-ended I/O-Geschwindigkeit?


von Michael R. (codemonster)


Lesenswert?

Hallo miteinander,

ich bin auf der Suche nach Informationen zur I/O-Geschwindigkeit eines 
Xilinx Spartan 6 LX für single-ended Pins.
Laut Spartan 6 Family Overview ist die I/O-Geschwindigkeit bei 
differential I/O 1080 Mbit/s. Leider finde ich aber keinerlei Angabe für 
single-ended I/O (vorzugsweise LVCMOS).

Hat jemand diesbezüglich vielleicht Informationen oder Erfahrungswerte?

-------------------------
Hintergrund meiner Frage:

Ich möchte als Projekt eine Datenwandlerkarte für mein Pandaboard mit 12 
bit - 1GS/s erstellen, bin mir im Moment jedoch nicht sicher ob ich 4 x 
250 MS/s ADC pipelined oder 2 x 500 MS/s ADCs pipelined nehmen 
soll/kann.

Als Basis würde ich ein fertiges FPGA-Modul nutzen:
http://shop.trenz-electronic.de/catalog/product_info.php?cPath=1_65_143&products_id=897

Und nun zum eigentlichen Problem:
Ein 500 MS/s ADC würde mindestens 12 (+ DR, CS) lvds paare, also ca. 28 
Pins differential Pins benötigen, allerdings stehen nur 52 differential 
Pins auf dem Modul zur Verfügung.

Deshalb meine Frage zu den single-ended Pins, da ich so vielleicht noch 
etwas mit LVCMOS drehen könnte.

Andernfalls müsste ich auf ein größeres FPGA-Modul mit Virtex 4 
umsteigen, welches rund doppelt so teuer wäre oder zwangsweise auf 8-Bit 
Auflösung runter :(
-------------------------

Ich bin für alle Informationen sehr dankbar und würde mich freuen, wenn 
ihr mir dabei weiterhelfen könntet.


Viele Grüße,
Michael

von Johann (Gast)


Lesenswert?

Die 500MHz ADC besitzen so viel ich weiß nur LVDS Leitungen. Die kann 
man nicht mit CMOS betreiben.

Ich habe 2x400MHz 14 Bit Wandler von TI benutzt. Jedeoch verwende ich 
einen Virtex 5 FPGA da ich den Spartan 6 für zu langsam halte.

Bei den 500MHz Wandlern von TI werden die Daten per LVDS übertragen. 
Zudem wird DDR als Übertragungsvariante benutzt. Demnach beträgt die 
Frequenz im FPGA anschließend 500MHz durch 2 macht 250MHz. Dies halte 
ich schon für mehr als sprotlich bei einem Spartan 6.

Ich weiß das oftmals der Kostendruck sehr hoch ist und der Unterschied 
zwischen eine Spartan 6 und einen Virtex 5 ca. 200€ beträgt. Dafür geht 
es jedoch sehr schnell auf einem Virtex 5 und das auch sehr zuverlässig.

Zudem ist es meistens auch so das die Daten in Richtung PC übertragen 
werden und dann und der Spartan 6 oft zu langsam.

4x 250MHz Wandler würde ich jetzt nicht empfhelen, da man immer einen 
Offset Gain ausgleich machen muss. Dies ist bei 2 Wandlern sicherlich 
noch machbar bei 4 Wandlern wid das alles wieder sehr ungenau, da auch 
Temperatureffekte eine sehr große Rolle spielen.

Inzwischen stellt Atmel und National Semiconductor bereits auch sehr 
gute Wandler her die schneller als 500MHz arbeiten

von Lattice User (Gast)


Lesenswert?

500 MS/s ginge schon noch single ended, aber nicht in LVCMOS. Siehe z.B. 
DDR2 Interface (geht bis 533).

Es gibt aber einen weiteren Grund warum schnelle ADC's LVDS benutzen, 
und das ist die sehr viel geringere Störabstrahlung der LVDS Ausgänge.

Schau dir nochmal das Blockschaltbild deines Trenzboards an:

http://www.trenz-electronic.de/uploads/pics/TE0600.diagram_01.png

Es sind 52 LVDS IO/s ( = 104 Pins), mehr als genug.

von Michael R. (codemonster)


Lesenswert?

Hallo miteinander,

und erstmal vielen Dank für die hilfreichen Informationen.

Gibt es denn kostengünstige Virtex 5 Module? Hat jemand eventuell Links 
zu Anbietern oder Onlineshops?
Vorzugsweise mit der freien Webpack ISE noch programmierbar.

Bisher habe ich nur ein entsprechendes Virtex 4 Modul gefunden, welches 
noch bezahlbar wäre:
http://wiki.simple-solutions.de/Products/FPGA_Modules/Zefant-nano/Zefant-nano_%28Virtex_4%29

Allerdings ist der Virtex 4 doch schon etwas in die Jahre gekommen oder 
täusche ich mich da?


@Johann:
Was mich an deiner Antwort nachdenklich macht ist, wenn ein Spartan 6 
für so etwas "zu langsam" ist, warum verpasst man so einem FPGA dann die 
Möglichkeit 1080Mbit per diff.-Pin. zu übertragen? Ist das denn dann 
nicht Augenwischerei?

@Lattice-User:
Da sah ich den Wald vor lauter Bäumen nicht :) Danke.


Viele Grüße,
Michael

von Johann (Gast)


Lesenswert?

Wenn man mal einige Designs auf einem FPGA gemacht hat und dann die 
Timings untersucht wird man ganz schnell feststellen das die maximalen 
Geschwindigkeiten nur mit sehr viel Aufwand zu erreichen sind. Und dies 
wird natürlich sehr viel schwerer um so komplexer das Design wird.

Ein Autohersteller gibt auch an das die neue E-Klasse sensationelll 
wenig verbraucht in der Innensatadt. Wenn jedoch zahlreiche 
Fachzeitschriften dies prüfen dann erreicht man so gut wie nie die 
Herstellerangaben.

Es hängt natürlich auch davon ab wie viele Geräte man später davon bauen 
möchte. Wenn es 100k sind da lohnt es sich schon 1 Jahr arbeit 
reinzustecken damit die Kosten später so gering wie möglich sind.

Oft ist es aber so das man so schnell wie möglich am Markt sein muss 
damit man auch so viele Geräte wie möglich verkauft bevor der 
Mitbewerber sein Produkt vorstellt. Dann kommt es daruf an das die 
Entwickungsgeschwindigkeit so kurz wie möglich ist.

An deiner Stelle würde ich erst einmal mit einem Virtex 5 anfangen. Wenn 
dann das Programm fertig ist und auch sehr zuverlässig funktioniert kann 
man das gleiche Programm auf einen Spartan 6 testen. Dies geht ja auch 
ohne Hardware. Du must im ISE nur den FPGA von Virtex 5 auf Spartan 6 
ändern und einmal das ganze routen. Dann wirst Du sicherlich sehr viele 
Timing Errors erhalten. Wenn Du die dann alle beseitigen kannst, kannst 
Du auf deinen Board den Virtex 5 durch einen Spartan 6 ersetzen.

Mit ein wenig googeln wirdst Du sehr schnell Virtex 5 Boards finden die 
2 oder sogar mehr 500MHz Wandler drauf haben. Ich habe für ein Virtex 5 
Demoboard mit 2 400MHz Wandlern so ca. 2200€ bezahlt. Da war dann 
allerdings schon ein Virtex 5 SX drauf der alleine bereits 1600€ kostet.

Falls Du kein Board findest kann ich Dir ja dann einen Link schicken :-) 
Aber ich denke ein wenig arbeiten muss man für sein Geld ja auch noch 
und so lernt man gleich die Hersteller der ADCs besser kennen :-)

Wenn Du einige Boards gefunden hast kannst Du Dich ja noch mal melden.

Es äre auch noch ganz schön wenn Du mal posten könntest wie Du die Daten 
in Richtung PC übertragen willst.

von Johann (Gast)


Lesenswert?

@ Michael

Du hast ja fast genau den gleich Namen wie ich das ist ja wirlich ein 
Zufall.

von Michael R. (codemonster)


Lesenswert?

@Johann:

Um das ganze etwas zu verdeutlichen:
Ich will auf Basis des Pandaboards ein DSO erstellen mit 2 x 500Msps 
Kanälen bzw. bei Verwendung nur eines Kanals 1 Gsps (pipelined), dazu 
einen Signalgenerator und ein 16 bit Logic Analyzer.

Im Moment ist eine Übertragung der Daten an den PC überhaupt nicht 
vorgesehen, da die gesamte Software (GUI-Client und 
Daten-/Auswertungsserver) auf dem Pandaboard laufen soll. Der FPGA wird 
dabei direkt an den GPMC-Bus des Omap4 angeschlossen.

Später wäre eine Portierung des GUI-Clients auf ein Android-Tablet oder 
PC durchaus möglich, allerdings werden dann nur die notwenigen Daten für 
den aktuellen Bildbereich per USB oder Wlan übertragen und nicht mehr.


Da das ganze Projekt dennoch rentabel, als Student sitzt das Geld nicht 
gerade locker, und eventuell auch nachbaubar bleiben soll, muss ich mir 
eventeull überlegen die Bandbreite auf 2 x 250Msps zu reduzieren.


Gruß,
Michael

von Johann (Gast)


Lesenswert?

Es ist aber schon klar das die Datenrate bei 1Gigasample bei ca. 2 
Gigabyte pro Sekunde liegt. Du must dafür sorgen das Du ein Board mit 
einem sehr großen DDR2 oder DDR3 Speicher verwendest, da Du die Daten 
nicht besonders schnell in Deinen ARM9 bekommst.

Außerdem ist der analoge Teil der vor den AD-Wandlern sitzt bei den 
Frequenzen nicht mehr ganz so einfach. Dies muss sehr gut geroutet 
werden um dies gegen äußere Störungen zu schützen. Ansonsten hast Du 
Spikes ohne Ende auf Deinem Signal.

Für unser Board haben wir ca. so viel bezahlt wie für einen Kleinwagen 
und nur durch gute Planung hat auch gleich der 1. Prototype 
funktioniert.

von Michael R. (codemonster)


Lesenswert?

@Johann:
Nochmals Danke für dein reges Interesse an meinem Thema :)

Ich weiß wie sich mein Vorhaben liest :) und ich habe das nicht grundlos 
im Eingangspost weggelassen ;)

Aus diesem Grund bin ich auch auf der Suche nach einem fertigen 
OEM-Modul, um mich dem Analogteil zu widmen.

Falls ich kein entsprechendes (und bezahlbares) Modul für meine 
Wunschkonfiguration finden sollte, was ja anscheinend der Fall ist, dann 
muss ich eben an der Bandbreite Abstriche machen.

Deshalb frage ich einfach anders:

Welche maximale ADC-Samplingrate könnte denn ein Spartan 6 deiner 
Meinung nach real verarbeiten bei 10 Bit Auflösung?

Beim Spartan 6 könnte es sich dabei bsp. um das Trendzmodul handeln, 
damit die Umgebungsvariablen wie RAM usw. feststehen:
2 × 16-bit-wide 1 Gb (128 MB) DDR3 SDRAM


Viele Grüße,
Michael

von Johann (Gast)


Lesenswert?

Man sollte sich erst einmal gedanken machen wie lange ich Signale 
gigitalisieren möchte. Denn 128MByte zwischenspeicherist nicht wirklich 
viel. Es gibt inzwischen DDR2 oder DDR3 Module für den Spartan 6 die 
kaum etwas kosten und super funktionieren.

Es gibt im ISE ein Memory IP-Core. Bei diesem Memory IP-Core kann man 
aus sehr vielen RAM-Module auswählen. Das schöne dabei ist man muss sich 
keine Gedanken mehr über die Timings und den Refresh machen da dies nun 
der Memory Controller macht. Außerdem ist dies alles getestet so das Du 
da keine Zeit verlierst.

Am besten ist es wenn Du ein Memory auswählst mit mindestens 32Bit 
Datenbusbreite. Dadurch kann man die Frequenzen dann noch kontrollieren.

Bei einem Spartan 3 würde ich erst einmal mit den 125MHz Wandlern 
anfangen. Davon dann 2 Stück verbauen.

Aber wie bereits gesagt ein fertiges Board mit 2 AD-Wandler zu finden 
ist nicht besonders leicht. Die meisten haben halt nur einen Wandler 
verbaut.

Ich habe es mit einem Demoboard probiert, allerdings war dort leider 
überhaupt kein DDR Speicher drauf und die Datenübertragung erfolte über 
eine RS232 mit maximal 3 MBIT

von Michael R. (codemonster)


Lesenswert?

Hallo Johann,

da hast du mich leider falsch verstanden oder ich habe mich nicht 
deutlich genug ausgedrückt:

Ich suche kein fertiges Board mit AD-Wandlern darauf.
Ich suche ein fertiges FPGA-Modul, welches ich adhoc auf meine eigene 
AD-Wandlerplatine (mit ADCs usw.) stecken kann und fähig ist den 
Datenstrom zu verarbeiten.

Die Digitalisierung sollte durchgehend sein, wobei nicht alle Daten 
übertragen werden, sondern nur die für die Anzeige aktuellsten Daten und 
das ca. alle 50ms.

Als Beispiel ein FullHD Monitor:
1920 px  10 Bit  5 Bildschirmseiten * (1s/50ms) = ca. 2 Mb/s + evtl 1 
Mb/s Overhead.

Die Digitalisierung wird nur gestoppt, wenn eine Datenaufzeichnung 
stattfindet und der Speicher daraus folgend voll ist und komplett 
übertragen werden muss.

Da viele low-cost DSOs nur mit 1 Mpts Speicher arbeiten, sollten 128 
MByte für mein DSO-Projekt doch hoffentlich ausreichend sein?

Gruß,
Michael

von Vanilla (Gast)


Lesenswert?

Johann schrieb:
> Es gibt inzwischen DDR2 oder DDR3 Module für den Spartan 6 die
> kaum etwas kosten und super funktionieren.
>

Hm, der(die) MCBs (Spartan6 MIG) im Spartan6 kann aber nur maximal 16Bit 
breite Rams ansprechen.

Damit ist die Aussage:
> Am besten ist es wenn Du ein Memory auswählst mit mindestens 32Bit
> Datenbusbreite. Dadurch kann man die Frequenzen dann noch kontrollieren.

etwas unverstaendlich?

von Christian R. (supachris)


Lesenswert?

Michael R. schrieb:
> Die Digitalisierung sollte durchgehend sein, wobei nicht alle Daten
> übertragen werden, sondern nur die für die Anzeige aktuellsten Daten und
> das ca. alle 50ms.

Hm, und wie kommst du vom Datenstrom mit 1GS/s auf diene paar Pixel? 
Willst du nach dem Trigger nur die 1920 Pixel zwischenspeichern und 
weiter transportieren? Das wäre dann ja nur ein winziger Ausschnitt...
Die meiste Intelligenz eines Speicher-Oszis steckt im Algoritmus, aus 
dem Sample-Speicher die Daten für die Anzeige zu berechnen. Da darf kein 
Spike verloren gehen, auch wenn es noch so komprimiert ist. Abtastrate 
am ADC gleich reduzieren ist auch Mist, dann bekommst du schnelle 
Trigger nicht mit.
Nicht umsonst haben gute Speicher-Oszis massenhaft Sampling-Speicher, 
der die Kisten so teuer macht. Und am (integrierten) PC wird dann aus 
dem gesamten Sample-Speicher, der nach dem Trigger gefüllt wurde, die 
Anzeige berechnet. Und das frisst jede Menge CPU Zeit. Ich weiß nicht, 
wie du das in Hardware machen willst....gerade ein Maxima-Sucher braucht 
ja mindestens einen Komparator, und selbst bei Pipelining hast du da 
mehrere Logik-Ebeben zwischen 2 FF, da wirds ganz schnell Brühe mit 500 
MHz (mehr schafft der S6 intern sowieso nicht). Der BlockRam geht sogar 
nur bis 250MHz, und in den müsstest du die Samples auf jeden Fall erst 
einlaufen lassen, bevor die auf den externen RAM können.

von Lattice User (Gast)


Lesenswert?

@Michael R.

Lass dich durch die Schwarzseher hier nicht von dem Projekt abhalten. 
Das macht sicher viel Spass und hat ein hohes Lernpotential.

Der Spartan6 hat übrigens eine sehr leistungsfähige IO Logik und kann 
aus deiner 500 MHz Datenrate intern komfortable 125 MHz mit vierfacher 
Datenbreite machen. Ich glaube das beantwortet auch deine Frage wie man 
auf 1080 Mbit/s kommt.

Auch wegschreiben auf das DRAM sollte bei dem Trenzboard kein Problem 
sein (2 unabhängige 16 bit breite DDR3 Speicher) , aber im ersten 
Schritt kann man sich aufs Blockram bechränken, damit sind beim LX45 
auch schon > 100k Samples möglich.

Probleme die ich sehe:

1. Analoge Eingangsbeschaltung, Störsicherheit.

2. Auch bei LVDS ist das Layout bei 500 MHz Datenrate nicht trivial 
(Length matching, Impedanz) (aber immer noch einfacher als mehrere 
parallele ADC's zu matchen)

3. Das Gegenstück der Connectoren für das Trenzboard sind vermutlich 
auch nicht ganz billig (einzeln)

4. Falls du das Ethernetinterface auf dem Trenzboard zur 
Datenübertragung nutzen willst, wirst du um einen Softcore nicht 
herumkommen. Schau dir sicherheitshalber schon mal an wieviel Resourcen 
der verbraucht.

Ansonsten schau mal ob du auch mit SPI die Verbindung zum Pandaboard 
herstellen kannst. Dürfte etwas schneller als RS232 sein.

von Johann (Gast)


Lesenswert?

Speicher kann man bei einem Oszi nicht genug haben. Viele Hersteller von 
DAQ-Boards verwenden ganz normalen Notebookspeicher den man in jedem 
Laden kaufen kann. Man muss auf seiner Platine halt nur den passenden 
Steckverbinder implementieren.

Um noch mal auf die Bandbreite bei den I/Os zurückzukommen. Man muss da 
kleingedruckte im Datenblatt lesen. Die Datenrate hängt stark davon ab 
welchen Übertragungsstandard man verwendet. Bei LVCMOS 3,3V wird nie so 
schnell sein wie LVCMOS 1,8V oder weniger, da einfach die 
Flankensteilheit begrenzt ist.

Deshalb sollte man mal ins Datenblatt schauen und dann kann man 
nachlesen wie schnell es wirklich alles geht.

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.