76
Embedded Systems Design: A Unified Hardware/Software Introduction 1 Capítulo 6 - Interfaceamento

Embedded Systems Design: A Unified Hardware/Software ...marco/cursos/ea078_10_2/slides/cap06_…Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

  • Upload
    leliem

  • View
    238

  • Download
    0

Embed Size (px)

Citation preview

Embedded Systems Design: A Unified Hardware/Software Introduction

1

Capítulo 6 - Interfaceamento

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

2

Linhas Gerais

• Fundamentos do Interfaceamento• Interfaceamento do Microprocessador

– Endereçamento de I/O– Interrupção– Acesso Direto à Memória

• Arbitragem• Hierarquia de Barramento• Protocolos

– Serial– Paralelo– Wireless (Sem Fio)

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

3

• Aspectos funcionais de um sistema embarcado– Processamento

• Transformação de dados

• Implementação utilizando processadores

– Armazenamento • Retenção de dados

• Implementação utilizando a memória

– Comunicação• Transferência de dados entre o processador e a memória

• Implementação utilizando barramentos

• Operação conhecida como interfaceamento

Introdução

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

4

Exemplo de barramento

bus structure

Processor Memoryrd'/wr

enable

addr[0-11]

data[0-7]

bus

• Fios/Conexões (Wires):– Unidirecional ou bidirecional

– Uma linha pode representar múltiplos fios

• Barramento– Conjunto de fios para uma única aplicação

• Barramento de endereço, barramento de dados

– Ou, uma coleção completa de fios• Endereço, dados e controle

• Protocolo associado ao barramento: regras de comunicação

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

5

Portas

• Conexão de dispositivo ao processador• Conecta barramento ao processador ou à memória• Também chamada de pino

– Pinos do encapsulamento do CI são conectados a soquetes em placas de circuito impresso– Algumas vezes, pequenas esferas metálicas são utilizadas no lugar dos pinos– Atualmente, conectores (pads) metálicos ligam processadores e memórias dentro de um

único CI

• Conexão simples ou um conjunto de conexões com um propósito único– Ex.: porta de endereçamento de 12-fios

bus

Processador Memóriard'/wr

enable

addr[0-11]

data[0-7]

porta

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

6

Diagramas de Tempo

write protocol

wr/rd

enable

addr

data

tsetup twrite

• Método mais utilizado para a descrição do protocolo de comunicação

• Tempo aumenta no sentido positivo do eixo x• Sinal de controle: alto ou baixo

– Pode ser ativo baixo (e.g., go’, /go, or go_L)– Utiliza-se termos ativado ou desativado– Ativação de go’ significa go=0

• Sinal de dados: válido ou inválido• Protocolo pode possuir sub-protocolos

– Denominado ciclo de barramento, que pode ser de leitura ou escrita, por exemplo.

– Cada sub-protocolo pode utilizar vários ciclos de relógio

• Exemplo de leitura– wr/rd deve assumir valor baixo, endereço deve

assumir valor addr por um tempo tsetup (pelo menos) antes do sinal enable ser ativado, enable aciona (triggers) a memória para disponibilizar os dados nas trilhas de dados no tempo tread

read protocol

wr/rd

enable

addr

data

tsetup tread

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

7

Protocolo - Conceitos Básicos

• Atuação: mestre inicia, escravo (ou seguidor) responde• Direção: trasmissor, receptor• Endereços: tipo especial de dados

– Especifica uma localização na memória, um periférico ou um registrador em um periférico• Multiplexação Temporal

– Permite compartilhar um conjunto de fios para envio de vários dados– Economiza fios, mas gasta tempo

data serializing address/data muxing

Master Servantreq

data(8)

data(15:0) data(15:0)

mux demux

Master Servantreq

addr/data

req

addr/data

addr data

mux demux

addr data

req

data 15:8 7:0 addr data

Time-multiplexed data transfer

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

8

Conceitos básicos em protocolos:métodos de controle

Protocolo baseado em temporização(Strobe protocol)

Protocolo baseado em sinais de confirmação(Handshake protocol)

Mestre Escravoreq

ack

req

data

Mestre Escravo

data

req

data

taccess

req

data

ack

1. Mestre ativa req para solicitar dados

2. Escravo coloca dados no barramento em um tempo de, no máximo, taccess

1

2

3

4

3. Mestre recebe os dados e desativa req

4. Escravo está pronto para a próxima requisição

1

2

3

4

1. Mestre ativa req para solicitar dados

2. Escravo coloca dados no barramento e ativa ack

3. Mestre recebe os dados e desativa req

4. Escravo está pronto para a próxima requisição

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

9

Compromisso entre protocolos strobe e handshake

Fast-response case

req

data

wait

1 3

4

1. Mestre ativa req para solicitar dados2. Escravo coloca dados no barramento em um tempo de, no máximo, taccess (a linha de espera não é utilizada)

3. Mestre recebe os dados e desativa req

4. Escravo está pronto para a próxima requisição

2

Slow-response case

Mestre Escravoreq

wait

data

req

data

wait

1

3

4

1. Mestre ativa req para solicitar dados2. Escravo não consegue colocar dados no barramento dentro do intervalo de tempo taccess, ativa wait

3. Escravo coloca dados no barramento e desativa wait

4. Mestre recebe os dados e desativa req

2

taccess taccess

5. Escravo está pronto para a próxima requisição

5

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

10

Protocolo de Barramento ISA – Acesso à Memória

Microprocessor Memory I/O Device

ISA bus

ADDRESS

CYCLE

CLOCK

D[7-0]

A[19-0]

ALE

/MEMR

CHRDY

C1 C2 WAIT C3 C4

DATA

• ISA: Industry Standard Architecture– Foi muito utilizado com

os processadores 80x86

• Características– Endereço de 20 bits– Protocolo

Comando/Confirmação• Padrão de 4 ciclos• Se CHRDY for ativado

são inseridos ciclos de espera (até 6)

memory-read bus cycle

CYCLE

CLOCK

D[7-0]

A[19-0]

ALE

/MEMW

CHRDY

C1 C2 WAIT C3 C4

DATA

ADDRESS

memory-write bus cycle

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

11

Interfaceamento do Microprocessador: Endereçamento de I/O

• Um microprocessador comunica-se com outros dispositivos utilizando alguns de seus pinos– I/O baseada em portas (I/O Paralela)

• Processador possui uma ou mais portas de N bits• O software do processador lê e escreve em uma porta da mesma maneira

que em um registrador

• E.g., P0 = 0xFF; v = P1 ; ==> P0 e P1 são portas de 8 bits

– I/O baseada em barramento• Processador tem endereços, dados e portas de controle que formam um

barramento único• O protocolo de comunicação é implementado por hardware no processador• Uma única instrução executa o protocolo de escrita ou de leitura no

barramento

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

12

Compromissos e extensões

• Periférico de I/O Paralela– Quando o processador suporta apenas I/O baseado em

barramento, porém I/O paralela é necessária para o periférico;

– Cada porta do periférico é conectada a um registrador dentro do próprio periférico o qual é lido/escrito pelo processador

• I/O paralela estendida– Quando o processador suporta I/O baseada em portas

porém mais portas são necessárias

– Uma (ou mais) portas do processador podem ser conctadas a uma “extensão de portas paralelas”

– Por exemplo, extensão de 4 para 6 portas paralelas apresentada na figura

Processor Memory

Parallel I/O peripheral

Port A

System bus

Port CPort B

Adding parallel I/O to a bus-based I/O processor

Processor

Parallel I/O peripheral

Port A Port B Port C

Port 0Port 1Port 2Port 3

Extended parallel I/O

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

13

Tipos de I/O baseado em barramento:I/O Mapeada em Memória e I/O Padrão

• Processador comunica-se tanto com a memória quanto com os periféricos utilizando o mesmo barramento – dois casos– I/O mapeada em memória

• Registradores dos periféricos ocupam endereços no mesmo espaço de endereçamento que a memória utiliza

• e.g., barramento possui endereços de 16 bits– Os primeiros 32K de endereços são reservados à memória– Os 32k de endereços seguintes correspondem aos periféricos

– I/O padrão (I/O Mapeada em I/O)• Pino adicional (M/IO) no barramento indica o acesso a uma memória ou a um

periférico• e.g., barramento possui endereços de 16 bit

– Todos os 64K de endereços correspondem a memória quando M/IO é igual a 1– Todos os 64K de endereços correspondem a periféricos quando M/IO é igual a 0

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

14

I/O Mapeada em Memória vs. I/O Padrão

• I/O Mapeada em Memória– Não necessita de instruções especiais

• Instruções de assembly envolvendo a memória tais como a instrução MOV e a instrução ADD também funcionam com os periféricos.

• I/O Padrão necessita de instruções especiais (e.g., IN, OUT) para mover dados entre os registradores periféricos e a memória.

• I/O Padrão– Não gasta endereços da memória para os periféricos

– Circuito lógico de decodificação de endereços é mais simples• Quando o número de periféricos é muito menor que o espaço de

endereçamento, então os bits de endereço mais significativos podem ser ignorados

– Comparadores pequenos e/ou rápidos

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

15

Barramento ISA

• ISA suporta I/O padrão– /IOR é distinto de /MEMR e

usado para a leitura de registradores em periféricos

• /IOW utilizado para a escrita

– Espaço de 16-bit de endereçamento para I/O vs. espaço de 20-bit de endereçamento para a memória

– Fora isso, muito similar ao protocolo de memória

CYCLE

CLOCK

D[7-0]

A[15-0]

ALE

/IOR

CHRDY

C1 C2 WAIT C3 C4

DATA

ADDRESS

ISA I/O bus read protocol

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

16

Protocolo básico de memória

• Interfaceamento de 8051 com memória externa– Portas P0 e P2 suportam I/O baseada em porta quando a memória interna

do 8051 é utilizada.– Estas portas servem como barramento de dados/endereços quando a

memória externa é utilizada.– Endereços de 16-bit e dados em 8-bit são multiplexados no tempo

• Os 8-bits menos significativos do endereço devem ser amostrados com ajuda do sinal ALE.

P0

P2

Q

ALE

/RD

Adr. 7..0

Adr. 15…8

Adr. 7…0

Data

8051

74373

P0

HM6264

D Q

8P2

ALE G

A<0...15>

D<0...7>

/OE

/WE

/CS

/WR

/RD

/CS1

/PSEN

CS2

27C256

/CS

A<0...14>

D<0...7>

/OE

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

17

Protocolo de memória mais complexo

• Sinais de controle são gerados para ativar o modo “burst” do chip de memória TC55V2325FF

– Addr0 é o endereço inicial de entrada para o dispositivo

– GO é o sinal de entrada de enable/disable para o dispositivo

Specification for a single read operation

CLK

/ADSP

/ADSC

/ADV

addr <15…0>/WE

/OE

/CS1 and /CS2

CS3

data<31…0>

ADSP=1,ADSC=1

ADV=1, OE=1, Addr = ‘Z’

ADSP=1,ADSC=0

ADV=1, OE=1, Addr = ‘Z’

ADSP=1,ADSC=1

ADV=0, OE=0, Addr = ‘Z’

GO=1

GO=0

Data is ready here!

GO=1

GO=1

GO=0

GO=0

S0 S1

S2 S3

ADSP=0,ADSC=0

ADV=0, OE=1, Addr = Addr0

GO=0

GO=1

FSM description

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

18

Interfaceamento com o Microprocessador: Interrupção

• Supondo que um periférico recebe dados ao longo do tempo, os quais devem ser tratados pelo processador– O processador pode supervisionar (poll) o periférico regularmente para

conferir se os dados foram enviados

– O periférico pode interromper o processador quando algum dado estiver disponível

• Necessidade de um ou mais pinos: Int– Se Int está em 1, o processador suspende o programa em execução e

desvia para a Rotina de Serviço de Interrupção (Interrupt Service Routine – ISR)

– Operação conhecida como I/O por Interrupção

– Essencialmente, o pino de interrupção é feito por hardware

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

19

Interfaceamento com o Microprocessador: Interrupção (cont.)

• Qual é o endereço (o vetor de endereço de interrupção) da ISR?– Interrupção Fixa

• Endereço não pode ser alterado

• No endereço fica armazenada a Rotina de Serviço (ISR) ou uma instrução de desvio para a ISR (se não houver espaço para toda ela)

– Interrupção Vetorizada• Periféricos devem providenciar o endereço

• Usualmente utilizada quando o microprocessador possui múltiplos periféricos conectados ao barramento do sistema

– Solução de compromisso: tabela de endereços de interrupção

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

