You are on page 1of 97

INSTITUTO POLITCNICO DE BRAGANA

ESCOLA SUPERIOR DE TECNOLOGIA E DE GESTO

Sistemas Digitais II

Filipe Moreira

1. Deteco e Correco de Erros ................................................................................ 1


1.1 Paridade..............................................................................................................................1 1.2 Checksum ...........................................................................................................................1 1.3 Cyclic Redundancy Checks (CRC) ..................................................................................1 1.4 Cdigo de Hamming..........................................................................................................2

2. Memrias.................................................................................................................. 5
2.1 RAMs Estticas ................................................................................................................5
2.1.1 Acesso clula de memria .......................................................................................................6 2.1.2 Operaes da memria (Leitura e Escrita) .................................................................................7

2.2 RAMs dinmicas ..............................................................................................................9


2.2.1 Endereamento de Memrias Dinmicas .................................................................................11 2.2.2 Ciclos de Memria ...................................................................................................................13 2.2.3 Tempos de Acesso ...................................................................................................................15 2.2.4 Refrescamento de memrias dinmicas ...................................................................................15

2.3 Memrias CACHE........................................................................................................18


2.3.1 Funes de Mapeamento..........................................................................................................20

3. Interrupes ........................................................................................................... 22
3.1 Introduo ........................................................................................................................22 3.2 Interrupes mascarveis e no-mascarveis ...............................................................24 3.3 Endereamento das Rotinas de Atendimento de Interrupes ...................................25
3.3.1 Interrupes Vectoriais ............................................................................................................25 3.3.2 Interrupes Directas ...............................................................................................................25 3.3.3 Interrupes Indirectas .............................................................................................................25

3.4 Interrupes Mltiplas....................................................................................................25 3.5 Interrupes por falha de energia ..................................................................................27 3.6 Temporizador Programvel 8254 ..................................................................................27
3.6.1 Interface do 8254 .....................................................................................................................28 3.6.2 Modos de operao do 8254 ....................................................................................................30

3.7 Controlador de Interrupes Programvel 8259A.......................................................34


3.7.1 Descrio do 8259A.................................................................................................................35 3.7.2 Operao em modo cascata ......................................................................................................36 3.7.3 Interface do 8259A...................................................................................................................36 3.7.4 Modos de operao do 8259A..................................................................................................37 3.7.5 Programao do 8259A............................................................................................................37

4. Perifricos .............................................................................................................. 39
4.1 Interface de Portas Programvel 8255 ..........................................................................39
4.1.1 Interface do 8255 .....................................................................................................................39 4.1.2 Modos de operao ..................................................................................................................40

4.2 UART e USART ..............................................................................................................46


4.2.1 UART.......................................................................................................................................46 4.2.2 USART ....................................................................................................................................50

4.3 Teclado..............................................................................................................................54
4.3.1 Tipos de teclado .......................................................................................................................54 4.3.2 Ligaes de circuito e interface de um teclado ........................................................................56 4.3.3 Interface em software do teclado .............................................................................................57 4.3.4 Interface em hardware do teclado ............................................................................................57

4.4 Display ..............................................................................................................................59


4.4.1 Interface de LEDs com micro-computadores...........................................................................60 4.4.2 Interface e operaes de LCDs com micro-computadores.......................................................62

5. Acesso directo memria (DMA)........................................................................... 67


5.1 Transferncia de informao por DMA ........................................................................67 5.2 Controlador DMA ...........................................................................................................71
5.2.1 Interface do 8237 .....................................................................................................................72 5.2.2 Tempo de resposta e taxa de transferncia ...............................................................................75 5.2.3 Programao do 8237...............................................................................................................77

6. Bibliografia ............................................................................................................ 83 Apndice I .................................................................................................................. 85 Apndice II................................................................................................................. 87 Apndice III ............................................................................................................... 89 Apndice IV................................................................................................................ 91 Apndice V ................................................................................................................. 93

1. Deteco e Correco de Erros


1.1 Paridade O modo mais simples de detectar erros de um s bit adicionar um bit de paridade a cada byte transmitido. Esta verificao redundante feita de modo a que o nmero total de bits com o valor lgico 1 (incluindo o bit de paridade) seja par (paridade par) ou mpar (paridade mpar). Este processo muito simples de implementar e pode ser mostrado que a adio de um bit de paridade melhora a integridade da informao num factor de 357. Contudo este processo no contempla erros em mltiplos bits. 1.2 Checksum Devido necessidade de adicionar mais um bit por cada byte transmitido, a paridade diminui a taxa de caracteres bem como requer mais memria, podendo atingir propores considerveis. Assim sendo, tornou-se popular o checksum aquando da transferncia de blocos de informao. O checksum usualmente um byte enviado como o ltimo byte num bloco de informao. O receptor calcula a soma do bloco de informao recebido (que inclui o byte de checksum) e compara-o com o byte de checksum; se no se equivalerem pedida a retransmisso do bloco. Isto traz como vantagem um menor overhead quando comparado com a paridade. Outra vantagem o facto de os erros introduzidos em blocos de informao aquando da transmisso, ocorrerem em exploses (bursts ) (Ex.: um relmpago ou um interruptor com rudo). Como o checksum caracterstico de todo o bloco, mais provvel detectar esses erros do que com um simples teste de paridade. 1.3 Cyclic Redundancy Checks (CRC) Esta tcnica usada na deteco de erros num bloco de informao. usualmente usada aquando da leitura e escrita em disquetes e para garantir a integridade da informao em EPROMs. Mas, ao contrrio da checksum, o CRC no byte-oriented, ou seja, no necessrio que o bloco de informao seja constitudo por bytes. Neste caso o bloco de informao visto como uma cadeia de bits, sendo os n bits deste bloco considerados como os coeficientes de um polinmio caracterstico (usualmente referido como M(X)). Este M(X) ser da forma: M(X) = bn + bn-1X1 + bn-2X2 + . . . + b1Xn-1 + b0 Xn onde b0 o bit menos significativo (LSB) e bn o bit mais significativo (MSB). Ex.: Clculo de M(X) para a cadeia de informao 26F0h. 26F0 = 0 0 1 0 0 1 1 0 1 1 1 1 0 0 0 0 M(X) = X2 + X5 + X6 + X8 + X9 + X10 + X11 Este polinmio M(X) caracterstico do bloco 26F0h. Se qualquer bit mudasse ento haveria uma mudana do polinmio. Os bytes CRC so calculados por aplicao da seguinte equao: M (X ) X n = Q(X) + R(X) G( X )

Sistemas Digitais II

Nesta equao G(X) denominado por polinmio gerador. Para o protocolo bysinc G(X) = X16 + X15 + X2 +1 enquanto que o protocolo SDLC usa G(X) = X16 + X5 + X12 +1 Quando se efectua esta diviso o resultado ser um quociente Q(X) e um resto R(X). A tcnica CRC consiste em calcular R(X) para a cadeia de informao e de seguida juntar R(X) ao bloco de informao. Quando o resultado calculado no receptor deve ser R(X) = 0. Dado o facto de G(X) ter ordem 16, ento R(X) no pode ser de ordem superior a 15, representando deste modo 2 bytes, independentemente do comprimento do bloco de informao original. 1.4 Cdigo de Hamming As tcnicas descritas at agora s efectuam a deteco de erros. Contudo Hamming enunciou uma tcnica que no s detectava os erros mas como tambm os corrigia. Como resultado, os cdigos de Hamming passaram a ser a base de todos os esquemas de correco erros actualmente utilizados. Esta tarefa consiste em realizar mltiplos testes de paridade em cada palavra de informao. Os bits adicionais so transmitidos juntamente com a palavra. A Fig. 1.1 ilustra esta tcnica para uma palavra de 8 bits. Para tal so necessrios 4 bits (P0 a P3). Bits verificao transmitidos 11 0 10 1 9 0 8 0 7 1 6 1 Byte de informao transmitido 5 0 4 1 3 0 2 1 1 1 0 0

1 1 1

1 1 1

1 1 0 0 Fig. 1.1 1 0 0 1

1 1

0 0

P0 (mpar) P1 (mpar) P2 (par) P3 (mpar)

de referir que cada bit de paridade verifica um conjunto de bits diferente e que cada bit verificado por pelo menos dois bits de verificao. Neste exemplo o byte de informao D6h seria transmitido como o nmero de 12 bits 4D6h. A Fig. 1.2 mostra como que a palavra recebida testada. So novamente gerados 4 bits de paridade, mas desta vez incluem-se os 4 bits de verificao gerados pelo transmissor.

Sistemas Digitais II

Bits verificao recebidos 11 0 10 1 9 0 8 0 7 0 6 1

Byte de informao recebido 5 0 4 1 3 0 2 1 1 1 0 0

0 0 1 0 0 0 0

1 1 1

1 1 0 0 1 0 0 1

1 1

0 0

P0 (mpar) P1 (mpar) P2 (par) P3 (mpar)

= cdigo de erro Fig. 1.2

Este exemplo foi feito de modo a ter sido introduzido um erro na transmisso (neste caso no bit 7). Os quatro bits gerados so denominados de cdigo de erro. O seu significado pode ser explicado por uma tabela de erros para cdigo de Hamming modificado para 8 bits. Um cdigo de 0000 indica que no h erros detectados. Neste exemplo o cdigo de erro 1110, significando que o bit 7 est errado (ver tabela). Se o verdadeiro cdigo de Hamming for utilizado ento o cdigo de erro dever identificar qual a posio do bit errado. Por este motivo a tcnica aqui ilustrada chama-se Cdigo de Hamming modificado. Apesar de a adio de 4 bits representar um acrscimo de 50%, esta tcnica ir detectar e corrigir todos os erros de um s bit e consecutivamente 97% de todos os erros para mltiplos bits. Contudo quando se expande a palavra para 16 bits, s so necessrios 5 bits de verificao,. Reduzindo-se, assim, o overhead para 32%. Existem vrios CI capazes de implementar esta tcnica.

Sistemas Digitais II

Sistemas Digitais II

2. Memrias
Memrias so componentes destinados a guardar informao, geralmente sob forma binria, manipulada por sistemas digitais. Normalmente so constitudas por um conjunto de elementos de dois estados. Existem trs grandes tipos de memrias de semicondutores: Memria de Acesso Aleatrio (RAM) Memria s de Leitura (ROM) Memria de Srie Destas memrias algumas so volteis, isto , perdem a informao armazenada quando se desliga a alimentao (Ex.: RAM). Outras pelo contrrio no perdem essa informao na ausncia de alimentao (Ex.: ROM). Das memrias enunciadas, nesta disciplina s se iro estudar as RAMs. As memrias de acesso aleatrio (Random Acess Memory) so aquelas memrias para as quais s possvel ler e/ou alterar cada posio de armazenagem. O nome mais correcto para este tipo de memria seria o Leitura/Escrita (Read/Write) uma vez que outras memrias, como as ROM, tambm so de acesso aleatrio (random acess). Uma memria diz-se de acesso aleatrio se se puder atingir directamente qualquer uma das suas posies. Pelo contrrio, uma memria diz-se de acesso sequencial ou srie quando necessrio passar por todas as posies para atingir uma qualquer posio. H dois tipos fundamentais de RAMs: estticas e dinmicas. As Estticas so aquelas em que a informao guardada pelo estado de conduo ou no dum transstor ou conjunto de transstores. As dinmicas so aquelas em que a informao guardada pelo estado de carga ou descarga dum condensador. Nestas ltimas, devido s fugas que sempre apresenta o condensador, torna-se necessrio avivar a informao armazenada com uma frequncia estabelecida pelo fabricante refreshing. 2.1 RAMs Estticas O esquema simplificado de uma memria RAM esttica est representado na Fig. 2.1.
Vcc

Q2

Q5

Seleco de linha Q6 Q4

Q1 Q3

I/O 0

Vss

I/O 1

Fig. 2.1 A clula tem como componentes activos os transstores Q3 e Q4, funcionando Q2 e Q5 como cargas activas, sendo estes do tipo depletion; tal categoria de MOS requer uma tenso de gate negativa para bloquear o transstor, o qual estar, portanto, normalmente em conduo. O funcionamento desta clula pode ser descrito da seguinte Sistemas Digitais II 5

forma: suponha-se que a gate de Q3 est positiva colocando, assim, Q3 em conduo (ON) o que determina que circular corrente atravs de Q2 e Q3. Q2 e Q3 so fabricados de modo a que Q2 tenha maior impedncia que Q3 pelo que a tenso no nodo 1 cair para um valor prximo de Vss. Note-se que a gate de Q2 est ligada ao nodo 1; deste modo medida que a tenso do nodo 1 vai decrescendo, diminuir o estado de conduo de Q2, aumentando por conseguinte a impedncia efectiva de Q2. Isto permite que a tenso do nodo 1 aproximar-se ainda mais de Vss. Com o nodo 1 em zero a gate de Q4 tambm estar em zero pelo que Q4 estar em corte (OFF). A carga de Q3 mantida por Q5. Note-se que atravs de Q5 apenas passaro correntes de fugas o que ter um efeito mnimo na tenso do nodo 2. Quanto mais positiva for a tenso do nodo 2 maior ser o estado de conduo de Q5. A tenso no nodo 2 ser deste modo igual a Vcc (nos transstores MOS com depletion no h queda de tenso entre fonte e dreno). Por definio o valor lgico 0 ser guardado na clula de memria se Q3 estiver ON e o valor lgico 1 se Q4 estiver ON. As clulas esto organizadas segundo uma matriz de n linhas x m colunas. Como exemplo representa-se, a seguir, a organizao de uma memria com 1024 posies. Pode ver-se que est organizada segundo uma matriz de 32 linhas x 32 colunas. selecciona linha 0 ................

DESCODIFICADOR

A0

MATRIZ DE MEMRIA

A4

selecciona linha 31 selecciona coluna 0

(32 x 32 ) ................. selecciona coluna 31

DESCODIFICADOR

A5 Fig. 2.2

A9

A seleco de uma clula de memria feita atravs da coincidncia de seleco de uma linha (A0 A4, 1 de 32) e duma coluna (A5 A6, 1 de 32).

2.1.1 Acesso clula de memria O acesso clula de memria efectuado do seguinte modo: A clula de memria interrogada por uma operao de leitura ou de escrita activando o correspondente sinal de seleco de linha o que colocar em conduo Q1 e Q6.

Sistemas Digitais II

Para uma operao de leitura, um sense amplifier ligado s sadas I/O 0 e I/O 1 de cada coluna e detecta o estado da clula seleccionada nessa coluna (ver Fig. 2.3). Se Q3 estiver em conduo (estado lgico 0) a corrente circular na linha I/O 0. Se Q4 estiver em conduo (valor lgico 1) a corrente circular em I/O 1. Para se escrever na clula um buffer de escrita aplica uma tenso prxima de Vcc na linha I/O 0 para escrever o valor lgico 0 mantendo a linha I/O 1 ligada a Vss; este buffer aplica um tenso prxima de Vcc na linha I/O 1 para escrever o valor lgico 1 mantendo, neste caso, a linha I/O 0 ligada a Vss. I/O 0 CLULA DE MEMRIA SENSE AMPLIFIER BUFFER DE ESCRITA I/O 1 seleco de linha CE READ seleco de coluna

barramento interno de sada ......

Vcc

CE WRITE seleco coluna DATA

... CE 32 x Vss Fig. 2.3

2.1.2 Operaes da memria (Leitura e Escrita) Esta memria, alm das 10 linhas de endereo A0 - A9 anteriormente descritas e usadas para seleccionar univocamente uma das 1024 clulas, contm uma linha de entrada de DATA e outra de sada de DATA, duas entradas de controlo e duas entradas para alimentao Vcc e Vss. As entradas de controlo so Read/Write (R/W) e Chip Enable (CE). A linha R/W permite informar a memria se se pretende ler ou escrever nela. A entrada de CE quando no estado lgico 0 selecciona o chip. Quando CE est no estado 1 a entrada de DATA est desligada electricamente do bus de data interno e o data buffer de sada da memria colocado no estado de alta impedncia. Deste modo o uso de CE permite expandir um sistema de memria. O timing dum ciclo de leitura est ilustrado na Fig. 2.4.

Sistemas Digitais II

Endereo tCO

CE tA tOH2 DATA

tOH1 Fig. 2.4

Os parmetros mais importantes so: tA tempo de acesso; o mnimo tempo, contado a partir do instante em que o desejado valor endereo seja vlido, ao fim do qual o DATA sado da memria vlido. tCO idntico ao tA mas contido a partir do instante em que CE fica activo. tOH1 tempo depois do endereo ter mudado, durante o qual o data ainda vlido. tOH2 idntico ao tOH1 mas contado a partir do instante em que CE deixou de estar activo. Dos valores de tA e tCO por um lado e de tOH1 e tOH2 por outro deve ser considerado em cada caso aquele que nas circunstncias presentes for o mais desfavorvel. Note-se que, embora CE esteja representado como sendo um impulso que ocorre depois da mudana de endereo, no h nenhum tempo especfico para o qual ele dever ocorrer (quer antes quer depois da mudana de endereo). Assim sendo, permitido ligar CE a zero, se a sada de data no estiver ligada sada de data de outras memrias e operar a memria somente com as linhas de endereo e de R/W. Por exemplo, se se pretender fazer uma srie de ciclos de leitura e o pino de data de sada no estiver ligado a outros, CE pode ser mantido em zero e os endereos podem ser mudados em qualquer ordem para obter a informao armazenada. Durante este tempo, contudo, dever manter-se a linha de R/W em 1. Para este caso o data ser vlido ao fim de tA. Um outro mtodo de ler a memria pode ser usado quando o endereo pretendido conhecido antes de se poder tomar uma deciso de leitura. Quando tal deciso pode ser feita, CE dever ser posto activo. Data ser vlido ao fim de tCO. O timing dum ciclo de escrita est representado na seguinte figura.

Sistemas Digitais II

Endereo tWR CE tAW

tWP R/W tDH tDW DATA Fig. 2.5

