📄 maqled.vhd
字号:
-- Maquina de estados que representa en el led de 7 segmentos
-- el tama駉 de la mascara usada en el proceso.
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity maqled is
port (
guardada: in STD_LOGIC; -- Indica que se termino de
-- guardar la imagen original
-- por parte del bloque 'topcom'
--finproceso: in STD_LOGIC; -- Indica que se termino de
-- insertar la nueva imagen
clk: in STD_LOGIC;
GReset: in STD_LOGIC;
TamMasc: in STD_LOGIC_VECTOR (1 downto 0); -- tipo de proceso
Segmento: out STD_LOGIC_VECTOR (6 downto 0) -- Lineas hacia el
-- led de 7 segmentos
);
end maqled;
architecture maqled_arch of maqled is
type estado is (reposo, queorden,procesbin, proceshalf);
signal est_actual, est_sig: estado;
begin
ledcomb: process (est_actual,TamMasc,guardada)
begin
case est_actual is
when reposo=>
segmento <="1110111"; -- En reposo se representa un 0
if (guardada='1') then
est_sig<=queorden;
elsif (tammasc="01") then -- Si pide binarizaci髇,
-- habiendo realizado ya
-- otro procesamiento antes
est_sig<=procesbin;
elsif (tammasc="10") then -- Si pide halftonning,
-- habiendo realizadao ya
-- otro procesamiento antes
est_sig<=proceshalf;
else
est_sig<=reposo;
end if;
when queorden=>
segmento <="1101101"; -- Representa la letra 'E' para
-- indicar que Espera una orden
if (tammasc="00") then -- Si aun no pide nada
est_sig<=queorden;
elsif (tammasc="01") then -- Si la primera vez
-- pide binarizaci髇
est_sig<=procesbin;
elsif (tammasc="10") then -- Si primera vez
-- pide halftonning
est_sig<=proceshalf;
else
est_sig<=queorden; -- Si la orden no se ha
-- dado bien, seguimos
-- esperando
end if;
when procesbin=>
segmento<="0010010"; -- Masc. de 1x1, y se
-- pone '1' en el led
if (guardada='1') then
est_sig<=queorden; -- Espera otro proceso
elsif (tammasc="10") then
est_sig<=proceshalf;
else
est_sig<=procesbin;
end if;
when proceshalf=>
segmento<="1011101"; -- Masc. de 2x2, y se
-- pone '2' en el led
if (guardada='1') then
est_sig<=queorden; -- Espera otro proceso
elsif (tammasc="01") then
est_sig<=procesbin;
else
est_sig<=proceshalf;
end if;
end case;
end process ledcomb;
ledsec: process(clk,GReset)
begin
if (GReset='1') then
est_actual<=reposo;
elsif (clk'event and clk='1') then
est_actual<=est_sig;
end if;
end process ledsec;
end maqled_arch;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -