Forum: Mikrocontroller und Digitale Elektronik Realisierung schneller großer Speicher


von Matthias (Gast)


Lesenswert?

Hi,

ich möchte gerne für mein XMEGA 128 Board einen schnellen, großen 
Speicher realisieren, welcher nicht flüchtig ist.

Nun zu den Parametern:
-----------------------------------
Speichergröße > 50 MB
Schreibgeschwindigkeit > 200 kbyte/s
Lesegeschwindigkeit > 200 kbyte/s
Filesystem: FAT16

Zuerst hatte ich an den SPI Bus mit einer SD Karte gedacht, jedoch sind 
die Schreibgeschwindigkeiten nicht zu erreichen.

Nun denke ich darüber nach einen FTDI CHIP "Vinculum" zu verwenden und 
einen USD Stick anzubinden. Ich dachte man kann über den 8 Bit FIFO Bus 
die Parameter erhalten, nun habe ich ein Paper mit den 
Geschwindigkeitsangaben gefunden:

http://www.vinculum.com/documents/appnotes/AN_112_VNC1L%20Data%20Transfer%20Speeds.pdf

So richtig schlau werde ich aus dem Paper nicht. Bin ich mit der 
Annahme, dass dieser Chip mit USB Stick die Parameter einhalten wird auf 
dem Holzweg.

Vielen Dank für eure Hilfe.

von Falk B. (falk)


Lesenswert?

@  Matthias (Gast)

>Zuerst hatte ich an den SPI Bus mit einer SD Karte gedacht, jedoch sind
>die Schreibgeschwindigkeiten nicht zu erreichen.

Hmm, hast du verucht herauszufinden warum? Wo wird die Zeit verbraten?
200kb/s sind ~2 Mbit/s, plus Bearbeitung etc. braucht man eher 10 MHz 
auf der SPI. Machbar.

MfG
Falk

von Matthias K. (mkeller)


Lesenswert?

SD-Card im Parallelmodus, CF-Card mit ATA Schnittstelle...

von Matthias (Gast)


Lesenswert?

Ich habe mittels einem 16 Bit Timer herausgefunden, dass ich beim 
Schreiben auf die SD Karte eine lange Busy Time der SD Karte habe, bis 
diese die 512 Byte Blöcke richtig geschrieben hat.

Mit der schnellsten Karte (Sony), die ich habe erreiche ich nun eine 
Schreibgeschwindigkeit von ca. 155 kbyte/s, jedoch ohne FAT.

MIt FAT sind es dann nur noch 65 kbyte/s.

von (prx) A. K. (prx)


Lesenswert?

Dieser VNC1 Zettel liest sich so, als ob aufgrund der internen 
Arbeitsweise die UART Baudratendefinition auch bei SPI und FIFO die 
Transferraten beeinflusst. Da die UART Baudrate auf 3Mbps begrenzt ist 
kann man also wohl die entsprechende Angabe für UART im Zettel als 
massgeblich ansehen.

Soll heissen: >200KB/s sustained thoughput klingt sportlich.

von Matthias (Gast)


Lesenswert?

>> SD-Card im Parallelmodus, CF-Card mit ATA Schnittstelle...

Über diesen Parallelmodus habe ich nun einiges gelesen, er ist jedoch 
mit dem XMEGA nicht realisierbar. So wie ich das verstanden habe, müsste 
ich dann auf einen ARM umsteigen, der dieses Interface dann bereits 
onBoard hat.

CF-Card mit ATA Schnittstelle: Davon habe ich leider keine Ahnung, wie 
schnell dann die Übertragungsraten wären, Platz oder Speicherprobleme 
habe ich nicht. Das Interface benötigt so viel ich weiß 40 PINs.
Hättest du über diese Realisierungsvariante noch mehr Informationen, 
evetuell ein Beispielprojekt mit einem Atmel.

>> Dieser VNC1 Zettel liest sich so, als ob aufgrund der internen
>> Arbeitsweise die UART Baudratendefinition auch bei SPI und FIFO die
>> Transferraten beeinflusst. Da die UART Baudrate auf 3Mbps begrenzt ist
>> kann man also wohl die entsprechende Angabe für UART im Zettel als
>> massgeblich ansehen.

>> Soll heissen: >200KB/s sustained thoughput klingt sportlich.

Ich lese das leider ähnlich.
Am schnlimmsten liest sich jedoch "Typical measured throughput: 
25.45kB/sec".
Das wäre dann schon extrem lahm.

