grosses MUX mit loop erzeugen

Gast #3010767
Lesenswert?
• ▲
▼
Hallo,

ich brauche ein 256 zu 1 MUX. Wie kann ich das am besten erzeugen ohne 
jeden Moeglichkeit explizit angeben zu muessen?

Ausgeschrieben ware es so etwas:

process(Select, Data)
begin
 case Select is

    when (255 => '1' , others => '0') => data_out <= Data(255);

    when (254 => '1' , others => '0') => data_out <= Data(254);

    when (253 => '1' , others => '0') => data_out <= Data(253);
     .
     .
     .

    when ( 0 => '1' , others => '0') => data_out <= Data(0);

    when others => data_out <= (others => '0');

 end case;
end process;

Kann man das irgendwie mit einer loop machen?

Danke schon mal...

Juergen
Moderator (Firma: Titel) Persönliche Seite #3010786
Lesenswert?
• ▲
▼
Juergen schrieb:
> case Select is
>     when (255 => '1' , others => '0') => data_out <= Data(255);
Was ist denn hier Select?
Normalerweise hat ein 256-zu-1 Mux einen 8-Bit Select-Eigang (naja, 
evtl. 9 Bit). Denn mit 8 Bit lassen sich alle 256 Eingägne adressieren. 
Warum hast/willst du 256 Steuereingänge? Welche Datentypen haben deine 
Signale? Wie soll die Priorisierung aussehen? Was ist, wenn 2 deiner 
256 Steuereingänge gleichzeitig aktiv sind?

Sonst sieh dir das mal an:
1
process(Sel, Data)
2
begin
3
    data_out <= (others => '0');
4
    for i in 255 downto 0 loop    -- abhängig von Priorisierung
5
--    for i in 0 to 255 loop      -- abhängig von Priorisierung
6
        if sel(i)='1' then 
7
           data_out <= Data(i);
8
--           exit;                -- abhängig von Priorisierung
9
        end if;
10
    end loop
11
end process;
Gast #3011959
Lesenswert?
• ▲
▼
Hallo Lothar,

danke mal wieder.

Im Moment kommt das Select Signal von einem Johnson Zähler. Alle Signale 
sind std_logic bzw. std_logic_vector.

Vermutlich werde ich das Select Signal später noch ändern wie von dir 
vorgeschlagen, aber
deine Lösung funktioniert soweit erst mal!

Antwort schreiben

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.

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.