100% acharam este documento útil (1 voto)
33 visualizações30 páginas

Adaptador ACIA: Comunicação Assíncrona

O documento apresenta um trabalho de pesquisa sobre o Adaptador de Ligação para Comunicação Assíncrona (ACIA), focando seu funcionamento no contexto do microprocessador Motorola 6800. O ACIA é um componente essencial que permite a comunicação serial assíncrona entre o microprocessador e dispositivos periféricos, realizando a conversão de dados entre formatos paralelos e seriais. O trabalho inclui uma análise detalhada da estrutura interna do ACIA, seus registros, inicialização e operação, além de exemplos práticos de programação em Assembly.

Enviado por

Douglas André
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
100% acharam este documento útil (1 voto)
33 visualizações30 páginas

Adaptador ACIA: Comunicação Assíncrona

O documento apresenta um trabalho de pesquisa sobre o Adaptador de Ligação para Comunicação Assíncrona (ACIA), focando seu funcionamento no contexto do microprocessador Motorola 6800. O ACIA é um componente essencial que permite a comunicação serial assíncrona entre o microprocessador e dispositivos periféricos, realizando a conversão de dados entre formatos paralelos e seriais. O trabalho inclui uma análise detalhada da estrutura interna do ACIA, seus registros, inicialização e operação, além de exemplos práticos de programação em Assembly.

Enviado por

Douglas André
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

DEPARTAMENTO DE RÁDIO

ENGENHARIA ELECTRÓNICA E DE TELECOMUNICAÇÕES

Disciplina: Aplicações de Microprocessadores I Turma: 3R – Laboral

Tema: Adaptador de Ligação para Comunicação Assíncrona (ACIA)

Discentes:

● Douglas Nhampule;
● Milton Cuambe
● Neyla Mussá
● Palmira Chavana
● Toní Manjate;

Docente: Eng. Elso Sebastião Guilengue

Maputo, maio de 2025


ESCOLA SUPERIOR DE CIÊNCIAS NÁUTICAS
DEPARTAMENTO DE RÁDIO

Aplicações de Microprocessadores I
Tema:
Adaptador de Ligação para Comunicação Assíncrona (ACIA)

Trabalho de pesquisa de caráter


avaliativo: cadeira de APl. De
Microprocessadores I no curso de
Engenharia Electrónica e de
Telecomunicações, com a supervisão e
avaliação do docente.
O docente

Eng. Elso Sebastião Guilengue

Maputo, maio de 2025


Adaptador de Ligação para Comunicação Assíncrona (ACIA)

ÍNDICE
1. Introdução ................................................................................................................. 5
2. Objectivos ................................................................................................................. 6
2.1. Geral: ................................................................................................................ 6
2.2. Específicos ........................................................................................................ 6
3. Contextualização ...................................................................................................... 7
4.1. Estrutura interna do ACIA................................................................................ 8
4.1.1. Blocos Funcionais Principais ....................................................................... 8
4.2. Interface com o Microprocessador ................................................................... 9
4.3. Linhas de Comunicação Serial ......................................................................... 9
4.4. Principais Características ................................................................................ 10
4.5. Funcionamento Básico ................................................................................... 11
5. Inicialização do ACIA ............................................................................................ 11
5.1. Procedimento de Inicialização ........................................................................ 11
5.2. Palavra de Controle do MC6850 .................................................................... 12
6. Diagrama de bloco do Adaptador de interface para Comunicação Assíncrona
MC6850 .......................................................................................................................... 12
7. Funcionamento/Operação do Dispositivo .............................................................. 13
7.1. Reinicialização Mestre ................................................................................... 13
7.2. Transmissão de Dados .................................................................................... 13
7.3. Recepção de dados.......................................................................................... 14
7.4. Controle de Erros ............................................................................................ 15
7.5. Uso de Interrupções ........................................................................................ 15
8. Funções de entrada/saída e sinais de interface do ACIA para MPU ...................... 16
8.1. Dados Bidirecionais do ACIA (D0–D7) ........................................................ 16
8.2. Sinal de Ativação do ACIA (E) ...................................................................... 16
8.3. Leitura/Escrita (R/W) ..................................................................................... 16
8.4. Selecção de Chip (CS0, CS1, CS2) ................................................................ 16
8.5. Selecção de Registo (RS) ............................................................................... 17
8.6. Pedido de Interrupção (IRQ) .......................................................................... 17
8.7. Entrada do Relógio ......................................................................................... 17
8.8. Linhas de Entrada/Saída Serial ....................................................................... 18
8.8.1. Recepção de Dados (Rx Data) ................................................................ 18
8.8.2. Transmissão de Dados (Tx Data) ........................................................... 18
8.9. Controlo de Periféricos ................................................................................... 18

3
8.9.1. Clear to Send (CTS) ............................................................................... 18
8.9.2. Request to Send (RTS) ........................................................................... 19
8.10. Data Carrier Detect (DCD) ......................................................................... 19
8.11. Registos Internos do MC6850 ACIA ......................................................... 19
8.12. Registo de Dados de Transmissão (TDR) .................................................. 19
8.13. Registo de Dados de Recepção (RDR) ....................................................... 20
8.14. Registo de Controlo .................................................................................... 20
Bits de Selecção da Divisão do Contador (CR0 e CR1)......................................... 21
Exemplo de Uso em Código (Assembly 6800): ..................................................... 21
Bits de Seleção de Palavra (CR2, CR3, CR4) ........................................................ 21
Bits de Controlo do Transmissor (CR5 e CR6) ...................................................... 22
Bit de Controlo CR7 – Habilitação de Interrupção de Recepção ........................... 23
8.15. Registo de Estado (Status Register) ........................................................... 23
Bit 0 – Registo de Dados de Receção Cheio (RDRF) ............................................ 24
Bit 1 – Registo de Dados de Transmissão Vazio (TDRE) ..................................... 24
Bit 2 – Deteção de Portadora de Dados (DCD) ...................................................... 24
Bit 3 – Pronto para Enviar (CTS) ........................................................................... 24
Bit 4 – Erro de Enquadramento (Framing Error) ................................................... 24
Bit 5 – Erro de Overrun .......................................................................................... 24
Bit 6 – Erro de Paridade ......................................................................................... 24
Bit 7 – Pedido de Interrupção (IRQ) ...................................................................... 24
Exemplo Completo de Programa com ACIA (Assembly para M6800) ......................... 25
Exemplo 2 de Código com o ACIA MC6850 (Assembly 6800) .................................... 25
Exemplo 3 – Ecoar caractere recebido (Loop de recepção e envio) .............................. 27
9. Conclusão ............................................................................................................... 28
10. Referências Bibliográficas .................................................................................. 29

