我需要在verilog的for-generate块中生成以下赋值。对于给定位大小 n = 8位,这是有符号数乘法过程的一部分。
assign p[1]=pp[1][1];
assign p[2]=pp[2][1];
assign p[3]=pp[3][1];
assign p[4]=pp[4][1];
assign p[5]=pp[5][1];
assign p[6]=pp[6][1];
assign p[7]=pp[7][1];
assign p[8]=pp[8][2];
assign p[9]=pp[9][3];
assign p[10]=pp[10][4];
assign p[11]=pp[11][5];
assign p[12]=pp[12][6];
assign p[13]=pp[13][7];
assign p[14]=pp[14][8];
assign p[15]=pp[15][9];
我可以在for循环中的第一个条件语句中编写第一部分。对于第二个if块,我无法运行pp [] []数组的第二个索引变量。怎么做?
genvar k;
generate
for(k=1; k<=2*size-1; k=k+1)
begin:product
if (k<=size-2) begin
assign p[k] = pp[k][1];
end
else if (k>size-2) begin
assign p[k] = ??????????????????; //How to assign p[7] to p[15]
end
end
endgenerate
答案 0 :(得分:2)
根据模式:
assign p[k] = pp[k][k-6];
(无论如何,循环就像一个预处理器,当然硬件不会发生减法。)