2013-11-27 6 views
0

을의 Verilog에서 전체 배열을 할당 :내가 지금처럼 다른에 2 차원 배열을 복사하려고

reg [11:0] input_matrix [0:array_width - 1] [0:array_height - 1]; 
reg [11:0] output_matrix [0:array_width - 1] [0:array_height - 1]; 
always @(posedge clk) 
begin 
    if(<some condition>) 
      output_matrix <= input_matrix; 
end 

그래서, 우리는 12 비트 값이 개 2 차원 배열을 가지고있다. 하나를 다른 것으로 복사하고 싶습니다.

이것은 가능하지 않습니다. 누구든지 올바른 방법을 알고 있습니까? 아니면 그렇지 않은 이유를 설명하십시오. 나는이 과제가 종합 할 수없는 이유를 전혀 볼 수 없다.

for 루프는 일반적으로 명확한 이유 때문에 잘 합성되지 않습니다. 그러나 루프가 정적으로 정의 되었기 때문에 for 루프를 사용할 수있는 경우 중 하나입니까?

+2

'for' 루프가 합성 가능합니다. – toolic

답변

2

@toolic이 언급 한대로 for 루프가 합성 가능합니다. 이것은 정적으로 전개 될 수 있기 때문에 완벽하게 괜찮 았던 경우입니다.

내부 루프가 필요하지 않을 수도 있지만 메모리 (배열) 할당으로 어려움을 겪는 합성 도구의 일부 버전은 작동하지만 ECO의 문제를 일으킬 수있는 버스의 이름을 잘못 변경했습니다.

reg [11:0] input_matrix [0:array_width - 1] [0:array_height - 1]; 
reg [11:0] output_matrix [0:array_width - 1] [0:array_height - 1]; 
integer i; 
integer j; 

always @(posedge clk) begin 
    if(<some condition>) begin 
    for (i=0; i<array_width; i=i+1) begin 
     for (j=0; j<array_height; j=j+1) begin 
     output_matrix[i][j] <= input_matrix[i][j]; 
     end 
    end 
    end 
end