entendiendo cómo funciona PIC GPIO

4

Estoy intentando entender un poco cómo funciona el pin IO. Tomé como ejemplo este PIC . La imagen de los pines IO es así:

¿Qué significa el símbolo en amarillo? ¿Significa que la Q toma el valor de D solo al caer el borde del reloj?

Creo que entiendo cómo funciona la conexión roja. si D = 1, luego de que D se transfiere a Q, tendremos Q = 1, por lo que Q '= 0 (Q' es Q-bar, es más fácil hacerlo). Así que en el push-pull, la puerta de la P-MOS es 0 y la puerta de la N-MOS es 0, por lo que tenemos VDD en el pin de E / S. Si D = 0, Q = 0, entonces Q '= 1 y la puerta de P-MOS y N-MOS son 1, por lo que tienen VSS en el pin de E / S. También entendí más o menos cómo funciona la parte inferior (para entrada). Pero hay muchas cosas que no entiendo:

¿Cuál es el propósito de las conexiones azules?

¿Qué es exactamente el bus de datos? Pensé que los datos estaban escritos en el registro LATA y rojos en el registro PORTA.

¿Cómo exactamente colocan los latches D los valores correctos en el puerto de E / S?

    
pregunta roi_saumon

2 respuestas

1
  

¿Qué significa el símbolo en amarillo? ¿Significa que la Q toma la   ¿Valor de D solo al caer el borde del reloj?

Dado tu nivel de pregunta, no creo que importe.

Las señales de reloj no se definen específicamente en esta hoja de datos, aunque puede inferir que se derivan del reloj interno del sistema que controla la máquina de estado de la CPU. Muestran un borde descendente, que no te dice mucho, excepto que es probable que sea un desencadenante de borde bajo, pero creo que puedes ignorar ese detalle al escribir código.

(Siempre he encontrado que estos diagramas son más precisos que el texto. Si el texto y los diagramas no están de acuerdo (ya veces no están de acuerdo), entonces el diagrama siempre ha sido correcto (según mi experiencia) y el texto es incorrecto Así que realmente creo que tienden a mantener los diagramas precisos.)

Si está examinando los pines del puerto externo con un osciloscopio y también observa los bordes del reloj (si selecciona un modo de pin que le permite verlo), puede asociar este borde con lo que ve en el alcance. Y eso puede ser importante para usted si le interesa saber más sobre los retardos de fase de salida del pin de E / S en relación con los ciclos de reloj.

  

¿Qué es exactamente el bus de datos?

Es un bus interno, dentro de la CPU. Los buses internos obtienen nombres como RBUS o QBUS. Significan algo para un diseñador. En su caso, solo puede asumir que es un bus de datos de 8 bits de ancho que es válido en el borde descendente de las entradas CLK que ve con el símbolo "borde bajo" marcado en amarillo.

Supongamos que tiene una instrucción que escribe en PORTA, PORTB o PORTC, etc. No es una instrucción de modificación de bits, sino una que solo escribe un valor de 8 bits en un puerto. Luego, estos datos se colocarán en el bus de datos y luego uno de WR LATA, WR LATB o WR LATC también se activará al activar HI-to-LO para bloquear el valor en el puerto apropiado del puerto.

El diagrama solo muestra solo uno de los bits de datos del bus de datos. Se supone que debes comprender mentalmente que este diagrama se aplica 8 veces, una vez por cada pin PORTA válido. (Lo mismo sería cierto, también, para PORTB y así sucesivamente.) Entonces, hay 8 de estos D-flops para cada puerto. Y solo una de las líneas WR LAT * se activará (yendo a LO), dependiendo de la decodificación de la instrucción, al escribir un valor.

Tenga en cuenta que \ $ Q \ $ se retroalimenta a través de un búfer de tres estados a este bus de datos. Entonces, si el procesador quiere leer el último valor que se escribió en este puerto de bloqueo (8 bits en total, pero como ya señalé, solo ves uno de los D-flops aquí y no todos), entonces NO activa el Línea WR LATA, en absoluto. En su lugar, deja WR LATA inactivo y en su lugar activa RD LATA, que habilita el búfer de triple estado que luego impulsa el bus de datos con el valor de los 8 flops D para PORTA. De esta manera, el procesador puede leer el pestillo, en lugar de escribir en él.

  

