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