Barramentos: interface e temporização Os barramentos (endereços, dados, controlo) são o meio de comunicação entre o microcontrolador e o exterior A nossa análise deste assunto incidirá sobre dois tipos de aspectos: Questões temporais: a sequência de sinais activos determina o tipo de ciclo Descodificação: especificação do espaço de endereçamento atribuído a cada dispositivo externo EEC2104 Microprocessadores - FEUP / DEEC / JMF - 1 Memória: Acesso para leitura Sequência de operações realizada: O endereço é colocado no barramento de endereços O barramento de controlo indica qual o espaço de endereçamento a usar: memória de programa, memória de dados, ou algum ciclo especial (e.g. interrupção) O sinal de leitura é activado A memória coloca no barramento de dados o conteúdo da posição endereçada O CPU desactiva as linhas de endereços e de controlo EEC2104 Microprocessadores - FEUP / DEEC / JMF - 2
Diagrama de um ciclo de leitura da memória Nota: Na família 51 o sinal de leitura para a MP é o /PSEN (não o /RD) Nota: Na família 51 o operando de uma instrução está na MP (não na MD) EEC2104 Microprocessadores - FEUP / DEEC / JMF - 3 Memória: Acesso para escrita Sequência de operações realizada: O endereço é colocado no barramento de endereços O barramento de controlo indica qual o espaço de endereçamento a usar O CPU coloca no barramento de dados o conteúdo a ser transferido para a posição endereçada O sinal de escrita é activado O CPU desactiva as linhas de endereços, dados e controlo EEC2104 Microprocessadores - FEUP / DEEC / JMF - 4
Memória: Acesso para escrita EEC2104 Microprocessadores - FEUP / DEEC / JMF - 5 Barramentos multiplexados Nalguns casos (como sucede com a família 51) multiplexam-se linhas de endereços e linhas de dados, com o objectivo de poupar pinos quando isso acontece a informação de endereços aparece primeiro, sendo seguida pela informação de dados Nestes casos terá que haver um sinal (pertencente ao barramento de controlo) que indique a um registo (latch) externo quando é que deve ser memorizada a informação de endereço EEC2104 Microprocessadores - FEUP / DEEC / JMF - 6
Multiplexagem de dados e endereços na família 51 EEC2104 Microprocessadores - FEUP / DEEC / JMF - 7 Mutliplexagem de AD0..7 na família 51 Assim que ALE=1 a latch permite que os endereços passem para as saídas A descida de ALE congela a informação de endereço A partir desse momento o CPU pode retirar a informação de endereço de AD0..X, passando Nota: Na família 51 são multiplexados A0..7 (LSB de endereços) e D0..7 a usar essas linhas como linhas de dados (D0..X) EEC2104 Microprocessadores - FEUP / DEEC / JMF - 8
Espaços de endereçamento e descodificação Dependendo da sua arquitectura, um processador pode ter vários espaços de endereçamento separados: Memória de programa Memória de dados Entrada / saída Memória de stack Estes espaços podem ou não sobrepor-se (podendo mesmo pertencer a um só espaço) EEC2104 Microprocessadores - FEUP / DEEC / JMF - 9 Descodificação Pode haver linhas que indiquem qual o espaço de endereçamento a que se pretende aceder (e.g. /PSEN, /RD) Se essa distinção não for suficiente, teremos que recorrer às linhas de controlo e de endereços (as mais significativas) para descodificar a que dispositivo se vai aceder EEC2104 Microprocessadores - FEUP / DEEC / JMF - 10
Descodificação (E/S) Em alguns casos (como sucede na família 680x0 da Motorola) existe um único espaço de endereçamento para todas as situações Nesses casos os dispositivos de E/S serão descodificados como posições de memória (memory mapped I/O) Repare-se que também pode haver E/S mapeada como memória, mesmo quando existem espaços de endereçamento próprios para E/S EEC2104 Microprocessadores - FEUP / DEEC / JMF - 11 Descodificação de memória A distinção entre vários dispositivos externos pode ser feita por descodificadores como o 74x138 No caso apresentado, o que é que determina que seja atribuído a cada EPROM um espaço com a extensão de 8 KB? EEC2104 Microprocessadores - FEUP / DEEC / JMF - 12
Mapa de endereços O mapa de endereços (ou mapa de memória) especifica a gama de endereços a que deve responder cada dispositivo (memória ou E/S) 0-8 KB 8-16 KB ( ) 56-64 KB EEC2104 Microprocessadores - FEUP / DEEC / JMF - 13 Exemplo de descodificação Porque é que se considera este caso como memory mapped I/O? Qual a gama de endereços que permite ler SW1? E a gama de endereços que permite modificar o estado do LED? EEC2104 Microprocessadores - FEUP / DEEC / JMF - 14
Mapa de endereços para o exemplo anterior Seria possível, no caso apresentado, ter a entrada e a saída a responder na mesma gama de endereços? EEC2104 Microprocessadores - FEUP / DEEC / JMF - 15 Relação entre espaço atribuído e capacidade No exemplo apresentado quantos endereços é que permitem escrever no LED? E quantos é que permitem ler o estado do interruptor? Haverá vantagens em fazer com que um único dispositivo responda a um espaço de endereçamento superior à sua capacidade (por exemplo, atribuir a uma memória de 4 KB um espaço de 8 KB)? EEC2104 Microprocessadores - FEUP / DEEC / JMF - 16
Descodificação total e descodificação parcial A descodificação diz-se total quando a cada posição corresponde um único endereço (por exemplo, atribuir a uma memória de 8 KB o espaço de endereçamento 0000h a 1FFFh) Quando houver mais do que um endereço que permite aceder à mesma posição, diz-se que temos uma descodificação parcial (por exemplo, atribuir a uma memória de 8 KB o espaço de endereçamento 0000h a 7FFFh) EEC2104 Microprocessadores - FEUP / DEEC / JMF - 17 Vantagens da descodificação parcial A descodificação parcial tem lugar quando os sinais de descodificação gerados dividem o espaço de endereçamento em blocos com dimensão superior à capacidade dos dispositivos presentes Desde que o número de blocos descodificados seja suficiente (no presente e no futuro ) não se justifica fazer uma descodificação total, já que isso tornaria o descodificador mais complexo EEC2104 Microprocessadores - FEUP / DEEC / JMF - 18