architecture Behavior1 of PLA is type PLA_Matrix is array ( Integer range 0 to 9, Integer range 0 to 6 ) of Bit ; constant PLA_Outputs : PLA_Matrix := ( ('0','0','0','0','0','1','0'), ('0','0','0','0','0','1','0'), ('0','1','1','0','0','1','0'), ('0','1','0','0','1','1','0'), ('1','1','1','0','1','1','0'), ('1','1','0','1','0','0','0'), ('1','0','1','1','0','0','0'), ('1','0','1','1','0','0','0'), ('1','0','0','1','0','0','1'), ('0','0','1','1','0','0','1') ); begin process variable New_State: Integer; begin if In0='0' and In3='0' and In4='0' then NewState := 0; elsif In1='0' and In3='0' and In4='0' then NewState := 1; elsif In0='1' and In1='1' and In3='0' and In4='0' then NewState := 2; elsif In2='0' and In3='0' and In4='1' then NewState := 3; elsif In2='1' and In3='0' and In4='1' then NewState := 4; elsif In0='1' and In1 = '0' and In3='1' and In4='1' then NewState := 5; elsif In0='0' and In1='0' and In3='1' and In4='1' then NewState := 6; elsif In1='1' and In3='1' and In4='1' then NewState := 7; elsif In2='0' and In3='1' and In4='0' then NewState := 8; elsif In2='1' and In3='1' and In4='1' then NewState := 9; else assert (FALSE) report "Error in PLA" severity Error; end if; Out0 <= PLA_Outputs(New_State,0); Out1 <= PLA_Outputs(New_State,1); Out2 <= PLA_Outputs(New_State,2); Out3 <= PLA_Outputs(New_State,3); Out4 <= PLA_Outputs(New_State,4); Out5 <= PLA_Outputs(New_State,5); Out6 <= PLA_Outputs(New_State,6); wait on In0, In1, In2, In3, In4; end process; end Behavior1;