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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  acumulador vhdl
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: acumulador vhdl  (Leído 3,233 veces)
worrt

Desconectado Desconectado

Mensajes: 1


Ver Perfil
acumulador vhdl
« en: 24 Noviembre 2016, 20:20 pm »

Hola,
Necesito ayuda para un trabajo de la universidad. Lo agradecería mucho puesto que estoy muy pez en el tema.

Necesito implementar un temporizador de 16 bits que se tiene que poder inicializar a un valor cualquiera y después tiene que ir haciendo una cuenta atrás, indicando con una señal el momento en que acaba.  
                    
Concretamente, el temporizador tiene que permitir:

• La carga paralela de un valor num arbitrario (con load a 1).
• Mientras la señal start se mantiene a 1, el temporizador tiene que ir decrementando
su valor (salida timer). La cuenta atrás se para (mantiene el valor de timer)
si la señal start pasa a 0, y continúa al volver a 1.
• Una señal de salida, end_time, que se pondrá a 1 cuando la cuenta del temporizador
llegue al final (a cero).


Lo que he realizado yo es:

library ieee;
   use ieee.std_logic_1164.all;
   use ieee.std_logic_unsigned.all;
ENTITY Timer IS
   PORT(
      clock      : in std_logic;
      load      : in std_logic;
      stard      : in std_logic;
      num      : in std_logic_vector(15 DOWNTO 0);
      timer      : out std_logic_vector(15 DOWNTO 0);
      end_time   : out std_logic);
END Timer;
ARCHITECTURE bhv of Timer is
   signal carga :std_logic_vector (15 DOWNTO 0);
   signal timer_p :std_logic_vector (15 DOWNTO 0);
   signal timer_0 :std_logic_vector (15 DOWNTO 0);
begin
process (clock,load)
begin
   if clock'event and clock='1' then
      if (stard = '1') then
      timer_p <=timer_p-1;
      else
      timer_p<=timer_p;
      timer<=timer_p;
         if (timer_0= "0000000000000000") then
         end_time<='1';
         timer_p <= timer_0;
            if (load='1') then
            timer <= carga;
            end if;
         end if;
      end if;
   end if;
end process;
end bhv;

y ahora estoy con el banco de pruebas para modelsim altera, pero no me aclaro para definir los estímulos.
El banco creado por el test bench es:

LIBRARY ieee;                                              
USE ieee.std_logic_1164.all;                                

ENTITY Timer_vhd_tst IS
END Timer_vhd_tst;
ARCHITECTURE Timer_arch OF Timer_vhd_tst IS
-- constants
constant PERIOD   : time := 20 ns;                                                
-- signals                                                  
SIGNAL clock : STD_LOGIC   := '0';
SIGNAL end_time : STD_LOGIC;
SIGNAL load : STD_LOGIC;
SIGNAL num : STD_LOGIC_VECTOR(15 DOWNTO 0);
SIGNAL stard : STD_LOGIC;
SIGNAL timer : STD_LOGIC_VECTOR(15 DOWNTO 0);
COMPONENT Timer
   PORT (
   clock : IN STD_LOGIC;
   end_time : OUT STD_LOGIC;
   load : IN STD_LOGIC;
   num : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
   stard : IN STD_LOGIC;
   timer : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)
   );
END COMPONENT;
BEGIN
   i1 : Timer
   PORT MAP (
-- list connections between master ports and signals
   clock => clock,
   end_time => end_time,
   load => load,
   num => num,
   stard => stard,
   timer => timer
   );
init : PROCESS                                              
-- variable declarations                                    
BEGIN
                                         
        -- code that executes only once                      
WAIT;                                                      
END PROCESS init;                                          
always : PROCESS                                              
-- optional sensitivity list                                  
-- (        )                                                
-- variable declarations                                      
BEGIN                                                        
        -- code executes for every event on sensitivity list  
WAIT;                                                        
END PROCESS always;                                          
END Timer_arch;

Gracias de antemano.


« Última modificación: 24 Noviembre 2016, 21:16 pm por worrt » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Alguien me podria explicar el acumulador en c++?
Programación C/C++
kesox 2 8,308 Último mensaje 5 Diciembre 2010, 04:24 am
por leogtz
¿Un acumulador para sumar la serie fibonacci?
Programación C/C++
Exorcista12 2 4,039 Último mensaje 17 Enero 2014, 06:48 am
por Exorcista12
VGA en VHDL
Foro Libre
joan.ayala 0 1,996 Último mensaje 23 Mayo 2014, 22:52 pm
por joan.ayala
Ayuda Acumulador de cadenas en C
Programación C/C++
AxelIglesias 1 1,943 Último mensaje 7 Noviembre 2016, 21:42 pm
por MAFUS
pila,bateria y acumulador
Foro Libre
inma55 3 2,260 Último mensaje 21 Noviembre 2023, 15:13 pm
por MCKSys Argentina
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines