请教verilog 二维数组怎么赋值

如题所述

把移位代码改成:D_x <= { D_x[16*7-1:0] , Xi}; //舍去高16位,低16位由新数据补齐
这句也要改成: data_x[j] <= D_x[16*(j+1)-1:16*j]; //把D_x分成8段,每段存到数组data_x的一个单元

另外,代码里还有一些错误,不知道如何仿真通过的。
代码改了一下。以下的代码我是仿真过了的,

always @ (posedge clk or rst_n)
if(!rst_n)
D_x <= 0;
else
//D_x <= { D_x[16*7-1:16] , Xi}; //舍去高16位,低16位由新数据补齐
D_x <= { D_x[16*7-1:0] , Xi}; //舍去高16位,低16位由新数据补齐

genvar j;
reg [15:0]data_x[0:7];//8个16位的数组
generate for(j=0;j<8;j=j+1)
always @ (posedge clk or rst_n)
begin:data_to_memory
if(!rst_n)
data_x[j] <= 0;
else
data_x[j] <= D_x[16*(j+1)-1:16*j]; //把D_x分成8段,每段存到数组data_x的一个单元
end
endgenerate
温馨提示:答案为网友推荐,仅供参考
相似回答