Comprensión del comportamiento básico de Verilog: módulo RAM simple

3

Mi interés está más en cómo se verá el circuito sintetizado real y en qué componentes se construirá. Aquí hay un ejemplo de módulo de RAM 64x1:

module ram64X1 (clk, we, d, addr, q);

   input clk, we, d;
   input [5:0] addr;
   output q;
   reg [63:0] temp;

   always @ (posedge clk)
      if(we)
         temp[addr] <= d;
   assign q = temp[addr];

endmodule

Solo para asegurarme de que entiendo la lógica: addr indexa un punto particular en la matriz de 64x1 bits. Toma el valor d y lo coloca en esa entrada, mientras que también devuelve el valor antiguo q que estaba allí antes. ¿Es esto correcto?

Mi pregunta principal es qué circuitos se traducirán si sintetizamos, por ejemplo, una biblioteca de células estándar. El objeto reg parece ser una matriz de flip-flops cronometrados por clk . No sé qué circuitos lógicos toman addr[5:0] e indexan en esta matriz. ¿Un mux realmente amplio de 64 a 1 con addr como el cable seleccionado? También me gustaría saber cómo se construyen esos muxes normalmente.

    
pregunta JDS

1 respuesta

2

La respuesta a su pregunta depende en gran medida de la tecnología específica a la que se dirige. Además, las herramientas para esa tecnología deberán decidir si pueden usar estructuras de RAM predefinidas o una serie de flip-flops en función del comportamiento que haya especificado.

En su ejemplo, tiene una operación de escritura síncrona (la declaración always ), pero una lectura asíncrona (la declaración assign ). En muchas tecnologías, esto se traduciría en una serie de FF con entradas habilitadas. La entrada de datos y la entrada de reloj se conectarían a todos ellos, y un decodificador de 6 a 64 traduciría el bus de direcciones en señales de habilitación individuales. Para la lectura, un mux de 64: 1 separado, también controlado por el bus de direcciones seleccionaría el bit de salida.

Si cambia el comportamiento para que la lectura también sea sincrónica, la mayoría de las tecnologías tendrán una estructura de RAM que se puede usar.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas