Acties:
  • 0 Henk 'm!

  • Tommienator
  • Registratie: Maart 2011
  • Laatst online: 10-05-2024
Goedemiddag iedereen,

Klein vraagje ivm efficientie van de volgende code die ik zojuist geschreven heb..
Zoals de titel al zegt heb ik een 8 naar 1 multiplexer geschreven in VHDL.
Hier is de code:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity Mux8_1 is
Port ( X : in STD_LOGIC_VECTOR(7 DOWNTO 0);
S : in STD_LOGIC_VECTOR(2 DOWNTO 0);
Y : out STD_LOGIC);
end Mux8_1;

architecture Behavioral of Mux8_1 is

begin
Process (X,S)
begin
case S is

when "000"=>Y<=X(0);
when "001"=>Y<=X(1);
when "010"=>Y<=X(2);
when "011"=>Y<=X(3);
when "100"=>Y<=X(4);
when "101"=>Y<=X(5);
when "110"=>Y<=X(6);
when "111"=>Y<=X(7);
when others => null;

end case;
end process;
end Behavioral;
Nu, zoals je kan zien heb ik het voor elke case gewoon manueel opgesomd. In mijn ogen vrij stom en inefficiënt.. Daarom vroeg ik me af of er een mogelijkheid was om dit in een loop te kunnen steken waardoor hij dus automatisch de loop afgaat (te beginnen bij i = 0) en dan automatisch de uitgang aan de juiste vector van X kan toekennen?

Alvast bedankt :).

"Small minds discuss persons. Average minds discuss events. Great minds discuss ideas. Really great minds discuss mathematics."


Acties:
  • 0 Henk 'm!

  • the12be
  • Registratie: November 2000
  • Laatst online: 08-10 08:24
zoiets gaat wel werken:
code:
1
Y <= X( to_integer( unsigned( S ) ) );

Dit kan dus buiten het process.

Acties:
  • 0 Henk 'm!

  • Tommienator
  • Registratie: Maart 2011
  • Laatst online: 10-05-2024
Bedankt, ga ik eens proberen ;)!

"Small minds discuss persons. Average minds discuss events. Great minds discuss ideas. Really great minds discuss mathematics."