下面的Verilog代码使用多维寄存器阵列来存储数据。verilog中多维数组值的分配
parameter DSIZE = 8;
parameter ASIZE = 4;
input [DSIZE-1:0] wdata;
input wclk,wen;
reg [ASIZE:0] wptr;
parameter MEMDEPTH = 1<<ASIZE;
reg [DSIZE-1:0] ex_mem [0:MEMDEPTH-1];
always @(posedge wclk)
if (wen)
ex_mem[wptr[ASIZE-1:0]] <= wdata;
我没有正确理解在其中ex_mem
在wdata
分配值的最后一个赋值语句会发生什么。括号内的部分(wptr[ASIZE-1:0]
)与ex_mem
关联的部分返回并将ex_mem
的哪个位置返回wdata
得到存储?
我不太清楚你不了解什么。 'wptr [ASIZE-1:0]'计算为'wptr'的'ASIZE'最低位,当解释为'ex_mem'中的位置时,'wdata'被存储到该位置。 – mkrieger1