¿Es posible inferir de manera eficiente una RAM con puertos "peek" aparte de los puertos estándar habituales?
Una memoria RAM de 32 bits x 4 puede tener un puerto para mirar los datos justo antes de los datos actuales a los que accede la dirección de lectura. El código aproximado sería ...
assign peek = mem [ (rd_addr + 1) & 2'b11 ]; // RAM peek port (read).
aparte del código RAM de stock ...
reg [31:0] mem [3:0]; // 2D array.
always @ (posedge clk) if (wr ) mem [ wr_addr ] <= wr_data; // Write.
always @* rd_data = mem [ rd_addr ]; // Main Read.
Sería bueno inferir un bloque de RAM SINGLE con algunos circuitos de lectura adicionales (¿muy simples?) (ISE infiere 2 bloques de RAM). Supongo que esto no debería requerir una verdadera RAM de puerto de lectura dual (circuitos de lectura independiente) o duplicación de RAM, ya que las direcciones de lectura siempre están relacionadas (siempre 1 adelante). ¿Existe una manera eficiente de implementar lo anterior en un FPGA moderno típico?
EDITAR: Olvidé agregar habilitación de escritura!
EDITAR: Esta memoria RAM está destinada a la decodificación de video. Por ejemplo, un flujo de píxeles recibidos como 0x1234_5678 0x023_45678, 0xAAAA_AAAA se descodificaría como 0x1234 (16 bits superior), 0x5678_23 (inferior de 16 bits + 0x23 desde el siguiente, se omite 0x678A_AAAAAAa etc (. El algoritmo de decodificación se deriva de un LFSR que se asigna al transmisor y cambia para cada píxel.