Laboratorio 10: Interfaces programables de E/S · o Arquitectura Harvard o 16 registros de 8 bits o...

Post on 21-Aug-2020

2 views 0 download

Transcript of Laboratorio 10: Interfaces programables de E/S · o Arquitectura Harvard o 16 registros de 8 bits o...

José Manuel Mendías CuadrosDpto. Arquitectura de Computadores y AutomáticaUniversidad Complutense de Madrid

Laboratorio 10:Interfaces programables de E/Smapeo en el espacio de direcciones de un microcontrolador

Diseño automático de sistemas

2

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

Diseñar un esquema genérico de interconexión de interfaces programables de dispositivos a un bus síncrono. 

o Conceptualmente análogo al usado por Xilinx EDK para interconectar sistemas hardware a un microcontrolador.

o Cada interfaz se mapeará en un rango de direcciones dado y actuará como esclavo del bus realizando transferencias de datos desde/hacia el microcontrolador

Bus

MCU(master)

interfaz 1(slave)

interfaz 2(slave)

dispositivo 1 dispositivo 2

Memoria

3

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

aBusdBuswrCErdCErst_nclk

CPU(master)

interfaz 1(slave)

busWrapper 1

regSel

wrErdE

dataIn

dataOut

interfaz 2(slave)

busWrapper 2

regSel

wrErdE

dataIn

dataOut

dispositivo 1 dispositivo 2

4

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

controlador dispositivo

5

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

stat

dataOut

LD

LD

REGconfconf

dataIn

LD

LD

controlador dispositivo

6

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

stat

dataOut

LD

LD

REGconfconf

dataIn

LD

LD

controlador dispositivo

dataIn

7

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

stat

dataOut

LD

LD

REGconfconf

dataIn

LD

LD

controlador dispositivo

dataIn

E

regSel wrE

8

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

controlador

stat

dataOut

E

LD

LD

dataInregSel wrE dataOut

E

rdE

REGconfconf

dataIn

LD

LD

dispositivo

9

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

controlador

stat

dataOut

E

LD

LD

dataInregSel wrE dataOut

E

rdE

REGconfconf

dataIn

LD

LD

dispositivo

10

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

diagrama RTL

Diseñar un adaptador de bus genérico:o Permitirá mapear en direcciones distintas los registros de un interfaz programableo Serán configurables:

• el número de registros del interfaz (NUMREG)• la dirección base (BASEADDR) a partir de la cual están ubicados los registros  • La anchura del bus de datos (DWIDTH) y direcciones (AWIDTH)

aBus

wrErdE

wrCErdCE

dataIn

dBus

dataOut regSel

= BASEADDR

AWIDTH

DWIDTHDWIDTH

log2(NUMREG)AWIDTH‐log2(NUMREG)

11

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

Diseñar un puerto de entrada/salida programable:o Dispondrá de un registro de configuración (accesible si regSel vale 1):

• Cada bit configura la correspondiente línea de io como entrada/salida (1/0)

o Dispondrá de un registro de datos (accesible si regSel vale 0):• Si el puerto está configurado como salida, almacenará el valor escrito por la CPU. Su salida 

estará conectada al puerto.• Si el puerto está configurado como entrada, en todo ciclo cargará el valor presente en el 

puerto. Su entrada estará conectada al puerto.

o Adicionalmente dispondrá de una salida de interrupción• Se activará durante un ciclo si hay cambio en algún puerto configurado como entrada.

GPIO

rst_nclk

int

ioPWIDTHregSel

rdE

dataOutdataIn

DWIDTH

wrE

DWIDTH

12

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

diagrama RTL

conRegi

datRegi

13

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

diagrama RTL

conRegi

datRegi

ioj

14

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

diagrama RTL

conRegi

datRegi

ioi

sync

0 1

15

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

diagrama RTL

conRegi

datRegi

ioi

sync

0 1

dataIni

16

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

diagrama RTL

conRegi

datRegi

ioj

sync

0 1

dataOuti

rdE

0

1

E

regSel

dataInj

17

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

diagrama RTL

conRegi

datRegi

ioi

sync

0 1

dataOuti

rdE

0

1

E

regSel

dataIni

1

0E

wrE

18

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

diagrama RTL

dataIni

dataOuti

1

0E

conRegi

ioi

rdE datRegi

0 1

sync

wrE

0

1

E

regSel

int

19

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

diagrama RTL

dataIni

dataOuti

1

0E

conRegi