Os parmetros mais importantes so: tAW que mnimo tempo, depois do endereo estar estvel, ao fim do qual R/W deve ir ao estado 0. tWP tempo mnimo durante o qual o sinal R/W deve estar em 0. tDW tempo mnimo durante o qual data deve ser vlido para poder ser escrito na memria. tDH tempo mnimo durante o qual data ainda deve ser vlido depois de R/W ter voltado a 1. tWR tempo mnimo entre R/W ter voltado a 1 e o endereo deixar de ser vlido. Durante um ciclo de escrita no permitido efectuar uma srie sucessiva de ciclos mantendo CE e R/W em 0 e variar os endereos. Contudo, poder-se- manter CE em 0 continuamente desde que o sinal de R/W seja variado de acordo com o timing da Fig. 2.5. Quando se usa uma memria, o ciclo de escrita o mais crtico, nomeadamente o controlo do sinal R/W, devendo tomar-se todas as precaues para evitar escritas extemporneas. 2.2 RAMs dinmicas A maior parte das consideraes feitas anteriormente so vlidas para este tipo de memria. A diferena fundamental est no processo de guardar a informao e de a manter. Os circuitos de descodificao, de seleco de linha e de coluna, assim como a conduo da informao da clula de memria para o exterior e deste para aquela so em tudo semelhantes aos das memrias estticas. Em funo disso os diagramas temporais so tambm semelhantes. Como j se disse atrs, a diferena essencial entre as memrias dinmicas e estticas, reside na estrutura da clula de memria. Nas memrias dinmicas ela

Sistemas Digitais II

constituda basicamente por uma capacidade. A informao guardada depende do estado de carga ou de descarga dessa capacidade. Uma vez que bastante fcil implementar essa capacidade parasita, o que noutros casos mesmo indesejvel, possvel realizar matrizes de memria que ocupam menos rea e paralelamente mais rpidas, com menos consumo do que as correspondentes estticas. H no entanto um detalhe fundamental: as correntes de fuga dessas capacidades de armazenamento so tais que ao fim de alguns milisegundos h uma diminuio significativa da carga das capacidades carregadas, o que pode levar os circuitos de leitura a interpretar a contedo dessas clulas de memria como sendo o correspondente estado descarregado. Para que tal no acontea necessrio que periodicamente se efectue o refrescamento dessas clulas de memria, operao que internamente corresponde ao seguinte: para cada clula de memria, e se ela se apresentar ainda com uma tenso superior a um determinado limite, voltar a carreg-la com o valor mximo possvel; se ela se encontrar descarregada no alterar o seu estado. Na maior parte das memrias dinmicas esta operao tem de ser realizada com um perodo mximo de 2ms e, pela maneira como a matriz e os dispositivos de leitura esto organizados, possvel realizar o refrescamento de todas as clulas de uma linha fazendo a leitura de uma das clulas dessa linha. Por exemplo, se a organizao da memria for de 4k x 1, a que corresponde uma organizao de 64 x 64 (linhas x colunas) e, como regra geral a operao de refrescamento realiza-se linha por linha intervaladas regularmente no tempo, necessrio que em cada 2ms / 64 linhas = 30 s a actividade normal da memria seja interrompida e se efectue a leitura de uma posio da linha que est a ser avivada e cujo endereo indicado por um contador binrio de 6 bits que incrementado cada vez que esta operao realizada. Esta operao pode ser realizada atravs de lgica avulso (contadores, gates e monoestveis) implementados pelo utilizador de memria ou utilizando um circuito integrado prprio, designado controlador de memria dinmica. A Fig. 2.6 apresenta um esquema simplificado de uma clula (1 bit) de memria dinmica. Graas simplicidade da estrutura da clula bsica, este tipo de memria tem duas vantagens sobre a memria esttica: menor custo por bit implica que para a mesma capacidade de memria, o custo seja menor e menor consumo. A sua maior desvantagem a necessidade do refrescamento, o qual conduz a uma maior complexidade do circuito de controlo do sistema de memria. Bit Sense Line seleco da coluna Capacidade de armazenamento

Fig. 2.6

Sistemas Digitais II

10

Em virtude das suas caractersticas, as memrias RAM dinmicas so essencialmente utilizadas nos sistemas de memria de grande capacidade e/ou quando o consumo deve ser muito reduzido. 2.2.1 Endereamento de Memrias Dinmicas Cada bit de uma memria dinmica (estas memrias contm, normalmente, apenas um bit em cada registo da memria) enderevel individualmente. Assim, por exemplo, uma memria de 64 kbits de informao necessitaria de 16 linhas de endereo para permitir seleccionar qualquer um dos seus bits. Atendendo grande capacidade de armazenamento das memrias dinmicas seriam necessrias muitas linhas de endereo para se efectuar o acesso a qualquer uma das suas clulas internas. No sentido de reduzir o nmero de linhas de endereo necessrias, este tipo de memrias tm um processo de endereamento baseado na multiplexagem temporal dos endereos. Deste modo reduz-se o nmero de pinos de endereo a metade do que seria necessrio. A estes pinos so aplicados, sucessivamente, as duas metades do endereo pretendido, sendo a multiplexagem assim efectuada controlada por 2 linhas auxiliares. A primeira metade do endereo aplicado designa-se por endereo de linha (row address) e a segunda metade por endereo de coluna (column address). Os dois sinais que controlam a multiplexagem so chamados RAS (Row Address Strobe) e CAS (Column Address Strobe). O endereo de linha adquirido pela memria no bordo descendente do sinal RAS e o endereo de coluna adquirido no bordo descendente do sinal CAS. A Fig. 2.7 apresenta o esquema desta operao.

ENDEREO

LINHA

COLUNA

TASR

TRAH

TASR

TCAH

Fig. 2.7 Atendendo ao esquema apresentado, uma memria dinmica de 64 kbits, por exemplo, precisa apenas de 8 pinos de endereo, como mostra a Fig. 2.8.

Sistemas Digitais II

11

DIN WE RAS A0 A2 A1 VDD

2164A

VSS CAS Dout A6 A3 A4 A5 A7

64 K Fig. 2.8 Uma memria dinmica pode ser vista como um array bidimensional de clulas de memria com um bit. No caso da memria de 64 kbits este array seria constitudo por 28 (256) linhas e28 (256) colunas (ver Fig. 2.9). Esta organizao a origem das designaes row address e column address. Contudo, a implementao real da memria pode no corresponder rigorosamente a esta organizao.

.... 0H 100H 200H 300H 1H 101H 201H 301H 2H 102H 202H 302H 3H .... 103H .... 203H .... 303H .... 3FCH 3FDH 3FEH 3FFH 2FCH 2FDH 2FEH 2FFH 1FCH 1FDH 1FEH 1FFH FCH FDH FEH FFH

.... FE00H FF00H

Sistemas Digitais II

.... FE01H FF01H

.... FE02H FF02H

.... FE03H FF03H

Fig. 2.9

.... .... .... ....

.... FEFCH FFFCH

.... FEFDH FFFDH

.... FEFEH FFFEH

12

.... FEFFH FFFFH

....

2.2.2 Ciclos de Memria So dois os ciclos de memria mais comuns: leitura e escrita. Contudo, outros ciclos so possveis nalgumas memrias dinmicas como o caso do READMODIFY-WRITE. Para o seu estudo dever-se- consultar a respectiva data sheet. A distino entre um ciclo de escrita e de leitura determinada pela entrada de controlo designada por WE. A informao escrita na memria apenas quando WE estiver activo. A Fig. 2.10 ilustra um ciclo de leitura de uma memria dinmica. Este caracterizado pela actuao de RAS e CAS em conformidade com o contedo das linhas de endereo. Durante este ciclo a linha WE deve ser mantida no seu estado inactivo. RAS

CAS

END

LINHA VIH VIL TRAC

COLUNA

WE

TCAC DATA VLIDO

Dout

ALTA IMPEDNCIA

Fig. 2.10

Durante um ciclo de leitura a linha CAS tem uma segunda funo. De facto, CAS faz o enable do pino de Data out quando estiver activo e admitindo que RAS tambm est activo. Em qualquer outra circunstncia a sada Data out estar no estado de alta impedncia. Isto permite que vrias memrias dinmicas sejam ligadas com o pino Data out em comum de modo a permitir a constituio de sistemas de memria de grande capacidade de armazenamento. Durante o ciclo de escrita a informao introduzida (latched) na memria pelo bordo descendente que ocorrer em ltimo lugar dos sinais CAS ou WE. Se WE for activo antes de CAS ( o caso mais vulgar, designado por leitura tempor (early write), a informao recolhida na memria no bordo descendente de CAS. Se WE for activado depois de CAS (ciclo designado por escrita tardia late write), a informao armazenada no bordo descendente de WE. A Fig. 2.11 apresenta um diagrama dos ciclos de escrita numa memria dinmica. Sistemas Digitais II 13

CAS

WE

Din

VLIDO

Dout

INDETERMINADO

a) Ciclo de Late Write

CAS

WE

VLIDO Din

Dout b) Ciclo de Early Write Fig. 2.11 Os ciclos de Late Write so particularmente teis nos sistemas onde se pretende dar o incio ao ciclo de memria o mais cedo possvel, para maximizar o desempenho (performance), mas o CPU no pode fornecer a informao suficientemente depressa para ser recolhida pelo bordo descendente da CAS. Note-se que quando se executa um ciclo de Late Write, o sinal CAS activado enquanto WE permanece inactivo; esta situao indica um ciclo de leitura, pelo que a RAM activa a sua sada Dout. Assim, se num sistema se utilizar o ciclo de Late Write, os pinos de data in e data out devem permanecer isolados electricamente. Se no se usar o ciclo de Late Write os pinos de data in e data out podem ser ligados entre si de modo a reduzir o nmero de pistas no circuito impresso, utilizando-se linhas de dados bidireccionais ainda dentro da placa de memria. Sistemas Digitais II 14

2.2.3 Tempos de Acesso As RAMs dinmicas apresentam dois tempos de acesso diferentes: 1) Tempo de acesso a partir de RAS activo TRAC 2) Tempo de acesso a partir de CAS activo TCAC. Estes dois tempos de acesso esto ilustrados na Fig. 2.10. O tempo de acesso a considerar o que corresponde ao caso mais desfavorvel. 2.2.4 Refrescamento de memrias dinmicas As memrias dinmicas necessitam, com se disse anteriormente, de ser refrescadas periodicamente, isto , efectuar a leitura de cada clula, amplificar a carga do condensador e recarregar este para o seu estado inicial.

Bit Select Lines (from Row Adress Decoder)

Fig. 2.12 O circuito que faz esta amplificao de carga designado por sense amp. O refrescamento de cada clula deve ser executado cada 2 ms, ou menos, para evitar perdas de informao (ver Fig. 2.12). O processo mais usual de efectuar o refrescamento designado por RASONLY, representado na Fig. 2.13. Durante este ciclo apenas enviada memria o endereo de linha. No activado o endereo de coluna nem efectuada qualquer leitura ou escrita de informao.

Sistemas Digitais II

15

END

LINHA

RAS

CAS

Din

NO INTERESSA

Dout Fig. 2.13 Qualquer ciclo de leitura, escrita ou read-modify-write efectua o refrescamento da linha endereada. Este facto poderia ser usado para refrescar a memria, sem necessidade de utilizar ciclos prprios, no fosse o caso de ser impossvel assegurar que cada linha seria submetida a um ciclo de leitura ou escrita cada 2 ms. No que diz respeito ao timing, os ciclos de refrescamento podem classificar-se e, trs grupos: Refrescamento por burst; Refrescamento distribudo e Refrescamento transparente (ver Fig. 2.14). No refrescamento por burst o refrescamento de todas as linhas efectuado sequencialmente e de uma s vez, ao fim de cada 2 ms de intervalo. Este mtodo tem o inconveniente de no ser possvel efectuar ciclos de leitura ou escrita da memria durante o perodo, relativamente longo, do burst de refrescamento. Por exemplo, no caso de memria com refrescamento por 128 linhas, a operao de refrescamento tomaria mais de 40 s cada 2 ms. Esta temporizao coloca limitaes importantes no tempo de resposta a interrupes, o que a torna impraticvel para muitas aplicaes. A tcnica de refrescamento distribudo baseia-se no facto de no ser importante o modo como se distribui o refrescamento das diversas linhas dentro do perodo de refrescamento, desde que se assegure que cada linha refrescada com a periocidade exigida. Deste modo, nesta tcnica efectua-se o refrescamento das diversas linhas com intervalos de 2 ms / n, sendo n o nmero de linhas a refrescar. Este processo permite garantir a satisfao das exigncias da memria ao mesmo tempo que no afecta seriamente a leitura ou a escrita na memria. A terceira tcnica, refrescamento transparente, aproveita o facto de muitos processadores esperarem um determinado tempo, fixo, depois de extrarem uma instruo e enquanto procedem sua descodificao. Este tempo pode ser suficiente para efectuar um refrescamento. Se o estado do CPU pode ser examinado para determinar o ciclo de extraco de uma instruo, o refrescamento pode ser efectuado imediatamente aps esse ciclo. Deste modo os refrescamentos no interferem com os

Sistemas Digitais II

16

ciclos de leitura e escrita, e so transparentes para o processador. Contudo, h limitaes ao uso do refrescamento transparente, nomeadamente: a) No caso do processador deixar de executar ciclos de instrues durante perodos prolongados, como acontece quando se efectua Acesso Directo Memria por outra entidade exterior (processador em HOLD). Neste caso h o perigo de faltar o refrescamento durante perodos mais longos que o permitido. b) Processadores que trabalham a muito alta velocidade no deixam tempo suficiente entre o final do ciclo de extraco da instruo e o ciclo de funcionamento seguinte. Neste caso teriam que esperar pelo fim do ciclo de refrescamento antes de comearem o seu funcionamento normal. Estes processadores no tero, pois, qualquer vantagem no uso desta tcnica. burst de refrescamento de n linhas 1 n burst de refrescamento de n linhas 1 n

...
2 ms

...
Tempo a) refrescamento por burst

...
2 ms n 2 ms b) refrescamento distribudo

...
Tempo

Sistemas Digitais II

17

DESCODIFICAO DA INSTRUO

Ciclo extraco A NO H REFRESCAMENTO

Ciclo execuo

Ciclo extraco Tempo

TEMPO DE DESCODIFICAO Ciclo extraco Ciclo refrescamento

TEMPO DE EXECUO DEGRADADO NESTE VALOR

Ciclo execuo

Ciclo extraco Tempo

B REFRESCAMENTO INTERFERE COM EXECUO TEMPO DE DESCODIFICAO Ciclo extraco Ciclo refrescamento Ciclo execuo Ciclo extraco Tempo C REFRESCAMENTO TRANSPARENTE c) refrescamento transparente Fig. 2.14 2.3 Memrias CACHE A memria Cache (escondida) tem como propsito permitir um rpido acesso do CPU (Central Processing Unit) memria. A memria cache pode ser vista como uma memria intermdia entre o CPU e a memria principal. A cache baseia o seu funcionamento no chamado fenmeno de vizinhana que consiste em considerar que durante a execuo de instrues a memria vai utilizar endereos prximos entre si (vizinhos). Assim sendo a cache contem cpias de pores da memria principal. Deste modo, quando o CPU tenta ler uma palavra da memria verifica-se se a palavra pretendida est na cache; em caso afirmativo a palavra fornecida ao CPU. Caso contrrio um bloco da memria principal lido primeiramente para a cache e posteriormente entregue ao CPU. A cpia efectuada para a cache feita com a esperana que num futuro prximo o processador vai precisar de um endereo prximo do anterior (e por isso contido na cache) tornando assim mais rpida a execuo do programa. Este procedimento origina taxas de acerto (hit ratio) superiores a 90% (i. , em mais de 90 % das vezes o endereo pretendido pelo processador encontra-se na cache).

Sistemas Digitais II

18

Na Fig. 2.15 pode ver-se a estrutura de um sistema cache / memria principal. A memria principal consiste em 2n palavras endereveis, cada uma das quais com um nico endereo de n-bits. Para efeitos de mapeamento, considera-se que esta memria constituda por um nmero de blocos de comprimento fixo de K palavras cada. Ou seja, existem M = 2 n / K blocos. A cache consiste em C parcelas (slots) de K palavras, e o nmero de parcelas, ou linhas, consideravelmente menor que o do bloco da memria principal (C << M). Em qualquer altura um subconjunto de blocos de memria reside em parcelas na cache. Dado existir mais blocos que parcelas, no se pode dedicar uma parcela individual nica e exclusivamente a um bloco em particular. Desse modo, cada parcela inclui uma etiqueta (tag) que identifica que bloco em particular que est a ser armazenado nesse momento. Uma etiqueta normalmente, uma poro do endereo da memria principal. Endereo Memria Dados 0 1 2 3

Bloco (K palavras)

Bloco 2n - 1 a) memria principal

Sistemas Digitais II

19

Nmero Tag do slot 0 1 2

Bloco

C-1 Comprimento do bloco (K palavras) b) cache Fig. 2.15 Quanto ao tamanho da cache esta tem de ser suficientemente pequena de modo a que o custo mdio total (cache + memria principal) por bit seja prximo do da memria sozinha e ao mesmo tempo tem de ser suficientemente grande de modo a que o tempo de acesso mdio total seja prximo daquele que se obteria considerando s a cache. Existem outros factores para que o tamanho da cache seja minimizado: que quanto maior for a cache maior o nmero de portas envolvidas no endereamento da cache, resultando deste facto que as caches maiores tenderem a ser mais lentas. Outra condicionante do tamanho da cache a rea de chip e placa disponvel. 2.3.1 Funes de Mapeamento Dado existirem menos linhas na cache que blocos da memria principal, necessrio um algoritmo para mapear blocos da memria principal em linhas da cache. De facto, necessrio um meio de determinar que bloco de memria principal ocupa num dado momento a cache. A escolha da funo de mapeamento determina a forma como a cache organizada. So utilizadas trs tcnicas: o mapeamento directo, associativo e set-associativo. O mapeamento directo consiste em mapear cada bloco da memria principal em somente uma linha possvel da cache. O mapeamento da funo implementada facilmente usando o endereo. Para efeitos de acesso cache cada endereo da memria principal pode ser visto como contendo trs campos. Os w bits menos significativos identificam uma nica palavra ou byte dentro de um bloco da memria principal; os restantes s bits especificam um dos 2s blocos da memria principal. A lgica da cache interpreta estes s bits como uma etiqueta de s r bits (a poro mais significativa) e um campo de linha de r bits. Este ltimo campo identifica uma das m=2r linhas. Deste modo o uso de uma poro do endereo como nmero de uma linha fornece um mapeamento nico de cada bloco de memria principal na cache. Quando um bloco Sistemas Digitais II 20

