Der Verilog-Code, wie Sie sehen, verwendet ein mehrdimensionales Register-Array zum Speichern der Daten.Mehrdimensionale Array-Wertzuweisung in 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;
ich nicht richtig verstehen, was in der letzten Zuordnungsanweisung geschieht, in der ex_mem
den Wert in wdata
zugeordnet ist. Was bedeutet der Teil in den Klammern (wptr[ASIZE-1:0]
), der mit ex_mem
verbunden ist, zurück und an welcher Stelle von ex_mem
wird wdata
gespeichert?
Ich bin mir nicht ganz sicher, was Sie nicht verstehen. 'wptr [ASIZE-1: 0]' wird zu den 'ASIZE' niedrigsten Bits von' wptr' ausgewertet, und wenn es als eine Position in 'ex_mem' interpretiert wird, wird' wdata' an dieser Stelle gespeichert. – mkrieger1