verilog语言中一个always进程给一个寄存器数组赋值的问题
时间:10-02
整理:3721RD
点击:
我打算给一个宽度12位,深度60位的寄存器数组赋值运算,如果都放在一个进程中是否会太多了,影响带宽呢,现在带宽200M,
如下:
reg [11:0]
memory [59:0];
always @ (posedge clk_i or posedge rst_i)
if (rst_i) begin
memory[0]<=12'b0;
memory[1]<=12'b0;
memory[2]<=12'b0;
memory[3]<=12'b0;
memory[4]<=12'b0;
memory[5]<=12'b0;
memory[6]<=12'b0;
memory[7]<=12'b0;
memory[8]<=12'b0;
memory[9]<=12'b0;
memory[10]<=12'b0;
memory[11]<=12'b0;
memory[12]<=12'b0;
memory[13]<=12'b0;
memory[14]<=12'b0;
memory[15]<=12'b0;
memory[16]<=12'b0;
memory[17]<=12'b0;
memory[18]<=12'b0;
memory[19]<=12'b0;
memory[20]<=12'b0;
memory[21]<=12'b0;
memory[22]<=12'b0;
memory[23]<=12'b0;
memory[24]<=12'b0;
memory[25]<=12'b0;
memory[26]<=12'b0;
memory[27<=12'b0;
memory[28]<=12'b0;
memory[29]<=12'b0;
memory[30]<=12'b0;
memory[31]<=12'b0;
memory[32]<=12'b0;
memory[33]<=12'b0;
memory[34]<=12'b0;
memory[35]<=12'b0;
memory[36]<=12'b0;
memory[37]<=12'b0;
memory[38]<=12'b0;
memory[39]<=12'b0;
memory[40]<=12'b0;
memory[41]<=12'b0;
memory[42]<=12'b0;
memory[43]<=12'b0;
memory[44]<=12'b0;
memory[45]<=12'b0;
memory[46]<=12'b0;
memory[47]<=12'b0;
memory[48]<=12'b0;
memory[49]<=12'b0;
memory[50]<=12'b0;
memory[51]<=12'b0;
memory[52]<=12'b0;
memory[53]<=12'b0;
memory[54]<=12'b0;
memory[55]<=12'b0;
memory[56]<=12'b0;
memory[57<=12'b0;
memory[58]<=12'b0;
memory[59]<=12'b0;
memory[60]<=12'b0;
end
else if(start_process) begin
……………………
end
else begin
…………
end
如下:
reg [11:0]
memory [59:0];
always @ (posedge clk_i or posedge rst_i)
if (rst_i) begin
memory[0]<=12'b0;
memory[1]<=12'b0;
memory[2]<=12'b0;
memory[3]<=12'b0;
memory[4]<=12'b0;
memory[5]<=12'b0;
memory[6]<=12'b0;
memory[7]<=12'b0;
memory[8]<=12'b0;
memory[9]<=12'b0;
memory[10]<=12'b0;
memory[11]<=12'b0;
memory[12]<=12'b0;
memory[13]<=12'b0;
memory[14]<=12'b0;
memory[15]<=12'b0;
memory[16]<=12'b0;
memory[17]<=12'b0;
memory[18]<=12'b0;
memory[19]<=12'b0;
memory[20]<=12'b0;
memory[21]<=12'b0;
memory[22]<=12'b0;
memory[23]<=12'b0;
memory[24]<=12'b0;
memory[25]<=12'b0;
memory[26]<=12'b0;
memory[27<=12'b0;
memory[28]<=12'b0;
memory[29]<=12'b0;
memory[30]<=12'b0;
memory[31]<=12'b0;
memory[32]<=12'b0;
memory[33]<=12'b0;
memory[34]<=12'b0;
memory[35]<=12'b0;
memory[36]<=12'b0;
memory[37]<=12'b0;
memory[38]<=12'b0;
memory[39]<=12'b0;
memory[40]<=12'b0;
memory[41]<=12'b0;
memory[42]<=12'b0;
memory[43]<=12'b0;
memory[44]<=12'b0;
memory[45]<=12'b0;
memory[46]<=12'b0;
memory[47]<=12'b0;
memory[48]<=12'b0;
memory[49]<=12'b0;
memory[50]<=12'b0;
memory[51]<=12'b0;
memory[52]<=12'b0;
memory[53]<=12'b0;
memory[54]<=12'b0;
memory[55]<=12'b0;
memory[56]<=12'b0;
memory[57<=12'b0;
memory[58]<=12'b0;
memory[59]<=12'b0;
memory[60]<=12'b0;
end
else if(start_process) begin
……………………
end
else begin
…………
end
带宽是数据通路的宽度,你这个不是数据通路。
跟你放在多个always里是完全一样的。
没有关系的,
谢谢大神们的帮助
这个跟数据带宽无关,即使你放到其他always综合效果一样
我昨天开了一个reg [8:0] memery [16383:0],always里循环位移赋值,跑simulation人就傻掉了。