20

I/O por Interrupção com Rotina de Serviço (ISR) em Localização Fixa

1(a): μP executa no programa principal. 1(b): P1 recebe os dados de entrada no registrador endereçado em 0x8000.

2: P1 ativa Int para requisitar o serviço de interrupção pelo microprocessador.

3: Após completar a instrução, 100, μP percebe Int ativo, salva o valor do PC de 100, e muda o PC para a localização fixa de ISR em 16.

4(a): O ISR lê o endereço 0x8000, modifica o dado e escreve o resultado final em 0x8001.

5: ISR retorna restaurando o valor anterior de PC, incrementando-o e, assim, μP continua a execução do programa principal.

4(b): Após a realização da operação de leitura, P1 desativa Int.

Tim

e

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

21

I/O por Interrupção com Rotina de Serviço (ISR) Localização Fixa (cont.)

1(a): µP executa o programa principal

1(b): P1 recebe o dados de entrada a partir de um registrador no endereço 0x8000.

μP

P1 P2

System bus

Int

Data memory

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...Main program

...

Program memory

PC

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

22

I/O por Interrupção com Rotina de Serviço (ISR) Localização Fixa (cont.)

2: P1 ativa Int requisitando o atendimento de uma interrupção pelo microprocessador

μP

P1 P2

System bus

Data memory

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...Main program

...

Program memory

PC

IntInt1

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

23

I/O por Interrupção com Rotina de Serviço (ISR) Localização Fixa (cont.)

3: Após completar a instrução em 100, µP percebe Int ativado, salva o valor 100 do PC e carrega o PC com a localização fixa 16 do ISR.

μP

P1 P2

System bus

Data memory

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...Main program

...

Program memory

PC

Int

100100

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

24

μP

P1 P2

System bus

Data memory

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...Main program

...

Program memory

PC

Int

I/O por Interrupção com Rotina de Serviço (ISR) Localização Fixa (cont.)

4(a): ISR lê o dado a partir do registrador no endereço 0x8000, modifica o dado e escreve o resultado final no registrador no endereço 0x8001.

4(b): Após a operação de leitura, P1 desativa Int.

100

Int0

P1

System bus

P1

0x8000

P2

0x8001

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

25

I/O por Interrupção com Rotina de Serviço (ISR) Localização Fixa (cont.)

5: ISR retorna ao programa principal, restaurando o valor do PC já incrementado (100+1=101) e, assim, µP continua a execução do programa principal.

μP

P1 P2

System bus

Data memory

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...Main program

...

Program memory

PC

Int

100100+1

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...Main program

...

100

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

26

I/O por Interrupção Vetorizada

1(a): μP executa o programa principal. 1(b): P1 recebe o dado de entrada de um registrador no endereço 0x8000.

2: P1 ativa Int para requisitar o atendimento de uma interrupção pelo microprocessador.3: Após completar a execução em 100, μP

percebe que o sinal Int está ativo, salva o valor do PC (igual a 100), e ativa Inta.

5(a): μP desvia para o endereço 16 lido no barramento. ISR lê o dado armazenado a partir do endereço 0x8000, modifica o dado e escreve o resultado final na posição 0x8001.

6: ISR retorna, restaura o valor de Pc, incrementando-o (100+1=101). Em seguida, μP continua a sua execução.

5(b): Após a operação de leitura, P1 desativa Int.

Tim

e

4: P1 desativa Inta e coloca o endereço 16 no barramento de dados.

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

27

I/O por Interrupção Vetorizada (cont.)

μP

P1 P2

System bus

Data memory

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...Main program

...

Program memory

PC

100

IntInta

16

1(a): P executa o programa principal

1(b): P1 recebe o dado de entrada e armazena-o no registrador com endereço 0x8000.

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

28

I/O por Interrupção Vetorizada (cont.)

μP

P1 P2

System bus

Data memory

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...Main program

...

Program memory

PC

100

Inta

16

2: P1 ativa Int requisitando o atendimento de interrupção pelo microprocessador

Int1

Int

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

29

I/O por Interrupção Vetorizada (cont.)

3: Após a instrução 100, μP percebe Int ativado, salva o valor atual do PC (igual a 100) e ativa o sinal Inta

μP

P1 P2

System bus

Data memory

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...Main program

...

Program memory

PCInt

Inta

16

100100

1Inta

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

30

μP

P1 P2

System bus

Data memory

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...Main program

...

Program memory

PCInt

Inta

16

I/O por Interrupção Vetorizada (cont.)

100

4: P1 detecta Inta e coloca o endereço 16 do vetor de interrupção no barramento de dados

16

16

System bus

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

31

I/O por Interrupção Vetorizada (cont.)

5(a): PC desvia para o endereço 16 lido no barramento. ISR lê o dado em 0x8000, modifica-o e escreve o resultado no registrador com endereço em 0x8001.

5(b): Após a operação de leitura, P1 desabilita Int.

μP

P1 P2

System bus

Data memory

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...Main program

...

Program memory

PCInt

Inta

16

100

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...Main program

...

P1 P2

0x8000 0x8001

System bus

0Int

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

32

I/O por Interrupção Vetorizada (cont.)

6: ISR retorna restaurando o valor do PC já incrementado (100+1=101). Em seguida, μP continua a execução do programa principal.

μP

P1 P2

System bus

Data memory

0x8000 0x8001

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...Main program

...

Program memory

PC

Int

100100+1

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101:

instruction instruction

...Main program

...

100

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

33

Interrupção por Tabela de Endereços

• Compromisso entre a interrupção fixa e a interrupção vetorizada– Um pino de interrupção– Uma tabela na memória armazena endereços das ISR (talvez

256 palavras)

– Periféricos não fornecem endereço ISR mas o índice para acesso à tabela

• Apenas poucos bits são enviados pelo periférico

• Pode mudar o endereço da ISR sem a mudança do periférico

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

34

Informações Adicionais

• Interrupção Mascarável vs. Interrupção Não-Mascarável– Mascarável: programador pode habilitar bits que permitam ao processador

ignorar a ativação de interrupção• Técnica importante quando executa-se um código crítico a operação do sistema

– Não-mascarável: um pino separado para uma interrupção não pode ser mascarado

• Tipicamente reservada para situações drásticas, como requisição imediata de armazenamento de dados em memória não-volátil em caso de falha de alimentação

