Ignore:
Timestamp:
Feb 14, 2011, 11:53:48 PM (14 years ago)
Author:
demin
Message:

fix sign conversion

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sandbox/MultiChannelUSB/average.v

    r115 r116  
    88                input   wire    [3*size*6-1:0]          del_data,
    99                input   wire    [3*size*width-1:0]      inp_data,
    10                 output  wire    [3*size*width1-1:0]     out_data
     10                output  wire    [3*size*width2-1:0]     out_data
    1111        );
    1212
    13 
    14         localparam      width1  =       width + 6 + 1;
     13        localparam      width1  =       width + 1;
     14        localparam      width2  =       width + 6 + 1;
    1515
    1616        reg                                                     int_wren_reg, int_wren_next;
     
    2323        wire    [7:0]                           int_addr_wire;
    2424
     25        reg             [size*width2-1:0]       acc_data_reg [3:0], acc_data_next [3:0];
     26        wire    [size*width2-1:0]       acc_data_wire;
     27
     28        reg             [size*width1-1:0]       sub_data_reg [3:0], sub_data_next [3:0];
     29        wire    [size*width1-1:0]       sub_data_wire;
     30
    2531        reg             [size*width-1:0]        inp_data_reg [2:0], inp_data_next [2:0];
    2632        wire    [size*width-1:0]        inp_data_wire [3:0];
    27 
    28         reg             [size*width1-1:0]       out_data_reg [2:0], out_data_next [2:0];
    29         wire    [size*width1-1:0]       out_data_wire;
    30 
    31         reg             [size*width1-1:0]       acc_data_reg [3:0], acc_data_next [3:0];
    32         wire    [size*width1-1:0]       acc_data_wire;
    33 
    34         reg             [size*width1-1:0]       sub_data_reg [3:0], sub_data_next [3:0];
    35         wire    [size*width1-1:0]       sub_data_wire;
    3633
    3734        integer i;
     
    8279                                .lpm_representation("SIGNED"),
    8380                                .lpm_type("LPM_ADD_SUB"),
    84                                 .lpm_width(width1)) acc_unit_1 (
    85                                 .dataa({sub_data_reg[0][j*width1+width1-1], {(width1-width1){1'b0}}, sub_data_reg[0][j*width1+width1-2:j*width1]}),
    86                                 .datab(acc_data_reg[0][j*width1+width1-1:j*width1]),
    87                                 .result(acc_data_wire[j*width1+width1-1:j*width1]));
     81                                .lpm_width(width2)) acc_unit_1 (
     82                                .dataa({{(width2-width1+1){sub_data_reg[0][j*width1+width1-1]}}, sub_data_reg[0][j*width1+width1-2:j*width1]}),
     83                                .datab(acc_data_reg[0][j*width2+width2-1:j*width2]),
     84                                .result(acc_data_wire[j*width2+width2-1:j*width2]));
    8885
    8986                end
     
    147144                        begin
    148145                                inp_data_reg[i] <= {(size*width){1'b0}};
    149                                 out_data_reg[i] <= {(size*width1){1'b0}};
    150146                        end
    151147                        for(i = 0; i <= 3; i = i + 1)
    152148                        begin
    153149                                sub_data_reg[i] <= {(size*width1){1'b0}};
    154                                 acc_data_reg[i] <= {(size*width1){1'b0}};
     150                                acc_data_reg[i] <= {(size*width2){1'b0}};
    155151                        end
    156152                end
     
    165161                        begin
    166162                                inp_data_reg[i] <= inp_data_next[i];
    167                                 out_data_reg[i] <= out_data_next[i];
    168163                        end                 
    169164                        for(i = 0; i <= 3; i = i + 1)
     
    185180                begin
    186181                        inp_data_next[i] = inp_data_reg[i];
    187                         out_data_next[i] = out_data_reg[i];
    188182                end                 
    189183                for(i = 0; i <= 3; i = i + 1)
     
    203197                                begin
    204198                                        inp_data_next[i] = {(size*width){1'b0}};
    205                                         out_data_next[i] = {(size*width1){1'b0}};
    206199                                end                 
    207200                                for(i = 0; i <= 3; i = i + 1)
    208201                                begin
    209202                                        sub_data_next[i] = {(size*width1){1'b0}};
    210                                         acc_data_next[i] = {(size*width1){1'b0}};
     203                                        acc_data_next[i] = {(size*width2){1'b0}};
    211204                                end
    212205
     
    265258                                sub_data_next[1] = sub_data_wire;
    266259                                acc_data_next[1] = acc_data_wire;
    267                                 out_data_next[0] = acc_data_wire;
    268260
    269261                                int_case_next = 3'd4;
     
    282274                                sub_data_next[2] = sub_data_wire;
    283275                                acc_data_next[2] = acc_data_wire;
    284                                 out_data_next[1] = acc_data_wire;
    285276                               
    286277                                del_addr_next = del_addr_reg + 6'd1;
     
    298289                                sub_data_next[3] = sub_data_wire;
    299290                                acc_data_next[3] = acc_data_wire;
    300                                 out_data_next[2] = acc_data_wire;
    301291                                             
    302292                                int_addr_next[5:0] = del_addr_reg;
     
    311301        end
    312302
    313         assign out_data = {out_data_reg[2], out_data_reg[1], out_data_reg[0]};
     303        assign out_data = {acc_data_reg[3], acc_data_reg[2], acc_data_reg[1]};
    314304
    315305endmodule
Note: See TracChangeset for help on using the changeset viewer.