copyleft: gplv3 added and set repo to public
[calu.git] / cpu / src / alu_pkg.vhd
index f1c99dc317aae28d2233df2158e8c99407147c86..033d15625a9e5ee9270e14b8cca841828fd238e9 100755 (executable)
@@ -1,22 +1,36 @@
+--   `Deep Thought', a softcore CPU implemented on a FPGA
+--
+--  Copyright (C) 2010 Markus Hofstaetter <markus.manrow@gmx.at>
+--  Copyright (C) 2010 Martin Perner <e0725782@student.tuwien.ac.at>
+--  Copyright (C) 2010 Stefan Rebernig <stefan.rebernig@gmail.com>
+--  Copyright (C) 2010 Manfred Schwarz <e0725898@student.tuwien.ac.at>
+--  Copyright (C) 2010 Bernhard Urban <lewurm@gmail.com>
+--
+--  This program is free software: you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation, either version 3 of the License, or
+--  (at your option) any later version.
+--
+--  This program is distributed in the hope that it will be useful,
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--  GNU General Public License for more details.
+--
+--  You should have received a copy of the GNU General Public License
+--  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
 library IEEE;
 
 use IEEE.std_logic_1164.all;
 use IEEE.numeric_std.all;
 
 use work.common_pkg.all;
+use work.extension_pkg.all;
 --use work.core_extension.all;
 
 
 package alu_pkg is
        
-       type status_rec is record
-               zero : std_logic;
-               oflo : std_logic;
-               sign : std_logic;
-               carry : std_logic;
-       end record;
-       
-       subtype status_t is byte_t;
        --type alu_interal_rec is record
        --      
        --end record alu_internal_rec;
@@ -26,14 +40,12 @@ package alu_pkg is
                result_addr : gp_addr_t;
                
                status : status_rec;
-               --stackpointer : gp_register_t;
 
                alu_jump : std_logic;
                brpr : std_logic;
                reg_op : std_logic;
                mem_op  : std_logic;
                
-               --new_val : std_logic;
                mem_en : std_logic;
                
                hw_op   : std_logic;
@@ -42,7 +54,7 @@ package alu_pkg is
                
        end record alu_result_rec;
        
-       constant SHIFT_WIDTH : integer := 4; --log2c(gp_register_t'length);
+       constant SHIFT_WIDTH : integer := 5; --log2c(gp_register_t'length);
        
        constant COND_ZERO : condition_t := "0001";
        constant COND_NZERO : condition_t := "0000";
@@ -84,13 +96,24 @@ package alu_pkg is
                        op_group : in op_info_t;
                        left_operand : in gp_register_t;
                        right_operand : in gp_register_t;
-                        displacement : in gp_register_t;
-                       prog_cnt : in instr_addr_t;
+                       
+            displacement : in gp_register_t;
+                       prog_cnt    : in instr_addr_t;
+                       brpr        : in std_logic;
+                       
                        op_detail : in op_opt_t;
+                       
                        alu_state  : in alu_result_rec;
+                       pval            : in gp_register_t;
+                       pval_nxt   : in gp_register_t;
+                       
                        alu_result : out alu_result_rec;
-                        addr : out word_t; --memaddr
-                        data : out gp_register_t --mem data --ureg
+            addr : out word_t; --memaddr
+            data : out gp_register_t; --mem data --ureg
+                       
+                       pinc : out std_logic;
+                       pwr_en : out std_logic;
+                       paddr : out paddr_t
                );
         end component alu;