Introducción a las Interfaces de entrada / salida.

Slides:



Advertisements
Presentaciones similares
Enlace de Datos: Introducción
Advertisements

INTERFAZ DE COMUNICACIÓN DE DATOS Rivas José y Díaz Moisés
Equipo #3 Unidad III: ALU Efraín Corral Eduardo Castillo Elías Alarcón
Procesador El sistema computador se centra en un procesador Aparece la Entrada /Salida Pero un procesador es una piedra si no se comunica con el exterior.
Tema 7: Análisis y diseño con registros
Puerto Serie: La norma RS-232C
CIRCUITOS SECUENCIALES E.U.I.T. Informática de Gijón
SENTENCIAS SECUENCIALES
REGISTROS INTERNOS DEL PROCESADOR.
ORGANIZACIÓN COMPUTACIONAL
RS-232 / RS-485 Introducción RS-232. Características RS-232.
MODULO DE LINEAS DE TRANSMISION
INTERFAZ DE COMUNICACIONES DEL uC PIC 18F8520 USART
RESUMEN: Softmicro de 8 bits Xilinx
COMUNICACIÓN SERIAL Javier Garcia Ramos.
Esquemas de transmisión para señales analógicas y digitales
Programación básica de la interfase RS232 C
Programación en Lenguaje Ensamblador.
Sistemas Digitales Curso 2007/2008 Departamento de Tecnología E l e c t r ó n i c a Periféricos E/S. VIA 65C22 Sistemas Digitales 2º curso Ingeniero Técnico.
Entradas FF Sincrónicas y Asincrónicas
Lenguaje Ensamblador integrantes: Esthela Vianey Vázquez Medina No.30
 SON FUNCIONES LÓGICAS  REPRESENTADAS POR TABLAS DE VERDAD  SIMPLIFICABLES POR LÓGICA BOOLEANA  SIMPLIFICABLES POR KARNAUGH  APLICACIONES: funciones.
