slide1
Download
Skip this Video
Download Presentation
Introducción a las Interfaces de entrada / salida

Loading in 2 Seconds...

play fullscreen
1 / 70

Introducción a las Interfaces de entrada / salida - PowerPoint PPT Presentation


  • 123 Views
  • Uploaded on

Introducción a las Interfaces de entrada / salida. Puerto de Salida Básico. Registro (Latch). #CE. CLK. #WR. #OE. D0 D7. Q0 Q7. Bus de Datos del Sistema. Salidas. Sintesis en vhdl de un puerto de salida. Entity Salida is port ( HCLK : in std_logic;

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Introducción a las Interfaces de entrada / salida' - aloha


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

Introducción a las

Interfaces de entrada / salida

slide2

Puerto de Salida Básico

Registro (Latch)

#CE

CLK

#WR

#OE

D0

D7

Q0

Q7

Bus de Datos

del Sistema

Salidas

slide3

Sintesis en vhdl de un puerto de 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 entrada

O : out std_logic_vector (7 downto 0)

--Salidas al exterior

);

end Salida;

slide4

architecture B2 of Salida is

begin

process (HCLK, RESET)

begin

if RESET = \'1\' then

O ( 7 downto 0 )<= "00000000";

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

end if;

end if;

end process;

end B2;

slide7

Puerto de Entrada Básico

Puerta de 3 estados

(Transceiver)

#CE

#RD

#OE

O0

O7

I0

I7

Bus de Datos

del Sistema

Entradas

slide8

Sintesis en vhdl de un puerto de entrada

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;

slide9

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

end if;

end process;

end B2;

slide12

Síntesis en vhdl de un registro interno (sin líneas de entrada ni 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;

slide13

architecture B2 of Registro is

Begin

process (HCLK, RESET)

variable REGISTRO : std_logic_vector (7 downto 0) := "00000000";

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 ) <= 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;

slide16

Generador PWM

Contador

Comparador

HCLK

CLK

Q0

Q7

Salida

PWM

Registro

#CE

#WR

#OE

CLK

D0

D7

Q0

Q7

Bus de Datos

del Sistema

slide17

entity PWM 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);

PWM : out std_logic

);

end PWM;

slide18

architecture B2 of PWM is

Begin

