Cambiar la misma señal en el estado ascendente o descendente de una señal

1

Soy un poco nuevo en VHDL, y espero que algunos de ustedes puedan ayudarme aquí.

Estoy intentando establecer una conexión entre un ADC, un LED y un componente de control.

El propósito de esta aplicación es convertir un valor analógico medido en el ADC y luego emitirlo al LED.

La forma en que he diseñado la comunicación es la siguiente.

El conjunto de LED y la señal alta ( start_adc ) que el ADC lee, y comienza el ADC.

Cuando finaliza el ADC, establece la señal read high, que luego el Control lee, y luego lee el ADC_value (un valor binario - std_logic_vector (9 a 0)).

Este ADC_value se mantiene bajo control, pero el LED tiene que cambiar su estado. Así que Control establece la señal next_state high, que el LED lee y cambia su estado a otra cosa. El problema aquí es cómo desactivo next_state ?

Mi solución implicó el uso de una señal llamada received que se configuraría como alta, si se viera rising_egde(next_state) de tal manera que, si el control detectara rising_edge(received) , podría apagar next_state y luego, cuando LED shaw y falling_edge(next_state) podrían establecer received low nuevamente, y luego start_adc high.

código sabio se parece a esto

state_changer: process(clk,state)
variable count: integer range 0 to 500000000 :=0;
begin
     if falling_edge(next_state) then
       received <= '0'; 
       start_adc <= '1';
     elsif rising_edge(next_state) then 
       received <= '1';
        count := 0;
        start_adc <= '0';
     end if; 
     count := count +1;  
end process;  

pero como puede ver, el problema es que la misma señal se configura para subir y bajar ... ¿cómo puedo solucionar este problema? ..

El aviso count también es importante.

    
pregunta Carlton Banks

2 respuestas

0

su problema no es complejo ... asumiendo que su código ADC está funcionando correctamente ..

puede usar un circuito detector de 2 bordes para generar un pulso: uno en el flanco ascendente y otro en el borde descendente ... esto simplificará su proceso ...

enlace

su proceso debe tener una condición de restablecimiento y establecer un valor inicial para las variables ...

    
respondido por el Cristian Mardones
0

Verificaría si el FPGA tiene lógica DDR en los bloques de E / S, esto es bastante común. Esto le daría dos señales por pin de entrada, una muestreada en el flanco ascendente, una muestreada en el flanco descendente.

    
respondido por el Simon Richter

Lea otras preguntas en las etiquetas