Commit b28376ab authored by Andrey Filippov's avatar Andrey Filippov
Browse files

more debugging by comparing to Java results

parent ed27aded
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -104,6 +104,17 @@ module mclt16x16#(
    
    reg  signed [PIXEL_WIDTH + WND_WIDTH - 1:0] pix_wnd_r; // MSB not used: positive[PIXEL_WIDTH]*positive[WND_WIDTH]->positive[PIXEL_WIDTH+WND_WIDTH-1]
    reg  signed              [DTT_IN_WIDTH-1:0] pix_wnd_r2; // pixels (positive) multiplied by window(positive), two MSBs == 2'b0 to prevent overflow
//    reg  signed              [DTT_IN_WIDTH-1:0] pix_wnd_r2_old;
    // rounding
    wire signed              [DTT_IN_WIDTH-3:0] pix_wnd_r2_w = pix_wnd_r[PIXEL_WIDTH + WND_WIDTH - 2 -: DTT_IN_WIDTH - 2]
    `ifdef ROUND
                 + pix_wnd_r[PIXEL_WIDTH + WND_WIDTH -DTT_IN_WIDTH]
    `endif
    ;
    
//            pix_wnd_r2 <= {{2{pix_wnd_r[PIXEL_WIDTH + WND_WIDTH - 2]}},pix_wnd_r[PIXEL_WIDTH + WND_WIDTH - 2 -: DTT_IN_WIDTH - 2]};
    
    
//    parameter DTT_IN_WIDTH = 24 
//    wire  [DTT_IN_WIDTH-3:0] pix_wnd = pix_wnd_r[PIXEL_WIDTH + WND_WIDTH - 1 -: DTT_IN_WIDTH-2];
    reg  signed [DTT_IN_WIDTH-1:0] data_cc_r;   
@@ -180,7 +191,9 @@ module mclt16x16#(
///        if (in_busy[10]) pix_wnd_r2 <= {2'b00,pix_wnd_r[PIXEL_WIDTH + WND_WIDTH - 2 -: DTT_IN_WIDTH - 2]};
        if (in_busy[10]) begin
///        if (in_busy[9]) begin
            pix_wnd_r2 <= {2'b00,pix_wnd_r[PIXEL_WIDTH + WND_WIDTH - 2 -: DTT_IN_WIDTH - 2]};
///         pix_wnd_r2 <= {2'b0,pix_wnd_r[PIXEL_WIDTH + WND_WIDTH - 2 -: DTT_IN_WIDTH - 2]};
//            pix_wnd_r2_old <= {{2{pix_wnd_r[PIXEL_WIDTH + WND_WIDTH - 2]}},pix_wnd_r[PIXEL_WIDTH + WND_WIDTH - 2 -: DTT_IN_WIDTH - 2]};
            pix_wnd_r2 <= {{2{pix_wnd_r2_w[DTT_IN_WIDTH-3]}},pix_wnd_r2_w};
            mpix_use_r  <= mpix_use_d;
            var_first_r <= var_first_d;
            mpix_sgn_r <=  mpix_sgn_d; 
+2 −1
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@
`timescale 1ns/1ps
  `define INSTANTIATE_DSP48E1
  `define PRELOAD_BRAMS
//  `define ROUND 
module  mclt_test_01 ();
`ifdef IVERILOG              
    `ifdef NON_VDT_ENVIROMENT
+20 −13
Original line number Diff line number Diff line
@@ -62,8 +62,15 @@ module mclt_wnd_mul#(
    wire signed    [OUT_WIDTH - 1 : 0] wnd_out_y;   // should be all positive         
    reg  signed    [OUT_WIDTH - 1 : 0] wnd_out_x_r; // to be absorbed in DSP            
    reg  signed    [OUT_WIDTH - 1 : 0] wnd_out_y_r; // to be absorbed in DSP
    reg  signed [2*OUT_WIDTH - 1 : 0] wnd_out_r;   // should be all positive
    assign wnd_out = wnd_out_r[2 * OUT_WIDTH - 2: OUT_WIDTH-1];
    reg  signed    [OUT_WIDTH - 1 : 0] wnd_out_r;   // should be all positive
//    reg  signed [2*OUT_WIDTH - 1 : 0] wnd_out_r;   // should be all positive
    wire  signed [2*OUT_WIDTH - 1 : 0] wnd_out_full = wnd_out_x_r * wnd_out_y_r;
    wire  signed   [OUT_WIDTH - 1 : 0] wnd_out_w = wnd_out_full[2 * OUT_WIDTH - 2: OUT_WIDTH-1]
    `ifdef ROUND
        +wnd_out_full[OUT_WIDTH-2]
    `endif    
    ;
    assign wnd_out = wnd_out_r;
     
    always @ (posedge clk) begin
        regen <= {regen[1:0],en};
@@ -71,7 +78,7 @@ module mclt_wnd_mul#(
        wnd_out_y_r <= wnd_out_y;
//        zero <= {zero[0],  x_zero | y_zero};
        zero <= x_zero | y_zero;
        wnd_out_r <= wnd_out_x_r * wnd_out_y_r;
        wnd_out_r <= wnd_out_w; // wnd_out_x_r * wnd_out_y_r;
    end

    mclt_full_shift #(
+33 −32
Original line number Diff line number Diff line
// DTT input range: -341.093520 ... 345.703701
 14dc1c  177d20  161a95   eaf87  1110eb   89dfc   7be02    9f1a 
 137535  1845cc  105208  128bab   7ba91   f9397   12518   7b417 
 14e693  11edb5  186740   98d36  13d449 1fff415   ee68c 1f67056 
 135410  18e4b7   a7019  190573    7b65  13510b 1f8cf3f   da047 
 13bb68   a8598  1852e1    e56b  14d9a4 1f8a3a3  12bdf8 1f2d43a 
  e3f49  1479ec   12b06  166273 1f6f67e  163c2d 1f0b575  15589c 
  aa4a3 1fcab72  1320b8 1f59d23  566bb0 1edd892  14bd35 1e930d1 
  4d34c   7770f 1f02f46  158018 1eef220  15d267 1e70c1d  1ad30c 
  a6e42   bbecb   b0d82   757e8   888a0   44f14   3df14    4f8f 
  9bacb   c2323   8292d   94604   3dd5c   7c9f2    928f   3da1f 
  a737e   8f707   c33dd   4c6b3   9ea56 1fffa0a   7736b 1fb3813 
  9aa38   c729a   53827   c82f8    3db4   9a8b6 1fc678d   6d045 
  9dde5   542e6   c29ad    72b8   a6d06 1fc51bf   95f2b 1f969fc 
  71fc8   a3d29    9586   b3172 1fb7b28   b1e4e 1f85a94   aac83 
  5526c 1fe55b1   9908c 1face78  2b36b0 1f6ec1c   a5ece 1f4982f 
  269b2   3bb9a 1f8177b   ac042 1f778e6   ae96a 1f385d0   d69c9 

1fc6715 1fa9454 1f2cc01 1f5c677 1ed915e 1ef1a0d 1ed871d 1ec8222 
  60219 1f1690a 1fe470b 1f02160 1f63990 1ec4c4c 1ec9ca4 1ecc9b6 
1f21fa2   5aefb 1ebaa55 1fd6392 1eb8e5c 1f58bea 1ec81eb 1edf544 
 1066c5 1e8b6b9   7648d 1e7723b 1fd5f7d 1ebe245 1f6102f 1f00c59 
1e8cf32  1017d6 1e5e56c   79710 1eb64f7 1fd0fc7 1ef57f6 1f62510 
 1961e0 1e48741  1364fa 1e7d543   6b776 1ecea93 1fb8a47 1f2318e 
1e4e5ff  4dfad0 1e57bed  124471 1aabb59   6be3b 1f5aea0 1fb7470 
 23ec58 1e4afe5  1fead7 1e5ff69   f5d51 1f06c2a   86130 1fb253e 
1fe3382 1fd4a1c 1f965df 1fae322 1f6c881 1f78cdc 1f6c360 1f640e0 
  3011b 1f8b460 1ff2381 1f81088 1fb1cb0 1f625f5 1f64e21 1f664ab 
1f90fae   2d78c 1f5d4f8 1feb1c2 1f5c6fb 1fac5db 1f640c5 1f6fa75 
  8338c 1f45b22   3b259 1f3b8e0 1feafb8 1f5f0f0 1fb07fe 1f80604 
1f4675f   80c13 1f2f275   3cb9b 1f5b248 1fe87dc 1f7abd1 1fb126f 
  cb130 1f2435c   9b2ae 1f3ea65   35bcc 1f6751a 1fdc518 1f918a4 
1f272bc  26fe2b 1f2bdb4   92266 1d55cd7   35f2e 1fad736 1fdba2d 
 11f686 1f257ae   ff5bb 1f2ff73   7aecf 1f835ee   430ad 1fd9293 

1fc6715   56bac 1f2cc01   a3989 1ed915e  10e5f3 1ed871d  137dde 
1f9fde7 1f1690a   1b8f5 1f02160   9c670 1ec4c4c  13635c 1ecc9b6 
1f21fa2 1fa5105 1ebaa55   29c6e 1eb8e5c   a7416 1ec81eb  120abc 
1ef993b 1e8b6b9 1f89b73 1e7723b   2a083 1ebe245   9efd1 1f00c59 
1e8cf32 1efe82a 1e5e56c 1f868f0 1eb64f7   2f039 1ef57f6   9daf0 
1e69e20 1e48741 1ec9b06 1e7d543 1f9488a 1ecea93   475b9 1f2318e 
1e4e5ff 1b20530 1e57bed 1edbb8f 1aabb59 1f941c5 1f5aea0   48b90 
1dc13a8 1e4afe5 1e01529 1e5ff69 1f0a2af 1f06c2a 1f79ed0 1fb253e 
1fe3382   2b5e4 1f965df   51cde 1f6c881   87324 1f6c360   9bf20 
1fcfee5 1f8b460    dc7f 1f81088   4e350 1f625f5   9b1df 1f664ab 
1f90fae 1fd2874 1f5d4f8   14e3e 1f5c6fb   53a25 1f640c5   9058b 
1f7cc74 1f45b22 1fc4da7 1f3b8e0   15048 1f5f0f0   4f802 1f80604 
1f4675f 1f7f3ed 1f2f275 1fc3465 1f5b248   17824 1f7abd1   4ed91 
1f34ed0 1f2435c 1f64d52 1f3ea65 1fca434 1f6751a   23ae8 1f918a4 
1f272bc 1d901d5 1f2bdb4 1f6dd9a 1d55cd7 1fca0d2 1fad736   245d3 
1ee097a 1f257ae 1f00a45 1f2ff73 1f85131 1f835ee 1fbcf53 1fd9293 

  a6e42 1f44135   b0d82 1f8a818   888a0 1fbb0ec   3df14 1ffb071 
1f64535   c2323 1f7d6d3   94604 1fc22a4   7c9f2 1ff6d71   3da1f 
  a737e 1f708f9   c33dd 1fb394d   9ea56     5f6   7736b   4c7ed 
1f655c8   c729a 1fac7d9   c82f8 1ffc24c   9a8b6   39873   6d045 
  9dde5 1fabd1a   c29ad 1ff8d48   a6d06   3ae41   95f2b   69604 
1f8e038   a3d29 1ff6a7a   b3172   484d8   b1e4e   7a56c   aac83 
  5526c   1aa4f   9908c   53188  2b36b0   913e4   a5ece   b67d1 
1fd964e   3bb9a   7e885   ac042   8871a   ae96a   c7a30   d69c9 
 14dc1c 1e882e0  161a95 1f15079  1110eb 1f76204   7be02 1ff60e6 
1ec8acb  1845cc 1efadf8  128bab 1f8456f   f9397 1fedae8   7b417 
 14e693 1ee124b  186740 1f672ca  13d449     beb   ee68c   98faa 
1ecabf0  18e4b7 1f58fe7  190573 1ff849b  13510b   730c1   da047 
 13bb68 1f57a68  1852e1 1ff1a95  14d9a4   75c5d  12bdf8   d2bc6 
1f1c0b7  1479ec 1fed4fa  166273   90982  163c2d   f4a8b  15589c 
  aa4a3   3548e  1320b8   a62dd  566bb0  12276e  14bd35  16cf2f 
1fb2cb4   7770f   fd0ba  158018  110de0  15d267  18f3e3  1ad30c 
+32 −33
Original line number Diff line number Diff line
// DTT output range: -549.382667 ... 423.390240
 18a6fa 1fc91b7   21e89 1fe8120   130d4    bf7c 1fe8080   1d426 
    db1   1a3c1 1fc8b2d   320aa 1fe4acb 1ffb447   24861 1fc667c 
1ff7b91    b96a 1fef805   142bd 1ff162f 1ff8842    df28 1fe2c8c 
   abcd 1fc61c6   48da7 1fbc810   2b3d0 1fffb05 1fe01bc   333c8 
1ff626c 1ff5aa3 1ffdc2a 1ffe9cf    7746 1ff63c4    e6be 1fed0a5 
1feb5a8   2658a 1fbfe0e   31797 1fe20e9 1ff8e10   24416 1fce434 
   7f2a 1fe4180   286e9 1fe8384    db79 1fff69b 1fec643   31816 
   ec0c 1fdf2a1   2f427 1fd1aff   11ba6   1693c 1fc31cc  1a7497 
 315109 1f92301   43d55 1fd020f   261cf   17f0f 1fd00d1   3a887 
   1b63   347b7 1f915eb   641b8 1fc955f 1ff6884   4910b 1f8cc86 
1fef712   172eb 1fdefea   285a2 1fe2c41 1ff1075   1be6d 1fc58dd 
  157b0 1f8c318   91bdf 1f78f98   567f7 1fff60a 1fc0339   667f7 
1fec4c5 1feb531 1ffb84f 1ffd39b    ee9a 1fec774   1cd99 1fda125 
1fd6b26   4cb61 1f7fb9c   62f91 1fc4197 1ff1c11   48875 1f9c804 
   fe63 1fc82c8   50e22 1fd06d9   1b70d 1ffed35 1fd8c5f   6308f 
  1d835 1fbe500   5e8ad 1fa35a2   23770   2d2a5 1f8631f  34ec7d 

1eb23e9   18b20 1fdfe6d   1bb64 1ff6827 1ff459b   165e3 1fe1b93 
1ffe3c8 1ff27c3   15d2c 1febfb8 1ffc014 1ffbaa2 1ffd806     1a9 
  1a5f4 1fa44e2   795d1 1f959ab   4116f    299a 1fc0975   60036 
   ba0c 1fd0ecc   3678f 1fca5cf   23170    686b 1fe740b   2e027 
1ff4332   213da 1fd3315   26be6 1fe7e69 1ff8625   16dd9 1fe056a 
   9860 1ff4de0   15ba2 1ff266b    cfd7    45a3 1ffb9c1   15ba5 
   e616 1ff125d   1b5e6 1fe9308    9615    2e82 1fec165 1ffc2bc 
1fee5da   3d309 1faae54   46305 1fe22eb 1feb3cb   566f2 1ddac06 
1d64536   31672 1fbfc99   376fe 1fed03c 1fe8b1f   2cbf3 1fc36ea 
1ffc78d 1fe4f6b   2ba84 1fd7f48 1ff801f 1ff753c 1ffb007     352 
  34c1d 1f4890d   f2c94 1f2b281   82361    533a 1f8126a   c012c 
  1742f 1fa1d39   6cf8a 1f94b33   46326    d0e2 1fce7e4   5c0a9 
1fe864d   427f7 1fa65cf   4d81a 1fcfca2 1ff0c3a   2dbdf 1fc0a94 
  130d3 1fe9baa   2b76f 1fe4cbc   19fc8    8b4e 1ff7379   2b775 
  1cc48 1fe249c   36c03 1fd25e2   12c3c    5d09 1fd82a2 1ff8570 
1fdcb91   7a68d 1f55bff   8c696 1fc459b 1fd676c   ace91 1bb53c1 

1ddac06   566f2 1feb3cb 1fe22eb   46305 1faae54   3d309 1fee5da 
1ffc2bc 1fec165    2e82    9615 1fe9308   1b5e6 1ff125d    e616 
  15ba5 1ffb9c1    45a3    cfd7 1ff266b   15ba2 1ff4de0    9860 
1fe056a   16dd9 1ff8625 1fe7e69   26be6 1fd3315   213da 1ff4332 
  2e027 1fe740b    686b   23170 1fca5cf   3678f 1fd0ecc    ba0c 
  60036 1fc0975    299a   4116f 1f959ab   795d1 1fa44e2   1a5f4 
    1a9 1ffd806 1ffbaa2 1ffc014 1febfb8   15d2c 1ff27c3 1ffe3c8 
1fe1b93   165e3 1ff459b 1ff6827   1bb64 1fdfe6d   18b20 1eb23e9 

 1a7497 1fc31cc   1693c   11ba6 1fd1aff   2f427 1fdf2a1    ec0c 
  31816 1fec643 1fff69b    db79 1fe8384   286e9 1fe4180    7f2a 
1fce434   24416 1ff8e10 1fe20e9   31797 1fbfe0e   2658a 1feb5a8 
1fed0a5    e6be 1ff63c4    7746 1ffe9cf 1ffdc2a 1ff5aa3 1ff626c 
  333c8 1fe01bc 1fffb05   2b3d0 1fbc810   48da7 1fc61c6    abcd 
1fe2c8c    df28 1ff8842 1ff162f   142bd 1fef805    b96a 1ff7b91 
1fc667c   24861 1ffb447 1fe4acb   320aa 1fc8b2d   1a3c1     db1 
  1d426 1fe8080    bf7c   130d4 1fe8120   21e89 1fc91b7  18a6fa 
1bb53c1   ace91 1fd676c 1fc459b   8c696 1f55bff   7a68d 1fdcb91 
1ff8570 1fd82a2    5d09   12c3c 1fd25e2   36c03 1fe249c   1cc48 
  2b775 1ff7379    8b4e   19fc8 1fe4cbc   2b76f 1fe9baa   130d3 
1fc0a94   2dbdf 1ff0c3a 1fcfca2   4d81a 1fa65cf   427f7 1fe864d 
  5c0a9 1fce7e4    d0e2   46326 1f94b33   6cf8a 1fa1d39   1742f 
  c012c 1f8126a    533a   82361 1f2b281   f2c94 1f4890d   34c1d 
    352 1ffb007 1ff753c 1ff801f 1fd7f48   2ba84 1fe4f6b 1ffc78d 
1fc36ea   2cbf3 1fe8b1f 1fed03c   376fe 1fbfc99   31672 1d64536 

 34ec7d 1f8631f   2d2a5   23770 1fa35a2   5e8ad 1fbe500   1d835 
  6308f 1fd8c5f 1ffed35   1b70d 1fd06d9   50e22 1fc82c8    fe63 
1f9c804   48875 1ff1c11 1fc4197   62f91 1f7fb9c   4cb61 1fd6b26 
1fda125   1cd99 1fec774    ee9a 1ffd39b 1ffb84f 1feb531 1fec4c5 
  667f7 1fc0339 1fff60a   567f7 1f78f98   91bdf 1f8c318   157b0 
1fc58dd   1be6d 1ff1075 1fe2c41   285a2 1fdefea   172eb 1fef712 
1f8cc86   4910b 1ff6884 1fc955f   641b8 1f915eb   347b7    1b63 
  3a887 1fd00d1   17f0f   261cf 1fd020f   43d55 1f92301  315109 
Loading