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


von Der D. (daimlerfahrer)


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.

von Bernd G. (Gast)


Lesenswert?

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

von Jan M. (mueschel)


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!)

von Der D. (daimlerfahrer)


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.

von Falk B. (falk)


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

von Jan M. (mueschel)


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.

von Falk B. (falk)


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

von Jan M. (mueschel)


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.

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.