Forum: FPGA, VHDL & Co. SDRAM R/W Geschwindigkeit erhöhen?


von GS (chromosoma)


Lesenswert?

Hallo. Ich hoffe ich nerve euch mit meinen ständigen Fragen nicht so 
sehr:)

Gegeben:
DE10 Altera Board mit 8 Mbyte SDRAM
TFT-Bildschirm.


Ich will ein Bild aus dem SDRAM  Auslesen ,  und auf TFT Display 
anzeigen.
Leider stelle ich gerade fest, dass die Kombination
NIOS II/e + SDRAM Controller sehr langsam ist.
NIOS II wird zwar mit 133 Mhz getaktet, aber solche simpler Code wie:
1
          address=IORD_ALTERA_AVALON_PIO_DATA(ADDRESS_BASE);//  read address
2
3
    data=IORD_8DIRECT(0x800000,address); //read SDRAM
4
    IOWR_8DIRECT(DATA_BASE,0,data);// output data
Nimmt auf  NIOS II/e version viel zu viele Taktzyklen.

Laut Datenblatt, beträgt die  "MIPS/MHz Ratio" für die e-Version leider 
0.107

D.h. die maximale Datenrate liegt so bei 133*0.107*3=40 Mbyte/s. Das ist 
mir zu langsam.

Gibt es ein weg, den SDRAM Controller direkt mit  meinem VHDL Design  zu 
verbinden, ohne NIOS Prozessor?
Welche Möglichkeiten gibt es?  Mein TFT -Bildschirm hat den Pixelclock 
von 108 Mhz, die Datenrate soll auch entsprechend sein.

Danke für die Hilfe.

von Sigi (Gast)


Lesenswert?

"Einfache" Möglichkeit:

in einen der Altera-Paper wird ein LCD-Controller beschrieben,
der per SGDMA (Scattered-Gather-DMA) auf den Speicher zugreift.
Im Prinzip wird ein weiterer Avalon-MM-Master an den Speicher
gehängt und die generierten QSys_Komponenten kümmern sich um
alles weitere.

Du kannst aber auch selber eine Komponente mit MM-Master-Interface
auf der einen und LCD-Interface auf der anderen Seiteschreiben.
Dazwischen braucht's nur noch einen FIFO.

Btw: der NIOSII/e ist nunmal langsam, weil er ja nicht
gepipelined ist. Die anderen NIOSII-CPUs sind da wesentlich schneller.

von Marius W. (mw1987)


Lesenswert?

Alternativ einfach einen kleinen eigenen Core mit Avalon-Master/-Slave 
bauen. Ist jetzt nicht so schwer.

Gruß
Marius

von Tim (Gast)


Lesenswert?

jep, solche Probleme gehen in die Richtung Architekturen mit DMA

von GS (chromosoma)


Lesenswert?

Tja, so wie ich gedacht habe,die Lösung ist nicht so einfach für einen 
Hobbybastler:)

von Sigi (Gast)


Lesenswert?

Eine einfache Avalon MM-Master-Komponente ist eigentlich relativ
einfach aufgebaut bzw. geschrieben. Auf der Altera-Seite findest
du ein PDF zu allen Avalon-Schnittstellen, davon sind MM (Memory
Master) und MS (Memory Slave) für einfache NiosII-Designs mit
am wichtigtstenm. Ohne die Kenntnisse kannst du keine eigenen
QSys-Komponenten schreiben. Liest dich einfach mal ein.

von GS (chromosoma)


Lesenswert?

Habe ich es richtig verstanden, dass  ich die Kommunikation mit SDRAM 
Controller über Avalon MM Slave  selbst  beschreiben soll?
So zu sagen eigenen Avalon MM Master in VHDL schreiben?

von Sigi (Gast)


Lesenswert?

Mit einem MM-Master schreibst du im Prinzip
nicht auf das SDRAM, sondern du greifst einfach
auf den Bus zu. Was da dran hängt, SDRAM, interne
RAMs oÄ kann und soll eigentlich egal sein.

Bei dir hängt dann neben dem NiosII auch noch
deine MM-Master-Komponente als Master am Bus,
QSys sorgt dann automatisch für Aribter etc.

Wie gesagt, schau einfach mal in
http://www.altera.com/literature/manual/mnl_avalon_spec.pdf
rein.

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.