4
ÍNDICE DE FIGURAS
Figura 1. CI MC6850 ACIA ............................................................................................ 9
Figura 2. Diagrama de pinagem do ACIA ...................................................................... 10
Figura 3. Diagrama de blocos do ACIA ......................................................................... 12
Figura 4. Fluxograma do processo de transmissão ......................................................... 14
Figura 5. Fluxograma do processo de recepção ............................................................. 15
Figura 6. Tabela de Definição do Conteúdo do Registo ACIA ...................................... 20
Figura 7. Registo de controlo ......................................................................................... 20
Figura 8. Registo de estado ............................................................................................ 25

5
Adaptador de Ligação para Comunicação Assíncrona (ACIA)

1. Introdução
A comunicação de dados entre dispositivos digitais constitui um dos pilares fundamentais
no desenvolvimento de sistemas microprocessados. Entre os diversos métodos de
transmissão disponíveis, a comunicação serial assíncrona apresenta-se como uma solução
eficiente e amplamente utilizada, sobretudo em contextos onde a simplicidade da ligação
e a redução do número de fios são factores determinantes.
Neste contexto, surge o Adaptador de Ligação para Comunicação Assíncrona, conhecido
pela sigla ACIA (Asynchronous Communications Interface Adapter), que permite ao
microprocessador comunicar com dispositivos periféricos através de uma interface serial.
O ACIA realiza a conversão entre os dados paralelos provenientes do microprocessador
e o formato serial exigido pelas linhas de transmissão, e vice-versa. Segundo Leventhal
(1978), o ACIA possibilita ao microprocessador comunicar com terminais assíncronos e
outros dispositivos através de uma interface serial, controlando automaticamente
parâmetros como a velocidade de transmissão, a verificação de paridade e a gestão de
erros.
O presente trabalho tem como objectivo apresentar o funcionamento do ACIA no
contexto da arquitectura do microprocessador Motorola 6800, nomeadamente a sua
estrutura interna, o processo de inicialização e os princípios básicos da sua operação. A
análise fundamenta-se no manual técnico "Basic Microprocessors and the 6800", que
serve de base bibliográfica para a compreensão detalhada deste componente.

5
2. Objectivos
2.1. Geral:
• Compreender o funcionamento do ACIA e a sua integração com o
microprocessador 6800, analisando a sua estrutura, inicialização e operação na
comunicação serial assíncrona.

2.2. Específicos
• Analisar a estrutura interna do ACIA, incluindo seus registros (Controle, Status,
Dados de Transmissão e Recepção), circuitos de temporização e interface com o
barramento do sistema.
• Explicar o processo de inicialização e configuração do ACIA.
• Descrever o funcionamento operacional do ACIA.
• Fornecer exemplos práticos de programação em Assembly (6800).

6
3. Contextualização
O avanço acelerado da microelectrónica e a crescente complexidade dos sistemas digitais
criaram uma demanda crítica por mecanismos de comunicação eficientes entre
dispositivos. À medida que os microprocessadores assumiam funções cada vez mais
centrais em arquiteturas computacionais, tornou-se imperativo desenvolver interfaces
robustas capazes de garantir trocas de dados confiáveis e de alto desempenho com
periféricos externos. Neste contexto, a comunicação serial assíncrona emergiu como uma
solução particularmente vantajosa, destacando-se pela sua simplicidade de
implementação (requerendo apenas duas linhas básicas - transmissão e recepção) e pela
dispensa de um sinal de clock compartilhado entre os dispositivos comunicantes.
O ACIA (Adaptador de Ligação para Comunicação Assíncrona) consolida-se como um
componente fundamental nesta arquitetura, atuando como ponte inteligente entre o
barramento paralelo do microprocessador e os dispositivos seriais externos. Sua
arquitetura especializada permite não apenas a conversão bidirecional entre formatos
paralelos e seriais, mas também incorpora mecanismos sofisticados para garantir a
integridade da comunicação. Esta capacidade torna-o particularmente valioso na
interação com terminais, modems e outros sistemas de comunicação, onde a
compatibilidade entre diferentes padrões de transmissão é essencial.
No ecossistema do microprocessador Motorola 6800 - amplamente documentado na obra
seminal "Basic Microprocessors and the 6800" (Leventhal, 1978) - o ACIA assume um
papel de destaque na expansão das capacidades de comunicação do sistema. Sua
implementação vai além da simples conversão de dados, incorporando funcionalidades
avançadas como:
• Configuração programável do formato de transmissão (número de bits por
carácter)
• Mecanismos automáticos de verificação de paridade
• Gestão inteligente de interrupções
• Deteção e sinalização de erros de transmissão
• Controle de fluxo de dados
Estas características transformam o ACIA num elemento crucial para sistemas que
exigem comunicações seriais robustas e eficientes, demonstrando a evolução das técnicas
de interfaceamento em arquiteturas microprocessadas. Sua arquitetura serve ainda como
base conceitual para muitas das interfaces seriais modernas, evidenciando a relevância
duradoura deste componente no desenvolvimento de sistemas digitais.

