GPIO = pines digitales + analógicos; PIO = solo pines digitales ?
EDITAR: PIO definido en la hoja de datos como "Entrada/salida programable, también conocido como E/S de propósito general"
GPIO = pines digitales + analógicos; PIO = solo pines digitales ?
EDITAR: PIO definido en la hoja de datos como "Entrada/salida programable, también conocido como E/S de propósito general"
Cualquier acrónimo utilizado en un documento técnico debe ser definido.
Dicho esto, 'GPIO' significa 'Entrada/Salida de Propósito General'. Para microcontroladores esto generalmente significa un pin que puede ser configurado a través de registros por el host para ser un pin de entrada, salida o bidireccional.
A veces los pines GPIO también se comparten con otras funciones, como UART, SPI o I2C. Esa selección de modo también se realiza a través de un registro del host.
No hay mucha ambigüedad con GPIO, entonces.
‘PIO’, por otro lado… puede significar varias cosas. Solo por nombrar algunas: Entrada/Salida Programada, Entrada/Salida Paralela, Entrada/Salida Periférica, y como mencionas, Entrada/Salida Programable. Bastante sobrecargado ese acrónimo.
Para entenderlo tienes que obtenerlo del contexto. Existe literatura que lo utiliza de cada manera diferente en 8048/8042, 8080, Z80, 6502 e incluso antes con minicomputadoras y mainframes. Dejaré que tú, el lector, descubras todas estas diferentes variantes de PIO.
De todas maneras, volvamos a esta década y siglo. ¿Qué significa PIO? Intentemos encontrar el concepto más temprano y general que podamos hallar.
PIO, en el contexto de arquitectura de sistemas informáticos, es un concepto abstracto que significa ‘Entrada/Salida Programada’. Significa utilizar instrucciones de CPU impulsadas por software para mover datos hacia o desde un recurso. Es el tipo más básico de entrada y salida para una computadora, una idea que ha existido desde el inicio de las computadoras.
Hoy en día, las CPUs de microcontroladores/microcomputadoras utilizan PIO para acceder a periféricos lentos como puertos seriales y pines GPIO e I2C.
Para ser claro, la 'P' en 'PIO' no es 'pin' en ningún contexto, pero especialmente en el contexto de la ciencia de la computación. Sin embargo, puedes definir conjuntos de pines de entrada/salida para utilizar PIO (Entrada/Salida Programada) para acceder a ellos. Un buen ejemplo conocido es el puerto de impresora de PC, que es un puerto de E/S de 8 bits mapeado al espacio de E/S x86. Su función se basa en el puerto de impresora Centronics que data de... 1971.
Entonces se podría decir que el puerto de impresora de PC es una Entrada/Salida Paralela, mapeada como una Entrada/Salida Periférica, accedida por Entrada/Salida Programada. O... un PIO que está mapeado como un PIO accedido por PIO. ¿Confundido? Deberías estarlo.
Volviendo a esa definición más temprana entonces. El PIO de la ciencia de la computación (Entrada/Salida Programada) se diferencia del Acceso Directo a Memoria, o DMA, que utiliza hardware dedicado para mover datos eficientemente sin sobrecargar la CPU. DMA se utiliza para periféricos de computadora de mayor rendimiento como gráficos, redes y almacenamiento.
Uniendo todo, utilizarías PIO (carga/guardado de CPU impulsado por software) para configurar los registros de GPIO para realizar la función deseada: entrada, salida, bidireccional o una función especial que se comparte con el pin. También utilizarías PIO para configurar una unidad DMA para realizar una transferencia en bloque hacia o desde Ethernet o hacia un disco duro.
GPIO significa Entrada/Salida de Propósito General.
Estos pines se pueden utilizar para propósitos generales (por ejemplo, LEDs, funcionalidad de encendido/apagado o cualquier cosa).
Algunos pines GPIO se pueden usar para funcionalidades específicas, principalmente para periféricos, como SPI, UART, etc.
No he visto un pin que sea tan específico en funcionalidad que no se pueda utilizar como un pin GPIO, pero puedo imaginar que existen.
Por supuesto, hay pines para VCC, GND, etc., pero esos no son pines de E/S.
Para pines PIO, creo que Eugene Sh. hace un buen comentario. Un pin PIO se puede programar y, por lo tanto, se puede conectar a cualquier periférico, y también se puede usar como un pin GPIO. Así que un pin PIO es más versátil que un pin GPIO, ya que se puede programar para estar conectado a cualquier periférico, mientras que un pin GPIO tiene una conexión cableada a uno o más (pero no todos) periféricos.
Resumen:
Tipo de Pin Puede estar conectado a Tipo MCU FPGA
------------ -------------------------------------------- ---------- --- ---
GPIO E/S, opcionalmente a subconjunto de periféricos Cableado x x(?)
(no GP)IO E/S, solo a subconjunto de periféricos Cableado ? ?
PIO E/S, cualquier periférico(s) Programable x
no (GP)IO VCC, GND, VBat, VIn, etc; no utilizado para E/S Cableado x x
Los pines de Entrada/Salida de Propósito General (GPIO) se llaman así para distinguirlos de los pines de Entrada/Salida periféricos.
Cada pin GPIO se puede configurar como una entrada digital legible por software o como una salida digital programable por software. Ocasionalmente tienen una dirección fija, o una dirección solo programable para grupos de pines, pero el término GPIO se mantiene.
Los pines de Entrada/Salida periféricos tienen funciones específicas para un periférico en particular, como un transmisor o receptor UART, una interfaz SPI, un controlador I2C, un temporizador, una entrada ADC o una salida DAC.
Muchos dispositivos tienen pines de E/S que se pueden programar como GPIO o como un pin de E/S periférico.
El término PIO es mucho menos común que GPIO, pero lo he visto como un término similar y alternativo a GPIO.
Los microcontroladores Raspberry Pi tienen su propia definición precisa de PIO dada en: https://www.raspberrypi.com/news/what-is-pio/ No estoy seguro de hasta qué punto es representativo del uso de otros vendedores.
El video vinculado en esa página: https://www.youtube.com/watch?v=ODlB05xMg04 explica bien su definición. Básicamente es una forma de descargar bit banging a un generador de señal dedicado en el chip para reducir la carga en el microcontrolador, ya que el bit banging puede requerir tiempos de señalización bastante lentos que significarían muchos ciclos de MC desperdiciados.
El Raspberry Pi Pico tiene algunos pines que se clasifican como pines PIO y se pueden utilizar para esta salida programable, y otros pines clasificados como pines GPIO que no pueden.
PIO puede significar 'I/O programado' donde un puerto es controlado directamente por la CPU en lugar de ser accedido a través de DMA (particularmente en referencia a los discos duros IDE y puertos de impresoras en PCs).
También puede significar 'E/S paralelo' donde los datos se envían como un grupo de bits en paralelo sobre varios cables a la vez en lugar de en serie sobre un solo cable. Un ejemplo de esto son los chips periféricos Z80 PIO y SIO. El Z80 SIO envía y recibe datos en serie en dos pines dedicados, y tiene otros pines de E/S que están dedicados a señales de control y estado. El PIO del Z80 tiene dos puertos que pueden enviar o recibir datos de 8 bits a la vez, o pueden ser utilizados como pines individuales programados para emitir o recibir un solo bit (por ejemplo, para operar un relé o leer el estado de un interruptor de palanca).
Los primeros microcontroladores a menudo consistían simplemente en una CPU y dispositivos periféricos unidos en un solo chip, por lo que venían en paquetes grandes con muchos pines. Los microcontroladores modernos han reducido el número de pines al compartirlos con diferentes periféricos, y proporcionan muchas más funciones como convertidores analógicos a digitales (ADC), moduladores de ancho de pulso (PWM), etc.
Cuando un pin está conectado internamente a un dispositivo dedicado como un UART o ADC, generalmente se llama pin 'periférico', y cuando está conectado a un puerto paralelo internamente se llama pin GPIO o 'E/S de propósito general'. Sin embargo, también podría ser simplemente descrito como un pin 'digital', o un bit de un 'puerto'. Algunos ejemplos:
Puertos como E/S Digital General Los puertos son puertos de E/S bidireccionales con pull-ups internos opcionales. La Figura 14-2 muestra una descripción funcional de un pin de puerto de E/S, aquí genéricamente llamado Pxn.
El Puerto 0 es un puerto de E/S bidireccional de 8 bits de drenaje abierto. Como puerto de salida, cada pin puede hundir ocho entradas TTL. Cuando se escriben 1s en los pines del puerto 0, los pines pueden usarse como entradas de alta impedancia.
I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.