Hallo, bin neuling hier. Ich habe eine Frage. Jetzt baue ich ein Messsystem. Die digitalen Messdaten müssen zwischen speichert werden. Die Datengröße ist ungefähr 2M Byte pro Sekunde. Ich werde ein extern Speicher mit µC zusammen benutzen. Aber ich weiß nich welches Typ von Speicher soll ich benutzen. EEPROM, oder DRAM?
am besten du kriegst einen SRAM ran. DRAM ist nämlich flüchtig (muss ständig "aufgefrischt" werden) und EEPROM kann man nur begrenzt beschreiben (ist aber nicht-flüchtig). SRAM ist aber ziemlich teuer (wegen der aufwendigen Einzel-Speicherzelle) in dieser Größenordnung. Du kannst aber auch ältere DRAM-Speicher (bis EDO-RAM laufen alle mit 5V) verwenden. Dann benötigst du allerdings eine Art Memory-Controller-ggf. auf Basis eines CPLDs der einerseits das Bussystem anpasst und sich um die andere Ansteerung kümmert. Damit sollten 32MB kein Problem sein und auch die Geschwindigkeit von 2MB / sec. ist machbar. Müsstest dich aber dann selbst um den refresh kümmern, der bei DRAM nun mal anfällt. Kannst du die Datenmenge nicht durch Strukturierungen / Komprimierungen verkleinern ? Wie lange soll aufgezeichnet werden ?
... also bis auf SRAM (EEPROM fällt erstmal weg) ist das für einen kompletten Neuling nicht machbar. Nur SRAM ist unkompliziert genug um ohne größere Probleme angeschlossen zu werden. Was willst du eigentlich messen ?
Danke für die Antworten. Ich habe ungefähr 20 Sensoren zum messen. So habe ich gerechnet: 20 Kanäle * 1Mbps = 2.5MByte/Sec. Die Anforderung ist die Daten müssen im Zwischenspeichern etwa 2 Sec. speichern.
5MB sind ein bischen viel für die üblichen SRAMs. Und 2,5MB/s sind ein bischen viel für DRAM "zu fuss" wenn der Prozessor nicht ausschliesslich dafür zur Verfügung steht, sondern auch noch die Daten irgendwo abholen muss (wie kommen die rein?). Die Prozessorleistung und damit -Klasse ist hier evtl. nicht ohne Belang. Wirst auch erst mal abschätzen müssen, was da notwendig ist. Der hier allseits übliche AVR kriegt grad noch einige MB/sec von einem Port ins RAM geschaufelt, aber viel Verarbeitung/Abfrage/Handshake darf man während dessen nicht mehr von ihm erwarten. Wie es weiter geht, hängt davon ab ob du es dir zutraust, einen DRAM-Controller zu bauen, evtl. gleich mit DMA-Transfer von Datenquelle ins RAM am Proz vorbei. Ist das zu hoch, mag ein fertiges Modul, irgendwas Richtung Fox Board oder ARM7/9-Modul mit genug RAM drauf, ein sinnvollerer Ansatz sein.
eben deshalb hab ich gefragt was das für Sensoren sind. Genauer : liegen dort noch irgendwelche Bits brach ? Ändern sich die Sensorwerte sprunghaft / langsam ... all das sind Infos nach denen man sich etwas überlegen kann, wie man den Datenstrom komprimieren kann. Also um ein CPLD kommst du so und so nich drumrum ... einfach nur um das DRAM schnell anzusteuern (dass es sich wie ein SRAM verhält).
SD-Karten oder CompactFlash-Karten, falls die Anzahl der Schreibzyklen begrenzt ist (werden kann) oder PCMCIA/PC-Card-SRAM-Karten z.B. von Pretec
bin mir nicht ganz im klaren wie weit du schon bist. Haut das schon hin das dein Messystem die Daten überhaupt so schnell liefert? Gib mal ein paar Infos zum Messystem und zu dem jetzigen Stand. Was passiert nach den 2 Sek. Zwischenspeicherung ist dann die Messung fertig und man kann das ganze langsammer auslesen?
>>5MB sind ein bischen viel für die üblichen SRAMs. Quatsch. Ich habe SRAMS, die 190 MB/s können. Und die sind nicht unüblich. Wenn man sich geschickt anstellt gehts auch mit DRAM ohne CPLD.
ja. das ginge natürlich auch. Allerdings wäre der AVR dann mit 2 MB total ausgelastet. Also dann eventuell 2 AVRs nehmen - einen für die Sensorik und das dann an den zweiten (fürs Speichern) weiterleiten ...
....oder meintest Du mit 5MB die Größe?? Dann bitte ich um Entschuldigung. Ich meine die Geschwindigkeit.
Oder ganz einfach: Mehrere uC. Da es ja meherere Sensoren sind, sollte es kein Problem sein einfach meherer AVRs zu nehmen, und an jeden z.B. 512kB SRAM zu hängen. Den bekommt man problemlos und das Timing wird auch weniger kritisch.
Vielen Dank für alle! Nun ist die Idee alle Messdaten im Zwischenspeicher zu speichern nur meine Gedanken. Im diesem Speicher enthaltet immer die aktuellen Messwerte von letzter Zeit(z.B 2 sec.). Ich kann wie Ringpuffer rein schreiben. Ohne Notfall werden die Daten nur immer erfrischt. Wenn 5M Speichergröße zu viel für DRAM ist, kann ich die Zeit ein wenig reduzieren, 0,5 sec, 1.25M auch zu viel für DRAM/SRAM? Dann finde ich mehre µCs ist machbar.
Überleg auch, ob du den Datenstrom nicht noch packen kannst. Wenn du Messwerte hast, die sich nur um Einzelstellen (oder langsam) zwischen Intervallen ändern, brauchst du nur die Differenz in Form von Bits speichern. Ich hab da mal einen lossless Audio-Codec für AVRs geschrieben, der doch immerhin 50% rausgeholt hat (und dabei ist Audio seehr schwankend). Bei "ruhigeren" Signalen schaffst du sicherlich 20 oder 10%.
Die üblichen gut erhältlichen und gut verbaubaren SRAMs gibt es bis 512KB. Es gibt auch grössere Typen, vor allem wenn dir BGA-Bauform recht ist. Für DRAMs sind 5MB keinerlei Problem, hier dürften insbesondere pseudo-statische RAMs sinnvoll sein. Allerdings sind die im Endkundenhandel kaum anzutreffen, der Weg führt da eher über die Herstellerseiten und Distributoren.
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.