Es existieren von Atmel ja noch diese DATAFLASHs mit bis zu 64 MBit.
Aber auch bei diesen Chips werde ich mit einem SPI Takt von maximal 16 
MHz bei der Speicherung von FAT16 Daten wahrscheinlich über den SPI 
Modus nicht die erforderliche Datenrate bekommen, oder ?

Vielen Dank für eure Hilfe

von Matthias (Gast)


Lesenswert?

Es gäbe noch eine Alternative mit den 8051 Architekturen:
http://www.atmel.com/dyn/products/product_card.asp?part_id=4100

Die haben doch ein USB-Interface on Board.
Mit diesem Interface dürfte man doch einen Datenspeicher (USB) anbinden 
können und die oben erwähnten Übertragungsgeschwindigkeiten erreichen.

Habe noch nie mit einem 8051 gearbeitet.
Gibt es dazu Erfahrungenswerte?

von MaWin (Gast)


Lesenswert?

Und warum jetzt nicht einfach einen 512 MBit Flash Chip wie MX29GL512 
anschliessen ?

Vermutlich weider geheime Sonderanforderungen, wie z.B. Anschlüsse für 
Grobmotoriker als Flachsteckhülsen oder so.

von (prx) A. K. (prx)


Lesenswert?

Matthias schrieb:

> Es existieren von Atmel ja noch diese DATAFLASHs mit bis zu 64 MBit.
> Aber auch bei diesen Chips werde ich mit einem SPI Takt von maximal 16
> MHz bei der Speicherung von FAT16 Daten wahrscheinlich über den SPI
> Modus nicht die erforderliche Datenrate bekommen, oder ?

Die nackte Schreibrate mit SPI per DMA ist dafür hoch genug, 
vorausgesetzt ein Filesystem stellt sich dem nicht hartnäckig in den 
Weg. Der Knackpunkt ist dann die ggf. erforderliche Löschoperation vom 
Flash.

AT45DB642: page erase+programming 40ms max, bei 1056 Bytes ergibt 26KB/s 
pro Device. Das wird auch bei den 8 Stück für 64MB zu knapp.

Besser sieht es aus, wenn du die Löschoperation im Voraus durchführen 
kannst, also später nicht mehr löschen musst. Mit FAT wird das etwas 
schwierig, ohne FAT nackt auf's Flash hängt das nur von der Aufgabe ab. 
Dann sind es maximal 6ms pro 1056 Bytes, also 170KB/s pro Device und es 
reicht bei mehreren umlaufend verwendeten Bausteinen aus.

von testgast (Gast)


Lesenswert?

wiso nicht zwei karten parallel?

von Matthias (Gast)


Lesenswert?

Also:
>> Und warum jetzt nicht einfach einen 512 MBit Flash Chip wie MX29GL512
>> anschliessen ?

Weil ich ihn nicht kannte.

>> Vermutlich weider geheime Sonderanforderungen, wie z.B. Anschlüsse für
>> Grobmotoriker als Flachsteckhülsen oder so.

Hä? Was ist dir denn wiederfahren?

Habe hier einen recht netten NAND Flash Speicher gefunden, der die 
Adress und Datenleitungen per Multiplexerpin umschalten kann, damit kann 
man eben Pins sparen.

http://www.hynix.com/datasheet/pdf/flash/HY27%28U_S%29S%2808_16%29121M%28Rev0.6%29.pdf

MIt 512 Mbit wäre er auch gross genug.
Er hat eine Page Programm Time von 0,5 ms (Max) bei einer Page Size von 
512 Bytes. Das wäre dann knapp 1MB/s.
Wenn ich jetzt vorher löschen muss, dann wären wir ca. bei 2000 kByte/s, 
da das löschen nochmals 2 ms pro Block brauchen würde.

von Matthias (Gast)


Lesenswert?

Oder man nimmt do einen Atmel mit USB on Board, spezifiziert auch für 
USB 2.0 Full Speed (1,5 Myte/s).

http://www.atmel.com/dyn/products/product_card.asp?part_id=3876

Da einen Stick dranhängen, dann müsste man doch die 200 kbyte/s auch mit 
Fat16 erreichen können, oder?

von Michael H. (michael_h45)


Lesenswert?

Wie viel musst du denn auf einmal schreiben? Man kann die Daten doch 
sicher in ein (dual port) RAM packen und dann auf die Karte bringen.
Oder ist lesen auch entscheidend?

von Matthias (Gast)


Lesenswert?

Naja es gelten sozusagen die Parameter von oben.

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.