Forum Discussion
Altera_Forum
Honored Contributor
16 years agoEstás haciendo un mal uso de la sentencia "with-select" ésta sólo puede asignar a una única señal. La opción others no va entre comillas. Debes utilizar señales auxiliares para concatenar las dos señales de un bit. Este código, realiza lo mismo que tu estabas esperando.
library ieee;
use ieee.std_logic_1164.all;
entity ejemplo_vhdl is
port(B1,A1,B2,A2,G1n,G2n: in std_logic;
Y1,Y2: out std_logic_vector(0 to 3));
end ejemplo_vhdl;
Architecture sol of ejemplo_vhdl is
signal Z1,Z2: std_logic_vector(0 to 3);
signal b1_b1,b2_a2: std_logic_vector(1 downto 0);
begin
b1_b1<=B1&B1;
b2_a2<=B2&A2;
With b1_b1 select
Z1<= "1000" when "00",
"0100" when "01",
"0010" when "10",
"0001" when others;
With b2_a2 select
Z2<= "1000" when "00",
"0100" when "01",
"0010" when "10",
"0001" when others;
Y1<=Z1 when G1n='1' else "0000";
Y2<=Z2 when G2n='1' else "0000";
end sol;