7
4. Adaptador de Ligação para Comunicação Assíncrona (ACIA)
4.1. Estrutura interna do ACIA
O ACIA, tal como o MC6850, é um circuito integrado especializado com funcionalidades
bem definidas para comunicação assíncrona. Sua estrutura interna é composta por
diversos blocos que trabalham conjuntamente para garantir a recepção e transmissão
correta de dados entre o microprocessador e o dispositivo periférico.
4.1.1. Blocos Funcionais Principais
O ACIA é composto por:
a) Registradores Internos
• Registrador de Controle (Control Register): Utilizado para configurar
parâmetros de comunicação como número de bits de dados, bits de parada,
verificação de paridade, e taxa de transmissão.
• Registrador de Status (Status Register): Fornece informações sobre o estado
atual da interface, como buffer cheio, erros de paridade ou overrun, e prontidão
para transmissão ou recepção.
• Registrador de Dados de Transmissão (Transmit Data Register): Armazena
os dados a serem enviados para a linha serial.
• Registrador de Dados de Recepção (Receive Data Register): Armazena os
dados recebidos da linha serial, prontos para serem lidos pelo processador.
b) Conversores Paralelo-Serial / Serial-Paralelo
• Esses circuitos fazem a conversão de dados de 8 bits paralelos (internos ao
processador) para uma sequência de bits seriais (transmitidos pela linha de
comunicação) e vice-versa.
c) Gerador de Clock
• Controla a temporização da transmissão e recepção dos dados, podendo utilizar
clocks internos ou sinais externos, conforme a configuração do registrador de
controle.
• Gerador de Baud Rate: permite configurar a velocidade de comunicação (bits
por segundo). Pode ser interno ou controlado externamente através de um
relógio de referência.

d) Gerador de Paridade
• Permite a verificação e geração automática do bit de paridade, oferecendo maior
confiabilidade à comunicação.
e) Lógica de Controle
• Responsável por coordenar as operações internas do ACIA com base nos
comandos do processador e no status dos buffers.

8
4.2. Interface com o Microprocessador
O ACIA é conectado ao microprocessador através de:
• Barramento de Dados (8 bits): Para troca de informações.
• Barramento de Endereço: Para seleção do registrador a ser acessado (dados,
controle, status).
• Linhas de Controle: Incluindo RW (leitura/escrita), RS (seleção de registrador)
e CS (seleção do chip).

4.3. Linhas de Comunicação Serial


O ACIA também possui pinos dedicados à comunicação serial:
• TxD (Transmit Data): Saída de dados em série.
• RxD (Receive Data): Entrada de dados em série.
• RTS (Request to Send) e CTS (Clear to Send): Controle de fluxo de hardware.
• DCD (Data Carrier Detect): Detecta a presença de portadora (útil com modems).

O MC6850 Asynchronous Communications Interface Adapter (ACIA) é um dispositivo


N-MOS encapsulado em um invólucro de 24 pinos, utilizado para receber e transmitir até
oito bits de dados em formato serial. O ACIA se comunica (transmite/recebe dados) com
a MPU (Unidade de Processamento Microprogramada) por meio de um barramento de
dados bidirecional de oito bits, assim como as memórias RAM, ROM e PIAs fazem.
O ACIA possui quatro registros que podem ser endereçados pela MPU. O Registro de
Status (SR) e o Registro de Dados de Recepção (RDR) são registros "somente leitura", o
que significa que a MPU não pode escrever neles. O Registro de Dados de Transmissão
(TDR) e o Registro de Controle (CR) são registros "somente escrita", o que significa que
a MPU não pode ler esses registros.
Além desses quatro registros, o ACIA possui três linhas de seleção de chip (CS0, CS1,
CS2), uma linha de seleção de registro (RS), uma linha de requisição de interrupção
(IRQ), uma linha de habilitação (E), uma linha de leitura/escrita (R/W) e sete linhas de
dados e controle de dados (RXC, TXC, DCD, RTS, RXD, TXD e CTS).

Figura 1. CI MC6850 ACIA

9
Figura 2. Diagrama de pinagem do ACIA

4.4. Principais Características


i. Barramento de Dados Paralelo (8 bits)
• Interface bidirecional (D0-D7) para comunicação com a MPU.
• Opera em modo leitura/escrita controlado pelo sinal R/W.
ii. Registros Internos
• Registro de Controle (CR): Configura parâmetros como baud rate, bits
de parada e paridade.
• Registro de Status (SR): Indica estado da comunicação (ex.: buffer vazio,
erro de paridade).
• Registro de Dados de Transmissão (TDR): Armazena dados a serem
enviados.
• Registro de Dados de Recepção (RDR): Armazena dados recebidos.
iii. Linhas de Controle
• Seleção de Chip (CS0, CS1, CS2): Ativa o ACIA para comunicação.
• Registro Select (RS): Escolhe entre registros de dados (RS=1) ou
controle/status (RS=0).
• Habilitação (E): Sincroniza operações com o clock da MPU.
iv. Comunicação Serial
• TX DATA: Envia dados em formato serial (com bits de start, paridade e
stop).
• RX DATA: Recebe dados seriais, remove bits extras e converte para
paralelo.
• Clock (TXC/RXC): Pode ser dividido (÷1, ÷16, ÷64) para ajustar a
velocidade.
v. Controle de Modem
10
• CTS (Clear to Send): Sinaliza se o modem está pronto para receber
dados.
• RTS (Request to Send): Indica que a MPU quer transmitir.
• DCD (Data Carrier Detect): Detecta perda de conexão.
vi. Gerenciamento de Erros
• Detecta erros de paridade, framing (bit de stop incorreto)
e overrun (dado não lido a tempo).

4.5. Funcionamento Básico


i. Configuração Inicial
• O programa define baud rate, formato dos dados e interrupções no CR.
• Exemplo: LDAA #%00010111 (8 bits, sem paridade, 1 stop bit, 9600
bps).
ii. Transmissão
• A MPU verifica TDRE no SR para confirmar buffer vazio.
• Escreve dados no TDR, que são convertidos para serial e transmitidos.
iii. Recepção
• O ACIA armazena dados recebidos no RDR e seta RDRF no SR.
• A MPU lê os dados e limpa RDRF.
iv. Tratamento de Interrupções
• Se habilitado, o ACIA gera interrupções quando:
▪ Um dado é recebido (RDRF=1).
▪ O buffer de transmissão está vazio (TDRE=1).

5. Inicialização do ACIA
Antes de iniciar qualquer transmissão ou recepção de dados, o ACIA deve ser
corretamente configurado pelo programa do microprocessador. Essa configuração é feita
por meio da escrita de valores apropriados no Registrador de Controle.

5.1. Procedimento de Inicialização


i. Configuração do Registrador de Controle:
• O registrador de controle é acessado por meio de uma combinação
específica de endereços e sinais de controle.
• A palavra de controle define:
▪ Número de bits por caractere (5 a 8 bits).

11
▪ Número de bits de parada (1, 1½, ou 2).
▪ Tipo de paridade (ímpar, par, ou sem paridade).
▪ Clock de transmissão (divisores do clock principal).
▪ Habilitação de interrupções.
ii. Configuração do Baud Rate (velocidade de transmissão):
• Pode ser configurado internamente ou por meio de um clock externo. O
ACIA permite múltiplas taxas através de divisores configuráveis.
iii. Verificação do Status:
• Após a configuração inicial, o processador pode ler o Registrador de Status
para confirmar que o ACIA está pronto para iniciar a operação.
5.2. Palavra de Controle do MC6850
A palavra de controle é composta por 8 bits, divididos em campos como:
• Bits 0-1: Clock divisor (bauds)
• Bits 2-4: Formato do caractere
• Bit 5: Habilitação de interrupção de recepção
• Bits 6-7: Comando de controle (reset, RTS, etc.)

6. Diagrama de bloco do Adaptador de interface para Comunicação


Assíncrona MC6850

Figura 3. Diagrama de blocos do ACIA

12
7. Funcionamento/Operação do Dispositivo
Na interface do barramento, o ACIA aparece como dois locais de memória endereçáveis.
Tipicamente, quando o dispositivo é lido, dois dados distintos são fornecidos consoante
o registo selecionado. Os registos de leitura são o Registo de Estado e o Registo de Dados
Recebidos. Os registos de escrita são o Registo de Controlo e o Registo de Dados a
Transmitir. O registo selecionado depende do endereço de barramento fornecido. Os
sinais adicionais de entrada e saída são utilizados para fornecer pulsos de relógio,
interrupções e controlo direto de moderna.
7.1. Reinicialização Mestre
A primeira vez que o ACIA é ligado (ou seja, quando o sistema é energizado pela primeira
vez), ele deve ser corretamente inicializado para assegurar um funcionamento apropriado.
Isto é feito escrevendo no Registo de Controlo o byte de configuração necessário. O ACIA
é funcional após a sua energização, mas os conteúdos dos seus registos internos são
indefinidos. O bit RTS é automaticamente colocado em 1, e o bit de interrupção de
receção é desativado após o arranque. O dispositivo pode ser reinicializado ao nível do
software através do Registo de Controlo. O tempo de estabilização do circuito depende
da fonte de alimentação após a energização do sistema.

7.2. Transmissão de Dados


Uma sequência típica de transmissão inicia-se com a leitura do Registo de Estado da
ACIA, quer como resposta a uma interrupção, quer no contexto de uma rotina de
interrogação (polling). Um carácter pode ser escrito no Registo de Dados de Transmissão
caso a leitura do registo de estado indique que este se encontra vazio. Esse carácter é,
então, transferido para um Registo de Deslocamento, onde é convertido em série
(serializado) e transmitido através da saída de Dados de Transmissão, antecedido por um
bit de início e seguido por um ou dois bits de paragem. Opcionalmente, poderá ser
adicionada uma bit de paridade (par ou ímpar), o qual é inserido entre o último bit de
dados e o primeiro bit de paragem.
Após o primeiro carácter ter sido carregado no Registo de Dados, é possível proceder a
uma nova leitura do Registo de Estado para verificar a condição de Registo de Dados de
Transmissão Vazio, bem como o estado atual do periférico. Caso o registo esteja vazio,
poderá ser carregado um novo carácter para transmissão, mesmo que o primeiro ainda
esteja em fase de envio, graças ao mecanismo de buffer duplo. O segundo carácter será
automaticamente transferido para o Registo de Deslocamento assim que a transmissão do
primeiro for concluída. Este processo repete-se sucessivamente até que todos os
caracteres tenham sido devidamente transmitidos.

13
Figura 4. Fluxograma do processo de transmissão

7.3. Recepção de dados


A receção de dados provenientes de um periférico é realizada através da entrada de Dados
de Receção (Receive Data). O MC6850 ACIA oferece três opções de divisão de relógio:
divisão por 1 (÷1), por 16 (÷16) e por 64 (÷64). A divisão por 1 é utilizada quando o
relógio externo está sincronizado com os dados recebidos, enquanto as divisões por 16 e
64 são empregues para sincronização interna. Nos modos de divisão por 16 e 64, a
sincronização de bits é iniciada pela deteção de 8 ou 32 amostras consecutivas em nível
baixo na linha de receção, respetivamente. A funcionalidade de eliminação de bits de
início falsos assegura que pelo menos metade de um bit de início foi recebido antes que
o relógio interno se sincronize com o tempo de bit.
Durante a recepção de um carácter, a paridade (par ou ímpar) é verificada, e quaisquer
erros detetados são indicados no Registo de Estado (Status Register), juntamente com
erros de enquadramento, de sobrecarga e a indicação de que o Registo de Dados de
Receção (Receive Data Register) está cheio. Numa sequência típica de receção, o Registo
de Estado é lido para determinar se um carácter foi recebido de um periférico. Se o
Registo de Dados de Receção estiver cheio, o carácter é colocado no barramento de 8 bits
da ACIA quando um comando de Leitura de Dados (Read Data) é emitido pela Unidade
de Microprocessador (MPU). Quando a paridade é selecionada para uma palavra de 7 bits
(7 bits mais paridade), o recetor elimina o bit de paridade (D7=0), de modo que apenas
os dados são transferidos para a MPU. Esta funcionalidade reduz a necessidade de
programação adicional na MPU.
O Registo de Estado pode continuar a ser lido para determinar quando outro carácter está
disponível no Registo de Dados de Receção. O recetor é também duplamente armazenado
em buffer, permitindo que um carácter seja lido do registo de dados enquanto outro
carácter está a ser recebido no registo de deslocamento. Esta sequência continua até que
todos os caracteres tenham sido recebidos.

14
Figura 5. Fluxograma do processo de recepção

7.4. Controle de Erros


O ACIA é capaz de detectar e sinalizar erros como:
• Erro de Paridade: Bit de paridade não condiz com os dados.
• Erro de Framing: Ausência de bit de parada correto.
• Overrun: Novo dado chega antes do processador ler o anterior.
Esses erros são indicados por bits específicos no Registrador de Status, permitindo que
o processador tome as devidas ações de correção ou retransmissão.

7.5. Uso de Interrupções


