¿Sería esta una arquitectura legal VHDL?

0

Quiero diseñar un convertidor básico de BCD a XS3 usando VHDL. Soy bastante nuevo en implementación de arquitectura condicional y de comportamiento, pero me preguntaba si este sería un programa legal, especialmente mis declaraciones de asignación

entity bcd2xs3 is
    port (bcd : in std_logic_vector(3 downto 0);
          xs3 : out std_logic_vector(3 downto 0));
end bcd2xs3;

architecture behav of bcd2xs3 is
    begin
    case bcd is
        when X"0"|X"1"|X"2"|X"3"|X"4"|X"5"|X"6"|X"7"|X"8"|X"9" => xs3 <= std_logic_vector(unsigned(integer(unsigned(bcd))+3));
        when others => xs3 <= X"0";
    end case;
end behav;
    
pregunta Bao Thai

1 respuesta

1

Prefiero esta solución

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity bcd2xs3 is
  port (bcd : in std_logic_vector(3 downto 0);
        xs3 : out std_logic_vector(3 downto 0));
end bcd2xs3;

architecture behav of bcd2xs3 is
  signal bcd_int: integer;

begin
  bcd_int <= to_integer(unsigned(bcd));

  process (bcd_int )
    begin 
      case bcd_int is
        when 0 to 9 => 
          xs3 <= std_logic_vector(to_unsigned(bcd_int + 3), bcd'length);
        when others => 
          xs3 <= X"0";
      end case;
  end process;
end architecture behav;
    
respondido por el Claudio Avi Chami

Lea otras preguntas en las etiquetas