mikrocontroller.net

Forum: FPGA, VHDL & Co. 8 Bit Encoder dynamisch erzeugen?


Autor: Der Daimlerfahrer (daimlerfahrer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sewrvus zusammen,

ist es möglich, eine Encoder Auswahl
case SignalWahl(7 downto 0) is
when "00000000" => Signal1 <= Signal_In;
when "00000001" => Signal2 <= Signal_In;
when "00000010" => Signal3 <= Signal_In;
when "00000011" => Signal4 <= Signal_In;
.
.
.
dynamisch zu lösen?
Ich erhalte einen 8-Bit breiten Eingang und möchte mit jeder 
Inkrementierung auch das zugeordnete Signal um eins erhöhen...

Danke schonmal.

Autor: Bernd G. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Willst du alle 256 Zeilen aussschreiben?
Versuche doch mal, dein Problem zu präzisieren. Dann kann man dir 
vielleicht helfen.

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, allerdings nicht mit den Namen Signal1, Signal2 ...

Wie auch in C und anderen Sprachen solltest du ein Array verwenden. 
Einen Demultiplexer wie du ihn haben willst kann man etwa so 
beschreiben:

type myarray_t is array 0 to 15 of std_logic;
signal Signal : myarray_t;

for i in 0 to 15 generate
  Signal(i) <= Signal_In when SignalWahl = to_std_logic_vector(i,7) else 
'0';
end generate;

(Vorsicht, das hat einen ziemlich hohen Resourcenverbrauch bei breiten 
Vektoren und vielen Kanaelen!)

Autor: Der Daimlerfahrer (daimlerfahrer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nunja, ich möchte gerade NICHT alle Zeilen ausschreiben.

Ich möchte einfach für jede binäre Kodierung ein neues Signal mit dem 
Eingangssignal belegen.

Das mit dem Array klingt schonmal gut.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Der Daimlerfahrer (daimlerfahrer)

>Das mit dem Array klingt schonmal gut.

Praktisch nimmt man dazu einen Dual Port RAM. Der ein Port ist der 
Dekoder, der andere schreibt die Dekodertabelle rein. Fettig.

MFG
Falk

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falk, könntest du das etwas genauer erklären? Mit so großen Dekodern 
hatte ich noch nicht zu tun und verstehe nicht ganz wie du das meinst.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der OP braucht sowas hier, siehe TTL74185, VErsion mit  Konstanten 
Array.

@  Jan M. (mueschel)

Ein Dekoder ist nichts weiter als eine Wertetabelle. Jede Zeile hat eine 
Zeilennummer und einen Inhalt, so wie in Excel. Das ganze kann man auch 
in einem RAM oder EPROM ablegen. Im RAM ist es halt dynamisch, d.h. ich 
kann z.B. mit einem State Machine oder einem kleinen PRozessor die Daten 
neu laden, ohne den FPGA neu konfigurieren zu müssen.

MFG
Falk

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, du meinst nur den Dekoder, das ist mir klar wie das funktioniert.
Ich hatte es so verstanden, den ganzen Demultiplexer in einen RAM zu 
packen - und da sehe ich keine Möglichkeit die ohne immens breite 
Adress- und Datenvektoren auskommt.

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.