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

Subversion Repositories openarty

[/] [openarty/] [trunk/] [rtl/] [bigadd.v] - Diff between revs 3 and 34

Show entire file | Details | Blame | View Log

Rev 3 Rev 34
Line 34... Line 34...
//
//
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//
//
//
//
module  bigadd(i_clk, i_sync, i_a, i_b, o_r, o_sync);
module  bigadd(i_clk, i_sync, i_a, i_b, o_r, o_sync);
 
        parameter       NCLOCKS = 1;
        input                   i_clk, i_sync;
        input                   i_clk, i_sync;
        input           [63:0]   i_a, i_b;
        input           [63:0]   i_a, i_b;
        output  reg     [63:0]   o_r;
        output  wire    [63:0]   o_r;
        output  reg     o_sync;
        output  wire    o_sync;
 
 
 
        generate
 
        if (NCLOCKS == 0)
 
        begin
 
                assign  o_sync= i_sync;
 
                assign  o_r = i_a + i_b;
 
        end else if (NCLOCKS == 1)
 
        begin
 
                reg             r_sync;
 
                reg     [63:0]   r_out;
 
                always @(posedge i_clk)
 
                        r_sync <= i_sync;
 
                always @(posedge i_clk)
 
                        r_out <= i_a+i_b;
 
 
 
                assign  o_sync = r_sync;
 
                assign  o_r = r_out;
 
        end else // if (NCLOCKS == 2)
 
        begin
        reg             r_sync, r_pps;
        reg             r_sync, r_pps;
        reg     [31:0]   r_hi_a, r_hi_b, r_low;
                reg     [31:0]   r_hi, r_low;
 
 
 
                reg             f_sync;
 
                reg     [63:0]   f_r;
 
 
        initial r_sync = 1'b0;
        initial r_sync = 1'b0;
        always @(posedge i_clk)
        always @(posedge i_clk)
                r_sync <= i_sync;
                r_sync <= i_sync;
 
 
        always @(posedge i_clk)
        always @(posedge i_clk)
                { r_pps, r_low } <= i_a[31:0] + i_b[31:0];
                { r_pps, r_low } <= i_a[31:0] + i_b[31:0];
        always @(posedge i_clk)
        always @(posedge i_clk)
                r_hi_a <= i_a[63:32];
                        r_hi <= i_a[63:32] + i_b[63:32];
        always @(posedge i_clk)
 
                r_hi_b <= i_b[63:32];
 
 
 
        initial o_sync = 1'b0;
                initial f_sync = 1'b0;
        always @(posedge i_clk)
        always @(posedge i_clk)
                o_sync <= r_sync;
                        f_sync <= r_sync;
        always @(posedge i_clk)
        always @(posedge i_clk)
                o_r[31:0] <= r_low;
                        f_r[31:0] <= r_low;
        always @(posedge i_clk)
        always @(posedge i_clk)
                o_r[63:32] <= r_hi_a + r_hi_b + { 31'h00, r_pps };
                        f_r[63:32] <= r_hi + { 31'h00, r_pps };
 
 
 
                assign  o_sync = f_sync;
 
                assign  o_r    = f_r;
 
        end endgenerate
 
 
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.