Stefan Huebner
Guest
Sat Aug 14, 2010 5:52 pm
Hallo zusammen,
ich hatte vor einiger Zeit schon mal in diese Richtung gefragt, aber
gerade auf diesem Gebiet entwickelt sich der Markt ja schneller als man
gucken kann.
Da hier sicher einige mitlesen, die aktiv mit solchen Designs zu tun
haben, frage ich daher noch mal.
Gesucht wird eine Möglichkeit, Daten mit 5-10 GS/s (Samplebreite 6 bit)
in reichlich Speicher zu schieben, Größenordnung 1GByte. Ein ASIC kommt
genau so wenig in Frage wie eine entsprechende DAQ-Karte, das Ganze ist
für ein Einzelstück, mit welchem ich in der Firma Datenformate
analysieren möchte. Auch die leistungsmäßig passenden FPGA-Boards sind
zumindest neu noch zu teuer, zumal ich die entsprechende Anzahl ADCs
auch irgendwie anbinden muss.
Eine parallele Lösung aus mehreren DAC-FPGA-Speicher-Boards wäre da
vermutlich am einfachsten zu handhaben.
@Joerg (da Du vermutlich sowieso drüber liest

)
Deinen Tipp zur steuerbaren Verzögerung der Taktsignale der ADCs, den Du
vor einiger Zeit mal geschrieben hast, habe ich immer noch nicht
umgesetzt, bisher habe ich die beiden ADCs nur mit fester Verzögerung
gefahren.
Dirk Ruth
Guest
Sat Aug 14, 2010 8:47 pm
Stefan Huebnerschrieb:
"
Quote:
Hallo zusammen,
ich hatte vor einiger Zeit schon mal in diese Richtung gefragt, aber
gerade auf diesem Gebiet entwickelt sich der Markt ja schneller als man
gucken kann.
Da hier sicher einige mitlesen, die aktiv mit solchen Designs zu tun
haben, frage ich daher noch mal.
Gesucht wird eine Möglichkeit, Daten mit 5-10 GS/s (Samplebreite 6 bit)
in reichlich Speicher zu schieben, Größenordnung 1GByte. Ein ASIC kommt
genau so wenig in Frage wie eine entsprechende DAQ-Karte, das Ganze ist
für ein Einzelstück, mit welchem ich in der Firma Datenformate
analysieren möchte. Auch die leistungsmäßig passenden FPGA-Boards sind
zumindest neu noch zu teuer, zumal ich die entsprechende Anzahl ADCs
auch irgendwie anbinden muss.
Eine parallele Lösung aus mehreren DAC-FPGA-Speicher-Boards wäre da
vermutlich am einfachsten zu handhaben.
Könnte sowas nicht direkt auf einem Mainboard laufen?
Also ADC auf einen RAM-Riegel setzen, in's Mainboard einklicken und in
ASM die Daten in einen anderen echten Riegel kopieren.
Könnte mir vorstellen, das man sowas unter embedded Linux oder DOS
machen könnte.
Dirk
Gerrit Heitsch
Guest
Sat Aug 14, 2010 8:57 pm
On 08/14/2010 09:47 PM, Dirk Ruth wrote:
Quote:
Könnte sowas nicht direkt auf einem Mainboard laufen?
Also ADC auf einen RAM-Riegel setzen, in's Mainboard einklicken und in
ASM die Daten in einen anderen echten Riegel kopieren.
DDR (1, 2 oder 3) ist dynamisches RAM mit einer nicht so besonders
einfachen Ansteuereung. Ohne Zusatzlogic wird ein ADC damit nichts
anfangen koennen. Ebenso wird der in aktuellen CPUs verbaute
DRAM-Controller mit einem ADC nicht viel anfangen koennen.
Gerrit
Stefan Huebner
Guest
Sat Aug 14, 2010 9:07 pm
Quote:
Könnte sowas nicht direkt auf einem Mainboard laufen?
Also ADC auf einen RAM-Riegel setzen, in's Mainboard einklicken und in
ASM die Daten in einen anderen echten Riegel kopieren.
Könnte mir vorstellen, das man sowas unter embedded Linux oder DOS
machen könnte.
Das Protokoll von DDR-SDRAMs bildet man nicht mal eben nach, das geht
dann in Richtung großes schnelles FPGA - und wenn ich das zur Verfügung
hätte, bräuchte ich das Mainboard ja nicht mehr
An einen PC hatte ich auch schon gedacht, PCIe schafft pro Lane 2 bzw 4
GBit/s (Version 1 vs 2) und das ist etwas einfacher zu implementieren
als ein DDR2-Controller. Aber das schnelle FPGA werde ich dennoch
brauchen. Real kommt man unter besten Bedingungen auf einer PCIe-x1 Lane
auf >200MByte/s, die wollen dann auch erstmal weggeschrieben werden.
Es läuft alles darauf hinaus, dass man einen Stream von bis zu 10 GS/s,
also 60GBit/s, erstmal puffern muss, wenn man PC-Hardware zur finalen
Speicherung einsetzen will - womit wir wieder beim dicken FPGA wären ;)
Ein entsprechend potentes DSO oder eben eine DAQ-Karte wären ja im
Prinzip die fertige Lösung, und gerade im Falle des DSO auch mit
hervorragendem Zusatznutzen versehen, aber eben zu teuer.
Jan Lucas
Guest
Sat Aug 14, 2010 11:04 pm
Stefan Huebner schrieb:
Quote:
Könnte sowas nicht direkt auf einem Mainboard laufen? Also ADC auf
einen RAM-Riegel setzen, in's Mainboard einklicken und in ASM die
Daten in einen anderen echten Riegel kopieren. Könnte mir
vorstellen, das man sowas unter embedded Linux oder DOS machen
könnte.
Das Protokoll von DDR-SDRAMs bildet man nicht mal eben nach, das geht
dann in Richtung großes schnelles FPGA - und wenn ich das zur
Verfügung hätte, bräuchte ich das Mainboard ja nicht mehr

