Autor Tema: Contador 4 bits con reloj de 1 Hz  (Leído 19787 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado americo.etn

  • PIC10
  • *
  • Mensajes: 19
    • http://electronico-etn.blogspot.com
Contador 4 bits con reloj de 1 Hz
« en: 05 de Marzo de 2011, 11:38:00 »
Buen dia, amigos, tengo este problema
cuando realize contadores en vhdl utilizando la tarjeta fpga de2 de altera, lo implemente con reloj externo a la tarjeta y sin utilizar sus osciladores(ningun problema). Ahora el problema esta en que me pidieron un contador de 4 bits pero... utilizando el oscilador interno de 50 Mhz de la board.en VHDL
Bueno ya hize el codigo pero aun no puedo observar que realize bien la cuenta de 4 bits. Porfabor alguna alma caritativa que me ayude, que parte del codigo esta mal, o que me sugiera otro codigo"".
Citar
----------------------------------------------------------------------------------
-- Contador ascendente 4 bits
-- con 1 Hz de reloj
-- Autor: Americo Alvarez
-- Fecha: 05 de marzo de 2011
-- Nombre de modulo: counter_4b_1hz
-- Descripcion:
--       Una vez visto el gran inconveniente por el reloj que
--      presentaban los contadores al momento de implementarlos
--      en la tarjeta fpga. Se vio la necesidad de implementar
--      un contador con f=1Hz de frecuencia.
--      La salida se la observara en binario, en leds.      
-- Abstract:
--
-- Vercion: vercion 0
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY counter_4b_1hz is
  Port (clock_50Mhz : in  STD_LOGIC;  -- oscilador de la de2 (50MHz)
      reset: in bit;
        F: OUT INTEGER RANGE 0 TO 15);  -- salida en 4 leds
END counter_4b_1Hz;

ARCHITECTURE rtl OF counter_4b_1hz IS
   
   SIGNAL clkout: std_logic;
   CONSTANT max: INTEGER := 50000000;
   CONSTANT half: INTEGER := max/2;
   SIGNAL count: INTEGER RANGE 0 TO max;
   
BEGIN
 -- generando señal clock de 1Hz de frecuencia
PROCESS
BEGIN
   WAIT UNTIL clock_50Mhz'EVENT and clock_50Mhz = '1';
   IF count < max THEN count <= count + 1;
      ELSE count <= 0;
   END IF;   
   IF count < half THEN clkout <= '0';
      ELSE clkout <= '1';
   END IF;
END PROCESS;
   
--contador 4 bits ascendente
PROCESS(clkout,reset)
   VARIABLE cuenta: INTEGER RANGE 0 TO 15;                                                       
BEGIN
   IF (reset='1') THEN
   cuenta:=0;
   ELSIF (clkout'EVENT AND clkout='0') THEN
   cuenta:=cuenta+1;
   END IF;
F <= cuenta;
END PROCESS;
END rtl;

la simulacion del waveform del quartus no da nada a la salida  entonces el codigo debe de estar mal.. La compilacio del codigo no tiene errores.

saludos
Take Me Some Place Far Away

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: Contador 4 bits con reloj de 1 Hz
« Respuesta #1 en: 05 de Marzo de 2011, 16:13:55 »
Prueba agregando clock_50MHz a la lista de sensibilidad de tu primer proceso, para que pueda ejecutarse el código dentro de él con los cambios de esta señal.
Código: VHDL
  1. ...
  2. BEGIN
  3.  -- generando señal clock de 1Hz de frecuencia
  4. PROCESS(clock_50MHz)
  5. BEGIN
  6.    WAIT UNTIL clock_50Mhz'EVENT and clock_50Mhz = '1';
  7.    ...
« Última modificación: 05 de Marzo de 2011, 16:39:07 por Geo »
La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/

Desconectado americo.etn

  • PIC10
  • *
  • Mensajes: 19
    • http://electronico-etn.blogspot.com
Re: Contador 4 bits con reloj de 1 Hz
« Respuesta #2 en: 06 de Marzo de 2011, 12:12:33 »
Buen dia. gracias por la respuesta pronta.. pero realize los cambios y el simulador no puede realizar la compilacion hay un error...
utilizo el programa quartus2 web edition...

saludos.. no se cual podria ser el problema... help me!
Take Me Some Place Far Away

Desconectado Chipcon

  • PIC12
  • **
  • Mensajes: 63
Re: Contador 4 bits con reloj de 1 Hz
« Respuesta #3 en: 07 de Marzo de 2011, 11:50:20 »
Que tal americo.etn lo que he visto de tu código y tal vez sea el motivo de no ver salidas en la simulación ó en la tarjeta DE2 es que utilizas como salida una señal integer pero recuerda que deben ser STD_LOGIC_VECTOR(3 downto 0);

Es la forma de visualizar un contador binario de 4 bits y otra cosa prueba el proceso de reloj asi;

 process (clock_50Mhz)
 begin

        if clock_50MHZ'event and clock_50MHZ = '1' then

        .....

        end if;
 end process;

Espero tengas resultados saludos

Desconectado americo.etn

  • PIC10
  • *
  • Mensajes: 19
    • http://electronico-etn.blogspot.com
Re: Contador 4 bits con reloj de 1 Hz
« Respuesta #4 en: 08 de Marzo de 2011, 17:34:31 »
gracias por las sugerencias.. lo estoy probando... y cuando aumento clock_50Mhz al primer proceso, pues segun el compilador ahi esta el error.. si aumento la sentencia..
y sobre lo de integer en anteriores ocasiones trabaje con salidas de este tipo y no dieron lios.. pero lo probe ahora mismo por si las dudad.. pero aun asi no da.. estoy viendo cual es el problema.. ojala lo solucionemos..

saludos.. y otra vez gracias por las respuestas
Take Me Some Place Far Away

Desconectado Chipcon

  • PIC12
  • **
  • Mensajes: 63
Re: Contador 4 bits con reloj de 1 Hz
« Respuesta #5 en: 08 de Marzo de 2011, 18:47:08 »
Pues que raro ya que copie tu código y no me marco error realizo la síntesis sin problemas yo también utilizo quartus incluso asigne un cycloneII
el nombre de tu proyecto si es el mismo que el archivo VHDl ya que de lo contrario marca error
saludos

Total combinational functions   41 / 18,752 ( < 1 % )   Flow Status   Successful - Tue Mar 08 15:45:59 2011
Dedicated logic registers   31 / 18,752 ( < 1 % )   Quartus II Version   10.1 Build 153 11/29/2010 SJ Web Edition
Revision Name   counter_4b_1hz
Top-level Entity Name   counter_4b_1hz
Family   Cyclone II
Device   EP2C20F484C7
Timing Models   Final
Total logic elements   41 / 18,752 ( < 1 % )
Total registers   31
Total pins   6 / 315 ( 2 % )
Total virtual pins   0
Total memory bits   0 / 239,616 ( 0 % )
Embedded Multiplier 9-bit elements   0 / 52 ( 0 % )
Total PLLs   0 / 4 ( 0 % )

Desconectado americo.etn

  • PIC10
  • *
  • Mensajes: 19
    • http://electronico-etn.blogspot.com
Re: Contador 4 bits con reloj de 1 Hz
« Respuesta #6 en: 08 de Marzo de 2011, 23:47:54 »
Buenas noches compañero Chipcon, muchas gracias por las respuestas, ojala podamos hayarle cual es el problema al codigo.


Citar
la simulacion del waveform del quartus no da nada a la salida  entonces el codigo debe de estar mal.. La compilacio del codigo no tiene errores.

saludos

El cogido que esta en el primer post, tal cual esta, compila sin problemas en el quartus2. El problema esta cuando realizas la simulacion de las ondas con el vector waveform, que es una simulacion mas fisica y observable, donde puedes ver ondas de entrada y salida de todos los pines. Ahi no muestra nada a la salida, en consecuencia que cuando carge el codigo al fpga de la ciclone2 este no mostrara salida (por lo ya dicho del waveform).

imagen1: la compilacion esta sin errores.. compila bien



imagen2: utilizando el waveform pues definimos la entrada de clock=20ns de periodo (1/50Mhz), y la entrada de reset como nivel bajo (0). entonces deberia de mostrar a la salida la cuenta. Pero como pueden apreciar no hay salida

pucha que podra ser, o estare manejando algo mal   :(    :(...  estoy estudiando ahora un codigo con varios procesos.. ojala que ahi este el truco ""..  http://vhdleu.blogspot.com/2007_03_01_archive.html

porfas, aun no entiendo por que no hay salida... si la compilacion esta bien... help me!
« Última modificación: 08 de Marzo de 2011, 23:54:24 por americo.etn »
Take Me Some Place Far Away

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: Contador 4 bits con reloj de 1 Hz
« Respuesta #7 en: 09 de Marzo de 2011, 03:42:16 »
En la simulación, prueba aplicando un pulso a la señal de reset para inicializar los valores.
La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/

Desconectado americo.etn

  • PIC10
  • *
  • Mensajes: 19
    • http://electronico-etn.blogspot.com
Re: Contador 4 bits con reloj de 1 Hz
« Respuesta #8 en: 09 de Marzo de 2011, 10:03:57 »
Buenas gracias a chipcon y a geo.... en definitiva: EL CODIGO del primer post ESTA BIEN, el que estubo mal, siempre fui yo y mi primitivo manejo del quartus. Es un programa a 1 hz asi que, cuando hacia la simulacion de ondas,  tan solo vi el primer valor  a la salida Osea el "0000", ya que el end time por defecto esta puesto en 1 us osea mucho menos que un segundo.

Ahora modificando en edit->end time  modificando el tiempo total de la simulacion, pues ahi ya pude ver que la simulacion de ondas da bien... tambien probe un pulso de reset,  les dejo una imagen de la simulacion de ondas...
la cuenta a 1hz (1segundo).


Saludos y gracias compañeros.. espero subir mas material de apoyo segun valla avanzando el semestre en la u...
« Última modificación: 19 de Marzo de 2011, 09:59:38 por americo.etn »
Take Me Some Place Far Away

Desconectado Chipcon

  • PIC12
  • **
  • Mensajes: 63
Re: Contador 4 bits con reloj de 1 Hz
« Respuesta #9 en: 09 de Marzo de 2011, 19:23:46 »
Jajaja  :D vaya eso es muy diferente a tener error en el código y vaya que suele pasar mas de una vez, tienes toda la razón el simulador normalmente presenta de 0 a 1uS
así que a modificar el End time cada que manejes pulsos mas grandes.

Saludos

Desconectado mabo123

  • PIC10
  • *
  • Mensajes: 1
Re: Contador 4 bits con reloj de 1 Hz
« Respuesta #10 en: 12 de Mayo de 2013, 21:23:31 »
Tengo el mismo problema!!!!! En mi simulacion solo se ve el "0000", ya le cambie los tiempos pero creo q aun lo estoy haciendo mal,  americo.etn si puedieras poner que end time pusiste y que intervalos para el clock. Gracias :lol:
« Última modificación: 12 de Mayo de 2013, 21:58:32 por mabo123 »


 

anything