• Desvio para a Rotina de Serviço (ISR)– Alguns microprocessadores tratam o desvio da mesma maneira como uma

chamada de subrotina• Salva o estado atual do sistema (PC, registradores) – pode demorar centenas de ciclos

de relógio– Outras técnicas salvam apenas parte do estado, como o PC

• Dessa forma, ISR não deve modificar os registradores sem antes salvá-los• Programadores em linguagem assembly devem saber quais registradores são

armazenados e podem ser utilizados

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

35

Acesso Direto a Memória

• Buffering– Armazenamento temporário de dados na memória antes do

processamento– Dados acumulados em periféricos são usualmente

armazenados em buffers

• Microprocessador pode armazenar os dados utilizando a Rotina de Serviço (ISR)– Salvar e restaurar o estado do processador é ineficiente– Programa em execução deve esperar

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

36

Acesso Direto a Memória (cont.)

• Controlador DMA é mais eficiente– Processador dedicado adicional– Micropocessador abdica o controle do barramento do

sistema deixando a cargo do controlador DMA essa função– Processador pode, concorrentemente, executar outro

programa• Supressão do armazenamento/restauração do estado devido a

chamada do ISR• Programa não necessita esperar a menos que ele precise usar o

barramento do sistema– Arquitetura Harvard – processador pode ler e executar instruções desde

que não acessem a memória – se o acesso à memória é requisitado, o processador para

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

37

Transferência de Periférico para a memória sem DMA, utilizando Interrupção Vetorizada

1(a): μP executa o programa principal. 1(b): P1 recebe o dado de entrada a partir de um registrador com endereço 0x8000.

2: P1 ativa Int para a requisição do serviço de interrupção por parte do microprocessador.

3: Após completar a instrução em 100, μP ativa Int, salva o valor atual do PC (igual a 100) e ativa Inta.

5(a): μP desvia para o endereço 16 lido do barramento. ISR lê o dado em 0x8000 e, em seguida, o escreve em 0x0001, sendo que este endereço está na memória.

6: ISR retorna, restaura o valor do PC já incrementado (100+1=101). Em seguida, μP continua a sua execução.

5(b): Após finalizada a leitura, P1 desabilita Int.

Tim

e

4: P1 detecta Inta e coloca o endereço 16 relativo ao vetor de interrupção no barramento de dados.

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

38

Transferência de Periférico para a memória sem DMA, utilizando Interrupção Vetorizada (cont.)

1(a): µP executa o programa principal

1(b): P1 recebe o dado de entrada a partir do registrador com endereço 0x8000.

μP

P1

System bus

0x8000

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x0001, R0 19: RETI # ISR return

ISR

100:101: instruction

...Main program

...

Program memory

PC

Data memory0x0000 0x0001

16Int

Inta

instruction

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

39

Transferência de Periférico para a memória sem DMA, utilizando Interrupção Vetorizada (cont.)

2: P1 ativa Int requisitando o serviço de interrupção por parte do processador

μP

P1

System bus

0x8000

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x0001, R0 19: RETI # ISR return

ISR

100:101: instruction

...Main program

...

Program memory

PC

Data memory0x0000 0x0001

16Int

Inta

instruction 1

Int

100

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

40

Transferência de Periférico para a memória sem DMA, utilizando Interrupção Vetorizada (cont.)

3: Após completar a instrução em 100, µP percebe Int ativado, salva o valor de PC (igual a 100) e ativa o sinal Inta.

μP

P1

System bus

0x8000

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x0001, R0 19: RETI # ISR return

ISR

100:101: instruction

...Main program

...

Program memory

PC

Data memory0x0000 0x0001

16Int

Inta

instruction

100

Inta1

100

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

41

Transferência de Periférico para a memória sem DMA, utilizando Interrupção Vetorizada (cont.)

4: P1 detecta Inta e coloca o endereço 16 relativo ao vetor de interrupção no barramento de dados.

μP

P1

System bus

0x8000

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x0001, R0 19: RETI # ISR return

ISR

100:101: instruction

...Main program

...

Program memory

PC

Data memory0x0000 0x0001

16Int

Inta

instruction

100

16

16System bus

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

42

μP

P1

System bus

0x8000

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101: instruction

...Main program

...

Program memory

PC

Data memory0x0000 0x0001

16Int

instruction

Inta

Transferência de Periférico para a memória sem DMA, utilizando Interrupção Vetorizada (cont.)

5(a): µP salta para o endereço 16 lido do barramanto de dados. ISR lê o dado armazenado no registrador endereçado em 0x8000 e escreve esse dado na posição de memória 0x0001.

5(b): Finalizada a operação de leitura, P1 desabilita Int.

100

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19:

ISR

100:101: instruction

...Main program

...instruction

RETI # ISR return

System bus

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x0001, R0 19:

ISR

100:101: instruction

...Main program

...instruction

RETI # ISR return

0x8000

P1

Data memory0x0001

Int

0

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

43

μP

P1

System bus

0x8000

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return

ISR

100:101: instruction

...Main program

...

Program memory

PC

Data memory0x0000 0x0001

16Int

instruction

Inta

Transferência de Periférico para a memória sem DMA, utilizando Interrupção Vetorizada (cont.)

6: ISR retorna, restaurando o valor de PC já incrementado (100+1=101). Em seguida, µP continua a sua execução.

100100+1

16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x0001, R0 19:

ISR

100:101: instruction

...Main program

...instruction

RETI # ISR return

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

44

Transferência do Periférico para a memória com DMA

1(a): μP executa o programa principal. Já foram configurados os registradores do controlador DMA.

1(b): P1 recebe o dado de entrada a partir de um registrador com endereço 0x8000.

2: P1 ativa req para a requisição do serviço de interrupção por parte controlador DMA.

7(b): P1 desativa req.

Tim

e

3: Controlador DMA ativa Dreq requisitando o controle do barramento do sistema.

4: Após execução da instrução em 100, μP percebe Dreq ativado, libera o barramento do sistema, ativa Dack, e continua sua execução. μP atrasa se ele necessitar do barramento do sistema pára continuar a sua execução. 5: (a) controlador DMA

ativa ack (b) lê o dado em 0x8000 e (c) escreve o dado na posição de memória 0x0001.

6:. DMA desativa Dreq e ack, completando o handshake com P1.

7(a): μP desativa Dack e reassume o controle do barramento do sistema.

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

