process(clk, reset_n) --계속 변하는 데이터에서 처음 한번만 클럭 펄스 발생
begin
if reset_n = '0' then
data_valid_d <= '0';
pulse <= '0';
pulse_locked <= '0';
elsif rising_edge(clk) then
data_valid_d <= data_valid;
if (data_valid = '1' and data_valid_d = '0' and pulse_locked = '0') then
pulse <= '1';
pulse_locked <= '1'; -- 한 번 펄스 발생 후 잠금
else
pulse <= '0';
end if;
end if;
end process;