21.01.2026

Tenemos el oscilador
Tenemos un módulo que realiza un puerto serial

Tenemos que sacar las señales x, y, z  del
oscilador realizado en el FPGA a través del
puerto serial.

Podríamos configurar la transmisión a 8 bits,
pero todos los valores son posibles para
transmitir porque las variables almacenan
números binarios. No existe alguna manera
para realizar un protocolo de comunicación.

Si usamos 9 bits para transmitir los datos,
podemos enviar los datos con el primer bit
en 1, y realizar comandos cuando el primer
bit es 0.

Tenemos los comandos Inicio y Fin

El estado inicial será Calcula
una vez que termine de calcular se va al
estado EnvíaDatos

Esta idea es para el programa en la computadora

while 1 :
	if Inicio
		recibimos 12 números,
		cada número debe inicial con el bit 0, si no es un error
		los primeros 4 bytes forman la señal x, 
		los siguiente 4 bytes forman la señal y,
		los últimos 4 bytes forman la señal z
		recibimos el comando de Fin
			y continuamos


Estados
  Calcula       Son cinco ciclos de reloj
  EnvíaDatos    Miles de ciclos de reloj

Necesitamos 1 bit para codificar cada estado
El estado actual también se indica con 1 bit

El estado por defecto es Calcula

-----------------------------------------------
¿Cuáles son nuestras entradas y salidas?

Entrada la señal de OPR
La señal de OPR nos indica el fin de 
Calcula -> EnvíaDatos

Estamos en el estado EnvíaDatos,
si terminamos de enviar los 12 valores cambiamos
al estado Calcula

Necesitamos una señal de salida para encender y
apagar el oscilador.

HABILITA  1, si Calcula
HABILITA  0, si EnvíaDatos


  Edo     Edo   E      S
  act.    sig.
Calula  Calcula OPR=0  HABILITA=0
Calcula Envía   OPR=1  HABILITA=1
Envía   Envía   FIN=0  HABILITA=1
Envía   Calcula FIN=1  HABILITA=0


El módulo RS232 pone la señal de BUSY a 1
cuando termina de enviar, si no, BUSY es igual a 0.
Con la entrada de BLOCK=1 puede parar el envío de datos.

