在verilog中增加for-generate中的变量

时间:2017-02-25 16:27:25

标签: arrays verilog

我需要在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

1 个答案:

答案 0 :(得分:2)

根据模式:

assign p[k] = pp[k][k-6];

(无论如何,循环就像一个预处理器,当然硬件不会发生减法。)