ioi

rdE datRegi

0 1

sync

wrE

0

1

E

regSel

int

20

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

Siguiendo el mismo patrón es sencillo diseñar cualquier tipo de interfaz programable partiendo de un controlador de dispositivo

UART lite

intTx

regSel

rdE

dataOutdataIn

wrE

intRx

RxDTxD

Controladorde 

interrupcionesintTx

regSel

rdE

dataOutdataIn

wrE

intRx

intIn

intRqtintCode

21

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

diagrama RTL

RxDrs232receiver8

TxDrs232transmitterbusy

8

22

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

diagrama RTL

RxDrs232receiver8

TxDrs232transmitterbusy

8

TxFifo rdEwrE

8

wrEdataIn

TxEmpty

23

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

diagrama RTL

RxDrs232receiver8

TxDrs232transmitterbusy

8

TxFifo rdEwrE

RxFifo wrErdE

8

wrEdataIn

TxEmpty

dataOut

rdE

1

0

regSel

E

8

24

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

diagrama RTL

RxDrs232receiver8

TxDrs232transmitterbusy

8

TxFifo rdEwrE

RxFifo wrErdE

8

wrEdataIn

TxEmpty

dataOut

rdE

1

0

regSel

E

TxFull

RxFull RxEmpty8

25

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

diagrama RTL

RxDrs232receiverRxFifo8

wrErdE

TxDrs232transmitterTxFifo rdEwrE

TxFull TxEmpty

wrEdataIn

RxFull RxEmptydataOut

rdE

1

0

regSel

E

88

intRx

intTx

busy

8

26

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

diagrama RTL

RxDrs232receiverRxFifo8

wrErdE

TxDrs232transmitterTxFifo rdEwrE

TxFull TxEmpty

wrEdataIn

RxFull RxEmptydataOut

rdE

1

0

regSel

E

88

8

intRx

intTx

busy

27

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

diagrama RTL

intPendiST

REGconfintMaski

intEnable

LD

LD

CL

28

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

diagrama RTL

intPendi

REGconfintMaski

intEnable

LD

LD

CL

dataIni

E

regSel wrE

10

23

ST

intIni

29

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

diagrama RTL

intPendi

REGconfintMaski

intEnable

LD

LD

CL

dataIni

E

regSel wrE

10

23

ST

intIni

30

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

diagrama RTL

intPendi

REGconfintMaski

intEnable

LD

LD

CL

dataIni

E

regSel wrE

10

23

A

intCode

E

intRqt

ST

intIni

31

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

diagrama RTL

intPendi

E

dataIniregSel wrE

dataOuti

E

rdE

REGconfintMaski

intEnable

LD

LD

0CL

10

23

10

23

A

intCode

intRqt

E

ST

intIni

32

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

diagrama RTL

intPendi

E

ST

dataIniregSel wrE

dataOuti

E

rdE

REGconfintMaski

intEnable

LD

LD

0

intIni

CL

10

23

10

23

A

intCode

intRqt

E

33

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

Para testar el esquema de interconexión conectaremos 3 GPIO con un microcontrolador de 8 bits:

o Un GPIO estará conectado a los switches y mapeado a partir de la dirección (fc)16o Un GPIO estará conectado a los leds y mapeado a partir de la dirección (fe)16o Un GPIO estará conectado a los 7‐segs y mapeado a partir de la dirección (fa)16

Como microcontrolador usaremos PicoBlace (versión KCPMS3) de Xilinx.o Soft core escrito en VHDL que ocupa 96 slices + 1 blockRAM en una Spartan3o Rendimiento predecible: 2 ciclos/instruccióno Arquitectura Harvardo 16 registros de 8 bitso Memoria de datos (Scratchpad RAM) para 64 datos de 8 bitso Memoria de programa (PROM) para 1024 instrucciones de 18 bits o Pila para 31 direcciones de 10 bitso Bus de periféricos de 8 bits con señalización por strobe de 1 cicloo Una única línea de INT/ACKo Dispone de ensamblador

34

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

PicoBlace de Xilinx

35

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

lab10.vhd

architecture syn of lab10 is

...

begin

gpioWrapper1 : busWrappergeneric map ( NUMREG => 2, DWIDTH => 8, AWIDTH => 8, BASEADDR => 16#fe# )port map (

wrCE => wrCE, rdCE => rdCE, aBus => aBus, dBus => dBus, regSel => regSel1, wrE => wrE1, dataIn => dataIn1, rdE => rdE1, dataOut => dataOut1

);

