OpenCores
URL https://opencores.org/ocsvn/distributed_intelligence/distributed_intelligence/trunk

Subversion Repositories distributed_intelligence

[/] [distributed_intelligence/] [trunk/] [SRC/] [mini_uP_x16.vhd] - Diff between revs 4 and 5

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 4 Rev 5
Line 42... Line 42...
           prev_uP : in  STD_LOGIC_VECTOR (7 downto 0);
           prev_uP : in  STD_LOGIC_VECTOR (7 downto 0);
           next_uP : out  STD_LOGIC_VECTOR (7 downto 0));
           next_uP : out  STD_LOGIC_VECTOR (7 downto 0));
end mini_uP_x16;
end mini_uP_x16;
 
 
architecture Behavioral of mini_uP_x16 is
architecture Behavioral of mini_uP_x16 is
 
        -- Data bus
        signal dataBus1, dataBus2: std_logic_vector(15 downto 0); -- For ALU data1 and data2
        signal dataBus1, dataBus2: std_logic_vector(15 downto 0); -- For ALU data1 and data2
        signal accumulator: std_logic_vector(15 downto 0);
 
        signal mainDataBus: std_logic_vector(15 downto 0);
        signal mainDataBus: std_logic_vector(15 downto 0);
 
 
 
        -- ALU signals (driven by both the ALU and the identifier)
 
        signal accumulator: std_logic_vector(15 downto 0);
 
        signal ALUoverflow: std_logic;
        signal opCode:  ALU_OPCODE;
        signal opCode:  ALU_OPCODE;
 
 
 
        -- Control signals (driven by the controler)
        signal register_control:  std_logic_vector(7 downto 0); -- re1 we1 re2 we2 re3 we3 re4 we4
        signal register_control:  std_logic_vector(7 downto 0); -- re1 we1 re2 we2 re3 we3 re4 we4
        signal stack_control :  std_logic_vector(1 downto 0); -- en push/pop
        signal stack_control :  std_logic_vector(1 downto 0); -- en push/pop
        signal PC_control :  std_logic;
        signal PC_control :  std_logic;
        signal inc_PC:  std_logic;
        signal inc_PC:  std_logic;
 
 
 
        -- Id signal (driven by the identifier)
        signal uP_id: std_logic_vector(7 downto 0);
        signal uP_id: std_logic_vector(7 downto 0);
 
 
 
        -- Watchdog (driven by both the watchdog and the controler)
        signal watchdog_left: std_logic_vector(15 downto 0);
        signal watchdog_left: std_logic_vector(15 downto 0);
        signal watchdog_rst_value: std_logic_vector(15 downto 0);
        signal watchdog_rst_value: std_logic_vector(15 downto 0);
        signal watchdog_rst: std_logic;
        signal watchdog_rst: std_logic;
        signal watchdog_control : std_logic_vector(1 downto 0);
        signal watchdog_control : std_logic_vector(1 downto 0);
 
 
Line 127... Line 133...
          dataA : out  STD_LOGIC_VECTOR (15 downto 0);
          dataA : out  STD_LOGIC_VECTOR (15 downto 0);
          op : in  ALU_OPCODE;
          op : in  ALU_OPCODE;
                         overflow: out STD_LOGIC );
                         overflow: out STD_LOGIC );
        end component;
        end component;
begin
begin
 
        -- The program counter
        program_counter: binary_counter_x16
        program_counter: binary_counter_x16
                port map(       clk => clk,
                port map(       clk => clk,
                                                set => PC_control,
                                                set => PC_control,
                                                inc => inc_PC,
                                                inc => inc_PC,
                                                set_value => mainDataBus,
                                                set_value => mainDataBus,
                                                count => PC);
                                                count => PC);
 
 
 
        -- The watchdog and its access to the main databus
        watchdog_re: bus_access_x16
        watchdog_re: bus_access_x16
                port map (      clk => clk,
                port map (      clk => clk,
                                                en      => watchdog_control(1),
                                                en      => watchdog_control(1),
                                                dataRead => mainDataBus,
                                                dataRead => mainDataBus,
                                                dataWrite => watchdog_rst_value);
                                                dataWrite => watchdog_rst_value);
Line 155... Line 163...
                                                myId => uP_id,
                                                myId => uP_id,
 
 
                                                watchdog_left => watchdog_left,
                                                watchdog_left => watchdog_left,
                                                watchdog_rst_value => watchdog_rst_value,
                                                watchdog_rst_value => watchdog_rst_value,
                                                watchdog_rst => watchdog_rst);
                                                watchdog_rst => watchdog_rst);
 
 
 
        -- The stack
        stack: stack_x16
        stack: stack_x16
                generic map( STACK_SIZE => 8)
                generic map( STACK_SIZE => 8)
                port map(       clk => clk,
                port map(       clk => clk,
                                                reset => reset,
                                                reset => reset,
                                                dataPort => mainDataBus,
                                                dataPort => mainDataBus,
                                                push => stack_control(1),
                                                push => stack_control(1),
                                                pop => stack_control(0));
                                                pop => stack_control(0));
 
 
        -- The 4 Registers
        -- The 4 Registers
        R1: bus_register_x16
        R1: bus_register_x16
                port (  clk=>clk ,
                port map (      clk=>clk ,
                                        re=>register_control(0),
                                        re=>register_control(0),
                                        we=>register_control(1),
                                        we=>register_control(1),
                                        reset=>reset,
                                        reset=>reset,
                                        dataport=> mainDataBus);
                                        dataport=> mainDataBus);
 
 
        R2: bus_register_x16
        R2: bus_register_x16
                port (  clk=>clk ,
                port map (      clk=>clk ,
                                        re=>register_control(2),
                                        re=>register_control(2),
                                        we=>register_control(3),
                                        we=>register_control(3),
                                        reset=>reset,
                                        reset=>reset,
                                        dataport=> mainDataBus);
                                        dataport=> mainDataBus);
 
 
        R3: bus_register_x16
        R3: bus_register_x16
                port (  clk=>clk ,
                port map (      clk=>clk ,
                                        re=>register_control(4),
                                        re=>register_control(4),
                                        we=>register_control(5),
                                        we=>register_control(5),
                                        reset=>reset,
                                        reset=>reset,
                                        dataport=> mainDataBus);
                                        dataport=> mainDataBus);
 
 
        R4: bus_register_x16
        R4: bus_register_x16
                port (  clk=>clk ,
                port map (      clk=>clk ,
                                        re=>register_control(6),
                                        re=>register_control(6),
                                        we=>register_control(7),
                                        we=>register_control(7),
                                        reset=>reset,
                                        reset=>reset,
                                        dataport=> mainDataBus);
                                        dataport=> mainDataBus);
 
 
        -- The ALU                                                      
        -- The ALU                                                      
        alu : ALU
        the_alu : ALU
        port(           data1 => dataBus1;
                port map(       data1 => dataBus1,
                                data2 => dataBus2;
                                                data2 => dataBus2,
                                dataA => accumulator;
                                                dataA => accumulator,
                                op => op;
                                                op => opCode,
                                overflow => overflow);
                                                overflow => ALUoverflow);
 
 
end Behavioral;
end Behavioral;
 
 
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.