Download Electrónica Digital III

Document related concepts
no text concepts found
Transcript
Digital III
El Microprocesador i80c86
Pinout del Microprocesador i80c86
ADDRESS / DATA Bus
Oscilador a Cristal
Decodificador
de
Instrucciones
&
Unidad de
Control
Circuito de Reset
Bus de direcciones / Datos
(Multiplexado)
(AD0 – AD15)
ADDRESS / STATUS Bus
Unidad
Aritmetico
Lógica
Registros
Bus de direcciones / Status
(Multiplexado)
(A16/S3 - A19/S6)
CONTROL Bus
AX BX CX DX
CS DS ES BP
SI DI PSW IP
Microprocesador
Bus de control
/RD, /WR, /ALE, etc
Ing. Gustavo Minnucci - Digital III
Arquitectura Interna i80c86
Ing. Gustavo Minnucci - Digital III
Generación de direcciones Físicas
(con segmentación)
Registro de
SEGMENTO
Las direcciones constituyen el mecanismo que
permite al microprocesador comunicarse con el
resto de los dispositivos (memorias, periféricos, etc)
16 bits
SEGMENT Register
Registro de
OFFSET
Address Bus
(A0 - A19)
DIRECCION
FISICA
4 bits
0000
16 bits
OFFSET register
Physical Address
20 bits
Ej: jmp 0001h
CS ( 8000 h )
0h
( CS: 8000h )
( OFFSET : 0001h )
Microprocesador
OFFSET ( 0001h )
Dirección física ( 80001 h)
Ing. Gustavo Minnucci - Digital III
Generación de direcciones
Registros Internos
Registros de Segmento
Ing. Gustavo Minnucci - Digital III
Digital III
Ejecucion de Instrucciones
Ejecución de una instrucción
(sin Pre-Fetch)
Instrucción n
Fetch
OP-Code Fetch
Instrucción n+1
Execute
Fetch
Operand Fetch Execution OP-Code Fetch
Execute
Operand Fetch Execution
OP-CODE Fetch
 Lectura del OP-CODE desde memoria de programa ( Apuntado por CS : IP )
 Decodificación del OP-CODE de la instrucción
 Incremento del IP.
 Determinación de búsqueda de operandos extras para la ejecución
OPERAND Fetch (si existe)
 Lectura del (o los) operando(s) desde memoria de programa (CS : IP + ...)
 Almacenamiento interno de los operandos.
Execution
 Ejecución de la instrucción.
Ing. Gustavo Minnucci - Digital III
Ejecución de instrucciones
(con Pre-Fetch)
Instrucción n
Fetch de Instrucción (n)
Execute Instrucción (n)
Instrucción n+1
Fetch Instrucción (n+1)
Execute
OP-CODE Fetch ( Instrucción n )
 Lectura del OP-CODE desde memoria de programa ( CS : IP )
 Decodificación del OP-CODE de la instrucción
 Incremento del IP.
 Determinación de búsqueda de operandos extras para la ejecución
Determina si en la ejecución hará uso de los buses.
Execution ( Instrucción n )
Pre-Fetch ( Instrucción n + 1 )
 Ejecución de la instrucción (n).
 Busqueda de las instrucción siguiente.
... SI LA INSTRUCCIÓN (n) NO UTILIZA LOS BUSES.
Armado de la cola interna de ejecución.
Ing. Gustavo Minnucci - Digital III
Digital III
Accesos de Lectura y Escritura
Acceso a memoria en lectura
Registro de
segmento
Memoria
Lógica de
decodificación
Registro de
Offset
Latch de
Direcciones
Dirección Física
ALE
Address Bus
Data Bus
Microprocesador
BHE
LA0
/CS
Address
Bus
Registro de datos
/RD
Par / Impar
Generador
RD – WR
Par - Impar
Data
Bus
/OE
La memoria es quien provee el dato a transferir
Ing. Gustavo Minnucci - Digital III
Intel 80c86 en lectura
(Lectura de datos desde la memoria (o I/O) al uP)
Gustavo Minnucci - Digital III - Año 2011
Acceso a memoria en escritura
Registro de
segmento
Registro de
Offset
Memoria
Lógica de
decodificación
/CS
Address Bus
Address
Bus
Latch de
Direcciones
Dirección Física
ALE
Data Bus
Registro de datos
/WR
Par / Impar
BHE
LA0
Generador
RD – WR
Par - Impar
Data
Bus
/WR
El Microprocesador es quien provee el dato a transferir
Microprocesador
Ing. Gustavo Minnucci - Digital III
Intel 80c86 en escritura
(Escritura de datos desde el uP a la memoria (o I/O) )
Gustavo Minnucci - Digital III - Año 2011
Digital III
Mapeo de Dispositivos
Mapeo de dispositivos
Mapa de Memoria
FFFFF h
Área de memoria
No Volatil
 Nota:
El mapeo de un dispositivo consiste en
asignarle un rango de direcciones dentro del
mapa de memoria (o Entrada/Salida) donde
se pueda acceder a sus registros internos.
El Mapa de Memoria es el vínculo entre el
software y el hardware.
Área de memoria
Volatil
00000 h
Gustavo Minnucci - Digital III
Mapas de memoria y de I/O
Mapa de Memoria
FFFFF h
Área de memoria
No Volatil
 Observación:
Los espacios de direcciones de MEMORIA
y de ENTRADA/SALIDA son espacios
DISTINTOS y son accesibles con
instrucciones distintas.
Mapa de I/O
FFFF h
Periférico n
Área de memoria
Volatil
00000 h
Accesible con instrucciones MOV, PUSH, etc.
Gustavo Minnucci - Digital III
Periférico 2
0000 h
Periférico 1
Accesible con instrucciones IN y OUT
Mapeo de dispositivos con decod. completa
Ej. Sistema con:
1 EPROM de 128K x 8. (17 líneas de direcciones)
(8 líneas de datos)
2 RAMs de 128K x 8.
(17 líneas de direcciones)
(8 líneas de datos)
Decodificación total de direcciones
Líneas de direcciones del microprocesador
Rango
LA19
LA18
LA17
LA16
LA15
LA14 a LA2
LA1
LA0
EPROM
128 K
FFFFFh a
E0000h
1
1
1
A16
A15
A14 a A2
A1
A0
Area Libre
40000h a
DFFFFh
0
1
x
x
x
xxxxxxx
x
x
RAM 1
128 K
20000h a
3FFFFh
0
0
1
A16
A15
A14 a A2
A1
A0
RAM 0
128 K
00000h a
1FFFFh
0
0
0
A16
A15
A14 a A2
A1
A0
Gustavo Minnucci - Digital III
Mapeo de dispositivos con espejado
Ej. Sistema con:
1 EPROM de 128K x 8. ( 17 líneas de direcciones )
( 8 líneas de datos )
2 RAMs de 128K x 8.
( 17 líneas de direcciones )
( 8 líneas de datos )
Decodificación parcial de direcciones
EPROM
128 K
Líneas de direcciones del microprocesador
A17
A16
A15
A14 a A2
Rango
A19
A18
FFFFFh
a E0000h
1
X
X
A16
A15
1
X
X
A16
1
X
X
1
X
0
Espejo
EPROM
Espejo
EPROM
Espejo
EPROM
Espejo
RAM 1
Espejo
RAM 0
A1
A0
A14 a A2
A1
A0
A15
A14 a A2
A1
A0
A16
A15
A14 a A2
A1
A0
X
A16
A15
A14 a A2
A1
A0
X
1
A16
A15
A14 a A2
A1
A0
0
X
0
A16
A15
A14 a A2
A1
A0
RAM 1
128 K
20000h a
3FFFFh
0
X
1
A16
A15
A14 a A2
A1
A0
RAM 0
128 K
00000h a
1FFFFh
0
X
0
A16
A15
A14 a A2
A1
A0
Gustavo Minnucci - Digital III - Año 2011
Digital III
Lógica de decodificación
Implementación VHDL
Implementacion VHDL
Logica de bus
RAM Par
Microprocesador
Lógica de
decodificación
M/IO
ALE
A16 - A19
ADD Bus
ADD/DATA
Bus
Latch de
Direcciones
LA01 - LA19
RAM
Impar
/CS
/CS
Address
Bus
Address
Bus
AD0-AD15
D0-D7
DATA BUS
(16 bits)
/RD
/WR
BHE
Gustavo Minnucci - Digital III
Data
Bus
D8-D15
Generador
WR_Par
WR_Impar
RD_Par
RD_Impar
Data
Bus
/OE
/WR
/OE
/WR
Implementacion
entity Logica_de_Bus is
Port (
clk
: in
STD_LOGIC;
-- f [clk]: 25 MHz
reset : in
STD_LOGIC;
AD
: in
STD_LOGIC_VECTOR (19 downto 0);
ALE : in
STD_LOGIC;
BHE : in
STD_LOGIC;
MIO : in
STD_LOGIC;
RD
: in
STD_LOGIC;
WR : in
STD_LOGIC;
INTA : in
STD_LOGIC;
INTR : out STD_LOGIC;
NMI : out STD_LOGIC;
CLK_uP
: out STD_LOGIC;
RESET_uP : out STD_LOGIC;
--
STATUS
LADD : out
CS
: out
PCS : out
WR_H
WR_L: out
RD_H : out
RD_L : out
: out STD_LOGIC_VECTOR (3 downto 0);
STD_LOGIC_VECTOR (19 downto 0);
STD_LOGIC_VECTOR (3 downto 0);
STD_LOGIC_VECTOR (3 downto 0);
: out STD_LOGIC;
STD_LOGIC;
STD_LOGIC;
STD_LOGIC
);
end Logica_de_Bus;
Gustavo Minnucci - Digital III
Implementacion
architecture Behavioral of Logica_de_Bus is
------------------------------------------------------------------- Definicion de Señales
-----------------------------------------------------------------signal
sALE
: STD_LOGIC;
signal
sBHE
: STD_LOGIC;
signal
sMIO
: STD_LOGIC;
signal
sINTA
: STD_LOGIC;
signal
sINTR
: STD_LOGIC;
signal
sRD
: STD_LOGIC;
signal
sWR
: STD_LOGIC;
signal
sNMI
: STD_LOGIC;
signal
sCLK_uP
: STD_LOGIC;
signal
sRESET_uP
: STD_LOGIC;
signal
signal
signal
sLADD
sCS
sPCS
signal
signal
signal
signal
sWR_H
sWR_L
sRD_H
sRD_L
Gustavo Minnucci - Digital III
: STD_LOGIC_VECTOR (19 downto 0);
: STD_LOGIC_VECTOR (3 downto 0);
: STD_LOGIC_VECTOR (3 downto 0);
: STD_LOGIC;
: STD_LOGIC;
: STD_LOGIC;
: STD_LOGIC;
Implementacion
------------------------------------------------------------------- Demultiplexor de direcciones
-----------------------------------------------------------------demux: process (clk, reset)
begin
if (reset = '1') then
sLADD (19 downto 0)
<= (others => '0');
else
if (clk = '1' and clk'event) then
if (sALE = '1') then
sLADD <= AD;
sBHE
<= BHE;
end if;
end if;
end if;
end process;
Gustavo Minnucci - Digital III
Implementacion
------------------------------------------------------------------- Logica de Chip Selects (con decodificacion Incompleta)
------------------------------------------------------------------- CS's en Espacio de Memoria
sCS(0)
<= '0'when (sLADD(19) = '0' and sLADD(18) = '0' and sMIO = '1') else '1';
sCS(1)
<= '0'when (sLADD(19) = '0' and sLADD(18) = '1' and sMIO = '1') else '1';
sCS(2)
<= '0'when (sLADD(19) = '1' and sLADD(18) = '0' and sMIO = '1') else '1';
sCS(3)
<= '0'when (sLADD(19) = '1' and sLADD(18) = '1' and sMIO = '1') else '1';
-- CS's en Espacio de Entrada / Salida
sPCS(0)
<= '0'when (sLADD(15) = '0' and sLADD(14) = '0' and sMIO = '0') else '1';
sPCS(1)
<= '0'when (sLADD(15) = '0' and sLADD(14) = '1' and sMIO = '0') else '1';
sPCS(2)
<= '0'when (sLADD(15) = '1' and sLADD(14) = '0' and sMIO = '0') else '1';
sPCS(3)
<= '0'when (sLADD(15) = '1' and sLADD(14) = '1' and sMIO = '0') else '1';
Gustavo Minnucci - Digital III
Implementacion
------------------------------------------------------------------- Generacion de señales de RD y WR a memorias y perifericos
-----------------------------------------------------------------RD_WR: process (reset, sRD, sBHE, sLADD(0), sWR)
begin
if (reset = '1') then
sRD_H <= '1';
sRD_L <= '1';
sWR_H <= '1';
sWR_L <= '1';
else
sRD_H <= sRD or sBHE;
sRD_L <= sRD or sLADD(0);
sWR_H <= sWR or sBHE;
sWR_L <= sWR or sLADD(0);
end if;
end process;
Gustavo Minnucci - Digital III
Implementacion
------------------------------------------------------------------- Generacion de Clock para Microprocesador
-----------------------------------------------------------------clk_gen: process (clk, reset)
variable v : std_logic_vector (2 downto 0) := "001";
begin
if (reset = '1') then
sCLK_uP <= '0';
v := "001";
else
if (clk = '1' and clk'event) then
v := v(1 downto 0) & v(2);
end if;
end if;
sCLK_uP <= v(2);
end process;
Gustavo Minnucci - Digital III
Implementacion
------------------------------------------------------------------- Conexion de señales con lineas externas
-----------------------------------------------------------------sALE<= ALE;
sMIO<= MIO;
-- MIO: 1 -> M - MIO: 0 -> IO
sINTA
<= INTA;
INTR<= sINTR;
NMI <= sNMI;
sRD <= RD;
sWR <= WR;
-CS <= sCS;
PCS <= sPCS;
-LADD
<= sLADD;
RD_H
<= sRD_H;
RD_L
<= sRD_L;
WR_H
<= sWR_H;
WR_L
<= sWR_L;
CLK_uP <= sCLK_uP;
RESET_uP<= sRESET_uP;
Gustavo Minnucci - Digital III
Implementacion con Paginacion
Microprocesador
Registro
Paginacion
RAM Par
Lógica de
decodificación
M/IO
ALE
A16 - A19
ADD Bus
ADD/DATA
Bus
Latch de
Direcciones
LA01 - LA19
RAM
Impar
/CS
/CS
Address
Bus
Address
Bus
AD0-AD15
D0-D7
DATA BUS
(16 bits)
/RD
/WR
BHE
Gustavo Minnucci - Digital III
Data
Bus
D8-D15
Generador
WR_Par
WR_Impar
RD_Par
RD_Impar
Logica de bus
Data
Bus
/OE
/WR
/OE
/WR
Electrónica Digital III
Ejemplo: Lectura de Memoria RAM con Intel 80C88
Esquema Interno - Memoria RAM HM62256 (32K x 8)
Gustavo Minnucci - Digital III
Ciclo de Lectura - Memoria RAM HM62256 (32K x 8)
Gustavo Minnucci - Digital III
Ciclo de Escritura - Memoria RAM HM62256 (32K x 8)
Gustavo Minnucci - Digital III
Compatibilización en Lectura - uP -RAM (Con Latch Transparente)
Microprocesador
La compatibilidad depende del circuito intermedio !!
Memoria
 Direccionamiento uP
 Dirección estable para acceso
 Decodificación de direcciones
 Activación de Chip Select (Selección de celda)
 Activación de /RD
 Activación de los buffers de salida
 Entrega del dato
 Lectura del dato
 Desactivación de /RD
 Desabilitación buffers de salida
 Direccionamiento uP
 Deselección de dispositivo
Gustavo Minnucci - Digital III
Ejercicio:
Ejercicio
Realizar el mismo análisis de
Compatibilización para el Ciclo de Escritura
(uP -RAM) (Con Latch Transparente)
Gustavo Minnucci - Digital III