Estoy describiendo un sistema en VHDL. Este sistema ya contiene un procesador, un controlador DDR SDRAM y un controlador VGA. VGA lee píxeles de SDRAM (ya validado y probado en FPGA).
Aunque VGA y SDRAM ya se están comunicando entre sí, todavía necesito Para implementar la conexión entre el procesador y la SDRAM. Al final, lo que yo. La intención de tener es un procesador que dibuja en el framebuffer almacenado en SDRAM. Luego, ocurre un cambio de página y VGA comienza a buscar la nueva imagen que dibujó el procesador.
Para indicarle al VGA que busque desde la nueva ubicación, me gustaría informar el controlador VGA (usando la memoria mapeada io) la nueva dirección de la nueva imagen. Una estrategia simple que pensé fue poner un mux y verificar si el rango de direcciones cae en los registros del controlador VGA o en el rango de direcciones del caché. Además, ¿tendría que preocuparme por diferentes relojes? dominios? En caso afirmativo, ¿qué posibles problemas me deberían importar?
Por ejemplo, en algún momento en el pasado vi un código de x86 que escribe (usando instrucción de outb) y la siguiente instrucción fue un inb para el mismo y / o una ubicación relacionada. En este caso, ¿necesitaría modificar la lógica del procesador? para detenerse en tales operaciones? En caso afirmativo, ¿cuántos casos implementar? Cuántos ¿Interfaces para cuidar?
Además, en el arranque, ¿cómo se usa el caché si todas las entradas se invalidan? Yo creo Hay una imagen ROM con el código de inicio. ¿Podría existir también una memoria RAM local temporal para las escrituras hechas por el código almacenado en la ROM (instrucciones sw)?
Currículum: necesito información sobre cómo implementar la jerarquía de memoria circuitos: cachés, memoria mapeada io, TLBs, memoria virtual, etc. Y cómo todo esto se comunica entre sí. Yo se como implementar cachés y TLB, por ejemplo. Pero no estoy seguro de cómo conectarlos. juntos. Podría usar algo que funcione (como la idea mux). Pero yo quiero Seguir los diseños que se establecen en la industria.
Lo que ya he estudiado: - como ejecutar mips - Arquitectura de la computadora (Patterson) - Manuales MIPS - Manuales de ARM - Manuales de Intel
Pero ninguno explica en detalle.
Si hay muchas formas de implementar, solo muéstrame una que conozca, por favor. Incluso si se trata de código fuente o un diagrama de bloques. De nuevo, no necesito el Explicación de cómo funciona internamente. Solo necesito saber las interfaces entre los módulos.
Gracias a todos