interfases de entrada / salida

63
Interfases de Entrada / Salida Introducción a las Interfaces de entrada / salida Fundamentos de comunicación serie asincrónica Interfase Serie

Upload: alden-barrera

Post on 30-Dec-2015

111 views

Category:

Documents


14 download

DESCRIPTION

Interfases de Entrada / Salida. Introducción a las Interfaces de entrada / salida Fundamentos de comunicación serie asincrónica Interfase Serie. Introducción a las Interfaces de entrada / salida. Puerto de Salida Básico. Registro (Latch). CE. CLK. WR. OE. D0 D7. Q0 Q7. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Interfases de Entrada / Salida

Interfases de Entrada / Salida

• Introducción a las Interfaces de entrada / salida

• Fundamentos de comunicación serie asincrónica

• Interfase Serie

Page 2: Interfases de Entrada / Salida

Introducción a las

Interfaces de entrada / salida

Page 3: Interfases de Entrada / Salida

Puerto de Salida Básico

OE

Salidas

Registro (Latch)

Bus de Datos del Sistema

CLKWR

CE

D0

D7

Q0

Q7

Page 4: Interfases de Entrada / Salida

Entity Salida is

port (

HCLK : in std_logic;RESET : in std_logic;CS : in std_logic;WR : in std_logic;D : in std_logic_vector (7 downto 0);

--Bus datos es siempre entradaO : out std_logic_vector (7 downto 0)

--Salidas al exterior

);

end Salida;

Sintesis en vhdl de un puerto de salida

Page 5: Interfases de Entrada / Salida

architecture B2 of Salida isbegin

process (HCLK, RESET)begin

if RESET = '1' thenO ( 7 downto 0 )<= "00000000";

elseif HCLK = '1' and HCLK'event then -- Flanco de ascendente if CS = '0' then

if WR = '0' thenO (7 downto 0) <= D ( 7 downto 0 );

end if; end if;end if;

end if;

end process;end B2;

Page 6: Interfases de Entrada / Salida

Estimulo – Puerto de salida

Page 7: Interfases de Entrada / Salida

Simulación – Puerto de salida

Page 8: Interfases de Entrada / Salida

Puerto de Entrada Básico

OE

Entradas

Puerta de 3 estados(Transceiver)

Bus de Datos del Sistema

RD

CE

O0

O7

I0

I7

Page 9: Interfases de Entrada / Salida

entity Entrada is

port (

HCLK : in std_logic;RESET : in std_logic;

CS : in std_logic;RD : in std_logic;D : out std_logic_vector (7 downto 0);

-- Bus Datos es siempre salida

I : in std_logic_vector (7 downto 0) -- Entradas externas

);

end Entrada;

Sintesis en vhdl de un puerto de entrada

Page 10: Interfases de Entrada / Salida

architecture B2 of Entrada isBeginprocess (HCLK, RESET)Beginif RESET = '1' then

D ( 7 downto 0 )<= "ZZZZZZZZ";else

if HCLK = '1' and HCLK'event then -- Flanco de ascendenteif CS = '0' then -- Acceso al registro solo si CS es 0

if RD = '0' thenD ( 7 downto 0 ) <= I (7 downto 0);

elseD ( 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 if;

end if;end process;end B2;

Page 11: Interfases de Entrada / Salida

Estimulo – Puerto de entrada

Page 12: Interfases de Entrada / Salida

Simulación – Puerto de entrada

Page 13: Interfases de Entrada / Salida

entity Registro is

port (

HCLK : in std_logic;RESET : in std_logic;CS : in std_logic;RD : in std_logic;WR : in std_logic;D : inout std_logic_vector (7 downto 0)

-- Bus de datos es Entrada/Salida

);

end Registro;

Sintesis en vhdl de un registro interno

Page 14: Interfases de Entrada / Salida

architecture B2 of Registro isBeginprocess (HCLK, RESET)variable REGISTRO : std_logic_vector (7 downto 0) := "00000000";Beginif 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 ) <= REGISTRO (7 downto 0); else

D ( 7 downto 0 ) <="ZZZZZZZZ"; -- Si RD = 1, bus en "Z"if WR = '0' then

REGISTRO (7 downto 0) := D ( 7 downto 0 );end if;

end if; else D ( 7 downto 0 ) <="ZZZZZZZZ"; -- Si CS = 1, bus en "Z" end if; end if;end if;end process;end B2;

Page 15: Interfases de Entrada / Salida