O ACIA pode ser configurado para gerar interrupções nas seguintes condições:
• Dado recebido.
• Buffer de transmissão livre.
• Detecção de erro.
Essa funcionalidade permite ao processador trabalhar em outras tarefas e responder
apenas quando necessário, melhorando a eficiência do sistema.

15
8. Funções de entrada/saída e sinais de interface do ACIA para MPU

O ACIA (Adaptador de Interface de Comunicações Assíncronas) comunica com a


Unidade de Microprocessador M6800 (MPU) através de um barramento de dados
bidirecional de 8 bits, três linhas de seleção de chip (chip select), uma linha de seleção de
registo, uma linha de pedido de interrupção, uma linha de leitura/escrita (R/W) e uma
linha de ativação (Enable). Estes sinais permitem que a MPU exerça controlo total sobre
o funcionamento do ACIA.

8.1. Dados Bidirecionais do ACIA (D0–D7)

As linhas de dados bidirecionais (D0 a D7) são responsáveis pela transferência de dados
entre o ACIA e a MPU. Os circuitos de saída do barramento de dados são do tipo "três
estados" (three-state), o que significa que permanecem em alta impedância (estado
desligado), ou seja, desligados logicamente do barramento exceto durante operações de
leitura por parte da MPU. Este comportamento evita conflitos no barramento de dados
quando múltiplos dispositivos estão conectados.

8.2. Sinal de Ativação do ACIA (E)

O sinal de ativação, designado por E, é uma entrada compatível com lógica TTL de alta
impedância. Este sinal ativa os buffers de entrada/saída de dados do barramento e
sincroniza a entrada e saída de dados no ACIA. Em funcionamento típico, o sinal E é
derivado do relógio φ2 do MC6800 ou do relógio E do MC6809, servindo para temporizar
as operações de leitura e escrita de forma precisa.

8.3. Leitura/Escrita (R/W)

A linha de Leitura/Escrita é uma entrada de alta impedância compatível com lógica TTL,
utilizada para controlar a direcção do fluxo de dados através da interface de barramento
de dados de entrada/saída do ACIA. Quando esta linha se encontra em nível lógico alto
(indicando um ciclo de leitura do microprocessador), os drivers de saída do ACIA são
activados e é lido o registo previamente seleccionado. Quando em nível lógico baixo, os
drivers de saída são desactivados e o microprocessador procede à escrita de dados no
registo seleccionado. Assim, o sinal R/W permite seleccionar entre registos de leitura e
registos de escrita dentro do ACIA.

8.4. Selecção de Chip (CS0, CS1, CS2)

Estas três linhas de entrada, também compatíveis com TTL e de alta impedância, são
responsáveis pela activação do ACIA no barramento. O adaptador é seleccionado quando
CS0 e CS1 estão em nível alto e CS2 em nível baixo. A comunicação de dados entre o
microprocessador e o ACIA é então efectuada sob controlo dos sinais de activação
(Enable), leitura/escrita (R/W) e selecção de registo (RS).

16
8.5. Selecção de Registo (RS)

A linha RS (Register Select) é uma entrada de alta impedância compatível com TTL. Um
nível lógico alto nesta linha selecciona os registos de dados de transmissão/recepção,
enquanto um nível lógico baixo selecciona os registos de controlo/estado. A linha R/W
actua em conjunto com a linha RS para aceder correctamente aos registos de leitura ou
escrita associados a cada funcionalidade.

8.6. Pedido de Interrupção (IRQ)

A linha IRQ é uma saída activa em nível baixo, de colector aberto (sem resistência de
pull-up interna), compatível com TTL, e é utilizada para gerar interrupções no
microprocessador. A saída mantém-se em estado activo enquanto persistir a condição que
originou a interrupção, desde que a correspondente habilitação interna esteja activa. O bit
de estado IRQ, quando em nível alto, indica que a linha de interrupção se encontra activa.

As interrupções podem ser originadas por eventos na secção de transmissão ou recepção


do ACIA. No lado transmissor, uma interrupção ocorre quando a opção de interrupção do
transmissor está activada (CR5•CR6) e o bit de estado Transmitter Data Register Empty
(TDRE) está em nível alto. Este bit indica que o registo de transmissão está disponível
para novos dados, excepto quando inibido pelo sinal Clear to Send (CTS) em nível alto
ou se o ACIA estiver em estado de reinicialização. A interrupção é eliminada após a
escrita de dados no registo de transmissão, ou então por desactivação da interrupção do
transmissor via CR5/CR6, ou ainda pela perda do sinal CTS.

Do lado receptor, a interrupção ocorre quando a opção Receiver Interrupt Enable está
activa e um dos seguintes eventos é detectado: o bit Receive Data Register Full (RDRF)
está alto, ocorre uma condição de Overrun, ou o sinal Data Carrier Detect (DCD) está em
nível alto.

Interrupções causadas por RDRF podem ser eliminadas através da leitura dos dados
recebidos ou da reinicialização do ACIA. Já interrupções originadas por Overrun ou perda
de DCD são limpas após a leitura do registo de estado e posterior leitura do registo de
dados de recepção ou reinicialização do ACIA. A interrupção do receptor pode também
ser desactivada desabilitando a opção Receiver Interrupt Enable.

8.7. Entrada do Relógio

O ACIA dispõe de entradas de relógio independentes e de alta impedância, compatíveis


com níveis lógicos TTL, destinadas à sincronização dos dados tanto na transmissão como
na recepção. Estas entradas permitem a selecção de frequências de relógio equivalentes a
1, 16 ou 64 vezes a taxa de transmissão de dados, conforme os requisitos do sistema.

Relógio de Transmissão (Tx CLK) :A entrada designada Tx CLK é responsável pelo


registo dos dados a serem transmitidos. A activação do processo de transmissão ocorre
na transição descendente (negativa) do sinal de relógio, garantindo uma temporização
precisa da emissão serial de dados.

17
Relógio de Recepção (Rx CLK) :A entrada Rx CLK é utilizada para sincronizar a
recepção dos dados. Quando operando no modo de divisão por 1 (÷1), é essencial que o
sinal de relógio e os dados estejam sincronizados externamente. A aquisição dos bits de
dados é efectuada na transição ascendente (positiva) do sinal de relógio, assegurando uma
recepção fiável e coerente com o protocolo de comunicação.

8.8. Linhas de Entrada/Saída Serial

O ACIA possui duas linhas para transferência de dados. A linha Transmit Data (TX
DATA) é usada para enviar dados, e a linha Receive Data (RX DATA) é usada para
receber dados de um periférico. Antes de transferir os dados, o ACIA adiciona
automaticamente o bit de start. O número de bits de stop e a paridade (par ou ímpar)
também são especificados na palavra de dados por meio dos bits 2, 3 e 4 do registro de
controle. Conforme os dados são recebidos pela linha RX DATA, o ACIA usa o bit de
paridade para verificar a precisão do número de "1"s recebidos e remove os bits de start,
stop e paridade da palavra de dados antes de converter os bits de dados para um formato
paralelo para transferência para a MPU pelo barramento de dados.

8.8.1. Recepção de Dados (Rx Data)

A linha de recepção de dados é uma entrada de alta impedância compatível com níveis
TTL, utilizada para a recepção de informação em formato serial. Quando o ACIA opera
com frequências de relógio de 16 ou 64 vezes a taxa de bits, a sincronização dos dados
recebidos com o sinal de relógio é efectuada internamente. Este mecanismo assegura a
correcta amostragem dos bits de dados, mesmo em ambientes com ligeira instabilidade
no sinal de entrada.

8.8.2. Transmissão de Dados (Tx Data)

A linha de transmissão de dados constitui uma saída serial através da qual os dados são
enviados para um modem ou qualquer outro dispositivo periférico de comunicação. Os
dados são emitidos bit a bit, precedidos por um bit de início e seguidos por bits de
paragem, segundo o protocolo configurado no registo de controlo.

8.9. Controlo de Periféricos

O MC6850 ACIA integra funcionalidades que permitem um controlo limitado de


dispositivos periféricos ou modems, através das seguintes linhas de sinal:

8.9.1. Clear to Send (CTS)

A entrada CTS é uma linha de alta impedância compatível com níveis TTL, utilizada para
controlo automático da transmissão. Quando o sinal CTS está no nível lógico baixo
(ativo), indica que o modem está pronto para receber dados. Se o sinal estiver no nível
alto (inativo), a transmissão é inibida, impedindo que o ACIA envie dados e que o bit de
estado "Transmit Data Register Empty" (TDRE) seja ativado.

18
8.9.2. Request to Send (RTS)

A saída RTS permite que a Unidade de Processamento (MPU) controle um periférico ou


modem através do barramento de dados. O estado desta linha é determinado pelos bits
CR5 e CR6 do registo de controlo do ACIA:

• CR6 = 0 ou CR5 = 1 e CR6 = 1: RTS é colocado no nível lógico baixo (ativo),


sinalizando que o ACIA está pronto para transmitir.
• CR6 = 1 e CR5 = 0: RTS é colocado no nível lógico alto (inativo), indicando
que o ACIA não está pronto para transmitir.
Esta saída pode também ser utilizada para a função "Data Terminal Ready"
(DTR), dependendo da configuração do sistema.

8.10. Data Carrier Detect (DCD)

A entrada DCD é uma linha de alta impedância compatível com níveis TTL, que fornece
controlo automático na receção de dados. Quando o sinal DCD está no nível lógico alto
(inativo), indica que a portadora de dados foi perdida, inibindo e reinicializando a secção
recetora do ACIA. Uma transição de nível baixo para alto nesta linha pode gerar uma
interrupção na MPU, desde que o bit de "Receive Interrupt Enable" esteja ativado. Para o
funcionamento correto desta funcionalidade, o sinal de relógio de receção (Rx CLK) deve
estar ativo.

8.11. Registos Internos do MC6850 ACIA

O MC6850 ACIA dispõe de quatro registos internos fundamentais, organizados em dois


grupos de acesso: dois de leitura (Read-Only) e dois de escrita (Write-Only). Estes
registos são utilizados para controlo, monitorização de estado e transferência de dados
entre o microprocessador e a interface de comunicação serial assíncrona.

8.12. Registo de Dados de Transmissão (TDR)

O registo de dados de transmissão (Transmit Data Register - TDR) é utilizado para


armazenar os dados a serem transmitidos. A escrita neste registo ocorre durante a
transição negativa do sinal de habilitação (E), quando o ACIA é endereçado com RS em
nível lógico alto e R/W em nível lógico baixo.

Ao escrever dados no TDR, o bit de estado "Transmit Data Register Empty" (TDRE) no
registo de estado é colocado em nível lógico baixo, indicando que o registo está ocupado.
Se o transmissor estiver ocioso, a transferência dos dados para o registo de deslocamento
ocorre dentro de um período de tempo equivalente a um bit após a borda de descida do
comando de escrita. Caso contrário, a transferência ocorre imediatamente após a
conclusão da transmissão do caractere anterior.

Após a transferência dos dados, o bit TDRE é novamente colocado em nível lógico alto,
sinalizando que o TDR está vazio e pronto para receber novos dados.
19
8.13. Registo de Dados de Recepção (RDR)

O registo de dados de recepção (Receive Data Register - RDR) armazena os dados


recebidos após a desserialização. Quando um caractere completo é recebido, os dados são
automaticamente transferidos do registo de deslocamento do receptor para o RDR, desde
que este esteja vazio. Este evento faz com que o bit "Receive Data Register Full" (RDRF)
no registo de estado seja colocado em nível lógico alto, indicando que novos dados estão
disponíveis para leitura.

A leitura dos dados ocorre ao endereçar o ACIA com RS e R/W em nível lógico alto,
quando o ACIA está habilitado. Este ciclo de leitura não destrutivo limpa o bit RDRF,
embora os dados permaneçam no RDR até serem sobrescritos por novos dados recebidos.

Se o RDR estiver cheio, a transferência automática de dados do registo de deslocamento


do receptor para o RDR é inibida, e o conteúdo do RDR permanece válido, com o seu
estado atual armazenado no registo de estado.

Figura 6. Tabela de Definição do Conteúdo do Registo ACIA

8.14. Registo de Controlo

O Registo de Controlo do ACIA é constituído por um conjunto de oito bits, acessível


exclusivamente para escrita. Este registo é seleccionado quando ambas as linhas RS
(Register Select) e R/W (Read/Write) se encontram em nível lógico baixo. Através deste
registo, é possível configurar o funcionamento do receptor, do transmissor, das
interrupções e da linha de controlo do modem ou periférico associada ao sinal Request to
Send (RTS).

Figura 7. Registo de controlo

20
Bits de Selecção da Divisão do Contador (CR0 e CR1)

Os bits CR0 e CR1 são responsáveis pela definição da taxa de divisão do sinal de clock
aplicado às secções transmissora e receptora do ACIA. Para além disso, estes bits
desempenham um papel fundamental na reinicialização geral do dispositivo (master
reset), procedimento que limpa o Registo de Estado (com excepção dos bits associados
aos sinais externos CTS e DCD) e reinicializa internamente os blocos de transmissão e
recepção. Esta reinicialização não altera os restantes bits do Registo de Controlo.

É importante notar que, após o arranque inicial do sistema ou na ocorrência de uma falha
de alimentação, os bits CR0 e CR1 devem ser programados em nível lógico alto, de forma
a assegurar a correcta reinicialização do ACIA. Após esse processo, a taxa de divisão do
sinal de relógio pode ser configurada de acordo com os requisitos do sistema. Estes dois
bits permitem seleccionar diferentes factores de divisão do clock, afectando directamente
a taxa de transmissão de dados.

CR0 CR1 Função


0 0 ÷1
0 1 ÷16
1 0 ÷64
1 1 Redefinição Mestre

Exemplo de Uso em Código (Assembly 6800):


; Configura divisor ÷16 e evita reset (bits 0=1, 1=0)
LDAA #%00000001 ; Bit 0=1, Bit 1=0 (÷16)
STAA ACIA_CR ; Escreve no Registro de Controle

; Executa master reset (bits 0=1, 1=1)


LDAA #%00000011
STAA ACIA_CR

Bits de Seleção de Palavra (CR2, CR3, CR4)

Os bits CR2, CR3 e CR4 do registo de controlo do MC6850 ACIA determinam o formato
dos dados transmitidos e recebidos, incluindo o comprimento da palavra, a paridade e o
número de bits de paragem. A configuração destes bits permite adaptar a comunicação
serial a diversos protocolos e requisitos de dispositivos periféricos.

Formato de Codificação

A tabela seguinte apresenta as combinações possíveis destes bits e o correspondente


formato de palavra:

21
CR4 CR3 CR2 Função
0 0 0 7 bits de dados,
paridade par, 2 bits
de paragem
0 0 1 7 bits de dados,
paridade par, 2 bit de
paragem
0 1 0 7 bits de dados,
paridade ímpar, 1 bit
de paragem
0 1 1 7 bits de dados,
paridade ímpar, 1 bit
de paragem
1 0 0 8 bits de dados, sem
paridade par, 2 bits
de paragem
1 0 1 8 bits de dados, sem
paridade par, 1 bits
de paragem
1 1 1 8 bits de dados,
paridade par, 1 bits
de paragem
1 1 1 8 bits de dados,
paridade ímpar, 1
bits de paragem

Notas:

• Comprimento da Palavra:Pode ser configurado para 7 ou 8 bits de dados.


• Paridade:Pode ser par, ímpar ou desativada (sem paridade).
• Bits de Paragem: Pode ser configurado para 1 ou 2 bits.

Estas configurações são aplicadas imediatamente após a escrita no registo de controlo,


sem necessidade de reinicialização do dispositivo.

Bits de Controlo do Transmissor (CR5 e CR6)

Os bits CR5 e CR6 do registo de controlo da ACIA são responsáveis por configurar o
comportamento do transmissor no que diz respeito à geração de interrupções, ao controlo
do sinal RTS (Request to Send) e à transmissão forçada de um nível de interrupção
(espaço lógico) através da linha de dados seriais.

Codificação dos bits CR5 e CR6

CR6 CR5 Função


0 0 A saída RTS é mantida em
nível baixo (estado activo); a

22
interrupção por registo de
dados de transmissão vazio
(TDRE) está desactivada.
0 1 A saída RTS permanece em
nível baixo; a interrupção de
transmissão é activada
quando o registo de dados de
transmissão está vazio.

1 0 A saída RTS é colocada em


nível alto (estado inactivo); a
interrupção de transmissão
está desactivada.
1 1 A saída RTS mantém-se em
nível baixo; um nível de
interrupção (espaço lógico) é
transmitido continuamente
na linha de transmissão (TxD).

Bit de Controlo CR7 – Habilitação de Interrupção de Recepção

O bit CR7do Registo de Controlo (Control Register) da ACIA MC6850 é responsável por
ativar as interrupções relacionadas com a receção de dados. Quando este bit é definido
para 1, as seguintes condições podem gerar uma interrupção:

1. O Registo de Dados de Receção (RDR)está cheio, indicado pelo bit RDRF;


2. Ocorreu uma condição de overrun, ou seja, dados foram recebidos antes que os
anteriores fossem lidos;
3. Houve uma transição de nível baixo para alto na linha de Deteção de Portadora
de Dados (DCD), sinalizando a perda de portadora.

Estas interrupções permitem que a Unidade Central de Processamento (CPU) responda


prontamente a eventos críticos na comunicação serial.

8.15. Registo de Estado (Status Register)

O Registo de Estado é um registo de leitura que fornece informações sobre o estado atual
da ACIA. Cada bit deste registo indica uma condição específica:

23
Bit 0 – Registo de Dados de Receção Cheio (RDRF)

Este bit é definido para 1quando um caractere completo foi recebido e transferido para o
Registo de Dados de Receção. É redefinido para 0 após a leitura do registo pela CPU ou
por uma reinicialização mestre.

Bit 1 – Registo de Dados de Transmissão Vazio (TDRE)

Este bit é definido para 1 quando o Registo de Dados de Transmissão está pronto para
aceitar novos dados. É redefinido para 0 após a escrita de dados no registo.

Bit 2 – Deteção de Portadora de Dados (DCD)

Este bit é definido para 1 quando a entrada DCD está em nível alto, indicando a ausência
de portadora. Uma transição de nível baixo para alto nesta entrada gera uma interrupção
se o bit CR7 estiver ativado. O bit permanece em 1 até que o Registo de Estado e o Registo
de Dados de Receção sejam lidos ou até que ocorra uma reinicialização mestre.

Bit 3 – Pronto para Enviar (CTS)

