📄 sincronismo.vhd
字号:
-----------------------------------------
---- Proceso de sincronismo de pantalla
-----------------------------------------
LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
USE IEEE.std_logic_arith.all;
USE IEEE.std_logic_unsigned.all;
ENTITY sincronismo_pantalla is
PORT(
href: IN std_logic;
resetz:IN std_logic;
clk: IN std_logic;
configuracion_ok: IN std_logic;
ODD: IN std_logic;
llc: IN std_logic;
habilit_adapt:OUT std_logic
);
END ENTITY sincronismo_pantalla;
ARCHITECTURE comportamiento OF sincronismo_pantalla IS
TYPE estado IS (reposo, sinc1, sinc2,preparado_capturar,espera_llc);
SIGNAL actual, futuro: estado;
SIGNAL p_habilitador:std_logic;
BEGIN
--Proceso de sincronismo
sinc: process (resetz, clk)
BEGIN
if(resetz='0') then -- Reset a nivel bajo
actual <= reposo;
habilit_adapt<='0';
elsif(clk'event and clk = '1')then
actual <= futuro;
habilit_adapt<=p_habilitador;
end if;
END process sinc;
p1: PROCESS(actual,configuracion_ok,llc,href, ODD)
BEGIN
CASE actual IS
WHEN reposo =>
p_habilitador<='0';
if(configuracion_ok='1')then --Espera a que este bien configurado
futuro <= sinc1;
else
futuro <= reposo;
end if;
WHEN sinc1 =>
p_habilitador<='0';
if(ODD = '0')then --ODD=0 marca la mitad de la pantalla
futuro <= sinc2;
else
futuro <= sinc1;
end if;
WHEN sinc2 =>
p_habilitador<='0';
if(ODD = '1')then --ODD=1 marca el inicio de la pantalla
futuro <= preparado_capturar;
else
futuro <= sinc2;
end if;
WHEN preparado_capturar=>
if(href='1' and llc='1')then --Estos dos estados generan un pulso
futuro<=espera_llc; --con cada flanco de llc q pertenezca
p_habilitador<='1'; --a la linea.
else
futuro<=preparado_capturar;
p_habilitador<='0';
end if;
WHEN espera_llc=>
p_habilitador<='0';
if(llc='0')then
futuro<=preparado_capturar;
else
futuro<=espera_llc;
end if;
end case;
end PROCESS p1;
end architecture comportamiento;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -