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

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