An einen
PC hatte ich auch schon gedacht, PCIe schafft pro Lane 2 bzw 4 GBit/s
(Version 1 vs 2) und das ist etwas einfacher zu implementieren als
ein DDR2-Controller.
Äh, nicht wirklich. PCIe ist deutlich komplexer zu implementieren als
DDR2, zudem du für DDR2/3 schon deutlich mehr von den Herstellern
vorimplementiert bekommst. Dazu kommt das sich dort Bandbreite und
Antwortzeiten deutlich besser abschätzen lassen als beim PCIe, bei dem
sich jeder Chipsatz noch mal anders verhalten kann.
Quote:
Aber das schnelle FPGA werde ich dennoch brauchen. Real kommt man
unter besten Bedingungen auf einer PCIe-x1 Lane auf >200MByte/s, die
wollen dann auch erstmal weggeschrieben werden. Es läuft alles darauf
hinaus, dass man einen Stream von bis zu 10 GS/s, also 60GBit/s,
erstmal puffern muss, wenn man PC-Hardware zur finalen Speicherung
einsetzen will - womit wir wieder beim dicken FPGA wären
Das FPGA muß eigentlich nicht mal sonderlich dick sein, DDR2/3
Controller sind nicht besonders groß und neben dem Controller ist in
deinem Aufgabenfall ja kaum zusätzliche Logik nötig. Das eigentliche
Problem ist das du für diese Datenmengen sehr breite Busse brauchst um
auf machbare Busfrequenzen runter zu kommen. Wenn du das mit einem
einzelnen FPGA machen willst, dann landest du ganz schnell bei sehr
großen FPGAs, einfach weil alle anderen nicht in Bauformen mit so vielen
IOs verfügbar sind. Ein parallele Lösung mit mehreren kleinen FPGAs
dürfte da wirklich am einfachsten zu handhaben sein.
Quote:
Ein entsprechend potentes DSO oder eben eine DAQ-Karte wären ja im
Prinzip die fertige Lösung, und gerade im Falle des DSO auch mit
hervorragendem Zusatznutzen versehen, aber eben zu teuer.
Evt. mieten? Was du vorhast ist weder auf der analogen Seite noch auf
der digitalen Seite trivial, da entstehen ganz schnell
Entwicklungskosten in einer Höhe die das DSO nicht mehr so teuer
erscheinen lassen. Für ein Einzelstück dürfte sich so eine Entwicklung
vermutlich wirtschaftlich nicht rechnen.
Grüße,
Jan
Dirk Ruth
Guest
Sun Aug 15, 2010 4:31 am
Stefan Huebnerschrieb:
"
Quote:
Könnte sowas nicht direkt auf einem Mainboard laufen?
Also ADC auf einen RAM-Riegel setzen, in's Mainboard einklicken und in
ASM die Daten in einen anderen echten Riegel kopieren.
Könnte mir vorstellen, das man sowas unter embedded Linux oder DOS
machen könnte.
Das Protokoll von DDR-SDRAMs bildet man nicht mal eben nach, das geht
dann in Richtung großes schnelles FPGA - und wenn ich das zur Verfügung
hätte, bräuchte ich das Mainboard ja nicht mehr
Vermutlich denkst du zu kompliziert.
Quote:
An einen PC hatte ich auch schon gedacht, PCIe schafft pro Lane 2 bzw 4
GBit/s (Version 1 vs 2) und das ist etwas einfacher zu implementieren
als ein DDR2-Controller.
Sehe ich nicht so.
Quote:
Aber das schnelle FPGA werde ich dennoch
brauchen. Real kommt man unter besten Bedingungen auf einer PCIe-x1 Lane
auf >200MByte/s, die wollen dann auch erstmal weggeschrieben werden.
Es läuft alles darauf hinaus, dass man einen Stream von bis zu 10 GS/s,
also 60GBit/s, erstmal puffern muss, wenn man PC-Hardware zur finalen
Speicherung einsetzen will - womit wir wieder beim dicken FPGA wären ;)
Ein entsprechend potentes DSO oder eben eine DAQ-Karte wären ja im
Prinzip die fertige Lösung, und gerade im Falle des DSO auch mit
hervorragendem Zusatznutzen versehen, aber eben zu teuer.
Warum willst du einen Controller implementieren?
Du willst ja nur Daten von einer Bank (mit ADC) lesen und diese Daten
erstmal in eine andere Bank kopieren (später dann auf Festplatte).
Dazu wirst du natürlich die Steuersignale richtig verdrahten müssen.
Die Adressleitungen brauchst du nicht.
Erstmal wird man ein altes Speichermodul nehmen und die RAMs ablöten.
Das EEPROM kann man drauf lassen, bzw. mit passenden Werten
programmieren. Jegliche Speichertest auf dieses Modul müssen natürlich
unterbleiben. Evtl. muss man den Speichercontroller auch per Software
konfigurieren (CAS Latency möglichst 0).
Ein FPGA wird man schon brauchen, da man nicht 1GB kontinuierlich bei
gleichen Takt lesen kann. Der Controller kann nur in Bursts (8 Bursts)
lesen und will dazwischen neu addressieren. Dabei kann man auch gleich
die 6bit in z.B. 60bit Breite umsetzen, also bis zu 10 Werte
zwischenpuffern, sonst wird das mit den 10 GS/s nichts.
Alles in allem sicher kein Projekt, das man mal an einem verregneten
Wochenende erschlägt, aber durchaus interessant. Mainboard und
Speicheriegel sind ja Massenware und billig. Dafür muss man halt seine
Zeit reinstecken.
Dirk
Stefan Huebner
Guest
Sun Aug 15, 2010 10:46 am
Quote:
Das Protokoll von DDR-SDRAMs bildet man nicht mal eben nach, das geht
dann in Richtung großes schnelles FPGA - und wenn ich das zur Verfügung
hätte, bräuchte ich das Mainboard ja nicht mehr :)
Vermutlich denkst du zu kompliziert.
Zunächst dachte ich, dass Du dafür zu einfach denkst, aber Deine schon
konkreteren Angaben im weiteren Text lassen erahnen, dass Du schon was
mit DDR2 gemacht hast (mehr als kaufen und einstecken

)
Quote:
An einen PC hatte ich auch schon gedacht, PCIe schafft pro Lane 2 bzw 4
GBit/s (Version 1 vs 2) und das ist etwas einfacher zu implementieren
als ein DDR2-Controller.
Sehe ich nicht so.
Ok, überzeugt - ich habe nach zwei Negativmeldungen dieser Art noch mal
in die PCIe Specs geguckt und gar nicht erst weitergelesen. Da muss ich
ja im Prinzip massiv puffern, wenn ich keine Werte verlieren möchte, und
die Implementierung ist auch nicht wirklich trivial.
Quote:
Warum willst du einen Controller implementieren?
Du willst ja nur Daten von einer Bank (mit ADC) lesen und diese Daten
erstmal in eine andere Bank kopieren (später dann auf Festplatte).
Dazu wirst du natürlich die Steuersignale richtig verdrahten müssen.
Die Adressleitungen brauchst du nicht.
Erstmal wird man ein altes Speichermodul nehmen und die RAMs ablöten.
Das EEPROM kann man drauf lassen, bzw. mit passenden Werten
programmieren. Jegliche Speichertest auf dieses Modul müssen natürlich
unterbleiben. Evtl. muss man den Speichercontroller auch per Software
konfigurieren (CAS Latency möglichst 0).
Wenn der Controller da mitspielt...
Quote:
Ein FPGA wird man schon brauchen, da man nicht 1GB kontinuierlich bei
gleichen Takt lesen kann. Der Controller kann nur in Bursts (8 Bursts)
lesen und will dazwischen neu addressieren. Dabei kann man auch gleich
die 6bit in z.B. 60bit Breite umsetzen, also bis zu 10 Werte
zwischenpuffern, sonst wird das mit den 10 GS/s nichts.
Das ist klar. Mein Probe-ADC kam in ersten Versuchen auch "nur" auf
800MS/s. Insofern hätte ich eh schon 10-faches Interleaving bei 8GS/s.
Quote:
Alles in allem sicher kein Projekt, das man mal an einem verregneten
Wochenende erschlägt, aber durchaus interessant. Mainboard und
Speicheriegel sind ja Massenware und billig. Dafür muss man halt seine
Zeit reinstecken.
Massenware und billig - das ist eben der Punkt. DAQ-Karten im
GS/s-Bereich sind eben keine Massenware, wenn man sowas bräuchte, um
sich digital fernverblöden zu lassen, würden die Teile zweieurofuffzich
kosten.
Das einzige mir bekannte Massenprodukt, in dem ein ADC mit 4 und mehr
GS/s und meistens auch 6 bit sitzt, der an einer anständig
programmierbaren Signalverarbeitungslogik (naja, DSP mag ich sowas
Proprietäres nicht nennen) hängt und eine fast ausreichend schnelle
Schnittstelle hat, sind die Controller für Festplatten. Aber die
wechseln alle zwei Wochen ihre Spezifikatin und sind nicht wirklich
brauchbar dokumentiert.
Dirk Ruth
Guest
Sun Aug 15, 2010 3:50 pm
Stefan Huebner schrieb:
"
[...]
Quote:
Massenware und billig - das ist eben der Punkt. DAQ-Karten im
GS/s-Bereich sind eben keine Massenware, wenn man sowas bräuchte, um
sich digital fernverblöden zu lassen, würden die Teile zweieurofuffzich
kosten.
Das einzige mir bekannte Massenprodukt, in dem ein ADC mit 4 und mehr
GS/s und meistens auch 6 bit sitzt, der an einer anständig
programmierbaren Signalverarbeitungslogik (naja, DSP mag ich sowas
Proprietäres nicht nennen) hängt und eine fast ausreichend schnelle
Schnittstelle hat, sind die Controller für Festplatten. Aber die
wechseln alle zwei Wochen ihre Spezifikatin und sind nicht wirklich
brauchbar dokumentiert.
PCI halte ich für sowas völlig ungeeignet. Die Vorlaufzeiten um sowas
zu entwickeln sind viel zu lang. Dazu kommt noch das ganze Power
Managment usw. Man muss dem Buscontroller viel zu viel "beantworten"
bevor es richtig los geht.
Für einen Festplattencontroller bekommt man keine richtige
Dokumentation. Vermutlich läuft auch zu vieles automatisch ab, auf das
man keinen Einfluss hat und was einem die Sample-Zeiten versaut.
DAQ-Karten die kontinuierlich 1GB bei 10GS/s sampeln hab ich jetzt
noch nicht gesehen.
Allen gemein ist aber, dass die Daten letztendlich im RAM eines PCs
landen und je länger diese Kette ist, um so schwieriger ist der
Datenstrom zu kontrollieren. Schneller als der RAM Bus können die
nicht sein, es sei denn, dass sie selbst 1GB zwischenbuffern.
Dann doch lieber gleich von RAM zu RAM. Zum Warmwerden reichen sicher
die Einstellungen, die man im BIOS machen kann.
Als schwieriger sehe ich eher das elektrische Interface. Bei 1GHz hast
du sicher aber auch nichts anderes erwartet, Tektronix hat da was
schönes im Programm.
http://www2.tek.com/cmswpt/psdownload.lotr?ct=PS&cs=psu&ci=14600&lc=EN
http://www.futureplus.com/download/datasheet/fs2355_ds.pdf
http://nexustesttechnology.com/products/memory/ddr3/ddr3dihs/DDR3DIHS-DS-120.pdf
So ist das halt, wenn man sich im Grenzbereich bewegt. Ich hoffe nur
du hast die dazu passenden Messmöglichkeiten.
Dirk
Stefan Huebner
Guest
Sun Aug 15, 2010 4:56 pm
Quote:
PCI halte ich für sowas völlig ungeeignet. Die Vorlaufzeiten um sowas
zu entwickeln sind viel zu lang. Dazu kommt noch das ganze Power
Managment usw. Man muss dem Buscontroller viel zu viel "beantworten"
bevor es richtig los geht.
PCI ging ja noch. Bei PCIe ist die Geschwindigkeit des Busses ein
Problemultiplikator, das habe ich ja inzwischen eingesehen
Quote:
Für einen Festplattencontroller bekommt man keine richtige
Dokumentation. Vermutlich läuft auch zu vieles automatisch ab, auf das
man keinen Einfluss hat und was einem die Sample-Zeiten versaut.
Eben. Ich hab zwar mal was von Marvell bekommen, aber dafür bekommt man
den Chip nicht, ausser, man lötet ihn aus. Keine Basis.
Ich hatte die DSP-Funktionen bewusst umschrieben, weil zB. die
Servoerkennung und Datenrückgewinnung weitgehend fest verdrahtet sind.
Quote:
DAQ-Karten die kontinuierlich 1GB bei 10GS/s sampeln hab ich jetzt
noch nicht gesehen.
Ich hatte mir Modelle mit 7GS/s und 0,5GS Speichertiefe und das
Picoscope mit 5GS/s und 1GS angschaut und einfach mal über die Zeit
seitem interpoliert, dass inzwischen 10GS/s möglich sein müssten.
Quote:
Allen gemein ist aber, dass die Daten letztendlich im RAM eines PCs
landen und je länger diese Kette ist, um so schwieriger ist der
Datenstrom zu kontrollieren. Schneller als der RAM Bus können die
nicht sein, es sei denn, dass sie selbst 1GB zwischenbuffern.
Dann doch lieber gleich von RAM zu RAM. Zum Warmwerden reichen sicher
die Einstellungen, die man im BIOS machen kann.
Verlockend scheint das auf jeden Fall erst einmal. Allerdings muss ich
dazu ja dem Controller einerseits sagen, dass da RAM ist, damit ich
davon lesen kann, andererseits aber darf er den ADC nicht mitten in den
RAM-Bereich einblenden (also kein Multichannel-Betrieb usw).
Quote:
Als schwieriger sehe ich eher das elektrische Interface. Bei 1GHz hast
du sicher aber auch nichts anderes erwartet, Tektronix hat da was
Nö, nicht wirklich. In meiner Diplomarbeit habe ich mit einem
jitterarmen 440MHz-Takt für eine DDS gekämpft, so ein paar Fallstricke
kenne ich, aber sicher nicht alle.
Quote:
So ist das halt, wenn man sich im Grenzbereich bewegt. Ich hoffe nur
du hast die dazu passenden Messmöglichkeiten.
Dazu werde ich mir dann bei Bedarf jeweils Zugang verschaffen (16 GS/s
R&S zB)
Dirk Ruth
Guest
Sun Aug 15, 2010 5:41 pm
Stefan Huebnerschrieb:
"
[...]
Quote:
Dann doch lieber gleich von RAM zu RAM. Zum Warmwerden reichen sicher
die Einstellungen, die man im BIOS machen kann.
Verlockend scheint das auf jeden Fall erst einmal. Allerdings muss ich
dazu ja dem Controller einerseits sagen, dass da RAM ist, damit ich
davon lesen kann,
Erkennen sollte das der Controller am EEPROM des Moduls.
Quote:
andererseits aber darf er den ADC nicht mitten in den
RAM-Bereich einblenden (also kein Multichannel-Betrieb usw).
Gibt Mainboards für 6 RAM-Module, da sollte sich was finden lassen.
Quote:
Als schwieriger sehe ich eher das elektrische Interface. Bei 1GHz hast
du sicher aber auch nichts anderes erwartet, Tektronix hat da was
Nö, nicht wirklich. In meiner Diplomarbeit habe ich mit einem
jitterarmen 440MHz-Takt für eine DDS gekämpft, so ein paar Fallstricke
kenne ich, aber sicher nicht alle.
So ist das halt, wenn man sich im Grenzbereich bewegt. Ich hoffe nur
du hast die dazu passenden Messmöglichkeiten.
Dazu werde ich mir dann bei Bedarf jeweils Zugang verschaffen (16 GS/s
R&S zB)
Na dann ist ja alles nur halb so wild. ;-)
Dirk
Frank Buss
Guest
Sun Aug 15, 2010 8:05 pm
Stefan Huebner wrote:
Quote:
Verlockend scheint das auf jeden Fall erst einmal. Allerdings muss ich
dazu ja dem Controller einerseits sagen, dass da RAM ist, damit ich
davon lesen kann, andererseits aber darf er den ADC nicht mitten in den
RAM-Bereich einblenden (also kein Multichannel-Betrieb usw).
Ich denke das wäre eine recht aufwendige Entwicklung. Du müsstest die von
dir bereits erwähnten Probleme lösen, dann ein Layout entwickeln, was die
hohen Übertragungsraten kann und das DDR2/3-Interface für die RAM-Seite
simulieren. Einen großen FIFO und irgendein Synchronisierungskonzept (da
das Auslesen nicht mit der Samplegeschwindigkeit synchron sein wird)
braucht man auch.
Da du ja nur 1 GB Daten samplen willst, ist es da nicht einfacher, ein
FPGA-Entwicklungsboard zu nehmen, was diese 1 GB bereits on-board hat, z.B.
per SO-DIMM? Viele Boards scheinen allerdings nicht soviel Speicher zu
unterstützen. Hier gibt es aber eins, was das kann:
http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=142&No=513
Für den Preis kannst du so ein System, um schnell Daten in ein RAM zu
speichern, nicht selber für eine Einzelanfertigung entwickeln, aber ist
bestimmt immer noch Faktor 10 preiswerter, als eine fertige DAQ-Lösung mit
dieser Geschwindigkeit. Anbindung an einen PC könnte dann per Ethernet
gehen, oder du schreibst direkt eine NIOS-Anwendung und gibts auf dem
DVI-Anschluss was aus.
Musst du dann nur noch irgendwie deine 60 GBit/s da rein kriegen. Das
Terasic-Board unterstützt 300 MHZ DDR2 RAMs, sodaß du maximal 38,4 GBit/s
damit hinbekomen würdest, aber bestimmt nicht unter NIOS. Blöd auch, daß
man wohl nicht die freie Web-Edition von Quartus dafür verwenden kann und
die mit solchen Eval-Kits verkauften Versionen sind meist nur für ein Jahr
gültig, da müsste man dann mal nachfragen.
--
Frank Buss, fb_at_frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Uwe Hercksen
Guest
Mon Aug 16, 2010 9:18 am
Stefan Huebner schrieb:
Quote:
Gesucht wird eine Möglichkeit, Daten mit 5-10 GS/s (Samplebreite 6 bit)
in reichlich Speicher zu schieben, Größenordnung 1GByte. Ein ASIC kommt
genau so wenig in Frage wie eine entsprechende DAQ-Karte, das Ganze ist
für ein Einzelstück, mit welchem ich in der Firma Datenformate
analysieren möchte.
Hallo,
denke daran das Du die Daten nicht nur in die dynamischen RAMs
hineinschieben musst, Du musst auch für den Refresh sorgen damit dann
auch später das auslesen sinnvoll ist.
Eine Logik die 10 * 6 Bit in 64 Bit verpackt würde die Datenrate schon
auf 0,5 bis 1 GS/s senken.
Bye