Repository navigation
Transmisión serie (TX)
Vamos a estudiar las bases de la comunicación serie, de forma práctica, empezando por el transmisor serie más simple que se pueda.
Las comunicaciones serie asíncronas ya las vimos a nivel práctico en el capítulo 30: Puerto serie de los tutoriales de Electrónica digital para makers con FPGAs libres
La estructura de la trama a enviar por la línea serie es como la mostrada en esta figura:

En las FPGAs se cumple que los circuitos usan menos recursos cuanto más cercanas sean las señales de temporización al reloj del sistema. Es decir, que cuanto más rápido se hagan las operaciones, menos recursos se necesitarán. Por ello, el transmisor más sencillo será el que funcione a la velocidad del reloj del sistema. Para el caso de la tarjeta Alhambra II, será una velocidad de 12MHz (Es decir, un transmisor que envía 12 millones de bits por segundo)
Cuanta más información se envíe, más recursos necesitaremos. Por ello, el transmisor serie más sencillo será aquel que envíe un único bit a la velocidad de 12Mhz
En las transmisiones serie asíncronas (puerto serie), la línea de transmisión está a '1' cuando se encuentra en reposo (es decir, cuando no se transmite nada). Por tanto, el circuito transmisor serie más sencillo es aquel que no hace nada: Deja la línea siempre en reposo. Es un transmisor de 0 bits

TODO: Actualizar pantallazo (nuevos biestables DFF)
- Recursos gastados
| Elemento | Cantidad |
|---|---|
| Celdas lógicas | 1 |
| Celdas IO | 2 |
En las transmisiones serie asíncronas el comienzo del envío de un dato nuevo (una nueva trama) se realiza poniendo a 0 la línea durante un tiempo de bit. Es lo que se llama el Bit de start. Como nuestra velocidad es la del reloj del sistema, el bit de start tiene una duracińo de 1 ciclo
Este circuito pone la línea en reposo en el ciclo 0 (instante inicial). Luego, en el ciclo 1, la pone a 0 (bit de start) y en el resto de ciclos (ciclos > 1) lo deja otra vez a 1

TODO: Actualizar pantallazo
El efecto que causa en el receptor (en neustro caso es el ordenador), es que al recibir el bit de start empieza la captura de datos a la velocidad de 12Mbps. Los bits que recibe están todos a uno, por lo que el dato recibido es siempre 0xFF
Cada vez que apretemos el botón de RESET, se envía el número 0xFF a la velocidad de 12_000_000 bps
- Recursos gastados
| Elemento | Cantidad |
|---|---|
| Celdas lógicas | 5 |
| Celdas IO | 2 |
TODO
Para probar su funcionamiento necesitamos utilizar un programa de comunicaciones serie que tenga la opción de recibir datos crudos (directamente en binario) así como la posibilidad de configurarlo a la velocidad de 12Mbps. El script communicator cumple estos requitos.
Primero lo configuramos: Es muy importante establecer la velocidad a 12_000_000. Esto lo hacemos desde la pestaña Serial port y en la propiedad Baudrate

Una vez abierto el puerto serie desde el script communicator, realizamos la carga del circuito y nos aparecerá en la consola el dato 0xFF

Cada vez que apretemos el botón de RESET se recibirá un nuevo valor 0xFF:

La luz de RX de la Alhambra-II emitirá un flash (indicando que el PC ha recibido un dato)
Vamos a realizar mediciones para comprobar que en la línea serie obtenemos la señal correcta. Con este circuito realizamos las medidas con el LEDOscopio de 8 bits y con el Analizador lógico Saleae

Esta es la señal que vemos con el Pulse View. Efectivamente, es un pulso invertido. La señal serie está en reposo, luego llega un pulso a 0 de un ciclo de reloj y después se pone a 1 el resto del tiempo

Si añadimos el protocolo serie (UART) vemos que evectivamente el elemento recibido es el valor 0xFF
En los LEDs de la Alhambra II vemos lo que ha ocurrido en los primeros 8 ciclos de reloj. En el ciclo 0 la línea está en reposo (1), en el ciclo 1 llega el bit de start (se pone a 0) y en el resto de ciclos la línea vuelve a 1. En los LEDs veremos esto:
| LED0 | LED1 | LED2 | LED3 | LED4 | LED5 | LED6 | LED7 |
|---|---|---|---|---|---|---|---|
| 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
El LED0 representa el ciclo 0. El LED7 el ciclo 7
TODO
Vamos a seguir las prueas del puerto serie. Partimos del ejemplo
- Unidad de PWM de frecuencia aproximada
- VGA Retro: Puesta en marcha. MonsterLED
- Pines de Entrada/Salida
- Control de LEDs
- SPI esclavo
- SPI Maestro
- Display SPI de 4 dígitos de 7 segmentos
- Entrada y Salida de Bits con Componentes Virtuales
- Memorias
- Entradas y pulsadores
- Señales del sistema. Medición con el LEDOscopio
- Controlador LCD 16x2
- Señales periódicas y temporización
- Buses: Medio compartido
- Memoria Flash SPI
- Conexión de LEDs en la Alhambra II. Placa AP‐LED8‐THT
- Periféricos PMOD
- Fundamentos. Sistema Unario
- Autómatas
- Pantallas de vídeo. Fundamentos. Display de 1x4 LEDs
- Pantallas de vídeo. Fundamentos. Matriz de 4x4 LEDs