lido para sua linha designada, necessrio etiquetar a informao para distingui-lo de outros blocos que possam ser associados com essa linha. Os bits mais significativos s r servem para esta finalidade. Esta tcnica simples de implementar, s que tem como grande desvantagem a existncia de uma localizao fixa na cache pela qualquer bloco. Se, por exemplo, acontecer que um programa referencie palavras de blocos diferentes mapeados na mesma linha, ento os blocos estaro constantemente a alternar na cache e a taxa de acerto ser baixa. O mapeamento associativo supera a desvantagem do mapeamento directo ao permitir que cada bloco da memria principal seja mapeado em qualquer linha da cache. Neste caso o campo de etiqueta s identifica o bloco da memria principal. Para determinar se o bloco est na cache o controlador de lgica da cache tem de encontrar uma ocorrncia da etiqueta em todas as linhas. Como grande desvantagem deste mtodo temos a complexidade exigida em termos de circuitos requeridos para examinar a etiqueta de todas as linhas da cache em paralelo. O mapeamento set-associativo um compromisso que comporta as vantagens das duas tcnicas atrs referidas sem as suas desvantagens. Neste caso a cache dividida em v conjuntos (sets), cada um contendo k linhas. Com este mapeamento o bloco Bj pode ser mapeado em qualquer uma das linhas do conjunto i. Neste caso a lgica da cache interpreta um endereo de memria simplesmente como trs campos: etiqueta, conjunto e palavra. Os d bits de conjunto especificam um dos v=2d conjuntos. Os s bits dos campos de etiqueta e conjunto especificam um dos 2s blocos de memria principal.

Sistemas Digitais II

21

3. Interrupes
3.1 Introduo As interrupes so um mecanismo que permite a interrupo da execuo normal de um programa quer por sinais externos Entradas/Sadas, Memria ou por instrues (operaes) especiais de um dado programa. Em resposta a uma interrupo o microprocessador pra a execuo do programa corrente e chama a rotina que serve a interrupo. Uma instruo IRET (Interrupt RETurn) no fim da rotina de servio da interrupo devolve a execuo ao programa interrompido, que prosseguir a sua execuo a partir do ponto em que foi interrompido. As interrupes permitem ao processador prosseguir com a execuo de outras instrues enquanto os perifricos executam a sua operao, s respondendo aos perifricos quando estes estiverem prontos evitando, deste modo, esperas que se podem tornar muito longas, desperdiando tempo ao processador. As interrupes podem dividir-se em quatro grandes categorias de interrupes: a) Programa geradas por qualquer condio que ocorra como resultado da execuo de uma instruo (exemplos: overflow aritmtico, diviso por zero, etc.) b) Temporizador geradas por temporizadores dentro do processador, permitindo ao SO efectuar certas funes regularmente (mais adiante ser referido o temporizador programvel 8254A) c) Entrada / Sada (I/O) geradas por um controlador de Entrada/Sada, para sinalizar o trmino normal de uma operao ou para sinalizar uma variedade de erros d) Falhas de Hardware geradas por falhas, tais como falha de energia ou erro de paridade da memria. Na maioria dos processadores existe um pino de entrada de interrupo que verificada ao fim de cada ciclo de relgio do ltimo ciclo de mquina de cada instruo. Se a entrada de interrupo estiver activa, ento o controlo transferido para uma Rotina de Atendimeto de Interrupo (ISR). Tal est ilustrado na Fig. 3.1. 1 Processamento normal 2 Ocorrncia interrupo 3 Guardar PC 4 Salto para ISR

Processamento normal continua 7 Fig. 3.1

Recuperao PC 6

Execuo ISR 5

De seguida ir ser descrito como funciona um ciclo com interrupo. Em t=1 est a decorrer o processamento normal de um programa (editar um ficheiro do texto, por exemplo). No instante 2 ocorre uma interrupo. O processador Sistemas Digitais II 22

acaba a instruo corrente (a que est a desempenhar na altura) e guarda o Program Counter (PC) na pilha no instante 3. O controlo ento transferido para a ISR no instante 4 e esta rotina executada durante 5. A ISR acaba com uma instruo de retorno (RET) no instante 6, fazendo com que o PC seja recuperado da pilha. Aps ter recuperado o seu endereo antigo, o processamento normal continua em 7. Quando se estabelecem comunicaes com dispositivos de entrada/sada (vulgo perifricos), o uso de interrupes tem a vantagem de permitir ao processador responder somente quando o perifrico est pronto, originando uma maior eficincia no uso do microprocessador. Como exemplo de uma interrupo a seguir descrevem-se os passos que usualmente ocorrem aquando de uma interrupo provocada por um perifrico, tendo as interrupes originadas por software uma evoluo semelhante: 1. requisitada uma interrupo activando, para tal a respectiva entrada do processador. A finalidade deste pedido informar o processador que ele deve suspender a sua actividade, processar a informao do que originou a interrupo e finalmente retomar as operaes que tinha suspendido. 2. O processador tem sua escolha aceitar ou no o pedido de interrupo que lhe foi feito (regra geral os processadores possuem uma instruo para desactivar alguns tipos de interrupo disable interrupt). Se aceitar o pedido, acaba, primeiramente, de executar a instruo que estava a ser realizada, assinalando exteriormente a aceitao do pedido, activando um sinal de controlo (normalmente designado por INTERRUPT ACKNOWLEDGE). 3. O perifrico pode usar este sinal IACK (Interrupt ACKnowledge) para iniciar a transferncia de informao pela porta adequada. O perifrico deve tambm, ao receber IACK, desactivar o pedido de interrupo, uma vez que ao ser servido pelo processador deixa de existir o motivo do pedido. O processador atende o pedido comeando por guardar o contedo do Program Counter, de modo a poder regressar ao programa interrompido depois de ter servido o perifrico. Seguidamente determina a endereo da memria onde se inicia o programa a executar em resposta ao pedido de interrupo (Rotina de Interrupo - IRS). H vrios processos de determinar este endereo, os quais sero analisados posteriormente. 4. Como, quando ocorreu o pedido de interrupo, o processador estava a executar um programa, quase certo que os registos internos de trabalho e as flags (acumulador, registos vrios, etc.) teriam valores que sero necessrios conservar de modo a que mais tarde, ao voltar a esse programa, ele recomece exactamente no ponto em que se encontrava. H dois modos de alcanar este objectivo. Num deles o pedido de interrupo desencadeia a execuo de um microprograma (guardado na unidade de controlo) que guarda o contedo de todos os registos de trabalho na pilha (stack). No outro processo, a conservao dos valores dos referidos registos feita por software no incio da rotina de interrupo. Cada um destes processos tem vantagens e desvantagens. O primeiro liberta o programador de ter que escrever a rotina para guardar os registos poupando, portanto, bytes de memria. Em contrapartida guarda sempre todos os registos na pilha, mesmo que no seja necessrio, podendo por isso, atrasar a Sistemas Digitais II 23

resposta a um pedido de interrupo. O segundo processo torna-se mais flexvel, permitindo guardar-se apenas o contedo dos registos necessrios e assim acelera a resposta ao pedido feito. Em contrapartida necessita de memria para guardar as instrues necessrias a esta operao pode tornar-se mais lenta que o anterior se se tiver que guardar todos os registos. Aps esta operao o processador proceder transferncia de informao requisitada por meio de software. 5. Uma vez terminada a transferncia de informao o processador dever retornar ao programa principal, que tinha sido interrompido, devendo repor o contedo original das registos de trabalho, quer por software quer por execuo de um microprograma disparado pela realizao de uma instruo de retorno de interrupo (IRET, por exemplo). H, contudo, vrios problemas que podem surgir aquando do uso de interrupes e que tm de ser resolvidos. Citemos alguns: 1. necessrio adicionar hardware para gerar interrupes dos perifricos. 2. O endereo da ISR tem de ser determinado aquando da altura da interrupo. 3. Existem actividades que no podem ser interrompidas, pois podem originar perda de informao (por exemplo, operaes de disco). 4. Se forem utilizados vrios perifricos cada um tem de ter a sua prpria ISR. 5. O que que acontece se dois, ou mais, dispositivos requererem interrupes simultaneamente? H ainda outro perigo aquando do uso de interrupes de I/O (entrada/sada), no presente em operaes programadas: o fluxo do programa agora controlado por hardware em vez de o ser por software. E como a fonte da interrupo assncrona relativamente ao processador, qualquer programa pode ser interrompido em qualquer altura. Acontece que demasiadas interrupes podem fazer com que o microprocessador se torne assncrono, fazendo com que o programador perca o controlo da sua mquina. Os processadores tm um pino de entrada de interrupo (INT) havendo processadores que tm mais de um pino que ter de ser activado aquando da ocorrncia do pedido de interrupo. Tendo em conta que o processador no ir atender um pedido de interrupo at ao fim da instruo, necessrio ter cuidado para que o processador receba de facto o pedido de interrupo. Na maioria dos casos o processador ir gerar um sinal especial de reconhecimento de interrupo (interrupt acknowledge), chamado INTA. Este sinal pode ser usado para remover o pedido de interrupo assim que haja reconhecimento. 3.2 Interrupes mascarveis e no-mascarveis As interrupes podem ser classificadas como mascarveis ou como nomascarveis. Uma interrupo mascarvel uma interrupo que pode ser desactivada pelo CPU. Quando o processador activa o comando de desactivao de interrupes ento nenhuma das interrupes mascarveis pode ser atendida. As interrupes so desactivadas sempre que ocorra um RESET ou aps receber o pedido de interrupo. Por seu lado o CPU no pode ignorar uma interrupo no-mascarvel; tem de ser Sistemas Digitais II 24

atendida. Este tipo de interrupes tem de ser usado com muito cuidado, estando geralmente reservado para indicao de falha de energia (captulo 3.5). 3.3 Endereamento das Rotinas de Atendimento de Interrupes Quando ocorre uma interrupo, o controlo tem de ser transferido para uma Rotina de Atendimento de Interrupo (Interrupt Service Rotine - ISR). Existem trs tcnicas de endereamento para isto: Vectorial, Directo e Indirecto. Vamos ver como funciona cada uma destas tcnicas. 3.3.1 Interrupes Vectoriais Quando se usa esta tcnica o dispositivo que gera a interrupo fornece um vector indicando o endereo da ISR. 3.3.2 Interrupes Directas Esta tcnica, s suportada em alguns processadores, faz com que quando for aplicado o pedido de interrupo, nos pinos apropriados do processador, o programa execute directamente um salto para uma localizao especfica da memria, onde existir uma ISR, sem a necessidade de um vector de interrupo. 3.3.3 Interrupes Indirectas Tambm esta tcnica no suportada por todos os processadores. Entre os processadores mais comuns que usam esta tcnica encontra-se o Z-80. Nesta tcnica, semelhante vectorial, usada a combinao do vector fornecido pelo requerente da interrupo com o registo I do Z-80 para formar um apontador de 16 bits para uma tabela de vectores. Os dois bytes consecutivos armazenados nesta tabela so usados como o endereo da ISR. As Interrupes Indirectas permitem uma maior flexibilidade pois a ISR pode estar em qualquer espao da memria; as Interrupes Directas so mais fceis de implementar pois no necessitam de qualquer hardware externo; as Interrupes Vectoriais oferecem a possibilidade de oito perifricos poderem partilhar a mesma linha de pedido de interrupo, mas cada um saltar para uma ISR separada; contudo, cada rotina est limitada a oito bytes na pgina 0. 3.4 Interrupes Mltiplas J foi mencionado que uma ISR pode interromper outra. Isto s pode ocorrer em dois casos especiais: a primeira ISR executa uma instruo de EI (Enable Interrupt) anteriormente na rotina ou quando a segunda interrupo no-mascarvel. Recorde-se que quando uma interrupo atendida as interrupes mascarveis so automaticamente desactivadas. Isto feito para proteger a ISR de ser interrompida antes de ter uma oportunidade de executar a sua tarefa. Contudo uma interrupo nomascarvel nunca pode ser bloqueada, mesmo se for executada a instruo DI (Disable Interrupt). Podem se usar interrupes em ninho (nested) em que ocorrem interrupes dentro de interrupes. Neste caso preciso ter muito cuidado de modo a que a rea da pilha no cresa de modo a escrever por cima do programa ou nem a ocupar qualquer uma das suas tabelas de dados. Sistemas Digitais II 25

Outro problema que pode ocorrer a possibilidade de duas interrupes chegarem simultaneamente. Dado o facto de o processador s testar a existncia de pedidos de interrupes no fim da instruo corrente, no necessrio que dois, ou mais, pedidos de interrupo cheguem no mesmo instante para se apresentarem ao processador como simultneos. Este problema tem uma soluo fcil e uma soluo difcil. A soluo fcil fornecida pelo prprio processador: este d prioridades diferentes s interrupes. Obviamente que uma interrupo no-mascarvel tem uma prioridade maior, mas esta atribuio de prioridades refere-se somente s interrupes pendentes, no ISR em curso. Por exemplo, uma interrupo pode interromper uma ISR; quando tal no desejado cabe ao programador assegurar-se que no so activadas quaisquer interrupes at que a ISR termine a sua tarefa. Deste modo s as interrupes no-mascarveis podem interromper a ISR em execuo. Dar prioridades s interrupes funciona bem com interrupes directas. Contudo deve ser usada outra tcnica quando uma linha de interrupo partilhada por vrios perifricos. Este tipicamente o caso que ocorre quando usada a linha de interrupo vectorial. No caso de vrios perifricos estarem ligados ao pino de pedido de interrupo ocorre um problema para o processador que determinar qual dos perifricos efectuou o pedido e resolver quaisquer pedidos simultneos de dois ou mais dispositivos. Geralmente so usadas trs tcnicas. 1. Consulta (Polling): o sinal de pedido de interrupo de qualquer dispositivo pode ser usado para determinar um bit de um registador conectado como uma porta de entrada. Quando ocorre uma interrupo a ISR consulta esta entrada para ver quem fez a requisio do servio. Ento, estabelecida, automaticamente, uma prioridade pela ordem de consulta. Esta tcnica muito simples, mas tem a desvantagem de ter um tempo de resposta degradado. 2. Controlador de Prioridades de Interrupes (PIC): se estiverem presentes duas, ou mais, interrupes ser atendida a que tiver maior prioridade. Esta tcnica ser estudada com mais detalhe no captulo 3.7 ao se estudar o PIC 8259. 3. Corrente Daisy: cada perifrico tem uma entrada de activao de interrupo (IEI) e uma sada de activao de interrupo (IEO). Um pedido de interrupo s pode ser feito se IEI for 1. Atendendo Fig. 3.2 v-se que o perifrico 2 est a requerer uma interrupo fazendo com que a sua sada seja 0. Tal vai fazer com que os perifricos 3 e 4 fiquem desactivados. Contudo o perifrico 1 vai ficar com a possibilidade de efectuar um pedido de interrupo pois tem uma maior prioridade.

Sistemas Digitais II

26

Fig. 3.2 3.5 Interrupes por falha de energia Em muitos sistemas de microprocessadores a interrupo de maior prioridade usada para detectar e actuar convenientemente uma falha de alimentao. As fontes de alimentao usadas pelos microprocessadores so normalmente +5 e/ou +12V, as quais so derivadas da alimentao de 220V. A falha de alimentao pode ser detectada, por exemplo, quando a tenso desce abaixo dos 180V. Contudo podero ocorrer alguns milisegundos at que as fontes de 5 ou 12V apresentem valores suficientemente baixos para impedir o correcto funcionamento do microcomputador. Durante estes milisegundos podem se executar algumas centenas de instrues para se preparar para a falha de alimentao de uma maneira ordenada. Quando a alimentao regressar o programa interrompido pode recomear sem perda de informao. claro que se supe a existncia de memria no voltil (por exemplo RAM com alimentao a pilhas) para guardar o contedo dos registos durante a falha de energia. 3.6 Temporizador Programvel 8254 Existem problemas relacionados com a preciso de intervalos de tempo para gerar sinais do tipo onda quadrada e pulsos. Inclusive em alguns casos os microprocessadores so chamados a contar eventos e a tomar medidas aps um determinado nmero de pulsos. Como exemplo temos o caso de um relgio em tempo real. para aplicaes deste gnero que o Temporizador Programvel 8254 foi concebido. O 8254 fornece trs registos temporais separados de 16 bits cada, podendo cada um dos registos ser programado como contador ou como temporizador. Por exemplo, se se carregar o contador 0 com o valor 86810 e especificando-se o modo 3 gera-se uma onda quadrada com 50% de duty-cycle do tipo diviso-por-868. A programao do 8254 consiste em escrever um byte na porta de controlo seleccionando um dos seis modos de operao possveis. Cada contador suporta um nmero de 16 bits em contagem decrescente at 0 a uma taxa determinada pela entrada do registo. Quando ocorre a contagem terminal pode se gerar uma interrupo, um impulso estroboscpico (strobe), terminar um impulso one-shot ou inverter o valor lgico de uma onda quadrada.

Sistemas Digitais II

27

Existe um dispositivo, o 8253, que uma verso desactualizada do 8254, sendo as principais diferenas o facto de o 8253 no ter modo de read-back alm de estar limitado a uma frequncia mxima de 2 MHz. 3.6.1 Interface do 8254 O diagrama de blocos do 8254 est representado na Fig. 3.3.

Fig. 3.3 O 8254 constitudo por 3 contadores de 16 bits cada. No lado esquerdo do diagrama de blocos do 8254 (fig. 3.3 da sebenta) pode ver-se que existem 8 linhas de dados para comunicao com o exterior (D7 - D0). Estas linhas permitem escrever ou ler comandos e nmeros no 8254; isto determinado pelas entradas WR e RD. A entrada CS necessria para que o dispositivo seja seleccionado. As entradas A0 e A1 servem para determinar qual o contador seleccionado. Do lado direito do diagrama de blocos v-se os trs contadores com as suas entradas de CLK e GATE, bem como com a sua sada OUT. A entrada CLK permite aplicar um sinal com qualquer frequncia desde 0 (sinal dc) at 8 MHz. A entrada GATE permite activar ou interromper esse contador atravs de sinais externos. A sada do contador aparece no seu pino OUT respectivo. Como se pode verificar, para o processador existem quatro portas de Entrada/Sada seleccionadas pelas linhas de endereo A0 e A1. As entradas RD e WR determinam se os dados so para serem lidos ou escritos usando o barramento bidireccional de dados (Data Bus - D0 a D7). O pino CS tem de ser 0 para que se possa efectuar qualquer operao. O conjunto de operaes possveis pode ser visto na Tabela 3.1.

Sistemas Digitais II

28

CS RD WR A1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 1 X X X 0 1 1 X

A0 0 1 0 1 0 1 0 1 X X

Escreve no Contador 0 Escreve no Contador 1 Escreve no Contador 2 Escreve Palavra de Controlo L do Contador 0 L do Contador 1 L do Contador 2 Nenhuma Operao Nenhuma Operao Nenhuma Operao

Tabela 3.1 O 8254 programado escrevendo-se um s byte para cada contador na porta de controlo seguido de um ou dois bytes para especificar o valor da contagem inicial. A palavra de controlo do 8254 tem o seguinte formato:
D7 D6 D5 D4 D3 D2 D1 D0 SC1 SC0 RW1 RW0 M2 M1 M0 BCD

Em que os bits tm o seguinte significado: SC1 SC0 0 0 0 1 1 0 1 1

seleco do contador 0 seleco do contador 1 seleco do contador 2 comando read-back

RW1 RW0 0 0 Comando latch do contador 0 1 R/W s do LSB 1 0 R/W s do MSB 1 1 R/W do LSB primeiro e do MSB depois M2 M1 M0 0 0 0 0 0 1 X 1 0 X 1 1 1 0 0 1 0 1

modo 0 modo 1 modo 2 modo 3 modo 4 modo 5

A palavra de controlo pode dividir-se em trs tipos: 1. Standard: especifica o modo de operao e o contador seleccionado. Cada contador pode ter um modo de operao diferente e ser programado para operar como contador BCD ou binrio. Sistemas Digitais II 29

2. Latch: fixa o valor do contador especificado por D6 e D7 (importante por causa dos erros). Neste caso a contagem continua, sendo o valor fixado at ser lido. 3. Read-back: permite fazer a fixao (latch) de qualquer um ou de todos os contadores ou ento fixar uma palavra de estado espacial. 3.6.2 Modos de operao do 8254 Para todos os modos: Inicialmente escreve-se a palavra de controlo (control word - CW) que feito quando a linha WR vai primeiramente a 0. De seguida a linha WR vai novamente a 0 uma ou duas vezes, consoante se esteja a inicializar com um valor de 8 ou 16 bits, respectivamente, para que seja escrito o valor inicial da contagem (1 ou 2 bytes); esse valor s passa para o registo da palavra de controlo aps WR ser 1. Passado um ciclo de relgio iniciada a contagem em ordem decrescente aquando da transio descendente do sinal do relgio (clock). Modo 0: contador de eventos Neste modo a contagem s efectuada com a GATE a 1. Quando escrita a CW a sada (OUT) vai a 0. De seguida, sempre que ocorrer uma transio descendente do sinal de relgio o valor da contagem decrementado uma unidade. Quando a contagem atingir o valo numrico 0, a sada ser 1. Se o valor inicial da contagem for N, a sada s voltar a 1 quando decorrerem N+1 impulsos de relgio. Isto pode ser observado na parte superior da fig. 3.4. Na parte do meio da fig. 3.4, pode verse que GATE foi a 0 durante a contagem; neste caso o valor da contagem retido. Quando GATE voltar a 1 a contagem continua normalmente. Na parte inferior da fig. 3.4 mostra que se for escrito um novo valor par um contador, ele ser carregado no respectivo contador um ciclo de relgio depois. A nova contagem ir ento iniciar-se.
Fig. 3-4

Sistemas Digitais II

30

Modo 1: one-shot O princpio bsico deste modo que quando for aplicado um sinal entrada trigger de um dispositivo, a sua sada ir ser de acordo com um valor pr-estabelecido (e definido). Aps um determinado intervalo de tempo, a sua sada voltar a um estado no definido. Vejamos alguns exemplos de funcionamento neste modo. Na parte superior da fig. 3.5 podemos ver que aps ser escrito o valor inicial de contagem (2a vez em que WR est a 0), e como o sinal de GATE est a 0, a contagem no comea imediatamente como sucedia no modo 0. Neste modo, a entrada GATE funciona como um trigger. Quando esta entrada 1, o valor de contagem ser transferido do registo para o contador respectivo no impulso de relgio seguinte. S ento que iniciada a contagem decrementando o valor da contagem em 1 em cada ciclo de relgio. Quando a contagem atingir o valor numrico 0, sada OUT, durante a contagem a 0, ser 1. Por outras palavras, se for carregado o valor N no contador e se for feito o trigger do dispositivo fazendo GATE igual a 0, a Fig. 3.5 sada OUT ser 0 durante N perodos de relgio. O comprimento deste sinal de N vezes o perodo do sinal de relgio. A parte do meio da fig. 3.5 demonstra o significado de retriggervel. Se ocorrer outro impulso de trigger durante a contagem, ento esta ser reiniciada. A parte inferior da fig. 3.5 pode ser observado o efeito de se carregar um novo valor de contagem antes de ocorrer a contagem terminal; neste caso esse valor no ser carregado no contador nem decrementado at que ocorra outro impulso de trigger.

Sistemas Digitais II

31

Modo 2: contador de diviso-por-N (ou gerador de interrupo temporizado) Observando a parte superior da fig. 3.6, com GATE sempre igual a 1, pode ser observado que aps comear a contagem no contador, a sada OUT do contador ser 1 durante a contagem at se atingir o valor numrico 1; ento, a sada ser 0 durante um perodo do relgio. No perodo seguinte a contagem recomea e a sada OUT volta a 1. Se o contador for carregado com o valor N, a sada OUT do contador ir a 0 durante um perodo do relgio de N em N perodos do relgio. A frequncia do sinal de sada ser, ento, igual frequncia do sinal de relgio de entrada a dividir por N. Na parte do meio da fig. 3.6, pode se ver que se GATE for a 0 durante a contagem, ento a contagem parar. Quando GATE voltar a 1 o valor inicial da contagem recolocado no contador. A ltima parte da fig. 3.6, mostra o que ocorre quando se escreve um novo valor enquanto est a ser feita a contagem; neste caso, esse novo valor no ser transferido enquanto a contagem no atingir o valor numrico 1.
Fig. 3.6

Modo 3: gerador de onda quadrada Se o 8254 for programado neste modo e se for carregado um valor inicial par, a onda na sada OUT ser uma onda quadrada. A frequncia desta onda quadrada ser igual frequncia do sinal de relgio a dividir pelo nmero escrito no contador. Caso o nmero escrito seja mpar, e o 8254 for programado neste modo, a onda de sada ser 1 durante mais um perodo do relgio do que 0, resultando, assim uma onda que no ser simtrica. Olhando para a parte superior da fig. 3.7, v-se que um perodo aps se escrever um valor no contador, o contador ir decrementar duas unidades ao valor da contagem. Neste caso quando a contagem atinge o valor numrico 2, a sada OUT vai a 0 e o valor inicial recarregado. A sada mantm-se 0 enquanto a contagem novamente decrementada em duas unidades, at se atingir o valor numrico 2, em que a sada volta a 1 e o valor inicial recolocado no contador e a contagem reiniciada. Ento, o ciclo repete-se. Sistemas Digitais II 32

A parte do meio da fig. 3.7, mostra o que sucede se for escrito um nmero mpar no contador. Como se pode ver o nmero de perodos de relgio de cada onda mantmse igual ao nmero colocado no contador. Contudo, como anteriormente mencionado, a onda de sada est a 1 mais um perodo de relgio do que est a 0. A parte inferior da fig. 3.7 mostra que a contagem interrompida se GATE for 0. Aps voltar a 1 a contagem continua.

Fig. 3.7

Fig. 3.8

Modo 4: Software-triggered strobe Este modo e o modo 5, so muitas vezes confundidos com o modo 1, mas h uma diferena bvia: o modo 1 usado para produzir um pulso com valor lgico 0 com comprimento de N perodos de relgio. Olhando para a parte superior da fig. 3.8, v-se que o modo 4 produz um pulso com valor lgico 0 aps N+1 perodos de relgio. Neste modo a sada 0 durante um perodo de relgio e depois volta a 1. Por outras palavras, o modo 4 produz um impulso de um perodo de relgio N+1 perodos aps o valor de contagem ser escrito no registo. Este modo denominado de sotware-triggered, porque a escrita do valor da contagem no registo que inicia o processo. de notar que aps terminada a contagem, o contador comea a decrementar desde o valor FFFFh. Este modo pode ser usado quando se pretende enviar dados paralelos para uma porta e depois de um determinado tempo de atraso enviar um sinal estroboscpico para que o sistema receptor saiba que os dados esto disponveis. Sistemas Digitais II 33

Modo 5: Hardware-triggered strobe Este modo utilizado quando se pretende produzir um sinal estroboscpico com valor lgico 0 um intervalo de tempo, programvel, depois de um sinal ascendente ser aplicado entrada GATE. Este modo muito til quando se pretende atrasar a subida de um sinal um determinado intervalo de tempo. A fig. 3.9 mostra exemplos de ondas quando se est a operar no modo 6. Na parte superior desta figura, pode observar-se que o valor da contagem no transferido para o contador at que GATE v a 1. Quando isso ocorre o valor de contagem ser transferido para o contador um perodo de relgio depois, seguindo-se um decremento do valor da contagem nos perodos de relgio seguintes. Quando a contagem atinge o valor numrico 0, a sada OUT ser 0 durante um perodo de relgio. A sada OUT ir a 0 N+1 perodos de relgio depois de a entrada GATE ir a 1. A parte do meio da fig. 3.9 mostra que se ocorrer outro sinal de trigger ocorrer durante a contagem, o valor da Fig. 3.9 contagem ser recarregado e a contagem recomear. Se outro trigger ocorrer durante esta nova contagem OUT manter-se- a 1, podendo, assim, utilizar-se este modo para produzir um sinal da falha de energia. Por fim, na parte inferior da fig. 3.9 pode ver-se que se for escrito um novo valor de contagem para um contador, este no ser carregado at se atingir o fim da contagem anterior. 3.7 Controlador de Interrupes Programvel 8259A Consideremos os processadores 8080, 8085 e Z-80. No primeiro caso temos uma s linha de interrupes (INTR), enquanto que o 8085 contem cinco linhas de interrupo e duas no caso do Z-80. Contudo, na generalidade dos casos o processador lida com vrios perifricos sendo necessrio a cada processador lidar com vrios perifricos geradores de interrupes. A soluo expandir o conjunto do chip de modo a incluir um PIC (Controlador de Interrupes Programvel). Este o caso do prximo objecto de estudo: o 8259A. O 8259A aceita interrupes vectoriais, podendo no modo 8080/8085: - aceitar oito pedidos de interrupes separados (podendo atingir um mximo de 64 se em cascata);

Sistemas Digitais II

34

determinar e colocar os trs bytes necessrios para uma instruo CALL no Data Bus do sistema em resposta ao INTA; determinar prioridades e arbitrar interrupes simultneas; programar as interrupes para um trigger de nvel ou de flanco: programar o vector de endereo e um intervalo de endereo de 4 ou 8 bytes.

3.7.1 Descrio do 8259A O diagrama de blocos do 8259A encontra-se representado na Fig. 3.10.

Fig. 3.10 O 8259A permite expandir o nmero de dispositivos requerentes de interrupes que por defeito baixo nos processadores (1, 2 ou 5) para 8 no modo simples at 64 se em cascata. Observando o diagrama de blocos do 8259A podemos observar o seguinte: - as linhas bi-direccionais D7-D0 servem para escrever palavras de controlo no 8259A ou para ler uma palavra de estado. Isto feito atravs de WR e RD quando CS est activo - IR7-IR0 so as entradas que permitem activar o pino INT do 8259A quando uma interrupo pedida (uma, ou mais, das entradas IR0 a IR7 activada). A sada INT serve para avisar o processador que existe um pedido de interrupo a ser feito - a entrada INTA ligada sada INTA do processador, serve para o processador notificar o 8259A que j tem conhecimento do pedido de interrupo - o IMR (registo das mscaras de interrupes) usado para activar (mascarar - mask) ou desactivar (desmascarar - unmask) entradas individuais de interrupes. Cada bit deste registo corresponde entrada de interrupo com o mesmo nmero. Activa-se uma entrada de interrupo enviando uma Sistemas Digitais II 35

palavra de comando com um 0 na posio do bit correspondente a essa entrada o IRR (registo dos pedidos de interrupo) regista quais as interrupes que esto a pedir atendimento. Se uma entrada tiver um sinal activo, ento o bit correspondente neste registo ser activado. de notar que o sinal de pedido de interrupo ter de estar activo at ao flanco descendente de INTA o ISR (registo em-servio) regista quais as interrupes que esto a ser atendidas. Cada interrupo em atendimento tem o respectivo bit activado. O Priority Resolver (solucionador de prioridades) actua como um juiz que determina se e quando um pedido de interrupo nas entradas IR deve ser atendido. S entra em aco se ocorrer um pedido de interrupo com prioridade maior que estiver presentemente a ser atendida; caso contrrio no actua.

3.7.2 Operao em modo cascata Ligaes: O INTA vai do processador para o Mestre e para todos os Escravos; o INT do Escravo vai ser ligado a uma das entradas IR do Mestre; o INT deste que liga entrada INT do processador. As linhas CAS0, CAS1 e CAS2 so ligadas entre o Mestre e o(s) Escravo(s) funcionando como sadas no Mestre e como entradas no(s) Escravo(s). Estas linhas tm a ver com a identificao de cada Escravo pelo Mestre. SP/EN alto (1) no Mestre e baixo (0) no(s) Escravo(s). Quando um Escravo tem um pedido de interrupo numa das suas entradas IR, ento envia um pedido de interrupo atravs de INT ao Mestre; este, por seu turno, ao detectar um pedido de interrupo numa das suas entradas envia um pedido de interrupo ao processador atravs da sua linha INT. Quando o processador envia o seu 1 INTA, todos os Escravos vo ignor-lo; s o Mestre que o vai atender. Aps esta recepo, o Mestre envia uma identificao (atravs de CAS0, CAS1 e CAS2) de acordo com a inicializao, que permitir activar o respectivo Escravo. Se for ligada uma interrupo directamente ao Mestre, este trata-se como se estivesse a operar no modo simples. 3.7.3 Interface do 8259A Para o programador o PIC aparenta ser duas portas de I/O (ou localizaes de memria) especificadas por A0. Contudo podem escrever-se em sete registos separados. O endereo especfico do PIC controlado por um descodificador de endereos ligados entrada CS. Assumindo que a interrupo activa no-mascarvel, o 8259A pede uma interrupo ao microprocessador colocando INTR em 1. O processador, aps completar a sua instruo corrente, emite INTA que recebida pelo 8259A como INTAB. Em seguida so colocados trs bytes no Data Bus do sistema, sendo o primeiro 11001101 que corresponde ao cdigo operativo para uma instruo CALL. Aps recepo pelo microprocessador, so colocados dois pulsos de INTA adicionais que so usados para indicar os 16 bits de endereo correspondentes interrupo activa. Note-se que o 8259A no permite que cada entrada de interrupo tenha o seu prprio endereo. Em

Sistemas Digitais II

36

seu lugar existe um endereo base que pode ser programado bem como um intervalo de 4 ou 8 bytes. O 8259A foi concebido para lidar com um grande nmero de pedidos de interrupes. Pode ser atribuda uma prioridade a cada uma das entradas de interrupo para ser usada quando ocorrem pedidos de interrupo mltiplos. 3.7.4 Modos de operao do 8259A Podem-se programar seis modos diferentes de operao. 1. Fully nested: este o modo por defeito e identifica IR0 como sendo o de mais alta prioridade e IR7 como o de mais baixa. Neste modo quando uma interrupo est a ser servida todas as outras de igual ou menor prioridade so lembradas (no IRR Registo de Pedido de Interrupes) mas no servidas. Um bit do ISR Registo In-Service - ser activado de acordo com a interrupo activa. Quando a rotina de servio da interrupo terminar necessrio que seja dada uma instruo de fim de interrupo (EOI) no especfica. Isto ir fazer o reset (desactivao) do bit in-service mais alto. A instruo EOI dada escrevendo uma palavra de controlo de operao ao registo de comandos. Ao escrever-se uma palavra de controlo de inicializao especial tambm possvel programar o 8259 para inserir automaticamente o comando de fim de interrupo no especfico. Neste caso o ltimo bit in-service ir ser desactivado no ltimo pico do ltimo pulso INTA. 2. Prioridade Rotativa Igualitria: Este modo usado quando todos os dispositivos tm a mesma prioridade. Neste caso dada a prioridade menor interrupo que est a ser executada, aps se completar o seu tratamento. 3. Prioridade Rotativa Especfica: Se for colocada uma palavra de controlo especfica na EOI, pode determinar-se a estrutura de prioridades, aps se tratar a interrupo actual, na rotina de servio. Isto conseguido especificando a entrada de mais baixa prioridade como parte da palavra de controlo. A vantagem deste modo que a rotina de servio pode determinar as prioridades dependendo na execuo do programa em vez de um esquema de rotao fixo, o que confere maior flexibilidade ao programador. 4. Mscara Bsica: Permite ignorar qualquer interrupo colocando o bit respectivo em IMR (Registo de Mscaras de Interrupes) em 1. Esta interrupo ser ento ignorada em todos os modos. 5. Mscara Especial: Se estiver escolhido este modo e se a rotina de servio actual escrever um 1 no IMR (mascarar-se a si prpria) permitido atender uma interrupo de prioridade mais baixa (o que no acontece normalmente) bem como uma interrupo de mais alta prioridade. 6. Polled: no usada a sada INT. Vai dar prioridade s entradas IR0 a IR7 e fornece uma porta de estado que permite ser consultada (polled). O byte de estado da forma 1 X X X X W2 W1 W0 (em que o 1 inicial significa uma entrada activa e os trs ltimos bits - W2, W1 e W0 representam o cdigo binrio para o pedido em servio com prioridade mais alta). 3.7.5 Programao do 8259A Para se programar o 8259A so necessrias duas a quatro palavras de inicializao (ICWs). Estes bytes especificam o vector de endereo, seleccionam um Sistemas Digitais II 37

intervalo entre os endereos de 4 ou 8 bytes, identificam o modo simples ou em cascata, seleccionam o modo normal ou automtico de EOI e programam o tipo de trigger (disparo). Palavras de controlo de inicializao. Os significados de cada um dos bits de ICW1 a ICW4 esto representados no Apndice I a). Em todos os casos ICW1 e ICW2 tm de ser escritas. Estes bytes programam o endereo base que juntamente com o intervalo ir ser ligado ao Data Bus durante INTA. ICW3 deve ser escrita s quando se pretendem usar um ou mais PICs Escravos. ICW4 necessria para especificar um processador 8086 ou 8088, para activar o modo EOI automtico e o modo fully nested especial (para PICs em cascata) e seleccionar o modo de buffer para o escravo e mestre. Esta ltima seleco necessria quando so usados buffers de Data Bus entre o PIC e o Data Bus do sistema. Igualmente no Apndice I b) pode ser observado o diagrama de fluxos com os passos requeridos para a inicializao do 8259A. Palavras de controlo de operao. Os significados de cada um dos bits de OCW1 a OCW3 esto representados no Apndice II. As palavras de controlo de operao s so necessrias quando as condies por defeito (obtidas aps a inicializao) tm de ser alteradas e para dar o comando EOI no automtico no fim de cada rotina de servio. OCW1 controla as mscaras das interrupes (1s lgicos escritos em OCW1 far com que as interrupes seleccionadas sejam mascaradas e ignoradas pelo 8259A). Os modos de operao so seleccionados escrevendo em OCW2. Podem ser dados oito comandos geralmente no fim de cada rotina de servio de interrupo. Esse modos so: 1. EOI no especfico este comando deve ser usado no fim da rotina de servio quando se est a operar no modo fully nested. Desactiva o bit inservice da interrupo mais alta. Enquanto este bit est activo no so permitidas interrupes de prioridade igual ou menor. Este comando inserido automaticamente pelo 8259A se o bit D1 de ICW4 for 1. 2. EOI especfico usa-se este comando para forar um bit in-service especfico a ser desactivado. Este comando s dever ser utilizado quando o modo fully nested no estiver implementado. Os bits 0-2 seleccionam o bit in-service. 3. Rotao em EOI no especfico este comando deve ser dado quando todos os perifricos tm a mesma prioridade. Causa uma rotao automtica das prioridades, como explicado anteriormente. 4. Rotao no modo EOI automtico (set) este comando activa o modo Rotao em EOI no especfico. 5. Rotao no modo EOI automtico (clear) este comando desactiva o modo Rotao em EOI no especfico. 6. Rotao em EOI especfico este comando permite ao programador definir qual a prioridade mais baixa no modo de rotao. Por exemplo, se programarmos IR4 como o dispositivo com prioridade mais baixa ento IR5 ter a prioridade mais alta. 7. Definio de prioridades este comando altera a prioridade definindo o dispositivo com prioridade mais baixa. 8. Nenhuma operao. A OCW3 usada para activar o IRR ou o IRS para uma subsequente operao de leitura.

Sistemas Digitais II

38

4. Perifricos
4.1 Interface de Portas Programvel 8255 O 8255 um dispositivo de interface para Entradas/Sadas (I/O) de um modo geral, com 24 linhas organizadas como 3 portas I/O de 8 bits denominadas A, B e C. Estes bits no podem ser programados como Sadas ou Entradas; em vez disso os bits das portas A e B funcionam como um byte, enquanto que na porta C pode-se programar os 4 bits mais altos e os 4 mais baixos (em dois nibbles 4 bits) separadamente. O 8255 pode ser operar em trs modos: Modo 0: trs portas I/O simples Modo 1: duas portas I/O handshaking Modo 2: porta I/O bidireccional com cinco sinais de handshaking Os modos podem ser misturados. Por exemplo, a porta A pode ser programada para funcionar no modo 2, enquanto que a porta B pode ser programada para funcionar no modo 0. Existe, tambm, um modo de bit set/reset que permite aos bits individuais da porta C serem activados (set) ou desactivados (reset) para fins de controlo. 4.1.1 Interface do 8255 O diagrama de blocos do 8255 encontra-se representado na Fig. 4.1.

Fig. 4.1 Observando o diagrama de blocos do 8255 de salientar o barramento de dados bidireccional. Todas as comunicaes com a PPI (Interface de Portas Programvel) ocorrem atravs destas oito linhas. De facto para o microprocessador o 8255 aparenta ser quatro localizaes de I/O correspondentes aos endereos das linhas de entrada A0 e A1. O endereo especfico controlado pela entrada CS. S quando esta entrada estiver a 0 que o 8255 se encontra operacional. Na Tabela 4.1 encontram-se as operaes de leitura e escrita possveis com o 8255. Quando RD for 0 pode se ler qualquer das portas de informao, aplicando a combinao apropriada de A0 e A1. Quando A0 e A1 forem Sistemas Digitais II 39

ambas 1 tem-se acesso porta de controlo. Este um registo especial do 8255 que controla o modo de operao do dispositivo. de notar que este registo s pode ser escrito. Quando a PPI no est acessvel as ligaes do barramento de dados esto num estado de alta impedncia e o processador est livre para comunicar com qualquer outro dispositivo do sistema. A1 0 0 1 0 0 1 1 X 1 X A0 0 1 0 0 1 0 1 X 1 X RD 0 0 0 1 1 1 1 X 0 1 WR 1 1 1 0 0 0 0 X 1 1 CS 0 0 0 0 0 0 0 1 0 0 Operao de Entrada (LEITURA) Porta A Barramento de Dados Porta B Barramento de Dados Porta C Barramento de Dados Operao de Sada (ESCRITA) Barramento de Dados Porta A Barramento de Dados Porta B Barramento de Dados Porta C Barramento de Dados Controlo Funo de Desactivao Barramento de Dados Alta Imp. Condio Ilegal Barramento de Dados Alta Imp.

Tabela 4.1 4.1.2 Modos de operao Quando a PPI j estiver a fazer de interface ao CPU necessrio seleccionar um modo de operao. Tal como j foi dito possvel operar em trs modos mais o modo de bit set/reset. Vai-se em seguida ver o funcionamento de cada um desses modos. Basta escrever nica uma palavra de controlo na porta de controlo para determinar o modo de operao. A Fig. 4.2 mostra os dois tipos de palavras de controlo possveis. Quando o bit 7 da palavra de controlo 0 selecciona-se o modo bit set/reset a); se for 1 pode se escolher qualquer um dos trs modos das portas b).

Sistemas Digitais II

40

Fig. 4.2 Estudando a Fig. 4.2 pode se verificar que as trs portas esto divididas em dois grupos para a seleco do modo. A porta A e os bits mais altos da porta C podem ser programados para qualquer um dos modos 0 a 2. A porta B e os bits mais baixos da porta C s podem ser programados para operar nos modos 0 ou 1. Modo 0: I/O Bsicas Este modo deve ser seleccionado quando se pretende operar com I/O incondicional e til quando se pode assumir que o dispositivo de I/O est sempre pronto e quando no so necessrios sinais de handshaking. Modo 1: I/O estroboscpicas Usa-se este modo quando se lida com interfaces I/O de interrupes e de handshaking. Neste modo as portas A e B so programadas como portas de informao e a porta C programada para transportar sinais de estado. Uma das caractersticas nicas deste modo que se podem efectuar transferncias de informao sem interveno directa do CPU. Existem quatro configuraes possveis quando se est a operar no modo 1 e correspondem s quatro combinaes das portas A e B como entradas e sadas. Timing da porta de entrada Sistemas Digitais II 41

Quando a porta A ou B est programada como porta de entrada, existem trs sinais de controlo que so dedicados a suportar transferncias de informao nesta porta. Esses sinais so IBF, STB e INTR. O significado destes sinais est na Tabela 4.2 e a Fig. 4.3 mostra o timing. Sinal IBF Direco FORA Descrio Um 1 nesta sada indica que a informao foi carregada para o latch de entrada; basicamente um sinal de reconhecimento IBF activado pelo flanco descendente de STB e reactivado pelo flanco ascendente da entrada RD. Um 0 nesta entrada carrega a informao para a entrada de latch. Um 1 nesta sada pode ser usado para interromper o CPU quando um dispositivo de entrada pede servio. INTR activado pelo flanco ascendente de STB se IBF for 1 e INTE for 1. Este procedimento permite a um dispositivo de entrada pedir servio do CPU simplesmente fazendo um strobe da sua informao na porta. INTE A controlado pelo bit set/reset PC4 e INTE B controlado pelo bit set/reset PC2. Tabela 4.2

STB INTR

DENTRO FORA

Fig. 4.3 Quando o perifrico tem informao para o microprocessador coloca-a nas linhas de entrada da porta A ou B e envia um impulso para o 8255 na entrada STB. A PPI responde guardando esta informao e pondo a sua sada IBF a 1. Isto um sinal para o perifrico indicando que a informao foi guardada mas ainda no foi lida pelo processador. Se o bit de INTE (INTerrupts Enabled) foi activado, IBF ir igualmente fazer com que a sada INTR fique 1. O processador agora tem a possibilidade de eleger a linha IBF lendo a sua palavra de estado no modo 1 ou deixar INTR gerar uma interrupo alertando, deste modo, o processador que o buffer de entrada est cheio. Em qualquer dos casos o processador deve saltar para uma rotina que leia a informao da porta. O flanco descendente de RD faz com que a sada INTR do 8255 seja desactivada (reset) e o flanco ascendente de RD desactiva (reset) IBF. A Sistemas Digitais II 42

transferncia de informao est, agora, completa e o perifrico (monitorando IBF) pode fazer o strobe do prximo byte de informao. Timing da porta de sada Quando as portas A ou B esto programada como portas de sada no modo 1, existem trs linhas da porta C que so dedicadas a suportar esta funo. Essas linhas so OBF, ACK e INTR. O seu significado est na Tabela 4.3 e a Fig. 4.4 mostra o timing. Sinal OBF Direco FORA Descrio A sada OBF ser 1 para indicar que o CPU escreveu informao na porta especificada. O flip-flop de OBF ser activado (set) pelo flanco ascendente da entrada WR e desactivado (reset) pelo flanco descendente do sinal de entrada ACK. Um 0 nesta entrada informa o 8255 que a informao da porta A ou da porta B foi aceite. Basicamente uma resposta do dispositivo perifrico indicando que j recebeu a informao de sada do CPU. Um 1 nesta sada pode ser usado para interromper o CPU quando um dispositivo de sada recebeu informao transmitida pelo CPU. INTR activado pelo flanco ascendente de ACK se OBF for 0 e INTE for 1. desactivado (reset) pelo flanco descendente de WR. INTE A controlado pelo bit set/reset PC6 e INTE B controlado pelo bit set/reset PC2. Tabela 4.3 Assumindo que existe informao escrita previamente numa das portas de informao, o perifrico monitoriza OBF (output buffer full). Quando esta linha for 0 existe informao pronta para ser lida pelo perifrico. Usando OBF como uma entrada STROBE, o perifrico guarda o byte de informao e responde com um pulso ACK. O flanco descendente deste pulso desactiva OBF e se INTE for 1 o flanco ascendente faz com que INTR tambm seja 1. Tambm neste caso o CPU tem a oportunidade de eleger a linha OBF ao ler a palavra de controlo no modo 1 ou permitir que INTR alerte o CPU que OBF est em 1 e que o perifrico est pronto para ler mais informao. Em qualquer dos casos o processador deve escrever um novo byte de informao na porta de sada. O flanco descendente de WR ir desactivar INTR e o flanco ascendente de WR ir forar OBF a ser 0. O perifrico, monitorando OBF, pode fixar o novo byte de informao e o ciclo repete-se.

ACK

DENTRO

INTR

FORA

Sistemas Digitais II

43

Fig. 4.4 Modo 2: I/O estroboscpica bidireccional Quando se opera no modo 2, a porta A do 8255 torna-se uma porta bidireccional de informao suportada pelos cinco sinais de handshaking. Os sinais de handshaking so idnticos aos fornecidos no modo 1 excepto que agora so referidos unicamente porta A. Este modo particular de operao til quando se transfere informao entre dois computadores. Quando a porta A programada para operar no modo 2, a porta B pode operar no modo 0 ou no modo 1. Se programada no modo 0, PC0-PC2 podem ser programados como entradas ou sadas em modo 0. Se a porta B for programada no modo 1, ento PC0-PC2 tornam-se sinais de handshaking para esta porta. Timing da porta de entrada A Fig. 4.5 um diagrama temporal ilustrando a sequncia de eventos enquanto um byte de informao transferido para o 8255 pelo perifrico e posteriormente do 8255 para o perifrico. Os nmeros no diagrama so de seguida explicados. 1. 2. 3. 4. fornecida informao pelo perifrico. O perifrico aplica um pulso STB ao 8255. Quando a informao guardada, IBF vai a 1. Aps STB retornar 1 com IBF ainda activo, INTR vai a 1, pedindo uma interrupo se esta caracterstica for usada. 5. Agora podem-se usar polling ou interrupes para servir o perifrico. O buffer do 8255 lido quando RD for a 0. 6. O flanco descendente de RD desactiva INTR. 7. O flanco ascendente de RD desactiva IBF.

Sistemas Digitais II

44

Fig. 4.5

Timing da porta de sada A prxima sequncia ocorre quando o processador coloca um byte de informao para o perifrico atravs do 8255. 8. A informao enviada pelo processador e guardada pelo 8255 ( de notar que o perifrico nesta altura tem uma impedncia de alto-estado). 9. O flanco ascendente de WR faz com que OBF mude para 0 (o buffer de sada est cheio). 10. O perifrico reconhece OBF fazendo com ACK ir a 0. 11. No flanco descendente de ACK o 8255 liberta a sua informao no barramento. 12. OBF retorna a 1 (o buffer de sada est vazio). 13. O flanco ascendente de ACK activa INTR, pedindo uma interrupo se esta caracterstica for usada. 14. Agora podem-se usar polling ou interrupes para escrever o prximo byte de informao no 8255. Um ponto que no deve ser esquecido relativamente operao no modo 2 que s est disponvel uma sada de INTR. Isto levanta a questo de como que o processador pode determinar se a interrupo requer que seja lida ou escrita a informao isto , quem pediu a interrupo? H duas solues possveis. O polling pode ser usado quando h vrios pedidos de interrupo partilhando a mesma linha de entrada. A palavra de estado no modo 2 mostrada na Fig. 4.6. Com esta tcnica a rotina de servio de interrupo (ISR) pode eleger a porta C testando IBFA e OBFA. De seguida o controlo transferido para a rotina apropriada.

Sistemas Digitais II

45

D7 OBFA

D6 INTE1

D5 IBFA

D4 INTE2

D3 INTRA

D2 X

D1 X

D0 X

Grupo A

Grupo B (definido pela seleco do modo 0 ou modo 1).

Fig. 4.6 Tambm possvel uma soluo de hardware. O pedido de interrupo pode ser combinado com OBF ou IBF para gerar duas interrupes separadas. Estas podiam ser ligadas a um PIC (Controlador de Prioridades de Interrupes) que podia ser usado para instrues de restart nicas. de notar que se podem mascarar interrupes geradas por IBF ou OBF. Isto feito desactivando INTE1 ou INTE2 com uma operao de desactivao de bit (bit reset). PC6 corresponde a INTE1 e PC4 a INTE2. Os mesmos bits devem ser activados que se quiser activar as interrupes. Modo bit set/reset Quando o bit 7 da palavra de controlo 0 est activo o modo bit set/reset. Neste modo qualquer um dos bits da porta C pode ser activado (set) num 1 lgico ou desactivado (reset) num 0 lgico. de notar que s se pode activar ou desactivar um bit de cada vez. Pode se tirar vantagem desta caracterstica para gerar sinais de strobe. 4.2 UART e USART Existem protocolos que definem certas regras que devem ser seguidas para ajudar a fazer com que as tcnicas de comunicao se tornem standard. Um exemplo disto a adopo de um bit 0 de incio e um bit 1 de paragem. Tambm h vrias taxas de informao (baud rates) que se tornam standard. Quando se prepara uma porta srie devem ser especificados vrios parmetros, sendo os mais comuns o nmero de bits por caracter (geralmente entre cinco e oito), o nmero de bits de paragem (um ou dois), o bit de paridade usado para a deteco de erros simples (paridade par ou mpar ou sem paridade) e a taxa de dbito. 4.2.1 UART UART so as iniciais de Receptor - Transmissor Universal Assncrono. Apesar da recepo e de transmisso de informao em srie poder ser feita atravs de software, os programas que podem adaptar os vrios protocolos podem tornar-se muito longos e tediosos. Geralmente empatam o processador em ciclos temporais, misturando bits de informao e geralmente requerem tempo que pode de outro modo ser utilizado mais eficientemente. Por esta razo as companhias criaram o chip UART. A Fig. 4.7 representa o diagrama de blocos de uma UART vulgar de segunda gerao: a AY-5-1013 da General Instruments. Este chip fornece um transmissor e um receptor independente e separado de informao em srie. Os dois relgios de entrada (16X CLOCK) determinam a taxa de dbito e devem ser escolhidos 16 vezes maiores que a taxa de informao (data rate) Sistemas Digitais II 46

pretendida. Por exemplo, se o transmissor operar a 300 baud, o pino do relgio deve receber uma onda quadrada de 4800 Hz. Ao dividir cada tempo de bit em 16 perodos de tempo, a UART capaz de localizar o centro de cada bit de informao com mais preciso. Existem algumas UARTs que permitem que o relgio seja 32 ou 64 vezes a taxa de informao. de notar que por causa dos circuitos separados do receptor e do transmissor, pode ocorrer operao full-duplex. Isto seria dificilmente alcanado com a UART em software.

Fig. 4.7 Chamou-se ao AY-5-1013 um componente de segunda gerao pois combina o receptor e o transmissor num nico chip. Contudo, ao contrrios dos componentes de terceira gerao, tem de se ligar electricamente todas as suas funes de controlo, isto , no podem ser programadas directamente pelo microprocessador. Podem-se seleccionar as seguintes funes: 1. Palavra de informao (data word) DW1, DW2: permitem cinco a oito bits por palavra de informao 2. Seleco de paridade PS: paridade par ou mpar 3. Bits de paragem SB: um ou dois Sistemas Digitais II 47

4. Sem paridade NP: sem bit de paridade. Adicionalmente a estas funes de controlo, podem-se monitorar trs bits de estado: 1. Buffer do transmissor vazio - TBE: o transmissor est pronto para um novo caracter 2. Informao do receptor prontos - RDR: o receptor tem um caracter para ser lido 3. Fim de transmisso EOT: no est a ser transmitido qualquer caracter. H outros trs sinais que so fornecidos e que indicam condies de erro: 1. Erro de frame - FE: no foi recebido o bit de paragem 2. Erro de paridade PE: a paridade da palavra recebida est incorrecta 3. Erro de overrun OR: o novo caracter recebido foi escrito por cima do anterior. Analise-se a Fig. 4.8 (um exemplo de como se pode fazer a interface da AY-51013 numa arquitectura de sistemas) e considere-se a sequncia de eventos enquanto um caracter transmitido e recebido para uma melhor compreenso. 1. A palavra de estado (RDR, TBE, PE, FE ou OR) colocada em alta impedncia pela UART e activada a entrada STATUS WORD INPUT. Neste circuito a porta de entrada F1H a porta de estado. 2. O microprocessador monitoriza a porta F1H e testa o bit 1, TBE. Se for 1, ento est a ser escrito um byte de informao no transmissor na porta de sada F0H. O OUT F0H DSP (DATA STROBE) faz com que o byte de informao seja guardado e inicia a transmisso. 3. A UART insere automaticamente o bit de incio, os 8 bits de informao, um bit de paridade par e dois bits de paragem. A taxa de informao ser 1/16 da taxa do relgio. 4. Como a UART tem um buffer duplo, o TBE volta a 1 quando se envia o bit de incio, indicando que se pode carregar um novo byte de informao (contudo, no ser transmitido at o primeiro estar completo). 5. O microprocessador testa um caracter recebido lendo a sua porta de estado, neste caso F1H. Se RDR for 1 o receptor est a guardar o novo byte de informao. 6. As sadas do receptor no so colocadas em alta impedncia pelo AY-5-1013 e assim sendo deve ser construda uma porta de entrada usando um buffer 74LS244. de notar que o IN F0 DSP activa este buffer e faz o reset de RDR (isto evita a condio de overrun).

Sistemas Digitais II

48

Fig. 4.8 O software que controla a interface da UART pode igualmente testar as trs flags de erro enquanto espera que TBE e RDR estejam prontos. Contudo, em muitos casos, estas linhas so ignoradas. A caracterstica interessante da UART que, para o microprocessador, a transferncia de informao aparenta ser feita em paralelo. Ele escreve simplesmente um byte para a sada do transmissor e l um byte da porta de entrada do receptor. A UART que se encarrega de colocar a informao em srie, inserir os bits de incio, paragem e paridade, bem como de controlar a taxa de informao. Sistemas Digitais II 49

Geralmente controla-se a UART com uma simples rotina de polling, mas tambm se podem usar interrupes e DMA. Estas duas ltimas opes podem ser boas escolhas devido ao relativamente longo perodo de tempo entre sinais prontos. 4.2.2 USART USART so as iniciais de Receptor - Transmissor Universal Sncrono/Assncrono. Como exemplo de uma USART vai-se estudar o 8251A da Intel. Sendo um componente de terceira gerao, o 8251 pode ser programado pelo microprocessador para comunicaes em srie sncronas ou assncronas. Igualmente sob o controlo de programa esto o nmero de bits por palavra de informao, o nmero de bits de paragem e a escolha de paridade. Quando est a operar no modo sncrono cada frame precedida por um ou dois caracteres de sincronizao, conforme especificado. Estes caracteres sero inseridos automaticamente pelo transmissor e procurados pelo receptor quando no modo de caa (hunt). Todos os sinais de estado podem monitorados atravs de uma porta de entrada de 8 bits. So igualmente fornecidas flags para erros de paridade, de framing e overrun. Interface do 8251A A Fig. 4.9 representa o diagrama de blocos do 8251A.

Fig. 4.9

Sistemas Digitais II

50

A Fig. 4.10 mostra uma interface tpica.

Fig. 4.10 Como costume nos dispositivos de I/O da Intel a entrada CS tem de ser 0 para que o dispositivo seja seleccionado. A entrada C/D selecciona as funes de controlo ou as funes de informao da USART, tal como indicado na Tabela 4.4. C/D 0 0 1 1 RD 0 1 0 1 WR 1 0 1 0 Funo L uma palavra de informao Escreve uma palavra de informao L a palavra de estado Escreve a palavra de estado Tabela 4.4 A entrada CLK no est relacionada com relgios de taxa baud mas precisa para o timing interno. Deve ter uma frequncia pelo menos 30 vezes maior que a taxa de informao. Para 19,2 baud d 576 kHz. Sistemas Digitais II 51

A Fig. 4.10 mostra duas entradas de relgios de taxa baud, TC e RC ligados em conjunto. Isto far com que o receptor e o transmissor operem mesma taxa de informao tal como normalmente desejado. Sob o controlo de programa os relgios podem ser escolhidos como 1, 16 ou 64 vezes a taxa de informao. Isto permite que a taxa baud variar sem mudar a frequncia do relgio. O bloco assinalado como baud rate generator na Fig. 4.10 pode ser implementado como uma das trs maneiras: 1. Oscilador TTL: este tipo de circuito requer trs inversores 74LS01e um cristal. Apesar de ser uma soluo muito simples tem como principal desvantagem o facto de no se poder alterar a frequncia sem alterar o tempo de base do cristal. 2. Oscilador PIT: j foi discutido um PIT: o 8254. Este PIT fornece uma soluo agradvel para o problema da taxa de baud do relgio agradvel pois podem ser programadas vrias taxas de baud alterando a contagem inicial no registo PIT programado como gerador de onda quadrada. 3. Gerador externo de taxa baud: existe o Motorola MC14411 que fornece 14 relgios de taxas de baud diferentes que podem ser ligadas s entradas de relgio da USART. Ainda acerca da Fig. 4.10, pode se observar que o 8251A fornece quatro sinais de estado para controlo externo. Todos estes sinais podem igualmente ser monitorizados internamente atravs da porta de estado. TE indica que o buffer do transmissor est vazio e que no esto a ser transmitidos quaisquer caracteres. TRDY e RRDY indicam uma condio de prontos para o transmissor e para o receptor. Devem ser usados para pedir uma interrupo ou para iniciar uma transferncia DMA. Tambm podem ser testados fazendo polling da porta de estado interna. SYNDET/BD um sinal que vai a 1 quando se est a operar no modo sncrono e foi detectado o caracter de sincronizao. Repare-se que este pino tambm pode ser programado como entrada, sendo, neste caso, usado para fornecer o sinal de sincronizao externamente. Quando se est a operar no modo assncrono, SYNDET/BD uma sada que fica 1 para indicar uma condio de quebra. O caracter de quebra um 0 lgico constante normalmente enviado pelo receptor ao transmissor para suspender a transmisso (talvez devido a uma condio de erro). Tambm so fornecidos quatro sinais de modem: DTR e RTS, ambos sadas, e DSR e CTS, ambos entradas. Estes sinais destinam-se a aplicaes com handshaking. Repare-se que CTS deve ser 0 para permitir a funo de transmisso no 8251A. A entrada DSR de fim geral e pode ser monitorizada atravs da palavra de estado. Programao do 8251A no modo Assncrono Quando se programa o 8251A no modo assncrono deve se seguir a seguinte sequncia: 1. Fazer o reset (interna ou externamente) 2. Instruo do modo (especificar o modo assncrono) 3. Instruo de comando.

Sistemas Digitais II

52

O Apndice III descreve a forma das instrues de modo e de comando. Deve ser usado um comando de reset para comear a sequncia de inicializao. O prximo comando, apenas, ser interpretado como uma instruo do modo. Aps a instruo do modo estar escrita, todas as escritas futuras sero interpretadas como instrues de comando. A nica maneira de retornar instruo do modo aplicar um pulso de reset ou escrever uma palavra de comando com o bit 6 em 1. Apesar de a maior parte das aplicaes usar o 8251A num modo de polling, tambm se podem usar interrupes e DMA. Num ambiente de interrupes TRDY e RRDY podem ser usados para iniciar o pedido de interrupo. Se isto for feito, reparese que o pino de sada TRDY pode ser mascarado fazendo com que a entrada CTS seja 1 ou dando o comando transmit enable inactive command. Se for usada DMA TRDY ligada entrada DREQ do dispositivo de DMA. Muitas vezes associam-se as interrupes e a DMA com transferncias de alta velocidade e aparentemente seriam incompatveis com as taxas de informao lentas geralmente associadas com tcnicas de I/O em srie. Contudo, existem boas razes para se usar DMA ou interrupes para controlar uma porta srie. A taxa de informao inerentemente baixa da porta srie significa que o polling ser um desperdcio muito grande dos recursos do microprocessador. Usando interrupes ou DMA, pode se transferir informao para a porta s quando necessrio, dando deste modo tempo considervel ao processador entre transferncias de informao. Programao do 8251A no modo sncrono Quando se programa o 8251A no modo sncrono deve se seguir a seguinte sequncia: 1. Fazer o reset (interna ou externamente) 2. Instruo do modo (especificar o modo sncrono e o nmero de caracteres de sincronizao) 3. Um ou dois caracteres de sincronizao 4. Instruo de comando. Tal como no modo assncrono, a instruo do modo s pode ser escrita imediatamente aps um reset. A seguir a esta instruo a USART espera um ou dois caracteres de sincronizao. As escritas seguintes sero interpretadas como instrues de comando. No Apndice IV encontra-se o formato para a instruo do modo quando a USART operada no modo sncrono. A instruo de comando no muda relativamente ao modo assncrono. Depois de se programar a USART para o modo sncrono, a linha de sada srie ir a 1 at CTS ser 0. Nesta altura o contedo do buffer do transmissor ir ser colocado em srie e enviado. Normalmente isto sero um ou dois caracteres de sincronizao. Elegendo TRDY, o processador pode agora enviar a informao a ser transmitida. Se o buffer do transmissor ficar vazio a qualquer altura, os caracteres SYNC sero inseridos automaticamente. Tal ilustrado na Fig. 4.11.

Sistemas Digitais II

53

Fig. 4.11 Repare-se que transmitido um bit por cada pulso do relgio de taxa baud (ou seja, no modo sncrono no se aplicam as opes de relgio 16 e 64). Quando est a receber informao a instruo de comando dever especificar enter hunt mode. A USART ir, ento, testar a informao vinda aps receber cada bit para uma comparao com o caracter de sincronizao. Quando a comparao coincide SYNDET/BD ir a 1, indicando sincronizao de caracter. Agora pode se ler informao elegendo RRDY. 4.3 Teclado 4.3.1 Tipos de teclado Quando se pressiona uma tecla no computador est se a activar um interruptor. Existem vrias maneiras de fazer esses interruptores. De seguida daremos uma vista de olhos na construo e no funcionamento de alguns desses interruptores. Interruptores de teclas mecnicos Neste tipo de interruptores, quando se pressiona a tecla, unem-se duas peas de metal. Os elementos do interruptor so na realidade feitos de uma liga de fsforo e bronze com chapas douradas nas reas de contacto. O interruptor da tecla normalmente contem uma mola para fazer a tecla voltar posio de no presso e talvez um pequeno pedao de espuma para ajudar a enfraquecer uma sada abrupta. Alguns interruptores de teclas mecnicos actualmente consistem numa cpula moldada em silicone com uma pequena pea de borracha condutora no lado de baixo. Quando se pressiona uma tecla a espuma da borracha curto-circuita duas pistas na placa de circuito impresso para produzir o sinal de tecla pressionada. Os interruptores mecnicos so relativamente baratos, mas tm srias desvantagens. Em primeiro lugar, sofrem de ressalto do contacto. Uma tecla premida pode estabelecer e cortar o contacto vrias vezes antes de estabelecer um contacto slido. Em segundo lugar, os contactos podem oxidar ou ficar gastos ou sujos com a idade e deixar de fazer uma ligao fivel. Os interruptores mecnicos de melhor qualidade tm geralmente uma durao de 1 milho de golpes. Os de tipo de cpula de silicone duram normalmente 25 milhes de golpes.

Sistemas Digitais II

54

Fig. 4.12 Interruptores de teclas de membrana Estes interruptores so na realidade um tipo especial de interruptores mecnicos. Consistem numa sanduche de trs camadas de plstico ou borracha, tal como mostrado na Fig. 4.12a). A camada do topo tem uma linha condutora de tinta de prata correndo debaixo de cada linha de teclas. A camada do meio tem um buraco debaixo de posio de tecla. A camada de baixo tem uma linha condutora de tinta de prata correndo debaixo de cada coluna de teclas. Quando se pressiona uma tecla, empurra-se a linha de tinta do topo atravs do buraco para estabelecer contacto com a linha de tinta de baixo. A vantagem dos teclados de membrana que podem ser construdas unidades muito finas e seladas. So normalmente usados em caixas registadoras em restaurantes de fastfood, em instrumentos mdicos e em outras aplicaes com confuso. A durao destes teclados varia numa vasta gama de valores. Interruptores de teclas capacitivos Tal como mostrado na Fig. 4.12b), um interruptor de tecla capacitivo tem duas pequenas chapas de metal no fundo de uma pea de espuma. Quando se pressiona a tecla a parte mvel encostada chapa fixa. Isto altera a capacidade entre as duas chapas fixas. Um circuito sensor amplificado detecta esta alterao na capacidade e produz um sinal de nvel lgico (0 ou 1) indicando que a tecla est a ser pressionada. A grande vantagem deste tipo de interruptores que no tm contactos mecnicos capazes de oxidar ou ficarem gastos ou sujos. Uma pequena desvantagem que necessrio um circuito especializado para detectar a mudana na capacidade. Este tipo de interruptores de teclas normalmente tem a durao de 20 milhes de golpes. Interruptores de teclas de efeito de corredor Sistemas Digitais II 55

Este outro tipo de interruptor sem contactos mecnicos. Aproveita-se do efeito de deflexo de uma carga mvel por campo magntico. A Fig. 4.12c) mostra o seu funcionamento. Um cristal semicondutor atravessado por uma corrente de referncia entre duas faces opostas. Quando uma tecla pressionada, o cristal desloca-se por um campo magntico que tem as suas linhas de fluxo perpendiculares direco do fluxo de corrente no cristal. O deslocamento do cristal atravs do campo magntico causa o desenvolvimento de uma pequena diferena de tenso entre duas das outras faces opostas do cristal. Esta diferena de tenso amplificada e utilizada para indicar que uma tecla foi pressionada. Este tipo de interruptores de teclas so mais caros por causa dos mecanismos de interrupo mais complexos e tm uma durao mdia de 100 milhes de golpes ou mais. 4.3.2 Ligaes de circuito e interface de um teclado Na maioria dos teclados, os interruptores de teclas so ligados numa matriz de linhas e colunas como mostrado na Fig. 4.13.

Fig. 4.13 Para os exemplos aqui ilustrados s iro ser usados interruptores mecnicos, mas o princpio o mesmo para os outros tipos de interruptores. Obter dados significativos dum teclado destes so requeridas as seguintes trs tarefas: 1. Detectar o pressionar de uma tecla 2. Libertar a tecla pressionada 3. Codificar a tecla pressionada (produzir um cdigo standard para a tecla pressionada) As trs tarefas podem ser efectuadas atravs de software, hardware ou uma combinao dos dois tipos, dependendo da aplicao. Vai se comear por mostrar como podem ser feitas atravs de software, como pode ser feito num microprocessador baseado numa escala de mercearia onde pode ocorrer que uma tecla no seja premida Sistemas Digitais II 56

durante muito tempo. Posteriormente sero descritos alguns dispositivos de hardware que efectuam essas tarefas. 4.3.3 Interface em software do teclado A Fig. 4.13 mostra como que um teclado hexadecimal pode ser ligado a um par de portas do micro-computador de modo a que as trs tarefas de interface possam ser feitas como parte dum programa. As linhas da matriz so ligadas a quatro linhas da porta de sada. As linhas das colunas da matriz so ligadas a quatro linhas da porta de entrada. Para tornar o programa mais simples, as linhas das linhas da matriz tambm so ligadas a quatro linhas de entrada. Quando no h teclas a ser pressionadas, as linhas das colunas so mantidas a 1 pelas resistncias de pull-up ligadas a +5 V. Ao pressionar uma tecla liga-se uma linha da matriz a uma coluna. Se for colocado um 0 na sada de uma linha e uma tecla dessa linha for premida, ento o 0 ir aparecer na coluna que contem a tecla e pode ser detectado na porta de entrada. Se forem conhecidas a linha e a coluna de tecla premida e ento sabe-se qual a tecla que foi premida e pode se converter esta informao para um cdigo qualquer em que se queira representar essa tecla. A Fig. 4.13 representa um fluxograma de um procedimento que detecta, liberta e produz o cdigo hexadecimal para a tecla premida. Uma maneira fcil de detectar se qualquer tecla foi premida enviar 0 para todas as linhas e verificar as colunas para ver se uma tecla premida ligou um 0 a uma coluna. No algoritmo da Fig. 4.14, primeiro envia-se 0 para todas as linhas e verifica-se as colunas repetidamente at que todas as colunas sejam 1. Isto feito para assegurar que uma tecla foi previamente libertada antes de se olhar para a prxima. Quando as colunas forem todas 1, o programa entra noutro ciclo, que espera at que aparea um 0 numa das colunas, indicando que uma tecla foi premida. Este segundo ciclo faz a tarefa de deteco. Um procedimento simples de atraso de 20 ms faz a tarefa de libertao da tecla. Aps o tempo de libertao, feita uma nova verificao para ver se a tecla continua premida. Se agora as colunas forem todas 1, ento no h qualquer tecla a ser premida e a deteco inicial foi causada por um pulso de rudo. Se qualquer uma das colunas continuar em 0, ento assume-se que uma tecla foi premida. A tarefa final determinar a linha e a coluna da tecla premida e converter esta informao num cdigo hexadecimal. Para obter a informao da linha e da coluna enviado um 0 para uma linha e so lidas todas as colunas. Se nenhuma das colunas for 0 ento a tecla premida no est naquela linha e o 0 rodado para a prxima linha e verificam-se novamente as colunas. O processo repetido at que um 0 numa linha produza um 0 numa coluna. 4.3.4 Interface em hardware do teclado Em circuitos em que o CPU esteja demasiado ocupado para efectuar as tarefas anteriormente descritas em software, pode ser usado um dispositivo externo para as fazer. Um exemplo de um dispositivo MOS que faa estas tarefas AY5-2376 da General Instruments, que pode ser ligado s linhas e colunas da matriz de interruptores do teclado. O AY5-2376 detecta independentemente o premir de uma tecla, colocando, ciclicamente, as linhas a 0 e verificando as colunas tal como foi feito com software. Quando detecta a presso de uma tecla, espera um tempo de libertao. Se a uma tecla continuar premida aps o tempo de libertao, o AY5-2376 produz um cdigo de 8 bits Sistemas Digitais II 57

e envia para, por exemplo, uma porta de oito linhas paralelas do micro-computador. Para fazer com que o micro-computador saiba que h um cdigo ASCII vlido nas linhas de dados, o AY5-2376 envia um pulso estroboscpico. O micro-computador pode detectar este pulso e ler o cdigo ASCII atravs de polling ou atravs de interrupo. Com a interrupo o micro-computador no tem de prestar ateno ao teclado at receber um sinal de interrupo, por isso este mtodo usa muito pouco do tempo do micro-computador. O AY5-2376 tem uma caracterstica chamada two-key rollover, o que significa que se duas teclas forem premidas no tempo muito prximas uma da outra, cada uma delas ser detectada, libertada e convertida para ASCII. Hoje em dia muitos computadores e terminais usam teclados separados com codificadores incorporados. Em vez de usarem um dispositivo de codificao como o AY5-2376, usam um microprocessador dedicado.

Sistemas Digitais II

58

Fig. 4.14 4.4 Display Para dar indicaes ou valores de dados aos utilizadores, muitos instrumentos e mquinas controlados por microprocessadores precisam de mostrar letras do alfabeto e nmeros. Em sistemas que necessitam de mostrar grandes quantidades de informao normalmente usado um CRT (Cathode Ray-Tube). Em sistemas onde s necessrio Sistemas Digitais II 59

mostrar pequenas quantidades de informao so usados displays do tipo dgito-nico (simple digit-type). H vrias tecnologias usadas para fazer estes displays digit-oriented, mas s se vai estudar as duas mais importantes: LEDs (Light Emiting Diodes) e LCDs (Liquid-Crystal Displays ). Os LCDs consomem muito pouca energia, por isso so muito usados em aparelhos portteis alimentados a baterias. Contudo, os LCDs no emitem a sua prpria luz: eles simplesmente mudam a reflexo da luz disponvel. Assim sendo, para um aparelho que tenha de ser utilizado em condies de pouca luz, tem de se incluir uma fonte de luz para os LCDs ou usar LEDs, que emitem a sua prpria luz.

b)
a) b) c)

Fig. 4.15

4.4.1 Interface de LEDs com micro-computadores Existem displays alfa-numricos de LEDs disponveis em trs formatos: para mostrar unicamente nmeros e letras hexadecimais, so usados displays de 7 segmentos como o mostrado na Fig. 4.15a); para mostrar nmeros e todo o alfabeto, so usados displays de 18 segmentos como o mostrado na Fig. 4.15b) ou ento usar displays de matriz de 5 por 7 pontos como na Fig. 4.15c). O display tipo 7 segmentos o mais usado, mais barato e mais fcil de fazer interface, por isso vai se concentrar no seu estudo e mais tarde sero indicadas as alteraes necessrias para fazer a interface com os outros tipos. Ligao directa dos displays LEDs A Fig. 4.16 mostra um circuito que pode ser ligado a uma porta paralela num micro-computador para guiar um nico display de 7 segmentos em. Para um display em nodo-comum, um segmento activado aplicando-lhe um 0 lgico. O 7447 converte um cdigo BCD aplicado nas suas entradas no padro de 0 requerido para indicar o nmero representado pelo cdigo BCD. Esta ligao de circuito chamada display esttico porque a corrente atravessa sempre o display.

Sistemas Digitais II

60

Fig. 4.16 Displays LEDs multiplexados por software O circuito da Fig. 4.16 funciona bem para conduzir s um ou dois dgitos LED com uma porta paralela de sada. Contudo, este esquema tem vrios problemas se se pretender, por exemplo, oito dgitos. O primeiro problema o consumo de energia. Para clculos em pior caso, assuma-se que todos os oito dgitos esto a indicar o dgito 8, ou seja, esto acesos todos os segmentos. Em casos tpicos cada segmento consome 20 mA, o que d um total de 140 mA por dgito, perfazendo um total de 1,12 A para os oito dgitos! Um segundo problema desta tcnica que cada display para um dgito requer um descodificador 7447 separado, cada um utilizando, talvez outros 13 mA (o consumo tpico de um 7447). A corrente requisitada pelos LEDs e pelos descodificadores poder ser vrias vezes maior que o resto dos circuitos no aparelho. Para resolver os problemas da tcnica esttica, usa-se o mtodo de multiplexagem. Um circuito como exemplo a melhor maneira de explicar como funciona a multiplexagem. A Fig. 4.17 mostra um circuito que pode ser acrescentado a um par de portas do micro-computador para conduzir vrios displays LEDs em nodocomum num modo multiplexado. Repare-se que o circuito s tem um 7447 e que as sadas do 7447 esto ligadas em paralelo para as entradas dos segmentos de todos os dgitos. A questo que se pode colocar primeira vista : os dgitos no iro mostrar todos o mesmo nmero? A resposta que sim caso fossem ligados todos ao mesmo tempo. O truque de multiplexar displays est em s activar um de cada vez. Os transstores PNP em srie com o nodo comum de cada dgito actuam como interruptores de On/Off para esse dgito.

Sistemas Digitais II

61

Fig. 4.17 A seguir descreve-se o funcionamento deste circuito. O cdigo BDC para o dgito 1 enviado da porta B para o 7447. O 7447 envia o cdigo de 7 segmentos correspondente nas linhas do barramento dos segmentos. O transstor ligado ao dgito 1 ligado atravs de o envio de 0 no bit apropriado da porta A. Todos os outros bits da porta A so colocados a 1 para se certificar que nenhum outro dgito activado. Aps 1 ou 2 ms, o dgito 1 desligado colocando todos os bits da porta A a 1. Ento, o cdigo BDC para o dgito 2 enviado da porta B para o 7447 e uma palavra para ligar o dgito 2 enviada pela porta A. Aps 1 ou 2 ms, o dgito 2 desligado e o processo repetido para o dgito 3 e at que todos os dgitos tenham a sua vez. Ento, o dgito 1 e os dgitos seguintes so acendidos novamente vez. Com oito dgitos e 2 ms por dgito, volta-se ao dgito 1 todos os 16 ms, ou aproximadamente 60 vezes por segundo. Esta taxa de refrescamento suficientemente rpida para que, aos olhos humanos, os dgitos aparentem estar sempre acesos. Taxas de refrescamento de 40 a 200 vezes por segundo so aceitveis. A vantagem bvia da multiplexagem que s necessrio um 7447 e s est aceso um dgito de cada vez. Normalmente aumenta-se a corrente por segmento para 40 e 60 mA em displays multiplexados de modo a que aparentem ser to brilhantes como se no fossem multiplexados. Mesmo com este aumento de corrente por segmento, a multiplexagem fornece uma grande poupana em energia e em peas. Esta tcnica tambm pode ser utilizada para conduzir dispositivos com LEDs de 18 segmentos e dispositivos de LEDs de matriz-ponto. Contudo, para estes dispositivos, substitui-se o 7447 da Fig. 4.17 por uma ROM que gere os cdigos de segmentos necessrios quando o cdigo ASCII for aplicado nos endereos de entrada da ROM. 4.4.2 Interface e operaes de LCDs com micro-computadores Sistemas Digitais II 62

Os displays de cristais lquidos so feitos fazendo uma sanduche de uma fina camada de um cristal lquido entre duas chapas de vidro. Um pelcula ou plano de fundo colocada na parte de trs da camada de vidro. Quando se aplica um diferena de tenso entre um segmento e o plano de fundo, cria-se uma corrente elctrica na regio por baixo do segmento. Este campo elctrico muda a transmisso da luz atravs da regio por baixo do segmento de plano de fundo. Existem dois tipos comuns de LCDs: disperso dinmica e efeito de campo. O primeiro tipo mistura as molculas onde o campo est presente. Isto produz em caracter de luz como que esboado no vidro num fundo escuro. O segundo tipo usa a polarizao para absorver luz onde existe campo elctrico. Isto produz caracteres escuros num fundo cinza-prateado. A maioria dos LCDs requer uma tenso de 2 ou 3 V entre o plano de fundo e um segmento para activar o segmento. Contudo, no se pode simplesmente ligar o plano de fundo massa e conduzir os segmentos com as sadas de um descodificador TTL, como se fez no caso dos LEDs na Fig. 4.16. A razo para isto que os LCDs iro deteriorar-se rpida e irreversivelmente se for aplicada uma tenso contnua (DC) superior a 50 mV entre o segmento e o plano de fundo. Para evitar uma construo de DC nos segmentos, os sinais de conduo dos segmentos devem ser ondas quadradas com uma frequncia entre 30 e 150 Hz. Mesmo que usem pulsos no descodificador TTL, no resultaria porque a tenso de sada baixa (0) dos dispositivos TTL maior que 50 mV. Normalmente so usadas gates CMOS para conduzir LCDs. A Fig. 4.18a) mostra como que duas gates CMOS podem ser ligadas para conduzir um segmento e um plano de fundo de um LCD. A Fig. 4.18b) mostra forma de ondas tpicas de conduo para o plano de fundo e para os segmentos on e off. O segmento off (que neste caso no utilizado) recebe o mesmo sinal de conduo que o plano de fundo. Nunca h qualquer tenso entre eles, portanto no produzido qualquer campo elctrico. A forma de onda para o segmento on est desfasada 180 do sinal de plano de fundo, de modo a que a tenso entre este segmento e o plano de fundo seja sempre +V. a lgica para isto que s se tem de produzir dois sinais: uma onda quadrada a sua complementar. Para as gates de conduo, a sanduche segmento/plano de fundo aparenta ser algo parecido com um condensador de fugas. As gates CMOS podem, facilmente, fornecer a corrente necessria para carregar e descarregar esta pequena capacidade. Os displays LCD mais antigos e/ou baratos ligam-se e desligam-se muito devagar para serem multiplexados do mesmo modo que os displays LED. A 0 C alguns LCDs requerem at 0,5 s para ligar ou desligar. Para fazer a interface com estes tipos de displays usa-se um dispositivo condutor no-multiplexado. LCDs mais novos e mais caros podem ligar-se e desligar-se mais rapidamente, sendo, por isso, multiplexados usando-se uma variedade de tcnicas. A seguir vai-se mostrar como se faz a interface dum display LCD no-multiplexado com um microprocessador tal como o SDK-86.

Sistemas Digitais II

63

Fig. 4.18

Interface entre um micro-computador e um display LCD no-multiplexado A Fig. 4.19 mostra como que um Intersil ICM7211M pode ser ligado para conduzir um display LCD no-multiplexado de 7 segmentos tal como pode ser comprado de um loja qualquer de componentes electrnicos. As entradas do 7211M podem ser ligadas aos pinos de uma porta ou directamente aos barramentos do microcomputador tal como mostrado. Neste exemplo ligaram-se as entradas CS sada Y2 da porta de descodificador do 74LS138. De acordo com a tabela de verdade deste dispositivo os dispositivos so endereados como portas com endereo base FF10H. A linha de endereo do sistema SDK-86 A2 ligada entrada de selector de dgito (DS2) e a linha de sistema A1 ligada entrada DS1. Isto d ao dgito 4 um endereo de sistema em FF10H. O dgito 3 ser endereado em FF12H e o dgito 1 em FF14H. As entradas de dados so ligadas s quatro linhas mais baixas do barramento de dados do SDK-86. A entrada do oscilador deixada aberta.

Sistemas Digitais II

64

Fig. 4.19 Para mostrar um caracter num dos dgitos, basta simplesmente por o cdigo hexadecimal de 4 bits para esse dgito nos 4 bits mais baixos do registo AL do SDK-86 e envi-lo para o endereo de sistema desse dgito. O ICM7211M converte o cdigo hexadecimal de 4 bits no cdigo de 7 segmentos necessrio para ser fixado nas sadas latch do dgito endereado. Um oscilador interno gera automaticamente as formas de onda de conduo mostradas na Fig. 4.18b). Para se fazer a interface com displays LCD que possam ser multiplexados pode ser utilizado o Intel ICM7233.

Sistemas Digitais II

65

Sistemas Digitais II

66

5. Acesso directo memria (DMA)


5.1 Transferncia de informao por DMA J foi visto um processo de transferir informao entre um perifrico e o microprocessador: as interrupes. Outro processo j referido a entrada/sada programada (polling). O segundo processo sincroniza o microprocessador ao perifrico custa da eficincia do processamento. J o primeiro mais natural o processador s responde quando chamado a intervir. Como resultado temos um overhead de software maior, resultando, geralmente, numa resposta mais rpida que o polling mas uma taxa de informao menor. Um terceiro processo de transferir informao chamado Acesso Directo Memria (DMA). Neste caso o perifrico comunica directamente com a memria. sem perturbar o contedo dos registos do processador. Um polling ou uma interrupo pode demorar vrios micro-segundos a processada. Se houver vrias transferncias a executar, por exemplo cada 4 ou5 ms em mdia, a execuo do programa principal ser muito afectada. Por outro lado, h perifricos que trabalham a muito alta velocidade (Ex. discos, floppy disks) para os quais a entrada/sada programada ou por interrupo se revela um processo muito lento. Para estes casos a transferncia por DMA revela-se a mais eficiente. Em contrapartida requer uma interface muito mais complicada. A maior parte dos microprocessadores com capacidade de executar DMA tem uma entrada (HOLD, WAIT ou PAUSE) que activada por um perifrico que pretende utilizar a transferncia por DMA. Quando activada coloca o processador num estado de descanso, depois de este realizar a instruo que estava a executar, e faz a desactivao dos barramentos de endereo e de informao (por vezes tambm de algumas linhas de controlo) colocando-os no terceiro estado (alta impedncia). Outros sinais de sada do microprocessador como HOLD ACKNOWLEDGE, informam do reconhecimento do pedido, permitindo aos perifricos iniciarem a transferncia de informao. Este um processo de realizar DMA por paragem completa do microprocessador durante a transferncia e o mais simples de executar, embora seja pouco eficiente, pois durante a troca de informao o processador no est a realizar qualquer actividade til. Outro processo de realizar DMA designado por cycle-stealling. Este mtodo baseia-se no seguinte: h normalmente dois ciclos por cada instruo: um de recolha (fetch) e outro de execuo. Quando a linha de cycle-steal (ou de hold, etc.) activada, o processador completa o ciclo de execuo da presente instruo, permitindo de seguida um intervalo de um ciclo antes de iniciar a instruo seguinte. Durante esse intervalo a informao pode ser trocada directamente entre a memria e os perifricos. Os passos normalmente necessrios para executar uma transferncia por DMA so: 1. Um perifrico requisita um pedido de DMA 2. O processador informa que recebeu o pedido e desactiva os barramentos de endereo e informao 3. Lgica exterior enderea a memria 4. Troca de informao directamente entre os perifricos e a memria (Leitura ou Escrita) 5. Fim do DMA.

Sistemas Digitais II

67

No passo 1 o perifrico requisita uma transferncia por DMA activando a entrada correspondente do processador. Este avisa a sua recepo depois de acabar o ciclo de instruo que estava a executar, desactivando de seguida os barramentos de endereo e informao. A maior parte dos processadores com facilidade de DMA usam buffers de sada com trs estados para facilitar a sua desactivao. Durante este estado o processador permanece numa situao em que no realiza qualquer operao. Lgica exterior (controlador de DMA) toma conta dos barramentos de endereo e informao e fornece um endereo para o sistema de memria (passo 3). D-se, ento, a transferncia de informao entre a memria e o perifrico seleccionado. No caso da transferncia envolver um bloco de informao, o controlador deve fornecer o endereo inicial, incrementar os endereos de memria aps cada transferncia e manter um contador que conte o nmero de palavras transferidas. Aps a transferncia, o controlador termina o DMA desactivando a sinal aplicado ao microprocessador (HOLD, etc.) o que completa o passo 5. A Fig. 5.1 contm um fluxograma de uma transferncia de DMA tpica.

Fig. 5.1 Na Fig. 5.2 encontra-se um diagrama de blocos de um sistema de DMA. fornecido lgica de DMA a informao necessria para especificar se se trata de uma operao de leitura ou escrita na memria. O registo de endereo carregado com o endereo inicial, dando-se de seguida uma transferncia entre o perifrico e a memria. Aps cada transferncia o registo de endereo incrementado para seleccionar o endereo seguinte. Quando a transferncia tiver terminado feito o reset do pedido de DMA, o que autoriza o processador a retornar as suas funes normais.

Sistemas Digitais II

68

Fig. 5.2 A Fig. 5.3 pormenoriza a lgica de DMA necessria para efectuar as operaes descritas.

Fig. 5.3 O DEVICE ADDRESS activa o perifrico apropriado atravs do descodificador a que liga. O endereo inicial (starting address) e o nmero de palavras a transferir (word count) so carregados nos contadores de memria e de palavra. A primeira palavra do bloco ento transferida, sendo o contador de memria incrementado pelo sinal COUNT UP e o contador de palavra decrementado pela entrada de COUNT DOWN. A transferncia prossegue decrementando-se o contador de palavras at atingir zero, altura em que gerado um sinal para terminar a operao de DMA. Nas transferncias que envolvem mais que um bloco deve acrescentar-se a esta lgica um contador de bloco. Existem duas classes de DMA. No DMA sequencial o controlador de DMA (DMAC) efectua uma operao de leitura mandando vir o byte de informao do Sistemas Digitais II 69

DMAC. De seguida efectuada uma operao de escrita transferindo o byte de informao para a porta de entrada/sada. Tambm possvel a sequncia oposta ler um byte da porta I/O, escrever um byte na memria. Normalmente so necessrios dois a quatro perodos de relgio para cada operao de leitura ou escrita. O DMA simultneo fornece as transferncias mais rpidas. Com esta tcnica as operaes de leitura e de escrita so feitas ao mesmo tempo. Isto requer que MEMR e IOW (ou IOR e MEMW) estejam activas simultaneamente. Deste modo a informao no passa pelo DMAC mas vai directamente da memria para a porta I/O ou vice-versa. Como resultado temos uma melhoria de duas vezes na velocidade comparado com o DMA sequencial. Em qualquer dos casos a transferncia de informao feita completamente em hardware envolvendo s o DMAC, o perifrico e a memria principal. Como o CPU no est envolvido no h overhead de software. Os pedidos de DMA tomam precedncia sobre todas as outras actividades do barramento incluindo interrupes. De facto, no ser reconhecida qualquer interrupo mascarvel ou no-mascarvel durante um pedido de DMA. Existem quatro tipos de transferncia por DMA: 1. 2. 3. 4. Memria para perifrico Perifrico para memria Memria para memria Perifrico para perifrico.

Normalmente feita a interface do DMAC para o microprocessador como uma porta de I/O. Antes de ocorrer qualquer transferncia de informao, o CPU deve programar o DMAC para o tipo de transferncia que vai ocorrer, os endereos de origem e de destino e o nmero de bytes que vai ser transferido. Considerando que o DMA sequencial e simultneo so classes separadas, existem trs modos de DMA existentes em cada classe. A Fig. 5.4 mostra estes trs modos.

Sistemas Digitais II

70

Fig. 5.4 No modo simples ou de nico byte - a) - o DMAC aps ter o controlo dos barramentos do sistema, transfere um nico byte de informao. O controlo dos barramentos depois abandonado at a flag READY do perifrico estar novamente activa. O modo de pedido ou burst b) usado quando os perifricos tm buffers de alta velocidade. Aps ter ganho o controlo dos barramentos, transferida a informao at que a flag READY do perifrico deixe de estar activa. O controlo dos barramentos ento abandonado para o CPU. Quando READY estiver de novamente activa, ocorre outra exploso de DMA. A vantagem desta tcnica que o buffer pode ser preenchido rapidamente pelo DMAC e depois esvaziado ao prazer do perifrico. Um terceiro modo de DMA chamado modo contnuo ou de bloco c). Este semelhante ao modo de pedido excepto que neste caso no abandonado o controlo dos barramentos at que seja transferido todo o bloco de informao. Esta tcnica muito eficaz com um perifrico de alta velocidade que consiga acompanhar o DMAC. Perifricos lentos fazem com que haja longos perodos de inactividade dos barramentos enquanto o DMAC espera pela flag READY. Como o pedido de DMA amostrado no fim de cada ciclo de mquina (no ciclo de instruo), o tempo de resposta do DMAC no ser maior que um ciclo de mquina mais um estado T. O projecto de um controlador de DMA no uma tarefa fcil e provavelmente a maior desvantagem desta tcnica. De facto o DMAC um processador de transferncia altamente especializado, competindo com a prpria complexidade do microprocessador. 5.2 Controlador DMA O 8237 um controlador de DMA que permite transferir informao entre a memria e uma porta de entrada/sada com velocidades da ordem de 1,6 MB/s.

Sistemas Digitais II

71

Nem todas as aplicaes de DMA envolvem perifricos de alta velocidade. Tambm se pode usar impressoras com buffer com interface de DMA. Sempre que a flag BUSY/READY da impressora indicar READY, o buffer da impressora pode ser preenchido usando DMA a alta velocidade, a transferncia por DMA fica completa e o microprocessador retorna o processamento normal quando a impressora esvaziar o buffer. A vantagem em usar um controlador de DMA (um DMAC) para esta aplicao que o controlador pode ser programado para manter o registo de endereo inicial e o nmero de palavras sem interveno do CPU. Se forem usadas interrupes, seria necessria uma rotina de servio da interrupo e seria gasto tempo considervel de processamento no armazenamento e na recuperao de variveis. A desvantagem do DMA que o processador tem que parar enquanto ocorre uma transferncia por DMA. Isto no uma verdadeira desvantagem quando a transferncia ocorre em exploses (bursts) tal como no exemplo da impressora. Por outro lado, oferecida uma melhor soluo por parte das interrupes se a impressora no tiver um buffer e o DMA tiver de inserir estados de espera (WAIT) para se sincronizar com taxa de informao da impressora. Outra desvantagem do DMA que no possvel fazer processamento a priori nem a posteriori pelo DMAC. Se tal for necessrio, ter de ser feito antes ou aps a informao ser transferida. No passado a maior limitao no uso de DMA foi a grande complexidade de concepo do DMAC. aqui que entra o 8237. O 8237 fornece todas as caractersticas requeridas para transferncias por DMA num s chip de 40 pinos e incorpora-se directamente na arquitectura de sistema de trs estados. Entre as caractersticas do 8237 encontram-se as seguintes: 1. 2. 3. 4. 5. Existem quatro canais de DMA Cada canal capaz de transferir at 64K bytes. Pode se escolher entre prioridades fixas ou rotativas O hardware ou o software podem requerer transferncia por DMA Podem ser especificadas transferncias de blocos de bytes ou de bytes individuais 6. So possveis transferncias de informao entre I/O e a memria e de memria para memria. 5.2.1 Interface do 8237 A Fig. 5.5 representa o diagrama de blocos do 8237. Existe um problema em grandes sistemas onde todas as linhas de dados no mdulo do CPU tm buffer. que apesar de os buffers verem altas impedncias nas suas entradas (do microprocessador de trs estados), normalmente eles iro converter isto em nveis de 1 lgico nas suas sadas, originando problemas de contenda do barramento com o DMAC. Por esta razo os mdulos de CPU devem incluir um sinal que permita aos buffers de barramento ter trs estados.

Sistemas Digitais II

72

Fig. 5.5 A Fig. 5.6 mostra como que se pode fazer a interface do 8237 com um mdulo de CPU.

Fig. 5.6 de reparar que necessrio fixar um endereo de alta ordem. Durante o tempo em que o ADSTB est a 1 e quando estiver a ocorrer uma transferncia por DMA, D0D7 vo manter os bits de ordem mais alta do endereo. O flanco descendente de ADSTB fixa este byte no latch 74LS373. Para o resto de transferncia por DMA, D0D7 funcionam como barramento bidireccional de dados. Sistemas Digitais II 73

De seguida vo ser enunciados os passos requeridos para efectuar uma transferncia de informao com um perifrico. 1. Antes da transferncia ocorrer, deve se programar o DMAC com o endereo de memria, o nmero de bytes e o tipo de transferncia. No caso do 8237, o DMAC aparenta ser 16 portas de entrada/sada consecutivas seleccionadas com A3-A0 e IOR e IOW. de notar que o dispositivo no pode mapeado por memria; MEMR e MEMW so somente pinos de sada. 2. Agora pode ser pedida uma transferncia por DMA num dos quatro canais por um perifrico activando DREQ. 3. Se o 8237 estiver activado e o canal activado no estiver mascarado, o DMAC activa HRQ, pedindo um estado de espera (HOLD) do CPU. 4. O CPU responde completando o ciclo de instruo actual, colocando os seus barramentos em alta impedncia e enviando HLDA. 5. O DMAC avisa o perifrico deste reconhecimento enviando DACK para o perifrico. Este sinal normalmente usado para o chip select (CS) das portas de dados dos perifricos. 6. Agora o 8237 envia o endereo em D7-D0 e coloca AEN e ADSTB a 1. Este endereo representa a origem ou o destino da transferncia de informao. O AEN activa as sadas de alta impedncia do latch e tambm usado para desactivar os barramentos do sistema atravs de BUSEN. 7. O ADSTB vai a 0, fazendo com que endereo de alta ordem seja fixado. D0D7 mudam para se tornarem o barramento de informao e A0-A7 o barramento de endereo de baixa ordem. 8. Agora o DMAC controla os barramentos e so permitidos os trs tipos de transferncia de informao, tal como demonstrado na Fig. 5.7. Nesta figura, a carregado, est a transferncia de um byte de informao da memria para um dispositivo de entrada/sada. Repare-se na condio no usual do controlo de barramento esto activos dois sinais em simultneo: MEMR e IOW. Apesar de isto nunca poder acontecer quando o CPU tem o controlo, normal quando quem tem o controlo o DMAC. A informao lida da RAM directamente enviada para o dispositivo de entrada/sada; ela no vai pelo DMAC. 9. S necessrio um canal do 8237 para a transferncia. No caso especial de uma transferncia de memria para memria, so necessrios dois canais: um programado com o endereo origem (o 8237 requer o canal 0) e o outro com o endereo de destino (o 8237 requer o canal 1). Neste caso no so necessrios DREQ nem DACK. 10. A informao transferida entre a RAM e o dispositivo de entrada/sada at que o contador de bytes seja zero (chamada contagem terminal). Tambm possvel parar a transferncia com uma entrada externa EOP (End Of Process) no DMAC. Em qualquer caso, HRQ e AEN so removidos, desistindo do controlo do barramento para o processador. Na Fig. 5.8 est um diagrama temporal indicando estas mesmas actividades.

Sistemas Digitais II

74

Fig. 5.7 5.2.2 Tempo de resposta e taxa de transferncia Tal como mencionado anteriormente o CPU responde dentro de um ciclo de mquina dum pedido de HOLD. Isto significa que podem decorrer um mximo de seis T estados entre o pedido de DMA e o comeo da transferncia por DMA. Como termo de comparao temos que para responder a um pedido de interrupo so necessrios 12 a 31 T estados. Quando estiver para ocorrer uma transferncia por DMA, normalmente o tempo de resposta no o problema principal. Isto porque o processador de DMA est feito para transferir grandes blocos de informao, ao contrrio das interrupes ou do polling em que o processador tem que monitorar uma flag de BUSY/READY e depois responder rapidamente com um byte de informao antes de ocorrer a prxima transaco. O 8237 tem dois modos bsicos de operao: em repouso (idle) ou activo (active). No estado de repouso pode ser programado pelo processador para um prximo estado activo durante o qual ir ocorrer a transferncia por DMA. A Fig. 5.9 mostra as actividades que ocorrem durante cada um dos seis estados de relgio possveis.

Sistemas Digitais II

75

Fig. 5.8

Fig. 5.9 Aps ocorrer um DREQ, o DMAC passa do estado S1 para o estado S0, esperando HLDA do processador. No estado S1 enviado o endereo de alta ordem. Note-se que este endereo s muda uma vez em cada 256 transferncias de informao. Por esta razo, o 8237 apaga automaticamente o estado S1 excepto quando tem de mudar o endereo de alta ordem. Durante S2 enviado o endereo de baixa ordem e durante S3 aparecem os sinais de controlo. A transferncia de informao propriamente dita ocorre durante o estado S4. Assumindo que o endereo de alta ordem no muda, sero necessrios trs estados de relgio (S2, S3 e S4) para uma transferncia de informao. A taxa de transferncia para o 8237A de 1,6 MB/s. Claro que quer o dispositivo de I/O quer a memria devem ser capazes de manter esta alta taxa de Sistemas Digitais II 76

transferncia. Para memrias de semicondutores isto no constitui um problema. Contudo, o dispositivo de I/O pode ser outro assunto. Uma das aplicaes mais comuns do DMA fazer de interface com um drive de disco em srie um disco duro ou um floppy disk. Considere-se uma floppy disk de dupla densidade de 5 polegadas que requer um novo byte de informao cada 32 s. Para fazer interface com este tipo de perifricos deve ser usada a entrada READY do 8237. Esta linha posta a 0 pelo controlador do perifrico enquanto ele recebe (ou escreve) um novo byte de informao. A entrada READY do DMAC semelhante entrada READY do microprocessador e amostrada durante S3. Se esta entrada for 0, os trs barramentos marcam tempo, segurando informao vlida at READY ser novamente 1. Apesar de a interface de floppy disk no o requerer, o 8237 capaz de uma taxa de informao ainda maior se for usado tempo comprimido. Neste modo suprimido o estado S3; s usado para expandir o comprimento do pulso dos sinais de controlo IOR e IOW, permitindo transferncias de informao s com os estados S2 e S4. Isto iria requerer dispositivos de memria com tempos de acesso inferiores a 400 ns para o 8237A - 5. As transferncias de memria para memria requerem o dobro do tempo das transferncias entre memria e um dispositivo entrada/sada. Isto porque necessrio um conjunto de S estados para ler um byte de informao e outro para escrev-lo, pois MEMR e MEMW no podem ser permitidas ser 0 simultaneamente como acontece com os sinais de controlo de memria e de entrada/sada. Alm disso necessrio um registo temporrio dentro do 8237 para guardar a informao antes de ocorrer o ciclo de escrita. As transferncias entre memrias so teis quando se pretende transferir um bloco de informao grande ou quando um bloco de memria para ser preenchido com um determinado caracter. 5.2.3 Programao do 8237 Cada canal do 8237 tem um registo de 16 bits do endereo actual e um registo de 16 bits da palavra actual. O registo do endereo actual guarda o endereo de memria para a prxima transferncia por DMA. O registo da palavra actual age como um contador em modo decrescente de 16 bits e programado com o nmero total de bytes a ser transferido menos um. A contagem terminal ocorre quando este registo passa de 0000H para FFFFH. Cada um destes registos suportado por registo de endereo base e por um registo de palavra base que contm os valores iniciais quando programados. Isto permite que ocorra uma inicializao automtica de uma sequncia (se programada) quando ocorrer a contagem terminal (ou EOP). A Tabela 5.1 indica os cdigos dos sinais de controlo necessrios para aceder aos registos de cada canal. Repare-se que os registos do endereo actual e da contagem de palavra s podem ser lidos, no podem ser escritos. Como o endereo base e a contagem de palavras provavelmente requerem 16 bits, usado um flip-flop interno para encaminhar estes dois bytes para o DMAC. Deste modo a primeira escrita para os registos dos endereos base e actual interpretada como o endereo de baixa ordem e a segunda escrita como o endereo de alta ordem. usado um esquema semelhante com o registo de contagem de palavra.

Sistemas Digitais II

77

Canal

Registo

Operao
CS IOR IOW

Sinais
A3 A2 A1 A0

Flip-flop interno 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Barramento de dados DB0-DB7 A0-A7 A8-A15 A0-A7 A8-A15 W0-W7 W8-W15 W0-W7 W8-W15 A0-A7 A8-A15 A0-A7 A8-A15 W0-W7 W8-W15 W0-W7 W8-W15 A0-A7 A8-A15 A0-A7 A8-A15 W0-W7 W8-W15 W0-W7 W8-W15 A0-A7 A8-A15 A0-A7 A8-A15 W0-W7 W8-W15 W0-W7 W8-W15

Endereo base e actual

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0

0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Endereo actual

Contagem de palavra base e actual

Contagem de palavra actual 1 Endereo base e actual

L E

Endereo actual

Contagem de palavra base e actual

Contagem de palavra actual 2 Endereo base e actual

L E

Endereo actual

Contagem de palavra base e actual

Contagem de palavra actual 3 Endereo base e actual

L E

Endereo actual

Contagem de palavra base e actual

Contagem de palavra actual

Tabela 5.1 No 8237 tambm deve ser programado o modo de transferncia por DMA. Existem quatro escolhas (os modos 1 a 3 j foram ilustrados na Fig. 5.4): 1. Transferncia simples: transferido um nico byte, a contagem de palavras decrementada e o registo de endereo actual incrementado ou decrementado conforme programado. DREQ deve ser mantido activo at se receber DACK. Se DREQ estiver activo durante a transferncia, o controlo ser devolvido ao microprocessador por um ciclo de mquina antes de iniciar a prxima transferncia.

Sistemas Digitais II

78

2. Transferncia de bloco: a informao transferida at que ocorra TC (contagem terminal) ou EOP. DREQ deve ser mantido activo at que ocorra DACK. 3. Transferncia por pedido: a informao transferida enquanto DRQE estiver activo. Quando DREQ ficar inactivo, o endereo actual e a contagem de palavra no mudam, permitindo ao dispositivo de I/O retomar a transferncia onde a deixou. TC ou EOP terminaro o processo. 4. Modo em cascata: neste modo um 8237 age como Mestre e outro como Escravo. Cada um dos escravos programado para um dos trs modos de transferncia descritos acima. Cada escravo fornece o endereo de memria para a transferncia, mas o mestre d prioridade aos pedidos de HOLD dos escravos. Adicionalmente aos quatro modos listados, pode ser especificada uma transferncia de memria para memria. Este modo limitado a transferncias de blocos e o canal 0 deve ser usado para a origem e o canal 1 para o destino. So usados quatro registos para programar o modo de transferncia e para seleccionar vrias caractersticas de operao do 8237. A descrio dos seus bits est no Apndice V. Cada um destes registos s permite ser escrito. 1. Registo de comando: este registo controla a operao do 8237. Repare-se que o chip pode ser desactivado fazendo com que o bit D2 seja 1. Se for seleccionada a rotao de prioridades, o ltimo DREQ atendido ir ter a prioridade mais baixa. 2. Registo de modo: a poro de acesso memria da transferncia por DMA pode ser programado para uma operao de leitura, escrita ou verificao. Quando programao para verificar transferncias, o 8237 envia endereos mas no os sinais de controlo. 3. Registo de pedidos: este registo permite ao software iniciar a transferncia por DMA em vez do DREQ. Quando programado para transferncias de memria para memria, activa o bit de pedido para o canal 0 comea a transferncia. Os pedidos de software no so mascarveis. 4. Registo de mscaras: este registo usado para mascarar o DREQ para cada canal. Limpar o bit de mscara activa aquele canal para pedidos de DMA. Os bits de mscara podem ser limpos individualmente ou colectivamente como mostrado na alnea d) do Apndice V. H dois registos que s podem ser lidos: so o registo de estados e o registo temporrio, mostrados na Fig. 5.10 (a) e b), respectivamente).

Sistemas Digitais II

79

0 - O canal 0 atingiu TC 1 - O canal 1 atingiu TC 2 - O canal 2 atingiu TC 3 - O canal 3 atingiu TC 4 - Pedido do canal 0 5 - Pedido do canal 1 6 - Pedido do canal 2 7 - Pedido do canal 3 a) 7 6 5 4 b) Fig. 5.10 Trs portas do 8237 no so realmente portas mas usam o pulso de escolha de dispositivo criado por uma instruo de sada (OUT). 1. Limpar primeiro/ltimo flip-flop: isto faz o reset do flip-flop interno para as portas 0-7 (ver Tabela 5.2). O prximo endereo de memria ir deste modo ser o byte de baixa ordem para o endereo de memria ou para a contagem de palavra. 2. Limpar mestre: o 8237 entra no estado de repouso com os registos de comando, estado, pedidos e temporrios e o flip-flop interno todos em reset e com todos os bits do registo de mscaras em set. 3. Limpar registo de mscaras: este comando activa todos os quatro canais a aceitar pedidos de DMA nas suas entradas DREQ limpando todos os bits no registo de mscaras. A Tabela 5.2 lista a funes de leitura e escrita associadas com cada um dos 16 endereos (base) de porta do DMAC. Utilizando o descodificador da Fig. 5.6, o 8237 requer as portas entre F0H e FFH (as portas FC, FD e FE so controladas pelos pulsos de seleco de dispositivo e no transferem informao). 3 2 1 0

Sistemas Digitais II

80

A3-A0 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 A A B B C C D D E E F F

IOR 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

IOW 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0

Funo Ler endereo actual Canal 0 Escrever endereo actual Canal 0 Ler contagem de palavra actual Canal 0 Escrever contagem de palavra actual Canal 0 Ler endereo actual Canal 1 Escrever endereo actual Canal 1 Ler contagem de palavra actual Canal 1 Escrever contagem de palavra actual Canal 1 Ler endereo actual Canal 2 Escrever endereo actual Canal 2 Ler contagem de palavra actual Canal 2 Escrever contagem de palavra actual Canal 2 Ler endereo actual Canal 3 Escrever endereo actual Canal 3 Ler contagem de palavra actual Canal 3 Escrever contagem de palavra actual Canal 3 Ler registo de estado Escrever registo de comando Ilegal Escrever registo de pedidos Ilegal Escrever um nico bit do registo de mscaras Ilegal Escrever registo de modo Ilegal Limpar primeiro/ltimo flip-flop (DSP) Ler registo temporrio Limpar mestre (DSP) Ilegal Limpar registo de mscaras (DSP) Ilegal Escrever todos os bits do registo de mscaras

Tabela 5.2 A Fig. 5.11 o fluxograma dos passos necessrios para inicializar o 8237 e mostra as aces tomadas pelo DMAC uma vez programado. Repare-se que aconselhvel desactivar o DMAC at se completar a inicializao se um DREQ for recebido durante este tempo.

Sistemas Digitais II

81

Fig. 5.11

Sistemas Digitais II

82

6. Bibliografia
Computer Organization and Architecture Designing For Performance William Stallings Prentice Hall International Editions Microcomputers and Microprocessors The 8080, 8085, and Z-80 programming, interfacing and troubleshooting John Uffenbeck Prentice Hall International Editions Microprocessors and Interfacing Programming and Hardware Douglas V. Hall McGraw-Hill International Editions

Sistemas Digitais II

83

Apndice I

Apndice II

Apndice III

Apndice IV

Apndice V

You might also like