Forum: Mikrocontroller und Digitale Elektronik Externer Ram an AVR (FRAM, SRAM), Geschwindigkeit


von Daniel R. (zerrome)


Lesenswert?

Hallo,

stelle mir grade die frage, wie ich große datenmengen schnell puffern 
kann. interner sram ist ja zu wenig.

fram von ramtron ist schon nicht schlecht, aber bei 10mhz spi takt 
kommen doch, durch overhead, nur 250kbytes in den ram.

wie schnell ist denn normaler paralleler sram?
der sollte doch ziemlich schnell sein und durch die parallele 
ansteuerung kaum overhead haben (nur durch setzten der pins oder?).

kennt jemand seriellen sram ?

von Andreas K. (a-k)


Lesenswert?

Wenn du das RAM an AVRs mit externem Speicherbus anschliesst (z.B. 
Mega162,Mega128), braucht der Zugriff nur wenige Takte, je nach 
Geschwindigkeit vom RAM.

von Daniel R. (zerrome)


Lesenswert?

ich möchte eigentlich keinen avr mit speicherinterface benutzen. meist 
werden da ja dann auch über ein schieberegister oder latch oder so, 
leitungen eingespart, zur last der geschwindigkeit. bin grade 
verschiedene möglichkeiten am suchen, edo-ram ist auch eine davon, da es 
auf größe nicht so ankommt.

von Andreas K. (a-k)


Lesenswert?

Welche Datenrate und welche Datenmenge hast du denn so im Auge? Ohne 
diese Angabe wird es mit Tipps schwierig.

Eine schnellere Lösung als mit dem Typen mit externem Speicherinterface 
gibt es auf AVR Basis nicht.

von Helmut L. (helmi1)


Lesenswert?

>ich möchte eigentlich keinen avr mit speicherinterface benutzen. meist
>werden da ja dann auch über ein schieberegister oder latch oder so,
>leitungen eingespart, zur last der geschwindigkeit. bin grade
>verschiedene möglichkeiten am suchen, edo-ram ist auch eine davon, da es
>auf größe nicht so ankommt.

Das macht aber die Hardware vom Prozessor. Und die ist um laengen 
schneller als du das RAM per simulierten Hardware-Interface ansprechen 
koenntest.

Gruss Helmi

von Daniel R. (zerrome)


Lesenswert?

hatte so an 500kbytes/sec gedacht, größe so bis 1mbit. aber so wie das 
bis jetzt aussieht, muss ich eine andere platform (avr32/fpga) wählen 
oder mich mit fram und paar kbytes begnügen.

von Andreas K. (a-k)


Lesenswert?

0,5MB/sec ist mit AVR und parallelem SRAM 128KB noch machbar, wenn du 
das erwähnte externe Speicherinterface verwendest. Da damit nur bis zu 
ca. 60KB direkt adressierbar sind, kannst du beispielsweise ein Fenster 
von 32KB verwenden und die beiden übrigen Adressbits als Bank-Adresse 
separat anschliessen.

Woran du denken solltest: irgendwo müssen die Daten ja herkommen und 
irgendwo müssen sich auch wieder raus. Die Verarbeitungszeit davon 
solltest du mit einrechnen.

von Daniel R. (zerrome)


Lesenswert?

hm, klingt interessant.

ich schau mir mal den mega128 an.

von Helmut L. (helmi1)


Angehängte Dateien:

Lesenswert?

Hier noch eine Bankumschaltung fuer externes RAM

Da hast du immer eine feste Page und mehrere variable Pages.

Gruss Helmi

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

0,5MB/s sind mit den F-RAMs auch möglich.
Die Frage ist, ob ständig gelesen und geschrieben wird oder nur Daten 
zwischen gespeichert werden sollen.

Die F-RAMs gibt es jetzt auch mit 256kByte.

von Daniel R. (zerrome)


Lesenswert?

@  Helmut Lenzen (helmi1)

danke, sieht super aus. muss nur mal sehen ob ich mir das antue mit 
verschiedenen bänken usw...

@  Andreas Watterott (andreasw)

so wie ich das im datenblatt der fram gelesen habe, hat man für 1 byte 
schreiben: 1 byte schreiben op-kommando, dann das eigentliche daten 
schreiben kommando 1 byte, dann 2 byte adresse, macht 4 bytes für 
1...also 5 bytes.
klar, bei 20mhz spi takt kommt man auf 500kbytes daten, aber die avr 
machen keinen 20mhz spi...

von Arc N. (arc)


Lesenswert?

Daniel Platte wrote:
> Hallo,
>
> stelle mir grade die frage, wie ich große datenmengen schnell puffern
> kann. interner sram ist ja zu wenig.
>
> fram von ramtron ist schon nicht schlecht, aber bei 10mhz spi takt
> kommen doch, durch overhead, nur 250kbytes in den ram.


Wenn man jedes Byte einzeln schreibt, sind's tatsächlich nur 250 kB/s
WREN + WRITE + ADDR + DATA (5 Byte), bei 16 Byte Daten sind's 
theoretisch schon 1000 kB/s.

> 0,5MB/sec ist mit AVR und parallelem SRAM 128KB noch machbar,

LD(S)/ST(S) brauchen 2 + 1 + Wait-States Takte (maximal 3) pro Byte
2+1+3 = 6, (16 Mhz / 6) = 2.66 MB/s

von Daniel R. (zerrome)


Lesenswert?

@  Arc Net (arc)

ah überlesen, die fram erhöhen die adresse intern, also daten ab einer 
adresse schreiben und füllen... das is doch schonmal was, daten 
schreiben mit 1,25kbytes möglich.

wenn man das so betrachtet, ist der aufwand für schnelleren sram schon 
wesentlich höher.


danke, an alle für die aufklärung !

von Daniel R. (zerrome)


Lesenswert?

Daniel Platte wrote:
> @  Arc Net (arc)
>
> ah überlesen, die fram erhöhen die adresse intern, also daten ab einer
> adresse schreiben und füllen... das is doch schonmal was, daten
> schreiben mit 1,25kbytes möglich.
>
> wenn man das so betrachtet, ist der aufwand für schnelleren sram schon
> wesentlich höher.
>
>
> danke, an alle für die aufklärung !

richtig wäre 1,25MB/sec möglich !!

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.