Decodificação de I/O e Memória Cap.6: /0 CAPÍTULO VI DECODIFICAÇÃO DE I/O E MEMÓRIA afirmava-se que memória era todo dispositivo acessado através dos sinais *(S)MEMR ou *(S)MEMW e que I/O era todo dispositivo acessado através dos sinais *IOR ou *IOW (ativados pelas instruções "in" e "out") I/O é o nome dado a dispositivos que realizam diversas funções específicas, tais como enviar dados, receber dados, configurar a porta serial, controlar o acionador de disco ou ainda gerenciar a temporização. De forma mais simples, diz-se que os dispositivos de I/O trabalham com comandos e dados. Os comandos (operações de escrita) indicam como o dispositivo deverá operar, por exemplo, mudando a resolução da placa VA, enquanto que os dados (leitura ou escrita) são manuseados pelo I/O com objetivos diversos, como, por exemplo, para serem comunicados via modem ou placa de rede. instruções in, out, ins e outs 64K x K endereços Bits do Endereço 9876 54320 9 87654320 Espaço de I/O com 52 endereços Indica se o endereço era para a placa do sistema ou para os slots de expansão (A9=0) - placa do sistema (A9=) - slots de expansão erado pelas instruções IN e OUT, mas ignorado no caso de alguns PCs antigos Não são usados pelas instruções IN e OUT Figura 6.. Interpretação dos bits de endereçamento de I/O, nas arquiteturas de PCs antigos. MZ MZ Editora Ltda. - http://www.mzeditora.com.br - PC: um uia Prático de Hardware e Interfaceamento - Ricardo Zelenovsky & Alexandre Mendonça
Decodificação de I/O e Memória Cap.6: 2/0 FFFFh 0400h 03FFh 0200h 0FFh 0000h 64.52 52 52 Não usado no projeto inicial do PC Espaço para os slots de expansão Espaço para a placa do sistema Figura 6.2. Utilização do espaço de endereçamento de I/O nos primeiros PCs. dispositivos "on-board" Endereços Dispositivo 000h-00Fh primeiro controlador de DMA (8237) 020h-02h primeiro controlador de interrupções (8259) 040h-043h temporizador programável (8253) 060h-063h interface paralela 8255 (XT) 060h-064h controlador 8742 (AT) 070h-07h RAM CMOS e registrador de máscara NMI (AT) 080h-08Fh registradores de paginação para DMA 0A0h-0h segundo controlador de interrupções (AT) 0C0h-0DFh segundo controlador de DMA (AT) 0F0h-0FFh coprocessador aritmético (AT) F0h-FFh disco rígido (AT) 200h-20Fh porta de jogos 238h-23Bh mouse de barramento 278h-27Fh LPT2: 2B0h-2BFh vídeo (EA-VA) 2C0h-2CFh vídeo (EA-VA) 2h-2DFh vídeo (EA-VA) 2E8h-2EFh COM4: 2F8h-2FFh COM2: 320h-32Fh disco rígido (XT) 378h-37Fh LPT: 300h-3Fh reservado para protótipos 3C0h-3CFh vídeo (EA-VA) 3h-3DFh vídeo (CA) 3E8h-3EFh COM3: 3F0h-3F7h disco flexível 3F8h-3FFh COM: 400h => projetos PCI Figura 6.3. Uso do espaço de endereçamento de I/O no PC. MZ MZ Editora Ltda. - http://www.mzeditora.com.br - PC: um uia Prático de Hardware e Interfaceamento - Ricardo Zelenovsky & Alexandre Mendonça
Decodificação de I/O e Memória Cap.6: 3/0 Decodificação com endereço fixo *CS0, *CS,...,*CS7 com habilitação em nível baixo OR dos *CS com *IOR e *IOW (7) (8) AEN () A9 A9 (2) (3) (4) (5) (6) 74LS04 74LS04 74LS04 *IOR (B4) *IOW (B3) Endereço Base = 3E0H A9 * * *AEN 0 A0 () (0) (9) 74LS30 74LS08 0 X X A B C 2A 2B 74LS38 *ADROK *IORW A0 X 8 Endereços Decodificados Y0 Y Y2 Y3 Y4 Y5 Y6 Y7 Barramento *IOR (B4) *IOW (B3) *CS0 (3E0H) *CS (3EH) *CS2 (3E2H) *CS3 (3E3H) *CS4 (3E4H) *CS5 (3E5H) *CS6 (3E6H) *CS7 (3E7H) de Dados do PC 74LS32 *IOR (B4) (A9) () () () () () () () 74LS02 74LS32 B B2 B3 B4 B5 B6 B7 B8 DIR 74LS245 Figura 6.4. Decodificação de I/O com endereço fixo. OC Q0 Q Q2 Q3 Q4 Q5 Q6 Q7 74LS373 Y Y2 Y3 Y4 2Y 2Y2 2Y3 2Y4 2 74LS244 Saída com 8 Bits 2 2 2 2 Barramento Interno Entrada com 8 Bits outportb(0x3e0, variável); variável = inportb(0x3e0); uso do 74LS374 ao invés do 74LS373 AEN = 0 é um nível lógico necessário para que os decodificadores de I/O operem sem conflitar com os ciclos de DMA. Decodificação programável por chave uso de "dip switch" outportb(endereço, variável); variável = inportb(endereço); MZ MZ Editora Ltda. - http://www.mzeditora.com.br - PC: um uia Prático de Hardware e Interfaceamento - Ricardo Zelenovsky & Alexandre Mendonça
Decodificação de I/O e Memória Cap.6: 4/0 6x (8K2) SW SW DIP-6 A9 Y Programado pela Chave Y Y A9 (2) AEN () (3) (4) (5) (6) (7) (8) *IOR (B4) *IOW (B3) Y Y P0 P P2 P3 P4 P5 P6 P7 Q0 Q Q2 Q3 Q4 Q5 Q6 Q7 Y A0 () (0) (9) P=Q 74LS688 74LS08 X X A0 X 8 Endereços Decodificados A B C 2A 2B *ADROK *IORW 74LS38 *IOR (B4) Y0 Y Y2 Y3 Y4 Y5 Y6 Y7 Barramento de Dados do PC 74LS32 *IOW (B3) *CS0 (base) *CS (base+) *CS2 (base+2) *CS3 (base+3) *CS4 (base+4) *CS5 (base+5) *CS6 (base+6) *CS7 (base+7) *IOR (B4) (A9) () () () () () () () DIR 74LS245 B B2 B3 B4 B5 B6 B7 B8 74LS02 74LS32 Figura 6.5. Decodificação programável por chave, usando o 74LS688. OC Q0 Q Q2 Q3 Q4 Q5 Q6 Q7 74LS373 Y Y2 Y3 Y4 2Y 2Y2 2Y3 2Y4 2 74LS244 Saída com 8 Bits 2 2 2 2 Barramento Interno Entrada com 8 Bits Programado pela Chave 4X (8K2) SW SW DIP-4 AEN () A9 (2) (3) (4) (5) (6) 74LS04 Coletor Aberto 74LS266 74LS266 74LS266 74LS266 74LS09 4K7 ADROK A9 Y Wired AND (9) (8) (7) Y A B NXOR 0 0 0 0 0 0 Y A B C 2A 2B Y 74LS38 Y0 Y Y2 Y3 Y4 Y5 Y6 Y7 X A=B A=B 0 X X *CS0 (base+0) *CS (base+4) *CS2 (base+8) *CS3 (base+2) *CS4 (base+6) *CS5 (base+20) *CS6 (base+24) *CS7 (base+28) A0 - - 8 Linhas Decodificadas. Cada linha seleciona um bloco de 4 endereços consecutivos. Figura 6.6. Decodificação programável por chave usando o 74LS266. MZ MZ Editora Ltda. - http://www.mzeditora.com.br - PC: um uia Prático de Hardware e Interfaceamento - Ricardo Zelenovsky & Alexandre Mendonça
Decodificação de I/O e Memória Cap.6: 5/0 decodificação selecionável por PROM 52X8 PROM A0 () 8 (0) 7 (9) 6 (8) 5 (7) 4 (6) 3 (5) 2 (4) (3) 23 AEN ()2 2 A9 (2) 9 23 A0 N82S4 (60 η *CE s) *CE2 CE3 CE4 9 0 3 4 5 6 7 *CS0 *CS *CS2 *CS3 *CS4 *CS5 *CS6 *CS7 EXEMPLO: Habilitar *CS0 para o endereço 382h Endereço Dado Programado A0 0 0 0 0 0 0 Figura 6.7. Decodificação de I/O usando uma PROM. Expandindo o espaço de endereçamento utilização dos bits de ordem superior não funciona desde o surgimento do PCI endereçamento indireto RAM CMOS e vídeo VA Dado Interpretado como Endereço - *IOW Latch IA0-7 Endereço Indireto Decodificador 8 / 256 *IOR *IOW *SEL I/O Endereçado Indiretamente *CS - A0-A9 AEN DECOD. NORMAL *CS *CS0 Transceiver Barramento de Dados do PC - Barramento de Dados Interno Figura 6.9. Esquema simplificado para o endereçamento indireto para I/O. MZ MZ Editora Ltda. - http://www.mzeditora.com.br - PC: um uia Prático de Hardware e Interfaceamento - Ricardo Zelenovsky & Alexandre Mendonça
Decodificação de I/O e Memória Cap.6: 6/0 A0 () *IOW (B3) Barramento Dados PC 6x (8K2) SW SW DIP-6 A0 () 74LS27 A9 (2) AEN () (3) (4) (5) (6) (7) (8) 74LS04 Dado usado como Endereço OC Q0 Q Q2 Q3 Q4 Q5 Q6 Q7 74LS373 P0 P P2 P3 P4 P5 P6 P7 Q0 Q Q2 Q3 Q4 Q5 Q6 Q7 P=Q 74LS688 74LS32 IA0 I I I I I I I Barramento de Dados do PC *IOR (B4) 8 Endereços Decodificados A B C 2A 2B 74LS38 *IOW (B3) *IOR (B4) (A9) () () () () () () () Y0 Y Y2 Y3 Y4 Y5 Y6 Y7 DIR *ICS0 *ICS *ICS2 *ICS3 *ICS4 *ICS5 *ICS6 *ICS7 B B2 B3 B4 B5 B6 B7 B8 74LS245 74LS27 Saída Digital Endereçada Indiretamente Q0 Q Q2 Q3 Q4 Q5 Q6 Q7 OC 74LS373 Figura 6.0. Uso de endereçamento indireto para expandir o espaço de I/O. "outportb(base,índice);" seguido de "outportb(base+,dado);" Y Y2 Y3 Y4 2Y 2Y2 2Y3 2Y4 2 2 2 2 2 74LS244 Entrada Digital Endereçada Indiretamente Barramento de Dados Interno I/O mapeado em memória 9 8 7 0 6 5 4 3 2 0 A9 0 0 A0 0 Q0 Q Q2 Q3 Q4 Q5 Q6 Q7 DO0 DO DO2 DO3 DO4 DO5 DO6 DO7 *MEMW 74LS02 OC 74LS373 9 (2) 8 (3) 6 (5) 5 (6) 4 (7) 3 (8) 2 (9) (0) 0 () A9 (2) (3) (4) (5) (6) (7) (8) 7 (4) (9) (0) A0 () 74LS30 74LS30 74S260 74LS04 74LS04 Decodificação dos 20 bits do Endereço DFFF8H 74LS0 *MEMR (A9) () () () () () () () *MEMR 74LS02 DIR 74LS245 B B2 B3 B4 B5 B6 B7 B8 74LS04 Saídas usando o endereço de memória DFFF8H Entradas usando o endereço de memória DFFF8H Figura 6.. Registradores de I/O (entrada e saída) mapeados no primeiro megabyte de memória. Y Y2 Y3 Y4 2Y 2Y2 2Y3 2Y4 2 74LS244 2 2 2 2 DI0 DI DI2 DI3 DI4 DI5 DI6 DI7 MZ MZ Editora Ltda. - http://www.mzeditora.com.br - PC: um uia Prático de Hardware e Interfaceamento - Ricardo Zelenovsky & Alexandre Mendonça
Decodificação de I/O e Memória Cap.6: 7/0 nunca entra em conflito com os endereços de I/O já utilizados aumenta o espaço de I/O oferece a possibilidade de usar todas as instruções da família 80x86 I/O a 6 bits S S S S S S S S *IOR DIR B B2 B3 B4 B5 B6 B7 B8 74LS245 OC 74LS373 Q0 Q Q2 Q3 Q4 Q5 Q6 Q7 DO0 DO DO2 DO3 DO4 DO5 DO6 DO7 endereço par A9... AEN decod. I/O *IOW A0 74LS02 *I/OCS6 SD8 SD9 S0 S S2 S3 S4 S5 *IOR DIR B B2 B3 B4 B5 B6 B7 B8 74LS245 74LS04 74LS05 D8 D9 0 2 3 4 5 OC 74LS373 Q0 Q Q2 Q3 Q4 Q5 Q6 Q7 DO8 DO9 DO0 DO DO2 DO3 DO4 DO5 endereço ímpar *IOW *SBHE 74LS02 Figura 6.2. Esquema para I/O a 6 bits. parte alta e parte baixa (*SBHE e A0) acesso a endereço par mov dx,300h in ax,dx "outport(0x300);" em linguagem C endereços acessados: 300h e 30h único ciclo de barramento acesso a endereço ímpar mov dx,30h in ax,dx "outport(0x30);" em linguagem C endereços acessados: 30h e 302h 2 ciclos de barramento MZ MZ Editora Ltda. - http://www.mzeditora.com.br - PC: um uia Prático de Hardware e Interfaceamento - Ricardo Zelenovsky & Alexandre Mendonça
Decodificação de I/O e Memória Cap.6: 8/0 acesso de 6 bits em barramento PCI acesso de 32 bits em barramento PCI Decodificação de memória *(S)MEMR e *(S)MEMW 0 () A9 (2) (3) (4) (5) (6) (7) (8) (9) (0) A0 () *MEMR (B2) *MEMW (B) 2 2 2 2 2 74LS244 2 2 2 2 2 74LS244 Y Y2 Y3 Y4 2Y 2Y2 2Y3 2Y4 Y Y2 Y3 Y4 2Y 2Y2 2Y3 2Y4 (0) A Y0 2 (9) B Y *SEL RUPO Y2 Y3 74LS39 B0 BA9 B B B B B B B B BA0 *BMEMR *BMEMW *CS0 *CS *CS2 *CS3 BA0 B B B B B B B B BA9 B0 *CS0 *BMEMR *BMEMW BA0 B B B B B B B B BA9 B0 *CS2 *BMEMR *BMEMW A0 A9 0 CE OE WE 66 A0 A9 0 CE OE WE 66 B B B B B B B B B B B B B B B B BA0 B B B B B B B B BA9 B0 *CS *BMEMR *BMEMW BA0 B B B B B B B B BA9 B0 *CS3 *BMEMR *BMEMW A0 A9 0 CE OE WE 66 A0 A9 0 CE OE WE 66 B B B B B B B B B B B B B B B B SW DIP-7 8K2 9 (2) 8 A(3) 7 (4) 6 (5) 5 (6) 4 (7) 3 (8) P0 P P2 P3 P4 P5 P6 P7 Q0 Q Q2 Q3 Q4 Q5 Q6 Q7 P=Q 74LS688 *SEL RUPO (A9) () () () () () () () *MEMR (B2) DIR B B2 B3 B4 B5 B6 B7 B8 74LS245 B B B B B B B B Figura 6.3. Decodificação de 8 KB de memória em blocos de 2 KB. SW DIP-4 8K2 9 (2) 8 (3) 7 (4) 6 (5) A0 B0 B B2 B3 A<B A=B A>B 74LS85 A<B A=B A>B Decodificação de um bloco de 64KB Figura 6.4. Decodificação de 64 KB com endereço selecionável por chave. MZ MZ Editora Ltda. - http://www.mzeditora.com.br - PC: um uia Prático de Hardware e Interfaceamento - Ricardo Zelenovsky & Alexandre Mendonça
Decodificação de I/O e Memória Cap.6: 9/0 Mapa de memória 00000h E0000h C0000h A0000h 9FFFFh 00500h 00400h 00000h PC AT Memória Estendida Reservado para a PARA ROM BIOS Reservado para ROMs Buffers de Vídeo Porção transiente do DOS Área de Programas (programas de usuários e dados) Porção residente do DOS Área de dados para ROM BIOS e BASIC Área de dados para a ROM BIOS Tabela de Vetores de Interrupção Figura 6.5. Mapa de memória de um típico PC AT. Área destinada ao DOS Exercícios 6-7) Projete um circuito que multiplexe o acesso a 2 registradores num mesmo endereço, da seguinte forma: o primeiro acesso é realizado em um dos registradores, o acesso seguinte é feito ao outro e assim sucessivamente. 6-2) O seguinte conjunto de instruções é utilizado para realizar uma leitura de 6 bits: mov dx,300h in ax,dx. Existe alguma diferença de desempenho entre executar estas instruções com a linha *I/O CS 6 ativada ou não? 6-3) Repita o problema anterior, substituindo apenas 300h por 30h. 6-4) Nos casos dos problemas 6-2 e 6-3, quais as diferenças de implementações em hardware ao ativar-se ou não a linha *I/O CS 6? 6-5) O que acontecerá se, por engano, um projetista utilizar em seu projeto os endereços de I/O de 3F0h a 3F7h? MZ MZ Editora Ltda. - http://www.mzeditora.com.br - PC: um uia Prático de Hardware e Interfaceamento - Ricardo Zelenovsky & Alexandre Mendonça
Decodificação de I/O e Memória Cap.6: 0/0 6-7) (Concurso para o Quadro de Engenheiros Militares do Exército - especialidade eletrônica - 998) Para permitir que um microprocessador acesse 3 dispositivos, foi preparada a decodificação a seguir, onde se utilizaram apenas as 0 linhas de endereços menos significativas: A0,,..., A9. As demais linhas de endereços foram ignoradas. Considerando que os dispositivos são selecionados em nível baixo (quando *CS=0), determine em hexadecimal todos os endereços possíveis, para cada dispositivo. 74LS38 *CS DISP A9 A B C 2A 2B Y0 Y Y2 Y3 Y4 Y5 Y6 Y7 *CS *CS DISP2 DISP3 A0 MZ MZ Editora Ltda. - http://www.mzeditora.com.br - PC: um uia Prático de Hardware e Interfaceamento - Ricardo Zelenovsky & Alexandre Mendonça
0. Conexão com Memórias EPROM E SRAM DEE - Unesp
0.2 Decodificação de Endereços 2
0.3 Decodificação de Endereços DEE - Unesp 3
0.3 Decodificação de Endereços DEE - Unesp 4
0.3 Decodificação de Endereços DEE - Unesp 5
0.3 Decodificação de Endereços DEE - Unesp Introdução aos Microcontroladores ELE 87 6
0.3 Decodificação de Endereços DEE - Unesp 7
0.3 Decodificação de Endereços DEE - Unesp 8
0.3 Decodificação de Endereços DEE - Unesp 9
0.3 Decodificação de Endereços DEE - Unesp Introdução aos Microcontroladores ELE 87 0
0.3 Decodificação de Endereços DEE - Unesp Introdução aos Microcontroladores ELE 87
Trabalho 4 Decodificação de endereço de I/O e Memória 4. : Indique a faixa de endereços em hexadecimal de cada *CS para cada circuito a seguir DEE - Unesp 2
4.2: Indique a faixa de endereços em hexadecimal de cada *CS para cada circuito a seguir. DEE - Unesp 3
4.3: Desenhe o mapa de endereços de um sistema de 6 bits de endereçamento e mapeie o bloco ocupado por cada CI de memória da figura a seguir. DEE - Unesp 4