¿Cómo puedo calcular el tiempo que transcurre entre dos sensores en vhdl?

0

¿Soy nuevo en diseño digital y tengo problemas para calcular el tiempo entre dos sensores que dan salida digital? ¿Cómo puedo abordar este problema? Pensé en escribir las salidas de los sensores digitales en la declaración de proceso y cuando el primer sensor da 1 comienza el tiempo y cuando el segundo sensor da 1 detiene el tiempo. Sin embargo, dado que el sensor que estoy usando da 0 justo después de que un objeto en movimiento se mueve delante de él, no puedo almacenar el tiempo. ¿Alguien tiene alguna sugerencia al respecto? Gracias.

    
pregunta Giray Salgır

1 respuesta

-1

Esta es la función de un Conversor de tiempo a digital . La idea es que inicie un contador cuando el sensor 1 le da un 1 y lo detiene cuando el sensor 2 le da un 1. La precisión está determinada por la frecuencia de reloj del contador. Incluso es posible tener una mayor precisión si agrega un interpolador (el método Nutt), pero no creo que lo necesite.

Para detectar el flanco ascendente, implementar detectores de borde:

    signal sensor1delay : std_logic;
    signal sensor1r_edge : std_logic;
begin
    sensor1delay <= sensor1 when rising_edge(clk);
    sensor1r_edge <= '1' when sensor1='1' and sensor1delay='0' else '0';

editar: La construcción Q <= D when rising_edge(CLK); es VHDL perfectamente legal (desde VHDL93) y es compatible con todo el software de síntesis moderno afaik. Más personas lo están utilizando, solo Google it . También se describe en "Codificación efectiva con VHDL" por Ricardo Jasinski

entonces solo cuenta:

    signal counter : natural;
    signal output : natural;
begin
    clock_proc: process(clk)
    begin
        if rising_edge(clk) then
            if sensor1r_edge='1' then
                counter <= 0;
            else
                counter <= counter+1; -- overflow error in simulation, not in synthesis
            end if;
            if sensor2r_edge='1' then
                output <= counter;
            end if;
        end if;
    end process;

Su última parte no está clara: a qué se refiere con "después de que un objeto en movimiento se mueva delante de él, no puedo almacenar el tiempo"

Editar:

Es probable que también sea necesario implementar sincronizadores (dominio de reloj) para las entradas del sensor.

    
respondido por el JHBonarius

Lea otras preguntas en las etiquetas