¿Cómo exactamente colocan los latches D los valores correctos en el puerto de E / S?

Hay cuatro casos que se derivan de las cuatro combinaciones posibles de esos dos flops D:

$$ \ begin {split} \\\\\\\\ DATA \ quad \ end {split} \ begin {split} PMOS \ quad \ quad \\\\ TRIS \ quad \ quad \\ \ begin {array} {c | cc}  &erio; 0 & 1 \\ \ hline 0 & APAGADO & APAGADO\\ 1 & ON & APAGADO \ end {array} \ end {split} \ quad \ quad \ quad \ quad \ begin {split} NMOS \ quad \ quad \\\\ TRIS \ quad \ quad \\ \ begin {array} {c | cc}  &erio; 0 & 1 \\ \ hline 0 & ON & APAGADO\\ 1 & APAGADO & APAGADO \ end {array} \ end {split} $$

La tabla anterior se desarrolló al examinar las compuertas OR y AND que conducen el PMOS y el NMOS que ve cerca del teclado de E / S. (El PMOS está activo si su puerta es BAJA. El NMOS está activo si su puerta está ALTA.)

Como puede ver fácilmente, tanto PMOS como NMOS están deshabilitados con \ $ TRIS = 1 \ $, independientemente del valor del bit de datos que se enclavó. Este must será el caso si el pin debe actuar como entrada. De lo contrario, uno de los transistores PMOS o NMOS estaría impulsando el pin de salida y esto se estropearía completamente usando el pin como entrada.

Con los transistores PMOS y NMOS apagados, ahora es posible leer el pin como datos (a través del "búfer de entrada TTL") o bien como analógico, sin pasar por el búfer de entrada TTL e ir directamente a una entrada ADC o Módulo LVD.

Además, ahora puede ver que si \ $ TRIS = 0 \ $ entonces uno u otro de los transistores PMOS o NMOS estarán activos, dependiendo del valor del bit de datos que se enclavó. Si los datos son un "0", el NMOS estará activo. Si los datos son un "1", el PMOS estará activo.

En ningún caso, tanto el PMOS como el NMOS estarán activos al mismo tiempo.

    
respondido por el jonk
0

Para responder primero a su pregunta sobre las conexiones azules, el registro TRIS contiene un '1' para la salida declarada en TRI (ni el transistor de canal P o N está activado). Para que ambos estén desactivados, la puerta del canal P necesita un 1 y la puerta del canal N necesita un 0. La lógica de las puertas AND y OR determina que cuando el flip-flop TRIS es 1 esa condición existe. Cuando es 0, las compuertas reflejan la salida / Q del registro de datos (el flip-flop superior), ya que los transistores forman un inversor que significa que el pin de salida refleja el estado del registro de datos.

Los flip-flops se activan con bordes en el borde descendente, de modo que los flip-flops adquieren el valor del bus de datos en el borde descendente de sus respectivos relojes.

Las señales de control y las señales del bus de datos se controlan mediante la lógica de control de la CPU mientras se ejecutan las instrucciones de escritura de TRISA y puerto / latch. El valor correcto aparece en el bus de datos, aparece el borde del reloj y se escribe el pestillo. Esto generalmente ocurre al final del ciclo Q4 (última parte del ciclo de instrucción). Consulte el manual de referencia de rango medio , por ejemplo:

Dadoqueleeellugardelaestacamuchoantesenelciclodeinstrucciones(finaldelcicloQ1),siescribeyluegoleeelregistrodelpuertoinmediatamentedespuésdequecambie,esposiblequenohayatenidotiempodecambiardeestado.EstopuedecausarerroressutilessinoescribeexclusivamenteenelregistroLATAenlugardePORTA.Ylacargadesalidapuedetenerefectossimilaresinclusoparaunasincronizaciónmásfavorable,dependiendodeloqueestéconectadoalpin.Estoseconocecomoelproblemade"lectura-modificación-escritura".

    
respondido por el Spehro Pefhany

Lea otras preguntas en las etiquetas