entity project4 is
Port ( clk : in STD_LOGIC;
reset : in STD_LOGIC;
x : in STD_LOGIC_VECTOR (1 downto 0);
myoutputs : out STD_LOGIC_VECTOR (2 downto 0));
end project4;
architecture Behavioral of project4 is
type state_type is (s0,s1,s2,s3,s4,s5,s6,s7);
signal state: state_type;
begin
process1: process(clk,reset)
begin
if (reset ='0') THEN state <= s0;
myoutputs <= "000";
ELSE IF (clk'EVENT AND clk='1') THEN
case state is
when s0 =>
if (x="00") THEN
state <= s1;
myoutputs <= "001";
ELSE IF (x="01") THEN
state <= s7;
myoutputs <= "111";
ELSE IF (x="10") THEN
state <= s2;
myoutputs <= "010";
ELSE
state <=s4;
myoutputs <= "100";
END IF;
when s1 =>
if (x="00") THEN
state <= s2;
myoutputs <="010";
ELSE IF (x ="01") THEN
state <= s0;
myoutputs <= "000";
ELSE IF (x ="10") THEN
state <=s0;
myoutputs <= "000";
ELSE
state <= s0;
myoutputs <="000";
END IF;
when s2 =>
if (x="00") THEN
state <= s3;
myoutputs <="011";
ELSE IF (x="01") THEN
state <= s1;
myoutputs <="001";
ELSE IF (x="10") THEN
state <=s5;
myoutputs <="110";
ELSE
state <=s3;
myoutputs <="011";
END IF;
when s3 =>
if (x="00") THEN
state <=s4;
myoutputs <="100";
ELSE IF (x="01") THEN
state <= s2;
myoutputs <="010";
ELSE IF (x="10") THEN
state <= s1;
myoutputs <= "001";
ELSE
state <=s1;
myoutputs <= "001";
END IF;
when s4 =>
if (x="00") THEN
state <=s5;
myoutputs <="101";
ELSE IF (x="01") THEN
state <= s3;
myoutputs <="011";
ELSE IF (x="10") THEN
state <= s5;
myoutputs <="101";
ELSE
state <= s5;
myoutputs <="101";
END IF;
when s5 =>
if (x="00") THEN
state <= s6;
myoutputs <="110";
ELSE IF (x="01") THEN
state <= s4;
myoutputs <= "100";
ELSE IF (x="10") THEN
state <= s7;
myoutputs <= "111";
ELSE
state <= s7;
myoutputs <= "111";
END IF;
when s6 =>
if (x="00") THEN
state <= s7;
myoutputs <= "111";
ELSE IF (x="01") THEN
state <= s5;
myoutputs <="101";
ELSE IF (x="10") THEN
state <= s4;
myoutputs <="100";
ELSE
state <= s2;
myoutputs <="010";
END IF;
when s7 =>
if (x="00") THEN
state <= s0;
myoutputs <="000";
ELSE IF (x="01") THEN
state <= s6;
myoutputs <="110";
ELSE IF (x="10") THEN
state <= s3;
myoutputs <="011";
ELSE
state <= s6;
myoutputs <= "110";
END IF;
end case;
end process process1;
process2: process(state)
begin
case state is
when s0 => myoutputs <= "000";
when s1 => myoutputs <= "001";
when s2 => myoutputs <= "010";
when s3 => myoutputs <= "011";
when s4 => myoutputs <= "100";
when s5 => myoutputs <= "101";
when s6 => myoutputs <= "110";
when s7 => myoutputs <= "111";
end case;
end process process2;
end Behavioral;
ZW50aXR5IHByb2plY3Q0IGlzCiAgICBQb3J0ICggY2xrIDogaW4gIFNURF9MT0dJQzsKICAgICAgICAgICByZXNldCA6IGluICBTVERfTE9HSUM7CiAgICAgICAgICAgeCA6IGluICBTVERfTE9HSUNfVkVDVE9SICgxIGRvd250byAwKTsKICAgICAgICAgICBteW91dHB1dHMgOiBvdXQgIFNURF9MT0dJQ19WRUNUT1IgKDIgZG93bnRvIDApKTsKZW5kIHByb2plY3Q0OwoKYXJjaGl0ZWN0dXJlIEJlaGF2aW9yYWwgb2YgcHJvamVjdDQgaXMKdHlwZSBzdGF0ZV90eXBlIGlzIChzMCxzMSxzMixzMyxzNCxzNSxzNixzNyk7CnNpZ25hbCBzdGF0ZTogc3RhdGVfdHlwZTsKCmJlZ2luCnByb2Nlc3MxOiBwcm9jZXNzKGNsayxyZXNldCkKYmVnaW4KICAgICBpZiAocmVzZXQgPScwJykgVEhFTiBzdGF0ZSA8PSBzMDsKCSAgbXlvdXRwdXRzIDw9ICIwMDAiOwpFTFNFIElGIChjbGsnRVZFTlQgQU5EIGNsaz0nMScpIFRIRU4KICAgIGNhc2Ugc3RhdGUgaXMKCSB3aGVuIHMwID0+CgkgICAgICAgICAgIGlmICh4PSIwMCIpIFRIRU4KCQkJCSAgc3RhdGUgPD0gczE7CgkJCQkgIG15b3V0cHV0cyA8PSAiMDAxIjsKCQkJCSAgRUxTRSBJRiAoeD0iMDEiKSBUSEVOCgkJCQkgIHN0YXRlIDw9IHM3OwoJCQkJICBteW91dHB1dHMgPD0gIjExMSI7CgkJCQkgIEVMU0UgSUYgKHg9IjEwIikgVEhFTgoJCQkJICBzdGF0ZSA8PSBzMjsKCQkJCSAgbXlvdXRwdXRzIDw9ICIwMTAiOwoJCQkJICBFTFNFCgkJCQkgIHN0YXRlIDw9czQ7CgkJCQkgIG15b3V0cHV0cyA8PSAiMTAwIjsKCSAgRU5EIElGOwoJICAKCSAgd2hlbiBzMSA9PgoJICAgICAgICAgICAgaWYgKHg9IjAwIikgVEhFTgoJCQkJCXN0YXRlIDw9IHMyOwoJCQkJCW15b3V0cHV0cyA8PSIwMTAiOwoJCQkJCUVMU0UgSUYgKHggPSIwMSIpIFRIRU4KCQkJCQlzdGF0ZSA8PSBzMDsKCQkJCQlteW91dHB1dHMgPD0gIjAwMCI7CgkJCQkJRUxTRSBJRiAoeCA9IjEwIikgVEhFTgoJCQkJCXN0YXRlIDw9czA7CgkJCQkJbXlvdXRwdXRzIDw9ICIwMDAiOwoJCQkJCUVMU0UKCQkJCQlzdGF0ZSA8PSBzMDsKCQkJCQlteW91dHB1dHMgPD0iMDAwIjsKCQlFTkQgSUY7CgkJCgkJd2hlbiBzMiA9PgoJCSAgICAgICAgICBpZiAoeD0iMDAiKSBUSEVOCgkJCQkJIHN0YXRlIDw9IHMzOwoJCQkJCSBteW91dHB1dHMgPD0iMDExIjsKCQkJCQkgRUxTRSBJRiAoeD0iMDEiKSBUSEVOCgkJCQkJIHN0YXRlIDw9IHMxOwoJCQkJCSBteW91dHB1dHMgPD0iMDAxIjsKCQkJCQkgRUxTRSBJRiAoeD0iMTAiKSBUSEVOCgkJCQkJIHN0YXRlIDw9czU7CgkJCQkJIG15b3V0cHV0cyA8PSIxMTAiOwoJCQkJCSBFTFNFCgkJCQkJIHN0YXRlIDw9czM7CgkJCQkJIG15b3V0cHV0cyA8PSIwMTEiOwoJCUVORCBJRjsKCQkKCQl3aGVuIHMzID0+CgkJICAgICAgICAgIGlmICh4PSIwMCIpIFRIRU4KCQkJCQkgc3RhdGUgPD1zNDsKCQkJCQkgbXlvdXRwdXRzIDw9IjEwMCI7CgkJCQkJIEVMU0UgSUYgKHg9IjAxIikgVEhFTgoJCQkJCSBzdGF0ZSA8PSBzMjsKCQkJCQkgbXlvdXRwdXRzIDw9IjAxMCI7CgkJCQkJIEVMU0UgSUYgKHg9IjEwIikgVEhFTgoJCQkJCSBzdGF0ZSA8PSBzMTsKCQkJCQkgbXlvdXRwdXRzIDw9ICIwMDEiOwoJCQkJCSBFTFNFCgkJCQkJIHN0YXRlIDw9czE7CgkJCQkJIG15b3V0cHV0cyA8PSAiMDAxIjsKCQlFTkQgSUY7CgogICAgICB3aGVuIHM0ID0+CiAgICAgICAgICAgICAgICBpZiAoeD0iMDAiKSBUSEVOCiAgICAgICAgICAgICAgICBzdGF0ZSA8PXM1OwogICAgICAgICAgICAgICAgbXlvdXRwdXRzIDw9IjEwMSI7CgkJCQkJIEVMU0UgSUYgKHg9IjAxIikgVEhFTgoJCQkJCSBzdGF0ZSA8PSBzMzsKCQkJCQkgbXlvdXRwdXRzIDw9IjAxMSI7CgkJCQkJIEVMU0UgSUYgKHg9IjEwIikgVEhFTgoJCQkJCSBzdGF0ZSA8PSBzNTsKCQkJCQkgbXlvdXRwdXRzIDw9IjEwMSI7CgkJCQkJIEVMU0UKCQkJCQkgc3RhdGUgPD0gczU7CgkJCQkJIG15b3V0cHV0cyA8PSIxMDEiOwoJCUVORCBJRjsKCQkKCQl3aGVuIHM1ID0+CgkJICAgICAgICAgIGlmICh4PSIwMCIpIFRIRU4KCQkJCQkgc3RhdGUgPD0gczY7CgkJCQkJIG15b3V0cHV0cyA8PSIxMTAiOwoJCQkJCSBFTFNFIElGICh4PSIwMSIpIFRIRU4KCQkJCQkgc3RhdGUgPD0gczQ7CgkJCQkJIG15b3V0cHV0cyA8PSAiMTAwIjsKCQkJCQkgRUxTRSBJRiAoeD0iMTAiKSBUSEVOCgkJCQkJIHN0YXRlIDw9IHM3OwoJCQkJCSBteW91dHB1dHMgPD0gIjExMSI7CgkJCQkJIEVMU0UKCQkJCQkgc3RhdGUgPD0gczc7CgkJCQkJIG15b3V0cHV0cyA8PSAiMTExIjsKCQlFTkQgSUY7CgkJCgkJd2hlbiBzNiA9PgoJCSAgICAgICAgICBpZiAoeD0iMDAiKSBUSEVOCgkJCQkJIHN0YXRlIDw9IHM3OwoJCQkJCSBteW91dHB1dHMgPD0gIjExMSI7CgkJCQkJIEVMU0UgSUYgKHg9IjAxIikgVEhFTgoJCQkJCSBzdGF0ZSA8PSBzNTsKCQkJCQkgbXlvdXRwdXRzIDw9IjEwMSI7CgkJCQkJIEVMU0UgSUYgKHg9IjEwIikgVEhFTgoJCQkJCSBzdGF0ZSA8PSBzNDsKCQkJCQkgbXlvdXRwdXRzIDw9IjEwMCI7CgkJCQkJIEVMU0UKCQkJCQkgc3RhdGUgPD0gczI7CgkJCQkJIG15b3V0cHV0cyA8PSIwMTAiOwoJCUVORCBJRjsKCQkKCQl3aGVuIHM3ID0+CgkJICAgICAgICAgIGlmICh4PSIwMCIpIFRIRU4KCQkJCQkgc3RhdGUgPD0gczA7CgkJCQkJIG15b3V0cHV0cyA8PSIwMDAiOwoJCQkJCSBFTFNFIElGICh4PSIwMSIpIFRIRU4KCQkJCQkgc3RhdGUgPD0gczY7CgkJCQkJIG15b3V0cHV0cyA8PSIxMTAiOwoJCQkJCSBFTFNFIElGICh4PSIxMCIpIFRIRU4KCQkJCQkgc3RhdGUgPD0gczM7CgkJCQkJIG15b3V0cHV0cyA8PSIwMTEiOwoJCQkJCSBFTFNFCgkJCQkJIHN0YXRlIDw9IHM2OwoJCQkJCSBteW91dHB1dHMgPD0gIjExMCI7CgkJRU5EIElGOwoJCWVuZCBjYXNlOwoJCWVuZCBwcm9jZXNzIHByb2Nlc3MxOwoJCQpwcm9jZXNzMjogcHJvY2VzcyhzdGF0ZSkKYmVnaW4KICAgICAgY2FzZSBzdGF0ZSBpcwoJCXdoZW4gczAgPT4gbXlvdXRwdXRzIDw9ICIwMDAiOwoJCXdoZW4gczEgPT4gbXlvdXRwdXRzIDw9ICIwMDEiOwoJCXdoZW4gczIgPT4gbXlvdXRwdXRzIDw9ICIwMTAiOwoJCXdoZW4gczMgPT4gbXlvdXRwdXRzIDw9ICIwMTEiOwoJCXdoZW4gczQgPT4gbXlvdXRwdXRzIDw9ICIxMDAiOwoJCXdoZW4gczUgPT4gbXlvdXRwdXRzIDw9ICIxMDEiOwoJCXdoZW4gczYgPT4gbXlvdXRwdXRzIDw9ICIxMTAiOwoJCXdoZW4gczcgPT4gbXlvdXRwdXRzIDw9ICIxMTEiOwoJCWVuZCBjYXNlOwplbmQgcHJvY2VzcyBwcm9jZXNzMjsKCmVuZCBCZWhhdmlvcmFsOw==