Microprocessador - Guia Rápido
Microprocessador é uma unidade de controle de um microcomputador, fabricada em um pequeno chip capaz de realizar operações ALU (Arithmetic Logical Unit) e se comunicar com os demais dispositivos a ele conectados.
O microprocessador consiste em uma ALU, matriz de registro e uma unidade de controle. ALU executa operações aritméticas e lógicas nos dados recebidos da memória ou de um dispositivo de entrada. A matriz de registro consiste em registros identificados por letras como B, C, D, E, H, L e acumulador. A unidade de controle controla o fluxo de dados e instruções dentro do computador.
Diagrama de blocos de um microcomputador básico
Como funciona um microprocessador?
O microprocessador segue uma sequência: Buscar, Decodificar e então Executar.
Inicialmente, as instruções são armazenadas na memória em uma ordem sequencial. O microprocessador busca essas instruções da memória, então as decodifica e executa essas instruções até que a instrução STOP seja alcançada. Posteriormente, ele envia o resultado em binário para a porta de saída. Entre esses processos, o registro armazena os dados temporariamente e a ALU executa as funções de computação.
Lista de termos usados em um microprocessador
Aqui está uma lista de alguns dos termos mais usados em um microprocessador -
Instruction Set - É o conjunto de instruções que o microprocessador pode entender.
Bandwidth - É o número de bits processados em uma única instrução.
Clock Speed- Determina o número de operações por segundo que o processador pode realizar. É expresso em megahertz (MHz) ou gigahertz (GHz). Também é conhecido como Clock Rate.
Word Length- Depende da largura do barramento de dados interno, registros, ALU, etc. Um microprocessador de 8 bits pode processar dados de 8 bits por vez. O comprimento da palavra varia de 4 bits a 64 bits, dependendo do tipo de microcomputador.
Data Types - O microprocessador tem vários formatos de tipo de dados, como binários, BCD, ASCII, números com e sem sinal.
Características de um microprocessador
Aqui está uma lista de alguns dos recursos mais importantes de qualquer microprocessador -
Cost-effective - Os chips microprocessadores estão disponíveis a preços baixos e resultam em baixo custo.
Size - O microprocessador é de pequeno tamanho, portanto, é portátil.
Low Power Consumption - Os microprocessadores são fabricados com tecnologia de semicondutor de óxido de metal, com baixo consumo de energia.
Versatility - Os microprocessadores são versáteis, pois podemos usar o mesmo chip em várias aplicações, configurando o programa de software.
Reliability - A taxa de falha de um IC em microprocessadores é muito baixa, portanto, é confiável.
Um microprocessador pode ser classificado em três categorias -
Processador RISC
RISC significa Reduced Instruction Set Computer. Ele é projetado para reduzir o tempo de execução, simplificando o conjunto de instruções do computador. Usando processadores RISC, cada instrução requer apenas um ciclo de clock para executar os resultados em tempo de execução uniforme. Isso reduz a eficiência, pois há mais linhas de código, portanto, mais RAM é necessária para armazenar as instruções. O compilador também precisa trabalhar mais para converter instruções de linguagem de alto nível em código de máquina.
Alguns dos processadores RISC são -
- Power PC: 601, 604, 615, 620
- DEC Alpha: 210642, 211066, 21068, 21164
- MIPS: Processador RISC TS (R10000)
- PA-RISC: HP 7100LC
Arquitetura de RISC
A arquitetura do microprocessador RISC usa um conjunto de instruções altamente otimizado. É usado em dispositivos portáteis como o Apple iPod devido à sua eficiência de energia.
Características do RISC
As principais características de um processador RISC são as seguintes -
Consiste em instruções simples.
Ele suporta vários formatos de tipo de dados.
Ele utiliza modos de endereçamento simples e instruções de comprimento fixo para pipelining.
Suporta registro para uso em qualquer contexto.
Tempo de execução de um ciclo.
As instruções “LOAD” e “STORE” são usadas para acessar o local da memória.
Consiste em maior número de registros.
Consiste em menos número de transistores.
Processador CISC
CISC significa Complex Instruction Set Computer. Ele é projetado para minimizar o número de instruções por programa, ignorando o número de ciclos por instrução. A ênfase está na construção de instruções complexas diretamente no hardware.
O compilador tem que fazer muito pouco trabalho para traduzir uma linguagem de alto nível em linguagem de nível de montagem / código de máquina porque o comprimento do código é relativamente curto, portanto, muito pouca RAM é necessária para armazenar as instruções.
Alguns dos processadores CISC são -
- IBM 370/168
- VAX 11/780
- Intel 80486
Arquitetura do CISC
Sua arquitetura foi projetada para diminuir o custo de memória porque mais armazenamento é necessário em programas maiores, resultando em um custo de memória mais alto. Para resolver isso, o número de instruções por programa pode ser reduzido incorporando o número de operações em uma única instrução.
Características do CISC
- Variedade de modos de endereçamento.
- Maior número de instruções.
- Tamanho variável de formatos de instrução.
- Vários ciclos podem ser necessários para executar uma instrução.
- A lógica de decodificação de instruções é complexa.
- Uma instrução é necessária para oferecer suporte a vários modos de endereçamento.
Processadores Especiais
Esses são os processadores projetados para alguns fins especiais. Alguns dos processadores especiais são brevemente discutidos -
Coprocessador
Um coprocessador é um microprocessador especialmente projetado, que pode lidar com sua função específica muitas vezes mais rápido do que o microprocessador comum.
For example - Co-processador matemático.
Alguns coprocessadores matemáticos da Intel são -
- 8087 usado com 8086
- 80287-usado com 80286
- 80387 usado com 80386
Processador de entrada / saída
É um microprocessador especialmente projetado com memória local própria, que é usada para controlar dispositivos de E / S com envolvimento mínimo da CPU.
For example -
- Controlador DMA (acesso direto à memória)
- Controlador de teclado / mouse
- Controlador de display gráfico
- Controlador de porta SCSI
Transputer (computador transistor)
Um transputador é um microprocessador especialmente projetado com sua própria memória local e tendo links para conectar um transputador a outro para comunicações entre processadores. Ele foi projetado pela primeira vez em 1980 pela Inmos e é voltado para a utilização da tecnologia VLSI.
Um transputador pode ser usado como um sistema de processador único ou pode ser conectado a links externos, o que reduz o custo de construção e aumenta o desempenho.
For example - T212 de 16 bits, T425 de 32 bits, os processadores de ponto flutuante (T800, T805 e T9000).
DSP (processador de sinal digital)
Este processador é especialmente projetado para processar os sinais analógicos em uma forma digital. Isso é feito amostrando o nível de tensão em intervalos regulares de tempo e convertendo a tensão naquele instante em uma forma digital. Este processo é realizado por um circuito denominado conversor analógico para digital, conversor A para D ou ADC.
Um DSP contém os seguintes componentes -
Program Memory - Armazena os programas que o DSP usará para processar dados.
Data Memory - Armazena as informações a serem processadas.
Compute Engine - Realiza o processamento matemático, acessando o programa da memória do programa e os dados da memória de dados.
Input/Output - Ele se conecta ao mundo exterior.
Suas aplicações são -
- Síntese de som e música
- Compressão de áudio e vídeo
- Processamento de sinal de vídeo
- Aceleração de gráficos 2D e 3D.
For example - Série TMS 320 da Texas Instrument, por exemplo, TMS 320C40, TMS320C50.
8085 é pronunciado como microprocessador "oitenta e oitenta e cinco". É um microprocessador de 8 bits projetado pela Intel em 1977 usando a tecnologia NMOS.
Possui a seguinte configuração -
- Barramento de dados de 8 bits
- Barramento de endereço de 16 bits, que pode endereçar até 64 KB
- Um contador de programa de 16 bits
- Um ponteiro de pilha de 16 bits
- Seis registradores de 8 bits dispostos em pares: BC, DE, HL
- Requer alimentação de + 5 V para operar em relógio de fase única de 3,2 MHz
É utilizado em máquinas de lavar, fornos de microondas, telefones celulares, etc.
8085 Microprocessador - Unidades Funcionais
8085 consiste nas seguintes unidades funcionais -
Acumulador
É um registrador de 8 bits usado para realizar operações aritméticas, lógicas, I / O e LOAD / STORE. Ele é conectado ao barramento de dados interno e ALU.
Unidade aritmética e lógica
Como o nome sugere, ele executa operações aritméticas e lógicas como adição, subtração, E, OU, etc. em dados de 8 bits.
Registro de uso geral
Existem 6 registros de propósito geral no processador 8085, ou seja, B, C, D, E, H e L. Cada registro pode conter dados de 8 bits.
Esses registradores podem trabalhar em par para armazenar dados de 16 bits e sua combinação de emparelhamento é como BC, DE e HL.
Contador de programa
É um registro de 16 bits usado para armazenar a localização do endereço de memória da próxima instrução a ser executada. O microprocessador incrementa o programa sempre que uma instrução está sendo executada, de forma que o contador do programa aponte para o endereço de memória da próxima instrução a ser executada.
Ponteiro de pilha
É também um registro de 16 bits que funciona como pilha, que sempre é incrementado / decrementado em 2 durante as operações push & pop.
Registro temporário
É um registrador de 8 bits, que contém os dados temporários de operações aritméticas e lógicas.
Registro de bandeira
É um registrador de 8 bits com cinco flip-flops de 1 bit, que mantém 0 ou 1, dependendo do resultado armazenado no acumulador.
Este é o conjunto de 5 flip-flops -
- Sinal (S)
- Zero (Z)
- Transporte auxiliar (AC)
- Paridade (P)
- Carregar (C)
A posição do bit é mostrada na tabela a seguir -
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|
S | Z | AC | P | CY |
Registro e decodificador de instrução
É um registrador de 8 bits. Quando uma instrução é buscada na memória, ela é armazenada no registrador Instruction. O decodificador de instruções decodifica as informações presentes no registro de instruções.
Unidade de tempo e controle
Ele fornece tempo e sinal de controle para que o microprocessador execute as operações. A seguir estão os sinais de tempo e controle, que controlam os circuitos externos e internos -
- Sinais de controle: READY, RD ', WR', ALE
- Sinais de status: S0, S1, IO / M '
- Sinais DMA: HOLD, HLDA
- Sinais de RESET: RESET IN, RESET OUT
Controle de interrupção
Como o nome sugere, ele controla as interrupções durante um processo. Quando um microprocessador está executando um programa principal e sempre que ocorre uma interrupção, o microprocessador muda o controle do programa principal para processar a solicitação de entrada. Após a conclusão da solicitação, o controle volta para o programa principal.
Existem 5 sinais de interrupção no microprocessador 8085: INTR, RST 7.5, RST 6.5, RST 5.5, TRAP.
Controle de entrada / saída serial
Ele controla a comunicação de dados seriais usando estas duas instruções: SID (dados de entrada serial) e SOD (dados de saída serial).
Buffer de endereço e buffer de dados de endereço
O conteúdo armazenado no ponteiro da pilha e no contador do programa é carregado no buffer de endereço e no buffer de dados de endereço para se comunicar com a CPU. A memória e os chips de E / S são conectados a esses barramentos; a CPU pode trocar os dados desejados com a memória e os chips de E / S.
Barramento de endereços e barramento de dados
O barramento de dados transporta os dados a serem armazenados. É bidirecional, enquanto o barramento de endereço leva a localização para onde deve ser armazenado e é unidirecional. É usado para transferir os dados e dispositivos de E / S de endereço.
Arquitetura 8085
Tentamos descrever a arquitetura de 8085 com a seguinte imagem -
A imagem a seguir descreve o diagrama de pinos do microprocessador 8085 -
Os pinos de um microprocessador 8085 podem ser classificados em sete grupos -
Endereço de ônibus
A15-A8, ele carrega os 8 bits mais significativos de endereço de memória / E / S.
Barramento de dados
AD7-AD0, ele carrega o endereço de 8 bits menos significativo e o barramento de dados.
Sinais de controle e status
Esses sinais são usados para identificar a natureza da operação. Existem 3 sinais de controle e 3 sinais de status.
Três sinais de controle são RD, WR e ALE.
RD - Este sinal indica que o IO ou dispositivo de memória selecionado deve ser lido e está pronto para aceitar os dados disponíveis no barramento de dados.
WR - Este sinal indica que os dados no barramento de dados devem ser gravados em uma memória selecionada ou local de E / S.
ALE- É um pulso positivo gerado quando uma nova operação é iniciada pelo microprocessador. Quando o pulso fica alto, indica o endereço. Quando o pulso desce, indica dados.
Três sinais de status são IO / M, S0 e S1.
IO / M
Este sinal é usado para diferenciar entre operações IO e memória, ou seja, quando está alto indica operação IO e quando está baixo indica operação de memória.
S1 e S0
Esses sinais são usados para identificar o tipo de operação atual.
Fonte de energia
Existem 2 sinais de fonte de alimentação - VCC e VSS. VCC indica fonte de alimentação de + 5 V e VSS indica sinal de aterramento.
Sinais de relógio
Existem 3 sinais de relógio, ou seja, X1, X2, CLK OUT.
X1, X2- Um cristal (RC, LC N / W) é conectado a esses dois pinos e é usado para definir a frequência do gerador de relógio interno. Essa frequência é dividida internamente por 2.
CLK OUT - Este sinal é usado como relógio do sistema para dispositivos conectados ao microprocessador.
Interrompe e sinais iniciados externamente
As interrupções são os sinais gerados por dispositivos externos para solicitar que o microprocessador execute uma tarefa. Existem 5 sinais de interrupção, ou seja, TRAP, RST 7.5, RST 6.5, RST 5.5 e INTR. Discutiremos as interrupções em detalhes na seção de interrupções.
INTA - É um sinal de confirmação de interrupção.
RESET IN - Este sinal é usado para reinicializar o microprocessador, definindo o contador do programa para zero.
RESET OUT - Este sinal é usado para reinicializar todos os dispositivos conectados quando o microprocessador é reinicializado.
READY- Este sinal indica que o dispositivo está pronto para enviar ou receber dados. Se READY estiver baixo, a CPU terá que esperar que READY fique alto.
HOLD - Este sinal indica que outro mestre está solicitando o uso dos barramentos de endereço e dados.
HLDA (HOLD Acknowledge)- Indica que a UCP recebeu a solicitação HOLD e irá ceder o barramento no próximo ciclo de clock. HLDA é definido como baixo após o sinal HOLD ser removido.
Sinais de E / S serial
Existem 2 sinais seriais, ou seja, SID e SOD, e esses sinais são usados para comunicação serial.
SOD (Linha de dados de saída serial) - A SOD de saída é definida / redefinida conforme especificado pela instrução SIM.
SID (Linha de dados de entrada serial) - Os dados nesta linha são carregados no acumulador sempre que uma instrução RIM é executada.
Agora, vamos discutir os modos de endereçamento no microprocessador 8085.
Modos de endereçamento em 8085
Estas são as instruções usadas para transferir os dados de um registro para outro registro, da memória para o registro, e do registro para a memória sem qualquer alteração no conteúdo. Os modos de endereçamento em 8085 são classificados em 5 grupos -
Modo de endereçamento imediato
Nesse modo, os dados de 8/16 bits são especificados na própria instrução como um de seus operando. For example: MVI K, 20F: significa que 20F é copiado no registro K.
Registrar modo de endereçamento
Neste modo, os dados são copiados de um registro para outro. For example: MOV K, B: significa que os dados no registro B são copiados para o registro K.
Modo de endereçamento direto
Neste modo, os dados são copiados diretamente do endereço fornecido para o registro. For example: LDB 5000K: significa que os dados no endereço 5000K são copiados para o registro B.
Modo de endereçamento indireto
Neste modo, os dados são transferidos de um registro para outro usando o endereço apontado pelo registro. For example: MOV K, B: significa que os dados são transferidos do endereço de memória apontado pelo registrador para o registrador K.
Modo de endereçamento implícito
Este modo não requer nenhum operando; os dados são especificados pelo próprio opcode.For example: CMP.
Interrompe em 8085
As interrupções são os sinais gerados pelos dispositivos externos para solicitar que o microprocessador execute uma tarefa. Existem 5 sinais de interrupção, ou seja, TRAP, RST 7.5, RST 6.5, RST 5.5 e INTR.
As interrupções são classificadas nos seguintes grupos com base em seus parâmetros -
Vector interrupt - Neste tipo de interrupção, o endereço de interrupção é conhecido pelo processador. For example: RST7.5, RST6.5, RST5.5, TRAP.
Non-Vector interrupt - Neste tipo de interrupção, o endereço de interrupção não é conhecido pelo processador, portanto, o endereço de interrupção precisa ser enviado externamente pelo dispositivo para realizar as interrupções. For example: INTR.
Maskable interrupt - Neste tipo de interrupção, podemos desabilitar a interrupção escrevendo algumas instruções no programa. For example: RST7.5, RST6.5, RST5.5.
Non-Maskable interrupt - Neste tipo de interrupção, não podemos desabilitar a interrupção escrevendo algumas instruções no programa. For example: ARMADILHA.
Software interrupt- Neste tipo de interrupção, o programador deve adicionar as instruções ao programa para executar a interrupção. Existem 8 interrupções de software em 8085, ou seja, RST0, RST1, RST2, RST3, RST4, RST5, RST6 e RST7.
Hardware interrupt - Existem 5 pinos de interrupção no 8085 usados como interrupções de hardware, ou seja, TRAP, RST7.5, RST6.5, RST5.5, INTA.
Note- NTA não é uma interrupção, ela é usada pelo microprocessador para enviar confirmação. TRAP tem a prioridade mais alta, então RST7.5 e assim por diante.
Rotina de serviço de interrupção (ISR)
Um pequeno programa ou rotina que, quando executado, atende à fonte de interrupção correspondente é chamado de ISR.
ARMADILHA
É uma interrupção não mascarável, tendo a prioridade mais alta entre todas as interrupções. Por padrão, ele fica habilitado até ser reconhecido. Em caso de falha, executa como ISR e envia os dados para a memória de backup. Esta interrupção transfere o controle para o local 0024H.
RST7.5
É uma interrupção mascarável, tendo a segunda prioridade mais alta entre todas as interrupções. Quando esta interrupção é executada, o processador salva o conteúdo do registro do PC na pilha e desvia para o endereço 003CH.
RST 6.5
É uma interrupção mascarável, tendo a terceira maior prioridade entre todas as interrupções. Quando esta interrupção é executada, o processador salva o conteúdo do registro do PC na pilha e desvia para o endereço 0034H.
RST 5.5
É uma interrupção mascarável. Quando esta interrupção é executada, o processador salva o conteúdo do registro do PC na pilha e desvia para o endereço 002CH.
INTR
É uma interrupção mascarável, tendo a prioridade mais baixa entre todas as interrupções. Ele pode ser desativado reiniciando o microprocessador.
Quando INTR signal goes high, os seguintes eventos podem ocorrer -
O microprocessador verifica o status do sinal INTR durante a execução de cada instrução.
Quando o sinal INTR está alto, o microprocessador completa sua instrução atual e envia o sinal de confirmação de interrupção baixa ativo.
Quando as instruções são recebidas, o microprocessador salva o endereço da próxima instrução na pilha e executa a instrução recebida.
Vamos dar uma olhada na programação do 8085 Microprocessor.
Os conjuntos de instruções são códigos de instruções para realizar alguma tarefa. É classificado em cinco categorias.
S.No. | Instrução e descrição |
---|---|
1 | Instruções de controle A seguir está a tabela que mostra a lista de instruções de controle com seus significados. |
2 | Instruções Lógicas A seguir está a tabela que mostra a lista de instruções lógicas com seus significados. |
3 | Instruções de ramificação A seguir está a tabela que mostra a lista de instruções de Ramificação com seus significados. |
4 | Instruções Aritméticas A seguir está a tabela que mostra a lista de instruções aritméticas com seus significados. |
5 | Instruções de transferência de dados A seguir está a tabela que mostra a lista de instruções de transferência de dados com seus significados. |
8085 - Programas de demonstração
Agora, vamos dar uma olhada em algumas demonstrações do programa usando as instruções acima -
Adicionando dois números de 8 bits
Escreva um programa para adicionar dados no local de memória 3005H e 3006H e armazenar o resultado no local de memória 3007H.
Problem demo -
(3005H) = 14H
(3006H) = 89H
Result -
14H + 89H = 9DH
O código do programa pode ser escrito assim -
LXI H 3005H : "HL points 3005H"
MOV A, M : "Getting first operand"
INX H : "HL points 3006H"
ADD M : "Add second operand"
INX H : "HL points 3007H"
MOV M, A : "Store result at 3007H"
HLT : "Exit program"
Trocando as localizações de memória
Escreva um programa para trocar os dados nos locais de memória 5000M e 6000M.
LDA 5000M : "Getting the contents at5000M location into accumulator"
MOV B, A : "Save the contents into B register"
LDA 6000M : "Getting the contents at 6000M location into accumulator"
STA 5000M : "Store the contents of accumulator at address 5000M"
MOV A, B : "Get the saved contents back into A register"
STA 6000M : "Store the contents of accumulator at address 6000M"
Organizar os números em ordem crescente
Escreva um programa para organizar os primeiros 10 números do endereço de memória 3000H em ordem crescente.
MVI B, 09 :"Initialize counter"
START :"LXI H, 3000H: Initialize memory pointer"
MVI C, 09H :"Initialize counter 2"
BACK: MOV A, M :"Get the number"
INX H :"Increment memory pointer"
CMP M :"Compare number with next number"
JC SKIP :"If less, don’t interchange"
JZ SKIP :"If equal, don’t interchange"
MOV D, M
MOV M, A
DCX H
MOV M, D
INX H :"Interchange two numbers"
SKIP:DCR C :"Decrement counter 2"
JNZ BACK :"If not zero, repeat"
DCR B :"Decrement counter 1"
JNZ START
HLT :"Terminate program execution"
O microprocessador 8086 é uma versão aprimorada do microprocessador 8085 que foi projetado pela Intel em 1976. É um microprocessador de 16 bits com 20 linhas de endereço e 16 linhas de dados que fornece até 1 MB de armazenamento. Ele consiste em um poderoso conjunto de instruções, que fornece operações como multiplicação e divisão facilmente.
Ele suporta dois modos de operação, ou seja, modo máximo e modo mínimo. O modo máximo é adequado para sistemas com vários processadores e o modo mínimo é adequado para sistemas com um único processador.
Características do 8086
As características mais proeminentes de um microprocessador 8086 são as seguintes -
Ele tem uma fila de instruções, que é capaz de armazenar seis bytes de instrução da memória, resultando em um processamento mais rápido.
Foi o primeiro processador de 16 bits com ALU de 16 bits, registradores de 16 bits, barramento de dados interno e barramento de dados externo de 16 bits, resultando em um processamento mais rápido.
Está disponível em 3 versões com base na frequência de operação -
8086 → 5 MHz
8086-2 → 8 MHz
(c) 8086-1 → 10 MHz
Ele usa dois estágios de pipelining, ou seja, Fetch Stage e Execute Stage, que melhora o desempenho.
O estágio de busca pode pré-buscar até 6 bytes de instruções e armazená-los na fila.
O estágio de execução executa essas instruções.
Possui 256 interrupções vetorizadas.
Ele consiste em 29.000 transistores.
Comparação entre microprocessador 8085 e 8086
Size - 8085 é um microprocessador de 8 bits, enquanto 8086 é um microprocessador de 16 bits.
Address Bus - 8085 tem barramento de endereço de 16 bits, enquanto 8086 tem barramento de endereço de 20 bits.
Memory - O 8085 pode acessar até 64 KB, enquanto o 8086 pode acessar até 1 Mb de memória.
Instruction - 8085 não tem uma fila de instruções, enquanto 8086 tem uma fila de instruções.
Pipelining - 8085 não oferece suporte a uma arquitetura em pipeline, enquanto o 8086 oferece suporte a uma arquitetura em pipeline.
I/O - 8085 pode endereçar 2 ^ 8 = 256 E / S, enquanto 8086 pode acessar 2 ^ 16 = 65.536 E / S.
Cost - O custo do 8085 é baixo, enquanto o do 8086 é alto.
Arquitetura de 8086
O diagrama a seguir descreve a arquitetura de um microprocessador 8086 -
O microprocessador 8086 é dividido em duas unidades funcionais, ou seja, EU (Unidade de Execução) e BIU (Unidade de interface de barramento).
EU (Unidade de Execução)
A unidade de execução fornece instruções para a BIU informando de onde buscar os dados e então decodificar e executar essas instruções. Sua função é controlar as operações nos dados usando o decodificador de instruções e ALU. EU não tem conexão direta com barramentos de sistema, conforme mostrado na figura acima, ele executa operações sobre dados por meio de BIU.
Vamos agora discutir as partes funcionais dos microprocessadores 8086.
ALU
Ele lida com todas as operações aritméticas e lógicas, como operações +, -, ×, /, OR, AND, NOT.
Registro de bandeira
É um registrador de 16 bits que se comporta como um flip-flop, ou seja, muda seu estado de acordo com o resultado armazenado no acumulador. Possui 9 sinalizadores e eles são divididos em 2 grupos - Sinalizadores condicionais e Sinalizadores de controle.
Sinalizadores condicionais
Representa o resultado da última instrução aritmética ou lógica executada. A seguir está a lista de sinalizadores condicionais -
Carry flag - Este sinalizador indica uma condição de estouro para operações aritméticas.
Auxiliary flag- Quando uma operação é realizada na ALU, resulta em um transporte / carrinho do nibble inferior (ou seja, D0 - D3) para o nibble superior (ou seja, D4 - D7), então este sinalizador é definido, ou seja, o transporte dado pelo bit D3 para D4 é Bandeira AF. O processador usa este sinalizador para realizar a conversão de binário em BCD.
Parity flag- Este sinalizador é usado para indicar a paridade do resultado, ou seja, quando os 8 bits de ordem inferior do resultado contém um número par de 1, então o Sinalizador de Paridade é definido. Para números ímpares de 1, o Sinalizador de Paridade é reiniciado.
Zero flag - Este sinalizador é definido como 1 quando o resultado da operação aritmética ou lógica é zero, caso contrário, ele é definido como 0.
Sign flag - Este sinalizador contém o sinal do resultado, ou seja, quando o resultado da operação é negativo, o sinalizador é definido como 1 e então definido como 0.
Overflow flag - Este sinalizador representa o resultado quando a capacidade do sistema é excedida.
Bandeiras de controle
Sinalizadores de controle controlam as operações da unidade de execução. A seguir está a lista de sinalizadores de controle -
Trap flag- É usado para controle de etapa única e permite ao usuário executar uma instrução por vez para depuração. Se estiver definido, o programa pode ser executado em um modo de etapa única.
Interrupt flag- É um sinalizador de ativação / desativação de interrupção, ou seja, usado para permitir / proibir a interrupção de um programa. É definido como 1 para condição de interrupção habilitada e definido como 0 para condição de interrupção desabilitada.
Direction flag- É usado na operação de string. Como o nome sugere, quando é definido, os bytes da string são acessados do endereço de memória superior para o endereço de memória inferior e vice-a-versa.
Registro de uso geral
Existem 8 registradores de uso geral, ou seja, AH, AL, BH, BL, CH, CL, DH e DL. Esses registros podem ser usados individualmente para armazenar dados de 8 bits e podem ser usados em pares para armazenar dados de 16 bits. Os pares de registradores válidos são AH e AL, BH e BL, CH e CL e DH e DL. É referido como AX, BX, CX e DX respectivamente.
AX register- Também é conhecido como registro de acumulador. É usado para armazenar operandos para operações aritméticas.
BX register- É usado como base cadastral. É usado para armazenar o endereço de base inicial da área de memória dentro do segmento de dados.
CX register- É denominado contador. É usado na instrução de loop para armazenar o contador de loop.
DX register - Este registro é usado para manter o endereço da porta de E / S para instrução de E / S.
Registro de ponteiro de pilha
É um registro de 16 bits, que contém o endereço do início do segmento até o local da memória, onde uma palavra foi armazenada mais recentemente na pilha.
BIU (unidade de interface de barramento)
A BIU cuida de todas as transferências de dados e endereços nos ônibus para a UE, como enviar endereços, buscar instruções da memória, ler dados das portas e da memória, bem como gravar dados nas portas e na memória. EU não tem conexão de direção com barramentos de sistema, então isso é possível com a BIU. EU e BIU estão conectados ao barramento interno.
Possui as seguintes partes funcionais -
Instruction queue- BIU contém a fila de instruções. BIU obtém até 6 bytes das próximas instruções e os armazena na fila de instruções. Quando EU executa instruções e está pronto para sua próxima instrução, ele simplesmente lê a instrução desta fila de instruções, resultando em maior velocidade de execução.
A busca da próxima instrução enquanto a instrução atual é executada é chamada pipelining.
Segment register- BIU possui barramentos de 4 segmentos, ou seja, CS, DS, SS e ES. Ele contém os endereços de instruções e dados na memória, que são usados pelo processador para acessar os locais da memória. Ele também contém 1 registrador de ponteiro IP, que contém o endereço da próxima instrução a ser executada pela UE.
CS- Significa Segmento de Código. É usado para endereçar uma localização de memória no segmento de código da memória, onde o programa executável é armazenado.
DS- Significa segmento de dados. Ele consiste em dados usados pelo programa e são acessados no segmento de dados por um endereço de deslocamento ou o conteúdo de outro registro que contém o endereço de deslocamento.
SS- Significa Stack Segment. Ele lida com memória para armazenar dados e endereços durante a execução.
ES- Significa segmento extra. ES é um segmento de dados adicional, que é usado pela string para conter os dados de destino extras.
Instruction pointer - É um registro de 16 bits usado para armazenar o endereço da próxima instrução a ser executada.
O 8086 foi o primeiro microprocessador de 16 bits disponível no chip DIP (Dual Inline Package) de 40 pinos. Vamos agora discutir em detalhes a configuração dos pinos de um microprocessador 8086.
8086 Pin Diagram
Aqui está o diagrama de pinos do microprocessador 8086 -
Vamos agora discutir os sinais em detalhes -
Power supply and frequency signals
Ele usa alimentação de 5 Vcc em V CC pino 40 e usa aterramento em V SS pino 1 e 20 para sua operação.
Clock signal
O sinal do relógio é fornecido através do Pin-19. Ele fornece tempo para o processador para as operações. Sua frequência é diferente para diferentes versões, ou seja, 5MHz, 8MHz e 10MHz.
Address/data bus
AD0-AD15. São 16 endereços / barramentos de dados. AD0-AD7 transporta dados de byte de ordem inferior e AD8AD15 transporta dados de byte de ordem superior. Durante o primeiro ciclo de clock, ele carrega o endereço de 16 bits e, depois disso, os dados de 16 bits.
Address/status bus
A16-A19 / S3-S6. Estes são os 4 barramentos de endereço / status. Durante o primeiro ciclo de clock, ele carrega o endereço de 4 bits e, posteriormente, os sinais de status.
S7/BHE
BHE significa Bus High Enable. Está disponível no pino 34 e é usado para indicar a transferência de dados usando o barramento de dados D8-D15. Este sinal é baixo durante o primeiro ciclo de clock, depois disso está ativo.
Read($\overline{RD}$)
Ele está disponível no pino 32 e é usado para ler o sinal da operação de leitura.
Ready
Está disponível no pino 22. É um sinal de confirmação dos dispositivos de E / S de que os dados são transferidos. É um sinal alto ativo. Quando está alto, indica que o dispositivo está pronto para transferir dados. Quando está baixo, indica o estado de espera.
RESET
Ele está disponível no pino 21 e é usado para reiniciar a execução. Isso faz com que o processador encerre imediatamente sua atividade atual. Este sinal é ativo alto para os primeiros 4 ciclos de clock para RESET o microprocessador.
INTR
Está disponível no pino 18. É um sinal de solicitação de interrupção, que é amostrado durante o último ciclo de clock de cada instrução para determinar se o processador considerou isso como uma interrupção ou não.
NMI
Significa interrupção não mascarável e está disponível no pino 17. É uma entrada acionada por borda, que causa uma solicitação de interrupção para o microprocessador.
$\overline{TEST}$
Este sinal é como o estado de espera e está disponível no pino 23. Quando este sinal está alto, o processador tem que esperar pelo estado IDLE, caso contrário, a execução continua.
MN/$\overline{MX}$
Significa Mínimo / Máximo e está disponível no pino 33. Indica em que modo o processador deve operar; quando está alto, funciona no modo mínimo e vice-aversa.
INTA
É um sinal de reconhecimento de interrupção e id disponível no pino 24. Quando o microprocessador recebe este sinal, ele reconhece a interrupção.
ALE
Ele significa trava de habilitação de endereço e está disponível no pino 25. Um pulso positivo é gerado cada vez que o processador começa qualquer operação. Este sinal indica a disponibilidade de um endereço válido nas linhas de endereço / dados.
DEN
Significa Data Enable e está disponível no pino 26. É usado para habilitar o Transreceiver 8286. O transreceiver é um dispositivo usado para separar dados do endereço / barramento de dados.
DT/R
Significa sinal de transmissão / recepção de dados e está disponível no pino 27. Ele decide a direção do fluxo de dados através do transreceptor. Quando está alto, os dados são transmitidos e vice-a-versa.
M/IO
Este sinal é usado para distinguir entre as operações de memória e de E / S. Quando está alto indica operação de E / S e quando está baixo indica operação de memória. Ele está disponível no pino 28.
WR
Significa escrever sinal e está disponível no pino 29. É usado para gravar os dados na memória ou no dispositivo de saída dependendo do status do sinal M / IO.
HLDA
Significa sinal de confirmação de retenção e está disponível no pino 30. Este sinal reconhece o sinal de retenção.
HOLD
Este sinal indica ao processador que dispositivos externos estão solicitando acesso aos barramentos de endereço / dados. Ele está disponível no pino 31.
QS1 and QS0
Esses são sinais de status da fila e estão disponíveis nos pinos 24 e 25. Esses sinais fornecem o status da fila de instruções. Suas condições são mostradas na tabela a seguir -
QS 0 | QS 1 | Status |
---|---|---|
0 | 0 | Nenhuma operação |
0 | 1 | Primeiro byte de opcode da fila |
1 | 0 | Esvazie a fila |
1 | 1 | Byte subsequente da fila |
S0, S1, S2
Estes são os sinais de status que fornecem o status da operação, que é usado pelo Bus Controller 8288 para gerar memória e sinais de controle de E / S. Eles estão disponíveis nos pinos 26, 27 e 28. A seguir está a tabela que mostra seus status -
S 2 | S 1 | S 0 | Status |
---|---|---|---|
0 | 0 | 0 | Interromper reconhecimento |
0 | 0 | 1 | Leitura I / O |
0 | 1 | 0 | Gravação de E / S |
0 | 1 | 1 | Halt |
1 | 0 | 0 | Opcode fetch |
1 | 0 | 1 | Memória lida |
1 | 1 | 0 | Gravação de memória |
1 | 1 | 1 | Passiva |
LOCK
Quando este sinal está ativo, indica aos demais processadores para não solicitarem que a UCP saia do barramento do sistema. Ele é ativado usando o prefixo LOCK em qualquer instrução e está disponível no pino 29.
RQ/GT1 and RQ/GT0
Esses são os sinais de Solicitação / Concessão usados por outros processadores solicitando que a CPU libere o barramento do sistema. Quando o sinal é recebido pela CPU, ele envia uma confirmação. RQ / GT 0 tem uma prioridade mais alta do que RQ / GT 1 .
O microprocessador 8086 suporta 8 tipos de instruções -
- Instruções de transferência de dados
- Instruções Aritméticas
- Instruções de manipulação de bits
- Instruções de string
- Instruções de transferência de execução do programa (instruções de filial e loop)
- Instruções de controle do processador
- Instruções de controle de iteração
- Instruções de interrupção
Vamos agora discutir esses conjuntos de instruções em detalhes.
Instruções de transferência de dados
Essas instruções são utilizadas para transferir os dados do operando de origem para o operando de destino. A seguir está a lista de instruções deste grupo -
Instrução para transferir uma palavra
MOV - Usado para copiar o byte ou palavra da fonte fornecida para o destino fornecido.
PPUSH - Usado para colocar uma palavra no topo da pilha.
POP - Usado para levar uma palavra do topo da pilha ao local fornecido.
PUSHA - Usado para colocar todos os registros na pilha.
POPA - Usado para obter palavras da pilha para todos os registros.
XCHG - Usado para trocar os dados de dois locais.
XLAT - Usado para traduzir um byte em AL usando uma tabela na memória.
Instruções para transferência de porta de entrada e saída
IN - Usado para ler um byte ou palavra da porta fornecida para o acumulador.
OUT - Usado para enviar um byte ou palavra do acumulador para a porta fornecida.
Instruções para transferir o endereço
LEA - Usado para carregar o endereço do operando no registro fornecido.
LDS - Usado para carregar o registro DS e outro registro fornecido da memória
LES - Usado para carregar o registro ES e outro registro fornecido da memória.
Instruções para transferir registros de bandeira
LAHF - Usado para carregar AH com o byte baixo do registrador de flag.
SAHF - Usado para armazenar o registro AH no byte baixo do registro do sinalizador.
PUSHF - Usado para copiar o registro do sinalizador no topo da pilha.
POPF - Usado para copiar uma palavra no topo da pilha para o registrador de bandeira.
Instruções Aritméticas
Essas instruções são usadas para realizar operações aritméticas como adição, subtração, multiplicação, divisão, etc.
A seguir está a lista de instruções deste grupo -
Instruções para realizar a adição
ADD - Usado para adicionar o byte fornecido a byte / palavra a palavra.
ADC - Usado para adicionar com transporte.
INC - Usado para incrementar o byte / palavra fornecida em 1.
AAA - Usado para ajustar ASCII após a adição.
DAA - Usado para ajustar o decimal após a operação de adição / subtração.
Instruções para realizar a subtração
SUB - Usado para subtrair o byte do byte / palavra da palavra.
SBB - Usado para realizar subtração com empréstimo.
DEC - Usado para diminuir o byte / palavra fornecida em 1.
NPG - Usado para negar cada bit do byte / palavra fornecido e adicionar o complemento de 1/2.
CMP - Usado para comparar 2 byte / palavra fornecidos.
AAS - Usado para ajustar os códigos ASCII após a subtração.
DAS - Usado para ajustar o decimal após a subtração.
Instrução para fazer multiplicação
MUL - Usado para multiplicar byte sem sinal por byte / palavra por palavra.
IMUL - Usado para multiplicar byte assinado por byte / palavra por palavra.
AAM - Usado para ajustar códigos ASCII após a multiplicação.
Instruções para realizar a divisão
DIV - Usado para dividir a palavra sem sinal por byte ou palavra dupla sem sinal por palavra.
IDIV - Usado para dividir a palavra com sinal por byte ou palavra dupla com sinal por palavra.
AAD - Usado para ajustar os códigos ASCII após a divisão.
CBW - Usado para preencher o byte superior da palavra com as cópias do bit de sinal do byte inferior.
CWD - Usado para preencher a palavra superior da palavra dupla com o bit de sinal da palavra inferior.
Instruções de manipulação de bits
Essas instruções são usadas para realizar operações onde bits de dados estão envolvidos, ou seja, operações como lógico, deslocamento, etc.
A seguir está a lista de instruções deste grupo -
Instruções para realizar operação lógica
NOT - Usado para inverter cada bit de um byte ou palavra.
AND - Usado para adicionar cada bit em um byte / palavra com o bit correspondente em outro byte / palavra.
OR - Usado para multiplicar cada bit em um byte / palavra com o bit correspondente em outro byte / palavra.
XOR - Usado para realizar a operação Exclusive-OR sobre cada bit em um byte / palavra com o bit correspondente em outro byte / palavra.
TEST - Usado para adicionar operandos para atualizar sinalizadores, sem afetar os operandos.
Instruções para realizar operações de turno
SHL/SAL - Usado para deslocar bits de um byte / palavra para a esquerda e colocar zero (S) em LSBs.
SHR - Usado para deslocar bits de um byte / palavra para a direita e colocar zero (S) em MSBs.
SAR - Usado para deslocar bits de um byte / palavra para a direita e copiar o MSB antigo para o novo MSB.
Instruções para realizar operações de rotação
ROL - Usado para girar bits de byte / palavra para a esquerda, ou seja, MSB para LSB e para Carry Flag [CF].
ROR - Usado para girar bits de byte / palavra para a direita, ou seja, LSB para MSB e para Carry Flag [CF].
RCR - Usado para girar bits de byte / palavra para a direita, ou seja, LSB para CF e CF para MSB.
RCL - Usado para girar bits de byte / palavra para a esquerda, ou seja, MSB para CF e CF para LSB.
Instruções de string
String é um grupo de bytes / palavras e sua memória é sempre alocada em uma ordem sequencial.
A seguir está a lista de instruções deste grupo -
REP - Usado para repetir a instrução dada até CX ≠ 0.
REPE/REPZ - Usado para repetir a instrução fornecida até CX = 0 ou sinalizador zero ZF = 1.
REPNE/REPNZ - Usado para repetir a instrução fornecida até CX = 0 ou sinalizador zero ZF = 1.
MOVS/MOVSB/MOVSW - Usado para mover o byte / palavra de uma string para outra.
COMS/COMPSB/COMPSW - Usado para comparar dois bytes / palavras de string.
INS/INSB/INSW - Usado como string / byte / palavra de entrada da porta de E / S para o local de memória fornecido.
OUTS/OUTSB/OUTSW - Usado como string / byte / palavra de saída do local de memória fornecido para a porta de E / S.
SCAS/SCASB/SCASW - Usado para escanear uma string e comparar seu byte com um byte em AL ou string word com uma palavra em AX.
LODS/LODSB/LODSW - Usado para armazenar o byte de string em AL ou a palavra de string em AX.
Instruções de transferência de execução do programa (instruções de ramificação e loop)
Essas instruções são usadas para transferir / ramificar as instruções durante uma execução. Inclui as seguintes instruções -
Instruções para transferir a instrução durante uma execução sem qualquer condição -
CALL - Usado para chamar um procedimento e salvar seu endereço de retorno na pilha.
RET - Usado para retornar do procedimento para o programa principal.
JMP - Usado para pular para o endereço fornecido para prosseguir para a próxima instrução.
Instruções para transferir a instrução durante uma execução com algumas condições -
JA/JNBE - Usado para pular se a instrução acima / não abaixo / igual for satisfeita.
JAE/JNB - Usado para pular se a instrução acima / abaixo for satisfatória.
JBE/JNA - Usado para pular se abaixo / igual / não acima da instrução satisfaz.
JC - Usado para pular se carry flag CF = 1
JE/JZ - Usado para pular se sinalizador igual / zero ZF = 1
JG/JNLE - Usado para pular se a instrução maior / não menor / igual for satisfeita.
JGE/JNL - Usado para pular se for maior que / igual / não menor que a instrução satisfaz.
JL/JNGE - Usado para pular se a instrução for menor / não maior que / igual.
JLE/JNG - Usado para pular se menor que / igual / se não maior que a instrução satisfaz.
JNC - Usado para pular se não houver bandeira de transporte (CF = 0)
JNE/JNZ - Usado para pular se não for igual / zero sinalizador ZF = 0
JNO - Usado para pular se não houver sinalizador de estouro OF = 0
JNP/JPO - Usado para pular se não for paridade / paridade ímpar PF = 0
JNS - Usado para pular se não assinar SF = 0
JO - Usado para pular se o sinalizador de estouro OF = 1
JP/JPE - Usado para pular se paridade / paridade mesmo PF = 1
JS - Usado para pular se sinalizador SF = 1
Instruções de controle do processador
Essas instruções são usadas para controlar a ação do processador, definindo / redefinindo os valores do sinalizador.
A seguir estão as instruções deste grupo -
STC - Usado para definir o sinalizador de transporte CF para 1
CLC - Usado para limpar / redefinir o sinalizador de transporte CF para 0
CMC - Usado para colocar complemento no estado da bandeira de transporte CF.
STD - Usado para definir o sinalizador de direção DF para 1
CLD - Usado para limpar / redefinir o sinalizador de direção DF para 0
STI - Usado para definir o sinalizador de ativação de interrupção para 1, ou seja, ativar a entrada INTR.
CLI - Usado para limpar o sinalizador de ativação de interrupção para 0, ou seja, desativar a entrada INTR.
Instruções de controle de iteração
Essas instruções são usadas para executar as instruções fornecidas várias vezes. A seguir está a lista de instruções deste grupo -
LOOP - Usado para fazer um loop de um grupo de instruções até que a condição seja satisfeita, ou seja, CX = 0
LOOPE/LOOPZ - Usado para fazer um loop de um grupo de instruções até que satisfaça ZF = 1 & CX = 0
LOOPNE/LOOPNZ - Usado para fazer um loop de um grupo de instruções até que satisfaça ZF = 0 & CX = 0
JCXZ - Usado para pular para o endereço fornecido se CX = 0
Instruções de interrupção
Essas instruções são usadas para chamar a interrupção durante a execução do programa.
INT - Usado para interromper o programa durante a execução e chamar o serviço especificado.
INTO - Usado para interromper o programa durante a execução se OF = 1
IRET - Usado para retornar do serviço de interrupção para o programa principal
Interrupté o método de criar uma parada temporária durante a execução do programa e permite que dispositivos periféricos acessem o microprocessador. O microprocessador responde a essa interrupção com umISR (Interrupt Service Routine), que é um programa curto para instruir o microprocessador sobre como lidar com a interrupção.
A imagem a seguir mostra os tipos de interrupções que temos em um microprocessador 8086 -
Interrupções de hardware
A interrupção de hardware é causada por qualquer dispositivo periférico, enviando um sinal através de um pino especificado para o microprocessador.
O 8086 tem dois pinos de interrupção de hardware, ou seja, NMI e INTR. NMI é uma interrupção não mascarável e INTR é uma interrupção mascarável com prioridade mais baixa. Mais um pino de interrupção associado é INTA chamado reconhecimento de interrupção.
NMI
É um único pino de interrupção não mascarável (NMI) com maior prioridade do que o pino de solicitação de interrupção mascarável (INTR) e é do tipo 2 de interrupção.
Quando esta interrupção é ativada, essas ações acontecem -
Conclui a instrução atual em andamento.
Empurra os valores do registrador Flag para a pilha.
Empurra o valor CS (segmento de código) e o valor IP (ponteiro de instrução) do endereço de retorno para a pilha.
O IP é carregado a partir do conteúdo da palavra local 00008H.
CS é carregado a partir do conteúdo da próxima palavra local 0000AH.
O sinalizador de interrupção e o sinalizador de trap são redefinidos como 0.
INTR
O INTR é uma interrupção mascarável porque o microprocessador será interrompido somente se as interrupções forem habilitadas usando a instrução set interrupt flag. Não deve ser habilitado usando a instrução Flag de interrupção de limpeza.
A interrupção INTR é ativada por uma porta de E / S. Se a interrupção estiver habilitada e o NMI estiver desabilitado, o microprocessador primeiro completa a execução atual e envia '0' no pino INTA duas vezes. O primeiro '0' significa que INTA informa o dispositivo externo para ficar pronto e durante o segundo '0' o microprocessador recebe os 8 bits, digamos X, do controlador de interrupção programável.
Essas ações são realizadas pelo microprocessador -
Primeiro completa a instrução atual.
Ativa a saída INTA e recebe o tipo de interrupção, digamos X.
O valor do registro da bandeira, o valor CS do endereço de retorno e o valor IP do endereço de retorno são colocados na pilha.
O valor IP é carregado do conteúdo da localização da palavra X × 4
CS é carregado a partir do conteúdo da localização da próxima palavra.
Sinalizador de interrupção e sinalizador de trap são redefinidos para 0
Interrupções de software
Algumas instruções são inseridas na posição desejada no programa para criar interrupções. Essas instruções de interrupção podem ser usadas para testar o funcionamento de vários manipuladores de interrupção. Inclui -
INT- Instrução de interrupção com número de tipo
É uma instrução de 2 bytes. O primeiro byte fornece o op-code e o segundo byte fornece o número do tipo de interrupção. Existem 256 tipos de interrupções neste grupo.
Sua execução inclui as seguintes etapas -
O valor do registro da bandeira é colocado na pilha.
O valor CS do endereço de retorno e o valor IP do endereço de retorno são colocados na pilha.
O IP é carregado a partir do conteúdo da palavra local 'tipo número' × 4
CS é carregado a partir do conteúdo da localização da próxima palavra.
Sinalizador de interrupção e sinalizador de armadilha são redefinidos para 0
O endereço inicial para a interrupção type0 é 000000H, para a interrupção type1 é 00004H, da mesma forma para type2 é 00008H e …… assim por diante. Os primeiros cinco ponteiros são ponteiros de interrupção dedicados. ie -
TYPE 0 interrupção representa a divisão por situação zero.
TYPE 1 interrupção representa a execução de uma etapa durante a depuração de um programa.
TYPE 2 interrupção representa interrupção NMI não mascarável.
TYPE 3 interrupção representa a interrupção do ponto de interrupção.
TYPE 4 interrupção representa interrupção de estouro.
As interrupções do Tipo 5 ao Tipo 31 são reservadas para outros microprocessadores avançados e as interrupções do Tipo 32 ao Tipo 255 estão disponíveis para interrupções de hardware e software.
INT 3-Break Point Interrupt Instruction
É uma instrução de 1 byte com o código operacional CCH. Essas instruções são inseridas no programa de forma que, quando o processador chegar lá, ele pare a execução normal do programa e siga o procedimento do ponto de interrupção.
Sua execução inclui as seguintes etapas -
O valor do registro da bandeira é colocado na pilha.
O valor CS do endereço de retorno e o valor IP do endereço de retorno são colocados na pilha.
O IP é carregado a partir do conteúdo da palavra localização 3 × 4 = 0000CH
CS é carregado a partir do conteúdo da localização da próxima palavra.
Sinalizador de interrupção e sinalizador de armadilha são redefinidos para 0
INTO - Interromper na instrução de estouro
É uma instrução de 1 byte e seu mnemônico INTO. O op-code para esta instrução é CEH. Como o nome sugere, é uma instrução de interrupção condicional, ou seja, está ativa apenas quando o sinalizador de estouro é definido como 1 e se ramifica para o manipulador de interrupção cujo número de tipo de interrupção é 4. Se o sinalizador de estouro for reiniciado, a execução continua para o próxima instrução.
Sua execução inclui as seguintes etapas -
Os valores do registro da bandeira são colocados na pilha.
O valor CS do endereço de retorno e o valor IP do endereço de retorno são colocados na pilha.
O IP é carregado a partir do conteúdo da localização da palavra 4 × 4 = 00010H
CS é carregado a partir do conteúdo da localização da próxima palavra.
O sinalizador de interrupção e o sinalizador Trap são redefinidos para 0
As diferentes maneiras em que um operando de origem é denotado em uma instrução são conhecidas como addressing modes. Existem 8 modos de endereçamento diferentes na programação do 8086 -
Modo de endereçamento imediato
O modo de endereçamento no qual o operando de dados faz parte da própria instrução é conhecido como modo de endereçamento imediato.
Exemplo
MOV CX, 4929 H, ADD AX, 2387 H, MOV AL, FFH
Registrar modo de endereçamento
Isso significa que o registro é a fonte de um operando para uma instrução.
Exemplo
MOV CX, AX ; copies the contents of the 16-bit AX register into
; the 16-bit CX register),
ADD BX, AX
Modo de endereçamento direto
O modo de endereçamento no qual o endereço efetivo da localização da memória é escrito diretamente na instrução.
Exemplo
MOV AX, [1592H], MOV AL, [0300H]
Registrar modo de endereçamento indireto
Este modo de endereçamento permite que os dados sejam endereçados em qualquer local da memória por meio de um endereço de deslocamento mantido em qualquer um dos seguintes registros: BP, BX, DI e SI.
Exemplo
MOV AX, [BX] ; Suppose the register BX contains 4895H, then the contents
; 4895H are moved to AX
ADD CX, {BX}
Modo de endereçamento baseado
Neste modo de endereçamento, o endereço de deslocamento do operando é dado pela soma do conteúdo dos registros BX / BP e deslocamento de 8 bits / 16 bits.
Exemplo
MOV DX, [BX+04], ADD CL, [BX+08]
Modo de endereçamento indexado
Neste modo de endereçamento, o endereço de deslocamento dos operandos é encontrado adicionando o conteúdo do registrador SI ou DI e deslocamentos de 8 bits / 16 bits.
Exemplo
MOV BX, [SI+16], ADD AL, [DI+16]
Modo de endereçamento baseado em índice
Neste modo de endereçamento, o endereço de deslocamento do operando é calculado somando o registro de base ao conteúdo de um registro de índice.
Exemplo
ADD CX, [AX+SI], MOV AX, [AX+DI]
Com base indexada com modo de deslocamento
Neste modo de endereçamento, o deslocamento dos operandos é calculado adicionando o conteúdo do registrador base. Um índice registra conteúdo e deslocamento de 8 ou 16 bits.
Exemplo
MOV AX, [BX+DI+08], ADD CX, [BX+SI+16]
Multiprocessador significa um conjunto múltiplo de processadores que executa instruções simultaneamente. Existem três configurações básicas de multiprocessador.
- Configuração de coprocessador
- Configuração intimamente acoplada
- Configuração fracamente acoplada
Configuração de coprocessador
Um coprocessador é um circuito especialmente projetado no chip do microprocessador que pode realizar a mesma tarefa muito rapidamente, que o microprocessador realiza. Reduz a carga de trabalho do processador principal. O coprocessador compartilha a mesma memória, sistema IO, barramento, lógica de controle e gerador de clock. O coprocessador lida com tarefas especializadas, como cálculos matemáticos, exibição gráfica na tela, etc.
O 8086 e o 8088 podem realizar a maioria das operações, mas seu conjunto de instruções não é capaz de realizar operações matemáticas complexas, portanto, nesses casos, o microprocessador requer o coprocessador matemático como o coprocessador matemático Intel 8087, que pode facilmente realizar essas operações muito rapidamente.
Diagrama de blocos da configuração do coprocessador
Como o coprocessador e o processador estão conectados?
O coprocessador e o processador são conectados através dos sinais TEST, RQ- / GT- e QS 0 e QS 1 .
O sinal TEST é conectado ao pino BUSY do coprocessador e os 3 pinos restantes são conectados aos 3 pinos do coprocessador com o mesmo nome.
O sinal TEST controla a atividade do coprocessador, ou seja, o coprocessador está ocupado ou ocioso.
O RT- / GT- é usado para arbitragem de barramento.
O coprocessador usa QS 0 e QS 1 para rastrear o status da fila do processador host.
Configuração intimamente acoplada
A configuração intimamente acoplada é semelhante à configuração do coprocessador, ou seja, ambos compartilham a mesma memória, barramento de sistema de E / S, lógica de controle e gerador de controle com o processador host. No entanto, o coprocessador e o processador host buscam e executam suas próprias instruções. O barramento do sistema é controlado pelo coprocessador e pelo processador host de forma independente.
Diagrama de blocos da configuração intimamente acoplada
Como o processador e o processador independente são conectados?
A comunicação entre o host e o processador independente é feita por meio do espaço da memória.
Nenhuma das instruções é usada para comunicação, como WAIT, ESC, etc.
O processador host gerencia a memória e ativa o processador independente enviando comandos a uma de suas portas.
Em seguida, o processador independente acessa a memória para executar a tarefa.
Após a conclusão da tarefa, ele envia uma confirmação ao processador host usando o sinal de status ou uma solicitação de interrupção.
Configuração Loosely Coupled
A configuração fracamente acoplada consiste no número de módulos dos sistemas baseados em microprocessador, que são conectados por meio de um barramento de sistema comum. Cada módulo consiste em seu próprio gerador de clock, memória, dispositivos de E / S e são conectados por meio de um barramento local.
Diagrama de blocos da configuração fracamente acoplada
Vantagens
Ter mais de um processador resulta em maior eficiência.
Cada um dos processadores tem seu próprio barramento local para acessar a memória local / dispositivos de E / S. Isso torna mais fácil alcançar o processamento paralelo.
A estrutura do sistema é flexível, ou seja, a falha de um módulo não afeta a falha de todo o sistema; o módulo defeituoso pode ser substituído posteriormente.
Processador de dados numéricos 8087 também é conhecido como Math co-processor, Numeric processor extension e Floating point unit. Foi o primeiro coprocessador matemático projetado pela Intel para emparelhar com 8086/8088, resultando em um cálculo mais fácil e rápido.
Depois que as instruções são identificadas pelo processador 8086/8088, elas são atribuídas ao coprocessador 8087 para execução posterior.
Os tipos de dados suportados pelo 8087 são -
- Inteiros binários
- Números decimais compactados
- Numeros reais
- Formato real temporário
As características mais proeminentes do processador de dados numéricos 8087 são as seguintes -
Ele oferece suporte a dados do tipo inteiro, flutuante e tipos reais de 2 a 10 bytes.
A velocidade de processamento é tão alta que pode calcular a multiplicação de dois números reais de 64 bits em ~ 27 µs e também pode calcular a raiz quadrada em ~ 35 µs.
Ele segue os padrões de ponto flutuante IEEE.
Arquitetura 8087
A arquitetura 8087 é dividida em dois grupos, ou seja, Control Unit (CU) e Numeric Extension Unit (NEU).
o control unit lida com toda a comunicação entre o processador e a memória, tal como recebe e decodifica instruções, lê e grava operandos na memória, mantém fila paralela, etc. Todas as instruções do coprocessador são instruções ESC, ou seja, elas começam com 'F', apenas o coprocessador executa as instruções ESC enquanto outras instruções são executadas pelo microprocessador.
o numeric extension unitlida com todas as instruções do processador numérico, como instruções aritméticas, lógicas, transcendentais e de transferência de dados. Possui 8 pilha de registradores, que contém os operandos para instruções e seus resultados.
A arquitetura do coprocessador 8087 é a seguinte -
Descrição do pino 8087
Vamos primeiro dar uma olhada no diagrama de pinos de 8087 -
A lista a seguir fornece a descrição do pino de 8087 -
AD0 – AD15 - Estas são as linhas de endereço / dados multiplexadas no tempo, que transportam endereços durante o primeiro ciclo de clock e dados do segundo ciclo de clock em diante.
A19 / S6 – A16/S- Essas linhas são as linhas de endereço / status multiplexadas no tempo. Funciona de forma semelhante aos pinos correspondentes do 8086. O S 6 , S 4 e S3 estão permanentemente altos, enquanto o S 5 está permanentemente baixo.
$\overline{BHE}$/S7 - Durante o primeiro ciclo de clock, o $\overline{BHE}$/ S 7 é usado para habilitar os dados para o byte mais alto do barramento de dados do 8086 e depois disso funciona como linha de status S 7 .
QS1, QS0 - Estes são sinais de entrada de status da fila que fornecem o status da fila de instruções, suas condições conforme mostrado na tabela a seguir -
QS 0 | QS 1 | Status |
---|---|---|
0 | 0 | Nenhuma operação |
0 | 1 | Primeiro byte de opcode da fila |
1 | 0 | Esvazie a fila |
1 | 1 | Byte subsequente da fila |
INT - É um sinal de interrupção, que muda para alto quando uma exceção não mascarada é recebida durante a execução.
BUSY - É um sinal de saída, quando alto indica estado de ocupado para a UCP.
READY - É um sinal de entrada utilizado para informar ao coprocessador se o barramento está pronto para receber dados ou não.
RESET - É um sinal de entrada usado para rejeitar as atividades internas do coprocessador e prepará-lo para posterior execução sempre que solicitado pela CPU.
CLK - A entrada CLK fornece os tempos básicos para a operação do processador.
VCC - É um sinal de alimentação, que necessita de alimentação de + 5V para o funcionamento do circuito.
S0, S1, S2- Estes são os sinais de status que fornecem o status da operação que é usado pelo Bus Controller 8087 para gerar memória e sinais de controle de E / S. Esses sinais estão ativos durante o quarto ciclo do clock.
S 2 | S 1 | S 0 | Status da fila |
---|---|---|---|
0 | X | X | Não utilizado |
1 | 0 | 0 | Não utilizado |
1 | 0 | 1 | Memória lida |
1 | 1 | 0 | Gravação de memória |
1 | 1 | 1 | Passiva |
RQ/GT1 & RQ/GT0 - Estes são os Request/Grant sinais usados pelos processadores 8087 para obter controle do barramento do processador host 8086/8088 para transferências de operando.
Neste capítulo, discutiremos a interface de memória e a interface IO com 8085.
Interfaceé o caminho para a comunicação entre dois componentes. A interface é de dois tipos, interface de memória e interface de E / S.
Interface de Memória
Quando estamos executando qualquer instrução, precisamos que o microprocessador acesse a memória para ler os códigos de instrução e os dados armazenados na memória. Para isso, tanto a memória quanto o microprocessador requerem alguns sinais para ler e escrever nos registradores.
O processo de interface inclui alguns fatores-chave para corresponder aos requisitos de memória e sinais do microprocessador. O circuito de interface, portanto, deve ser projetado de modo que corresponda aos requisitos de sinal de memória com os sinais do microprocessador.
Interface IO
Existem vários dispositivos de comunicação, como teclado, mouse, impressora, etc. Portanto, precisamos fazer a interface do teclado e de outros dispositivos com o microprocessador usando travas e buffers. Esse tipo de interface é conhecido como interface de E / S.
Diagrama de blocos de memória e interface de E / S
Pinos de interface 8085
A seguir está a lista de 8085 pinos usados para fazer a interface com outros dispositivos -
- A 15 - A 8 (barramento de endereço superior)
- AD 7 - AD 0 (Endereço Inferior / Barramento de Dados)
- ALE
- RD
- WR
- READY
Formas de comunicação - microprocessador com o mundo externo?
Existem duas formas de comunicação em que o microprocessador pode se conectar com o mundo exterior.
- Interface de comunicação serial
- Interface de comunicação paralela
Serial Communication Interface - Neste tipo de comunicação, a interface obtém um único byte de dados do microprocessador e os envia bit a bit para o outro sistema em série e vice-versa.
Parallel Communication Interface - Nesse tipo de comunicação, a interface obtém um byte de dados do microprocessador e os envia bit a bit aos demais sistemas de forma simultânea (ou) paralela e vice-a-versa.
8279 teclado programável / controlador de tela projetado pela Intel que faz interface de um teclado com a CPU. O teclado primeiro verifica o teclado e identifica se alguma tecla foi pressionada. Em seguida, ele envia sua resposta relativa da tecla pressionada para a CPU e vice-a-versa.
De quantas maneiras o teclado é conectado à CPU?
O teclado pode ser conectado no modo de interrupção ou em polled. NoInterrupt mode, o processador é solicitado o serviço apenas se alguma tecla for pressionada, caso contrário, a CPU continuará com sua tarefa principal.
No Polled mode, a CPU lê periodicamente um sinalizador interno de 8279 para verificar se alguma tecla foi pressionada ou não com a pressão da tecla.
Como funciona o teclado 8279?
O teclado consiste em no máximo 64 teclas, que têm interface com a CPU usando os códigos de tecla. Esses códigos-chave são devolvidos e armazenados em um FIFORAM de 8 bytes, que pode ser acessado pela CPU. Se mais de 8 caracteres forem inseridos no FIFO, isso significa que mais de oito teclas são pressionadas ao mesmo tempo. É quando o status de saturação é definido.
Se um FIFO contém uma entrada de chave válida, a CPU é interrompida em um modo de interrupção, caso contrário, a CPU verifica o status em polling para ler a entrada. Assim que a CPU lê uma entrada chave, o FIFO é atualizado e a entrada chave é empurrada para fora do FIFO para gerar espaço para novas entradas.
Arquitetura e Descrição
Controle de E / S e Buffer de Dados
Esta unidade controla o fluxo de dados através do microprocessador. É habilitado apenas quando D é baixo. Seu buffer de dados faz a interface do barramento externo do sistema com o barramento interno do microprocessador. Os pinos A0, RD e WR são usados para operações de comando, status ou leitura / gravação de dados.
Registro de controle e tempo e controle de tempo
Esta unidade contém registros para armazenar o teclado, modos de exibição e outras operações programadas pela CPU. A unidade de tempo e controle controla os tempos de operação do circuito.
Scan Counter
Tem dois modos, ou seja Encoded modee modo decodificado. No modo codificado, o contador fornece a contagem binária que deve ser decodificada externamente para fornecer as linhas de varredura para o teclado e a tela.
No decoded scan mode, o contador decodifica internamente os 2 bits menos significativos e fornece uma varredura decodificada 1 de 4 em SL 0 -SL 3 .
Buffers de retorno, debounce do teclado e controle
Esta unidade primeiro faz a varredura do fechamento da tecla em linha, se encontrada, a unidade de debounce do teclado desfaz a entrada da tecla. Caso a mesma chave seja detectada, o código dessa chave é transferido diretamente para a RAM do sensor junto com o status da chave SHIFT e CONTROL.
FIFO / RAM do Sensor e Lógica de Status
Esta unidade atua como RAM de 8 bytes primeiro a entrar, primeiro a sair (FIFO), onde o código de cada tecla pressionada é inserido na RAM de acordo com sua sequência. A lógica de status gera uma solicitação de interrupção após cada operação de leitura do FIFO até que o FIFO fique vazio.
No modo de matriz de sensor digitalizado, esta unidade atua como RAM de sensor, onde cada linha é carregada com o status de sua linha de sensores correspondente na matriz. Quando o sensor muda de estado, a linha IRQ muda para alto e interrompe a CPU.
Exibir registros de endereços e exibir RAM
Esta unidade consiste em registradores de endereço de exibição que armazenam os endereços da palavra atualmente lida / escrita pela CPU de / para a RAM de exibição.
8279 - Descrição do pino
A figura a seguir mostra o diagrama de pinos de 8279 -
Linhas de barramento de dados, DB 0 - DB 7
São 8 linhas de barramento de dados bidirecionais usadas para transferir os dados de / para a CPU.
CLK
A entrada do relógio é usada para gerar temporizações internas exigidas pelo microprocessador.
REDEFINIR
Como o nome sugere, este pino é usado para reiniciar o microprocessador.
CS Chip Select
Quando este pino é definido como baixo, ele permite operações de leitura / gravação, caso contrário, este pino deve ser definido como alto.
A 0
Este pino indica a transferência de informações de comando / status. Quando está baixo, indica a transferência de dados.
RD, WR
Este pino de leitura / gravação permite que o buffer de dados envie / receba dados pelo barramento de dados.
IRQ
Esta linha de saída de interrupção fica alta quando há dados na RAM do sensor FIFO. A linha de interrupção fica baixa com cada operação de leitura da RAM FIFO. No entanto, se a RAM FIFO contiver ainda qualquer entrada de código-chave a ser lida pela CPU, este pino novamente fica alto para gerar uma interrupção para a CPU.
V ss , V cc
Essas são as linhas de aterramento e de alimentação do microprocessador.
SL 0 - SL 3
Estas são as linhas de varredura usadas para varrer a matriz do teclado e exibir os dígitos. Essas linhas podem ser programadas como codificadas ou decodificadas, usando o registro de controle de modo.
RL 0 - RL 7
Estas são as linhas de retorno que são conectadas a um terminal de chaves, enquanto o outro terminal das chaves é conectado às linhas de varredura decodificadas. Essas linhas são definidas como 0 quando qualquer tecla é pressionada.
MUDANÇA
O status da linha de entrada Shift é armazenado junto com cada código de tecla em FIFO no modo de teclado digitalizado. Até que seja puxado para baixo com um fecho de chave, é puxado para cima internamente para mantê-lo alto
CNTL / STB - Modo I / P CONTROL / STROBED
No modo teclado, esta linha é usada como uma entrada de controle e armazenada em FIFO em um fechamento de tecla. A linha é uma linha estroboscópica que insere os dados na RAM FIFO, no modo de entrada estroboscópica. Ele tem um puxador interno para cima. A linha é puxada para baixo com um fechamento com chave.
BD
Significa display em branco. É usado para apagar o display durante a troca de dígitos.
OUTA 0 - OUTA 3 e OUTB 0 - OUTB 3
Estas são as portas de saída para dois registros de atualização de tela interna 16x4 ou 16x8. Os dados dessas linhas são sincronizados com as linhas de varredura para varrer a tela e o teclado.
Modos operacionais de 8279
Existem dois modos de operação no 8279 - Input Mode e Output Mode.
Modo de entrada
Este modo lida com a entrada fornecida pelo teclado e este modo é classificado em 3 modos.
Scanned Keyboard Mode- Neste modo, a matriz-chave pode ser conectada usando varreduras codificadas ou decodificadas. Na varredura codificada, um teclado 8 × 8 ou na varredura decodificada, um teclado 4 × 8 pode ser conectado. O código da tecla pressionada com o status SHIFT e CONTROL é armazenado na RAM FIFO.
Scanned Sensor Matrix- Neste modo, uma matriz de sensor pode ser conectada ao processador usando varreduras do codificador ou do decodificador. Na varredura do codificador, a matriz do sensor 8 × 8 ou com a varredura do decodificador 4 × 8 da matriz do sensor pode ser interfaceada.
Strobed Input - Neste modo, quando a linha de controle é definida como 0, os dados nas linhas de retorno são armazenados no FIFO byte a byte.
Modo de saída
Este modo lida com operações relacionadas ao display. Este modo é classificado em dois modos de saída.
Display Scan - Este modo permite que monitores multiplexados de 8/16 caracteres sejam organizados como unidades de exibição duplas de 4 bits / simples de 8 bits.
Display Entry - Este modo permite que os dados sejam inseridos para exibição do lado direito / esquerdo.
DMA significa acesso direto à memória. Ele é projetado pela Intel para transferir dados na taxa mais rápida. Ele permite que o dispositivo transfira os dados diretamente para / da memória sem qualquer interferência da CPU.
Usando um controlador DMA, o dispositivo solicita que a CPU mantenha seus dados, endereço e barramento de controle, de forma que o dispositivo esteja livre para transferir dados diretamente de / para a memória. A transferência de dados DMA é iniciada somente após o recebimento do sinal HLDA da CPU.
Como as operações de DMA são realizadas?
A seguir está a sequência de operações realizadas por um DMA -
Inicialmente, quando qualquer dispositivo deve enviar dados entre o dispositivo e a memória, o dispositivo deve enviar a solicitação DMA (DRQ) para o controlador DMA.
O controlador DMA envia a solicitação Hold (HRQ) para a CPU e espera que a CPU confirme o HLDA.
Em seguida, o microprocessador apresenta três estados de todos os barramentos de dados, de endereços e de controle. A CPU deixa o controle do barramento e reconhece a solicitação HOLD através do sinal HLDA.
Agora a CPU está no estado HOLD e o controlador DMA deve gerenciar as operações sobre barramentos entre a CPU, memória e dispositivos de E / S.
Características de 8257
Aqui está uma lista de algumas das características proeminentes do 8257 -
Possui quatro canais que podem ser usados em quatro dispositivos de E / S.
Cada canal possui endereço de 16 bits e contador de 14 bits.
Cada canal pode transferir dados de até 64kb.
Cada canal pode ser programado de forma independente.
Cada canal pode realizar transferências de leitura, transferência de gravação e operações de transferência de verificação.
Ele gera um sinal MARK para o dispositivo periférico de que 128 bytes foram transferidos.
Requer um relógio de fase única.
Sua frequência varia de 250Hz a 3MHz.
Ele opera em 2 modos, ou seja, Master mode e Slave mode.
Arquitetura 8257
A imagem a seguir mostra a arquitetura do 8257 -
Descrição do pino 8257
A imagem a seguir mostra o diagrama de pinos de um controlador 8257 DMA -
DRQ 0 -DRQ3
Estas são as quatro entradas de solicitação de DMA de canal individual, que são usadas pelos dispositivos periféricos para usar serviços de DMA. Quando o modo de prioridade fixa é selecionado, DRQ 0 tem a prioridade mais alta e DRQ 3 tem a prioridade mais baixa entre eles.
DACK o - DACK 3
Estas são as linhas de reconhecimento de DMA ativo-baixo, que atualizam o periférico solicitante sobre o status de sua solicitação pela CPU. Essas linhas também podem atuar como linhas estroboscópicas para os dispositivos solicitantes.
D o - D 7
Estas são linhas de dados bidirecionais que são usadas para fazer a interface do barramento do sistema com o barramento de dados interno do controlador DMA. No modo escravo, ele carrega palavras de comando para 8257 e palavra de status de 8257. No modo mestre, essas linhas são usadas para enviar byte mais alto do endereço gerado para o latch. Este endereço é posteriormente travado usando o sinal ADSTB.
EU OU
É uma linha de entrada tri-state bidirecional baixa ativa, que é usada pela CPU para ler os registros internos do 8257 no modo Slave. No modo mestre, é usado para ler dados dos dispositivos periféricos durante um ciclo de gravação de memória.
IOW
É uma linha de três estados bidirecional baixa ativa, que é usada para carregar o conteúdo do barramento de dados para o registrador de modo de 8 bits ou byte superior / inferior de um registrador de endereço DMA de 16 bits ou registrador de contagem de terminal. No modo mestre, é usado para carregar os dados para os dispositivos periféricos durante o ciclo de leitura da memória DMA.
CLK
É um sinal de frequência de relógio necessário para a operação interna do 8257.
REDEFINIR
Este sinal é usado para REINICIAR o controlador DMA desabilitando todos os canais DMA.
A o - A 3
Estas são as quatro linhas de endereço menos significativas. No modo escravo, atuam como uma entrada, que seleciona um dos registros a ser lido ou escrito. No modo mestre, são as quatro linhas de saída de endereço de memória menos significativas geradas pelo 8257.
CS
É uma linha de seleção de chip baixo-ativo. No modo Slave, ele habilita as operações de leitura / gravação de / para 8257. No modo mestre, ele desabilita as operações de leitura / gravação de / para 8257.
A 4 - A 7
Estes são o nibble superior do endereço de byte inferior gerado pelo DMA no modo mestre.
PRONTO
É um sinal de entrada assíncrono ativo alto, que torna o DMA pronto inserindo estados de espera.
HRQ
Este sinal é usado para receber o sinal de solicitação de retenção do dispositivo de saída. No modo escravo, é conectado com uma linha de entrada DRQ 8257. No modo Master, é conectado com a entrada HOLD da UCP.
HLDA
É o sinal de confirmação de retenção que indica ao controlador DMA que o barramento foi concedido ao periférico solicitante pela CPU quando ele é definido como 1.
MEMR
É o sinal de leitura de pouca memória, que é usado para ler os dados dos locais de memória endereçados durante os ciclos de leitura de DMA.
MEMW
É o sinal de três estados ativo baixo que é usado para gravar os dados no local de memória endereçado durante a operação de gravação DMA.
ADST
Este sinal é usado para converter o byte mais alto do endereço de memória gerado pelo controlador DMA nas travas.
AEN
Este sinal é usado para desabilitar o barramento de endereço / barramento de dados.
TC
Significa 'Terminal Count', que indica o ciclo atual de DMA para os dispositivos periféricos presentes.
MARCA
A marca será ativada a cada 128 ciclos ou múltiplos inteiros desde o início. Ele indica que o ciclo DMA atual é o 128º ciclo desde a saída MARK anterior para o dispositivo periférico selecionado.
V cc
É o sinal de potência necessário para a operação do circuito.
UMA microcontroller é um microcomputador pequeno e de baixo custo, projetado para realizar tarefas específicas de sistemas embarcados, como exibir informações de microondas, receber sinais remotos, etc.
O microcontrolador geral consiste no processador, na memória (RAM, ROM, EPROM), portas seriais, periféricos (temporizadores, contadores), etc.
Diferença entre microprocessador e microcontrolador
A tabela a seguir destaca as diferenças entre um microprocessador e um microcontrolador -
Microcontrolador | Microprocessador |
---|---|
Microcontroladores são usados para executar uma única tarefa em um aplicativo. | Microprocessadores são usados para grandes aplicações. |
Seu design e custo de hardware são baixos. | Seu projeto e custo de hardware são altos. |
Fácil de substituir. | Não é tão fácil de substituir. |
É construído com tecnologia CMOS, que requer menos energia para operar. | Seu consumo de energia é alto porque tem que controlar todo o sistema. |
Consiste em portas de CPU, RAM, ROM e E / S. | Não consiste em RAM, ROM, portas de E / S. Ele usa seus pinos para fazer interface com dispositivos periféricos. |
Tipos de microcontroladores
Os microcontroladores são divididos em várias categorias com base na memória, arquitetura, bits e conjuntos de instruções. A seguir está a lista de seus tipos -
Mordeu
Com base na configuração de bits, o microcontrolador é dividido em três categorias.
8-bit microcontroller - Este tipo de microcontrolador é usado para executar operações aritméticas e lógicas como adição, subtração, divisão de multiplicação, etc. Por exemplo, Intel 8031 e 8051 são microcontroladores de 8 bits.
16-bit microcontroller- Este tipo de microcontrolador é usado para realizar operações aritméticas e lógicas onde é necessário maior precisão e desempenho. Por exemplo, Intel 8096 é um microcontrolador de 16 bits.
32-bit microcontroller - Este tipo de microcontrolador é geralmente usado em aparelhos controlados automaticamente, como máquinas operacionais automáticas, aparelhos médicos, etc.
Memória
Com base na configuração da memória, o microcontrolador é dividido em duas categorias.
External memory microcontroller- Este tipo de microcontrolador é projetado de forma que não haja memória de programa no chip. Por isso, é denominado microcontrolador de memória externa. Por exemplo: microcontrolador Intel 8031.
Embedded memory microcontroller- Este tipo de microcontrolador é projetado de forma que o microcontrolador tenha todos os programas e memória de dados, contadores e temporizadores, interrupções, portas de E / S embutidas no chip. Por exemplo: microcontrolador Intel 8051.
Conjunto de instruções
Com base na configuração do conjunto de instruções, o microcontrolador é dividido em duas categorias.
CISC- CISC significa computador com conjunto de instruções complexas. Ele permite que o usuário insira uma única instrução como alternativa a muitas instruções simples.
RISC- RISC significa Reduced Instruction Set Computers. Ele reduz o tempo operacional encurtando o ciclo do clock por instrução.
Aplicações de Microcontroladores
Microcontroladores são amplamente utilizados em vários dispositivos diferentes, como -
Dispositivos de detecção e controle de luz, como LED.
Dispositivos de detecção e controle de temperatura, como forno de microondas, chaminés.
Dispositivos de detecção e segurança de incêndio, como alarme de incêndio.
Dispositivos de medição como Voltímetro.
O microcontrolador 8051 foi projetado pela Intel em 1981. É um microcontrolador de 8 bits. Ele é construído com 40 pinos DIP (pacote dual inline), 4kb de armazenamento ROM e 128 bytes de armazenamento RAM, 2 temporizadores de 16 bits. Ele consiste em quatro portas paralelas de 8 bits, que são programáveis e endereçáveis de acordo com os requisitos. Um oscilador de cristal on-chip está integrado no microcontrolador com frequência de cristal de 12 MHz.
Vamos agora discutir a arquitetura do microcontrolador 8051.
No diagrama a seguir, o barramento do sistema conecta todos os dispositivos de suporte à CPU. O barramento do sistema consiste em um barramento de dados de 8 bits, um barramento de endereço de 16 bits e sinais de controle de barramento. Todos os outros dispositivos, como memória de programa, portas, memória de dados, interface serial, controle de interrupção, temporizadores e a CPU, são interligados por meio do barramento do sistema.
O diagrama de pinos do microcontrolador 8051 é o seguinte -
Pins 1 to 8- Esses pinos são conhecidos como Porta 1. Esta porta não tem nenhuma outra função. É puxado internamente, porta de E / S bidirecional.
Pin 9 - É um pino RESET, que é usado para restaurar o microcontrolador aos seus valores iniciais.
Pins 10 to 17 - Esses pinos são conhecidos como Porta 3. Esta porta atende a algumas funções como interrupções, entrada de temporizador, sinais de controle, sinais de comunicação serial RxD e TxD, etc.
Pins 18 & 19 - Esses pinos são usados para fazer a interface de um cristal externo para obter o relógio do sistema.
Pin 20 - Este pino fornece a fonte de alimentação para o circuito.
Pins 21 to 28- Esses pinos são conhecidos como Porta 2. Ela serve como porta de E / S. Sinais de barramento de endereço de ordem superior também são multiplexados usando esta porta.
Pin 29- Este é o pino PSEN que significa Ativar armazenamento de programa. É usado para ler um sinal da memória de programa externa.
Pin 30- Este é o pino EA, que significa entrada de acesso externo. É usado para ativar / desativar a interface de memória externa.
Pin 31- Este é o pin ALE que significa Habilitar Trava de Endereço. É usado para demultiplexar o sinal de dados de endereço da porta.
Pins 32 to 39- Esses pinos são conhecidos como Porta 0. Ela serve como porta de E / S. O endereço de ordem inferior e os sinais de barramento de dados são multiplexados usando esta porta.
Pin 40 - Este pino é usado para fornecer alimentação ao circuito.
Os microcontroladores 8051 têm 4 portas de E / S, cada uma de 8 bits, que podem ser configuradas como entrada ou saída. Portanto, um total de 32 pinos de entrada / saída permite que o microcontrolador seja conectado aos dispositivos periféricos.
Pin configuration, ou seja, o pino pode ser configurado como 1 para entrada e 0 para saída de acordo com o estado lógico.
Input/Output (I/O) pin - Todos os circuitos do microcontrolador devem ser conectados a um de seus pinos, exceto a porta P0, pois não possui resistores pull-up embutidos.
Input pin- A lógica 1 é aplicada a um bit do registrador P. O transistor FE de saída é desligado e o outro pino permanece conectado à tensão da fonte de alimentação por meio de um resistor pull-up de alta resistência.
Port 0 - A porta P0 (zero) é caracterizada por duas funções -
Quando a memória externa é usada, o byte de endereço inferior (endereços A0A7) é aplicado nela, caso contrário, todos os bits desta porta são configurados como entrada / saída.
Quando a porta P0 é configurada como uma saída, então outras portas consistem em pinos com resistor pull-up integrado conectado por sua extremidade à fonte de alimentação de 5 V, os pinos desta porta têm este resistor deixado de fora.
Configuração de entrada
Se algum pino desta porta for configurado como uma entrada, ele atua como se “flutuasse”, ou seja, a entrada tem resistência de entrada ilimitada e potencial indeterminado.
Configuração de Saída
Quando o pino é configurado como uma saída, ele atua como um “dreno aberto”. Ao aplicar a lógica 0 a um bit de porta, o pino apropriado será conectado ao aterramento (0V) e, ao aplicar a lógica 1, a saída externa continuará “flutuando”.
Para aplicar a lógica 1 (5V) neste pino de saída, é necessário construir um resistor pullup externo.
Porta 1
P1 é uma porta de E / S verdadeira, pois não tem nenhuma função alternativa como em P0, mas esta porta pode ser configurada apenas como E / S geral. Possui um resistor pull-up integrado e é totalmente compatível com circuitos TTL.
Porta 2
P2 é semelhante a P0 quando a memória externa é usada. Os pinos desta porta ocupam endereços destinados ao chip de memória externo. Esta porta pode ser usada para byte de endereço superior com endereços A8-A15. Quando nenhuma memória é adicionada, esta porta pode ser usada como uma porta de entrada / saída geral semelhante à Porta 1.
Porta 3
Nesta porta, as funções são semelhantes a outras portas, exceto que a lógica 1 deve ser aplicada ao bit apropriado do registro P3.
Limitações atuais dos pinos
Quando os pinos são configurados como uma saída (ou seja, lógica 0), os pinos de porta única podem receber uma corrente de 10 mA.
Quando esses pinos são configurados como entradas (ou seja, lógica 1), os resistores pull-up integrados fornecem corrente muito fraca, mas podem ativar até 4 entradas TTL da série LS.
Se todos os 8 bits de uma porta estiverem ativos, a corrente total deve ser limitada a 15mA (porta P0: 26mA).
Se todas as portas (32 bits) estiverem ativas, a corrente máxima total deve ser limitada a 71mA.
As interrupções são os eventos que suspendem temporariamente o programa principal, passam o controle para as fontes externas e executam sua tarefa. Em seguida, ele passa o controle para o programa principal de onde foi interrompido.
8051 tem 5 sinais de interrupção, ou seja, INT0, TFO, INT1, TF1, RI / TI. Cada interrupção pode ser habilitada ou desabilitada configurando bits do registro IE e todo o sistema de interrupção pode ser desabilitado apagando o bit EA do mesmo registro.
Registro do IE (habilitar interrupção)
Este registro é responsável por habilitar e desabilitar a interrupção. O registro EA é definido como um para habilitar interrupções e como 0 para desabilitar as interrupções. Sua sequência de bits e seus significados são mostrados na figura a seguir.
EA | IE.7 | Ele desativa todas as interrupções. Quando EA = 0, nenhuma interrupção será reconhecida e EA = 1 habilita a interrupção individualmente. |
- | IE.6 | Reservado para uso futuro. |
- | IE.5 | Reservado para uso futuro. |
ES | IE.4 | Habilita / desabilita a interrupção da porta serial. |
ET1 | IE.3 | Habilita / desabilita a interrupção de estouro do timer1. |
EX1 | IE.2 | Habilita / desabilita a interrupção externa1. |
ET0 | IE.1 | Ativa / desativa a interrupção de estouro do timer0. |
EX0 | IE.0 | Habilita / desabilita a interrupção externa0. |
Registro de IP (prioridade de interrupção)
Podemos alterar os níveis de prioridade das interrupções, alterando o bit correspondente no registro de prioridade de interrupção (IP), conforme mostrado na figura a seguir.
Uma interrupção de baixa prioridade só pode ser interrompida pela interrupção de alta prioridade, mas não pode ser interrompida por outra interrupção de baixa prioridade.
Se duas interrupções de diferentes níveis de prioridade são recebidas simultaneamente, a solicitação de nível de prioridade mais alta é atendida.
Se as solicitações dos mesmos níveis de prioridade forem recebidas simultaneamente, a sequência de pesquisa interna determinará qual solicitação deve ser atendida.
- | IP.6 | Reservado para uso futuro. |
- | IP.5 | Reservado para uso futuro. |
PS | IP.4 | Ele define o nível de prioridade de interrupção da porta serial. |
PT1 | IP.3 | Define a interrupção do temporizador de 1 prioridade. |
PX1 | IP.2 | Ele define o nível de prioridade de interrupção externa. |
PT0 | IP.1 | Ele define o nível de prioridade de interrupção do timer0. |
PX0 | IP.0 | Define a interrupção externa de nível de prioridade 0. |
Registro TCON
O registro TCON especifica o tipo de interrupção externa para o microcontrolador.
O 8255A é um dispositivo de E / S programável de propósito geral projetado para transferir os dados de E / S para interromper E / S sob certas condições conforme necessário. Ele pode ser usado com quase qualquer microprocessador.
Consiste em três portas E / S bidirecionais de 8 bits (linhas 24I / O) que podem ser configuradas de acordo com o requisito.
Portas de 8255A
8255A tem três portas, ou seja, PORTA A, PORTA B e PORTA C.
Port A contém uma trava / buffer de saída de 8 bits e um buffer de entrada de 8 bits.
Port B é semelhante ao PORT A.
Port C pode ser dividido em duas partes, ou seja, PORT C inferior (PC0-PC3) e PORT C superior (PC7-PC4) pela palavra de controle.
Essas três portas são divididas em dois grupos, ou seja, o Grupo A inclui a PORTA A e a PORTA superior C. O Grupo B inclui a PORTA B e a PORTA inferior C. Esses dois grupos podem ser programados em três modos diferentes, ou seja, o primeiro modo é denominado modo 0, o segundo modo é denominado Modo 1 e o terceiro modo é denominado Modo 2.
Modos de operação
8255A tem três modos operacionais diferentes -
Mode 0- Neste modo, as portas A e B são usadas como duas portas de 8 bits e a porta C como duas portas de 4 bits. Cada porta pode ser programada no modo de entrada ou no modo de saída onde as saídas são travadas e as entradas não são travadas. As portas não têm capacidade de interrupção.
Mode 1- Neste modo, as portas A e B são usadas como portas de E / S de 8 bits. Eles podem ser configurados como portas de entrada ou saída. Cada porta usa três linhas da porta C como sinais de handshake. As entradas e saídas são travadas.
Mode 2- Neste modo, a Porta A pode ser configurada como a porta bidirecional e a Porta B no Modo 0 ou no Modo 1. A Porta A usa cinco sinais da Porta C como sinais de handshake para transferência de dados. Os três sinais restantes da Porta C podem ser usados como E / S simples ou como handshake para a porta B.
Características do 8255A
As características proeminentes do 8255A são as seguintes -
Consiste em 3 portas IO de 8 bits, ou seja, PA, PB e PC.
O endereço / barramento de dados deve ser demuxado externamente.
É compatível com TTL.
Ele melhorou a capacidade de condução DC.
Arquitetura 8255
A figura a seguir mostra a arquitetura do 8255A -
Vamos primeiro dar uma olhada no diagrama de pinos do Intel 8255A -
Agora vamos discutir a descrição funcional dos pinos em 8255A.
Buffer de barramento de dados
É um buffer tri-state de 8 bits, usado para fazer a interface do microprocessador com o barramento de dados do sistema. Os dados são transmitidos ou recebidos pelo buffer de acordo com as instruções da CPU. Palavras de controle e informações de status também são transferidas usando este barramento.
Lógica de controle de leitura / gravação
Este bloco é responsável por controlar a transferência interna / externa de dados / control / status word. Ele aceita a entrada do endereço da CPU e dos barramentos de controle e, por sua vez, emite comandos para ambos os grupos de controle.
CS
Significa Chip Select. Um LOW nesta entrada seleciona o chip e habilita a comunicação entre o 8255A e a CPU. Ele é conectado ao endereço decodificado e A 0 e A 1 são conectados às linhas de endereço do microprocessador.
Seu resultado depende das seguintes condições -
CS | A 1 | A 0 | Resultado |
---|---|---|---|
0 | 0 | 0 | PORTO A |
0 | 0 | 1 | PORTO B |
0 | 1 | 0 | PORTO C |
0 | 1 | 1 | Registro de controle |
1 | X | X | Nenhuma seleção |
WR
Significa escrever. Este sinal de controle permite a operação de gravação. Quando esse sinal fica baixo, o microprocessador grava em uma porta de E / S ou registro de controle selecionado.
REDEFINIR
Este é um sinal alto ativo. Ele limpa o registro de controle e define todas as portas no modo de entrada.
RD
Significa Ler. Este sinal de controle permite a operação de leitura. Quando o sinal está baixo, o microprocessador lê os dados da porta de E / S selecionada do 8255.
A 0 e A 1
Esses sinais de entrada funcionam com RD, WR e um dos sinais de controle. A seguir está a tabela mostrando seus vários sinais com seus resultados.
A 1 | A 0 | RD | WR | CS | Resultado |
---|---|---|---|---|---|
0 | 0 | 0 | 1 | 0 | Input Operation PORTA A → Barramento de Dados |
0 | 1 | 0 | 1 | 0 | PORTA B → Barramento de Dados |
1 | 0 | 0 | 1 | 0 | PORTA C → Barramento de Dados |
0 | 0 | 1 | 0 | 0 | Output Operation Barramento de Dados → PORTA A |
0 | 1 | 1 | 0 | 0 | Barramento de Dados → PORTA A |
1 | 0 | 1 | 0 | 0 | Barramento de Dados → PORTA B |
1 | 1 | 1 | 0 | 0 | Barramento de Dados → PORTA D |
Os Intel 8253 e 8254 são temporizadores de intervalo programáveis (PTIs) projetados para microprocessadores para executar funções de temporização e contagem usando três registradores de 16 bits. Cada contador possui 2 pinos de entrada, ou seja, Clock e Gate, e 1 pino para a saída “OUT”. Para operar um contador, uma contagem de 16 bits é carregada em seu registro. No comando, começa a decrementar a contagem até chegar a 0, então gera um pulso que pode ser usado para interromper a CPU.
Diferença entre 8253 e 8254
A tabela a seguir diferencia os recursos de 8253 e 8254 -
8253 | 8254 |
---|---|
Sua frequência de operação é de 0 - 2,6 MHz | Sua frequência de operação é de 0 a 10 MHz |
Ele usa tecnologia N-MOS | Ele usa tecnologia H-MOS |
O comando Read-Back não está disponível | O comando Read-Back está disponível |
Leituras e gravações do mesmo contador não podem ser intercaladas. | Leituras e gravações do mesmo contador podem ser intercaladas. |
Características de 8253/54
As características mais proeminentes do 8253/54 são as seguintes -
Possui três contadores descendentes independentes de 16 bits.
Ele pode lidar com entradas de DC a 10 MHz.
Esses três contadores podem ser programados para contagem binária ou BCD.
É compatível com quase todos os microprocessadores.
O 8254 possui um comando poderoso denominado comando READ BACK, que permite ao usuário verificar o valor da contagem, o modo programado, o modo atual e o estado atual do contador.
Arquitetura 8254
A arquitetura do 8254 é a seguinte -
Descrição do pino 8254
Aqui está o diagrama de pinos de 8254 -
Na figura acima, existem três contadores, um buffer de barramento de dados, lógica de controle de leitura / gravação e um registro de controle. Cada contador possui dois sinais de entrada - CLOCK & GATE, e um sinal de saída - OUT.
Buffer de barramento de dados
É um buffer tri-state, bidirecional de 8 bits, que é usado para fazer a interface do 8253/54 com o barramento de dados do sistema. Tem três funções básicas -
- Programando os modos de 8253/54.
- Carregando os registros de contagem.
- Lendo os valores de contagem.
Lógica de leitura / gravação
Inclui 5 sinais, ou seja, RD, WR, CS e as linhas de endereço A 0 e A 1 . No modo I / O periférico, os sinais RD e WR são conectados ao IOR e IOW, respectivamente. No modo I / O mapeado em memória, eles são conectados a MEMR e MEMW.
As linhas de endereço A 0 e A 1 da CPU são conectadas às linhas A 0 e A 1 do 8253/54, e CS está ligado a um endereço decodificado. O registro e os contadores da palavra de controle são selecionados de acordo com os sinais nas linhas A 0 e A 1 .
A 1 | A 0 | Resultado |
---|---|---|
0 | 0 | Contador 0 |
0 | 1 | Contador 1 |
1 | 0 | Contador 2 |
1 | 1 | Controle de registro de palavras |
X | X | Nenhuma seleção |
Controle de registro de palavras
Este registro é acessado quando as linhas A 0 e A 1 estão na lógica 1. Ele é usado para escrever uma palavra de comando, que especifica o contador a ser usado, seu modo e uma operação de leitura ou escrita. A tabela a seguir mostra o resultado para várias entradas de controle.
A 1 | A 0 | RD | WR | CS | Resultado |
---|---|---|---|---|---|
0 | 0 | 1 | 0 | 0 | Escreve o contador 0 |
0 | 1 | 1 | 0 | 0 | Escreve o contador 1 |
1 | 0 | 1 | 0 | 0 | Escreve o contador 2 |
1 | 1 | 1 | 0 | 0 | Escreva a palavra de controle |
0 | 0 | 0 | 1 | 0 | Leia o contador 0 |
0 | 1 | 0 | 1 | 0 | Leia o contador 1 |
1 | 0 | 0 | 1 | 0 | Leia o contador 2 |
1 | 1 | 0 | 1 | 0 | Nenhuma operação |
X | X | 1 | 1 | 0 | Nenhuma operação |
X | X | X | X | 1 | Nenhuma operação |
Contadores
Cada contador consiste em um único contador de 16 bits, que pode ser operado tanto em binário quanto em BCD. Sua entrada e saída são configuradas pela seleção dos modos armazenados no registro da palavra de controle. O programador pode ler o conteúdo de qualquer um dos três contadores sem perturbar a contagem real em andamento.
8253/54 pode ser operado em 6 modos diferentes. Neste capítulo, discutiremos esses modos operacionais.
Modo 0 ─ Interromper na contagem de terminais
É usado para gerar uma interrupção para o microprocessador após um certo intervalo.
Inicialmente, a saída é baixa após o modo ser definido. A saída permanece BAIXA após o valor da contagem ser carregado no contador.
O processo de diminuição do contador continua até que a contagem terminal seja alcançada, ou seja, a contagem torna-se zero e a saída vai para ALTA e permanecerá alta até que seja recarregada uma nova contagem.
O sinal GATE é alto para a contagem normal. Quando o GATE fica baixo, a contagem é encerrada e a contagem atual é travada até que o GATE fique alto novamente.
Modo 1 - One Shot programável
Pode ser usado como um multi-vibrador monoestável.
A entrada da porta é usada como uma entrada de disparo neste modo.
A saída permanece alta até que a contagem seja carregada e um acionador seja aplicado.
Modo 2 - Gerador de taxa
A saída normalmente é alta após a inicialização.
Sempre que a contagem chega a zero, outro pulso baixo é gerado na saída e o contador é recarregado.
Modo 3 - gerador de onda quadrada
Este modo é semelhante ao Modo 2, exceto que a saída permanece baixa pela metade do período do temporizador e alta pela outra metade do período.
Modo 4 - Modo disparado por software
Neste modo, a saída permanecerá alta até que o temporizador tenha contado até zero, ponto em que a saída irá pulsar baixo e então subir novamente.
A contagem é travada quando o sinal GATE fica BAIXO.
Na contagem de terminais, a saída fica baixa para um ciclo de clock e depois para ALTA. Este pulso baixo pode ser usado como um estroboscópio.
Modo 5 - Modo disparado por hardware
Este modo gera um estroboscópio em resposta a um sinal gerado externamente.
Este modo é semelhante ao modo 4, exceto que a contagem é iniciada por um sinal na entrada da porta, o que significa que é acionada por hardware em vez de por software.
Depois de inicializado, a saída aumenta.
Quando a contagem do terminal é atingida, a saída fica baixa por um ciclo de clock.