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
@ 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
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
Hallo Harald, ich habe fast das selbe Problem. Also ich versuche ein Framebuffer zu realiieren, aber ich frage mich ob ein interne RAM(1MB) schon für meine anwendung reichen könnte. Auflösung:480 X 640 Farbtief: 16bit(Y,Cr) PAL format(50 Hz) was meinst du?
> 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.
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.
Danke Harald, @Lothar Miller lächerlich,glaube ich nicht. http://de.wikipedia.org/wiki/Framebuffer#cite_note-0 da steht 640 X 480 X 16 ---- 150 KB VGA vielleicht lese ich was andere, und wenn ich keine lächerliche Frage hätte wäre ich bestimmt bei der NASA beschäftigt.
Bill Lates schrieb: > da steht 640 X 480 X 16 ---- 150 KB VGA vielleicht lese ich was > andere, du willst aber > Farbtief: 16bit(Y,Cr) und nicht 4bit. Die 16 sind die anzahl der Farben und nicht die der Bits.
@ Bill Lates (Firma: Mann) (billates): und rechnen kannst Du auch nicht... Kest
jetzt habe ich die Erklärung und nur das ist mir sehr wichtig, danke
peter
du willst aber
> Farbtief: 16bit(Y,Cr)
und nicht 4bit. Die 16 sind die anzahl der Farben und nicht die der
Bits.
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? ;-)
@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
Kest schrieb: > vergeht mir einfach die Lust zu helfen Meine Toleranzschwelle liegt recht hoch... :-) Bill Lates schrieb: > Danke Lothar Schön, dass es doch noch geklappt hat... ;-)
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.
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.
danke noch eine Frage wenn ich die interne RAM verwende wo werden die Daten gespeichert ? in Embedded Memory Blocks oder total RAM bits?? Datenblatt: Cyclone IIII 3C16 FPGA 15,408 LEs 56 M9K Embedded Memory Blocks 504K total RAM bits 56 embedded multipliers 4 PLLs 346 user I/O pins
Das ist beides das gleiche. So wie es aussieht hat jeder Mem-Block 9 Bit Breite und 1024 Worte Tiefe. 56 Stück davon sind vorhanden, was insgesamt 504kBit ergibt.
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.