elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Informática
| |-+  Electrónica
| | |-+  Convertidor bianrio to bcd (VHDL)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Convertidor bianrio to bcd (VHDL)  (Leído 6,439 veces)
forzacule

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Convertidor bianrio to bcd (VHDL)
« en: 11 Marzo 2015, 16:09 pm »

Hola!!! Estoy aburrido ya, primero a no coge el valor de num_bin, si lo coge no me hace que si es mayor que 5 le sumo 3.

Por ejemplo para el numero binario 11010001 su bcd me sale en mi programa 11-1 con lo cual seria erroneo porque bcd solo llega hasta 9. No encuentro el fallo. Si me podeis ayudar, aver si hay alguna linea erronea del codigo, nose... :-\




entity bin2bcd is
    Port ( clk : in  STD_LOGIC;
           reset : in  STD_LOGIC;
           inicio : in  STD_LOGIC;
           num_bin : in  STD_LOGIC_VECTOR (12 downto 0);
           und : out  STD_LOGIC_VECTOR (3 downto 0);
           dec : out  STD_LOGIC_VECTOR (3 downto 0);
           cen : out  STD_LOGIC_VECTOR (3 downto 0);
           mil : out  STD_LOGIC_VECTOR (3 downto 0);
           fin : out  STD_LOGIC);
end bin2bcd;

architecture Behavioral of bin2bcd is

begin

P1: process(reset,clk)  
variable a: std_logic_vector(12 downto 0);
variable b: std_logic_vector(15 downto 0);
begin

if reset = '1' then   -- si reset 1 pongo a cero las variables
      
      a := (others => '0');
      b := (others => '0');
      
elsif rising_edge(clk) then   
   
if inicio = '1' then
      a := num_bin;   -- a "a" le asgino mi numero binario a convertir (proviene del test bench)
      
      for i in 0 to 12 loop
      
      b := b(14 downto 0) & a(12);
      a := a(11 downto 0) & '0';
      --b := b(2 downto 1) & '0';   
      
-- voy desplazando y comprobando que si es mayor que 5 sumo 3

      if (i<12 and b(3 downto 0) > "0100" ) then
      b(3 downto 0) := b(3 downto 0) or "0011";
      end if;
      
      if (i<12 and b(7 downto 4) > "0100") then   
      b(7 downto 4) := b(7 downto 4) or "0011";
      end if;
      
      if (i<12 and b(11 downto 8) > "0100") then      
      b(11 downto 8):= b(11 downto 8) or "0011";
      end if;
      
      if (b(15 downto 12) > "0100") then
      b(15 downto 12) := b(15 downto 12) or "0011";
      end if;
      
      
      end loop;         
      

      

      
end if;
         und <= b (3 downto 0);
         dec <= b (7 downto 4);
         cen <= b (11 downto 8);
         mil <= b (15 downto 12);
end if;
end process ;
end Behavioral;


« Última modificación: 11 Marzo 2015, 16:16 pm por forzacule » En línea

kondrag_X1

Desconectado Desconectado

Mensajes: 157


Ver Perfil
Re: Convertidor bianrio to bcd (VHDL)
« Respuesta #1 en: 29 Marzo 2015, 21:35 pm »

lo que te aconsejo yo personalmente con VHDL te aconsejo es que vayas a los mas sencillo porque a la hora de depurar es un infierno.

si fuese tu cogenería la entrada en binaria y la compararía con el numero numero en decimal 0-9 y luego prepararía el código BCD en la salida y listo.

algo así:
Código:
if num_bin = "1000" then   
      a <= "101010101"; -- 8 en BCD, ojo este representación es inventada

PD: a mi personalmente me desaconsejaron que utilizara variables en VHDL porque a veces da follon.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Programacion en VHDL
Programación General
Fox_Neo 1 4,938 Último mensaje 10 Octubre 2013, 17:44 pm
por Fox_Neo
Active vhdl
Electrónica
Fox_Neo 0 2,307 Último mensaje 2 Febrero 2014, 10:51 am
por Fox_Neo
Ayuda VHDL
Programación General
grandanh 0 1,731 Último mensaje 21 Febrero 2014, 17:04 pm
por grandanh
VGA en VHDL
Foro Libre
joan.ayala 0 1,740 Último mensaje 23 Mayo 2014, 22:52 pm
por joan.ayala
Divisor en VHDL
Electrónica
Casilda 0 3,766 Último mensaje 5 Junio 2014, 23:41 pm
por Casilda
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines