¿Cómo se relaciona una CPU con los pines GPIO?

0

Estoy intentando implementar un clon mips1 simple en Verilog en este momento, funciona bien en simuladores, pero también quiero ejecutarlo en un FPGA real.

Básicamente, me gustaría enviar / recibir caracteres a la CPU en ejecución a través de UART, también me gustaría leer los valores de los botones / interruptores en el FPGA. Ahora me pregunto cuál es la mejor manera de interconectar los pines GPIO y UART.

La única idea que se me ocurre es tener chips separados que se ejecuten en el FPGA, directamente conectados a los pines GPIO y a la interfaz UART. Estos chips solo leerían / escribirían en ubicaciones de memoria específicas y realizarían su trabajo basándose en esos datos.

También podría imaginar que necesitaré algún tipo de controlador de interrupción para que la CPU pueda ejecutar algunos fragmentos de código cuando se presiona un botón. Pero solo puedo imaginar que esto sea útil para la entrada de algo, no cuando quiero que se encienda un LED.

¿Cómo hace que un microcontrolador o una frambuesa enciendan un LED?

    
pregunta Tom K

1 respuesta

3

Lo que quieres es un "periférico mapeado en memoria". Agregue algo de lógica al bus de direcciones para que, si la dirección coincide con un patrón específico, en lugar de que la lectura / escritura se enrute a la memoria, se dirijan a un periférico.

El periférico contiene uno o más registros, que se pueden conectar directamente a las piezas del periférico. Por ejemplo, al leer desde la dirección 0x1234, puede leer directamente del GPIO.

Las interrupciones son útiles pero no esenciales.

Puede que le resulte conveniente implementar los protocolos de bus "AXI" o "AMBA", especialmente si desea conectarse a bloques de IP preexistentes para periféricos.

(Aprendí esto de Micro Interfacing Circuits de RA Penfold, pero es un libro extremadamente antiguo)

    
respondido por el pjc50

Lea otras preguntas en las etiquetas