Primer o último componente del comprobador de valor / función [cerrado]

0

Estoy tratando de hacer un circuito que pueda almacenar el primer y último valor de una serie de valores. Para hacer esto, supongo que necesito un componente para determinar si es el primer o último valor y esto es lo que me cuesta encontrar.

Los datos llegan desde un ADC, que está convirtiendo una señal analógica de un espirómetro en digital. Cada valor binario de flujo se ingresa en un bus (con bits en paralelo). Mi objetivo es hacer una integración numérica (la regla de Simpson) para esto, necesito agregar el primer y último valor juntos.

Gracias.

    
pregunta Redjman

1 respuesta

1

Suponiendo que esté seguro de que necesita esto, su código probablemente se parecería a esto:

p_main: process(clk, reset_n)

  type flowstate is (initial, gathering);
  variable r_state : flowstate;

  variable r_first_val : integer range 0 to c_max;
  variable r_second_val : integer range 0 to c_max;

begin

  if reset_n = '0' then
    r_state := initial;
    r_first_val := 0;
    r_second_val := 0;
    first_val_output_signal <= 0;
    second_val_output_signal <= 0;
  elsif rising_edge(clk) then
    -- determine if the input is valid, depends on protocol
    if inputsvalid then
      case r_state is
        when initial =>
          r_first_val := received_input;
          r_second_val := received_input;
          r_state := gathering;
        when gathering =>
          r_second_val := received_input;
          -- determine if the gathering is done, depends on protocol
          if finished_gathering then
            r_state := initial;
            -- go back to initial state
            first_val_output_signal <= r_first_val;
            second_val_output_signal <= r_second_val;
          end if;
      end case;
    end if;
  end if;

end process;

Como puede ver, mucho dependería del protocolo real que utilicen los datos. Usted menciona un autobús, pero no qué tipo de autobús. La determinación de qué datos son válidos y cómo indicar a otros bloques / procesos que actualizó las señales de salida depende de su aplicación.

    
respondido por el DonFusili

Lea otras preguntas en las etiquetas