Registros y Contadores
ARQUITECTURA DE LOS MICROPROCESADORES DE 8 BITS
Introducción al lenguaje ensamblador
Interfaces de entrada / salida
Interfases de Entrada / Salida
Sobre Ratones.
ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS
Placa de expansión para Comunicaciones C ommunication B oard T ask F orce.
ENLACE RADIO BIDIRECCIONAL
Comunicación Serie.
INTRODUCCIÓN A LAS COMUNICACIONES DE DATOS José Estay A.
INTRODUCCIÓN AL DISEÑO SECUENCIAL: CONTADORES Y REGISTROS
Arquitectura del 8086/8088 TEEL 4011
TIMER 1 El módulo TIMER1 así como el TIMER0 es un temporizador/contador con las siguientes características. Trabaja con 16 bits (con 2 registros de 8 bits:TMR1H.
Bus I2C Bus serie síncrono. (+-) SDA: datos SLC: reloj kbits/s (pero también kbits/s y 3.4Mbits/s)
Transmisión Serial de Datos en Sistemas de Instrumentos Digitales Ing. Juan Vizcaya LABORATORIO DE INSTRUMENTACION Y CONTROL U.N.E.T.
Diseño lógico combinacional mediante VHDL
INTRODUCCIÓN A LAS COMUNICACIONES DE DATOS José Estay A.
Microprocesador (80X86) Universidad Nacional de Ingeniería
UNIDAD VI: CIRCUITOS LÓGICOS SECUENCIALES
Unidad I: Registros e Interrupciones Facilitador: Ing. Eduardo Brando.

Introducción a las Interfaces de entrada / salida.
Diseño Lógico Combinacional con VHDL
Proyecto de Sistemas Informáticos Curso Carlos Sánchez-Vellisco Sánchez Antonio José García Martínez David Fernández Máiquez.
P ROYECTO F IN D E C ARRERA TELECONVERSOR A MORSE MICROCONTROLADO Francisco Vázquez Cristóbal. Autor: Francisco Vázquez Cristóbal. Andrés Roldán Aranda.
Módulo LCD Controlador HD44780.
Capítulo.3 - Diseño Lógico Combinacional con VHDL
Adquisición de datos Acondicionamiento de señal Acondicionamiento de señal ADC V Dígitos Instrumento Interfaz Señal (I, V, f, …) PC Acá suceden cosas que.
DIPLOMADO EN SISTEMAS DIGITALES USO DE LOS PERIFERICOS DEL SISTEMA DE DESARROLLO SPARTAN 3E Instructor: MC. Rodrigo Lucio Maya Ramírez.
Proyecto de Sistemas Informáticos Curso Carlos Sánchez-Vellisco Sánchez Antonio José García Martínez David Fernández Máiquez.
Clase 12: Comunicación Serial Asíncrona UART-RS232.
Alumno: Gerardo Mario Valdés Ortega
BANCOS DE PRUEBAS CON VHDL (TESTBENCHES). Sistemas Digitales - FIUBA Bancos de prueba ¿Cómo realizar la prueba de un dispositivo descripto en VHDL? DUT.
Programando puertos en C freescale
José Alvarado – Cristian Anzola
Módulo Serial Asicrónico SCI (Serial Communications Interface Module)
 PRESENTADO POR : ANDRES MAYORGA DANIELA PAEZ VEGA.
El microprocesador y su arquitectura
El Computador. Computador. Máquina compuesta de elementos físicos (en su mayoría de origen electrónico) capaz de aceptar unos datos de entrada, realizar.
Lenguaje ensamblador Conceptos introductorios. Formatos de Instrucción. Modos de Direccionamiento. Conjunto de instrucciones básico. Introducción al Lenguaje.
Arquitectura de PCs Arquitectura básica del PC. Introducción El PC es el resultado de una especificación técnica de IBM El hardware se organiza de forma.
NCO (Numerically Controlled Oscillator). NCO: Oscilador controlado numéricamente Aplicaciones Conversores digitales up/down PLLs digitales Sistemas de.
1 LENGUAJE DE DESCRIPCION DE HARDWARE ELECTRONICA DIGITAL NAYIBE CHIO CHO NAYIBE CHIO CHO.
U.M.S.A. ETN-601 Sistemas Digitales Decodificador 3 a 8 Aux. David Marza Herrera.
RS-232 / RS-485 Introducción RS-232. Características RS-232.
Hardware Description Language
RS-232 / RS-485 Introducción RS-232. Características RS-232. Estructura de un carácter. Señales más usadas RS-232. Introducción RS-485. Características.
Transcripción de la presentación:

Introducción a las Interfaces de entrada / salida

Puerto de Salida Básico #OE Salidas Registro (Latch) Bus de Datos del Sistema CLK #WR #CE D0 D7 Q0 Q7

Entity Salida is port ( HCLK : in std_logic; RESET : in std_logic; CS: instd_logic; WR : instd_logic; D: instd_logic_vector (7 downto 0); --Bus datos es siempre entrada O: outstd_logic_vector (7 downto 0) --Salidas al exterior ); end Salida; Sintesis en vhdl de un puerto de salida

architecture B2 of Salida is begin process (HCLK, RESET) begin if RESET = '1' then O ( 7 downto 0 )<= " "; else if HCLK = '1' and HCLK'event then -- Flanco de ascendente if CS = '0' then if WR = '0' then O (7 downto 0) <= D ( 7 downto 0 ); end if; end process; end B2;

architecture B3 of Salida is begin O ( 7 downto 0 )<= " “ when RESET=´1´else D ( 7 downto 0 ) when ( CS=´0´)and(WR=´0´) end B3;

architecture B2 of Salida is begin process (HCLK, RESET) begin if RESET = '1' then O ( 7 downto 0 )<= " "; else if HCLK = '1' and HCLK'event then -- Flanco de ascendente if CS = '0' then if WR = '0' then O (7 downto 0) <= D ( 7 downto 0 ); end if; end process; end B2;

Estimulo para test del puerto de salida

Simulación – Puerto de salida

Puerto de Entrada Básico #OE Entradas Puerta de 3 estados (Transceiver) Bus de Datos del Sistema #CE #RD O0 O7 I0 I7

entity Entrada is port ( HCLK :instd_logic; RESET : instd_logic; CS :in std_logic; RD :instd_logic; D :outstd_logic_vector (7 downto 0); -- Bus Datos es siempre salida I :instd_logic_vector (7 downto 0) -- Entradas externas ); end Entrada; Sintesis en vhdl de un puerto de entrada

architecture B2 of Entrada is Begin process (HCLK, RESET) Begin if RESET = '1' then D ( 7 downto 0 )<= "ZZZZZZZZ"; else if HCLK = '1' and HCLK'event then-- Flanco de ascendente if CS = '0' then -- Acceso al registro solo si CS es 0 if RD = '0' then D ( 7 downto 0 ) <= I (7 downto 0); else D ( 7 downto 0 ) <="ZZZZZZZZ"; -- Si RD esta en 1 el bus esta en "Z" end if; else D ( 7 downto 0 ) <="ZZZZZZZZ"; -- Si CS esta en 1 el bus esta en "Z" end if; end process; end B2;

Estimulo – Puerto de entrada

Simulación – Puerto de entrada

Aplicación Habilitaciones (Cátodos) Excitación (Ánodos) K3 K2 K1 K0 OE CLK CE1 WHWH D15 … D8 OE CLK CE1 WLWL D7 … D0 Q7 Q0 Q3 Puerto “A” Puerto “B”

a c b d e g f p

CÁTODO COMÚN ÁNODOS

abcdefgpabcdefgp Vcc ÁNODOS CÁTODO COMÚN

5. 8. ÁNODOS ULN2003 KHHKLLKMHKML

ÁNODOS ULN2003 KLLKMHKML

ÁNODOS ULN2003 KLLKMHKML

8. 6. ÁNODOS ULN2003 KLLKMHKML

;Subrutina DISP ;Variables utilizadas: ;STATUS : Próximo dígito de Buffer que es necesario refrescar ;BUFFER : Tabla de 8 bytes que contiene los datos para el display y los códigos de habilitación correspondientes STATUS dw0 BUFFERdb1, 1;LSD, db3, 2;, db5, 4;, db7, 8;MSD; ;PORT_A : Etiqueta que especifica la dirección del puerto del display PORT_AequXXXX

;Subrutina DISP ;Variables utilizadas: ;STATUS : Próximo dígito de Buffer que es necesario refrescar ;BUFFER : Tabla de 8 bytes que contiene los datos para el display y los códigos de habilitación correspondientes STATUS dw0 BUFFERdb1, 1;LSD, db3, 2;, db5, 4;, db7, 8;MSD; ;PORT_A : Etiqueta que especifica la dirección del puerto del display PORT_AequXXXX 1 1 = = = = BUFFER 0 0 STATUS OFFSET incrementa

;SUB. DE REFRESCO DISPPROCNEAR XORAX,AX MOVDX, PORT_A OUTDX,AX;APAGA DISPLAY MOVBX, STATUS;BUSCA DATOS EN BUFFER MOVSI, OFFSET BUFFER MOVAX,(BX+SI) OUTDX,AX;ENCIENDE DIGITO ADDBX, 2 ;APUNTA AL PROXIMO DIGITO EN MEMORIA ANDBX, 7 MOVSTATUS,BX RET

;SUB. DE REFRESCO DISPPROCNEAR XORAX,AX MOVDX, PORT_A OUTDX,AX;APAGA DISPLAY MOVBX, STATUS;BUSCA DATOS EN BUFFER MOVSI, OFFSET BUFFER MOVAX,(BX+SI) OUTDX,AX;ENCIENDE DIGITO ADDBX, 2 ;APUNTA AL PROXIMO DIGITO EN MEMORIA AND BX, 7 MOVSTATUS,BX RET

;SUB. DE REFRESCO DISPPROCNEAR XORAX,AX MOVDX, PORT_A OUTDX,AX;APAGA DISPLAY MOVBX, STATUS;BUSCA DATOS EN BUFFER MOVSI, OFFSET BUFFER MOVAX,(BX+SI) OUTDX,AX;ENCIENDE DIGITO ADDBX, 2 ;APUNTA AL PROXIMO DIGITO EN MEMORIA ANDBX, 7 MOVSTATUS,BX RET 1 1 = = = = OFFSET BUFFER STATUS

;SUB. DE REFRESCO DISPPROCNEAR XORAX,AX MOVDX, PORT_A OUTDX,AX;APAGA DISPLAY MOVBX, STATUS;BUSCA DATOS EN TRABLA MOVSI, OFFSET BUFFER MOVAX,(BX+SI) OUTDX,AX;ENCIENDE DIGITO ADDBX, 2 ;APUNTA AL PROXIMO DIGITO EN MEMORIA AND BX, 7 MOVSTATUS,BX RET

;SUB. DE REFRESCO DISPPROCNEAR XORAX,AX MOVDX, PORT_A OUTDX,AX;APAGA DISPLAY MOVBX, STATUS;BUSCA DATOS EN TRABLA MOVSI, OFFSET BUFFER MOVAX,(BX+SI) OUTDX,AX;ENCIENDE DIGITO ADDBX, 2 ;APUNTA AL PROXIMO DIGITO EN MEMORIA AND BX, 7 MOVSTATUS,BX RET

;SUB. DE REFRESCO DISPPROCNEAR XORAX,AX MOVDX, PORT_A OUTDX,AX;APAGA DISPLAY MOVBX, STATUS;BUSCA DATOS EN TRABLA MOVSI, OFFSET BUFFER MOVAX,(BX+SI) OUTDX,AX;ENCIENDE DIGITO ADDBX, 2 ;APUNTA AL PROXIMO DIGITO EN MEMORIA AND BX, 7 MOVSTATUS,BX RET

F0 F1 F2 F3 C0 C1 C2 C3 Teclado Teclas Salidas Entradas

TECLADO Salidas Entradas

TECLADO 1 Salidas Entradas

TECLADO Salidas Entradas

TECLADO Salidas Entradas

F0 F1 F2 F3 C0 C1 C2 C3 Teclado Teclas Salidas Entradas

Aplicación Habilitaciones (Cátodos) Excitación (Ánodos) K3 K2 K1 K0 OE CLK CE1 WHWH D15 … D8 OE CLK CE1 WLWL D7 … D0 Q7 Q0 Q3

Q0 Q1 Q2 Q3 C0 C1 C2 C3 Teclado Teclas Entradas

Q0 Q1 Q2 Q3 I0 I1 I2 I3 Teclado Teclas PUERTOBPUERTOB Entradas

PUERTO_C OE1 Entradas Puerta de 3 estados RD L CE O0 O7 I0 I7 OE2 D0 D7

Q0 Q1 Q2 Q3 I3 I2 I1 I0 I4 I5 I6 I7 Teclado Teclas PUERTOBPUERTOB Entradas PUERTO_C

;SUB. DE EXPLORACION DE TECLADO SCANPROCNEAR MOVDX, PORT_B INAL, DX TEST AL, 0F0h JZnotec MOVTECLA, AL notec: RET Subrutina SCAN : Variables utilizadas : TECLA : Código ultima tecla presionada TECLAdb0

Generador PWM #OE Salida Registro Bus de Datos del Sistema CLK #CE #WR D0 D7 Q0 Q7 CLK Q0 Q7 HCLK Contador Comparador PWM =1 si Registro > Contador

entity PWM is port ( HCLK:instd_logic; RESET : in std_logic; CS:instd_logic; RD :instd_logic; WR:instd_logic; D:inoutstd_logic_vector (7 downto 0); PWM:out std_logic ); end PWM; Síntesis VHDL de Generador PWM

architecture B2 of PWM is Begin process (HCLK, RESET) variable REGISTRO : std_logic_vector (7 downto 0) := " "; variable CICLO : std_logic_vector (7 downto 0) := " "; variable CONTADOR : std_logic_vector (7 downto 0) := " "; Begin if RESET = '1' then D ( 7 downto 0 )<= "ZZZZZZZZ"; PWM <= '0'; else if HCLK = '1' and HCLK'event then-- Flanco de ascendente if CS = '0' then-- Acceso al registro solo si CS es 0 if RD = '0' then D ( 7 downto 0 ) <= REGISTRO (7 downto 0); else D ( 7 downto 0 ) <="ZZZZZZZZ"; -- Si RD es 1 el bus es "Z" if WR = '0' then REGISTRO (7 downto 0) := D ( 7 downto 0 ); end if; else D ( 7 downto 0 ) <="ZZZZZZZZ"; -- Si CS es 1 el bus es "Z" end if;

architecture B2 of PWM is Begin process (HCLK, RESET) variable REGISTRO : std_logic_vector (7 downto 0) := " "; variable CICLO : std_logic_vector (7 downto 0) := " "; variable CONTADOR : std_logic_vector (7 downto 0) := " "; Begin if RESET = '1' then D ( 7 downto 0 )<= "ZZZZZZZZ"; PWM <= '0'; else if HCLK = '1' and HCLK'event then-- Flanco de ascendente if CS = '0' then-- Acceso al registro solo si CS es 0 if RD = '0' then D ( 7 downto 0 ) <= REGISTRO (7 downto 0); else D ( 7 downto 0 ) <="ZZZZZZZZ"; -- Si RD es 1 el bus es "Z" if WR = '0' then REGISTRO (7 downto 0) := D ( 7 downto 0 ); end if; else D ( 7 downto 0 ) <="ZZZZZZZZ"; -- Si CS es 1 el bus es "Z" end if;

CONTADOR := CONTADOR +1; if CONTADOR > CICLO then PWM <= '0'; else PWM <= '1'; end if; if CONTADOR = " " then CICLO := REGISTRO; end if; end process; end B2;

Test de puerto PWM

#OE Salida Entrada Registro (Latch) Puerta de 3 estados (Transceiver) #WR #CE #RD Puerto de Entrada + Salida Básico Bus de Datos #OE Puertos programables, líneas de control

#OE Salida Entrada Registro (Latch) Puerta de 3 estados (Transceiver) #WR #CE #RD Puerto de Entrada + Salida Básico Bus de Datos #OE Puertos programables, lineas de control

Salida Entrada Puerta de 3 estados (Transceiver) Bus de Datos Puerto de Entrada / Salida Programable Registro (Latch) Exterior #OE #WR #CE #RD #OE

Salida Entrada Bus de Datos #WR #CE #RD #OE #WR #CE 1 #OE Exterior Puerto de Entrada / Salida Programable

#OE Salida Entrada Bus de Datos #WR #CE #RD #OE #WR A0 #OE Exterior Puerto de Entrada / Salida Programable

#CE #WR A0 #RD Bus de Datos Lógica de control de lectura y escritura (LCLE) #OE Salida Entrada #OE Exterior Puerto de Entrada / Salida Programable

Bus de Datos Lógica de control de lectura y escritura (LCLE) #OE Salida Entrada #OE Exterior Puerto de Entrada / Salida Programable #CE #WR A0 #RD

#OE Salida Entrada Bus de Datos del sistema #OE LCLE #OE Puerta bidireccional de 3 estados (Transceiver) # OE Dd Puerto de Entrada / Salida Programable #CE #WR A0 #RD

#OE Salida Entrada Bus de Datos del sistema Puerto de Entrada / Salida Programable con Reset #OE LCLE #OE Puerta bidireccional de 3 estados (Transceiver) RESET #OE Dd #CE #WR A0 #RD

#OE Salida Entrada Bus de Datos del sistema #OE LCLE #OE Puerta bidireccional de 3 estados (Transceiver) RESET Puerto de Entrada / Salida Programable con Reset #OE Dd #CE #WR A0 #RD

#OE Entrada #OE 1 D Q #R INTR Bus de Datos Puertas de 3 estados (Transceiver) Habilitación Bandera Puerto de E / S con Pedido de Atención y Bandera

#OE Entradas Puerto de Entrada con Líneas de control y con capacidad de solicitar interrupciones #OE 1 D Q #R INTR Bus de Datos Habilitación Bandera #CE A0 #WR #RD LCLE #OE0 DAV DAC #E #OE1 CLK1

Modo de transmisión “handshake” DAV DAC t DATA

#OE Salidas Puerto de Salida con Líneas de control y con capacidad de solicitar interrupciones 1 D Q #R INTR Bus de Datos Habilitación Bandera #CE A0 #WR #RD LCLE #OE0 #CLK0 DAC DAV #OE1 CLK1 CLK0

; SUB. HS_INP ; PUNTERO variable que apunta al lugar de almacenamiento ; N variable que contiene el numero de bytes que se van a recibir ; CRSR etiqueta con la dirección del registro de control/estados (Wr/Rd) ; DATR etiqueta con la dirección del registro de entrada ; FLAG etiqueta con todos “0” y un solo “1” en posición de la “Flag” HS_INPPROCNEAR TESTN,0FFFFh JNZOK_DAT;salta a recepción MOVDX, CRSR;apunta al registro de control XORAL,AL OUTDX,AL;deshabilita pedido de interrupción SALERET OK_DATMOVDX, CRSR;Apunta al registro de estados INAL,DX;verifica si hay dato para leer TESTAL, FLAG; “ JZSALE;si no hay dato sale MOVDX, DATR;apunta al registro de entrada MOVSI, PUNTERO;carga el puntero para guardar el dato INAL,DX MOV(SI),AL;guarda el dato DECN;actualiza contador INCPUNTERO;actualiza puntero RET ENDP

Comunicación Serie Asincrónica (puerto serie)

TXRX Tb tiempo Información multiplexada en el tiempo Bits Esquema básico para una comunicación serie asincrónica

TXRX Tb tiempo Información multiplexada en el tiempo Bits Esquema básico para una comunicación serie asincrónica CLK TX CLK RX

TXRX TX Comunicación serie asincrónica Duplex CLK_1CLK_2 TX-RX_1TX-RX_2

TXRX TX CLK_1RCLK_2R TX-RX_1TX-RX_2 CLK_1TCLK_2T Comunicación serie asincrónica Duplex

TXRX TX Comunicación con adaptadores RS 232 RS 232 RS 232 TX-RX_1TX-RX_2 CLK_1CLK_2 Niveles RS 232

TXRX TX RS 232 RS lógico 1 lógico +18V +3V V -3V -18V Banda prohibida TX-RX_1TX-RX_2 Comunicación con adaptadores RS 232

Comunicación con MODEM TXRX TX RS 232 RS 232 MODEMMODEM MODEMMODEM TX- RX TX-RX_1TX-RX_2 CLK_1CLK_2

Comunicación con MODEM TXRX TX RS 232 RS 232 MODEMMODEM MODEMMODEM TX- RX DTR DSR RTS CTS DCD RI TX-RX_1TX-RX_2 CLK_1CLK_2 TX- RX

Comunicación con MODEM TX RX RS 232 MODEMMODEM DTR DSR RTS CTS DCD RI TX-RX_1 CLK_1 Data Terminal Ready DataSet Ready

Comunicación con MODEM TX RX RS 232 MODEMMODEM DTR DSR RTS CTS DCD RI TX-RX_1 CLK_1 Request To Send Clear To Send Control de transmisión

Comunicación con MODEM TX RX RS 232 MODEMMODEM DTR DSR RTS CTS DCD RI TX-RX_1 CLK_1 Control de recepción Data Carrier Detect Ring Indicator

Comunicación con MODEM TXRX TX RS 232 RS 232 MODEMMODEM MODEMMODEM TX- RX DTR DSR RTS CTS DCD RI DTR DSR RTS CTS DCD RI TX- RX TX-RX_1TX-RX_2 CLK_1CLK_2

Fundamentos del modo de transmisión En un sistema de transmisión serie asincrónico, la información se transmite utilizando pequeños grupos de bits denominados “CARACTERES”

Bit de arranque Bits de datos Bit de paridad Bit de parada Tb tiempo bnb001 Fundamentos del modo de transmisión En un sistema de transmisión serie asincrónico, la información se transmite utilizando pequeños grupos de bits denominados “CARACTERES” Formato de un “Caracter ” “Bit time” o “Tiempo de bit”

Cálculo de Paridad b b b b b b b b P Bits de datosBit de paridad Paridad PAR => el número total de “1”, debe ser PAR. Paridad IMPAR => el número total de “1”, debe ser IMPAR. Ejemplo para dato: Paridad PAR => (6 unos, número par) Paridad IMPAR => (5 unos, número impar)

Bit de arranque Bits de datos Bit de paridad Bit de parada Tb 1 P bn b0 0 THR TSR Carga en paralelo Desplazamiento en serie de período Tb = 1 / Baud rate SOUT tiempo bnb001

Tb 1 P bn b0 0 RDR RSR Carga en paralelo Desplazamiento en serie ( RCLK) SIN tiempo Muestreos bnb01

LCR- LINE CONTROL REGISTER WLSB0 WORD LENGTH SELECT BIT 0 WLSB1 WORD LENGTH SELECT BIT 1 STB NUMBER OF STOP BITS PEN PARITY ENABLE EPS EVEN PARITY SELECT SP STICK PARITY SB SET BREAK DLAB DIVISOR LATCH ACCESS BIT BIT7 BIT6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0 0 = 1 STOP Bit. 1 = 1,5 STOP Bits ( si longitud = 5 ) 1 = 2 STOP Bits (Si longitud = 6,7u8) 00 = Paridad impar 01 = Paridad par 10 = Paridad “0” 11 = Paridad “1” 00 = 5 Bits 01 = 6 Bits 10 = 7 Bits 11 = 8 Bits 0 = Sin Paridad 1 = Con Paridad 0 = Break inhabilitado 1 = Break habilitado 0 = Acceso a RBR y THR 1 = Acceso a DLatch

LSR- LINE STATUS REGISTER DR DATA READY OE OVER- RUN ERROR PE PARITY ERROR FE FRA- MING ERROR BI BREAK INTE- RRUPT THRETEMT 0 BIT7 BIT6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0 RBR Lleno Error de sobre - velocidad Error de paridad Error de enmarque Detección de Break THR vacío Transmisor vacío ( THR y TSR vacíos )

IER- INTERRUPT ENABLE REGISTER ETBEI ENABLE THR EMPTY INT ELSI ENABLE LINE STATUS INT ERBFI ENABLE RBR FULL INT EDSSI ENABLE MODEM STATUS INT BIT7 BIT6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0 Habilitación de INT por MSR Habilitación de INT por Errores de recepción o detección de Break Habilitación de INT por THR vacío Habilitación de INT por RBR lleno 0000

tiempo Bit de arranque Tb Tb / 2... Muestreo rápido Flanco descendente Inicio de muestreo de período Tb Bit de datos ( b0 ) Tb

tiempo Bit de arranque Tb Tx... Bit de datos ( b0 ) Tb Tx Tb Rx Tb Rx / 2

tiempo Bit de arranque Tb Tx... Bit de datos ( b0 ) Tb Tx Tb Tx + dTb Tx 2

tiempo Muestreos bnb01 Tb Tx + dTb Tx 2 0 3(Tb Tx + dTb Tx ) 2 5(Tb Tx + dTb Tx ) 2 7(Tb Tx + dTb Tx ) 2 (2b -1)(Tb Tx + dTb Tx ) 2 b bits

tiempo Muestreos bnb01 Tb Tx + dTb Tx 2 0 b bits = Tb Tx + dTb Tx 22 Instante de muestreo correcto Error o desplazamiento del Instante de lectura

tiempo Muestreos bnb01 3(Tb Tx + dTb Tx ) 2 0 b bits = 3Tb Tx + 3dTb Tx 22 Instante de muestreo correcto Error o desplazamiento del Instante de lectura

tiempo Muestreos bnb01 0 b bits = (2b-1)Tb Tx + (2b-1)dTb Tx 22 Instante de muestreo correcto Error o desplazamiento del Instante de lectura (2b -1)(Tb Tx + dTb Tx ) 2

(2b-1)dTb Tx 2 Error o desplazamiento del Instante de lectura máximo < Tb Tx 2 Desplazamiento máximo para lectura sin error de enmarque. tiempo Instante de muestreo correcto Tb Tx 2 2 ( bit de parada )

(2b-1)dTb Tx 2 < Tb Tx 2 (2b-1)dTb Tx 2 < Tb Tx 2 < (2b-1) 2 dTb Tx < (2b-1) 1 er Tb Tx

CALCULO DEL DIVISOR PARA EL GENERADOR DE BAUDRATE Divisor = Entero ( f cristal / ( 16 * BaudRate ) ) Divisor_H = Entero ( Divisor / 256 ) Divisor_L = Divisor – 256*DivisorH Ejemplo: BaudRate = 1200 ; Cristal 4 MHz Divisor = Entero ( / ( 16*1200 ) ) = 208 Divisor_H = Entero ( 208 / 256 ) = 0 Divisor_L = 208 – 256*0 = 208 Prueba : BaudRate = f cristal / ( 16 * Divisor ) = = / ( 16 * 208 ) = 1201,92

tiempo TRANSMISIÓN DE INFORMACIÓN A TRAVÉS DE UN ENLACE SERIE ASINCRÓNICO Caracteres

tiempo Errores TRANSMISIÓN DE INFORMACIÓN A TRAVÉS DE UN ENLACE SERIE ASINCRÓNICO

tiempo Errores Paquetes de datos, para facilitar retransmisiones y control. TRANSMISIÓN DE INFORMACIÓN A TRAVÉS DE UN ENLACE SERIE ASINCRÓNICO

TRANSMISIÓN DE INFORMACIÓN A TRAVÉS DE UN ENLACE SERIE ASINCRÓNICO Formato de un paquete de datos Caracter/es “marca de inicio de paquete Caracter/es para número de datos ó marca de final de paquete DATOS Caracter/es para control de errores

library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity xxx is port ( HCLK :instd_logic; RESET : in std_logic; WR :instd_logic; RD :instd_logic; D:instd_logic_vector (7 downto 0); -- bus de datos de entrada O:outstd_logic_vector (7 downto 0); -- bus de datos de salida AD :instd_logic_vector (1 downto 0); TXD:out std_logic; RXD:instd_logic; CS:instd_logic; Z:inout std_logic_vector (8 downto 0) ); end xxx; architecture B2 of xxx is begin process (HCLK, RESET) variable BR : std_logic_vector ( 15 downto 0) := " "; variable RDR : std_logic_vector ( 10 downto 0) := " "; variable RSR : std_logic_vector ( 7 downto 0) := " "; variable STR : std_logic_vector ( 3 downto 0) := "0000"; variable CR : std_logic_vector ( 15 downto 0) := " "; variable TDR : std_logic_vector ( 8 downto 0) := " "; variable TSR : std_logic_vector ( 7 downto 0) := " "; variable STT : std_logic_vector ( 3 downto 0) := "0000"; variable CT : std_logic_vector ( 15 downto 0) := " "; begin if RESET = '1' then --BR ( 15 downto 0 ):= " "; --VALOR INICIAL DEL BAUD TX Y RX BR ( 15 downto 0 ):= " "; RDR ( 10 downto 0 ):= " ";--REGISTRO DE RX RDR(8,9,10) FLAGS ( 8=LLENO, 9=OVR, 10=FE) RSR ( 7 downto 0 ):= " ";--REGISTRO DE "DESPLAZAMIENTO" DE RX STR ( 3 downto 0 ):= "1111";--ESTADO DE RX CR ( 15 downto 0 ):= " ";--CONTADOR DEL BAUD RX

begin if RESET = '1' then --BR ( 15 downto 0 ):= " "; --VALOR INICIAL DEL BAUD TX Y RX BR ( 15 downto 0 ):= " "; RDR ( 10 downto 0 ):= " ";--REGISTRO DE RX RDR(8,9,10) FLAGS ( 8=LLENO, 9=OVR, 10=FE) RSR ( 7 downto 0 ):= " ";--REGISTRO DE "DESPLAZAMIENTO" DE RX STR ( 3 downto 0 ):= "1111";--ESTADO DE RX CR ( 15 downto 0 ):= " ";--CONTADOR DEL BAUD RX TDR ( 8 downto 0 ):= " ";--REGISTRO DE TX TDR(8) FLAG ( 1=LLENO) TSR ( 7 downto 0 ):= " ";--REGISTRO DE "DESPLAZAMIENTO" DE TX STT ( 3 downto 0 ):= "1111";--ESTADO DE TX CT ( 15 downto 0 ):= " ";--CONTADOR DEL BAUD TX Z ( 8 downto 0 )<= " "; TXD <= '1'; else if HCLK = '1' and HCLK'event then-- Flanco de ascendente if CS = '0' then if WR = '0' then case AD is when "00" => TDR (7 downto 0) := D ( 7 downto 0 ); --CARGA EL TRANSMISOR TDR (8) := '1'; when "01" => BR (7 downto 0) := D ( 7 downto 0 ); --CARGA EL DIVISOR DE BAUD BAJO when others => BR (15 downto 8) := D ( 7 downto 0 ); --CARGA EL DIVISOR DE BAUD ALTO end case; else if RD = '0' then case AD is when "00" => O (7 downto 0) <= RDR ( 7 downto 0 ); --CARGA EL RECEPTOR RDR (10 downto 8) := "000"; when "01" => O (7 downto 0) <= "111111"& TDR(8)& RDR(8); --CARGA EL DIVI DE BAUD BAJO when others => BR (15 downto 8) := D ( 7 downto 0 ); --CARGA EL DIVI DE BAUD ALTO end case; end if;

--O (7 DOWNTO 4) <= CTH (3 DOWNTO 0); --O (3 DOWNTO 0) <= STT (3 DOWNTO 0); case STR is when "1111" => if RXD='0' then STR := "1100"; CR ( 15 downto 0 ):= '0' & BR ( 15 downto 1 ); end if; when "1100" => if CR ( 15 downto 0 )=" " then STR := "0000"; CR ( 15 downto 0 ):= BR ( 15 downto 0 ); else if CR ( 1 downto 0 )= "00" then if RXD='1' then STR := "1111"; end if; when "1000" => if CR ( 15 downto 0 )=" " then STR := "1111"; RDR(9) := RDR(8) OR RDR(9); --error de sobrevelocidad RDR(10):= not(RXD); --error de enmarque RDR(8 downto 0):= '1'& RSR (7 downto 0 ); end if; when others => if CR ( 15 downto 0 )=" " then CR ( 15 downto 0 ):= BR ( 15 downto 0 ); RSR (7 downto 0 ):= RXD & RSR (7 downto 1 ); STR := STR+1; end if; end case; --test p/ transmisión --Z(3 downto 0)<= STR (3 downto 0 ); --Z(7 downto 4)<= STT (3 downto 0 ); --Z(8)<= RDR(8); --test p/ recepción Z(3 downto 0)<= STR (3 downto 0 ); Z(8 downto 6)<= RDR (10 downto 8 ); Z(5 downto 4)<= "00";

if (CT = " ")OR(STT = "1111") then --BAUD RATE TX CT(15 downto 0) := BR(15 downto 0); case STT is--TRANSMISOR when "0000" => TXD <= '0'; STT := STT +1; when "0001" => TXD <= TSR(0); STT := STT +1; when "0010" => TXD <= TSR(1); STT := STT +1; when "0011" => TXD <= TSR(2); STT := STT +1; when "0100" => TXD <= TSR(3); STT := STT +1; when "0101" => TXD <= TSR(4); STT := STT +1; when "0110" => TXD <= TSR(5); STT := STT +1; when "0111" => TXD <= TSR(6); STT := STT +1; when "1000" => TXD <= TSR(7); STT := STT +1; when "1001" => TXD <= '1'; if TDR(8) = '1' then TSR( 7 downto 0) :=TDR( 7 downto 0); TDR(8) := '0'; STT := "0000"; else STT := STT +1; end if; when others => if TDR(8) = '1' then TSR( 7 downto 0) :=TDR( 7 downto 0); TDR(8) := '0'; STT := "0001"; TXD <= '0'; else STT := "1111"; TXD <= '1'; end if; end case;--FIN DE TRANSMISOR

end if; CT := CT-1; CR := CR-1; end if; end process; end B2;

Señales de estilulo para transmisor Salida de simulacion del transmisor

Entrada y lectura de caracter Entrada y lectura de carácter con error de enmarque

F I N