Forum: FPGA, VHDL & Co. 14bit auf 8bit LUT


von Andreas B. (loopy83)


Lesenswert?

Hallo zusammen,

ich bin gerade auf der Suche nach einer einfachen Implementierung für 
eine 14-auf-8-bit LUT.
Es sollen also 14bit Werte rein und die sollen anhand einer Kurve in 
8bit gewandelt werden. Quasi wie in der Bildverarbeitung zur 
Kontrastanhebung etc.

Gibt es da einfache Möglichkeiten?

Denn wenn ich 14bit Eingänge habe, ist es nicht wirklich zweckdienlich, 
wenn ich über 16000 Werte in einer case Anweisung auswerte. Genauso auf 
der 8bit Ausgangsseite. Ganz zu schweigen davon, wenn ich die Kurve mal 
ändern muss/möchte.

ich habe mir schon die Templates angeschaut, aber da gibt es nur 4bit 
Eingänge und 1bit Ausgang... diese clever zu kombinieren ist sicher 
nicht ohne Weiteres möglich.

Gibt es schon vorgefertigte ip-cores oder sowas für diese Art von 
Aufgaben?

Ich verwende einen Spartan 3A-DSP (1800er).

Vielen Dank!
Andi

von hotline (Gast)


Lesenswert?

Verwende einen RAM mit 14 Bit Adressbreite und schreibe die generierten 
Werte da hinein.

von Kest (Gast)


Lesenswert?

Du brauchst keine Cores.

Implementiere einfach einen Dual-Port-Speicher (Blockram). Auf dem einen 
Port kannst Du die Daten reinschreiben (initialisieren), auf der anderem 
kannst Du die Daten dann lesen.


hier mal pseudocode:

if rising_edge(clk) then
 if wr='1' then
  blockram(integer(write_addr)) <= write_data;
 end if;

 read_data <= blockram(integer(read_addr));

das war's

read_addr sind deine Eingangsdaten (Pixel), die 14 Bit breit sind, und 
read_data ist Ausgang (8 Bit)


Grüße,
Kest

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Für die gestellte Aufgabe braucht es kein Dualport RAM. Es reicht die 
Implementierung eines Singleport-ROMs locker aus.

Allerdings könnte ich mir ein kleineres ROM mit wenigen Stützstellen und 
eine Interpolation zwischen den Stützstellen auch gut vorstellen...

von Kest (Gast)


Lesenswert?

Aber er OP möchte doch die Werte ändern können:

> der 8bit Ausgangsseite. Ganz zu schweigen davon, wenn ich die Kurve mal
> ändern muss/möchte.

ob das zur Laufzeit geschehen soll hat er nicht geschrieben.

Das mit Interpolation ist ne gute Idee, allerdings habe ich so eine 
Lösung immer verworfen, weil es auch Kurven gibt, die nicht stetig sind. 
Für Bildverarbeitung ist es einfach unüblich. Außerdem erschien mir 
immer der Aufwand viel zu groß im Vergleich zu eine LUT ;-)


Grüße,
Kest

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.