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

Subversion Repositories altor32

[/] [altor32/] [trunk/] [rtl/] [cpu/] [altor32_alu.v] - Diff between revs 27 and 36

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

Rev 27 Rev 36
Line 1... Line 1...
//-----------------------------------------------------------------
//-----------------------------------------------------------------
//                           AltOR32 
//                           AltOR32 
//                Alternative Lightweight OpenRisc 
//                Alternative Lightweight OpenRisc 
//                            V2.0
//                            V2.1
//                     Ultra-Embedded.com
//                     Ultra-Embedded.com
//                   Copyright 2011 - 2013
//                   Copyright 2011 - 2014
//
//
//               Email: admin@ultra-embedded.com
//               Email: admin@ultra-embedded.com
//
//
//                       License: LGPL
//                       License: LGPL
//-----------------------------------------------------------------
//-----------------------------------------------------------------
Line 34... Line 34...
// Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
// Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
// Boston, MA  02111-1307  USA
// Boston, MA  02111-1307  USA
//-----------------------------------------------------------------
//-----------------------------------------------------------------
 
 
//-----------------------------------------------------------------
//-----------------------------------------------------------------
// Includes
 
//-----------------------------------------------------------------
 
`include "altor32_defs.v"
 
 
 
//-----------------------------------------------------------------
 
// Module - ALU
// Module - ALU
//-----------------------------------------------------------------
//-----------------------------------------------------------------
module altor32_alu
module altor32_alu
(
(
    // ALU operation select
    // ALU operation select
Line 56... Line 51...
    // Result
    // Result
    output [31:0]   p_o         /*verilator public*/,
    output [31:0]   p_o         /*verilator public*/,
 
 
    // Carry
    // Carry
    output reg      c_o         /*verilator public*/,
    output reg      c_o         /*verilator public*/,
    output reg      c_update_o  /*verilator public*/
    output reg      c_update_o  /*verilator public*/,
 
 
 
    // Comparison    
 
    output reg      equal_o                /*verilator public*/,
 
    output reg      greater_than_signed_o  /*verilator public*/,
 
    output reg      greater_than_o         /*verilator public*/,
 
    output reg      less_than_signed_o     /*verilator public*/,
 
    output reg      less_than_o            /*verilator public*/,
 
    output          flag_update_o          /*verilator public*/
);
);
 
 
//-----------------------------------------------------------------
//-----------------------------------------------------------------
 
// Includes
 
//-----------------------------------------------------------------
 
`include "altor32_defs.v"
 
`include "altor32_funcs.v"
 
 
 
//-----------------------------------------------------------------
// Registers
// Registers
//-----------------------------------------------------------------
//-----------------------------------------------------------------
reg [31:0]      result;
reg [31:0]      result;
 
 
reg [31:16]     shift_right_fill;
reg [31:16]     shift_right_fill;
Line 204... Line 213...
   endcase
   endcase
end
end
 
 
assign p_o    = result;
assign p_o    = result;
 
 
 
//-----------------------------------------------------------------
 
// Comparisons
 
//-----------------------------------------------------------------
 
always @ *
 
begin
 
    if (a_i == b_i)
 
        equal_o = 1'b1;
 
    else
 
        equal_o = 1'b0;
 
 
 
    if (a_i < b_i)
 
        less_than_o = 1'b1;
 
    else
 
        less_than_o = 1'b0;
 
 
 
    if (a_i > b_i)
 
        greater_than_o = 1'b1;
 
    else
 
        greater_than_o = 1'b0;
 
 
 
    less_than_signed_o    = less_than_signed(a_i, b_i);
 
    greater_than_signed_o = ~(less_than_signed_o | equal_o);
 
end
 
 
 
assign flag_update_o = (op_i == `ALU_COMPARE);
 
 
endmodule
endmodule
 
 
 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.