process (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";

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;

end if;

else

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

end if;

slide19

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;

slide22

Puerto de Entrada + Salida Básico

#CE

Registro

(Latch)

#WR

#OE

Salida

Bus de Datos

Entrada

Puerta de

3 estados

(Transceiver)

#OE

#RD

slide23

Puerto de Entrada + Salida Básico

#CE

Registro

(Latch)

#WR

#OE

Salida

Bus de Datos

Entrada

Puerta de

3 estados

(Transceiver)

#OE

#RD

slide24

Puerto de Entrada / Salida Programable

#CE

Registro

(Latch)

#WR

#OE

Exterior

Salida

Bus de Datos

Entrada

Puerta de

3 estados

(Transceiver)

#OE

#RD

slide25

Puerto de Entrada / Salida Programable

#CE 1

#WR

#OE

Exterior

#CE

#WR

#OE

Salida

Bus de Datos

Entrada

#OE

#RD

slide26

Puerto de Entrada / Salida Programable

A0

#WR

#OE

#CE

Exterior

#WR

#OE

Salida

Bus de Datos

Entrada

#OE

#RD

slide27

Puerto de Entrada / Salida Programable

#CE #WR

A0 #RD

#OE

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

Exterior

#OE

Salida

Bus de Datos

Entrada

#OE

slide28

Puerto de Entrada / Salida Programable

#CE #WR

A0 #RD

#OE

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

Exterior

#OE

Salida

Bus de Datos

Entrada

#OE

slide29

Puerto de Entrada / Salida Programable

#CE #WR

A0 #RD

#OE

LCLE

Puerta bidireccional de 3 estados (Transceiver)

#OE

Salida

#OE Dd

Entrada

Bus de Datos del sistema

#OE

slide30

Puerto de Entrada / Salida Programable con Reset

#CE #WR

A0 #RD

RESET

#OE

LCLE

Puerta bidireccional de 3 estados (Transceiver)

#OE

Salida

#OE Dd

Entrada

Bus de Datos del sistema

#OE

slide31

Puerto de Entrada / Salida Programable con Reset

#CE #WR

A0 #RD

RESET

#OE

LCLE

Puerta bidireccional de 3 estados (Transceiver)

#OE

Salida

#OE Dd

Entrada

Bus de Datos del sistema

#OE

slide32

entity IOP is

port (

HCLK : in std_logic;

RESET : in std_logic;

CS : in std_logic;

AD0 : in std_logic; --0 = DATOS 1 = DDR

WR : 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;

slide33

architecture B2 of IOP is

Begin

process (HCLK, RESET)

variable DDR : std_logic_vector ( 7 downto 0) :="00000000"; -- 0 = entrada

variable DAT : std_logic_vector ( 7 downto 0) :="00000000";

Begin

if 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\' then

DAT( 7 downto 0 ) := D( 7 downto 0 );

n1: for i in 0 to 7 loop

if DDR(i) = \'1\' then

ES (i) <= D (i);

else

ES (i) <= \'Z\';

end if;

end loop n1;

slide34

else

DDR( 7 downto 0 ) := D( 7 downto 0 );

n2: for i in 0 to 7 loop

if D(i) = \'1\' then

ES (i) <= DAT (i);

else

ES (i) <= \'Z\';

end if;

end loop n2;

end if;

else

if RD = \'0\' then

if AD0 = \'0\' then

n3: for i in 0 to 7 loop

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

else

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

end if;

end if;

slide35

else

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

end if;

end if;

end if;

end process;

end B2;

slide38

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

Habilitación

INTR

Bandera

Puertas de

3 estados

(Transceiver)

1

#OE

D

Q

#R

Bus de Datos

#OE

Entrada

slide39

Puerto de Entrada con Líneas de control y con capacidad de solicitar interrupciones

Bandera

INTR

#OE0

#CE

A0

#WR

#RD

#OE1

Habilitación

LCLE

1

CLK1

D

Q

DAV

#R

#OE

Bus de Datos

#OE1

DAC

#OE

#CE

#OE0

Entradas

slide42

8.

8.

8.

8.

Aplicación

Q7

CE1

Excitación

(Ánodos)

WL

CLK

D7

D0

OE

Q0

CE1

WH

CLK

K3

K2

K1

K0

D15

D8

Q3

Q0

OE

Habilitaciones

(Cátodos)

slide43

a

f

b

g

e

c

p

d

slide44

ÁNODOS

CÁTODO COMÚN

ÁNODOS

slide45

Vcc

a

b

c

d

e

f

g

p

CÁTODO COMÚN

ÁNODOS

slide46

ÁNODOS

5.

8.

8.

8.

KHH

KMH

KML

KLL

ULN2003

1 0 0 0

slide47

ÁNODOS

8.

8.

3.

8.

KMH

KML

KLL

ULN2003

0 1 0 0

slide48

ÁNODOS

8.

9.

8.

8.

KMH

KML

KLL

ULN2003

0 0 1 0

slide49

ÁNODOS

8.

8.

8.

6.

KMH

KML

KLL

ULN2003

0 0 0 1

slide50

;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 0

BUFFER db 1, 1 ;LSD , 00000001

db 3, 2 ; , 00000010

db 5, 4 ; , 00000100

db 7, 8 ;MSD; 00001000

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

PORT_A equ XXXX

slide51

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

DISP PROC NEAR

XOR AX,AX

MOV DX, PORT_A

OUT DX,AX ;APAGA DISPLAY

MOV BX, STATUS ;BUSCA DATOS EN BUFFER

MOV SI, OFFSET BUFFER

MOV AX,(BX+SI)

OUT DX,AX ;ENCIENDE DIGITO

ADD BX, 2 ;APUNTA AL PROXIMO DIGITO EN MEMORIA

AND BX, 7

MOV STATUS,BX

RET

slide52

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

DISP PROC NEAR

XOR AX,AX

MOV DX, PORT_A

OUT DX,AX ;APAGA DISPLAY

MOV BX, STATUS ;BUSCA DATOS EN BUFFER

MOV SI, OFFSET BUFFER

MOV AX,(BX+SI)

OUT DX,AX ;ENCIENDE DIGITO

ADD BX, 2 ;APUNTA AL PROXIMO DIGITO EN MEMORIA

AND BX, 7

MOV STATUS,BX

RET

slide53

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

DISP PROC NEAR

XOR AX,AX

MOV DX, PORT_A

OUT DX,AX ;APAGA DISPLAY

MOV BX, STATUS ;BUSCA DATOS EN BUFFER

MOV SI, OFFSET BUFFER

MOV AX,(BX+SI)

OUT DX,AX ;ENCIENDE DIGITO

ADD BX, 2 ;APUNTA AL PROXIMO DIGITO EN MEMORIA

AND BX, 7

MOV STATUS,BX

RET

slide54

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

DISP PROC NEAR

XOR AX,AX

MOV DX, PORT_A

OUT DX,AX ;APAGA DISPLAY

MOV BX, STATUS ;BUSCA DATOS EN TRABLA

MOV SI, OFFSET BUFFER

MOV AX,(BX+SI)

OUT DX,AX ;ENCIENDE DIGITO

ADD BX, 2 ;APUNTA AL PROXIMO DIGITO EN MEMORIA

AND BX, 7

MOV STATUS,BX

RET

slide55

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

DISP PROC NEAR

XOR AX,AX

MOV DX, PORT_A

OUT DX,AX ;APAGA DISPLAY

MOV BX, STATUS ;BUSCA DATOS EN TRABLA

MOV SI, OFFSET BUFFER

MOV AX,(BX+SI)

OUT DX,AX ;ENCIENDE DIGITO

ADD BX, 2 ;APUNTA AL PROXIMO DIGITO EN MEMORIA

AND BX, 7

MOV STATUS,BX

RET

slide56

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

DISP PROC NEAR

XOR AX,AX

MOV DX, PORT_A

OUT DX,AX ;APAGA DISPLAY

MOV BX, STATUS ;BUSCA DATOS EN TRABLA

MOV SI, OFFSET BUFFER

MOV AX,(BX+SI)

OUT DX,AX ;ENCIENDE DIGITO

ADD BX, 2 ;APUNTA AL PROXIMO DIGITO EN MEMORIA

AND BX, 7

MOV STATUS,BX

RET

slide57

Teclado

C0

C1

Entradas

C2

C3

F0

F1

Teclas

Salidas

F2

F3

slide58

TECLADO

0

0

Entradas

0

0

0

1

Salidas

0

0

slide59

TECLADO

0

1

Entradas

0

0

0

1

Salidas

0

0

slide60

TECLADO

0

0

Entradas

0

0

0

1

Salidas

0

0

slide61

TECLADO

0

0

Entradas

0

0

0

1

Salidas

0

0

slide62

Teclado

C0

C1

Entradas

C2

C3

F0

F1

Teclas

Salidas

F2

F3

slide63

8.

8.

8.

8.

Aplicación

Q7

CE1

Excitación

(Ánodos)

WL

CLK

D7

D0

OE

Q0

CE1

WH

CLK

K3

K2

K1

K0

D15

D8

Q3

Q0

OE

Habilitaciones

(Cátodos)

slide64

Teclado

C0

C1

Entradas

C2

C3

Q0

Q1

Teclas

Q2

Q3

slide65

PUERTO_B

Puerta de 3 estados

CE

OE1

RDL

OE2

Entradas

D0

D7

O0

O7

I0

I7

slide66

Teclado

I0

I1

Entradas

I2

I3

P

U

E

R

T

O

A

Q0

Q1

Teclas

Q2

Q3

slide67

Teclado

I3 I2 I1 I0 I4 I5 I6 I7

Entradas

PUERTO_B

P

U

E

R

T

O

A

Q0

Q1

Teclas

Q2

Q3

slide68

Subrutina SCAN :

Variables utilizadas :

TECLA : Código ultima tecla presionada

TECLA db 0

;SUB. DE EXPLORACION DE TECLADO

SCAN PROC NEAR

MOV DX, PORT_B

IN AL, DX

TEST AL, 0F0h

JZ notec

MOV TECLA, AL

notec:

RET

slide69

; 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_INP PROC NEAR

TEST N,0FFFFh

JNZ OK_DAT ;salta a recepción

MOV DX, CRSR ;apunta al registro de control

XOR AL,AL

OUT DX,AL ;deshabilita pedido de interrupción

SALE RET

OK_DAT MOV DX, CRSR ;Apunta al registro de estados

IN AL,DX ;verifica si hay dato para leer

TEST AL, FLAG ; “

JZ SALE ;si no hay dato sale

MOV DX, DATR ;apunta al registro de entrada

MOV SI, PUNTERO ;carga el puntero para guardar el dato

IN AL,DX

MOV (SI),AL ;guarda el dato

DEC N ;actualiza contador

INC PUNTERO ;actualiza puntero

RET

ENDP

slide70

; SUB. INI_HS_INP

; Parámetros de entrada: BX puntero al área de memoria libre

CX cantidad de datos para almacenar

AL configuracion del puerto

; 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)

INI_HS_INP PROC NEAR

MOV N, CX

MOV PUNTERO, BX

MOV DX, CRSR

OUT DX,AL

RET

ENDP

ad