8 Bit Encoder dynamisch erzeugen?

OP #1010689
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.
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!)
@ 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
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
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

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.