Cómo pasar una señal de un módulo a otro usando el operador de puntos en verilog

0

Tengo un módulo de memoria que consiste en una memoria

module memory(clk,rst,addr,data,wrt,rd); 
reg [7:0] mem [254:0];

Estoy usando este módulo de memoria en el módulo de ejecución y quiero usar la memoria sin replicarla nuevamente en el módulo de ejecución.

module execute(decoded_instr,clk,rst,instr_in);
if(instr_in[3:2] == 2'b00)
      PR = mem[AR];
    else if(instr_in[3:2] == 2'b01)
      DR = mem[AR];
    else if(instr_in[3:2] == 2'b10)
      GR = mem[AR];

Un método es copiar el contenido apuntado por el registro AR en un registro temporal en el módulo de memoria y usar este registro temporal en el módulo de ejecución como

temp_AR <= mem[AR];

y ate temp_AR en el módulo de ejecución y use temp_AR como

      PR = temp_AR;

Mi pregunta es, ¿hay alguna forma de realizar la misma operación con el operador de puntos y acceder a la memoria?

Gracias de antemano

    
pregunta daut

1 respuesta

1

Su enfoque no sería sintetizable (es decir, no se traduciría a hardware real). No desea utilizar una puerta trasera en la matriz de memoria, es como agregar puertos de lectura que no existen.

Supongo que está intentando construir una implementación canalizada. En el ciclo 1, lea el contenido de la memoria en la dirección AR. En el siguiente ciclo, decodifique el valor que obtuvo y asigne PR, DR o GR según la decodificación. Observe que no tiene que volver a leerlo de la memoria, ya lo guardó en el ciclo anterior.

    
respondido por el Alain

Lea otras preguntas en las etiquetas