资源过度使用

时间:2015-11-15 22:06:11

标签: image-processing verilog

任何人都可以帮我优化这段代码。我猜嵌套循环占用了大量资源。 census_transform没有占用太多资源,但是这个相关块占用了158%的资源。我怎样才能避免使用循环。

     module correlation(clk,disp_map
);
 input clk;
 output reg [5:0] disp_map;

 reg [7:0] d = 0;
 wire [119:0] census_left;
 wire [119:0] census_right;
 reg [119:0] temp [0:63];
 reg [119:0] hamming;   
 reg en_l = 1;
 reg en_r = 0;
 reg [6:0]prevSAD = 7'h7f;
 reg [6:0] SAD = 0;
 reg BestPosition = 0;
// integer count =0;
 integer j =0;
 integer i =0;
 integer k =0;
 integer p =0;
 //----------------------------------------------------------------------//
 /*always @ (posedge clk)
 count = count+1;*/
 //----------------------------------------------------------------------//
 always @ (posedge clk)
 begin
    if(d==63)
        en_r = 1;
    else
        d = d+1;
//-----------------------------------------------------------------------// 
    if(j<=16380)
    begin
        temp[0] <= census_left;
        for(i=0;i<63;i=i+1)
        begin
            temp[i+1] <= temp[i];
        end
        j=j+1;
    end
//------------------------------------------------------------------------//    
    if(en_r)
    begin
        for(k=0;k<63;k=k+1)
        begin
            hamming = census_right^temp[k];
            for(p=0;p<=119;p=p+1)
            SAD = SAD + hamming[p];
            if(prevSAD > SAD)
            begin
            prevSAD = SAD;
            BestPosition = k;
            end
        end
        disp_map = BestPosition;
    end


end

census_transform transform(clk,en_l,en_r,census_left,census_right);

endmodule

1 个答案:

答案 0 :(得分:0)

虽然你的资源使用情况不明确,但我在这里有几件事。

  • 永远不要混合阻止和非阻止分配。
  • 为什么要声明不同的循环变量?单个变量就足够了。
  • 不是分配默认值,而是在设计中使用重置逻辑。

请说明您在谈论哪些资源,您的模拟器版本以及要讨论的嵌套循环。

还有很多要点,我只列出了一些。