Skip to content

Instantly share code, notes, and snippets.

@tonussi
Last active December 16, 2015 16:39
Show Gist options
  • Save tonussi/5464196 to your computer and use it in GitHub Desktop.
Save tonussi/5464196 to your computer and use it in GitHub Desktop.
arbitro
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY arbitro IS
PORT
(
Clock, Reset: IN STD_LOGIC;
r: IN STD_LOGIC_VECTOR (1 TO 3);
c: OUT STD_LOGIC_VECTOR (1 TO 3)
);
END arbitro;
ARCHITECTURE comportamento OF arbitro IS
TYPE Tipo_estado IS (BD, D1, D2, D3);
SIGNAL y: Tipo_estado;
BEGIN
PROCESS (Reset, Clock)
BEGIN
IF Reset = '1' THEN y <= BD;
ELSIF (Clock'EVENT AND Clock = '1') THEN
CASE y IS
WHEN BD =>
IF r(1)= '1' THEN y <= D1;
ELSIF r(2)= '1' THEN y <= D2;
ELSIF r(3)= '1' THEN y <= D3;
ELSE y <= BD;
END IF ;
WHEN D1 =>
IF r(1)= '1' THEN y <= D1;
ELSE r(1) = '0';
END IF;
WHEN D2 =>
IF r(2)= '1' AND r(1)= '0' THEN y <= D2;
ELSE r(2) = '0';
END IF;
WHEN D3 =>
IF r(3)= '1' AND r(2)= '0' AND r(1)= '0' THEN y <= D3;
ELSE r(1) = '0';
END IF;
END CASE;
END IF;
END PROCESS;
WITH y SELECT
c <= "000" WHEN BD,
"001" WHEN D1,
"010" WHEN D2,
"100" WHEN D3;
END comportamento;
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY arbitro IS
PORT
(
Clock, Reset: IN STD_LOGIC;
r: IN STD_LOGIC_VECTOR (1 TO 3);
c: OUT STD_LOGIC_VECTOR (1 TO 3)
);
END arbitro;
ARCHITECTURE comportamento OF arbitro IS
TYPE Tipo_estado IS (BD, D1, D2, D3);
SIGNAL y: Tipo_estado;
BEGIN
PROCESS (Reset, Clock)
BEGIN
IF Reset = '1' THEN y <= BD;
ELSIF (Clock'EVENT AND Clock = '1') THEN
CASE y IS
WHEN BD =>
IF r(1)= '1' THEN y <= D1;
ELSIF r(2)= '1' THEN y <= D2;
ELSIF r(3)= '1' THEN y <= D3;
ELSE y <= BD;
END IF ;
WHEN D1 =>
IF r(1)= '1' THEN y <= D1;
ELSE y <= BD;
END IF;
WHEN D2 =>
IF r(1)= '0' AND r(2)= '1' THEN y <= D2;
ELSE y <= BD;
END IF;
WHEN D3 =>
IF r(1)= '0' AND r(2)= '0' AND r(3)= '1' THEN y <= D3;
ELSE y <= BD;
END IF;
END CASE;
END IF;
END PROCESS;
WITH y SELECT
c <= "000" WHEN BD,
"001" WHEN D1,
"010" WHEN D2,
"100" WHEN D3;
END comportamento;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment