Como su nombre indica, una ROM almacena información cuyo propósito no es ser modificada una vez escrita, sino almacenar valores de referencia para algún proceso del sistema. Por ejemplo :
Como su nombre indica, una ROM almacena información cuyo propósito no es ser modificada una vez escrita, sino guardar valores de referencia para algún proceso del sistema. Por ejemplo :
- Look-Up Table (LUT) con valores precalculados para acelerar cálculos matemáticos
- Look-Up Table (LUT) con valores precalculados para acelerar cálculos matemáticos
- Valores de configuracion o inicializacion del sistema (como una [ROM-BIOS](https://es.wikipedia.org/wiki/BIOS))
- Valores de configuracion o inicializacion del sistema (como una [ROM-BIOS](https://es.wikipedia.org/wiki/BIOS))
En el caso de valores de configuración, es fundamental guardar su integridad, por lo que tiene sentido usar una ROM para ellos.
A diferencia de una RAM o una memoria secuencial, las ROM pueden implementarse como circuitos **combinacionales**. Simplemente se definen cuatro elementos:
- Un vector de registros (**reg[][]**) que almacena los valores de la memoria
- Una entrada de dirección de lectura
- Una salida con el dato leído
- Un bloque combinacional que asigna el valor almacenado a cada posición
```verilog
```verilog
moduleROM(
//Direccionamiento de 4 bits
inputwire[3:0]address,
//Cada palabra en memoria tiene 4 bits
outputreg[3:0]out
);
//Como la memoria es de solo lectura, su tamaño y contenido
//son fijos y se definen al momento de crear el módulo
//En este caso, se implementa un codificador BCD / Aiken
always@(address)begin
case(address)
4'b0000:out=4'b1111;
4'b0001:out=4'b1110;
4'b0010:out=4'b1101;
4'b0011:out=4'b1100;
4'b0100:out=4'b1011;
4'b0101:out=4'b1010;
4'b0110:out=4'b1001;
4'b0111:out=4'b1000;
4'b1000:out=4'b0111;
4'b1001:out=4'b0110;
4'b1010:out=4'b0101;
4'b1011:out=4'b0100;
4'b1100:out=4'b0011;
4'b1101:out=4'b0010;
4'b1110:out=4'b0001;
4'b1111:out=4'b0000;
endcase
end
endmodule
```
```
## Código sintetizado
El sintetizador **Synplify Pro** reconoce que la estructura descrita corresponde a una memoria ROM: