Laboratorio 10: Interfaces programables de E/S · o Arquitectura Harvard o 16 registros de 8 bits o...
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.