Estimulo – Registro interno

Page 16: Interfases de Entrada / Salida

Simulación – Registro interno

Page 17: Interfases de Entrada / Salida

entity PWM isport (

HCLK : in std_logic;RESET : in std_logic;CS : in std_logic;RD : in std_logic;WR : in std_logic;D : inout std_logic_vector (7 downto 0);

PWM : out std_logic);

end PWM;

Page 18: Interfases de Entrada / Salida

architecture B2 of PWM isBeginprocess (HCLK, RESET)variable REGISTRO : std_logic_vector (7 downto 0) := "00000000";variable CICLO : std_logic_vector (7 downto 0) := "00000000";variable CONTADOR : std_logic_vector (7 downto 0) := "00000000";Beginif 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 0if 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;end if;

elseD ( 7 downto 0 ) <="ZZZZZZZZ"; -- Si CS es 1 el bus es "Z"

end if;

Page 19: Interfases de Entrada / Salida

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

end B2;

Page 20: Interfases de Entrada / Salida

OE

Salida

Entrada

Registro(Latch)

Puerta de 3 estados(Transceiver)

WRCE

RD

Puerto de Entrada + Salida Básico

Bus de Datos

OE

Page 21: Interfases de Entrada / Salida

OE

Salida

Entrada

Registro(Latch)

Puerta de 3 estados(Transceiver)

WRCE

RD

Bus de Datos

OE

Puerto de Entrada + Salida Básico

Page 22: Interfases de Entrada / Salida

OE

Salida

Entrada

Puerta de 3 estados(Transceiver)

Bus de Datos

WRCE

RD

Puerto de Entrada / Salida Programable

Registro(Latch)

OE

Exterior

Page 23: Interfases de Entrada / Salida

OE

Salida

Entrada

Bus de Datos

WRCE

RD

OEWR

CE 1

OE

Exterior

Puerto de Entrada / Salida Programable

Page 24: Interfases de Entrada / Salida

OE

Salida

Entrada

Bus de Datos

WR

CE

RD

OEWR

A0

OE

Exterior

Puerto de Entrada / Salida Programable

Page 25: Interfases de Entrada / Salida

CE RDWRA0

Bus de Datos

Lógica de control de lectura y escritura (LCLE)

OE

Salida

Entrada

OE

OE

Exterior

Puerto de Entrada / Salida Programable

Page 26: Interfases de Entrada / Salida

CE RDWRA0

Bus de Datos

Lógica de control de lectura y escritura (LCLE)

OE

Salida

Entrada

OE

OE

Exterior

Puerto de Entrada / Salida Programable

Page 27: Interfases de Entrada / Salida

OE

Salida

EntradaBus de Datos del sistema

CE RD

OE

WRA0

LCLE

OE

Puerta bidireccional de 3 estados (Transceiver)

OE Dd

Puerto de Entrada / Salida Programable

Page 28: Interfases de Entrada / Salida

OE

Salida

EntradaBus de Datos del sistema

CE RD

Puerto de Entrada / Salida Programable con Reset

OE

WRA0

LCLE

OE

Puerta bidireccional de 3 estados (Transceiver)

RESET

OE Dd

Page 29: Interfases de Entrada / Salida

OE

Salida

EntradaBus de Datos del sistema

CE RD

OE

WRA0

LCLE

OE

Puerta bidireccional de 3 estados (Transceiver)

RESET

Puerto de Entrada / Salida Programable con Reset

OE Dd

Page 30: Interfases de Entrada / Salida

entity IOP isport (

HCLK : in std_logic;RESET : in std_logic;CS : in std_logic;AD0 : in std_logicWR : in std_logic;RD : in std_logic;

D : inout std_logic_vector (7 downto 0);-- El bus de datos es Entrada/Salida

ES : inout std_logic_vector (7 downto 0)-- Entradas/Salidas al exterior

);

end IOP;

Page 31: Interfases de Entrada / Salida

architecture B2 of IOP isBeginprocess (HCLK, RESET)variable DDR : std_logic_vector ( 7 downto 0) :="00000000"; --entradavariable DAT : std_logic_vector ( 7 downto 0) :="00000000";Beginif RESET = '1' then ES ( 7 downto 0 )<= "ZZZZZZZZ"; DDR ( 7 downto 0 ) := "00000000"; DAT ( 7 downto 0 ) := "00000000"; D ( 7 downto 0 )<= "ZZZZZZZZ";else if HCLK = '1' and HCLK'event then -- Flanco de ascendente if CS = '0' then if WR = '0' then

