Hallo liebe Forenmitglieder, ich hätte da eine Frage und hoffe, dass jemand so nett sie mir zu beantworten, da ich leider ein totaler Anfänger in FPGA bin:( Ich hab follgendes Problem. Ich möchte verschiedene E- funktion in mehreren LUT abfahren, dazu sind 12 bit Quantiesierung (also 4096) und dies für 9091 Werte. Dies mulitpliziert 12 bit mal 9091 Werte sind ca. 110Kbits. Jetzt suche ich das richtige Board und mich verwirrt bei XILINX dieses Maximum Distributed Ram, dann Block Ram, und dann Total Block Ram... verstehe ich nicht so genau (selbst nach der Suche und mit durchlesen habs nicht so verstanden). Wenn ich jetzt z.B insgesammt verschiedene LUT die insgesamt 875 Kbits größe haben, muss ich dann mit welcher Spezifikation vergleichen von den drei da oben?? Für ne Antwort wäre ich euch sehr dankbar. Mfg Igor
distributed RAM -> Speicher der in normalen Logikzellen realisiert wird. Vorteil: Sehr genau "dosierbar", also fuer viele sehr kleine RAM-Bloecke geeignet. Nachteil: Sehr hoher Ressourcenverbrauch Block RAM-> fertige Speicherbloecke im FPGA, normalerweise jeweils 18kbit gross. Eignen sich vor allem fuer groessere zusammenhaengende Speicher. und brauchen keine zusaetzlichen Logik-Ressourcen. Nachteil: Nur in 18kBit Bloecken nutzbar, Breite und Tiefe nur in festen Schritten einstellbar. "Block RAM" gibt normalerweise die Anzahl der Speicherbloecke an, "Total Block RAM" die Groesse aller Block RAMs zusammen. Du brauchst 110 kbit am Stueck, also einen FPGA der mindestens 7 Block RAMs a 18 kBit besitzt.
> da ich leider ein totaler Anfänger in FPGA bin:( Dann wirst du mit dieser Aufgabe eine steile Lernkurve vor dir haben... > Ich möchte verschiedene E- funktion in mehreren LUT abfahren Es gibt doch nur die e-Funktion :-/ Wie wäre es mit dem Ablegen von Stützpunkten und linearer Interpolation dazwischen?
> Ich möchte verschiedene E- funktion in mehreren LUT abfahren
Taylor-Reihe und dann Polynom in Differenz-Gleichung überführen und
implemtieren.
Wao das ging ja schnell:) danke nochmal. Also ich habe es nicht richtig beschrieben ich habe eine E-funktionen mit verschiedenen Abklingzeiten und dies wird mit der Eingagnsintensität also Amplitude mal genommen. Aber die E funktionen besitzen verschiedene Abklingzeiten. also ich habe eimal zwei dynamische E funktionen, d.h mit jeden neuen Eingangssignal wird die Amplitude geringer was bedeutet das ich wenn das signal kommt einmal dies mit einer LUT ausgeben muss während in einer anderen die nächste LUT geladen wird. Dann habe ich zwei statische E funktion, d.h über die ganze Messreihe bliebt die Intensität gleich (Ich weis es klingt ein bischen kompliziert) Zusammengefasst 2 LUT die immer geswitcht werden müssen = 220Kbits Eine LUT die gleich bleibt (statisch) = 110Kbits Noch eine LUT die gleich bleibt (statisch) = 545 Kbits Summe = 875 Kbis Also heisst das das ich Block Ram 18 * 52 = totalblockram = 936 Kibts, reicht das aus? Gruss Igor
Deine Erklärung zu den verschiednenen e-Funktionen kann ich nicht ganz nachvollziehen. Theoretisch sollte es doch möglich sein, nur eine hochauflösende Funktionskurve zu speichern und diese dann in verschiedenen Geschwindigkeiten auszugeben, bei sehr hohen Geschwindigkeiten / kurzen Abklingzeiten z.B. durch auslassen einiger Werte. Aber gehen wir davon aus, dass du wirklich alle Funktionen im RAM brauchst. Igor schrieb: > Also heisst das das ich Block Ram 18 * 52 = totalblockram = 936 Kibts, > reicht das aus? Du musst noch berücksichtigen, dass du das RAM ja nur in 18kBit Blöcken verteilen kannst. Da deine Funktionswerte ja 12 Bit breit sind, das RAM aber nur mit 8 oder 18 Bit Breite *) konfiguriert werden kann, wirst du normalerweise ohne mehr Programmieraufwand immer einige Bits im Block RAM verschenken müssen. *) In deiner Anwendung wären auch 12 Bit möglich, indem du einen 4 Bit breiten RAM parallel zu zwei seriell geschalteten 8 Bit breiten RAMs benutzt um dann insgesamt einen 12x4096 großen RAM zu erhalten, aber das wirst du von Hand machen müssen, da die Tools das wahrscheinlich nicht automatisch erstellen können.
936 KBit ergeben ein ziemlich großes FPGA. Ein passendes Virtex 5 kostet deutlich über 300€. Ich würde mir eine andere Lösung überlegen. Z.B. externen Speicher verwenden oder die Werte berechnen. Du müsstest jetzt noch sagen wie schnell du diese Werte brauchst...
Lattice ECP2M gibt es schon für 50 Dollar mit dieser Menge RAM - ein externer RAM-Baustein dürfte allerdings wirklich die bessere Lösung sein solange nicht auch sehr viele Logikressourcen benötigt werden. Je nach Geschwindigkeit dürfte sich hier ein Flash ROM anbieten. Andererseits gehören e-Funktionen aber auch nicht gerade zu den am schwierigsten zu berechnenden Funktionen (wiederholtes multiplizieren mit einer Konstanten reicht aus) und 12 Bit Auflösung sind hier auch nicht sehr viel, ich würde mir also zuerst einmal genau überlegen, ob es wirklich eine LUT sein muss.
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.