Quiero restablecer la variable v_count
a 0 en el borde ascendente de la entrada
puerto i_pulse_run
. Pero me salen los siguientes errores:
Error: No se pudo implementar el registro en este borde del reloj.
Error (10821): error de HDL en PWM_Gen.vhd (85): no se puede inferir el registro para "CTRL: v_count [15]" porque su comportamiento no coincide con ningún soporte modelo de registro.
¿De qué otra manera puedo restablecer la variable a 0. Quiero restablecerla solo en la
flanco ascendente de la señal i_pulse_run
.
Cualquier sugerencia es bienvenida. Gracias
LIBRARY IEEE;
USE IEEE.numeric_std.all;
USE IEEE.std_logic_1164.all;
..
..
..
CTRL : PROCESS(i_Reset, i_Clock,i_pwm_pulse_run)
variable v_PWMout : std_logic;
variable v_intPWMvalue : integer range 0 to 8192;
variable v_updatePWMvalue : std_logic;
variable v_count : integer range 0 to 65535;
begin
if i_Reset = '0' then
-- Asynchronous reset
o_PWM <= '0';
s_PWMCounter <= 0;
v_updatePWMvalue := '0';
elsif rising_edge(i_Clock) then
-- Increment the PWM counter
if s_PWMCounter < i_PWM_Freq_Div - 1 then
s_PWMCounter <= s_PWMCounter + 1;
else
s_PWMCounter <= 0;
if rising_edge(i_pulse_run) then
v_count := 0; -- Error
end if;
if i_pwm_pulse_en = '1' AND v_count < i_pulse_count +1 then
v_count := v_count + 1;
end if;
end if;
..
..
end if;
end process CTRL;