if AD0 = '0' thenDAT( 7 downto 0 ) := D( 7 downto 0 );n1: for i in 0 to 7 loop

if DDR(i) = '1' thenES (i) <= D (i);

elseES (i) <= 'Z';

end if;end loop n1;

Page 32: Interfases de Entrada / Salida

elseDDR( 7 downto 0 ) := D( 7 downto 0 );n2: for i in 0 to 7 loop

if D(i) = '1' thenES (i) <= DAT (i);

elseES (i) <= 'Z';

end if;end loop n2;

end if; else

if RD = '0' thenif AD0 = '0' then

n3: for i in 0 to 7 loopif DDR(i) = '1' then

D (i) <= DAT (i);else

D (i) <= ES(i);end if;

end loop n3;else

D(7 downto 0) <= DDR(7 downto 0);end if;

elseD( 7 downto 0 ) <= "ZZZZZZZZ";

end if; end if;

Page 33: Interfases de Entrada / Salida

else D( 7 downto 0 ) <= "ZZZZZZZZ"; end if; end if;end if;end process;end B2;

Page 34: Interfases de Entrada / Salida

Estimulo – Puerto de entrada-salida programable

Page 35: Interfases de Entrada / Salida

Simulación – Puerto de entrada-salida programable

Page 36: Interfases de Entrada / Salida

OE

Entrada

Puerto de E / S con Pedido de Atención y Banderas

OE

1

DQ

R

INTR

Bus de Datos

Puertas de 3 estados(Transceiver)

Habilitación

Bandera

Page 37: Interfases de Entrada / Salida

Aplicación

OE

8.

8.

8.

8.

Habilitaciones(Cátodos)

Excitación(Ánodos)

K3K2K1K0

CLK

CE1

OE

WL

CLK

CE1

WH

D7…D0

D15…D8

Q7

Q0

Q0

Q3

Page 38: Interfases de Entrada / Salida

a

c

b

d

e

gf

p

Page 39: Interfases de Entrada / Salida

CÁTODO COMÚNÁNODOS

ÁNODOS

Page 40: Interfases de Entrada / Salida

abcdefgp

Vcc

ÁNODOS

CÁTODO COMÚN

Page 41: Interfases de Entrada / Salida

5.

8.

8.

8.

ÁNODOS

ULN2003

KHH KLLKMH KML

1 0 0 0

Page 42: Interfases de Entrada / Salida

8.

3.

8.

8.

ÁNODOS

ULN2003

KLLKMH KML

0 1 0 0

Page 43: Interfases de Entrada / Salida

8.

8.

9.

8.

ÁNODOS

ULN2003

KLLKMH KML

0 0 1 0

Page 44: Interfases de Entrada / Salida

8.

8.

8.

6.

ÁNODOS

ULN2003

KLLKMH KML

0 0 0 1

Page 45: Interfases de Entrada / Salida

;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 dw 0BUFFER db 1, 1 ;LSD , 00000001

db 3, 2 ; , 00000010 db 5, 4 ; , 00000100db 7, 8 ;MSD; 00001000

;PORT_A : Etiqueta que especifica la dirección del puerto del display

PORT_A equ XXXX

Page 46: Interfases de Entrada / Salida

;SUB. DE REFRESCO------------

DISP PROC NEAR

XOR AX,AXMOV DX, PORT_AOUT DX,AX ;APAGA DISPLAY

MOV BX, STATUS ;BUSCA DATOS EN BUFFERMOV SI, OFFSET BUFFERMOV AX,(BX+SI)OUT DX,AX ;ENCIENDE DIGITO

ADD BX, 2 ;APUNTA AL PROXIMO DIGITO EN MEMORIAAND BX, 7MOV STATUS,BXRET

Page 47: Interfases de Entrada / Salida

;SUB. DE REFRESCO------------

DISP PROC NEAR

XOR AX,AXMOV DX, PORT_AOUT DX,AX ;APAGA DISPLAY

MOV BX, STATUS ;BUSCA DATOS EN BUFFERMOV SI, OFFSET BUFFERMOV AX,(BX+SI)OUT DX,AX ;ENCIENDE DIGITO

ADD BX, 2 ;APUNTA AL PROXIMO DIGITO EN MEMORIAAND BX, 7MOV STATUS,BXRET

Page 48: Interfases de Entrada / Salida

