8 Bit Encoder dynamisch erzeugen?

OP #1010689
Lesenswert?
• ▲
▼
Sewrvus zusammen,

ist es möglich, eine Encoder Auswahl
1
case SignalWahl(7 downto 0) is
2
when "00000000" => Signal1 <= Signal_In;
3
when "00000001" => Signal2 <= Signal_In;
4
when "00000010" => Signal3 <= Signal_In;
5
when "00000011" => Signal4 <= Signal_In;
6
.
7
.
8
.
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.
#1010713
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!)
#1010917
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

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