Gast
#202409
Hallo miteinander,
hat jemand mit eine Idee, wie ich ein universellen x to 1 Decoder in
VDHL beschreiben kann?
Die Parameterübergabe ist ja noch einfach mittels "generic" lösbar,
aber wie kann ich die "case" Anweisung gestalten, das alle
Kombinationen einen Decodier werden.
Also wie kann ich die "when" Zeilen universal schreiben, so das
SEL_WIDTH = 4 und SIG_WIDTH = 16 sein kann?
Hier mal den Grundcode:
library IEEE;
use IEEE.std_logic_1164.all;
entity DECODE_Xto1 is
generic (SEL_WIDTH : integer :=3;
SIG_WIDTH : integer :=8
);
port ( SEL : in std_logic_vector(SEL_WIDTH-1 downto
0);
SIG_IN : in std_logic_vector(SIG_WIDTH-1 downto
0);
SIG_OUT : out std_logic
);
end DECODE_Xto1;
architecture RTL of DECODE_Xto1 is
begin
process (SEL, SIG_IN)
begin
case SEL is
when "000" => SIG_OUT <= SIG_IN(0);
when "001" => SIG_OUT <= SIG_IN(1);
when "010" => SIG_OUT <= SIG_IN(2);
when "011" => SIG_OUT <= SIG_IN(3);
when "100" => SIG_OUT <= SIG_IN(4);
when "101" => SIG_OUT <= SIG_IN(5);
when "110" => SIG_OUT <= SIG_IN(6);
when "111" => SIG_OUT <= SIG_IN(7);
-- For simulation only
when others => SIG_OUT <= 'X';
end case;
end process ;
end RTL;