Hallo zusammen, ich hätte hier folgendes Problem. Ich habe vor Daten die mit sehr hoher Geschwindigkeit(40Msample/s) ankommen zu einem PC zur Weiterverarbeitung zu senden. Das Problem ist, dass ich die Daten aufgrund der hohen Geschwindigkeit nicht direkt zu dem PC senden kann. Ich habe mir überlegt, die Daten zwischenzuspeichern und dann über eine programmierbaren Baustein(Serielle Schnittstelle) zum PC zu versenden. Mein Problem ist, dass ich noch nie etwas ähnliches gebastelt habe. Ich habe wenig Erfahrung hiermit. Daher wollte ich wissen, ob einer von euch ähnliches schon mal gebastelt hat, und mir vielleicht mit einigen Tips weiterhelfen kann. Was für einen Speicher sollte ich eurer Meinug nach einsetzen? Was für einen Baustein sollte ich eurer Meinung nach zum Bearbeiten und Versenden der Daten einsetzen?(was wäre einfacher?) ich würde mich auf jeden noch so unwichtig erscheinenden Hinweis und Hilfe freuen und bedanke mich im Voraus für eure Hilfe.
Die Daten kommen kontinuierlich von einem A/D-Wandler an. Ich möchte aber jedesmal nur einen begrenzten Datenbereich aufzeichnen(Aufzeichnungs-Start durch ein Triggersignal festgelegt-->Einlesevorgang) Nachdem ich den Speicher eine gewisse Zeit lang gefüllt habe möchte ich diese Daten zu einem PC senden(Auslesevorgang), und erst dann wieder einen Einlesevorgang in den Speicher beginnen Das Intervall ist somit nicht so wichtig
Kommen die Daten über SPI, UART oder sontigem vom A/D-Wandler? Prinzipiell müsste es aber relativ einfach sein. In irgendeinen z.B. AVR in einen Ringpuffer Dateneinlesen und gleichzeitig über UART an den PC verschicken. Bis der Speicher voll ist und dann Messsung abbrechen.
Hallo Ulrich, zuerst möchte ich mich für die schnelle Antwort bedanken. Ich bekomme aus einem A/D-Wandler Daten von 14-Bit Breite. Diese will ich für eine vereinfachte Bearbeitung mit zwei Nullen versehen auf 16-Bit aufwerten und den Datenstrom aufzeichnen. Mit einem Triggersignal bekomme ich bescheid, dass ein Datenstrom von endlicher Länge kommt. (Länge unbekannt). Mit Hilfe des Triggersignals möchte ich den Speichervorgang starten. Das Speichern soll ca. 400µs dauern. Also kann ich ca. 16.000 Messwerte aufzeichnen. Wie das Speichern vor sich gehen soll habe ich noch keine genaue Vorstellung. Wichtig ist, dass ich die Daten nachdem die 400µs um sind auslesen und seriell zum PC weitersenden kann. Danach Speicher leeren, auf neues Triggersignal warten,...
"Ich habe vor Daten die mit sehr hoher Geschwindigkeit(40Msample/s) ankommen zu einem PC zur Weiterverarbeitung zu senden." Das wären 80MByte/s Das schreit mir förmlich nach einem grossen, schnellen RAM, kein anderer Speicher ist schnell genug um dem Datenstrom gerecht zu werden! Wenn dein RAM voll ist oder du die Sampleanzahl erreicht hast, musst du die Daten zum PC kriegen. Da es sich um eine so grosse Datenmenge/Zeit handelt, kenn ich nur USB 2.0 / Firewire das passt, ausser du möchtest nach jeder Messung ca 100 Mal so lange warten bis die Daten beim PC sind.
Gibt es aus deiner Erfahrung einen Speicher, den du empfehlen würdest? Ich habe bis jetzt für Übertragungen nur die serielle Schnittstelle verwendet. Gibt es bei Einsatz von USB 2.0/Firewire bekannte Schwierigkeiten, mit denen ich rechnen müsste? Was für Bausteine würdest du einsetzen, um Probleme zu vermeiden? (Speicher, Controller,...)
Ich habe nur deine Rahmenbedingungen analysiert, Erfahrungen habe ich mit solchen Anforderungen leider keine. Am einfachsten wäre wohl ein SRAM als Speicher, ob es so schnelle gibt wie du brauchst weiss ich nicht! Die Übertragung zwischen ADC und SRAM würde ich mit einem CPLD lösen, da rel. einfach, preiswert und sauschnell! Die Datenübertragung zum PC mittels USB 2.0 / Firewire ist komplex und benötigt einen sehr schnellen Controller, nix AVR, nix zuHauseBastelaufbau. Dein Vorhaben ist kein samstagnachmittagschlechtwettervorhaben! Ich glaube eine USB2.0 / Firewire implementation kriegst du nicht hin. Was hast du eigentlich vor? Evtl. kannst du dir was vom Logikanalyser Projekt was abkupfern.
IDE oder SCSI könnte als PC-Interface interessant sein, das sollte deutlich einfacher zu implementieren sein als Firewire.
Klar gehe ich davon aus, dass ich mit meinem Wissensstand länger als ein paar Monate brauche. Mein Problem ist, dass ich noch nicht genau weiss, wo und wie ich anfangen soll, das Problem zu lösen, bzw. mich einzuarbeiten. Es sieht so aus, dass die Daten aus dem A/D-Wandler gesteuert über einen CPLD in einen "schnellen Speicher" reingeschrieben werden müssen. Also CPLD und Speicher aussuchen. Die Geschwindigkeit für das Senden der Daten vom Speicher zum PC ist vorerst nicht wichtig. Dafür reicht die serielle Übertragung aus, und sollte viel Arbeit ersparen und Probleme auch. Aber später möchte ich, wenn das ganze mal steht und funktioniert auch einen USB2.0 verwenden. Es ist eine Arbeit, um ein analoges Signal zu analysieren. Ich sammle gerade meine Erahrungen auf diesem Gebiet, und habe noch viel dazuzulernen.
Hi, Nimm ein PQ208 FPGA (Spartan2 200k) und lege die Daten in ein SRAM deiner Wahl (Cypress hat schoenen ZBT kompatiblen Speicher). Du koenntest im FPGA noch eine Datenkompression vornehmen (Timestamp setzen bei Aenderungen). Die Timestampgeschichte kannst du im internen Blockram erledigen. Die eigentlichen Nutzdaten kannst du per Burst Betrieb ins SRAM packen. Die Burst-schreib/lesefunktion erspaert dir den Adresszaehler. Als USB Schnittstelle zum Anfang wuerde ich dir den FT245BM Chip empfehlen. Du sparst dir den FLASH Speicher fuer den FPGA, weil der FTDI Chip den FPGA konfigurieren kann. Der FTDI Chip ist nur USB1.1 und kann bis zu 1Mbit uebertragen, aber bei deinem Wissensstand (nicht boese gemeint) sollte man versuchen sich bis dahin durchzukaempfen. Bei Xilinx liegen fertige Appnotes zur Ansteuerung von ZBT SRAM. Der SRAM (4Mbit) lag bei knapp 20 Euro bei RS und der FPGA bei ca 30 Euro bei Digikey. Ohne PCB bist du dann bei ca 55 Euro. Gruß, Dirk
Hallo Dirk, danke dir für die Hilfe. Ich werde mich in den nächsten tagen mal damit beschäftigen. Kann ich ohne weiteres an diesen FPGA einen Speicher von 128MB anschliessen? Ich möchte ohne Datenkompression arbeiten.
Hallo Fly, ich möchte hier nichts Vorgekautes. Ich möchte das Projekt selbständig erarbeiten und dachte dass nichts falsch dabei wäre ein paar Profis nach einem Ratschlag zu fragen. Man kann sich dadurch besser orientieren. Erfahrung gewinnt man mit der Zeit durch Arbeit, und das erwartet mich. Danke trotzdem.
>Kann ich ohne weiteres an diesen FPGA einen Speicher von 128MB >anschliessen? Du meinst sicherlich handelsueblichen DDRAM für den PC. Natuerlich kannst du nen Memory Controller fuer DDRAM /SD Ram programmieren. Einige Anhaltspunkte findest du in Appnotes bei Xilinx. Ich meine die haben auch fertige Core's. Fang aber erstmal mit simplen Sachen an. Ein einfacher SRAM Memory Controller mit Adresszaehler dauert als Anfaenger schon ein bischen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.