Este bit reflete o estado da entrada CTS. Um nível baixo indica que o dispositivo
periférico está pronto para receber dados. Um nível alto inibe a definição do bit TDRE,
impedindo a transmissão de novos dados.

Bit 4 – Erro de Enquadramento (Framing Error)

ste bit é definido para 1 quando o caractere recebido não está corretamente enquadrado
por bits de início e de paragem, indicando um erro de sincronização.

Bit 5 – Erro de Overrun

Este bit é definido para 1 quando novos dados são recebidos antes que os dados anteriores
tenham sido lidos, resultando na perda de dados. É redefinido após a leitura do Registo
de Dados de Receção ou por uma reinicialização mestre.

Bit 6 – Erro de Paridade

Este bit é definido para 1 quando o número de bits de valor lógico alto no caractere
recebido não corresponde à paridade configurada (par ou ímpar).

Bit 7 – Pedido de Interrupção (IRQ)

Este bit é definido para 1 quando ocorre uma condição de interrupção, como as
mencionadas anteriormente, e o respetivo bit de habilitação de interrupção está ativado.

24
Figura 8. Registo de estado

Exemplo Completo de Programa com ACIA (Assembly para M6800)

Objetivo: Enviar uma mensagem de texto ("HELLO") por uma linha serial
utilizando o ACIA.

; Transmite uma string com os caracteres "HELLO"


; A string termina com 0 (sentinela)

ORG $8000
INIT:
LDAA #$15 ; Configuração do ACIA
STAA $8001
LDX #MSG ; Aponta para a mensagem
SEND_LOOP:
LDAA ,X ; Lê o próximo caractere
BEQ DONE ; Se for zero, fim da string

WAIT_TX:
LDAA $8001 ; Verifica se buffer de transmissão está livre
BITA #$02
BEQ WAIT_TX

LDAA ,X ; Carrega o caractere novamente


STAA $8000 ; Transmite via ACIA
INX ; Vai para o próximo caractere
BRA SEND_LOOP
DONE:
RTS
MSG:
.STRING "HELLO"
.BYTE 0 ; Fim da string

Exemplo 2 de Código com o ACIA MC6850 (Assembly 6800)


Endereço hipotético do ACIA: $8000
Assume-se um mapeamento simples:
• $8000 → Registrador de Dados
• $8001 → Registrador de Controle / Status

25
; Inicialização do ACIA
; Inicializa o ACIA com:
; - 8 bits de dados
; - 1 bit de stop
; - Sem paridade
; - Clock ÷16
; - Interrupção de recepção habilitada

LDAA #$15 ; Carrega configuração no acumulador A


; bin: 00010101
; bit 7-6 = 00 -> RTS ativo
; bit 5 = 1 -> habilita interrupção de recepção
; bit 4-2 = 010 -> 8 bits, 1 stop, sem paridade
; bit 1-0 = 01 -> clock ÷16
STAA $8001 ; Envia para registrador de controle do ACIA
RTS ; Retorna da sub-rotina
; Transmissão de um caractere
; Espera o ACIA estar pronto e transmite o caractere 'A'

TRANSMIT_CHAR:
LDAA #$41 ; ASCII de 'A'
WAIT_TX_READY:
LDAA $8001 ; Lê registrador de status
BITA #$02 ; Verifica se bit TDRE (bit 1) está em 1
BEQ WAIT_TX_READY ; Espera até o buffer de transmissão estar vazio
STAA $8000 ; Envia o caractere ao registrador de dados
RTS ; Fim da sub-rotina

; Recepção de um caractere
RECEIVE:
WAIT_RX_READY:
LDAA $8001 ; Lê status
BITA #$01 ; Verifica se RDRF (bit 0) está setado
BEQ WAIT_RX_READY
LDAA $8000 ; Lê o dado recebido

26
RTS

Exemplo 3 – Ecoar caractere recebido (Loop de recepção e envio)

; Recebe um caractere e o devolve imediatamente pela porta serial

ECHO_LOOP:
WAIT_RECEIVE:
LDAA $8001
BITA #$01 ; Verifica se chegou dado
BEQ WAIT_RECEIVE
LDAA $8000 ; Lê o caractere

WAIT_TRANSMIT:
LDAA $8001
BITA #$02 ; Verifica se pode transmitir
BEQ WAIT_TRANSMIT
STAA $8000 ; Envia o mesmo caractere
BRA ECHO_LOOP ; Repete para o próximo

27
9. Conclusão
O ACIA, representado pelo modelo MC6850, é uma solução eficiente e confiável para
comunicação serial assíncrona em sistemas baseados no microprocessador M6800. Sua
arquitetura modular, composta por registradores de controle, buffers de dados,
conversores serial-paralelo e lógica de interrupções, permite ao processador comunicar-
se com periféricos seriais sem sobrecarga significativa.
Com suporte a paridade configurável, bits de parada, controle de fluxo via RTS/CTS
e interrupções automáticas, o ACIA se adapta a diferentes exigências de comunicação,
tornando-se adequado para aplicações como automação industrial, redes de sensores,
modems e terminais seriais. A presença de buffers internos garante operações full-duplex,
minimizando o risco de perda de dados.
Além de sua relevância prática, o ACIA é uma ferramenta pedagógica valiosa. Seu estudo
oferece uma introdução direta à programação de periféricos, ao uso de registradores
mapeados em memória e ao tratamento de erros e interrupções, elementos centrais no
desenvolvimento de sistemas embarcados e interfaces seriais modernas.
Em resumo, o MC6850 continua sendo uma referência sólida no ensino e prática da
comunicação digital, unindo simplicidade de uso com flexibilidade funcional,
características que consolidaram seu uso em diversas gerações de projetos embarcados e
educacionais.

28
10. Referências Bibliográficas
• Bishop, R. (1979). Basic microprocessors and the 6800. Hayden Book Company.
ISBN 0-8104-0758-2.
• Leventhal, L. A. Basic Microprocessors and the 6800. 2.ª ed. Englewood
Cliffs, N.J.: Prentice-Hall, 1986.
• MC6850 ACIA – Beyond Brown] Acesado em:
([Link]
• [A Retro Motorola MC6850 ACIA Baud Rate Generator – Digicool Things].
Acessado em :([Link]
rate-generator/)

29

Você também pode gostar