;SUB. DE REFRESCO------------

DISP PROC NEAR

XOR AX,AXMOV DX, PORT_AOUT DX,AX ;APAGA DISPLAY

MOV BX, STATUS ;BUSCA DATOS EN BUFFERMOV SI, OFFSET BUFFERMOV AX,(BX+SI)OUT DX,AX ;ENCIENDE DIGITO

ADD BX, 2 ;APUNTA AL PROXIMO DIGITO EN MEMORIAAND BX, 7MOV STATUS,BXRET

Page 49: Interfases de Entrada / Salida

;SUB. DE REFRESCO------------

DISP PROC NEAR

XOR AX,AXMOV DX, PORT_AOUT DX,AX ;APAGA DISPLAY

MOV BX, STATUS ;BUSCA DATOS EN TRABLAMOV SI, OFFSET BUFFERMOV AX,(BX+SI)OUT DX,AX ;ENCIENDE DIGITO

ADD BX, 2 ;APUNTA AL PROXIMO DIGITO EN MEMORIAAND BX, 7MOV STATUS,BXRET

Page 50: Interfases de Entrada / Salida

;SUB. DE REFRESCO------------

DISP PROC NEAR

XOR AX,AXMOV DX, PORT_AOUT DX,AX ;APAGA DISPLAY

MOV BX, STATUS ;BUSCA DATOS EN TRABLAMOV SI, OFFSET BUFFERMOV AX,(BX+SI)OUT DX,AX ;ENCIENDE DIGITO

ADD BX, 2 ;APUNTA AL PROXIMO DIGITO EN MEMORIAAND BX, 7MOV STATUS,BXRET

Page 51: Interfases de Entrada / Salida

;SUB. DE REFRESCO------------

DISP PROC NEAR

XOR AX,AXMOV DX, PORT_AOUT DX,AX ;APAGA DISPLAY

MOV BX, STATUS ;BUSCA DATOS EN TRABLAMOV SI, OFFSET BUFFERMOV AX,(BX+SI)OUT DX,AX ;ENCIENDE DIGITO

ADD BX, 2 ;APUNTA AL PROXIMO DIGITO EN MEMORIAAND BX, 7MOV STATUS,BXRET

Page 52: Interfases de Entrada / Salida

F0

F1

F2

F3

C0C1

C2C3

Teclado

TeclasSalidas

Entradas

Page 53: Interfases de Entrada / Salida

0

1

0

0

00

00

TECLADO

Salidas

Entradas

Page 54: Interfases de Entrada / Salida

0

0

0

01

00

TECLADO

1Salidas

Entradas

Page 55: Interfases de Entrada / Salida

0

1

0

0

00

00

TECLADO

Salidas

Entradas

Page 56: Interfases de Entrada / Salida

0

1

0

0

00

00

TECLADO

Salidas

Entradas

Page 57: Interfases de Entrada / Salida

F0

F1

F2

F3

C0C1

C2C3

Teclado

TeclasSalidas

Entradas

Page 58: Interfases de Entrada / Salida

Aplicación

OE

8.

8.

8.

8.

Habilitaciones(Cátodos)

Excitación(Ánodos)

K3K2K1K0

CLK

CE1

OE

WL

CLK

CE1

WH

D7…D0

D15…D8

Q7

Q0

Q0

Q3

Page 59: Interfases de Entrada / Salida

Q0

Q1

Q2

Q3

C0C1

C2C3

Teclado

Teclas

Entradas

Page 60: Interfases de Entrada / Salida

PUERTO_B

OE1

Entradas

Puerta de 3 estados

RDL

CE

O0

O7

I0

I7

OE2

D0

D7

Page 61: Interfases de Entrada / Salida

Q0

Q1

Q2

Q3

I0I1

I2I3

Teclado

Teclas

PUERTO

A

Entradas

Page 62: Interfases de Entrada / Salida

Q0

Q1

Q2

Q3

I3 I2 I1 I0 I4 I5 I6 I7

Teclado

Teclas

PUERTO

A

EntradasPUERTO_B

Page 63: Interfases de Entrada / Salida

;SUB. DE EXPLORACION DE TECLADO

SCAN PROC NEAR

MOV DX, PORT_BIN AL, DXTEST AL, 0F0hJZ notecMOV TECLA, AL

notec:RET

Subrutina SCAN :Variables utilizadas :

TECLA : Código ultima tecla presionada

TECLA db 0