E-funktionen mittel LUT in Ram abfahren

Gast #1455482
Lesenswert?

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
#1455498
Lesenswert?

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.
Gast #1455586
Lesenswert?

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
#1457804
Lesenswert?

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.
Gast #1457862
Lesenswert?

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...
#1457891
Lesenswert?

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.

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