interfases de entrada / salida

Post on 30-Dec-2015

111 Views

Category:

Documents

14 Downloads

Preview:

Click to see full reader

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

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

OE

Salidas

Registro (Latch)

Bus de Datos del Sistema

CLKWR

CE

D0

D7

Q0

Q7

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

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;

Estimulo – 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

RD

CE

O0

O7

I0

I7

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

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;

Estimulo – Puerto de entrada

Simulación – Puerto de entrada

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

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;

Estimulo – Registro interno

Simulación – Registro interno

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;

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;

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;

OE

Salida

Entrada

Registro(Latch)

Puerta de 3 estados(Transceiver)

WRCE

RD

Puerto de Entrada + Salida Básico

Bus de Datos

OE

OE

Salida

Entrada

Registro(Latch)

Puerta de 3 estados(Transceiver)

WRCE

RD

Bus de Datos

OE

Puerto de Entrada + Salida Básico

OE

Salida

Entrada

Puerta de 3 estados(Transceiver)

Bus de Datos

WRCE

RD

Puerto de Entrada / Salida Programable

Registro(Latch)

OE

Exterior

OE

Salida

Entrada

Bus de Datos

WRCE

RD

OEWR

CE 1

OE

Exterior

Puerto de Entrada / Salida Programable

OE

Salida

Entrada

Bus de Datos

WR

CE

RD

OEWR

A0

OE

Exterior

Puerto de Entrada / Salida Programable

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

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

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

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

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

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;

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;

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;

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

Estimulo – Puerto de entrada-salida programable

Simulación – Puerto de entrada-salida programable

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

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

a

c

b

d

e

gf

p

CÁTODO COMÚNÁNODOS

ÁNODOS

abcdefgp

Vcc

ÁNODOS

CÁTODO COMÚN

5.

8.

8.

8.

ÁNODOS

ULN2003

KHH KLLKMH KML

1 0 0 0

8.

3.

8.

8.

ÁNODOS

ULN2003

KLLKMH KML

0 1 0 0

8.

8.

9.

8.

ÁNODOS

ULN2003

KLLKMH KML

0 0 1 0

8.

8.

8.

6.

ÁNODOS

ULN2003

KLLKMH KML

0 0 0 1

;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

;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

;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

;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

;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

;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

;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

F0

F1

F2

F3

C0C1

C2C3

Teclado

TeclasSalidas

Entradas

0

1

0

0

00

00

TECLADO

Salidas

Entradas

0

0

0

01

00

TECLADO

1Salidas

Entradas

0

1

0

0

00

00

TECLADO

Salidas

Entradas

0

1

0

0

00

00

TECLADO

Salidas

Entradas

F0

F1

F2

F3

C0C1

C2C3

Teclado

TeclasSalidas

Entradas

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

Q0

Q1

Q2

Q3

C0C1

C2C3

Teclado

Teclas

Entradas

PUERTO_B

OE1

Entradas

Puerta de 3 estados

RDL

CE

O0

O7

I0

I7

OE2

D0

D7

Q0

Q1

Q2

Q3

I0I1

I2I3

Teclado

Teclas

PUERTO

A

Entradas

Q0

Q1

Q2

Q3

I3 I2 I1 I0 I4 I5 I6 I7

Teclado

Teclas

PUERTO

A

EntradasPUERTO_B

;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

top related