Estoy interesado en diseñar (con verilog) algunas estructuras de memoria que tengan varios puertos de lectura / escritura (digamos 3). He estado estudiando arquitectura y lo que he oído es que estas no son implementaciones de hardware triviales y pueden crear circuitos mucho más lentos.
Con verilog de comportamiento, me imagino que es bastante simple, algo así como:
always @ (posedge clk) begin
if (read_enable) begin
out1 <= mem[read_addr1];
out2 <= mem[read_addr2];
out3 <= mem[read_addr3];
end
//something similar if I want multiple writes
end
Suponiendo que se sintetice, ¿tendré un circuito lento y de mierda, y por qué? ¿Se puede aliviar con un diseño más personalizado utilizando puertas en lugar de códigos de comportamiento?
Gracias