gpio1 : gpiogeneric map ( DWIDTH => 8, PWIDTH => 8 )port map (

rst_n => rst_n, clk => clk, regSel => regSel1(0), wrE => wrE1, dataIn => dataIn1, rdE => rdE1, dataOut => dataOut1, int => int1,io => leds

);

...

36

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

lab10.vhd

...

microcontroller: kcpsm3port map(

reset => not rst_n, clk => clk,interrupt => interrupt, interrupt_ack => interrupt_ack,address => apBus, instruction => dpBus, port_id => aBus, write_strobe => wrCE, out_port => outPort, read_strobe => rdCE, in_port => dBus

);

dBus <= outPort when wrCE='1' else (others => 'Z');

programMemory : RAMB16_S18generic map (

INIT_00 => "01FF80016F3FCFFC...",...

) port map (

clk => clk, en => '1', ssr => '0', we => '0',addr => apBus,di => X"0000", dip => "00",do => dpBus(15 downto 0), dop => dpBus(17 downto 16)

);

end syn;

37

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

lab10.psm

CONSTANT GPIODAT1, fe ;Define las direcciones de dispositivosCONSTANT GPIOCON1, ff...NAMEREG s0, arg ;Renombra registrosNAMEREG sF, aux...

ADDRESS 000main:

DISABLE INTERRUPT CALL gpio_init ;Inicializa dispositivosCALL segs_initENABLE INTERRUPT LOAD arg, 00

loop:CALL segs_putchar ;Indefinidamente muestra los numeros 0-f en el displayCALL delayADD arg, 01AND arg, 0fJUMP loop

isr:STORE aux, 3f ;Guarda el valor del registro usadoINPUT aux, GPIODAT1 ;Lee dato de GPIO-1 OUTPUT aux, GPIODAT2 ;Escribe el dato leido en GPIO-2FETCH aux, 3f ;Restaura el valor del registro usadoRETURNI ENABLE

...

38

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

lab10.psm

...gpio_init:

LOAD aux, ff ;Programa GPIO-1 como entradaOUTPUT aux, GPIOCON1 LOAD aux, 00 ;Programa GPIO-2 como salidaOUTPUT aux, GPIOCON2LOAD aux, 00 ;Programa GPIO-3 como salidaOUTPUT aux, GPIOCON3RETURN

segs_init:LOAD aux, 00 OUTPUT aux, GPIODAT3 ;Apaga el displayLOAD aux, 7e ;Crea en la scratchad una tabla de codigos 7-segmentosSTORE aux, 00LOAD aux, 30STORE aux, 01...RETURN

segs_putchar:FETCH aux, (arg) ;Visualiza un numero en el display indexando la tablaOUTPUT aux, GPIODAT3RETURN

ADDRESS 3ff ;Instala la ISR en la tabla del vector de interrupcionJUMP isr

39

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

1. Crear el proyecto lab10 en el directorio DAS 2. Descargar de la Web en el directorio common los ficheros

o busWrapper.vhd, kcpsm3.vhd y gpio.vhd

3. Descargar de la Web en el directorio lab10 los ficheros:o lab10.vhd y lab10.ucf

4. Completar el fichero common.vhd con la declaración de los nuevos componentes reusables.

5. Completar el código omitido en el ficheros:o busWrapper.vhd y gpio.vhd

6. Añadir al proyecto los ficheros:o common.vhd, synchronizer.vhd, busWrapper.vhd, kcpsm3.vhd, 

gpio.vhd, lab10.vhd y lab10.ucf

7. Sintetizar, implementar y generar el fichero de configuración.8. Conectar la placa y encenderla.9. Descargar el fichero lab10.bit

40

DAS

labo

ratorio

  10:

Interfaces program

ables de

 E/S

J.M

. Men

días

2017

Licencia CC (Creative Commons)o Ofrece algunos derechos a terceras personas bajo ciertas 

condiciones. Este documento tiene establecidas las siguientes:

Más información: https://creativecommons.org/licenses/by‐nc‐sa/4.0/

Reconocimiento (Attribution): En cualquier explotación de la obra autorizada por la licenciahará falta reconocer la autoría. 

No comercial (Non commercial): La explotación de la obra queda limitada a usos no comerciales.

Compartir igual (Share alike):La explotación autorizada incluye la creación de obras derivadas siempre que mantengan la misma licencia al ser divulgadas.