45

Transferência do Periférico para a memória com DMA (cont.)

1(a): µP executa o programa principal. Já foram configurados os registradores do controlador DMA.

1(b): P1 recebe o dado de entrada de um registrador com endereço 0x8000.

Data memoryμP

DMA ctrl P1

System bus

0x8000101:instruction instruction

...Main program

...

Program memory

PC

100

DreqDack

0x0000 0x0001

100:

No ISR needed!

0x0001

0x8000

ack

req

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

46

Transferência do Periférico para a memória com DMA (cont.)

2: P1 ativa req requisitando o serviço de interrupção por parte do controlador DMA.

3: O controlador DMA ativa Dreq requisitando o controle do barramento do sistema.

Data memoryμP

DMA ctrl P1

System bus

0x8000101:instruction instruction

...Main program

...

Program memory

PC

100

DreqDack

0x0000 0x0001

100:

No ISR needed!

0x0001

0x8000

ack

reqreq1

P1Dreq

1

DMA ctrl P1

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

47

Transferência do Periférico para a memória com DMA (cont.)

4: Após a execução da instrução no endereço 100, µP enxerga Dreq ativado, libera o barramento do sistema, ativa Dack e continua a execução. µP atrasa somente se ainda necessitar do barramento do sistema para continuar a sua execução.

Data memoryμP

DMA ctrl P1

System bus

0x8000101:instruction instruction

...Main program

...

Program memory

PC

100

DreqDack

0x0000 0x0001

100:

No ISR needed!

0x0001

0x8000

ack

req

Dack1

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

48

Data memoryμP

DMA ctrl P1

System bus

0x8000101:instruction instruction

...Main program

...

Program memory

PC

100

DreqDack

0x0000 0x0001

100:

No ISR needed!

0x0001

0x8000

ack

req

Data memory

DMA ctrl P1

System bus

0x8000

0x0000 0x0001

0x0001

0x8000

ack

req

Transferência do Periférico para a memória com DMA (cont.)

5: O controlador DMA (a) ativa ack, (b) lê o dado a partir do registrador endereçado em 0x8000 e (c) escreve o dado na posição de memória 0x0001.

(Enquanto isso, o processador continua sua execução caso não ocorra nenhum tipo de atraso) ack

1

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

49

Transferência do Periférico para a memória com DMA (cont.)

6: DMA desativa Dreq e ack completando o handshake com P1.

Data memoryμP

DMA ctrl P1

System bus

0x8000101:instruction instruction

...Main program

...

Program memory

PC

100

DreqDack

0x0000 0x0001

100:

No ISR needed!

0x0001

0x8000

ack

req

ack0Dreq

0

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

50

Ciclos do Controlador DMA no Barramento ISA

Processador Memória

Dispositivo de I/O

ISA-Bus

DMAR

A

R A

DMA Memory-Write Bus Cycle

ADDRESS

CYCLE

CLOCK

D[7-0]

A[19-0]

ALE

/IOR

/MEMW

CHRDY

C1 C2 C3 C4 C5 C6 C7

DATA

DMA Memory-Read Bus Cycle

ADDRESS

CYCLE

CLOCK

D[7-0]

A[19-0]

ALE

/MEMR

/IOW

CHRDY

C1 C2 C3 C4 C5 C6 C7

DATA

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

51

Arbitragem baseada em Prioridades

• Considere a situação onde múltiplos periféricos requisitam serviços de um mesmo dispositivo (e.g., microprocessador, controlador DMA) simultaneamente – qual a requisição atendida em primeiro lugar?

• Arbitragem baseada em prioridades– Processadores Dedicados– Periféricos fazem requisições para dispositivo de arbitragem, que por sua vez faz

uma requisição para o dispositivo servidor– Árbitro é conectado ao barramento do sistema apenas para configuração

Micro-processor

Priority arbiter

Peripheral1

System bus

Int3

57

IntaPeripheral2

Ireq1

Iack2

Iack1

Ireq2

2 2

6

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

52

Arbitragem baseada em Prioridades

1. Microprocessador executa o programa.2. Periférico1 necessita dos serviços do microprocessador, então ativa o sinal Ireq1. Periférico2 também necessita dos serviços do

microprocessador, então ativa o sinal Ireq2. 3. O árbitro de prioridade enxerga, no mínimo, uma Ireq ativa. Consequentemente, ativa o sinal Int.4. Microprocessador para a execução do programa e armazena o estado atual.5. Microprocessador ativa o sinal Inta.6. O árbitro prioritário ativa Iack1 para reconhecer o Periférico1.7. Periférico1 coloca o endereço do seu vetor de interrupção no barramento do sistema8. Microprocessador desvia para o endereço de ISR lido do barramento de dados, ISR executa e retorna (completando o handshake com o

árbitro).9. Microprocessador retorna a execução do programa inicial.

Microprocessador

Árbitro Prioritário Periférico1

Barramento do Sistema

Int3

57

IntaPeriférico2

Ireq1

Iack2

Iack1

Ireq2

2 2

6

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

53

Arbitragem baseada em Prioridades

• Tipos de prioridade• Prioridade Fixa

– Cada periférico possui uma prioridade única– As maiores prioridades são escolhidas no caso de requisições

simultâneas

– Facilmente aplicável quando a diferença de prioridades entre periféricos é clara

• Prioridade Rotativa (round-robin)– A prioridade é alterada baseando-se o histórico dos serviços do

microprocessador– Melhor distribuição dos serviços especialmente no meio de periféricos

de prioridade similar

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

54

Arbitragem: Daisy-chain

• A arbitragem é realizada pelos periféricos– Interna aos periféricos ou adicionada a partir de lógica externa

• Entrada req e saída ack são adicionadas a cada periférico

• Periféricos são conectados entre si em série– Um periférico conectado ao dispositivo servidor; cada periférico é adicionado à

extremidade da cadeia– O sinal Req é repassado entre os periféricos em direção ao dispositivo servidor.

O sinal ack também é repassado, mas na direção servidor-periférico– Periféricos mais próximos possuem alta prioridade

µPSystem bus

Int

IntaPeripheral1

Ack_in Ack_outReq_out Req_in

Peripheral2

Ack_in Ack_outReq_out Req_in

Daisy-chain aware peripherals

0

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

55

Arbitragem: Daisy-chain (cont.)

