Comp Arch Elevator
Comp Arch Elevator
----------------------------------------------------------------------------------- Company:
-- Engineer:
--- Create Date:
11:18:40 04/28/2014
-- Design Name:
-- Module Name:
top_level - Behavioral
-- Project Name:
-- Target Devices:
-- Tool versions:
-- Description:
--- Dependencies:
--- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
----------------------------------------------------------------------------------library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity top_level is
Port ( clk : in STD_LOGIC;
floorin : in STD_LOGIC_VECTOR (7 downto 0);
floorout : out STD_LOGIC_VECTOR (7 downto 0));
end top_level;
in_port<="00000001";
end if;
end if;
if(port_id="00000011") then
if (floorin(3)='0' ) then
in_port<="00000000";
end if;
if (floorin(3)='1' ) then
in_port<="00000001";
end if;
end if;
if(port_id="00000100") then
if (floorin(4)='0' ) then
in_port<="00000000";
end if;
if (floorin(4)='1' ) then
in_port<="00000001";
end if;
end if;
if(port_id="00000101") then
if (floorin(5)='0' ) then
in_port<="00000000";
end if;
if (floorin(5)='1' ) then
in_port<="00000001";
end if;
end if;
if(port_id="00000110") then
if (floorin(6)='0' ) then
in_port<="00000000";
end if;
if (floorin(6)='1' ) then
in_port<="00000001";
end if;
end if;
if(port_id="00000111") then
if (floorin(7)='0' ) then
in_port<="00000000";
end if;
if (floorin(7)='1' ) then
in_port<="00000001";
end if;
end if;
if(port_id="00001000") then
if (t1="00000000") then
if (floorin(7 downto 1)="0000000") then
in_port<="00000000";
else
in_port<="00000001";
end if;
end if;
if (t1="00000001") then
if (floorin(7 downto 2)="000000") then
in_port<="00000000";
else
in_port<="00000001";
end if;
end if;
if (t1="00000010") then
if (floorin(7 downto 3)="00000") then
in_port<="00000000";
else
in_port<="00000001";
end if;
end if;
if (t1="00000011") then
if (floorin(7 downto 4)="0000") then
in_port<="00000000";
else
in_port<="00000001";
end if;
end if;
if (t1="00000100") then
if (floorin(7 downto 5)="000") then
in_port<="00000000";
else
in_port<="00000001";
end if;
end if;
if (t1="00000101") then
if (floorin(7 downto 6)="00") then
in_port<="00000000";
else
in_port<="00000001";
end if;
end if;
if (t1="00000110") then
if (floorin(7)='0') then
in_port<="00000000";
else
in_port<="00000001";
end if;
end if;
if (t1="00000111") then
in_port<="00000000";
end if;
end if;
if(port_id="00001001") then
if (t1="00000000") then
in_port<="00000000";
end if;
if (t1="00000001") then
if (floorin(0)='0') then
in_port<="00000000";
else
in_port<="00000001";
end if;
end if;
if (t1="00000010") then
if (floorin(1 downto 0)="00") then
in_port<="00000000";
else
in_port<="00000001";
end if;
end if;
if (t1="00000011") then
if (floorin(2 downto 0)="000") then
in_port<="00000000";
else
in_port<="00000001";
end if;
end if;
if (t1="00000100") then
if (floorin(3 downto 0)="0000") then
in_port<="00000000";
else
in_port<="00000001";
end if;
end if;
if (t1="00000101") then
if (floorin(4 downto 0)="00000") then
in_port<="00000000";
else
in_port<="00000001";
end if;
end if;
if (t1="00000110") then
if (floorin(5 downto 0)="000000") then
in_port<="00000000";
else
in_port<="00000001";
end if;
end if;
if (t1="00000111") then
if (floorin(6 downto 0)="0000000") then
in_port<="00000000";
else
in_port<="00000001";
end if;
end if;
end if;
end process input_ports;
------------------------------------------------------------------------- KCPSM3 Define output ports
------------------------------------------------------------------------- adding the output registers to the processor at address 80 hex
output_ports: process(clk)
begin
if (port_id="00010000") then
floorout <= out_port;
end if;
if (port_id="00010001") then
t1 <= out_port;
end if;
end process output_ports;
end Behavioral;
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
JUMP l02
l01: LOAD sf,99
LOAD sf,99
l02: CALL p1
LOAD sb,00
ADD sa,01
COMPARE s1,00
JUMP Z,l11
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
JUMP l12
l11: LOAD sf,99
LOAD sf,99
l12:CALL p1
COMPARE sb,00
JUMP Z,l13
LOAD se,02
AND se,sd
COMPARE se,00
JUMP Z,l14
SUB sa,01
JUMP l0
l14: LOAD sb,00
ADD sa,01
JUMP l2
l13: LOAD se,01
AND se,sd
COMPARE se,00
JUMP Z, l15
ADD sa,01
JUMP l2
l15: LOAD sb,01
SUB sa,01
JUMP l0
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
JUMP l22
l21: LOAD sf,99
LOAD sf,99
l22:CALL p1
COMPARE sb,00
JUMP Z,l23
LOAD se,02
AND se,sd
COMPARE se,00
JUMP Z,l24
SUB sa,01
JUMP l1
l24: LOAD sb,00
ADD sa,01
JUMP l3
l23: LOAD se,01
AND se,sd
COMPARE se,00
JUMP Z, l25
ADD sa,01
JUMP l3
l25: LOAD sb,01
SUB sa,01
JUMP l1
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
JUMP l32
l31: LOAD sf,99
LOAD sf,99
l32:CALL p1
COMPARE sb,00
JUMP Z,l33
LOAD se,02
AND se,sd
COMPARE se,00
JUMP Z,l34
SUB sa,01
JUMP l2
l34: LOAD sb,00
ADD sa,01
JUMP l4
l33: LOAD se,01
AND se,sd
COMPARE se,00
JUMP Z, l35
ADD sa,01
JUMP l4
l35: LOAD sb,01
SUB sa,01
JUMP l2
JUMP Z,l41
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
JUMP l42
l41: LOAD sf,99
LOAD sf,99
l42:CALL p1
COMPARE sb,00
JUMP Z,l43
LOAD se,02
AND se,sd
COMPARE se,00
JUMP Z,l44
SUB sa,01
JUMP l3
l44: LOAD sb,00
ADD sa,01
JUMP l5
l43: LOAD se,01
AND se,sd
COMPARE se,00
JUMP Z, l45
ADD sa,01
JUMP l5
l45: LOAD sb,01
SUB sa,01
JUMP l3
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
JUMP l52
l51: LOAD sf,99
LOAD sf,99
l52:CALL p1
COMPARE sb,00
JUMP Z,l53
LOAD se,02
AND se,sd
COMPARE se,00
JUMP Z,l54
SUB sa,01
JUMP l4
l54: LOAD sb,00
ADD sa,01
JUMP l6
l53: LOAD se,01
AND se,sd
COMPARE se,00
JUMP Z, l55
ADD sa,01
JUMP l6
l55: LOAD sb,01
SUB sa,01
JUMP l4
LOAD sf,99
LOAD sf,99
LOAD sf,99
JUMP l62
l61: LOAD sf,99
LOAD sf,99
l62:CALL p1
COMPARE sb,00
JUMP Z,l63
LOAD se,02
AND se,sd
COMPARE se,00
JUMP Z,l64
SUB sa,01
JUMP l5
l64: LOAD sb,00
ADD sa,01
JUMP l7
l63: LOAD se,01
AND se,sd
COMPARE se,00
JUMP Z, l65
ADD sa,01
JUMP l7
l65: LOAD sb,01
SUB sa,01
JUMP l5
JUMP Z,l71
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
LOAD sf,99
JUMP l72
l71: LOAD sf,99
LOAD sf,99
l72: CALL p1
LOAD sb,01
SUB sa,01
JUMP l6
p1:
OUTPUT sa, 11
INPUT sc,08
COMPARE sc,00
JUMP Z,p11
JUMP p13
p11: INPUT sc,09
COMPARE sc,00
JUMP Z, p12
LOAD sd,02 ;right empty left full
RETURN
p12: JUMP p1
p13: INPUT sc,09
COMPARE sc,00
JUMP Z,p14
LOAD sd,03 ;both right and left full
RETURN
p14:LOAD sd,01 ;right full,left empty
RETURN
Simulation:
Schematic: