Desde el enlace mencionado, ancho de datos y ancho de dirección es 8 bits . Por lo tanto, puede abordar un total de 256 bytes (2 ^ 8 = 256) de espacio de memoria. Esto es igual que RAM_DEPTH
(1 < < 8 = 256). También tenga en cuenta que el ancho de data
es de 8 bits .
Durante una escritura , la dirección se decodifica y se selecciona fila única . En esa fila completa , se escribe data
. Eso significa que, todos los 8 bits están escritos en conjunto . Por lo tanto, no hay necesidad de selección de columna .
parameter DATA_WIDTH = 8 ;
parameter ADDR_WIDTH = 8 ;
parameter RAM_DEPTH = 1 << ADDR_WIDTH;
//...
inout [DATA_WIDTH-1:0] data;
input [ADDR_WIDTH-1:0] address;
//...
mem[address] = data;
//...
Del mismo modo, durante la fase de lectura , los datos de salida se definen como:
reg [DATA_WIDTH-1:0] data_out ;
Por lo tanto, cada vez que se emite un comando de lectura, una fila completa de la memoria se recupera de la dirección dada y aparece en las líneas de salida.
Veamos la memoria de muestra que se muestra a continuación. En la memoria de muestra, ancho de datos es cuatro bits y la profundidad es ocho bits . Si la dirección de entrada es 3'b100
y los datos de entrada son 4'b1010
, entonces todos los cuatro bits se escriben en la memoria. Por lo tanto, la fila entera está llena de datos.
Llegandoatupregunta:
¿Unramnormalrequieretenerundecodificadordedireccióndefilaycolumna?
Eldecodificadordedireccióndefilaesnecesarioparaseleccionarunadirección/lugarparticularenlamemoria.Sibiendireccióndecolumnanoesobligatorioestarpresente.
Enalgunosprotocolos,seproporcionaunaselecciónadicionaldebyteenableparaescribirenbytesparticulares.Peroesenoeselcasoaquí.Sitienequedecirmemoriade64bitsydeseaescribirdatosde4bytes,sedebeproporcionarunhabilitacióndebytesadicionalaenmascararotrosbytes.
Consulte Aspectos básicos de la memoria ,