• Prós/Contras– Facilidade em adicionar/remover periféricos, sem a necessidade de re-

projetar o sistema

– Não suporta prioridade rotativa

– A falha de um periférico pode causar perda de acesso a outros periféricos

µPSystem bus

Int

IntaPeripheral1

Ack_in Ack_outReq_out Req_in

Peripheral2

Ack_in Ack_outReq_out Req_in

Daisy-chain aware peripherals

0

Micro-processor

Priority arbiter

Peripheral1

System bus

Int

IntaPeripheral

2

Ireq1

Iack2

Iack1

Ireq2

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

56

Arbitragem em Redes

• Quando múltiplos microprocessadores compartilham um mesmo barramento (algumas vezes chamado de rede (network))– Arbitragem tipicamente é feita pelos protocolos do barramento– Processadores separados podem tentar escrever simultaneamente,

causando colisões• Dado deve ser reenviado• O envio não deve recomeçar ao mesmo tempo

– Métodos estatísticos podem ser utilizados para diminuir a chance de ocorrência de novas colisões

• Tipicamente utilizado para conexão de múltiplos chips, distantes entre si– Tendência: utilizado para conectar vários processadores no mesmo chip

(on-chip processors)

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

57

Jump Table

Mem

ory Bus

Processor

Peripheral 1 Peripheral 2

Priority Arbiter

MASKIDX0IDX1

ENABLE

DATA

MEMORY

void main() {InitializePeripherals();for(;;) {} // main program goes here

}

unsigned char ARBITER_MASK_REG _at_ 0xfff0;unsigned char ARBITER_CH0_INDEX_REG _at_ 0xfff1;unsigned char ARBITER_CH1_INDEX_REG _at_ 0xfff2;unsigned char ARBITER_ENABLE_REG _at_ 0xfff3;unsigned char PERIPHERAL1_DATA_REG _at_ 0xffe0;unsigned char PERIPHERAL2_DATA_REG _at_ 0xffe1;unsigned void* INTERRUPT_LOOKUP_TABLE[256] _at_ 0x0100;

void Peripheral1_ISR(void) {unsigned char data;data = PERIPHERAL1_DATA_REG;// do something with the data

}void Peripheral2_ISR(void) {

unsigned char data;data = PERIPHERAL2_DATA_REG;// do something with the data

}void InitializePeripherals(void) {

ARBITER_MASK_REG = 0x03; // enable both channelsARBITER_CH0_INDEX_REG = 13;ARBITER_CH1_INDEX_REG = 17;INTERRUPT_LOOKUP_TABLE[13] = (void*)Peripheral1_ISR;INTERRUPT_LOOKUP_TABLE[17] = (void*)Peripheral2_ISR;ARBITER_ENABLE_REG = 1;

}

Exemplo: interrupção vetorizada utilizando tabela de interrupção

• Prioridade fixa, isto é, o Peripheral 1 possui alta prioridade• Diretiva de linguagem “at”faz com que uma variável seja

armazenada numa posição de memória– e.g., registradores no árbitro

• O índice do periférico dentro de uma tabela de interrupção é enviado para o registrador de mapeamento uma memória no árbitro

• Periféricos recebem dados externos e ativam a interrupção

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

58

Controlador DMA Intel 8237

Intel 8237D[7..0]A[19..0]

ALEMEMR

MEMWIOR

IOW

HLDAHRQ

REQ 0ACK 0

REQ 1ACK 1

REQ 2ACK 2

REQ 3ACK 3

Sinal Descrição

D[7..0]

A[19..0]

ALE*

MEMR*

MEMW*

IOR*

IOW*

HLDA

HRQ

REQ 0,1,2,3

ACK 0,1,2,3

*See the ISA bus description in this chapter for complete details.

These wires are connected to the system bus (ISA) and are used by the microprocessor to write to the internal registers of the 8237.

These wires are connected to the system bus (ISA) and are used by the DMA to issue the memory location where the transferred data is to be written to. The 8237 is also addressed by the micro-processor through the lower bits of these address lines.This is the address latch enable signal. The 8237 use this signal when driving the system bus (ISA).

This is the memory write signal issued by the 8237 when driving the system bus (ISA).

This is the memory read signal issued by the 8237 when driving the system bus (ISA).

This is the I/O device read signal issued by the 8237 when driving the system bus (ISA) in order to read a byte from an I/O device

This is the I/O device write signal issued by the 8237 when driving the system bus (ISA) in order to write a byte to an I/O device.

This signal (hold acknowledge) is asserted by the microprocessor to signal that it has relinquished the system bus (ISA).

This signal (hold request) is asserted by the 8237 to signal to the microprocessor a request to relinquish the system bus (ISA).

An attached device to one of these channels asserts this signal to request a DMA transfer.

The 8237 asserts this signal to grant a DMA transfer to an attached device to one of these channels.

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

59

Controlador de Prioridade Programável Intel 8259

Intel 8259D[7..0]A[0..0]

RDWRINT

INTA

CAS[2..0]SP/EN

IR0IR1IR2IR3IR4IR5IR6IR7

Signal Description

D[7..0]

A[0..0]

WR

RD

INT

INTA

IR 0,1,2,3,4,5,6,7 An interrupt request is executed by a peripheral device when one of these signals is asserted.

CAS[2..0] These are cascade signals to enable multiple 8259 chips to be chained together.

SP/EN This function is used in conjunction with the CAS signals for cascading purposes.

These wires are connected to the system bus and are used by the microprocessor to write or read the internal registers of the 8259.

This pin actis in cunjunction with WR/RD signals. It is used by the 8259 to decipher various command words the microprocessor writes and status the microprocessor wishes to read.

When this write signal is asserted, the 8259 accepts the command on the data line, i.e., the microprocessor writes to the 8259 by placing a command on the data lines and asserting this signal.

When this read signal is asserted, the 8259 provides on the data lines its status, i.e., the microprocessor reads the status of the 8259 by asserting this signal and reading the data lines.

This signal is asserted whenever a valid interrupt request is received by the 8259, i.e., it is used to interrupt the microprocessor.

This signal, is used to enable 8259 interrupt-vector data onto the data bus by a sequence of interrupt acknowledge pulses issued by the microprocessor.

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

60

Arquiteturas com Múltiplos Barramentos

• Barramento local do Processador– Alta velocidade, largo, mais frequentemente

