mikrocontroller.net

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


Autor: Andreas B. (loopy83)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: hotline (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verwende einen RAM mit 14 Bit Adressbreite und schreibe die generierten 
Werte da hinein.

Autor: Kest (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Kest (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.