Autor Tema: ¿es necesario comprobar clk'event para detectar flanco de subida...?  (Leído 11357 veces)

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

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
¿es necesario comprobar clk'event para detectar flanco de subida...?
« en: 29 de Septiembre de 2009, 16:36:11 »
hola de nuevo, una pregunta...  si tenemos este código (que es de un flip-flop):



--
-- Flip-Flop with Positive-Edge Clock
--
library ieee;
use ieee.std_logic_1164.all;
entity registers_1 is
port(C, D : in std_logic;
Q : out std_logic);
end registers_1;
architecture archi of registers_1 is
begin
process (C)
begin
if (C’event and C=’1’) then
Q <= D;
end if;
end process;
end archi;


por qué se comprueba c'event?
si ha entrado en process es porque ha habido un cambio en c, y si
el valor de c='1' entonces ese flanco tuvo que ser de subida. ¿no sobraría la comprobación "if (C'event) ?

sl2 :)

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: ¿es necesario comprobar clk'event para detectar flanco de subida...?
« Respuesta #1 en: 02 de Octubre de 2009, 08:33:37 »
Pues al no haber más señales en la lista de sensibilidad me entra la duda...se supone que sin el C'EVENT funcionaría igualmente.
En el caso de que hubiese más señales, la función de C'EVENT es para asegurarse de que el proceso se ha activado por un cambio en la señal de reloj y no en otra de las señales

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
Re: ¿es necesario comprobar clk'event para detectar flanco de subida...?
« Respuesta #2 en: 04 de Octubre de 2009, 21:33:46 »
claro esa era la duda, gracias modulay!

bambino

  • Visitante
Re: ¿es necesario comprobar clk'event para detectar flanco de subida...?
« Respuesta #3 en: 08 de Octubre de 2009, 14:02:14 »
Hola black_flowers.


Se debe comprobar que el flanco sea ascendente. En caso de que no se compruebe esta condición, el flip-flop
funcionará tanto con el flanco ascendente como en el descendente. Por ello es necesario el clk 'event and clk = '1'.

Un saludo.

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
Re: ¿es necesario comprobar clk'event para detectar flanco de subida...?
« Respuesta #4 en: 08 de Octubre de 2009, 21:03:11 »
Hola black_flowers.


Se debe comprobar que el flanco sea ascendente. En caso de que no se compruebe esta condición, el flip-flop
funcionará tanto con el flanco ascendente como en el descendente. Por ello es necesario el clk 'event and clk = '1'.

Un saludo.

si clk ha cambiado de estado y su nuevo estado es 1 (if (C=’1’) then) ... es porque ha sido flanco ascendente no??

saludos

si la

bambino

  • Visitante
Re: ¿es necesario comprobar clk'event para detectar flanco de subida...?
« Respuesta #5 en: 09 de Octubre de 2009, 05:31:55 »
Sí, así es.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: ¿es necesario comprobar clk'event para detectar flanco de subida...?
« Respuesta #6 en: 09 de Octubre de 2009, 07:01:10 »
Entonces, en ausencia de otras señales en la lista de sensibilidad, no sería necesaria la comprobación C'EVENT

bambino

  • Visitante
Re: ¿es necesario comprobar clk'event para detectar flanco de subida...?
« Respuesta #7 en: 09 de Octubre de 2009, 10:15:03 »
Ahora que lo pienso, tienes razón, con comprobar C = '1' es suficiente.

Es que no lo había entendido bien.

Desconectado luisdearg

  • PIC10
  • *
  • Mensajes: 1
Re: ¿es necesario comprobar clk'event para detectar flanco de subida...?
« Respuesta #8 en: 10 de Noviembre de 2010, 13:10:13 »
De casualidad vi tu post, y vi que no te han dado la respuesta exacta, con el clk'event se sintetiza un flip flop D, si quitas el clk'event y solo confirmas su estado igual a 1, se sintetiza un latch.  Espero sirva

Desconectado JOJOJORGE5

  • PIC16
  • ***
  • Mensajes: 167
Re: ¿es necesario comprobar clk'event para detectar flanco de subida...?
« Respuesta #9 en: 10 de Noviembre de 2010, 21:13:39 »
Hola

pero si no quieres usar C'EVENT puedes usar:

if rising_edge(c) then
para flanco de subida o:

if falling_edge(c) then
para flanco de bajada.

salu2:)

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: ¿es necesario comprobar clk'event para detectar flanco de subida...?
« Respuesta #10 en: 11 de Noviembre de 2010, 00:31:28 »
Igual no todos tienen implementadas esas funciones, entonces para hacerlo más general es conveniente usar 'event  ;-)


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: ¿es necesario comprobar clk'event para detectar flanco de subida...?
« Respuesta #11 en: 11 de Noviembre de 2010, 01:38:54 »
Como menciona luisdearg, si no evalúas clk'event se crea un latch, que probablemente no sea lo que desees y pudiera llegar a generar algún problema, en el caso de las herramientas de Xilinx te avisan y te indican que no se recomienda el uso de latches.
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 JOJOJORGE5

  • PIC16
  • ***
  • Mensajes: 167
Re: ¿es necesario comprobar clk'event para detectar flanco de subida...?
« Respuesta #12 en: 11 de Noviembre de 2010, 07:01:44 »
Igual no todos tienen implementadas esas funciones, entonces para hacerlo más general es conveniente usar 'event  ;-)

si pero son del VHDL 93 y creo que si la mayoria lo tiene implementado ano ser que explicitmente le digas al software que quieres usar una version inferior y por lomenos ami el ISE de xilinx no me deja selecconar una version inferior a la 93.

y me olvidaba mencionar que se encuentran en el paquete "std_logic_1164" que si fue incluido en el ejemplo de la pregunta y normalmente es incluio de forma automatica al crear un nuevo proyecto.

y si como explico luisderag si no usas 'event o las funciones que puse te genera un latch lo que en la mayoria de los casos te puede generar resultados inesperados.
yo lo comprobe una ves y si se tiene que tener algo de cuidado al programar.

Desconectado parusogtz

  • PIC10
  • *
  • Mensajes: 6
Re: ¿es necesario comprobar clk'event para detectar flanco de subida...?
« Respuesta #13 en: 29 de Agosto de 2011, 02:52:21 »
bueno yo creo que si se trata de un flip flop pues son muy inestables, con los transitirios o ruido de la fuente,  asi que pues una de la soluciones fue usar las activaciones por flanco, entra mejor en la sincronia de los pulsos de reloj, pero recordando todos los flip flop TTL son muy inestables.  auque la  FPGA que no es TTL necesita un circuito con buena tierra, voltaje y dependiendo la aplicaciòn buen blindaje y aislamiento, asi  no tendremos que preocuparnos y deve de funcinar bien, pero no esta de mas la sincronia que se usa hace mucho en circuitos logicos y en realidad ese es el proposito del lenguaje de descripcion describir circuitos logicos.

pero si por ejemplo fuera un incremento de una variable,  talvez en la lista sencible entraria una señal de reloj general, solo para sincronizar con todos los componentes programados en el FPGA, y el flanco me permetiria hacer el conteo una sola vez  durante el pulso de reloj y no durante los cambios en los pulsos que no sincronizen  con el pulso de reloj.

pienzo que el event es un gran ventaja en vhdl.