Buses y Periféricos Práctica 1 PRACTICA 1. Diseñar un circuito de transmisión/recepción serie a una frecuencia de 1200 baudios, ocho bits de datos un bit de paridad y dos bits de stop El transmisor dispondrá de una entrada de control que pondrá en marcha el circuito, el cual cargará el dato de una entrada y los transmitirá. Si al final de la transmisión la entrada de control todavía está activada, tomará el siguiente dato y lo transmitirá, etc. El receptor dispondrá igualmente de una entrada de control que en cuanto sea activada pondrá en marcha el proceso de recepción de datos. Al finalizar, el dato estará en un registro de salida y una señal indicará que el registro está disponible. Si no se ha recibido dato o ha ocurrido algún error se indicará con una señal de control. Las líneas de datos se comportarán de la siguiente manera: Mientras no haya transmisión se mantendrá a nivel alto Iniciará la transmisión poniendo la línea a nivel bajo durante 833 (marcos) microsegundos A partir de ahí y en cada marco la cambiará conforme a los datos a transmitir, comenzado por el bit menos significativo. Tras los datos se transmite un bit de paridad que estará a cero si la paridad del dato transmitido es par y a uno si es impar (usando paridad par) Finalizado esto se mantendrá la línea a nivel alto al menos durante dos marcos. A continuación ya puede venir un nuevo start bit o se mantendrá la línea en alto hasta que ocurra. Opcional. Detectar cuándo hay sobre escritura en los registros de entrada o salida. Líneas de control que indiquen cuándo se debe colocar un nuevo dato a la entrada de transmisión o cuándo se debe retirar el dato recibido. Registros adicionales de entrada y de salida con sus correspondientes líneas de control, etc. Añadir opciones de selección de velocidad, paridad, tamaño del paquete de datos, número de stop bits. 1 Buses y Periféricos Práctica 1 Anexo Algoritmo de Transmisión Inicialmente la línea de datos de salida debe estar a 1 Si la señal de control está activa Poner a cero la línea de datos (Start bit) Cargar los datos de entrada en el registro. (esperar 833 microsegundos) Para cada uno de los bits de datos Desplazar el registro un bit a la derecha Sacar el bit desplazado por la línea de datos Si el bit es uno, incrementar contador (control de paridad) (esperar 833 microsegundos ) Si el contador es par sacar un uno por la línea de datos Sino sacar un cero. (esperar 833 microsegundos) Poner la línea de datos a uno (esperar 833 microsegundos) Poner la línea de datos a uno (esperar 833 microsegundos) fin sí volver arriba. Esto se puede traducir a una serie de estados. La duración de cada paso debe ser 833 microsegundos Estado 0: a) Si la señal de control está a cero, mantenerse en este estado b) Si la señal de control está a uno pasar al estado 1 Estado 1: a) Pone a cero la línea de datos de salida (Start bit) b) Carga los datos de entrada en el registro c) Inicializa un contador d) Pasa al estado 2 Estado 2: a) Desplaza el registro un bit a la derecha (LSB primero) b) Toma el bit saliente y lo sitúa en la línea de datos de salida c) Comprueba el estado del bit desplazado con vistas a controlar la paridad del dato d) Incrementa el contador e) Si el contador es 8 salta al estado 3 si no vuelve al estado 2 2 Buses y Periféricos Práctica 1 Estado 3: a) Si la paridad ha sido par pone un cero en la línea de datos Si la paridad ha sido impar pone un uno en la línea de datos b) Pasa al estado 4 Estado 4: a) Pone la línea de datos de salida a uno (1 º Stop bit) b) Pasa al estado 5 Estado 5: a) Pone la línea de datos de salida a uno ( 2º Stop bit) b) Vuelve al estado 0 El siguiente paso sería extraer los componentes del camino de datos y confeccionar la máquina de estados que lo gobierne. El asunto de controlar la paridad debe idearlo el alumno. Puede usar un contador que cuente el número de unos que se van transmitiendo o algún otro mecanismo que se le ocurra. 3 Buses y Periféricos Práctica 1 Algoritmo de Recepción Inicialmente la señal de datos de entrada está a 1 Si la señal de control está activa Esperar a que la línea de datos cambie a cero Cuando cambie a cero (esperar 833 microsegundos) (esperar 833/2 mircrosegundos más) Para cada uno de los bits de datos Cargar el valor de la línea de entrada de datos Desplazar el registro un bit a la izquierda Si el bit es uno, incrementar contador (esperar 833 microsegundos ) Cargar el valor de la línea de datos Compararlo con el bit menos significativo del contador Si son diferentes generar error (esperar 833 microsegundos ) Si el valor de la línea de datos es diferente de 1 generar error (esperar 833 microsegundos) Si el valor de la línea de datos es diferente de 1 generar error (esperar 833 microsegundos) fin sí volver arriba. Se espera que el alumno sepa extraer de este algoritmo el diagrama de estados, bastante semejante al ya expuesto para la transmisión. 4