interne RAM FPGA?

OP #1796314
Lesenswert?
• ▲
▼
Hi,
ich habe DE0 Board von Altera und  möchte gern FIFO verwenden, um Daten 
zwischen zu speichern. ich habe ein FIFO Megafunction gefunden.
die erste Frage ist:
wenn ich diese Funktion verwende werden die Daten im FPGA zwischen 
gespeichert ?oder muss ich die externe SDRAM verwenden?
 die zweite Frage ist:
was muss ich tun ,wenn ich die SDRAM verwenden muss ?
Danke
#1796324
Lesenswert?
• ▲
▼
@  Sabine Mühller (zizo)

>zwischen zu speichern. ich habe ein FIFO Megafunction gefunden.
>die erste Frage ist:
>wenn ich diese Funktion verwende werden die Daten im FPGA zwischen
>gespeichert ?

Ja,

>oder muss ich die externe SDRAM verwenden?

Nein.

> die zweite Frage ist:
>was muss ich tun ,wenn ich die SDRAM verwenden muss ?

Einen SDRAM Controller per Megafunktion erzeugen und an das FIFO 
anbinden.

Mfg
Falk

Danke
#1796607
Lesenswert?
• ▲
▼
Hallo Sabine,

die Frage hast Du ja schonmal gestellt. Und auch diesesmal gibst Du 
deinen Forumskollegen einfach zu wenig Information, als dass sie dir 
gute Hinweise geben könnten.

Ein FIFO im FPGA nutzt immer das interne RAM. Das begrenzt die mögliche 
Breite und die mögliche Tiefe. Wenn Du sehr viel Daten zwischenspeichern 
musst, dann wird Du einen extenen Speicher verwenden müssen. Dabei hängt 
es von der Datenrate und -menge ab, was da sinnvoll ist. Manchmal ist 
sogar eine Software-Lösung die beste. Aber um all das einzuschätzen zu 
können, müsstest Du einfach mehr über deine Anwendung schreiben. Es will 
ja keiner wissen, was das für Daten sind, aber Datenbreite, Datenrate 
und Pufferbedarf sind in dem Fall die Minimalinfos für brauchbare 
Hinweise.

Grüße,
Harald
Moderator (Firma: Titel) Persönliche Seite #1796690
Lesenswert?
• ▲
▼
> was meinst du?
Die Frage ist (mit Verlaub) lächerlich.
Warum rechnest du das nicht einfach aus?

> RAM(1MB)
Sind das 1 Mega-Bits oder 1 Mega-Bytes?

> Auflösung:480 X 640
> Farbtief: 16bit(Y,Cr)
Also rechnen wir mal, wieviel so 1 Bild braucht:
480 X 640 X 16bit = 4915200 Bits = 614400 Bytes
Jetzt kannst du nach Beantwortung der vorigen Frage leicht selber 
abschätzen, ob das klappt. Ich tippe: Nein.

> PAL format(50 Hz)
Diese angabe ist für die Lösung des Problems vorerst uninteressant.
#1796708
Lesenswert?
• ▲
▼
Moin Bill,

ich finde sehr interessant, dass Du anhand von Sabines post erkennst, 
dass Du das gleiche Problem hast. Sabine hat sich doch noch gar nicht 
geäußert zu ihrer Anwendung. Aber egal.

Einen frame buffer für ein Bild (statisch oder bewegt) innerhalb eines 
FPGA zu realisieren ist normalerweise nicht ökonomisch. 480*640*16 = 
4915200 Bits. Da müsste schon ein sehr großes und dementsprechen teures 
FPGA her. So etwas macht man mit externem DRAM.

Das ist dann logisch gesehen aber kein FIFO sondern ein Speicher. Eine 
Maschine muss dann dort die Daten reinschreiben und eine andere wieder 
rausholen, vielleicht bearbeiten, und wieder an andere Stelle in den 
Speicher schreiben. Dort holt das dritte Modul die Daten wieder raus... 
So kann man eine Video-Kette aufbauen, bis die Bandbreite des Speiches 
ausgereizt ist. Aber wie gesagt, das ist kein FIFO.
Moderator (Firma: Titel) Persönliche Seite #1796792
Lesenswert?
• ▲
▼
Bill Lates schrieb:
> da steht 640 X 480 X 16 ---- 150 KB VGA
> Hast DU selber einfach mal nachgerechnet?
640 Pixel/Zeile x 480 Zeilen = 307200 Pixel.
Für jedes dieser Pixel brauchst DU jetzt 2 Byte, also 2 Byte/Pixel.
Also kommt jetzt 307200 Pixel * 2 Byte/Pixel = 614400 Bytes.

> da steht 640 X 480 X 16 ---- 150 KB VGA
Jetzt aber echt. Es reicht nicht aus, irgendwelche Zahlen 
irgendwoherzugoogeln und nicht mal ansatzweise darüber Nachzudenken.
Denn da steht drüber  Breite × Höhe × Farben
und dann kommt        640    × 480  × 16
Und wenn du wüsstest oder dir überlegen könntest, dass 16 Farben in 4 
Bit passen, und damit 2 Pixel in ein Byte (2 x 4 Bit = 8 Bit), dann 
bekommst du deine 307200 Pixel klar in
307200 Pixel / 2 Pixel/Byte = 153600 Bytes.

> lächerlich,glaube ich nicht.
Doch, ich bleibe dabei: das ist Mathe auf Grundschulniveau, 4. Klasse.
Und die Überlegungen dahinter kannst du einfach mal auf einem Blatt 
kariertem Papier durchführen.


@  Harald Flügel
> So etwas macht man mit externem DRAM.
Ich würde Bill Lates für den Anfang zu einfachem asynchronem SRAM raten.

> Sabine hat sich doch noch gar nicht geäußert zu ihrer Anwendung.
Seit wann ist Sabine eine SIE?  ;-)
Gast #1796802
Lesenswert?
• ▲
▼
@Lothar:

Du bist einfach zu gut. Lass ihn doch selber rechnen. Nach dem ersten 
Satz von ihm habe ich schon abgeschaltet. Das sieht man auch anderen 
Threads von ihm. Bei solchen Leuten vergeht mir einfach die Lust zu 
helfen oder irgendwas zu erklären.


Grüße,
Kest
OP #1798220
Lesenswert?
• ▲
▼
danke  Harald Flügel,
ich möchte mit mein FPGA Impulshöhe bestimmung, ich verwende ein ADC mit 
40Mhz .
der Signalbreite musste zwischen500 und 700 ns. Der wird digitalisiert 
durch der ADC , dann muss ich die digitale Werte Aufsummieren 
(bestimmung der Impulshöhe), dann in FIFO zwischenspeichern und nachher 
zum Rechner senden.
Vielen Dank für die Antworte es bleibt mir nur ein Frage:

Kann ich die Daten in FIFO schieben und gleichzeitig lesen? oder muss 
der FIFO erstemal voll werden dann kann ich lesen.
#1798233
Lesenswert?
• ▲
▼
Die FIFOs von Altera sind so gemacht, dass man beliebig schreiben und 
lesen kann, also auch gleichzeitig und mit unterschiedlichen Takten. Auf 
der Leseseite muss man halt das Signal "empty" auswerten. Immer wenn das 
Signal 0 ist, dann steht mindestenst ein Datenwert im FIFO drin.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren