일련의 중첩 된 for 루프와 함께 누적 합계를 계산하려고하는데 행운이 없습니다. 내 문제를 해결하는 방법을 실제로 시각화하기 전에 Verilog가 for 루프를 어떻게 전개하는지 더 잘 이해해야한다고 생각합니다.Verilog는 for 중첩 된 for 루프를 어떻게 언로드합니까?
기본적으로 3D 배열 (src, dst, tap) 인 일련의 탭 출력 (tap_output_i 및 tap_output_q)이 있습니다. 나는 매 클럭마다 특정 소스로가는 모든 소스와 탭을 합치기를 원한다. ...
//NODES = 2
wire signed [DAC_BUS_WIDTH-1:0] out_sig_i [NODES-1:0];
wire signed [DAC_BUS_WIDTH-1:0] out_sig_q [NODES-1:0];
reg signed [DAC_BUS_WIDTH-1:0] out_sig_i_reg[NODES-1:0];
reg signed [DAC_BUS_WIDTH-1:0] out_sig_q_reg[NODES-1:0];
integer dstVal,srcVal, tapVal;
//generate
always @(posedge clk) begin: AlwaysSummingForLoop
for (dstVal=0; dstVal<2; dstVal=dstVal+1) begin:SummingForLoop
out_sig_i_reg[dstVal] <= 0;
out_sig_q_reg[dstVal] <= 0;
for (srcVal=0; srcVal<2; srcVal=srcVal+1) begin:SrcForLoop
if(srcVal != dstVal) begin:innerIf
for (tapVal=0; tapVal<8; tapVal=tapVal+1) begin:tapSum
out_sig_i_reg[dstVal] <= out_sig_i_reg[dstVal] + tap_output_i[srcVal][dstVal][tapVal];
out_sig_q_reg[dstVal] <= out_sig_q_reg[dstVal] + tap_output_q[srcVal][dstVal][tapVal];
end
end
end
end
end
//endgenerate
assign out_sig_i[0] = out_sig_i_reg[0];
assign out_sig_q[0] = out_sig_q_reg[0];
assign out_sig_i[1] = out_sig_i_reg[1];
assign out_sig_q[1] = out_sig_q_reg[1];
내가 (out_sig_i_reg
및 out_sig_q_reg
) 합계 모든 수를 누적를 재설정되어 문제로 실행하고 있습니다 : 여기
예, 전 out_sig_i_reg와 out_sig_q_reg를 내 cummultive 합계로 사용하고 있습니다. 내가 알아낼 수없는 것은 합계를 계산하기 전에 누적 합계를 계산하고 매번 0으로 재설정하는 방법입니다. – toozie21