source: XOpenSparcT1/trunk/T1-CPU/exu/sparc_exu_aluadder64.v @ 6

Revision 6, 2.2 KB checked in by pntsvt00, 13 years ago (diff)

versione iniziale opensparc

Line 
1// ========== Copyright Header Begin ==========================================
2//
3// OpenSPARC T1 Processor File: sparc_exu_aluadder64.v
4// Copyright (c) 2006 Sun Microsystems, Inc.  All Rights Reserved.
5// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
6//
7// The above named program is free software; you can redistribute it and/or
8// modify it under the terms of the GNU General Public
9// License version 2 as published by the Free Software Foundation.
10//
11// The above named program is distributed in the hope that it will be
12// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14// General Public License for more details.
15//
16// You should have received a copy of the GNU General Public
17// License along with this work; if not, write to the Free Software
18// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
19//
20// ========== Copyright Header End ============================================
21////////////////////////////////////////////////////////////////////////
22/*
23//  Module Name: sparc_exu_aluadder64
24//      Description:            This block implements the adder for the sparc alu.
25//            It takes two operands and a carry bit.  It adds them together
26//                                              and sends the output to adder_out.  It outputs the overflow
27//                                              and carry condition codes for both 64 bit and 32 bit operations.
28*/
29
30module sparc_exu_aluadder64
31  (
32   rs1_data,
33   rs2_data,
34   cin,
35   adder_out,
36   cout32,
37   cout64
38   );
39
40   input [63:0]  rs1_data;   // 1st input operand
41   input [63:0]  rs2_data;   // 2nd input operand
42   input         cin;           // carry in
43
44   output [63:0] adder_out; // result of adder
45   output         cout32;         // Cout from lower 32 bit add
46   output         cout64;         // cout from 64 bit add
47
48
49////////////////////////////////////////////
50//  Module implementation
51////////////////////////////////////////////
52
53   assign      {cout32, adder_out[31:0]} = rs1_data[31:0]+rs2_data[31:0]+
54                                           cin;
55   assign      {cout64, adder_out[63:32]} = rs1_data[63:32] 
56               + rs2_data[63:32] + cout32;
57
58endmodule // sparc_exu_aluadder64
59
60
61
62
Note: See TracBrowser for help on using the repository browser.