utilizado em comunicação– Conecta o microprocessador, cache,

controladores de memória, etc.

• Barramento de Periféricos– Baixa velocidade, estreito, menos frequente em

comunicação– Tipicamente, segue o padrão de barramento

industrial (ISA, PCI) para portabilidade

Processor-local bus

Micro-processor

Cache Memorycontroller

DMAcontroller

BridgePeripheral

Peripheral

Peripheral

Peripheral bus

• Um único barramento para todas as comunicações não é uma boa opção– Periféricos necessitam de um processador específico d alta velocidade para

interfaceamento do barramento • Excesso de portas, consumo de potência e custo: baixa portabilidade

– Muitos periféricos sobrecarregam o barramento

• Ponte (Bridge)– Processador dedicado converte a comunicação entre barramentos

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

61

Princípios de Comunicação Avançados

• Divisão em Camadas– Reduz a complexidade do protocolo de comunicação através da divisão em partes de fácil

desenvolvimento e compreensão.

– Fornece serviços tanto baixo nível como para alto nível.• Baixo nível pode trabalhar com bits enquanto alto nível tende a trabalhar com pacotes de dados

– Camada física• Mais baixo nível na hierarquia

• Mais físico de transmissão

• Comunicação Paralela– Camada física capaz de transportar vários bits de dados

• Comunicação serial– Camada física transporta um bit de dado de cada vez

• Comunicação Sem-Fio (Wireless)– Não há necessidade de conexão por fios para o transporte de dados

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

62

Comunicação Paralela

• Múltiplos fios de dados, controle e possibilidade de fios para transporte de energia– Um bit por fio

• Grande quantidade de dados para pequenas distâncias• Tipicamente utilizado para conexão entre dispositivos em um

mesmo CI ou em uma mesma placa de circuito impresso– O barramento deve ser pequeno

• Trilhas paralelas longas resultam em altos valores de capacitância que necessita de mais tempo para carregar/descarregar

• Perda de dados entre trilhas aumenta conforme o aumento do comprimento da mesma

• Alto custo, grande volume

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

63

Comunicação Serial

• Trilha de dados simples, possibilidade de trilhas de controle e de energia

• Palavras são transmitidas um bit de cada vez• Grande quantidade de dados transmitidos ao longo de grandes

distâncias– Capacitância média menor, conseqüentemente, mais bits transmitidos por

unidade de tempo• Mais barato, menos volume• Interfaceamento lógico mais complexo e necessidade da

existência de um protocolo de comunicação– Transmissor necessita decompor as palavras em bits– Receptor necessita recompor os bits transmitidos em palavras– Sinais de controle frequentemente são enviados na mesma trilha que os

dados, aumentando a complexidade do protocolo de comunicação

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

64

Comunicação Wireless

• Infra-vermelho – Ondas luminosas cuja freqüência é menor do que o espectro luminoso

visível– Diodo emite luz infra-vermelha na geração do sinal– Transistor infra-vermelho detecta o sinal, conduz quando é exposto à luz

infra-vermelha– Baixo custo de construção– Necessita de linha de visão, alcance limitado

• Rádio Freqüência (RF)– Ondas eletromagnéticas cujas freqüências estão contidas no espectro do

rádio– Circuito analógico e antenas são necessários em ambos os lados da

transmissão– Não há necessidade de linha de visão, o alcance é determinado pela

potência da transmissão

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

65

Detecção e Correção de Erros

• Muitas vezes faz parte do protocolo do barramento• Detecção do erro: habilidade do receptor de detectar erros durante a transmissão• Correção do erro: habilidade do receptor e do transmissor de trabalharem em

cooperação para a correção do erro– Usualmente é realizado por um protocolo que inclui reconhecimento/retransmissão

• Erro de bit: um único bit é invertido• Rajada de erro: seqüência de bits recebidos incorretamente• Paridade: bit extra enviado juntamente com a palavra para a detecção do erro

– Paridade ímpar: a palavra de dados mais o bit de paridade contém um número ímpar de algarismos 1 (um)

– Paridade par: palavra de dados mais o bit de paridade contém um número par de algarismos 1 (um)

– Sempre detecta um número ímpar de erros, mas não funciona para um número par de bits errados.

• Soma de verificação (Checksum): palavra extra enviada com o pacote de dados formado por muitas palavras

– e.g., palavras extras podem conter a soma XOR de todas as palavras de dados do pacote ou pode conter o resultado de alguma função matemática mais complexa aplicada aos dados.

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

66

Protocolos Seriais: I2C

• I2C (Inter-IC)– Protocolo de barramento serial de duas trilhas para comunicação a baixas

velocidades desenvolvido pela Philips Semiconductors

– Permite que periféricos se comuniquem utilizando hardware de comunicação simples

– Modo normal: transferência de dados a taxas de 100 kbits/s e 7-bit de endereçamento

– Modo rápido: 3,4 Mbits/s e 10-bit de endereçamento

– Dispositivos capazes de interfacear com o barramento I2C:

• EPROMs, flash, algumas memórias RAM, relógios de tempo real, temporizadores watchdog e microcontroladores

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

67

Estrutura do Barramento I2C

SCLSDA

Micro-controller(master)

EEPROM(servant)

Temp. Sensor(servant)

LCD-controller(servant) < 400 pF

Addr=0x01 Addr=0x02 Addr=0x03

D

CST

ART

A6

A5

A0

R/w

ACK

D8

D7

D0

ACK

ST

OP

From Servant

From receiver

Typical read/write cycle

SDA

SCL

SDA

SCL

SDA

SCL

SDA

SCL

Start condition Sending 0 Sending 1 Stop condition

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

68

Protocolos Seriais: CAN

• CAN (Controller Area Network)– Protocolo para aplicações de tempo-real– Desenvolvido por Robert Bosch GmbH– Originalmente utilizado para a comunicação entre componentes de carros– Aplicações atuais utilizando CAN incluem:

• Controladores de elevador, copiadoras, telescópios, sistemas de controle de linha de produção, instrumentos médicos

– Taxas de transferência de dados de até 1 Mbit/s e 11-bit de endereçamento– Dispositivos comumente encontrados no interfaceamento com CAN:

• Processador compatível com 8051 e controladores CAN avulsos

– Implementação do barramento CAN não é especificada pelo protocolo• Requer que dispositivos transmitam/detetem sinais dominante e recessivo para/no

barramento• e.g., ‘1’ = dominante, ‘0’ = recessivo se uma trilha de dados simples é utilizada• Barramento deve garantir que o sinal dominante prevaleça sobre o recessivo quando são

transmitidos juntos (isto é, quando há sobreposição acidental)

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

69

Protocolos Seriais: FireWire

• FireWire (a.k.a. I-Link, Lynx, IEEE 1394, High performance serial bus)– Barramento serial de alto desempenho desenvolvido pela Apple Computer Inc.– Desenvolvido para o interfaceamento de dispositivos eletrônicos independentes

• e.g. desktop, scanner

– Taxa de transferência de dados é da ordem de 12,5 a 400 Mbits/s, 64-bit de endereçamento

– Característica Plug-and-play– Estruturado em camadas e faz uso de pacotes– Aplicações utilizando FireWire incluem:

• Drives de disquete, impressoras, scanners, câmeras, iPods etc

– Capaz de suportar uma LAN similar à Ethernet• 64-bit de endereçamento:

– 10 bits para ids de rede => 1023 subredes– 6 bits para ids de nós => cada subrede pode ter até 63 nós– 48 bits de endereçamento de memória => cada nó pode ter até 281 terabytes de

locações distintas

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

70

Protocolos Seriais: USB

• USB (Universal Serial Bus)– Conexão simples entre PC e monitores, impressoras, alto-falantes digitais, modems,

scanners, câmeras digitais, joysticks, equipamentos de jogos multimídia

– Duas taxas de dados:• 12 Mbps para dispositivos de grande largura de banda• 1,5 Mbps para dispositivos de baixa velocidade (joysticks, game pads)

– Topologia hierárquica em estrela• Um dispositivo USB (hub) conectado ao PC

– hub pode ser embarcado em dispositivos como monitores, impressoras, teclados ou pode ser avulso

• Múltiplos dispositivos USB podem ser conectados ao hub• Até 127 dispositivos podem ser conectados dessa maneira

– Controlador host USB• Gerencia largura de banda e o driver (software) requerido em cada periférico• Aloca e envia energia dinamicamente para o funcionamento de dispositivos à medida que são

conectados

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

71

Protocolos Paralelos: Barramento PCI

• Barramento PCI (Peripheral Component Interconnect)– Barramento de alto desempenho desenvolvido pela Intel (início dos anos 90)– Padrão adotado pela indústria e administrado pela PCISIG (PCI Special

Interest Group)– Interconecta chips, placas de expansão, subsistemas de memória de

processadores– Transferência de dados na taxa de 127,2 a 508,6 Mbits/s e 32-bit de

endereçamento• Endereçamento expandido para 64-bits, mas mantendo compatibilidade

com esquemas em 32-bits– Barramento síncrono– Linhas de dados/endereços multiplexados

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

72

Protocolos Paralelos: barramento ARM

Muitos fabricantes de circuitos integrados possuem o seu próprio protocolo de barramento

• Barramento ARM:– Desenvolvido e utilizado internamente pela ARM Corporation– Interface comum para linha de processadores ARM– Transferência de dados depende da velocidade do relógio

• Se a velocidade do sinal de relógio do barramento é V, a taxa de transferência é dada por 16 x V bits/s

– 32-bit de endereçamento e 32-bit de dados

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

73

Protocolos Wireless: IrDA

• IrDA– Protocolo que suporta transmissão ponto-a-ponto de pequeno alcance

por infravermelho

– Criado e promovido pela Infrared Data Association (IrDA)

– Taxa de transferência de dados da ordem de 9.6 kbps a 4 Mbps

– Hardware IrDA desenvolvido para utilização em computadores notebook, impressoras, PDAs, câmeras digitais, telefones públicos, telefones celulares etc

– A falta de drivers compatíveis freiou a ampla utilização deste protocolo

– Windows já oferece suporte nativo a essa tecnologia

– Tecnologia cada vez mais disponível em sistemas operacionais embarcados mais comuns

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

74

Protocolos Wireless: Bluetooth

• Bluetooth– Padrão mundial de conectividade sem fio (p/ Personal Area Network)

– Padrão mantido pelo Bluetooth special interest group

– Baseado em tecnologia de rádio de baixo custo e pequeno alcance– Não há necessidade de campo de visão. Exemplo: conexão entre PC e

impressora em salas distintas• Classe x potência máxima permitida• Classe 1: 100 mW (20 dBm) até 100 metros

• Classe 2: 2,5 mW (4 dBm) até 10 metros

• Classe 3: 1 mW (0 dBm) ~ 1 metro

– Taxas de transmissão: 1Mbps, 3 Mbps, 24Mbps– Dispositivos Bluetooth operam na faixa ISM (Industrial, Scientific,

Medical) centrada em 2,45 GHz

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

75

Protocolos Wireless: IEEE 802.11

• IEEE 802.11– Padrão proposto para LANs wireless– Específica parâmetros para camadas física (PHY) e de controle de

acesso ao meio (MAC)• Camada PHY

– Manipulação dos dados transmitidos entre nós– Transferência de dados em taxas da ordem de 54 Mbps– Opera em largura em banda de freqüência na faixa compreendida entre 2,4 a

2,4835 GHz (RF) ou na faixa de 5 GHz– Ou entre 300 e 428.000 GHz (Infra-vermelho)

• Camada MAC– medium access control layer– Protocolo responsável pela manutenção da ordem no compartilhamento do meio

físico– Detecção e redução de colisões

Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis

Tradução: Alice M. TokarniaEdição: Filipe I. Fazanaro Marco A A Henriques

76

Resumo do Capítulo

• Conceitos básicos de protocolos de comunicação– Atores, direção, métodos de controle, multiplexação temporal

• Processadores de Propósito Geral– I/O baseada em portas ou em barramentos– Endereçamento de I/O: I/O Mapeada em Memória ou I/O Padrão– Manipulação de Interrupção: fixa ou vetorizada– DMA

• Arbitragem– Arbitro baseado em prioridades fixas ou rotativas

• Hierarquia de Barramentos• Conceitos Avançados de Comunicação

– Paralela vs. serial, wires vs. wireless, detecção/correção de erros, organização em camadas

– Protocolos seriais: I2C, CAN, FireWire, USB; Paralelos: PCI e ARM. – Protocolos Seriais Wireless: IrDA, Bluetooth, IEEE 802.11.