E-BOOK
ELETRÔNICA DIGITAL
Introdução à eletrônica digital
APRESENTAÇÃO
Com o surgimento da eletrônica digital, circuitos mais eficientes foram desenvolvidos. Esta
nova técnica permitiu que os circuitos obtivessem taxas cada vez maiores de processamento, a
execução de funções de grande complexidade e a habilidade de reprogramar um circuito, mesmo
a distância, a fim de suportar atualizações de funcionamento, seja para a correção de algum
defeito no projeto, seja para o aprimoramento de funções já existentes.
Os sistemas digitais possibilitaram soluções e equipamentos antes impensáveis, a ponto
de existirem hoje telefones portáteis aptos a executar uma diversidade de aplicativos e processar
grande quantidade de informação em um ritmo muito maior do que qualquer ser humano é
capaz, ou que, apenas algumas décadas atrás, eram executadas por máquinas volumosas e de
custo elevado que poderiam ocupar uma sala inteira.
A eletrônica digital não pretende inutilizar a eletrônica analógica, pois depende desta para criar
seus componentes e, também, porque cada uma tem atribuições e focos diferentes.
Nesta Unidade de Aprendizagem, você verá a diferenciação entre os dois tipos de sinais
fundamentais para a eletrônica: analógico e digital. Serão apresentadas as vantagens de cada um
deles, as características elétricas específicas que envolvem os circuitos digitais e o porquê de
transistores em modo chave representarem o cerne desse tipo de circuito.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
• Diferenciar sistemas analógicos de sistemas digitais.
• Analisar as características dos sistemas digitais.
• Caracterizar o projeto de circuitos digitais.
DESAFIO
Os circuitos digitais pretendem garantir a maior estabilidade possível para a informação. É por
esse motivo, entre outros, de características elétricas, que os transistores são utilizados em
vez de relés, que também atuam como chaves. No entanto, em alguns casos, os componentes
mecânicos não poderão ser evitados e a trepidação se fará presente na entrada de alguma porta
lógica, podendo prejudicar a estabilidade do sistema e resultar em saídas falsas. É o caso, por
exemplo, da utilização de botões como entrada. Se ligado diretamente entre a entrada da porta
lógica e a fonte de alimentação, o botão funciona bem quando fechado, representando apenas
um curto; no entanto, quando o botão não estiver pressionado, o circuito se encontrará em uma
situação de flutuação.
Ambas as situações estão ilustradas na imagem abaixo.
De que forma é possível contornar o problema, garantindo que, quando o botão não estiver
pressionado, a porta lógica compreenda o nível lógico baixo, sem interferir na operação em
nível lógico alto?
INFOGRÁFICO
Os circuitos digitais são classificados conforme o tipo de tecnologia utilizada para construir as
relações lógicas.
São não apenas transistores de tipos diferentes, mas também metodologias de conexão
diferentes.
No Infográfico a seguir, serão apresentadas as quatro tecnologias básicas de construção de
circuitos digitais: TTL, ECL, MOS e CMOS.
CONTEÚDO DO LIVRO
Analógico e digital são duas formas diferentes de representar a informação. Apesar de os
componentes fundamentais da eletrônica trabalharem de forma analógica, também podem ser
utilizados em conjunto para operar de maneira digital.
Os sinais, naturalmente analógicos, devem ser convertidos para o formato digital, o que
permitirá a aplicação de métodos sofisticados de processamento, armazenamento e transmissão
com custos reduzidos, taxas elevadas e constante miniaturização.
No capítulo Introdução à Eletrônica Digital, da obra Eletrônica Digital, é dada ênfase à
diferença de representação entre os sinais analógicos e digitais, à importância dos transistores na
criação desses circuitos e às vantagens e desvantagens de se operar com cada tipo.
Boa leitura.
ELETRÔNICA
DIGITAL
Maikon Lucian Lenz
Introdução à
eletrônica digital
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
Diferenciar sistemas analógicos de sistemas digitais.
Analisar as características dos sistemas digitais.
Caracterizar o projeto de circuitos digitais.
Introdução
O foco do estudo da eletrônica analógica é o comportamento de cada
elemento ao ser excitado por tensões ou correntes diversas. Na eletrônica
digital, por sua vez, maior ênfase é dada à manipulação de dados. Os
dados podem ser qualquer tipo de informação que se pretende utilizar
e/ou armazenar — o nível de pressão em um reservatório, por exemplo.
Os fenômenos estudados na eletrônica analógica continuam válidos e
necessários. Entretanto, à medida que a complexidade do sistema digital
aumenta, mais distante dos efeitos elétricos de cada componente o foco
estará, e maior será o interesse pelo processamento, que costuma abran-
ger uma série de cálculos: soma, subtração, comparação. Esses cálculos
vão envolver níveis de sinal abrangentes, cuja exatidão pouco importará.
Os sistemas digitais são essencialmente chaveados e tiveram avanço
tecnológico considerável a partir da invenção dos transistores e da mi-
niaturização destes. É necessário, no entanto, diferenciar claramente as
duas naturezas de sinais — analógico e digital —, a fim de compreender
os motivos que levaram à difusão dos sistemas digitais. Estes, apesar
de reduzirem a precisão, apresentam vantagens significativas sobre os
sistemas analógicos.
Assim, neste capítulo, você vai verificar as diferenças entre sistemas
analógicos e sistemas digitais, identificando as características dos sistemas
digitais e analisando o projeto de circuitos digitais.
2 Introdução à eletrônica digital
Diferenciando sistemas analógicos
de sistemas digitais
Representações de sinal
Há duas maneiras básicas de se representar sinais de qualquer natureza: de
forma analógica, com amostragem constante, e de forma discreta, com amos-
tragens periódicas, sendo a mais importante a forma digital. Na linguagem
popular, sistemas digitais são costumeiramente associados à qualidade, assim
como os analógicos são vistos como sistemas ultrapassados. No entanto,
ainda que os sistemas digitais busquem garantir certo nível de precisão, não
é possível afirmar que isso seja intrinsecamente traduzido como qualidade.
Para compreender essa questão, é necessário, antes de mais nada, entender o
que diferencia os dois tipos de sinais.
Conforme lecionam Tocci, Widmer e Moss (2011), o sinal analógico possui
continuidade; em outras palavras, é impossível fracioná-lo em partes indi-
visíveis ou bem delimitadas — sempre será possível fracioná-lo em partes
cada vez menores. Vários são os exemplos que podem ser dados para esse
tipo de sinal, uma vez que o mundo que você vê é, em grande parte, fruto de
fenômenos dessa natureza. São os casos das mudanças naturais de temperatura
(Figura 1), pressão, tensão, corrente, movimento, velocidade, e tantos outros
fenômenos; todos podem ser medidos em proporções infinitamente variáveis
dentro da representação analógica.
Figura 1. Representação analógica da temperatura ao longo do dia.
Fonte: Floyd (2007, p. 20).
Introdução à eletrônica digital 3
Já o sinal digital não possui continuidade, é um tipo de sinal discretizado
(Figura 2) passo a passo. A fração de sua representação depende da quantidade
de precisão disponível para representar uma determinada grandeza. Exemplos
naturais não são comuns, já que, como foi afirmado no parágrafo anterior, a
natureza não atua de forma discreta, mas sim com variações continuamente
variáveis, o que representa um sinal analógico. A maior parte do universo
discreto/digital consiste de mecanismos desenvolvidos pelo homem, em sua
maioria para processamento e armazenamento.
Figura 2. Representação discretizado da temperatura ao longo do dia.
Fonte: Floyd (2007, p. 21).
O leitor pode se perguntar: como é possível, então, existir um termômetro
digital, se a temperatura é um fenômeno melhor representado de forma ana-
lógica? A resposta está na própria pergunta: o ponto-chave para diferenciar
um sinal analógico de um sinal digital não está no fenômeno vinculado, mas
na forma como ele é representado. A temperatura varia continuamente na
natureza, mas o termômetro em questão pode não ser capaz de medir pequenas
variações. A partir de um determinado nível de precisão, o termômetro pode,
por exemplo, detectar apenas mudanças a cada 0,1°C, e o resultado do mesmo
seria digital. Nesse caso, o universo de valores não é contínuo e não pode ser
fracionado a partir desse limite.
4 Introdução à eletrônica digital
Um sinal discretizado não é necessariamente um sinal digital. O sinal digital é a parte
de um sinal discretizado em que apenas dois estados são possíveis, e a informação é
codificada ao longo do tempo.
Da mesma forma, seria compreensível que o leitor se perguntasse: pode
existir um equipamento capaz de representar uma grandeza de forma analó-
gica? E a resposta é: sim. Esqueça o termômetro digital e tenha em mente um
termômetro de mercúrio. O mercúrio vai variar a sua dilatação conforme a
temperatura muda. Estando ele limitado a um espaço fixo, só poderá expandir
e retrair em uma direção. Aproveitando-se desse movimento, uma escala é
colocada ao fundo do recipiente, de forma a coincidir com a respectiva tem-
peratura. A escala de medição visual possui frações limitadas, no entanto, não
é mais uma limitação de precisão do equipamento em si, e sim uma limitação
visual. Ou seja, o mercúrio está variando proporcionalmente à temperatura,
mesmo que a visão humana não consiga diferenciar mudanças tão pequenas.
Outro caso muito similar é o velocímetro digital, caracterizado por telas
limitadas em quantidade de caracteres, em contraponto ao velocímetro analó-
gico, com um ponteiro variando continuamente em cima de uma escala, para
auxiliar a interpretação visual. Mesmo que a escala possua valores discretos, o
sensor ainda é capaz de exibir infinitos valores de velocidade. No velocímetro
analógico, poderia ser utilizada uma lupa com escalas cada vez menores, para
identificar variações cada vez menores, enquanto, no velocímetro digital,
não importa o que se faça, não é possível recuperar frações além daquelas
delimitadas pela amostragem do sinal.
Atente para o fato de que a diferença entre analógico e digital está na forma
de representar um mesmo fenômeno.
Motivo por trás dos sistemas digitais
Os motivos que envolvem o uso de sinais digitais são vários e a maioria
compensa o prejuízo decorrente da perda de definição, quando convertido
um sinal para o formato digital. Conforme apontam Tocci, Widmer e Moss
(2011), entre esses motivos, estão:
Introdução à eletrônica digital 5
menores custos de processamento, ao trabalhar com níveis de tensão,
e não valores exatos;
diminuição do volume necessário para o circuito, já que os sinais são
facilmente representados por chaveamentos de uma série de transistores
e não dependem de componentes volumosos, como transformadores
ou capacitores;
armazenamento facilitado, por não ser necessário obter exatidão da
unidade de informação;
maior imunidade a ruídos e interferências, com níveis de tensão abran-
gentes, desde que mantidos fora da região considerada inválida.
É fácil constatar que o sistema digital envolve perda de informação, afinal,
um sinal de natureza analógico, divisível infinitamente, foi substituído por
outro de natureza digital, com frações finitas. Se visto de forma isolada, esse
fato em si pode levar a crer que os sistemas digitais não acarretam qualquer
melhoria e até mesmo diminuem a qualidade do sistema, seja ele qual for.
Se fosse o caso de apenas comparar o universo de possibilidades, isso seria
verdadeiro; porém, os diversos sistemas desenvolvidos pretendem manipular
as grandezas de alguma forma, e, a depender do tipo de manipulação, um sinal
analógico pode ser inviável, se não impossível ou, pelo menos, impraticável.
A manipulação envolve diversos processos, como medição, armazena-
mento, transmissão, recepção e processamento, o que deve ser executado por
algum sistema que envolve perdas ou consumo de parte desse sinal. Em um
sistema analógico simples, as perdas podem ser facilmente compensadas,
mas, à medida que o sistema se torna mais complexo, o sinal necessitaria de
constantes regeneradores para manter a fidelidade ao longo de todo o processo.
Pense em um sinal de temperatura que deve ser medido, transmitido via
rádio para outra estação e utilizado para controlar uma válvula que está ali-
mentando a caldeira monitorada pelo sensor de temperatura. Sendo analógico,
o sinal deverá ser, de qualquer maneira, convertido para uma grandeza elétrica,
que, por sua vez, vai ser utilizada para produzir ondas de rádio, que serão
recebidas e convertidas novamente para uma grandeza elétrica e, por fim, para
um movimento mecânico que controle a abertura da válvula.
Ocorre que esse sistema tem uma série de interferências capazes de pre-
judicar a precisão do mecanismo. Nos circuitos elétricos, há impedâncias que
reduziriam a potência e a amplitude do sinal, as ondas de rádio são atenuadas
conforme as mudanças climáticas ocorrem, e assim por diante. Mesmo os
regeneradores de sinal não são perfeitos e podem adicionar ruído ou distorções
ao sinal original, além do custo envolvido e a falta de praticidade, já que a
6 Introdução à eletrônica digital
maioria dos sistemas teriam mais regeneradores do que elementos necessários
à operação em si. Imagine, ainda, a complexidade de armazenar um valor
específico de tensão em algum mecanismo de memória eletrônica, ou, então,
repetir o mesmo valor em duas memórias diferentes, exatamente iguais e sem
perdas ao longo do tempo.
Ao tornar uma grandeza finita, sistemas digitais reduzem inicialmente a
precisão, mas podem garantir que sejam manipuladas e repetidas fielmente ao
longo de todo o processo e a custos muito inferiores aos sistemas analógicos.
É difícil obter uma tensão específica na saída, fiel ao valor de entrada de
qualquer sistema, mas é fácil diferenciar entre níveis suficientemente distantes
ou simplesmente dois estados possíveis: ligado/desligado.
Outra grande vantagem dos sistemas digitais, consequência direta da facilidade de
armazenamento e das manipulações lógicas associadas a esses sistemas — já que os
níveis altos e baixos podem ser entendidos como verdadeiro ou falso —, é a progra-
mação de circuitos integrados, alterando as suas configurações de funcionamento a
partir de uma lista de instruções.
Características dos sistemas digitais
O sinal digital possui níveis bem definidos. Uma característica comum é tra-
balhar com apenas dois níveis de tensão, 0V e 5V, ou ligado/desligado, como
dito anteriormente. Um sistema desse tipo é dito chaveado, já que alterna
entre estados de contato com uma fonte de tensão e momentos de circuito
aberto, em que não há qualquer tensão. A grande diferença está na estabilidade
associada à informação, já que existe grande margem para ruídos, distorções
e atenuações, sem que a informação manipulada seja mal interpretada.
Ao limitar o sinal a dois níveis somente, a informação que necessita de
uma sensibilidade maior deverá ser codificada ao longo do tempo — como no
sistema de código Morse, em que havia apenas traços e pontos, sendo o traço
representado por um tempo maior em nível alto, e o ponto, por um tempo menor.
A informação era codificada na duração de tempo de um pulso elétrico de nível
Introdução à eletrônica digital 7
alto. O conjunto de até cinco pulsos representava um único caractere. Já que
a quantidade de pulsos podia ser menor do que cinco para alguns caracteres,
convencionou-se um tempo curto entre letras, médio entre palavras e longo
entre frases. Repare que os níveis de tensão são sempre nível baixo ou alto e
que a informação é interpretada agrupando-se uma determinada quantidade
de pulsos de durações diferentes, intercalados por momentos de nível baixo.
Utilizando-se também de apenas dois níveis de sinal, os sistemas digitais
devem codificar a informação no tempo, assim como o código Morse. Porém,
em vez de diferenciar intervalos de tempos diferentes para dois níveis de
tensão, o sistema digital utiliza tempos fixos entre unidades de informação
e os níveis alto e baixo para fazer a codificação. A ordem em que grupos de
níveis alto e baixo aparecem em janelas fixas de tempo é que representará a
informação. Essa forma de codificar os dados torna o processamento digital
mais lento. Essa limitação é normalmente compensada pela miniaturização
e pelo aumento da capacidade de processamento, com uma quantidade maior
de componentes operando em um mesmo circuito integrado.
Outra grande desvantagem de um sistema digital consiste no fato de que
o mundo real não é digital, o que significa que serão necessários conversores
de sinal, tanto de sinais analógicos para digitais, durante um sensoriamento,
quanto de digitais para analógicos, ao utilizar o resultado de um processamento
para manipular um atuador. Por exemplo, o velocímetro já citado é utilizado
para que o sistema de injeção forneça combustível suficiente para que o carro
mantenha a velocidade ajustada pelo piloto automático. A velocidade deve ser
convertida, processada e convertida novamente.
Projeto de circuitos digitais
Vários mecanismos podem ser utilizados para manipular um sistema digi-
tal — até mesmo um relé, que também é capaz de operar em dois estados
diferentes. Entretanto, o relé envolve componentes mecânicos, e a interação
eletromagnética resultante da bobina pode interferir nos demais elementos do
circuito, além de ser um componente difícil de miniaturizar. Também, como
pode ser visto na Figura 3b, qualquer elemento mecânico sofrerá com alguma
trepidação ao fechar o contato, conforme leciona Tokheim (2013).
8 Introdução à eletrônica digital
Figura 3. a) Atuação esperada de uma chave mecânica; b) sinal real com trepidação;
c) circuito adicionado para filtrar a trepidação.
Fonte: Tokheim (2013, p. 8).
Assim, o transistor polarizado, para atuar como chave, é o elemento
mais utilizado no projeto de circuitos digitais, antes empregando transistores
bipolares e, atualmente, com maior ênfase nos transistores de efeito de campo.
São componentes com alta impedância de entrada e velocidade de chaveamento
elevada, permitindo o processamento mais rápido de dados.
Os transistores são conectados de forma a executar operações lógicas
(verdadeiro e falso — respectivamente, alto e baixo) e dão origem às portas
lógicas. Essas portas, por sua vez, são agrupadas em blocos ainda maiores e
mais complexos, para solucionar problemas de processamento ainda maiores,
e, assim, sucessivamente.
Deve-se levar em consideração que, por mais que um transistor opere em
modo chave, partindo do corte para a saturação, ou em sentido inverso, da
saturação para o corte, as transições não são instantâneas, e, por um breve
período, o sinal vai variar gradualmente até o novo nível de tensão. Esse tempo
deve ser reduzido, a fim de impactar o mínimo possível no processamento,
já que é capaz de confundir o nível lógico real do sistema naquele ponto. É
Introdução à eletrônica digital 9
impossível eliminar esse fenômeno; no entanto, é possível reduzi-lo a um valor
ínfimo, quando comparado à janela de tempo delimitada para cada pulso.
Os níveis também não devem conter uma transição direta, o que permitiria
interpretar um sinal fraco ou ruidoso de maneira ambígua. Na prática, os
sistemas digitais operam com três níveis bem delimitados. O nível lógico é
considerado baixo até um valor especificado de tensão, logo acima da tensão
da camada de depleção de um transistor bipolar (0,8 V); acima disso, ou até
uma tensão de aproximadamente 3 V, o nível lógico é dito inválido, e qualquer
coisa acima disso será interpretada como nível lógico alto, conforme aponta
Tokheim (2013).
Assim, há uma região que separa de forma clara as regiões de alto e baixo;
os valores podem variar conforme o fabricante ou o modelo de componente
utilizado e constam no seu datasheet. A Figura 3b já apresentava essa região.
Assim, é importante que sejam respeitados esses limites, para evitar reações
involuntárias do sistema projetado ao entrar na região inválida, em que, a
depender da dopagem de cada componente, especificamente, um mesmo valor
de tensão pode ser compreendido como baixo ou alto.
FLOYD, T. L. Sistemas digitais: fundamentos e aplicações. 9. ed. Porto Alegre: Bookman,
2007.
TOCCI, R. J.; WIDMER, N. S.; MOSS, G. L. Sistemas digitais: princípios e aplicações. 11. ed.
Rio de Janeiro: Pearson, 2011.
TOKHEIM, R. Fundamentos de eletrônica digital: sistemas combinacionais. 7. ed. Porto
Alegre: AMGH, 2013.
Leituras recomendadas
CAPUANO, F. G.; IDOETA, I. V. Elementos de eletrônica digital. 41. ed. São Paulo: Érica, 1997.
SZAJNBERG, M. Eletrônica digital: teoria, componentes e aplicações. Rio de Janeiro:
LTC, 2014.
TOKHEIM, R. Fundamentos de eletrônica digital: sistemas sequenciais. 7. ed. Porto Alegre:
AMGH, 2013.
DICA DO PROFESSOR
As tensões e as correntes de entrada e saída, quando em nível alto e baixo, bem como o tempo
de atraso de propagação do sinal e a quantidade de entradas que podem ser alimentadas por uma
única saída, podem ser estudados com detalhes das nuances que envolvem cada parâmetro.
No vídeo a seguir, você vai ver quais são as características elétricas de maior relevância para os
circuitos digitais.
Conteúdo interativo disponível na plataforma de ensino!
EXERCÍCIOS
1) A respeito dos sinais e sistemas analógicos, qual afirmativa é verdadeira?
A) Sinais analógicos são todos os sinais decorrentes de fenômenos naturais.
B) Sinais analógicos possuem um conjunto finito de frações.
C) Um sistema analógico é inferior em qualidade a um sistema digital.
D) As interferências e atenuações têm maior impacto nos sistemas analógicos que demandam
exatidão de valores, mas podem atingir precisão maior que os sistemas digitais.
E) Depois que os sistemas digitais foram desenvolvidos, os sistemas analógicos se tornaram
obsoletos.
2) Quantos estados existem em um sinal digital típico?
A) Um.
B) Dois.
C) Três.
D) Quatro.
E) Cinco.
3) De que forma o Código Morse pode ser comparado a um sinal digital?
A) Ambos utilizam apenas 0 e 1.
B) O código é uma evolução dos sinais digitais.
C) Ambos codificam a informação em níveis altos e baixos de tensão apenas.
D) Ambos utilizam sinais discretos para codificar uma informação ao longo do tempo.
E) O sinal digital utiliza tempos maiores e menores para codificar sua informação, assim
como o Código Morse.
4) Apesar de atuar essencialmente como uma chave, o relé não é adequado para o
desenvolvimento de um sistema digital. Qual o motivo?
A) O relé somente é capaz de operar com sinais analógicos.
B) O relé é um mecanismo ultrapassado e está em desuso.
C) O relé possui uma região de tensão considerada inválida.
D) A bobina do relé não suporta as correntes envolvidas na maioria dos sistemas digitais.
E) O contato do relé pode trepidar no chaveamento.
5) Qual das alternativas elenca duas características importantes no projeto de circuitos
digitais?
A) A redução do tempo de chaveamento e a separação dos níveis alto e baixo por uma faixa
de nível considerada inválida.
B) Desconsiderar o tempo de chaveamento e diferenciar claramente os níveis alto e baixo,
mantendo uma faixa considerada de nível lógico inválido.
C) A redução do tempo de chaveamento e da zona de transição entre os níveis lógicos alto e
baixo para evitar que o sinal seja mal interpretado.
D) Desconsiderar o tempo de chaveamento e garantir que qualquer nível de tensão seja
interpretado como um nível lógico bem definido.
E) Garantir que a precisão seja superior ao sinal analógico amostrado e reduzir a impedância
de entrada.
NA PRÁTICA
A entrada de um circuito lógico pode oscilar por vários motivos, dentre os quais a flutuação,
pelo uso de chaves mecânicas que fornecem alimentação, mas que, quando estão abertas, não
estabelecem uma tensão fixa de referência ou GND. Outro problema decorrente do uso de
chaves mecânicas é a trepidação do sinal, já que, ao tentar fechar o contato, durante um breve
período de tempo ela irá oscilar entre contato aberto e fechado, indo e voltando, como se fosse
uma mola.
A primeira situação é facilmente contornável, adicionando-se resistores de pull-down em
paralelo com a porta lógica, para manter a entrada em GND quando a chave estiver aberta. A
proposta é apresentada na imagem abaixo.
Repare, no entanto, que o problema da trepidação continua ocorrendo mesmo com a adição do
resistor de pull-down. Circuitos para evitar a trepidação podem ser criados a partir de métodos
de detecção de pulso com um retardo para aceitar um novo pulso de entrada. Esse tipo de
comportamento é característico de temporizadores e multivibradores monoestáveis.
Um multivibrador monoestável é um circuito que chaveia um transistor a partir de um pulso de
tensão na entrada e que, com o auxílio de um capacitor, atrasará por um período de tempo o
desarme do circuito, mesmo que a entrada retorne ao nível lógico baixo. Isso garante uma saída
em nível lógico alto na saída do multivibrador enquanto a entrada está oscilando.
Dessa forma, pode-se utilizar esse tipo de circuito entre a chave mecânica que pretende informar
um nível lógico e a entrada do circuito digital que pretende ser utilizada. O resultado será um
pulso de entrada estabilizado.
O problema de trepidação e o resultado de um circuito intermediário podem ser vistos na
imagem abaixo.
Na prática, você não apenas lidará com esse tipo de problema, como a maioria dos circuitos
possuem mecanismos internos de detecção de pulso e trabalham operando na borda de subida ou
de descida de um temporizador que dita seu ritmo de funcionamento. Ou seja, por mais que a
entrada oscile rapidamente, somente será validado o primeiro pulso detectado ao longo de uma
janela de tempo delimitada.
SAIBA MAIS
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do
professor:
Qual a diferença entre sinal analógico e digital?
Este vídeo faz um comparativo entre diversos tipos de sinais analógicos e digitais que envolvem
questões do dia a dia de cada um; além disso, aborda a questão da redução na precisão e como o
sinal digital, ainda assim, foi capaz de revolucionar o cotidiano.
Conteúdo interativo disponível na plataforma de ensino!
O que é Eletrônica Digital?
Este vídeo introduz a ideia de sistemas numéricos, a conversão de sinal e como é possível
programar e processar digitalmente os dados.
Conteúdo interativo disponível na plataforma de ensino!
Projeto e construção de uma mesa de pinball utilizando circuitos digitais
Este artigo apresenta as etapas de projeto de uma máquina simples, desenvolvida utilizando
circuitos digitais. Introduz elementos mais complexos de eletrônica digital, como circuitos
integrados específicos de contagem, temporização e memória, que podem ampliar o
entendimento inicial do alcance desta área da Eletrônica e o mecanismo de funcionamento
básico.
Conteúdo interativo disponível na plataforma de ensino!
Sistema de numeração digital
APRESENTAÇÃO
Os diversos sistemas numéricos têm suas particularidades e atribuições próprias, mas há regras e
símbolos compartilhados entre eles. A matemática lida em sua maior parte com o sistema
decimal, no entanto sistemas digitais seriam ainda mais complicados de se projetar se não
possuíssem um sistema numérico adequado à sua realidade de operação.
O sistema binário representa diretamente o estado de cada unidade de informação em um
circuito digital, mas podem ser usados sistemas similares que simplifiquem a representação
numérica e que sejam facilmente traduzidos novamente para binário. São eles: o sistema octal e
o sistema hexadecimal.
Nesta Unidade de Aprendizagem, você vai estudar os três tipos de sistema numérico mais
comuns em sistemas digitais, as operações aritméticas convencionais atribuídas ao sistema
binário e métodos de codificação para utilizar o sistema binário na representação de outros tipos
de informação que não sejam numéricas.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
• Converter sistemas de numeração.
• Resolver operações aritméticas com sistemas de numeração.
• Analisar códigos numéricos e alfanuméricos.
DESAFIO
Um número pode representar algo que não seja necessariamente uma quantidade. Pode ser um
índice de uma tabela ou apenas um conjunto de unidades de informação embaralhadas e
codificadas para criptografar as informações de modo a evitar que terceiros sejam capazes de
decifrá-las.
A codificação mais utilizada no dia a dia é a tabela ASCII, com sete bits representando algum
caractere alfanumérico. Isso permite que um computador envie um texto para outro utilizando
um código de sete bits que faça referência ao caractere desejado.
Imagine que na empresa em que você trabalha você foi convocado para decifrar o código
abaixo.
01001111
01001001
Considerando a tabela a seguir, você precisa dizer quais caracteres estão sendo enviados em
uma mensagem que contenha a sequência de dois bytes.
Explique como foi o processo de conversão.
INFOGRÁFICO
A codificação representa não apenas a proteção da informação, mas em alguns casos também a
própria informação. Codificadores e decodificadores são utilizados para converter padrões
diferentes dentro do mesmo sistema numérico.
O sistema binário possui dois símbolos: 0 e 1. Os codificadores irão utilizar os mesmos
símbolos, mas, a partir de regras específicas, irão traduzir um número para outro equivalente
pelo mecanismo de codificação.
Veja no Infográfico as três codificações mais utilizadas no desenvolvimento de sistemas
digitais.
CONTEÚDO DO LIVRO
Nos sistemas digitais, dois estados são suficientes para representar o estado de uma unidade de
informação. Assim, o sistema decimal não é capaz de traduzir adequadamente as operações
resultantes dessa natureza, ou necessitaria de regras muito complexas para adequá-lo. Um novo
numérico é utilizado para facilitar a manipulação e análise de sistemas dessa natureza. Nele cada
unidade numérica possui apenas dois estados possíveis, assim como ocorre fisicamente no
circuito. Porém muitos dos mecanismos de operações básicas, como soma, subtração,
multiplicação e divisão, ainda são executados de forma similar ao que ocorria no sistema
decimal.
No capítulo Sistema de numeração digital, da obra Eletrônica digital, você vai ver o principal
sistema de numeração digital e a base de toda a eletrônica digital: o sistema binário. Você
também vai conhecer os sistemas derivados do binário – octal e hexadecimal – e as formas de
conversão entre todos eles e o sistema decimal. Por fim, você vai estudar as operações
aritméticas básicas do ponto de vista do sistema binário, além de ter uma introdução às técnicas
de codificação e seu uso de pequenas a grandes máquinas.
Boa leitura.
ELETRÔNICA
DIGITAL
Maikon Lucian Lenz
Sistema de numeração
digital
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
Converter sistemas de numeração.
Resolver operações aritméticas com sistemas de numeração.
Analisar códigos numéricos e alfanuméricos.
Introdução
O sistema numérico utilizado pela matemática convencional é o sis-
tema decimal. Acredita-se que, por dispormos de 10 dedos nas mãos,
esse método foi utilizado como base para o desenvolvimento de toda
a matemática.
Na eletrônica digital, no entanto, apenas dois estados são possíveis
para cada unidade de informação, diferentemente dos 10 dedos, como
no caso da representação decimal. Assim como a operação numérica
em uma base de 10 era mais viável para um sistema de informação que
dispunha de 10 representações, como as nossas mãos, também o sistema
digital é mais facilmente manipulado se, para tanto, utiliza-se um sistema
numérico adequado à sua realidade. Os sistemas mais comuns possuem
valor posicional, regras, formas e símbolos similares entre si e, portanto,
de fácil conversão entre eles. Já os sistemas digitais utilizam o sistema
binário também para a codificação de informações, e não apenas como
uma quantidade definida, como é demonstrado pelo código ASCII, muito
utilizado pelos computadores de um modo geral.
Neste capítulo, você vai estudar a conversão dos sistemas de nume-
ração. Você também vai resolver operações aritméticas com sistemas de
numeração e analisar códigos numéricos e alfanuméricos.
2 Sistema de numeração digital
Conversão entre sistemas de numeração
Números são símbolos utilizados para representar uma quantidade de qualquer
grandeza ou material. O conjunto de símbolos e as regras que estipulam as relações
entre eles é denominado sistema numérico. Você deve estar habituado a utilizar
o sistema decimal; talvez não faça menção a ele no dia a dia, mas certamente o
utiliza para praticamente tudo. O sistema decimal especifica dez símbolos (0, 1,
2, 3, 4, 5, 6, 7, 8, 9) e, por esse motivo, pode ser chamado também de sistema de
base 10, afinal, este é o número de símbolos, representações ou posições para uma
unidade numérica desse sistema, conforme leciona Tokheim (2013).
É claro que um sistema numérico que represente apenas dez possibilidades é
um sistema pouco útil. No entanto, e isso é válido para os demais sistemas que
serão estudados, não apenas o símbolo utilizado é relevante para o resultado, mas
também a quantidade de símbolos agrupados e a posição de cada um deles. Por
exemplo, um único símbolo 1 é utilizado para expressar que existe um elemento
de um determinado objeto; já dois símbolos agrupados como 11 possuem um
significado totalmente diferente e, como pode-se perceber, há 10 elementos a mais
no segundo caso em relação ao primeiro. O agrupamento desses símbolos, portanto,
não representa uma soma — o que, nesse caso, significariam dois elementos —,
mas há, de fato, outro peso dado a cada um dos símbolos 1 agrupados.
No sistema decimal, o primeiro símbolo (à direita) tem peso um, e cada
posição adicional à esquerda aumenta em dez vezes o peso dado ao símbolo.
Pode-se também analisar desta forma: se o símbolo 1 representa uma quanti-
dade, o 2 representa duas quantidades, e segue dessa forma até o símbolo 9,
que representa nove quantidades; por isso, definimos o primeiro símbolo mais
à direita de um número decimal como tendo peso um, já que cada símbolo
representa diretamente a quantidade especificada. No entanto, o segundo
símbolo à esquerda possui um peso X vezes maior do que o anterior, onde X
é a base do sistema numérico em questão. Sendo a base do sistema decimal
igual a 10, esse segundo símbolo terá um peso dez vezes maior do que o an-
terior — ou seja, o 1, nesse caso, é na verdade o equivalente a 10 vezes uma
quantidade. A partir daí, é possível obter a quantidade que se está representado
com o número 11: se o 1 mais à esquerda é 10 vezes uma quantidade e o 1
mais à direita é apenas uma quantidade, o número expressa, nesse caso, 11
quantidades. Em outras palavras, os símbolos não são somados diretamente,
mas ponderados por um peso ou proporção determinado pela sua posição em
relação aos demais, conforme leciona Tokheim (2013).
Mas, e se for adicionado um terceiro símbolo em um mesmo grupo? Como
vimos, o terceiro símbolo (da direita para a esquerda) será 10 vezes maior do
Sistema de numeração digital 3
que o imediatamente anterior; se o anterior já era 10 vezes maior do que o
primeiro, significa que o símbolo em questão tem um peso de 10 vezes 10, ou
seja, é cem vezes maior do que o primeiro símbolo.
Não há qualquer sentido em aplicar a multiplicação de cada símbolo por
seu peso e somar as parciais, já que o resultado será o mesmo do número
original. Isso porque você está utilizando o mesmo sistema numérico atribuído
à matemática.
Pode-se resumir um sistema numérico comum como um conjunto de símbolos que,
agrupados, devem ser ponderados pela sua posição em relação à sua base numérica.
Há ainda duas limitações fundamentais que podem ser contornadas de
forma diferenciada por cada sistema numérico. A primeira delas é a possibi-
lidade de se representar quantidades negativas — utiliza-se o símbolo de “−”
(menos) para tanto. A segunda é a possibilidade de se representar quantidades
fracionárias, que são representadas com o auxílio do símbolo “,” (vírgula).
Um número decimal que possua o símbolo “−” à sua esquerda representa uma
quantidade negativa. Assim como um número pode ser subdividido em parte
inteira e parte fracionária, os símbolos usados devem ser os mesmos, mas, a
partir de uma determinada posição, são separados por uma vírgula, que indica
que, à esquerda, o número deve ser lido como um inteiro, enquanto os símbolos
deixados à direita da vírgula representam frações de uma unidade. Dessa
forma, praticamente qualquer quantidade pode ser representada, conforme
apontam Tocci, Widmer e Moss (2011).
O sistema decimal provavelmente é fruto da praticidade de se utilizar recursos próprios
ao ser humano nas operações entre duas quantidades — já que possuímos 10 dedos
nas mãos, é muito fácil lidar com um sistema numérico de base 10. A partir disso, todo
o estudo da matemática e do cálculo utilizou como base o sistema numérico decimal,
o que não quer dizer que não seja possível calcular ou realizar operações até mais
complexas em outros sistemas numéricos.
4 Sistema de numeração digital
A matemática decimal pode ser tranquilamente utilizada para sistemas
digitais. Porém, não é nada prático utilizar 10 símbolos para um universo em
que, para cada unidade, existem apenas duas possibilidades: ligado e desligado.
Utilizar o sistema decimal para representar as relações entre sistemas digitais
seria demasiadamente complexo. Outros sistemas numéricos, no entanto,
podem ser mais eficientes para esse caso.
Na eletrônica digital, são três os sistemas numéricos de maior importância:
binário, octal e hexadecimal. O primeiro é a base para todo o sistema digital,
enquanto os demais são múltiplos diretos do sistema binário, na maior parte
das vezes com a simples finalidade de expressar a mesma coisa do que um
binário, com uma quantidade menor de símbolos impressos.
Sistema binário
Ao contrário do sistema decimal, o sistema binário possui base dois, o que
significa que, utilizando apenas um símbolo, o sistema binário apresenta
apenas duas possibilidades. Para evitar confusão e manter certa praticidade de
conversão entre sistemas diferentes, os sistemas que possuem uma quantidade
menor de símbolos do que o sistema decimal costumam repetir os símbolos,
apenas eliminando o excesso deles.
O sistema binário possui dois símbolos — 0 e 1 — que aumentam de peso
para cada símbolo adicional à esquerda. Com uma base dois, significa dizer
que cada símbolo, chamado de bit (unidade binária), tem um peso duas vezes
maior do que o símbolo imediatamente à sua direita, desde que pertencente
ao mesmo número.
Tomando como exemplo o caso do número 11 novamente, se expresso em
um sistema numérico do tipo decimal, seria traduzido para 11 quantidades; já
no sistema binário, esse número representa a quantidade três. Assim como no
sistema decimal, o primeiro símbolo (à direita) tem o peso um, mas o segundo
(à esquerda) tem o peso duas vezes maior do que o primeiro. Se o primeiro
tem peso um, o segundo terá peso dois, o terceiro quatro (duas vezes dois), o
quarto oito (duas vezes quatro) e, assim, sucessivamente.
Perceba mais uma vez que, a cada símbolo adicionado à esquerda, o peso
atual é o resultado da multiplicação do peso imediatamente anterior pela base.
Trata-se, portanto, de uma progressão geométrica — em outras palavras,
são N multiplicações por um mesmo valor, o que também representa uma
exponenciação (repetição de sucessivas multiplicações), conforme lecionam
Tocci, Widmer e Moss (2011).
Sistema de numeração digital 5
O peso de um símbolo em um sistema numérico pode ser calculado pela
expressão a seguir:
p[i] = bi–x (Equação 1)
onde:
i — posição em que o símbolo se encontra da direita para a esquerda,
considerando a primeira como sendo igual a zero;
x — quantidade de posições fracionárias;
b — base do sistema numérico;
p[i] — peso atribuído ao símbolo na posição i.
Por meio da Equação 1, é possível obter o peso em uma determinada
posição se conhecida a base do sistema numérico. No sistema decimal, por
exemplo, o peso do 3° símbolo será de 10² = 100, enquanto, no sistema binário,
será de 2² = 4. Logo, fica nítida a desvantagem do sistema binário em termos
de tamanho, já que, com poucos decimais, pode-se representar um número
gigantesco, o que exigiria inúmeros binários para fazer o mesmo. Entretanto,
essa desvantagem é compensada pela relação direta do sistema binário com a
realidade dos sistemas que representa, em que há apenas dois estados possíveis
(0 e 1) e a álgebra especialmente utilizada para esse sistema numérico.
Sabendo o peso que cada posição possui, os símbolos devem ser multipli-
cados por seu respectivo peso, e a parcial de cada resultado deve ser somada
para se obter o equivalente decimal desse sistema. Por exemplo, o número
365 em decimal é:
3 · 10² + 6 · 10¹ + 5 · 100
3 · 100 + 6 · 10 + 5 · 1
300 + 60 + 5 = 365
Como citado anteriormente, não há qualquer sentido em ponderar os sím-
bolos de um sistema numérico decimal, já que ele é o próprio sistema utilizado
na matemática convencional — o resultado final só poderia ser o mesmo.
Agora, considere o número binário 1101:
1 · 2³ + 1 · 2² + 0 · 2¹ + 1 · 20
1·8+1·4+0·2+1·1
8 + 4 + 0 + 1 = 13
6 Sistema de numeração digital
O procedimento anterior realizou uma conversão de sistemas numéricos,
utilizando a álgebra convencional, natural aos sistemas decimais, e especi-
ficando o peso do símbolo para cada posição no sistema numérico binário.
Assim, pode-se obter o equivalente decimal de cada posição, sendo os equiva-
lentes, então, somados para se obter o total. Pode-se afirmar, portanto, que o
número 1101 corresponde a 13 em sistemas decimais, ou seja 1101 em binário
representa 13 quantidades.
A conversão pode ser resumida da seguinte forma:
(Equação 2)
onde:
i — índice da iteração atual;
N — quantidade de posições totais, inteiras e fracionárias;
v(i) — i-ésimo símbolo (da direita para a esquerda) de um número v;
p(i) — peso atribuído à i-ésima posição (da direita para a esquerda) de v;
x — quantidade de posições da parte fracionária, à direita da vírgula.
Ou, ainda, substituindo-se a Equação 1 na Equação 2:
(Equação 3)
Na Figura 1, é possível comparar dez quantidades diferentes de moedas
e suas representações em ambos os sistemas numéricos, decimal e binário.
Sistema de numeração digital 7
Figura 1. Quantidades de moedas representadas por dois
sistemas numéricos diferentes.
Fonte: Tokheim (2013, p. 24).
Para evitar qualquer confusão na manipulação de sistemas numéricos
diferentes, especialmente quando ambos possuem símbolos em comum e
podem ser confundidos, dependendo da quantidade representada, e também
para não restar dúvidas a respeito de qual sistema numérico se está utilizando,
é empregado um número decimal subscrito do lado direito, contendo o valor
de base do sistema numérico. Quando omitido, o número pode ser entendido
como sendo do mesmo sistema numérico utilizado no restante do contexto; caso
não exista qualquer referência, é assumido como sendo um número decimal,
conforme lecionam Tocci, Widmer e Moss (2011).
nb
onde:
n — um número qualquer do sistema numérico de base b;
b — base do sistema numérico de n.
8 Sistema de numeração digital
Considere os números a seguir com seus respectivos sistemas numéricos expressos
pelo valor de base subscrito ao lado. Ambos os números estão representando a
mesma quantidade. Repare no número subscrito à direita de ambos. Ele evidencia
que o primeiro número pertence ao sistema decimal (base 10), enquanto o segundo
é do sistema binário (base 2). Ou seja, se convertido o número binário para decimal,
seriam obtidos os mesmos valores.
11,510 1011,12
O número binário 1011,12 é convertido para decimal seguindo a Equação 3, onde:
b = 2, por se tratar de sistema binário;
v = 1011,12, que é o próprio número a ser convertido;
N = 5, que é a quantidade de posições totais, inteiras e fracionárias;
x = 1, que é a quantidade de posições da parte fracionária, à direita da vírgula.
A conversão de decimal para binário segue a lógica inversa: em vez de
se multiplicar cada posição à frente por um peso duas vezes maior, o número
decimal é inicialmente dividido por 2 e, caso o resultado da parte inteira seja
maior do que zero, este será dividido por 2 e, assim, sucessivamente, até que
a parte inteira do resultado seja 0. As divisões procedem apenas enquanto
o quociente for inteiro, o resto é anotado; na sequência, é iniciada nova di-
visão por 2 a partir do quociente resultante, repetindo o processo até que o
quociente seja 0. O número binário pode ser obtido agrupando-se os restos
de cada divisão de trás para a frente; ou seja, o resto da última divisão (em
que o dividendo resultou em 0) será a posição mais à esquerda do binário, e
Sistema de numeração digital 9
o resto da primeira divisão será a posição menos significativa, mais à direita
do binário. O procedimento pode ser visto no exemplo da Figura 2.
Figura 2. Conversão de sistema numérico de um número no sistema
decimal para o sistema binário.
Fonte: Tokheim (2013, p. 26).
Os sistemas digitais não possuem nenhum meio de interpretar o sinal de um
número binário, e, para que se possa sinalizar isso a um circuito ou microproces-
sador, é utilizada a representação por complemento de 2. O complemento de 2
consiste em inverter todos os bits um a um e, ao final, somar 1 ao resultado.
Assim, o bit mais significativo (à esquerda) será 1 para números negativos e 0
para números positivos. Isso não reduz a quantidade de valores possíveis, mas
desloca a metade das possibilidades àquelas em que o bit mais significativo
é igual a 1, para valores abaixo de zero. A inversão de um número binário,
ou seja, transformar tudo o que é 1 em 0 e tudo o que é 0 em 1, é chamada
de complemento de 1. Já a inversão seguida da soma 1 é conhecida como
complemento de 2 e é o formato utilizado para representar números negativos.
Sistema octal e hexadecimal
O sistema octal possui oito símbolos (0, 1, 2, 3, 4, 5, 6, 7), sendo sua base um
expoente inteiro da base do sistema binário — um octal corresponde a um
grupo de três bits. Ou seja, a cada três bits, pode-se utilizar um único símbolo
do sistema octal para representar a mesma quantidade.
10 Sistema de numeração digital
O sistema hexadecimal também é um expoente inteiro do sistema binário, mas,
ao contrário do octal, que agrupa os bits de três em três, cada símbolo hexadecimal
representa quatro bits. Esse sistema possui 16 símbolos, sendo os 10 primeiros os
mesmos utilizados pelo sistema decimal, e os demais com os seguintes valores
equivalentes em decimal: A = 10, B = 11, C = 12, D = 13, E = 14, F = 15.
A forma mais prática de se converter um sistema binário em octal ou
decimal é simplesmente agrupar os bits, enquanto o processo inverso requer
que cada símbolo seja convertido para seu equivalente em decimal e este, por
sua vez, em binário. Já para converter entre números octais ou hexadecimais
para um equivalente em decimal, pode-se utilizar as equações de 1 a 3 já
demonstradas para o sistema binário, e o sentido inverso demonstrado pela
Figura 2. Apenas deve-se considerar a respectiva base em uso, sendo ela 8
para o sistema octal e 16 para o hexadecimal.
A grande vantagem oferecida pelos sistemas octal e hexadecimal é o menor
tamanho do número a ser impresso. No entanto, por características próprias
dos sistemas microprocessados que separam o conjunto de informações em
bytes (agrupamento de oito bits), o hexadecimal se revelou mais prático e,
portanto, é o sistema mais utilizado, uma vez que são necessários apenas dois
hexadecimais para representar um byte, enquanto o octal, por agrupar de três
em três bits, dividiria partes do byte entre símbolos diferentes. Assim, para
um código de sistema escrito em hexadecimal, é fácil de se associar endereços
específicos de memória e converter cada byte para o binário equivalente, a
fim de interpretar os comandos ou dados armazenados.
Os prefixos normalmente utilizados para o sistema decimal também são utilizados para
bits e bytes. Mas há que se tomar cuidado ao utilizá-los, nesse caso, já que um byte é
um grupo de oito bits, e, assim, 1 kilobit (1 Kb) é oito vezes menor do que 1 kilobyte (KB).
Uma diferença sutil de representação, mas com significados bem distantes um do outro.
Operações aritméticas com sistemas
de numeração
Os sistemas octal e hexadecimal podem facilitar a leitura e a interpretação dos
dados no dia a dia de quem trabalha com informações do tipo digital, mas é
demasiadamente complexo de se proceder qualquer operação aritmética entre
Sistema de numeração digital 11
eles, sendo preferíveis as operações que envolvam apenas decimais ou binários.
Esse último tem metodologias muito similares de resolução aritmética, se
comparado ao sistema decimal e à matemática convencional.
Adição
A operação de adição de dois números decimais consiste em sobrepor ambos
os números e somar cada posição individualmente. Deve-se obedecer a regra
de que, caso o resultado seja um número maior do que o representável por um
único símbolo, apenas o símbolo menos significativo será considerado para
o resultado daquela posição, enquanto o restante será adicionado à posição
seguinte (à esquerda).
Esse procedimento também pode ser realizado com números binários, desde
que obedecidas as limitações desse sistema. Uma vez que o maior número
nesse sistema é 1, o resultado de 12 + 12 deve ser igual a 102. O restante ainda
é o mesmo — apenas o bit menos significativo permanece naquela posição,
enquanto os demais são adicionados à próxima posição.
Por exemplo, 0,1102 + 00102:
Subtração
O mesmo mecanismo ocorre para a subtração, porém, em vez de sobras, serão
efetuados empréstimos de posições mais à esquerda. Entretanto, os sistemas digi-
tais costumam utilizar uma representação diferente para números negativos, que
permite, inclusive, efetuar operações de subtração como se fossem uma adição, o
que, obviamente, reduz a quantidade de portas lógicas em um microprocessador,
já que duas funções, adição e subtração, podem ser executadas por um único
circuito de adição. Para proceder dessa forma, basta que o bit mais significativo
em um tamanho predefinido de variável seja considerado o bit de sinal e que
números negativos estejam representados no formato de complemento de 2.
Para subtrair dois números positivos, basta tornar o minuendo negativo e
proceder com a adição. A viabilidade dessa operação é facilmente compro-
vada, já que:
x − y = x + (− y)
12 Sistema de numeração digital
Multiplicação e divisão
Tanto a multiplicação quanto a divisão entre binários podem se tornar extensas,
e, na maioria das vezes, será mais prático converter os números para decimal,
efetuar a operação necessária e, então, converter o resultado novamente para
binário. O procedimento para realizar qualquer uma dessas operações é o
mesmo já adotado no sistema decimal.
A técnica distingue os elementos de uma multiplicação em multiplicando e
multiplicador, que são os fatores, e o resultado é chamado de produto. A ordem
dos fatores não altera o produto, mas é mais prático tanto para um número
decimal quanto para um número binário que o multiplicando (parte superior
da multiplicação) seja o número com maior quantidade de algarismos. Isso
porque a multiplicação é feita por partes, em que cada algarismo do multi-
plicador (parte inferior da multiplicação) vai multiplicar todos os algarismos
do multiplicando uma vez. Logo, quanto menor a quantidade de algarismos
no multiplicador, menor a quantidade de somas a serem efetuadas ao final.
Em binário, somente a multiplicação de 1 × 1 resultará em um valor igual
a 1; todos os outros casos serão zero. Vale lembrar que, assim como no sis-
tema decimal, cada vez que se avança um algarismo do multiplicador, deve
ser iniciada uma nova linha abaixo do produto anterior, deslocada uma casa
para a esquerda, já que o peso da multiplicação desse bit deve ser maior do
que os anteriores.
Para o processo de divisão, os elementos são: dividendo, divisor e quociente.
O dividendo é o número a ser dividido pelo divisor, e o quociente é o resultado.
Sempre que o dividendo for maior do que o divisor, deve-se preencher o quo-
ciente com 1 e subtrair a parcela, da esquerda para a direita, imediatamente
igual ou superior ao divisor por este. O resto receberá o próximo algarismo
do dividendo não utilizado, se houver; se o novo resto for maior ou igual ao
divisor, deve-se proceder novamente com a inserção de mais um algarismo 1
no quociente e a subtração do novo resto pelo divisor.
Sistema de numeração digital 13
Sempre que o resto for menor do que o divisor, mas diferente de 0, deverá
ser adicionado um algarismo 0 e acrescentado o próximo algarismo do divi-
dendo. Caso não existam mais algarismos a serem recebidos do dividendo, será
adicionada uma vírgula ao quociente e um zero ao resto. Após adicionada a
vírgula, o procedimento segue a rotina normal da divisão por inteiros. O pro-
cedimento termina quando o resto for igual a 0, e o resultado será o quociente.
Entretanto, cabe lembrar que existem números, como dízimas periódicas, em
que nunca será possível concluir a divisão, podendo-se interrompê-la quando
essa situação for detectada, ou a partir do momento em que a precisão desejada
para uma divisão for suficiente (quantidade de casas após a vírgula).
Caso os fatores da multiplicação ou divisão sejam números com vírgula,
deve-se igualar a quantidade de casas depois da vírgula de ambos os fatores
antes de iniciar o processo, adicionando-se algarismos 0 à direita. Também
na divisão, deve-se tomar o cuidado de remover a vírgula de ambos os fatores
após a quantidade de casas ter sido igualada, para facilitar a execução do
procedimento, já que não haverá qualquer efeito sobre o resultado final.
Analisar códigos numéricos e alfanuméricos
O sistema binário não precisa ser necessariamente utilizado para representar
alguma quantidade, mas pode ser utilizado como um conjunto de combina-
ções binárias que estabeleçam um código de referência para outros tipos de
informação. Tome como exemplo o caso de um computador pessoal — todo o
sistema faz uso da lógica digital, logo, de dados, no sistema numérico binário.
Porém, não utilizamos apenas números quando manipulamos um computador;
muito pelo contrário, a maior parte é composta por letras e outros símbolos.
Como, então, o sistema compreende ou armazena esse tipo de informação?
Há uma codificação específica para quando é necessário representar outras
informações que não sejam necessariamente numéricas ou que necessitem,
14 Sistema de numeração digital
por exemplo, ser criptografadas ou traduzidas. O mais popular desses casos é
o código alfanumérico de padrão americano para troca de informações,
abreviado para ASCII (do inglês American Standard Code for Information
Interchange).
Código ASCII
O código ASCII nada mais é do que um código de sete bits, em que cada
combinação possível representa um caractere específico dentro de uma tabela.
Em suma, o computador não compreende o símbolo da letra K, por exem-
plo — é o teclado que utilizamos que está construído de forma a enviar um
binário equivalente à letra K, com base na tabela ASCII, quando essa tecla
for pressionada. O valor da letra K maiúscula é 75 em decimal, ou 01000101
em binário. Quando pressionada a tecla K, é esse valor em binário que circula
pelos barramentos de dados do computador e é armazenado na memória ou
utilizado pela unidade de processamento. Da mesma forma, quando o com-
putador quiser mostrar esse valor na tela, será enviado o binário armazenado
na posição de memória que se deseja visualizar para o circuito responsável
por traduzi-lo em uma imagem. O padrão fornece a letra a que o binário se
refere, e outra tabela utilizada pela fonte específica que se pretende exibir faz
o mapeamento de cada pixel necessário para ligar na tela, fazendo o binário
01000101 ser visualizado como uma letra K na tela.
Repare que o sistema binário pode ser utilizado de diferentes formas,
e não necessariamente para representar uma quantidade. O efeito prático
atribuído a uma determinada combinação de bits dependerá exclusivamente
da interpretação dada pelo circuito ou sistema que o esteja operando. Assim,
são inúmeras as codificações utilizadas.
Código BCD
Outro código frequentemente utilizado é o decimal codificado em binário
(BCD, do inglês binary-coded decimal), que utiliza quatro bits para represen-
tar uma única unidade decimal. Enquanto um código binário puro é obtido
convertendo-se o número decimal inteiro, para o código BCD, cada dígito é
convertido para uma sequência fixa de quatro bits, conforme lecionam Tocci,
Widmer e Moss (2011).
Como os números decimais possuem apenas 10 símbolos, que vão de zero
até nove, o BCD só possui valores válidos até o número em binário equivalente
Sistema de numeração digital 15
ao nove (10012). Para representar o número quinze, por exemplo, um decimal
requer dois dígitos, o que significa mais quatro bits para o código BCD. Enquanto
o quinze em binário poderia ser representado por 11112, com os mesmos quatro
bits do número nove, para o código BCD, serão formados os dois dígitos de
forma independente: 00012 para representar o 1 e 01012 para representar o 5.
Código Gray
O sistema binário segue uma ordem natural de incremento, o que acarreta
mudanças de valor em várias unidades binárias simultaneamente. Por exemplo,
o número 1 em binário é representado por 00012, e o número 2 por 00102.
Perceba que dois bits alteraram seu estado. Há situações ainda piores, como o
número 00112 (número 7) que, ao ser incrementado, passa a ser 10002 (número
8), situação em que os quatro bits sofreram alteração — os três primeiros de
1 para 0 e o último de 0 para 1.
Os sistemas digitais possuem atrasos de propagação, ou seja, as últimas
portas lógicas de um circuito devem aguardar o ajuste à nova situação de todas
as anteriores até que estejam atualizadas; além disso, os sistemas digitais cos-
tumam operar em frequências elevadas. Assim, pequenas diferenças no tempo
de propagação de uma informação entre cada um dos bits que compõem um
barramento podem, durante breves intervalos de tempo, criar valores falsos.
O código Gray apresenta uma sequência em que apenas um bit por vez é
alterado a cada novo incremento. Com isso, enquanto em um sistema binário
comum o número 2 seria representado por 00102, em Gray seria 00112; já o
número 3, em binário, é 00112 e, em Gray, é 00102. Apesar de ser mais complexo
de se compreender o valor real em código Gray, a sequência nesse formato
garante que só haverá uma única transição de estado por vez: 00002 → 00012 →
00112 → 00102 → 01102 → 01112 → 01012..., conforme leciona Tokheim (2013).
Um encoder de posição que utiliza uma máscara binária padrão, por exem-
plo, poderia informar posições erradas para um sistema digital, caso houvesse
um pequeno desalinhamento entre cada um dos sensores. Utilizando um padrão
binário comum, um encoder poderia girar a máscara binária da posição três
para quatro sem que todos os sensores estivessem detectando a nova região
da máscara, ocasionando erros. O problema do encoder pode ser resolvido
com o código Gray, já que pequenos desalinhamentos causariam pequenas
variações de comprimento nas transições, mas nunca saltariam posições
aleatórias porque algum dos sensores ainda não detectou a nova região. Isso
porque só um deles altera seu estado por vez, como é possível ver na Figura 3.
16 Sistema de numeração digital
Figura 3. Disco de um encoder utilizando um padrão binário em código Gray
para evitar transições de dois sensores simultaneamente e reduzir os erros de
posição informados.
Fonte: Tokheim (2013, p. 179).
Sistemas digitais costumam transmitir dados de forma serial. Isso significa que cada
bit deve ser enviado individualmente, respeitando-se o tempo necessário para que o
receptor identifique corretamente cada um deles. Porém, nem todos os bits podem
ter algum significado para a aplicação em si. Muitos métodos de transmissão incluem
cabeçalhos para informar meios intermediários de comunicação ou detectar erros,
como é o caso do bit de paridade. Estes são bits adicionados à informação que se
deseja transmitir e são utilizados como mecanismo de controle, para aumentar a
eficiência ou a confiabilidade do sistema.
Sistema de numeração digital 17
TOCCI, R. J.; WIDMER, N. S.; MOSS, G. L. Sistemas digitais: princípios e aplicações. 11. ed.
Rio de Janeiro: Pearson, 2011.
TOKHEIM, R. Fundamentos de eletrônica digital: sistemas combinacionais. 7. ed. Porto
Alegre: AMGH, 2013.
Leituras recomendadas
CAPUANO, F. G.; IDOETA, I. V. Elementos de eletrônica digital. 41. ed. São Paulo: Érica, 1997.
FLOYD, T. L. Sistemas digitais: fundamentos e aplicações. 9. ed. Porto Alegre: Bookman,
2007.
SZAJNBERG, M. Eletrônica digital: teoria, componentes e aplicações. Rio de Janeiro:
LTC, 2014.
TOKHEIM, R. Fundamentos de eletrônica digital: sistemas sequenciais. 7. ed. Porto Alegre:
AMGH, 2013.
DICA DO PROFESSOR
A codificação é um dos maiores empecilhos enfrentados por sistemas analógicos que pretendam
substituir os digitais.
Nesta Dica do professor, você vai entender a dificuldade de manipular com exatidão
informações de maneira analógica. Além disso, vai entender como um sistema de numeração
adequado interfere no projeto de circuitos.
Conteúdo interativo disponível na plataforma de ensino!
EXERCÍCIOS
1) Quais são os três tipos de sistemas numéricos mais utilizados em sistemas digitais?
A) Binário, heptadecimal e decimal.
B) Decimal, binário e octal.
C) Octal, hexadecimal e decimal.
D) Binário, octal e hexadecimal.
E) Heptadecimal, octal e binário.
2) De que forma o número decimal 983 será representado no formato BCD?
A) 0001 1000 01012.
B) 1001 1000 00112.
C) 1001 1000 112.
D) 0111 0110 00112.
E) 1001 1000 01002.
3) Qual é o produto da multiplicação dos binários 100102 e 10112?
A) 110001102.
B) 110001112.
C) 110011102.
D) 100001102.
E) 110001002.
4) Qual opção representa a correta conversão do número 1010112 para o sistema
decimal?
A) 88.
B) 86.
C) 24.
D) 43.
E) 42.
5) Assinale a opção que apresenta as corretas conversões de sistema para o número
hexadecimal F516.
A) 111101012 / 3658 / 24510.
B) 11111012 / 1758 / 12510.
C) 010111112 / 1378 / 9510.
D) 1111012 / 758 / 6110.
E) 010001012 / 2458 / 58110.
NA PRÁTICA
A miniaturização dos circuitos digitais é um dos parâmetros mais importantes para se obterem
melhores desempenhos. Isso se dá não por conta do tamanho em si, mas pela maior densidade
de processamento embutida em um único chip, além da redução de consumo associado ao
processador.
Para tanto, é importante que a integração de determinadas funções seja feita de maneira a
reduzir a quantidade de circuitos lógicos necessários para atender a uma ampla variedade de
funções de processamento.
Acompanhe Na Prática.
SAIBA MAIS
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do
professor:
Código de Gray
Veja neste vídeo como converter binário comum para o código de Gray.
Conteúdo interativo disponível na plataforma de ensino!
Como funciona o sistema binário
Este vídeo compara os sistemas decimal e binário, traz os conceitos de dígitos mais e menos
significativos e ainda apresenta a conversão de binário para decimal.
Conteúdo interativo disponível na plataforma de ensino!
Bit de sinal e complemento de 2
Este vídeo discorre sobre o problema de apresentação do sinal para números negativos em
circuitos digitais.
Conteúdo interativo disponível na plataforma de ensino!
Lógica combinacional
APRESENTAÇÃO
Tendo apenas dois estados possíveis, os circuitos digitais podem ser comparados a operações
lógicas, o que permite o uso das mesmas técnicas de formulação e simplificação de expressões
algébricas para representar um circuito. As operações fundamentais das quais derivam as demais
possuem simbologia tanto gráfica quanto matemática estabelecida.
Nesta Unidade de Aprendizado você vai ser apresentado às principais portas lógicas, ao
mapeamento de resultados e às hipóteses de um circuito chamado tabela verdade. Além disso,
conhecerá os métodos mais utilizados para projetar e simplificar circuitos lógicos, como a soma
dos produtos, o produto das somas, axiomas, o teorema de De Morgan e o mapa de Karnaugh —
o método mais prático para se obter uma expressão simplificada para circuitos de até seis
entradas.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
• Definir portas lógicas.
• Diferenciar teoremas de axiomas.
• Resolver operações de simplificação de expressões booleanas.
INFOGRÁFICO
Circuito combinacional é todo circuito lógico cuja saída depende única e exclusivamente da
combinação das entradas. Com o auxílio da tabela verdade e de métodos de simplificação de
expressão, muitas soluções podem ser obtidas. Entretanto, alguns circuitos se tornaram muito
utilizados na eletrônica digital por serem úteis à maioria dos projetos. É o caso de codificadores
e multiplexadores.
Os codificadores podem ser utilizados para reduzir a quantidade de bits necessários para enviar
uma determinada informação ou no processo inverso, de decodificação para utilizar um
determinado código como mecanismo de acionamento de uma série de elementos. Já os
multiplexadores (MUX) recebem inúmeras linhas de dados e selecionam uma para utilizar a
saída. No caminho inverso, um demultiplexador (DEMUX) direciona o sinal de um canal para
um terminal específico. É similar ao funcionamento da Internet, em que vários computadores
utilizam um roteador que possui um canal único até um backbone conectado a diversos
servidores. No entanto, os dados que pretendem ser enviados têm apenas um emissor e um
receptor, função essa do conjunto MUX/DEMUX, que seleciona o canal para os terminais
específicos em comunicação a cada momento.
No Infográfico você vai ver um canal de transmissão conectando dois teclados numéricos de um
lado a dois displays de sete segmentos do outro utilizando um canal compartilhado.
Conteúdo interativo disponível na plataforma de ensino!
CONTEÚDO DO LIVRO
Os circuitos digitais podem ser agrupados por funções, e toda a complexidade eletrônica pode
ser abstraída em blocos funcionais que permitam analisar com facilidade o funcionamento
lógico do circuito sem se preocupar com níveis de tensão, impedâncias e outros elementos mais
básicos.
No capítulo Lógica combinacional, da obra Eletrônica digital, que é base teórica desta Unidade
de Aprendizagem, você vai ser apresentado a técnicas de mapeamento de possibilidades por
meio da construção da tabela verdade, à obtenção das expressões lógicas, ao uso da álgebra
booleana em conjunto com axiomas e teoremas que permitam simplificar essas expressões e a
uma técnica mais avançada de simplificação, conhecida como mapa de Karnaugh.
ELETRÔNICA
DIGITAL
Maikon Lucian Lenz
Lógica combinacional
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
Definir portas lógicas.
Diferenciar teoremas de axiomas.
Resolver operações de simplificação de expressões booleanas.
Introdução
As portas lógicas são abstrações de circuitos que desenvolvem operações
lógicas e possuem simbologia e expressões algébricas próprias que as
representam. Essas expressões possibilitam a manipulação algébrica,
a fim de obter a saída para determinadas combinações de entradas e,
também, a simplificação das expressões para a construção de circuitos
digitais reduzidos, capazes de executar a mesma função.
Neste capítulo, você vai estudar as portas lógicas. Você também vai
verificar a tabela verdade, que mapeia todas as hipóteses possíveis para um
circuito ou expressão lógica, e os métodos utilizados na simplificação por
meio de axiomas ou pela técnica gráfica conhecida como mapa de Karnaugh.
Portas lógicas
Os estados fundamentais dos circuitos digitais podem ser equiparados a estados
lógicos, já que, em ambos os casos, existem dois estados possíveis para uma
unidade de informação. Assim, a álgebra booleana, desenvolvida para análise
e manipulação de informações de natureza lógica, pode ser utilizada também
para sistemas digitais, em que o nível 0 representa o estado falso e o nível 1
representa o estado verdadeiro, conforme lecionam Tocci, Widmer e Moss (2011).
Os circuitos básicos da eletrônica digital são projetados para executar fun-
ções lógicas a partir das três operações fundamentais E, OU e NÃO, além de
combinações entre estas para a criação de blocos funcionais mais complexos,
como somadores, contadores, codificadores, entre outros.
2 Lógica combinacional
As portas lógicas são criadas com o auxílio de transistores. Geralmente, o
transistor é configurado de maneira a operar como uma chave digital — ou seja,
transitar entre as regiões de corte e saturação, em vez de operar na região ativa,
onde funcionaria como um amplificador. Uma exceção à regra é a tecnologia ECL
(lógica com acoplamento pelo emissor), em que a operação ocorre de maneira
diferencial, similar ao comportamento de um amplificador operacional, para
chavear o sinal a partir da diferença de corrente entre dois ou mais transistores.
A vantagem da tecnologia ECL é o tempo de chaveamento, já que os transistores
não operam na região de saturação e demandam menos portadores para fazer
mudanças de estado, conforme expõe Tocci, Widmer e Moss (2011).
Entretanto, a maior parte dos circuitos lógicos envolve circuitos TTL ou
MOS/CMOS. TTL (transistor-transistor logic) é a sigla para transistor a
transistor e utiliza transistores bipolares polarizados com o auxílio de resis-
tores para desempenhar as funções lógicas, sempre em corte ou saturação. Já
MOS é a tecnologia que utiliza transistores de efeito de campo do tipo metal-
-óxido-semicondutor (MOSFET), menores, com potências reduzidas e que
dispensam a necessidade de resistores para polarizar adequadamente. Por sua
vez, a tecnologia CMOS utiliza os mesmos MOSFETs, porém associados de
forma complementar, para que, enquanto um está conduzindo, o outro esteja
em corte, o que permite um controle ainda mais eficiente da porta lógica, de
acordo com Tocci, Widmer e Moss (2011).
Na Figura 1 é possível ver a comparação de três portas lógicas inversoras
utilizando tecnologias diferentes.
Figura 1. (a) Inversor TTL; (b) inversor N-MOS; (c) inversor CMOS.
Lógica combinacional 3
É importante compreender o funcionamento a nível elétrico dos circuitos
lógicos. Isso permite que se faça o uso mais adequado de cada tecnologia e
se compreenda com mais facilidade eventuais defeitos que possam surgir no
projeto ou resultantes de circuitos danificados.
Mas, no dia a dia, utilizar o esquema elétrico completo de circuitos digitais
não é prático e dificulta a análise fundamental: a mudança de estado de uma
saída a partir de um nível de entrada. Para isso, não é necessário observar a
atuação de cada componente dentro de uma porta lógica, mas apenas conhecer
como a sua saída deve reagir sob condições específicas. Assim, duas formas
de abstração são utilizadas para representar um circuito digital de maneira
simplificada e que permita utilizar apenas operações lógicas no processo:
blocos funcionais e tabela verdade.
O conceito de blocos funcionais é fácil de compreender, já que é utilizado
por vários outros elementos. Consiste em representar um dispositivo ou um
sistema apenas por seus meios de acesso externo, abstraindo toda a informa-
ção interna. Nesse tipo de diagrama, há somente pinos e o próprio modelo
componente discriminados. Dois exemplos são apresentados na Figura 2.
Figura 2. Porta lógica inversora e porta lógica E.
Junto dos blocos, utiliza-se uma tabela com todas as possibilidades lógicas
de operação para o determinado circuito. Em outras palavras, é montada uma
tabela descrevendo todas as entradas possíveis e os resultados esperados
para a saída em cada caso. A tabela verdade possui uma coluna para cada
entrada ou saída do sistema ou bloco que representa, chamadas de variáveis.
À esquerda são situadas as variáveis de entrada e, à direita, as de saída. Cada
linha representa uma combinação de valores de entrada possível. Normal-
mente, a tabela é organizada de forma a seguir a sequência numérica natural.
Considerando a combinação de entradas, é resolvida a expressão lógica que
representa o sistema para cada uma das saídas.
4 Lógica combinacional
Portas lógicas fundamentais
São três as operações lógicas fundamentais, aquelas que dão origem a todas
as outras: E, OU e NÃO. Você vai perceber que o raciocínio por trás delas é
muito próximo da nossa forma de pensar.
A operação lógica NÃO, do inglês NOT, estipula que, para qualquer que seja a
entrada, a saída será o inverso. Em outras palavras, se a entrada for falsa, a saída
será verdadeira; se a entrada por verdadeira, a saída será falsa. Em eletrônica
digital, falso é expresso pelo valor 0 e verdadeiro pelo valor 1. De agora em
diante, serão utilizados 0s e 1s, para facilitar a compreensão e permitir o uso da
álgebra booleana mais a frente, conforme sugere Tokheim (2013).
A porta lógica que executa uma operação NÃO também é conhecida como
porta inversora. Essa porta lógica pode ser vista na Figura 3.
Figura 3. Tabela verdade e porta lógica inversora.
A operação lógica E, do inglês AND, diz que: independentemente da
quantidade de variáveis de entrada que um sistema possui, o resultado somente
será verdadeiro caso todas essas variáveis também o sejam. É o mesmo que
dizer, por exemplo, que, para um carro andar, é necessário que esteja ligado
E tenha combustível. Repare que, caso qualquer uma das duas condições seja
falsa, o carro não entrará em movimento, conforme leciona Tokheim (2013).
A tabela verdade e o símbolo que representa uma porta lógica E estão
expressos na Figura 4.
Figura 4. Tabela verdade e porta lógica E.
Lógica combinacional 5
A operação lógica OU, do inglês OR, estipula que, independentemente da
quantidade de variáveis de entrada, sempre que uma delas for 1, a saída será 1.
Em outras palavras, sempre que pelo menos uma delas for verdadeira, a saída
será verdadeira; logo, a saída somente será falsa quando todas as entradas
forem verdadeiras. Analogamente, utilizando novamente como exemplo um
carro, é o que ocorre quando o carro não liga porque está sem bateria OU
sem combustível, ou seja, se qualquer das condições for verdadeira (a falta
de alguma das condições para ligar o carro), isso fará com que a saída seja
verdadeira (o carro esteja com defeito), conforme aponta Tokheim (2013). A
Figura 5 apresenta a tabela verdade e a porta lógica OU.
Figura 5. Tabela verdade e porta lógica OU.
Esse último exemplo é bastante pertinente, uma vez que faz um raciocínio
aparentemente contrário ao que seria natural. É comum associarmos coisas
positivas com uma resposta verdadeira ou entradas verdadeiras. No caso
anterior, a afirmação seguia no sentido inverso — a condição verdadeira
representava uma falha. Não que a lógica tenha mudado, mas o significado
que se dá para cada evento e o que se interpreta do resultado é que seguiu
em um sentido não tão prático quanto poderia. É bom que o leitor perceba a
diferença entre variável e fenômeno associado — não há qualquer juízo de
valor em uma operação lógica. Em outras palavras, a álgebra utilizada para
solucionar problemas lógicos não se importa com o significado dado a cada
sinal ou resultado, mas apenas com as regras adotadas para o sistema.
O exemplo do carro que não liga poderia ser reorganizado utilizando uma
operação lógica E, sem qualquer prejuízo para o sistema. Por exemplo: o carro
liga se houver combustível E houver bateria. O que parece muito mais prático
de interpretar.
É importante tentar ser o mais claro possível na forma de lidar com cada
variável. Repare que, no primeiro caso, deveria existir um sensor conectado
à bateria, que fosse acionado quando a bateria acabasse, e outro que fosse
acionado quando o combustível acabasse, para que a operação OU indicasse
6 Lógica combinacional
a falta de qualquer um deles. Já na segunda situação, os sensores deveriam
indicar o inverso, a existência de combustível e de bateria, para que a operação
E sinalizasse que está tudo certo para ligar o carro. Perceba o quão importante
é o significado atribuído a cada sinal. Errar nessa construção ou na forma
de interpretar as informações presentes no sistema fará a diferença entre o
sucesso e o fracasso do projeto.
Matematicamente, cada porta lógica fundamental é representada por um
símbolo. A operação E é apresentada por um “·”, a OU é representada pelo
símbolo “+”, e a inversora é representada por um traço acima da variável ou
conjunto de operações a ser invertida. A prevalência é dada à operação NÃO,
quando relacionada a uma única variável, e à operação E, quando entre duas
variáveis. As expressões que representam as operações fundamentais podem
ser vistas no Quadro 1.
Quadro 1. Expressões booleanas das operações lógicas fundamentais
Operação E S=A∙B
Operação OU S=A+B
Operação NÃO S=
Outras portas lógicas
As portas lógicas fundamentais podem ser associadas para formar outra,
mas com tabela verdade diferente. São utilizadas, ao todo, sete portas lógicas
diferentes, sendo três delas as portas fundamentais, já apresentadas, e mais
quatro resultantes de alguma combinação de maior uso entre elas, que abrangem
as portas NÃO-E, NÃO-OU, OU-EXCLUSIVO e NÃO-OU-EXCLUSIVO.
A porta lógica NÃO-E, do inglês NAND, é a negação da função E, ou
seja, é equivalente a utilizar uma porta inversora em série com uma porta E,
conforme aponta Tokheim (2013). O resultado será a inversão de todos os
casos da tabela verdade de uma operação lógica E (Figura 6).
Lógica combinacional 7
Figura 6. Tabela verdade e porta lógica NÃO-E (à direita).
À esquerda, o circuito equivalente utilizando somente as portas
lógicas fundamentais E e NÃO.
A porta lógica NÃO-OU, do inglês NOR, é a negação da função OU, ou
seja, é equivalente a utilizar uma porta inversora em série com uma porta
OU, segundo Tokheim (2013). O resultado será a inversão de todos os casos
da tabela verdade de uma operação lógica OU (Figura 7).
Figura 7. Tabela verdade e porta lógica NÃO–OU (à direita).
À esquerda, o circuito equivalente utilizando somente as portas
lógicas fundamentais OU e NÃO.
A porta lógica OU-EXCLUSIVO, do inglês XOR, apresenta saída 1 quando
apenas uma das entradas for verdadeira. Para construí-la, é necessário utilizar
cinco portas lógicas fundamentais, conforme leciona Tokheim (2013) (Figura 8).
Figura 8. Tabela verdade e porta lógica OU–EXCLUSIVO (à direita). À esquerda, o circuito
equivalente utilizando somente as portas lógicas fundamentais E, OU e NÃO.
8 Lógica combinacional
A porta lógica NÃO-OU-EXCLUSIVO, do inglês XNOR, apresenta saída 1
quando ambas as entradas forem verdadeiras. Para construí-la, também é
necessário utilizar cinco portas lógicas fundamentais, segundo Tokheim
(2013). Essa porta lógica é conhecida como coincidência, já que, somente
quando todos os dados da entrada coincidirem (sejam todos 0s ou 1s), a saída
será verdadeira (Figura 9).
Figura 9. Tabela verdade e porta lógica NÃO-OU-EXCLUSIVO (à direita). À esquerda, o circuito
equivalente utilizando somente as portas lógicas fundamentais E, OU e NÃO.
Assim como para as portas lógicas fundamentais, as demais também podem
ser expressas matematicamente, conforme mostra o Quadro 2.
Quadro 2. Expressões booleanas das operações lógicas NAND, NOR, XOR e XNOR
Operação NÃO-E
Operação NÃO-OU
Operação ou
OU-EXCLUSIVO
Operação ou
NÃO-OU-EXCLUSIVO
Obtenção da expressão lógica correspondente
A tabela verdade é o mapeamento de cada resposta possível de um sistema
digital. A partir dela, pode-se obter as expressões booleanas que simplificam
a análise e a visualização das conexões existentes entre as portas lógicas. Para
Lógica combinacional 9
obter a expressão lógica a partir de uma tabela verdade, pode-se utilizar duas
técnicas: soma dos produtos e produto das somas.
Na soma dos produtos, serão consideradas apenas as linhas (combinações
de entradas) cuja saída resulte em 1. Cabe ressaltar, primeiramente, que, para
cada saída (coluna), existe uma expressão lógica independente das demais. O
procedimento consiste em fazer a operação E entre todas as entradas de cada
linha igual a 1, considerando o inverso das variáveis, cuja entrada para a linha
em questão seja 0. Ao final, as expressões obtidas para cada linha utilizada
deverão ser agrupadas por uma operação OU.
Considere a tabela verdade da Figura 9, em que S é igual a 1 apenas nas
linhas 1 e 4. Na linha 1, ambas as variáveis, A e B, são iguais a 0. Nesse caso,
deve-se fazer uma operação E entre todas as entradas; por serem iguais a zero,
todas estarão barradas ou sinalizadas por um apóstrofo. Ou seja, cada variável
deverá passar por uma operação NÃO antes de ser vinculada à operação E.
O resultado da linha 1 é:
ou
Para a linha 4, A e B são verdadeiros, e ainda passarão por uma operação
E; porém, não serão invertidas antes da operação:
S4 = A · B
Uma vez obtidas as expressões para cada hipótese (linha) em que o sis-
tema possui saída verdadeira, todas as hipóteses devem ser atribuídas a uma
operação OU:
Trata-se da mesma expressão já demonstrada na tabela anterior para a
operação lógica XNOR.
Já no produto das somas, inverte-se toda a lógica, e passam a ser consi-
deradas apenas as saídas iguais a 0. No lugar da operação E, as entradas são
relacionadas por uma operação OU, e são invertidas as entradas que apresentem
valor 1. Ao final, as expressões obtidas são agrupadas por uma porta E. Todos
os procedimentos são invertidos, já que estão sendo buscadas saídas falsas
em vez de verdadeiras.
10 Lógica combinacional
Utilizando novamente a tabela verdade da Figura 9, observa-se que as
linhas 2 e 3 apresentam saídas iguais a 0. Na linha 2, a entrada A é 0 e deve
ser mantida, enquanto a entrada B é 1 e deve ser invertida; só então é que
serão operadas pela lógica OU:
Na linha 3, a situação se inverte; a saída A é verdadeira, enquanto a saída
B é falsa. Logo, quem deverá passar por uma porta NÃO antes da porta OU
é a entrada A:
Como a operação E tem prevalência sobre a operação OU, ao agrupar
as duas expressões, deve-se utilizar parênteses para que fique explícita a
necessidade de resolver as funções OU antes das funções E.
Se resolvidas caso a caso, o resultado de cada expressão obtida deverá ser
a mesma tabela verdade (a mesma resposta para todas as hipóteses), seja pela
soma dos produtos, seja pelo produto das somas. O resultado pode ainda ser
expandido, resolvendo-se as “multiplicações” algébricas.
Você vai aprender sobre teoremas e axiomas booleanos mais adiante, mas
é possível provar que a expressão expandida é a mesma obtida pela soma dos
produtos utilizando apenas um deles. Se cada variável só pode possuir dois
estados válidos, 0 ou 1, e estão presentes operações E entre a variável e o seu
próprio inverso, como em e , é fácil demonstrar que qualquer que
seja o valor de A ou B, o resultado dessas operações E será sempre 0.
Lógica combinacional 11
Resta claro que, qualquer que seja o método de obtenção das expressões a
partir da tabela verdade, o resultado deverá ser o mesmo, independentemente
das expressões obtidas. As portas lógicas e suas ligações podem ser desenhadas
seguindo a ordem em que cada operador aparece, desde que sejam obedecidos
os critérios de equivalência já citados. Ao final de um circuito completo, a
última saída deverá representar a variável à esquerda da equação; no caso dos
exemplos anteriores, S.
Teoremas e axiomas
Os teoremas e axiomas são parte de um conjunto de regras utilizadas para
simplificar as expressões lógicas, conforme leciona Vahid (2008). Os axiomas
mais importantes são apresentados no Quadro 3.
Quadro 3. Expressões booleanas das operações lógicas fundamentais
Intersecção A∙1=A A∙0=0
União A+1=1 A+0=A
Tautologia A∙A=A A+A=A
Comutativa A∙B=B∙A A+B=B+A
Associativa (A ∙ B) ∙ C = A ∙ (B ∙ C) = A + (B + C) = (A + B) + C =
A∙B∙C A+B+C
Distributiva A ∙ (B + C) = A ∙ B + A ∙ C A + B ∙ C = (A + B) ∙ (A + C)
Absorção A+A∙B=A A ∙ (A + B) = A
Dupla negação
Complementares
O teorema de Morgan, por sua vez, estabelece uma relação de dualidade
entre somas (OU) e produtos (E) e afirma que o inverso de um produto é
equivalente à soma das entradas invertidas:
12 Lógica combinacional
O contrário também é verdadeiro:
A partir dele, é ainda mais fácil perceber que a soma dos produtos e o
produto das somas representam o complemento de uma mesma tabela verdade;
ou seja, enquanto uma estabelece as regras para se obter as saídas 0, a outra
estabelece as regras para se obter as saídas iguais a 1. De qualquer forma,
ambas chegarão ao mesmo resultado, como já foi demonstrado no exemplo
da porta XNOR.
Simplificação de expressões booleanas
Simplificar uma expressão booleana consiste em reduzir a quantidade de
operações lógicas necessárias e de variáveis utilizadas, sem que seja afetado o
resultado final para qualquer uma das possibilidades que envolvem o circuito.
A simplificação pode ser feita diretamente por meio das expressões booleanas,
com o auxílio dos teoremas e axiomas apresentados. Buscam-se partes de
uma expressão que atendam aos critérios dos axiomas ou teoremas, para que
sejam substituídas por uma quantidade menor de operações e/ou variáveis. Um
exemplo de simplificação utilizando o axioma complementar já foi realizado
ainda na simplificação da equação para a porta lógica XNOR.
Porém, quanto maior for a expressão, maior será o trabalho de simplificação
algébrica, e, muitas vezes, você poderá se deparar com diferentes caminhos,
que nem sempre o levarão para o ponto de máxima redução. Para facilitar o
procedimento, Maurice Karnaugh desenvolveu um método de solução gráfica
para obter as expressões já simplificadas, o qual batizou de mapa de Kar-
naugh, conforme leciona Tokheim (2013).
O mapa é útil para tabelas verdade que possuam até seis entradas, e não há
limites para a quantidade de saídas. Basta que, para cada saída, seja desenvolvido
um mapa, já que cada uma delas se refere a uma expressão individual. Teoricamente,
o mapa poderia ser solucionado com mais de seis entradas, mas, por se tratar de um
método gráfico, a complexidade aumenta consideravelmente a cada nova entrada.
O mapa de Karnaugh reorganiza as linhas de hipóteses para um modelo
bidimensional. As combinações de entrada não serão mais o conjunto de valores
de uma única linha, mas o cruzamento de uma linha com uma coluna, com
intersecção em uma célula de saída. A Figura 10 mostra a conversão de uma
tabela verdade de duas entradas para um Mapa de Karnaugh.
Lógica combinacional 13
Figura 10. Exemplo de uma tabela verdade reorganizada para um mapa de Karnaugh.
Fonte: Tokheim (2013, p. 89).
No exemplo da Figura 10, as linhas e colunas só dependem de uma va-
riável cada. Mas, para casos com três ou mais variáveis, deve-se obedecer
ao critério da adjacência, em que a combinação de valores entre colunas
ou linhas vizinhas só pode conter uma única mudança de estado. Em outras
palavras, de uma linha ou coluna para a próxima, somente o estado de uma
entrada pode sofrer alteração por vez. Isso significa que a ordem numérica
não será mais obedecida.
Considere, por exemplo, a segunda linha de combinações de uma tabela
verdade com três variáveis de entrada. Seguindo a ordem natural, esta teria
as seguintes hipóteses de entrada 0012, a terceira linha por sua vez seria 0102,
ou seja, o primeiro bit mudou de 1 para 0, o segundo, de 0 para 1, e somente o
terceiro permaneceu em 0. Nesse caso, se as três variáveis fossem distribuídas
em uma matriz de linha A e colunas B e C, a ordem de colunas passaria de
002 → 012 → 102 → 112 para 002 → 012 → 112 → 102, de forma que a transi-
ção da segunda para a terceira coluna tenha apenas uma mudança de estado.
Todas as hipóteses continuam presentes, já que apenas a ordem de transição
foi alterada. A linha A, com as condições 02 e 12 apenas, não necessitaria de
qualquer intervenção, já que uma única variável atende intrinsecamente ao
critério de adjacência, conforme leciona Floyd (2007).
14 Lógica combinacional
Ao mudar a sequência em que aparecem as hipóteses no mapa de Karnaugh, para
cumprir o critério de adjacência, deve-se ter o cuidado para que as saídas continuem
relacionadas à hipótese específica. Em outras palavras, se uma coluna ou linha é alterada
de posição, as células da saída correspondentes àquele valor devem seguir com ela.
Isso porque a resposta de uma tabela verdade não está associada a uma posição
específica, mas à combinação de valores das entradas, e as combinações devem ser
mantidas para não alterar o significado e o resultado do sistema.
Uma vez construído o mapa de Karnaugh, são feitos enlaces, que devem
agrupar somente células vizinhas, vertical ou horizontalmente, que possuam
valor 1. O tamanho de um enlace é dado em potências de 2, podendo cobrir
uma, duas, quatro ou oito células e, assim, sucessivamente. Os enlaces devem
ser quadrados ou retangulares e jamais desenhos e/ou contornos estranhos
a esse formato. Isso porque o que se faz graficamente pretende simplificar a
expressão, que, se feita manualmente, atenderia à correspondência algébrica
necessária; qualquer enlace que não atenda as regras não teria equivalência
matemática e, portanto, adicionaria um erro à expressão.
A exceção aos desenhos quadrados/retangulares deve ser feita para as
extremidades, em que é possível agrupar as células, pois a matriz deve ser vista
como uma esfera fechada, em que as extremidades estão unidas. Recorde-se
que o critério de adjacência estabelece que duas células são ditas vizinhas se
suas linhas e colunas possuem apenas uma transição de estado entre elas, o
que não deixa de ser verdade para as células das extremidades. Quando um
enlace não for suficiente para, atendendo às regras anteriores, cobrir todas
as células iguais a 1, mais enlaces devem ser formados, até que o processo
esteja completo.
Os enlaces podem se sobrepor, e cada célula pode pertencer a mais de um
enlace, o que, de um modo geral, aumenta a simplificação, por possibilitar enla-
ces maiores. Porém, deve-se tomar cuidado para que não sejam criados enlaces
desnecessários, que aumentariam a expressão, sem adicionar qualquer outra
célula igual a 1 descoberta. Em raras situações, os enlaces podem necessitar
de procedimentos mais rígidos para se escolher o tamanho dos enlaces e quais
células cobrir primeiramente. Mas, de um modo geral, é possível preencher o
mapa de Karnaugh sem problemas, buscando os maiores enlaces possíveis e
reduzindo o tamanho do enlace enquanto ainda existirem células de valor 1
descobertas, conforme leciona Floyd (2007).
Lógica combinacional 15
Cada um dos enlaces representa uma operação E da expressão, e as várias
expressões/enlaces são somadas (operação OU) para dar origem à expressão
completa daquela saída para a qual se construiu o mapa. Um a um, os enlaces
devem fazer o produto (operação E) das entradas cujos estados vinculados às
suas células não tenham mudanças de valor.
Cada enlace do mapa de Karnaugh é capaz de eliminar as condições atendidas pelos
axiomas complementares, em que uma expressão conteria situações como .
Apesar de um mapa de Karnaguh conter, muitas vezes, diversas soluções, se atendidas
as regras estipuladas, todas elas devem obter o mesmo nível de simplificação, mesmo
que as expressões não sejam coincidentes.
Se um enlace cobre as hipóteses em que A é igual a 0 e 1, mas somente as
hipóteses em que B e C são iguais a 102, a variável A deverá ser descartada
para a expressão desse enlace, já que muda de valor ao longo dele; como B
é sempre 1 e C é sempre 0, devem ser utilizados na expressão. Considere as
variáveis que mantenham o valor 1 de forma direta na expressão, e as variáveis
iguais a 0 de forma inversa. Ou seja, sendo BC = 102 para todas as células do
enlace, a expressão correspondente a ele será . Lembrando, mais uma vez,
que A foi eliminado da expressão porque não possui um valor fixo para todas
as células do enlace analisado. Uma vez obtidas as expressões equivalentes a
cada enlace, a expressão final será a soma de todas elas.
16 Lógica combinacional
Considere o mapeamento das possibilidades para um circuito digital representado
pela tabela verdade a seguir. Qual seria a expressão mais simplificada?
A B C D S
0 0 0 0 0
0 0 0 1 0
0 0 1 0 1
0 0 1 1 1
0 1 0 0 1
0 1 0 1 1
0 1 1 0 1
0 1 1 1 1
1 0 0 0 0
1 0 0 1 1
1 0 1 0 0
1 0 1 1 0
1 1 0 0 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
O mapa de Karnaugh para o exemplo ficaria assim (as células iguais a 0 foram deixadas
sem valor, já que não são utilizadas):
Lógica combinacional 17
Fonte: Floyd (2007, p. 233).
Repare que, quanto maior o enlace, menor a quantidade de variáveis da expressão.
O enlace maior, de oito células, engloba as linhas 2 e 3, em que a variável A muda de
valor e fica de fora, mas B é sempre 1. Para as variáveis das colunas, todas mudam de
valor e são eliminadas da expressão.
S1 = B
No enlace de quatro células, B deve ser eliminado, já que nas linhas 1 e 2 ele muda de
valor. Para as colunas, apenas C mantém o valor sempre em 1, sendo eliminada a variável D.
A variável é invertida porque, apesar de manter seu valor dentro do enlace, ela é igual a 0.
O último enlace possui apenas duas células, e apenas a variável B muda de valor ao
longo dele. Sendo todas as demais permanentes e iguais a 1, a expressão será:
S3 = A ∙ C ∙ D
A expressão simplificada resulta da soma das expressões de cada enlace.
18 Lógica combinacional
FLOYD, T. L. Sistemas digitais: fundamentos e aplicações. 9. ed. Porto Alegre: Bookman,
2007.
TOCCI, R. J.; WIDMER, N. S.; MOSS, G. L. Sistemas digitais: princípios e aplicações. 11. ed.
Rio de Janeiro: Pearson, 2011.
TOKHEIM, R. Fundamentos de eletrônica digital: sistemas combinacionais. 7. ed. Porto
Alegre: AMGH, 2013.
VAHID, F. Sistemas digitais: projeto, otimização e HDLs. Porto Alegre: Bookman, 2008.
Leituras recomendadas
CAPUANO, F. G.; IDOETA, I. V. Elementos de eletrônica digital. 41. ed. São Paulo: Érica, 1997.
SZAJNBERG, M. Eletrônica digital: teoria, componentes e aplicações. Rio de Janeiro:
LTC, 2014.
TOKHEIM, R. Fundamentos de eletrônica digital: sistemas sequenciais. 7. ed. Porto Alegre:
AMGH, 2013.
DICA DO PROFESSOR
Um circuito combinacional muito comum é o circuito somador. Com ele, várias métodos de
simplificação podem ser utilizados para obter a melhor solução e, ao fim, ter um circuito capaz
de somar dois bits ou agrupá-los a outros para ampliar o tamanho da variável a ser somada.
Na Dica do Professor você vai poder acompanhar a análise de um circuito somador.
Conteúdo interativo disponível na plataforma de ensino!
EXERCÍCIOS
1) Assim como existem diferentes tipos de transistores e formas de polarização para
cada um deles, também poderão ser construídos circuitos digitais aproveitando-se
dessas diferentes tecnologias, cada qual com suas vantagens e desvantagens.
Assinale a alternativa que melhor descreve as características da referida tecnologia
utilizada para circuitos digitais.
A) A família TTL apresenta a maior capacidade de miniaturização por utilizar transistores
bipolares e que não necessitam de resistores para polarização.
B) A família ECL utiliza transistores de efeito de campo, permitindo a atuação por
chaveamento de corrente e consequentemente maior frequência de operação.
C) A grande vantagem dos circuitos TTL é a quantidade de portadores envolvidos na
saturação, que permitem frequências de chaveamento elevadas.
D) O CMOS é uma evolução da tecnologia ECL. Ambos utilizam transistores de efeito de
campo, sendo a principal diferença o uso de transistores complementares na família
CMOS.
E) Devido às características de chaveamento de baixa potência e ao tamanho reduzido, o
MOSFET utilizado nos circuitos CMOS permitiu que os circuitos digitais ampliassem em
muito a frequências de processamento.
2) A tabela verdade é o mapeamento de todas as saídas resultantes para cada uma das
combinações de entradas possíveis a um dado sistema. A partir dela, são extraídas as
expressões booleanas que representarão um circuito digital.
Qual expressão booleana representa adequadamente a tabela verdade de entradas A e B
abaixo?
A)
B)
C)
D)
E)
3) Cada porta lógica possui um operador booleano que a representa. Obedecendo aos devidos
critérios de prevalência, é possível obter a expressão booleana a partir de um circuito que
utilize a simbologia padrão das portas lógicas.
Qual expressão representa o circuito lógico da imagem?
A)
B)
C)
D)
E)
4) Várias expressões podem ter exatamente o mesmo significado, ou seja, uma vez
resolvidas para todas as combinações de entradas possíveis, ambas apresentam os
mesmos resultados para todas as condições. É claro que algumas soluções serão
menores em quantidade de operações e algumas vezes até de variáveis
utilizadas, sendo preferível a que for mais simplificada, pois resultará em um menor
circuito lógico e, portanto, economizará portas lógicas.
Qual alternativa apresenta uma expressão simplificada para a expressão a seguir?
A)
B)
C)
D)
E)
5) O mapa de Karnaugh reorganiza a tabela verdade, uma saída de cada vez, e permite a
obtenção de uma expressão booleana simplificada utilizando-se apenas de critérios gráficos
simples.
Considerando o mapa de Karnaugh a seguir, qual alternativa representa a expressão mais
simplificada?
A)
B)
C)
D)
E)
NA PRÁTICA
Você já deve estar familiarizado com as três portas lógicas fundamentais. Mas há outra
característica importante que envolve duas das outras quatro portas lógicas mais comuns: NAND
e NOR. Essas portas são chamadas de universais porque ambas são capazes de recriar as outras
funções lógicas básicas utilizando combinações de portas da mesma função, ou seja, podem
recriar as funções fundamentais AND, OR e NOT.
E se as funções lógicas básicas dão origem a todas as outras, significa que qualquer problema
pode ser resolvido com uma dessas duas portas. Basta encontrar a quantidade e as ligações
corretas para tanto.
Confira como são as portas lógicas fundamentais criadas a partir de portas NAND.
SAIBA MAIS
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do
professor:
Circuitos Lógicos - Aula 09 - Blocos Básicos: Codificadotres, decodificadores,
multiplexadores
aprenda neste vídeo o circuito de transcodificação seus códigos de entrada e saída
Conteúdo interativo disponível na plataforma de ensino!
Mintermo e maxtermo
Assista ao vídeo que trata de expressões booleanas canônicas, com detalhes sobre os métodos de
soma de produtos e produto das somas.
Conteúdo interativo disponível na plataforma de ensino!
Condições Irrelevantes no mapa de Karnaugh
Assista ao vídeo que fala como trabalhar com condições de entrada irrelevantes de forma a
aproveitá-las para simplificar ainda mais o circuito.
Conteúdo interativo disponível na plataforma de ensino!
Simplificação pelo método de Quine-McCluskey
Leia o breve material que trata da simplificação de circuitos mais abrangentes que o mapa de
Karnaugh.
Conteúdo interativo disponível na plataforma de ensino!
Lógica sequencial
APRESENTAÇÃO
Utilizando-se apenas da lógica combinacional, muitos problemas irão ter tantas possibilidades
que tornarão a resolução demasiadamente complexa, se não impossível. Felizmente, muitas
vezes, um problema pode ser dividido em estados e sequenciado com o auxílio de um contador,
porém esse tipo de circuito demanda a implementação de uma máquina de estados, o que, por
sua vez, necessita de componentes capazes de memorizar o estado em que se encontram para
avançar de maneira correta. Somente com a invenção dos flip-flops, criando dispositivos de
armazenamento temporário, foi possível progredir no sequenciamento de estados.
Nesta Unidade de Aprendizagem, você vai conceituar flip-flops e registradores, analisar
circuitos síncronos e assíncronos e utilizar máquinas de estados finitos.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
• Conceituar flip-flops e registradores.
• Analisar circuitos síncronos e assíncronos.
• Utilizar máquinas de estados finitos.
DESAFIO
Com os circuitos sequenciais e a possibilidade de armazenar dados, mesmo que
temporariamente, algumas soluções para problemas mais complexos puderam ser
implementadas.
Imagine que você precisa automatizar um portão de horizontal que tem um sensor de fim de
curso no ponto em que está totalmente fechado e outro no ponto em que está totalmente aberto.
Esse portão deverá utilizar um sensor de presença de veículos para que seja aberto. Ao atingir o
fim de curso do lado aberto, um temporizador aguarda um determinado intervalo de tempo para
que seja ordenado a fechar, sinalizando 1 se o tempo for atingido. O portão possui, também, dois
atuadores: um para acionar o motor e outro para mudar a direção deste (0 para abrir e 1 para
fechar).
Sendo assim, responda:
a) De que forma esse problema poderia ser representado em uma máquina de estados que
permita desenvolver um circuito para o portão?
b) Qual seria a tabela verdade de um decodificador que utiliza um contador para informá-lo do
avanço dos passos?
INFOGRÁFICO
Há duas formas de construir uma máquina de estados: a máquina de Moore e a máquina de
Mealy. Cada uma delas será vantajosa sobre determinadas circunstâncias.
O Infográfico a seguir traz uma comparação entre elas, analisando a diferença de diagrama de
estados nos dois métodos para um máquina de refrigerante que inicialmente aguarda:
- Um sinal de que um refrigerante foi selecionado (f).
- Um dispositivo acionado para zerar o contador de moedas (Z).
- Um estado de espera no qual o contador irá informar a quantidade suficiente de moedas
detectadas, liberando o refrigerante e retornando para o estado inicial.
Confira.
CONTEÚDO DO LIVRO
Os circuitos sequenciais permitiram avanços significativos para os circuitos digitais,
possibilitando a criação de processadores extremamente complexos e eficientes. O primeiro
passo foi dado com a invenção dos latchs e dos flip-flops, dispositivos capazes de armazenar bits
de informação. Ao serem agrupados diversos flip-flops, outras funções mais complexas foram
obtidas, entre elas, os registradores e os contadores. Estes, por sua vez, adicionaram meios de
resolução de problemas através do sequenciamento de estados, utilizando-se das máquinas de
estados.
No capítulo Lógica sequencial, da obra Eletrônica Digital, você vai saber mais sobre flip-flops e
registradores, circuitos síncronos e assíncronos e máquinas de estados finitos.
Boa leitura.
ELETRÔNICA
DIGITAL
Maikon Lucian Lenz
Lógica sequencial
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
Conceituar flip-flops e registradores.
Analisar circuitos síncronos e assíncronos.
Utilizar máquinas de estados finitos.
Introdução
Métodos de sequenciamento de operação foram criados a partir do desen-
volvimento de circuitos digitais capazes de armazenar, mesmo que tempora-
riamente, um nível lógico. Os circuitos responsáveis por esse armazenamento
são normalmente chamados de latch ou flip-flop, esse último contendo
quatro tipos básicos de construção com formas de operação diferentes.
Neste capítulo, você vai estudar os flip-flops tipo RS, D, T e JK, bem
como uma variação do JK mestre-escravo. A partir do estudo dos flip-
-flops, você vai verificar os circuitos síncronos e assíncronos, dentre os
quais se destacam os contadores, de grande utilidade para a implemen-
tação de máquinas de estados. Trata-se de uma metodologia capaz de
lidar de maneira sistemática com problemas complexos por meio do
sequenciamento das operações.
Flip-flops e registradores
A saída de circuitos combinacionais depende exclusivamente das entradas
em dado instante de tempo. Esse tipo de operação é capaz de resolver inúme-
ros problemas, mas é incapaz de solucionar qualquer situação que demande
memória. Os circuitos sequenciais visam suprir a limitação operacional dos
circuitos combinacionais, tornando a saída, em conjunto com as entradas,
relevante para a nova transição de estado, conforme leciona Tocci (2011).
Além da capacidade de memorização, os circuitos sequenciais envolvem
temporização, para que sejam capazes de reagir a respeito da sua própria saída.
2 Lógica sequencial
Nos circuitos combinacionais, o principal elemento é a porta lógica. O conjunto
delas, cada qual com sua função, sendo conectadas de forma adequada, visa a
solucionar um problema expresso por uma tabela verdade. Nos circuitos sequen-
ciais, o elemento principal é o multivibrador biestável, normalmente chamado
de flip-flop (FF), o qual é constituído por um conjunto de portas lógicas com
retorno da saída para a entrada em algum ponto, conforme define Tokheim (2013).
Há, portanto, mais um nível de abstração. Os transistores estão ocultos
dentro das portas lógicas, para as quais é estabelecido um comportamento
rígido vinculado à uma tabela verdade, desde que obedecidas as configura-
ções elétricas mínimas do fabricante. O flip-flop, no entanto, vai além, e o
bloco que o representa oculta as próprias portas lógicas, sendo apresentados
apenas os seus pinos de entrada e saída e, novamente, a tabela verdade para
o comportamento esperado em cada situação.
São quatro tipos de flip-flops básicos: tipo RS, tipo JK, tipo D e tipo
T. É claro que, dentro de cada categoria, há variações de comportamento e
construção, mas o princípio básico de cada tipo é sempre o mesmo. Outra
característica comum a todos eles são as saídas complementares. Todo flip-flop
possui uma saída condizente com a lógica de funcionamento, denominada Q, e
outra invertida, denominada (lê-se Q barra, Q barrado ou não Q), conforme
leciona Tokheim (2013).
O flip-flop é derivado de um componente similar e um pouco mais simples,
denominado latch. A diferença fundamental entre flip-flops e latches é que
o primeiro possui mecanismos de controle das entradas — normalmente um
pino de habilitação das entradas —, enquanto o segundo lida diretamente com
as entradas e reage imediatamente a qualquer alteração.
Latch e flip-flop são facilmente confundidos. A diferença fundamental entre os dois
termos é que o latch representa qualquer circuito lógico de armazenamento temporário
de memória, enquanto os flip-flops podem ser mais complexos e possuem controle
de suas entradas, para habilitar ou não a função de determinados pinos.
Latch e flip-flop tipo RS
Os latches e flip-flops do tipo RS — também chamados S-R, abreviação em
inglês para SET-RESET — levam esse nome por conta da função exercida por
Lógica sequencial 3
cada um dos pinos de entrada, sendo o pino S utilizado para inicializar e o
pino R para reinicializar a saída. As entradas podem ser consideradas ativas
em nível baixo ou alto, dependendo do modelo ou da forma como é construído
o dispositivo, conforme leciona Floyd (2007).
Quando somente a entrada S estiver ativa, espera-se que o flip-flop
mude — caso já não esteja alterado — o estado do pino de saída direta (Q)
para 1. Quando somente a entrada R estiver ativa, é esperado que o flip-flop
mude — caso já não esteja alterado — o estado do pino de saída direta
(Q) para 0. Obviamente o pino (saída invertida ou complementar) fará o
processo inverso.
Quando nenhuma das duas entradas estiverem ativas, o FF deverá manter
o valor da saída no estado em que está; ou seja, se o último comando foi dado
para mudar para 1, mantenha 1, caso contrário, mantenha em 0, conforme
afirma Tokheim (2013). A última hipótese, em que ambos os pinos de entrada
estejam ativos, é considerada uma condição inválida, já que as saídas, que
deveriam ser complementares, serão ambas iguais a 1, devido ao circuito
interno do latch/FF do tipo RS. Ao desativar as entradas, não será possível
determinar exatamente o estado da saída, que dependerá de qual entrada saiu
do estado ativo primeiro, segundo Tocci (2011).
Na Figura 1 são apresentados os FFs com entradas ativas em 1 (Figuras
1a e 1b) e em 0 (Figuras 1c e 1d).
Figura 1. a) FF tipo RS com entradas ativas em 1; b) abstração do FF em (a); c) FF tipo RS
com entradas ativas em 0; d) abstração do FF em (c).
4 Lógica sequencial
À primeira vista, apesar de a lógica ser menos intuitiva, pode-se imaginar
que o FF com entradas ativas em 0 seja mais difundido pela economia de
portas lógicas. Entretanto, a maioria dos FFs utilizados possuem uma AND
para cada entrada, em conjunto com um pino de habilitação (E, do inglês
enable). Isso possibilita o uso de uma porta NAND para o FF de entradas ativas
em 1, colocando ambas as soluções em mesma quantidade de portas lógicas
utilizadas (Figura 2). Assim, é mais provável que a maior parte dos FF tipo
RS operem com entradas ativas em 1, seja por facilitar a análise, seja devido
à produção mais eficiente, derivada da utilização de apenas portas NAND na
sua construção, quando da presença de pinos de habilitação.
Figura 2. a) Entradas em AND com pino E; b) FF simplificado com
pino E; c) abstração do FF tipo RS com pino de habilitação.
O FF tipo RS pode ser utilizado como uma memória, mas é pouco prático
para essa função, porque necessita de duas entradas: o pino S para gravar
o valor 1, e o pino R para apagar. A operação pode ser descrita pela tabela
verdade mostrada no Quadro 1.
Lógica sequencial 5
Quadro 1. Tabela verdade do flip-flop tipo RS
E S R Q
0 0 0 Q (mantém) (mantém)
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1 0 1
1 1 0 1 0
1 1 1 ∄ — Inválida
Antes que o pino de habilitação seja conectado a uma AND ou NAND
com as demais entradas, ele pode passar por um circuito detector de borda,
normalmente composto por um multivibrador monoestável não redispa-
rável. A função desse multivibrador é fornecer 1 na saída por um período
fixo, ao ser detectado 1 na entrada. Isso evitará que o pino de habilitação seja
alterado com uma frequência maior do que o tempo mínimo de propagação
necessário para o bom funcionamento do FF. Também evitará que as portas
AND ou NAND aceitem alterações em S ou R com frequências menores
do que a estabelecida para o funcionamento adequado do circuito, e outros
casos como a trepidação de chaves mecânicas, algumas vezes utilizadas para
fornecer os níveis de entrada em partes dos circuitos lógicos. A trepidação
forneceria, por um breve instante de tempo, valores 1 e 0, o que produziria
mudanças falsas de entrada, conforme expõe Tocci (2011).
Latch e flip-flop tipo D
O flip-flop tipo D pode ser obtido utilizando um único pino que funcione
como sinal direto para o pino S e o seu inverso para o tipo R (Figura 3). Com
isso, a tabela verdade é reduzida, removendo-se uma entrada. Sem o pino de
habilitação, o latch tipo D tem pouca serventia, uma vez que apenas repete
a entrada na saída Q e o inverso na saída . Porém, com o uso do pino de
habilitação, assim como já ocorria com o tipo RS, as mudanças de estado na
entrada só terão validade quando o pino de habilitação for 1, o que permitirá
6 Lógica sequencial
ao FF tipo D funcionar como uma memória, ao contrário do tipo RS, que
necessita de apenas um pino de entrada. Sempre que o pino E for 1, a saída
vai copiar o valor presente no pino de entrada D (do qual derivam as ligações
para S, e o inverso para R, como dito anteriormente).
Figura 3. a) FF tipo D com portas NAND; b) bloco do FF tipo RS convertido para um tipo
D; c) abstração do FF tipo D.
No Quadro 2, repare que a tabela verdade do FF tipo D não possui nenhuma
condição inválida, como ocorria com o tipo RS. Isso porque, ao utilizar um
único pino de entrada para S e o inverso para R, isso impossibilitará que ambos
os pinos S e R sejam iguais a 1, como ocorria na condição inválida do tipo RS.
Quadro 2. Tabela verdade do flip-flop tipo D
E D Q
0 0 Q (mantém) (mantém)
0 1
1 0 0 1
1 1 1 0
Lógica sequencial 7
Flip-flop tipo JK
O flip-flop tipo JK difere do FF RS apenas na condição em que todas as
entradas estão ativas ao mesmo tempo. Para o FF RS, essa era uma condição
funcionalmente inválida e poderia acarretar em resultados inesperados. O JK
soluciona esse problema, inserindo a função de mudança de estado no lugar
da condição inválida, conforme leciona Tokheim (2013).
Internamente, o FF JK é similar ao FF RS com pino de habilitação, porém,
há um retorno a mais do que no tipo RS. As portas NANDs ligadas às entradas
e ao pino E no tipo RS são substituídas por portas NANDs de três entradas,
que recebem, além de um pino de função e habilitação, o retorno da saída
oposta à que pretendem acionar (Figura 4). Ou seja, a saída direta Q alimenta
a NAND dos pinos E e K, que são utilizados em conjunto para desligar a saída
direta do FF; já a saída invertida alimenta a NAND dos pinos E e J, que
são utilizados para ligar a saída direta do FF. Assim, por mais que ambas as
entradas, J e K, sejam 1, somente a entrada de função oposta à atual situação
do FF será habilitada. Em resumo, se Q = 1, somente K será validado, e o FF
muda para Q = 0; mas, se Q = 0, então somente J será habilitado, e a saída
mudará para Q = 1, conforme mostra o Quadro 3.
Figura 4. a) FF tipo JK; b) abstração do FF tipo JK.
8 Lógica sequencial
Quadro 3. Tabela verdade do flip-flop tipo JK
E J K Q
0 0 0 Q (mantém) (mantém)
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1 0 1
1 1 0 1 0
1 1 1 (inverte) Q (inverte)
Entretanto, esse circuito exige que o circuito detector de borda seja extre-
mamente preciso, curto o suficiente para que a saída não seja alterada duas
vezes, mas longo o suficiente para que pelo menos uma mudança ocorra. Para
reduzir ainda mais o risco, foi criado o FF JK mestre-escravo (Figura 5),
correspondendo a dois FF RS. O segundo recebe as saídas do primeiro como
entrada, enquanto o primeiro recebe os próprios pinos de entrada e um retorno
das saídas do segundo FF. Mas a principal mudança está no pino de habilitação,
já que cada bloco RS é acionado com sinais opostos no pino E. Enquanto o
primeiro FF necessita que E seja 1 para funcionar, o segundo precisa que o
pino E seja 0. Assim, a saída do primeiro FF prepara as entradas do segundo,
que só vai acionar ao final de um ciclo completo de habilitação.
Figura 5. FF tipo JK mestre-escravo.
Lógica sequencial 9
Flip-flop tipo T
No flip-flop tipo T, as entradas J e K do tipo JK são conectadas uma à outra
(Figura 6) e, portanto, serão sempre iguais. Caso o pino E seja 1, as entradas
estarão habilitadas e comandarão as saídas. Se o pino T for 0, J e K serão 0,
e, portanto, não há mudança de estado; mas, se T for 1, então J e K serão 1, e
haverá mudança de estado. O nome T deriva da sua função de alternância
— em inglês, toggle.
Figura 6. a) FF JK com as entradas J e K unidas em um único
pino T; b) representação do FF tipo T.
A tabela verdade com todas as possibilidades para o FF tipo T é apresentada
no Quadro 4.
Quadro 4. Tabela verdade do flip-flop tipo JK
E T Q
0 0 Q (mantém) 1 (mantém) 0
0 1
0 0
1 0
1 1 (inverte) Q (inverte)
Registradores
Os FFs são agrupados para representar números ou quantidades maiores; nesse
caso, o conjunto deles passa a ser chamado de registrador. Enquanto cada um
10 Lógica sequencial
dos FFs de um registrador só é capaz de armazenar um único bit, se conside-
rados os valores de um grupo deles como sendo uma única variável, em que
cada FF possui um peso diferente, pode-se obter dados de tamanhos maiores.
Os registradores normalmente são construídos em múltiplos de um byte (8
bits). São amplamente utilizados como buffer e para armazenamento temporário
de dados. Também podem ser utilizados para deslocar dados. Nesse caso, os
FFs estão ligados em série — e não em paralelo — e os dados fluem para o
FF seguinte, criando um deslocamento dos bits.
Circuitos síncronos e assíncronos
Quando as entradas dos FFs dependem de um pino de controle, como é o caso
do pino de habilitação, o FF é dito síncrono. Isso porque as entradas precisam
estar literalmente sincronizadas com o pino de habilitação para que sejam fun-
cionais. Muitas vezes, esse pino será utilizado por um circuito temporizador,
que alterna entre períodos em nível alto e nível baixo de maneira periódica e
com intervalo de tempo constante entre eles. Esse pulso regular e periódico
é denominado clock e é utilizado pelos pinos de habilitação de cada FF que
compõem o circuito, a fim de sincronizar a operação de todos eles. É muito
comum que a representação do pino E seja substituída por um símbolo de >
(Figura 7b), conforme leciona Tocci (2011).
As entradas de um FF podem ser ativadas com nível baixo ou nível alto. Da mesma
maneira, o pino de clock de um FF pode ser desenvolvido para atuar de uma forma
ou de outra. Porém, no clock, o que importa é a transição do sinal, já que um circuito
detector de borda é utilizado. Logo, diz-se que o clock pode ser acionado pela borda
positiva (saindo de 0 para 1) ou pela borda negativa (saindo de 1 para 0).
Na ausência de uma entrada de controle, as funções são ditas assíncronas
e podem operar a qualquer instante de tempo — basta que sejam acionadas.
Há vantagens e desvantagens para cada tipo de operação e, principalmente,
objetivos diferentes entre elas.
Lógica sequencial 11
Mesmo FFs síncronos possuem, na maioria das vezes, entradas assín-
cronas para fins específicos. É comum FFs do tipo JK possuírem entradas
PRESET (PS) e CLEAR (CLR), que têm a mesma função de J e K, respec-
tivamente, mas que operam no circuito mais próximo da saída e, portanto,
não dependem do pino de controle, podendo ligar ou desligar a saída em
qualquer instante de tempo. Esses dois pinos são apresentados barrados,
caso funcionem a partir de uma entrada igual a 0 ou caso funcionem a partir
de entradas iguais a 1 (Figura 7). É o caso, por exemplo, de um contador,
que incrementa o valor da saída a cada ciclo completo de clock, mas pode
ser reiniciado a qualquer instante de tempo, utilizando um pino que não
passa pela entrada de controle.
Imagine um cronômetro, que você pretende acionar ao dar a largada de
uma corrida e parar exatamente ao término dela. O sistema será mais preciso
caso as entradas que dão início e término à contagem sejam assíncronas, já que
sua ordem será imediatamente interpretada pelo circuito. Mas, internamente,
o restante das funções vai ocorrer de maneira síncrona, para que as mudanças
de estado ocorram apenas no tempo exato. Nesse caso, ambos os métodos são
empregados de forma correta. O cronômetro não funcionaria adequadamente ou
teria seu desempenho prejudicado se a operação de contagem fosse assíncrona
ou se a operação de comando fosse síncrona.
Figura 7. a) FF do tipo JK com entradas de PRESET e CLEAR;
b) representação em bloco do FF JK com PRESET e CLEAR.
12 Lógica sequencial
O uso desses circuitos com memória, mesmo que temporária, permitiu a
implementação de contadores, que podem ser construídos de duas formas:
síncrona ou assincronamente. Independentemente do tipo de contador, es-
ses circuitos são amplamente utilizados, estando presentes na maioria dos
processadores e outros circuitos digitais de funções complexas, conforme
leciona Tokheim (2013).
Contadores assíncronos
Uma unidade binária só pode representar dois números em decimal: 0 ou 1.
Para que um número maior seja representado, são necessários mais bits.
A cada novo bit, o valor máximo em decimal dobra. Uma vez que cada
FF também só pode representar um bit, é necessário um FF para cada bit
adicional. Naturalmente, o circuito será menor se forem utilizados FFs
que possuam apenas uma entrada para operar as saídas, como é o caso
dos tipos D e T.
Um contador assíncrono pode ser construído utilizando-se FFs do tipo T
com entrada permanente em nível 1, aproveitando que, para cada pulso de clock,
o primeiro bit vai alternar os valores. Para que os demais bits não alternem a
cada pulso de clock, a entrada de clock do FF seguinte recebe a saída do FF
anterior. Isso fará com que o sinal de clock percebido por esse FF seja igual
a dois ciclos completos do primeiro. Pode-se, então, aumentar a quantidade
de bits, procedendo da mesma maneira para os próximos, sempre utilizando
a saída do FF atual como entrada de clock do FF seguinte.
Cada FF precisa do dobro de tempo necessário se comparado ao anterior
para alternar o estado de sua saída. Se considerado cada FF como sendo uma
unidade binária de peso diferente, o resultado será incrementos unitários
a cada pulso de clock de um número equivalente em decimal a 2N, onde N
corresponde à quantidade de FFs utilizados.
Todo o processo é demonstrado na Figura 8; porém, repare que não são
utilizados FFs do tipo T, mas, sim, FFs do tipo JK. De qualquer forma, o fun-
cionamento será o mesmo, já que ambas as entradas do FF JK estão sempre
em nível 1, o que caracteriza a operação de alternância de um FF do tipo T
com uma única entrada em nível 1.
Lógica sequencial 13
Figura 8. a) Contador assíncrono com FFs tipo JK; b) diagrama no tempo da resposta obtida
em cada um dos bits (A, B, C e D) que compõem o número.
Fonte: Adaptada de Tokheim (2013, p. 233).
O contador pode funcionar no sentido decrescente apenas utilizando o
pino da saída invertida para acionar o clock (>) em cada interligação de
FF, em vez do pino da saída direta Q. Nesse caso, ainda podem ser utilizadas
as entradas para iniciar o contador no valor máximo. Entretanto, perceba
que, ao final da contagem, seja ela crescente ou decrescente, os FFs vão al-
ternar novamente e retornarão ao valor inicial, dando sequência à contagem,
conforme explica Tokheim (2013).
Contadores síncronos
Ao utilizar um contador de modo assíncrono, o último FF depende de que o
anterior já tenha alternado sua saída, e o anterior depende do imediatamente
14 Lógica sequencial
anterior a ele, e assim sucessivamente. Logo, haverá um acúmulo de atraso
de propagação, já que nenhum circuito lógico opera de forma instantânea.
Quanto maior for a quantidade de bits, maior será o erro.
Os contadores também podem funcionar no modo síncrono (Figura 9).
Nesse caso, todos os FFs utilizam o mesmo sinal de entrada para o pino
de clock. Mas, para que os FFs alternem de valor em momentos distintos,
será necessário utilizar combinações lógicas a partir das saídas dos FFs que
antecedem cada unidade binária, para servir de sinal para o pino T (ou J
e K ao mesmo tempo, como no exemplo anterior). Dessa forma, o circuito
aumenta de tamanho, mas problemas decorrentes do excesso de atraso de
propagação serão reduzidos.
Figura 9. Contador síncrono de três bits (de zero a sete).
Fonte: Tokheim (2013, p. 235).
É possível, ainda, utilizar as entradas de PRESET e CLEAR para sal-
tar estados em uma contagem, ou limitar o máximo e o mínimo de um
contador. Um exemplo típico desse tipo de uso são contadores de 4 bits
utilizados para contar até o limite de uma unidade decimal (BCD). São
necessários os 4 bits para representar o número 9 em decimal, mas este
não poderá reiniciar a contagem, somente no caso 11112. A solução é
utilizar uma combinação de portas AND que, ao detectar que o primeiro
e o último bits são verdadeiros, em 10012 , o pino CLEAR será acionado.
Assim, o contador vai retornar a zero no incremento seguinte, conforme
leciona Tokheim (2013).
Lógica sequencial 15
Máquinas de estados finitos
Os circuitos sequenciais podem ser utilizados para dividir as tarefas em
etapas. Para identificar cada uma delas, é comum que se utilizem contado-
res em conjunto com codificadores para controlar os demais circuitos e o
momento em que cada um será acionado.
Em um microprocessador, por exemplo, os barramentos de dados são compartilhados
entre vários circuitos diferentes, a fim de economizar em ligações necessárias e, também,
facilitar o projeto do circuito. É claro que essas funções não podem nem devem ser
utilizadas simultaneamente, já que o resultado seria algo caótico, sem qualquer sentido
para o que fora requisitado.
Para cada comando solicitado ao microprocessador, este deverá executar uma série
de procedimentos a fim de concluir a operação integralmente. Pode ser ordenado, por
exemplo, que seja efetuada uma soma entre dois números disponíveis na memória.
Nesse caso, o processador terá de acessar o endereço de cada um deles individualmente
e armazenar cada um deles em um registrador, e o conjunto desses registradores
servirá de entrada para o circuito de soma. Ao final, o resultado do circuito somador
deverá ser armazenado em outro endereço de memória, mas utilizando o mesmo
barramento pelo qual entraram cada um dos dados dos registradores.
Somente um valor pode utilizar o barramento a cada momento; assim, um contador
é iniciado no começo da operação. Cada passo (combinação binária) é decodificado
em conjunto com o código da operação, para acionar os circuitos lógicos necessários
naquele momento, bem como direcionar multiplexadores e demultiplexadores que
permitam destinar o barramento de forma adequada a cada um dos circuitos.
O exemplo anterior é bastante complexo, mas facilita o entendimento
de como vários dos circuitos vistos até aqui costumam ser utilizados em
conjunto e fornece uma visão da necessidade de um contador atuar como
uma máquina de estados. Porém, há exemplos mais simples para explicar a
máquina de estados.
Pense em um semáforo com três LEDs. Há uma sequência rígida a ser
seguida. Podem ser utilizados contadores para controlar o tempo de mudança
dos semáforos, e é utilizado um contador para informar em qual situação o
16 Lógica sequencial
semáforo se encontra, sendo incrementado para a posição seguinte, permi-
tindo que um decodificador acione os LEDs corretos em cada momento. Esse
processo também depende de uma máquina de estados.
O projeto desse tipo de circuito sequencial pode ser simplificado utilizando
um diagrama, conhecido como diagrama de estados. Nele, são indicados
todos os estados possíveis para uma máquina de estados e como devem ser
os avanços entre cada uma das situações. Um diagrama que possui um ciclo
único sem qualquer exceção pode ser representado como na Figura 10, em
que os estados possuem uma única mudança, sempre na mesma direção e
para o mesmo estado.
Figura 10. Diagrama de estados para um contador
de código Gray.
Fonte: Floyd (2007, p. 464).
As setas indicam qual será o próximo estado a partir do atual. Não havendo
qualquer outra indicação, é assumido que a transição ocorre a cada pulso de
clock do sistema. Mas podem existir outras condições para a transição, como
também duas ou mais condições diferentes que ditarão caminhos diferentes
a partir de um mesmo estado. Nesse último caso, haveria mais de uma seta
saindo de um estado em direção a outro, mas deveriam ser especificadas
Lógica sequencial 17
as variáveis de condição e o estado necessário para que a transição ocorra.
A Figura 11 representa um diagrama de estados de um contador de código
Gray que, caso a entrada Y seja 0, vai funcionar no sentido decrescente, e
caso seja 1, será crescente. Portanto, existem duas condições de transição
para cada estado e sentidos diferentes.
Figura 11. Diagrama de estados para um contador de código Gray que
opera tanto em sentido crescente (Y = 1) quanto decrescente (Y = 0).
Fonte: Floyd (2007, p. 470).
Não é necessário que um estado salte para o imediatamente seguinte ou
anterior. Poderão existir situações em que os estados mudam drasticamente
para outras posições. Por exemplo, contadores utilizados em um relógio, em
que dois contadores vão contar de 0 a 59, sendo utilizados para segundos e
minutos, enquanto o outro contará de 0 até 23, para representar a hora. Mesmo
para cada tipo de contador, haverá transições não lineares do contador, em
estado igual a 9 para 0 novamente, típico de um código BCD.
18 Lógica sequencial
FLOYD, T. L. Sistemas digitais: fundamentos e aplicações. 9. ed. Porto Alegre: Bookman,
2007.
TOCCI, R. J.; WIDMER, N. S.; MOSS, G. L. Sistemas digitais: princípios e aplicações. 11. ed.
Rio de Janeiro: Pearson, 2011.
TOKHEIM, R. Fundamentos de eletrônica digital: sistemas combinacionais. 7. ed. Porto
Alegre: AMGH, 2013. v. 1.
Leituras recomendadas
CAPUANO, F. G.; IDOETA, I. V. Elementos de eletrônica digital. 41. ed. São Paulo: Érica, 1997.
SZAJNBERG, M. Eletrônica digital: teoria, componentes e aplicações. Rio de Janeiro:
LTC, 2014.
TOKHEIM, R. Fundamentos de eletrônica digital: sistemas sequenciais. 7. ed. Porto Alegre:
AMGH, 2013. v. 2.
VAHID, F. Sistemas digitais: projeto, otimização e HDLs. Porto Alegre: Bookman, 2008.
DICA DO PROFESSOR
Os contadores são utilizados em muitos circuitos, não apenas para temporização e contagem
de eventos em conjunto com um sensor, mas, também, para auxiliar na implementação de uma
máquina de estados. Há diversas formas de construir um contador, que pode ser crescente,
decrescente, síncrono ou assíncrono, com limites de máximo e de mínimo.
Nesta Dica do Professor, você irá compreender, com detalhes, alguns desses contadores.
Conteúdo interativo disponível na plataforma de ensino!
EXERCÍCIOS
1) Os flip-flops são dispositivos digitais que armazenam estados enquanto estiverem
alimentados. Há quatro tipos básicos deles, com formas diferentes de operação, sendo
o mais básico de todos o flip-flop RS.
Qual das alternativas a seguir apresenta um flip-flop cuja função é a mesma do flip-
flop tipo RS, exceto no caso em que ambas as entradas estão ativas?
A) Tipo T Mestre-Escravo.
B) Tipo D.
C) Tipo JK.
D) Tipo RS Mestre-Escravo.
E) Tipo T.
2)
Considere que os FFs tipo T do circuito a seguir operam na borda positiva do sinal de clock
e, inicialmente, todas as saídas diretas estão em 0.
Qual será o valor, da esquerda para a direita, de cada uma das saídas diretas dos FFs
quando o clock estiver saindo do nível alto pela terceira vez?
A) 1102.
B) 1112.
C) 1012.
D) 0102.
E) 0112.
3) Três tipos diferentes de FF são utilizados conectados conforme a imagem a seguir. Todos
atuam na borda negativa do clock.
Qual será o valor, da esquerda para a direita, de cada uma das saídas dos FFs na quarta
borda positiva detectada? Considere, inicialmente, todas as saídas diretas estejam em 0.
A) 1002.
B) 0002.
C) 0112.
D) 1012.
E) 0102.
4) Tanto contadores síncronos quanto assíncronos podem aproveitar as entradas assíncronas
para alterar o padrão de contagem com início diferente do original, um valor limite de
contagem que seja menor que a a capacidade binária.
Qual das alternativas melhor descreve o contador da imagem?
A) Contador assíncrono, crescente, com mínimo em 0 e máximo em 9.
B) Contador assíncrono, decrescente, com mínimo em 0 e máximo em 9.
C) Contador assíncrono, decrescente, com mínimo em 0 e máximo em 10.
D) Contador assíncrono, crescente, com mínimo em 0 e máximo em 10.
E) Contador síncrono, crescente, com mínimo em 0 e máximo em 10.
5) Um flip-flop tipo T alterna a saída quando recebe as entradas adequadas, porém a forma
como sua saída é utilizada para orientar os flip-flops seguintes pode ditar a ordem de uma
contagem ou modificar o padrão desta, não sendo, necessariamente, um avanço aritmético.
Para que o circuito a seguir inverta a ordem de contagem, qual mudança poderá ser feita?
A) A porta NAND deve receber todas as saídas Q e acionar os pinos de PRESET ao invés do
CLEAR. Também, ao invés da saída direta, deverão ser usadas as saídas invertidas para
ativar os pinos de clock/habiltação dos FFs.
B) A porta NAND deve receber todas as saídas Q e acionar os pinos CLEAR somente do
segundo e no terceiro FF da esquerda para a direita. Também, ao invés da saída
direta, deverão ser usadas as saídas invertidas para ativar os pinos de clock/habiltação dos
FFs.
C) A porta NAND deve ser substituída por uma porta AND, que acionará os pinos de
PRESET ao invés do CLEAR. Também, ao invés do nível em 1 permanente, deverão ser
usadas as saídas invertidas para ativar os pinos de entrada T dos FFs.
D) A porta NAND deve ser substituída por uma porta OR, que acionará os pinos de PRESET
ao invés do CLEAR. Também, ao invés do nível em 1 permanente, deverão ser usadas as
saídas invertidas para ativar os pinos de entrada T dos FFs.
E) A porta NAND deve receber as mesmas entradas e acionar todos os pinos de PRESET ao
invés do CLEAR. Também, ao invés da saída direta, deverão ser usadas as saídas
invertidas para ativar os pinos de clock/habiltação dos FFs.
NA PRÁTICA
Muitos circuitos operam de maneira sequencial, em que, sob certas condições, uma série de
estados se repetem sempre na mesma ordem. Esse tipo de problema é facilmente solucionado
com o uso de máquinas de estados. Apesar de ser possível simplificar ainda mais um circuito
sem o uso dessa metodologia, o seu projeto e a sua análise são mais fáceis conforme aumenta a
quantidade de estados e/ou parâmetros envolvidos de entrada e na saída. Os circuitos
sequenciais podem conter uma sequência única ou várias sequências diferentes, a depender de
determinadas condições de entrada.
Confira, Na Prática, o exemplo de um semáforo de dois tempos.
SAIBA MAIS
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do
professor:
Contador Johnson
Assista à videoaula sobre um contador Johnson, conhecido como contador de década, muito
utilizado como controle de máquina de estados.
Conteúdo interativo disponível na plataforma de ensino!
Registradores de deslocamento
Assista ao vídeo para ver a simulação de um registrador de deslocamento de 4 bits para
transformar dados de serial em paralelo.
Conteúdo interativo disponível na plataforma de ensino!
Máquina de estados em VHDL
Assista ao vídeo para ver um exemplo de máquina de estados implementada em linguagem de
descrição de hardware.
Conteúdo interativo disponível na plataforma de ensino!
Circuitos Lógicos - Aula 10 - Latches e Flip-Flops
Neste vídeo você aprenderá sobre as classes de circuitos aplicando o latches e flip-flops
Conteúdo interativo disponível na plataforma de ensino!
Circuitos Lógicos - Aula 13 - Contadores
Neste vídeo você aprenderá sobre circuitos combinatórios sequenciais, suas características
conhecidos como contadores.
Conteúdo interativo disponível na plataforma de ensino!
Componentes de blocos operacionais e
aplicações
APRESENTAÇÃO
A partir de simples portas lógicas podem ser formadas funções complexas, sejam elas
combinacionais ou de lógica sequencial, que são ainda mais avançadas. A lógica sequencial
aprimora significativamente a capacidade e o controle de projeto e introduz os primeiros
circuitos com memória. Essa capacidade de memória permite que determinados blocos
aguardem ou forneçam informações para outros e compartilhem um mesmo meio de
informações, atuando todos em conjunto, ampliando a capacidade de processamento e a
resolução de problemas.
Nesta Unidade de Aprendizagem, você vai aprender um pouco sobre os circuitos que integram
um processador básico. Também vai estudar a unidade lógica e aritmética que controla diversos
blocos operacionais a fim de manipular de forma dinâmica os dados presentes em uma memória.
Para tanto, é necessário que os circuitos aritméticos mais comuns e os agrupamentos de flip-
flops, denominados registradores, sejam apresentados. Por isso, você também vai ver alguns
tipos de registradores, as aplicações comuns a cada um deles e de que forma esses registradores
estão associados à unidade lógica e aritmética.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
• Analisar circuitos aritméticos.
• Realizar operações na unidade lógica e aritmética.
• Caracterizar conjuntos de registradores.
DESAFIO
Um bloco funcional é construído para uma finalidade específica, que pode ser a resolução de
problemas lógicos ou aritméticos a partir de um conjunto de funções lógicas menores. Esses
circuitos são frequentemente utilizados em microprocessadores. São as ferramentas de que o
processador dispõe para executar as instruções recebidas por ele, seja de um programa em sua
memória, seja de uma ordem a partir de um meio externo fornecido até mesmo pelo usuário.
Problemas comuns no cotidiano envolvem os problemas aritméticos simples ou a combinação e
repetição de vários desses problemas mais simples. Assim também ocorre em um
microprocessador. Logo, ferramentas básicas estão presentes na maioria deles, já que a partir
delas é possível solucionar quase qualquer problema. É o caso dos circuitos de adição e
multiplicação.
Com base nessas informações, como ficaria um circuito combinacional cuja função
é multiplicar duas variáveis de 3 bits sem a utilização de registradores de deslocamento?
INFOGRÁFICO
Os microprocessadores revolucionaram a indústria e o cotidiano de diversas formas. O Intel
4004, de 1971, é considerado o primeiro microprocessador comercial; ele utilizava uma
integração de circuitos muito similar aos microcontroladores e processadores modernos. Em sua
estrutura interna, contava com blocos e métodos simples, como flip-flops, unidade lógica e
aritmética, unidade de controle, registradores de uso genérico e registradores específicos, como
o acumulador. Todos esses blocos compartilhavam o mesmo barramento de dados, mas eram
controlados para fazê-lo de forma individual, a partir da unidade de controle, e a decodificação
das instruções era buscada na memória do programa. Tudo isso permitiu grande versatilidade e
poder de processamento até então jamais vistos.
Confira no Infográfico as características e a estrutura interna de funcionamento do Intel 4004.
CONTEÚDO DO LIVRO
Os circuitos aritméticos podem ser implementados por meio de circuitos combinacionais, mas
também por lógica sequencial. O critério costuma envolver o custo-benefício entre tamanho da
variável a ser processada, tamanho do circuito e tempo de processamento. Dessa forma, flip-
flops podem ser utilizados para a implementação de operações aritméticas. Mas outra associação
desses dispositivos é ainda mais comum: os registradores – grupo de memória que manipula
dados maiores que uma unidade binária.
No capítulo Componentes de blocos operacionais e aplicações, da obra Eletrônica digital, você
vai estudar os circuitos aritméticos mais comuns em unidades lógicas e aritméticas e vai saber
como a unidade é capaz de integrar diversas funções diferentes com o auxílio da unidade de
controle e de registradores específicos.
ELETRÔNICA
DIGITAL
Maikon Lucian Lenz
Componentes de blocos
operacionais e aplicações
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
Analisar circuitos aritméticos.
Realizar operações na unidade lógico-aritmética.
Caracterizar conjuntos de registradores.
Introdução
Em eletrônica digital, tudo depende de operações lógicas, que podem ser
combinadas de forma a recriarem funções aritméticas. Os computadores
atuais utilizam a eletrônica digital no processamento e armazenamento
de dados; sendo assim, o núcleo de processamento dispõe de funções
lógicas e aritméticas para criar sequências de processamento complexas.
Esse núcleo é conhecido como unidade lógico-aritmética.
Os processadores dependem de memórias auxiliares tanto para ar-
mazenar o programa e as instruções a serem executadas como para
manipular temporariamente os dados. Esse armazenamento temporário
é baseado em flip-flops, que, quando agrupados, são denominados
registradores. Os registradores podem ser de carga paralela ou serial;
dentre os tipos mais comuns, destacam-se registradores de deslocamento
e contadores com registradores, para implementação de máquinas de
estados simples.
Neste capítulo, você vai estudar os circuitos aritméticos e as operações
realizadas na unidade lógica e aritmética. Por fim, você vai identificar os
conjuntos de registradores e suas características.
2 Componentes de blocos operacionais e aplicações
Circuitos aritméticos
Os computadores modernos utilizam recursos de eletrônica digital para efe-
tuar diversas funções lógico-aritmética. As funções lógicas são diretamente
associadas à operação das portas lógicas e, portanto, são facilmente projeta-
das. No entanto, funções aritméticas, como uma simples soma, necessitam
de um circuito mais complexo na eletrônica digital, se comparado ao que
poderia ser realizado com a eletrônica analógica. Apesar disso, a eletrônica
digital ainda é preferível à analógica devido à praticidade de armazenamento,
transferência e precisão dos dados. Dessa forma, a maior complexidade é
facilmente justificada, já que não há qualquer vantagem em um circuito
que, apesar de mais simples, é incapaz de garantir a fidelidade dos dados.
A chave para o desenvolvimento de qualquer sistema lógico envolve os
teoremas e axiomas booleanos, a tabela verdade, os métodos de simplifi-
cação, o projeto de sistemas sequenciais, as máquinas de estados e todas
as demais técnicas conhecidas. Uma delas, no entanto, cabe relembrar: o
complemento de dois, como representação de números binários negativos.
Com o complemento de dois, a máquina possuirá a informação necessária
para diferenciar números positivos de negativos, já que o bit mais significa-
tivo fará essa função e, também, economizará circuitos lógicos. Isso porque
algumas funções, como a subtração, poderão ser realizadas com apenas um
circuito de adição, útil tanto para adição quanto para subtração, se operado
em conjunto com um circuito complementar ou inversor.
Circuitos somadores
O circuito somador não deve ser confundido com a operação OU. Apesar
de o símbolo utilizado na expressão lógica ser o mesmo utilizado em uma
soma aritmética (+), ambos possuem resultados diferentes para o caso
em que ambos os bits são iguais a 1. Em uma operação OU, o resultado
deverá ser 1, enquanto, para uma soma aritmética, o resultado é 0, com
a sobra de 1, a ser utilizada para uma unidade de peso maior. Em outras
palavras, 12 + 12 = 102 para uma soma aritmética, enquanto 12 + 12 = 12
para uma operação lógica OU. O Quadro 1 compara a tabela verdade de
ambos os casos.
Componentes de blocos operacionais e aplicações 3
Quadro 1. Operação OU comparada à soma aritmética de um único bit
Operação OU Soma aritmética
A B S A B S
0 0 0 0 0 0
0 1 1 0 1 1
1 0 1 1 0 1
1 1 1 1 1 0
De qualquer forma, a partir da tabela verdade, pode-se implementar um
circuito lógico que obtenha o mesmo resultado da tabela verdade para a soma
aritmética. Para tanto, deverão ser adicionadas uma entrada, para receber a
sobra de bits anteriores, e uma saída que forneça a sobra da soma entre os
bits de determinada posição, para a soma da posição seguinte. As sobras são
conhecidas em eletrônica digital como CARRY, sendo diferenciadas no circuito
somador como entrada (IN) e saída (OUT), conforme leciona Tocci (2011).
O circuito que possui entrada para receber o bit de sobra da soma do bit
anterior é denominado circuito somador completo. A tabela verdade do
Quadro 2 faz o mapeamento das hipóteses para esse circuito.
Quadro 2. Tabela verdade do circuito somador completo
Entradas Saídas
Cin A B S Cout
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
4 Componentes de blocos operacionais e aplicações
Simplificando as saídas, a partir das técnicas de mapa de Karnaugh, mani-
pulações de álgebra booleana e aproveitamento de operações comuns a ambas
as saídas, o resultado será o circuito lógico da Figura 1.
Figura 1. a) Circuito lógico de um somador completo; b) bloco funcional de um somador
completo.
A partir desse circuito, é fácil ampliar o tamanho das variáveis (quan-
tidade de bits) que serão somadas. Para cada bit adicional, basta inserir
um somador completo que receba a saída da sobra do anterior. Os bits
de cada posição são inseridos paralelamente por meio dos registradores
associados à operação.
Circuitos subtratores
A diferença de um circuito subtrator para um somador está apenas na lógica
associada ao bit de empréstimo de saída (BORROW OUT), em que as entradas
AND, A e A⨁B devem ser invertidas, conforme mostra a Figura 2.
Componentes de blocos operacionais e aplicações 5
Figura 2. Circuito subtrator completo.
Fonte: Tokheim (2013, p. 301).
Circuitos multiplicadores
A multiplicação pode ser compreendida como somas sucessivas. Porém, esse
método necessitará de muitas somas, isto é, muito processamento, à medida
que o multiplicador aumenta de tamanho. Para esse caso, bastaria que um
contador decrescente assumisse o valor do multiplicador inicialmente e que
o multiplicando fosse somado a um registrador acumulador inicialmente em
zero, enquanto o contador ainda fosse maior do que zero, conforme leciona
Tokheim (2013).
A técnica utilizada para multiplicar números decimais também envolve
somas sucessivas, mas multiplicando-se cada unidade do multiplicador por
todas as unidades do multiplicando. Assim, cada vez que se avança para uma
unidade seguinte do multiplicador, um novo resultado parcial é gerado, sendo,
porém, deslocado em uma casa mais à esquerda, para aumentar em 10 vezes o
peso dessa multiplicação. Assim, o processo de somas sucessivas é encurtado.
Para a multiplicação binária, pode-se simplificar ainda mais esse processo,
já que os produtos parciais só poderão resultar em zero, quando a unidade
6 Componentes de blocos operacionais e aplicações
binária de multiplicação atual for zero, ou em um número igual ao multipli-
cando, quando a unidade binária atual do multiplicador for 1, conforme expõe
Tokheim (2013).
O circuito utilizará um registrador permanentemente com o valor de multi-
plicando, um registrador acumulador zerado e outro registrador com o multipli-
cador. O bit menos significativo do multiplicador será usado para controlar se
um somador completo vai somar o multiplicando ao acumulador ou não. Caso
seja somado, o resultado é armazenado no próprio acumulador. O registrador
acumulador e o multiplicador são deslocados para a direita, como se fossem
um binário único. Assim, o bit menos significativo do multiplicador passa a
ser o segundo bit original, e os bits deslocados para a direita do acumulador
estarão entrando no multiplicador.
Ao deslocar o acumulador para a direita, sem perder os bits menos sig-
nificativos, o resultado será o mesmo de deslocar o novo resultado parcial
uma posição para a esquerda. O processo se repete até que todos os bits do
multiplicador tenham sido deslocados e, assim, todas as somas tenham ocor-
rido. O acumulador, em conjunto com o registrador multiplicador, conterá o
resultado da multiplicação, conforme demonstra a Figura 3.
Figura 3. Circuito multiplicador do tipo soma e deslocamento.
Fonte: Tokheim (2013, p. 310).
Componentes de blocos operacionais e aplicações 7
Circuitos comparadores
A simples comparação de igualdade entre dois registradores é de fácil resolu-
ção. Basta uma lógica E a partir do resultado de lógicas NÃO-OU-EXCLUSIVA
entre cada par de bits para verificar se todos são iguais.
Muitas vezes, pretende-se determinar qual dos dois números é maior. Uma
das formas de se solucionar esse problema é criar um comparador de um
único bit que tenha 3 bits de saída para sinalizar se A é maior do que B, se A
é igual a B ou se A é menor do que B. Para ampliar o tamanho da variável a
ser comparada, deverão ser cascateados vários circuitos que utilizem os bits
de sinalização como entrada (Figura 4). Caso um módulo receba o sinal de
que, no bit mais significativo ao seu lado, A é maior do que B ou A é menor
do que B, o processo está encerrado; basta que esse sinal passe até o último
circuito da cascata. Entretanto, caso o bit seja igual, caberá ao próximo cir-
cuito detectar alguma mudança de igualdade, para alterar o bit de sinalização,
conforme leciona Tocci (2011).
Figura 4. a) Estágios individuais de um comparador de 4 bits; b) comparador de 4 bits.
Fonte: Adaptada de Vahid (2008, p. 195).
Unidade lógico-aritmética
Em um computador, existem vários blocos funcionais com finalidades di-
ferentes. Um deles é a unidade lógico-aritmética (ULA, ou ALU, do inglês
8 Componentes de blocos operacionais e aplicações
arithmetic logic unit), em que estão presentes a maior parte das portas lógicas
e flip-flops, que serão responsáveis, como o próprio nome diz, pelas operações
lógico-aritmética. Ocorre que todo o processamento de um circuito digital
envolve funções lógicas ou aritméticas (que são, em última instância, um
conjunto de operações lógicas também); logo, essa unidade é a responsável
pela execução do processamento em si, conforme leciona Tocci (2011).
A ULA pode ser construída e possuir funções diferentes para cada pro-
cessador. Porém, existem técnicas comuns à maioria delas, como a utilização
de registradores, para o armazenamento temporário dos dados captados pela
memória, e dos circuitos lógicos, que compartilham um barramento de dados
e são acionados a partir de uma unidade de controle (Figura 5).
Figura 5. Fluxo de dados em um processador.
Fonte: Tokheim (2013, p. 407).
Normalmente, um dos registradores servirá como entrada e saída para
os circuitos lógicos — o chamado registrador acumulador —, enquanto
os demais só receberão dados da memória e somente fornecerão dados aos
circuitos lógicos, conforme aponta Tocci (2011). O registrador acumulador vai
acumular os resultados parciais, para evitar que a memória seja acessada de
maneira desnecessária somente para armazenar um valor de uma operação
que ainda não está concluída. É o caso, por exemplo, da multiplicação, que
poderá ser executada como uma série de adições.
Componentes de blocos operacionais e aplicações 9
Na Figura 5 é possível ver que tanto o programa quanto os dados são parte
da memória. Os processadores são organizados de forma a varrer a memória
de programa e decodificar a linha atual a ser processada. Em cada linha está
codificada a função a ser executada, podendo vir acompanhada de dados a
serem utilizados na operação. A unidade de controle vai ordenar todos os
passos para a execução adequada da operação, já que os barramentos são
compartilhados entre muitos circuitos, conforme leciona Tokheim (2013).
A ULA nada mais é do que um circuito integrado, simplificado para conse-
guir operar com a menor quantidade de pinos de entrada e saída possível para
executar alguma operação, seja lógica ou aritmética. Ela possui pinos dedicados
apenas à seleção da função a ser executada, e outros, à entrada e saída dos dados.
Não confunda um microcontrolador com um microprocessador. Um microprocessador
tem função genérica, faz uso de registradores internos, mas não pode ser utilizado
sozinho para implementar qualquer solução. Já um microcontrolador possui um
microprocessador internamente associado a um conjunto específico de periféricos
e pretende diminuir a complexidade no desenvolvimento de sistemas, com uma
integração já parcialmente desenvolvida com periféricos de uso constante.
Conjuntos de registradores
Os registradores podem ser referenciados com notação própria — utiliza-se
a variável entre colchetes para se referir a um registrador.
[A] = 10102
Essa equação é equivalente a dizer que o registrador A possui 4 bits de
tamanho, e o valor de cada bit obedece a ordem natural dos números binários:
A3 = 1, A2 = 0, A1 = 1 e A0 = 0.
A transferência de dados de um registrador para o outro utiliza uma seta
indicando a cópia dos dados de um registrador para o outro:
[A] → [B]
10 Componentes de blocos operacionais e aplicações
Essa notação facilita a descrição das operações e a atribuição de valores a
um conjunto de flip-flops agrupados como um registrador, conforme expõe
Tocci (2011). Como qualquer operação em um processador utiliza registradores,
seja para movimentação dos dados, seja para entrada ou saída de funções,
as operações podem ser descritas a partir da movimentação por meio desses
registradores.
Registradores de deslocamento
Junto dos circuitos aritméticos anteriores, é comum o uso de registradores
de deslocamento. Esses registradores podem ter função de armazenamento
temporário, como os registradores utilizados para soma, subtração ou mul-
tiplicando do multiplicador, mas também podem alterar a ordem dos dados,
deslocando os bits para a direita ou para a esquerda. Assim, um registrador
de deslocamento pode conter entradas e saídas tanto paralelas quanto seriais,
conforme leciona Tokheim (2013).
No caso de um multiplicador, um registrador de deslocamento com carga paralela
na entrada e na saída seriais foi utilizado para manipular o multiplicador. O mul-
tiplicador continha os bits menos significativos do registrador do acumulador; o
acumulador foi, então, deslocado para a direita. Ao repetir a quantidade de bits
reservada ao multiplicador, verificou-se que todas as unidades do multiplicador
haviam sido utilizadas no processo, e o registrador já possuía apenas os bits menos
significativos do resultado.
Os registradores seriais costumam utilizar flip-flops do tipo D, em que a
saída é função direta da entrada, após detectar a borda de clock. As quatro
operações mais comuns estão representadas na Figura 6.
Componentes de blocos operacionais e aplicações 11
Figura 6. a) Deslocamento com entrada e saída seriais; b) deslocamento com entrada serial
e saída paralela; c) deslocamento com entrada paralela e saída serial; d) deslocamento com
entrada e saída paralelas.
Fonte: Adaptada de Tokheim (2013, p. 271).
Repare, na Figura 6, que a diferença entre paralelo e serial está na disponi-
bilidade dos dados. Enquanto entradas e saídas paralelas disponibilizam todos
12 Componentes de blocos operacionais e aplicações
os bits simultaneamente, as entradas e saídas seriais disponibilizam os bits
um a um, para cada pulso de clock. Esses registradores podem ser utilizados
para transmissão e recebimento em meios diferentes, como a comunicação
entre um dispositivo serial e outro paralelo.
Contadores com registradores
Contadores úteis para máquinas de estados podem utilizar apenas registradores
para a função. Registradores seriais movem os bits em uma direção. Se a última
saída de um registrador serial for utilizada como entrada, novamente se obtém
um contador em anel. O contador em anel só terá um bit verdadeiro e evoluirá
deslocando esse bit, de forma que sempre existirá apenas um bit verdadeiro,
o que dispensa o uso de decodificadores para utilização em máquinas de
estados. É claro que o tamanho do registrador aumenta exponencialmente à
medida que a quantidade de estados cresce, porque somente as combinações
de múltiplos estados verdadeiros são ignoradas, desperdiçando a capacidade
binária do conjunto.
Pode-se também conectar a saída invertida do último bit de um registrador
serial com a entrada; assim, a combinação de valores é mais bem aproveitada,
mesmo com a simplicidade da construção do contador. Entretanto, a saída
não será mais um único bit verdadeiro para cada estado, e um decodificador
deverá ser utilizado. Esse contador é conhecido como contador Johnson, ou
contador em anel torcido, conforme define Tocci (2011). O contador Johnson
tem o dobro da capacidade do contador em anel; mesmo necessitando de um
decodificador, qualquer que seja o tamanho do contador, serão necessárias
apenas uma AND com duas entradas para cada estado a ser decodificado,
ainda de acordo com Tocci (2011).
Os registradores permitem uma redução no tempo de processamento. Eles consistem
em um tipo de memória normalmente mais próxima do núcleo de processamento e
composta de elementos que apresentam rápido tempo de acesso e gravação. Por isso,
os processadores costumam manter registradores com dados recentes ou importantes
para realizar o conjunto de operações, em vez de acessar constantemente a memória
principal, disputando o barramento com outros componentes.
Componentes de blocos operacionais e aplicações 13
TOCCI, R. J.; WIDMER, N. S.; MOSS, G. L. Sistemas digitais: princípios e aplicações. 11. ed.
Rio de Janeiro: Pearson, 2011.
TOKHEIM, R. Fundamentos de eletrônica digital: sistemas combinacionais. 7. ed. Porto
Alegre: AMGH, 2013. v. 1.
VAHID, F. Sistemas digitais: projeto, otimização e HDLs. Porto Alegre: Bookman, 2008.
Leituras recomendadas
CAPUANO, F. G.; IDOETA, I. V. Elementos de eletrônica digital. 41. ed. São Paulo: Érica, 1997.
FLOYD, T. L. Sistemas digitais: fundamentos e aplicações. 9. ed. Porto Alegre: Bookman,
2007.
SZAJNBERG, M. Eletrônica digital: teoria, componentes e aplicações. Rio de Janeiro:
LTC, 2014.
TOKHEIM, R. Fundamentos de eletrônica digital: sistemas sequenciais. 7. ed. Porto Alegre:
AMGH, 2013. v. 2.
DICA DO PROFESSOR
A partir de um conjunto de portas lógicas, foram desenvolvidos os flip-flops, que atribuíram
memória aos circuitos digitais. Esses flip-flops foram agrupados formando registradores e outras
funções mais complexas, como contadores. A partir daí, pequenos processadores foram
desenvolvidos, selecionando blocos com funções de lógica e aritmética para compartilhar uma
mesma memória e barramento de dados, operando de formada programada. É o que chamamos
de unidade lógica e aritmética (ULA). As ULAs podem ter os mais variados tamanhos e
funções, mas a forma de manipulá-las costuma ser parecida: pinos de entrada e saída para um
conjunto de variáveis, entradas de seleção de função e pinos com saídas ou entradas específicas
de controle como carry in/out, overflow, entre outros.
Confira na Dica do Professor um exemplo de unidade lógica e aritmética, a SN74LS382A, da
Texas Instruments.
Conteúdo interativo disponível na plataforma de ensino!
EXERCÍCIOS
1) Um microprocessador agrupa diversos circuitos lógicos a fim de possibilitar
inúmeras soluções de forma dinâmica e compacta. Qual é o principal elemento de
processamento onde a maior parte das operações acontece?
A) Unidade de controle.
B) Unidade lógica e aritmética.
C) Unidade de armazenamento e processos.
D) Unidade de processamento.
E) Unidade de operação.
2) Os processadores não costumam acessar a memória principal a todo instante para
reduzir o tempo de processamento. Para contornar esse problema, são utilizados
registradores. Um deles, no entanto, se diferencia por servir tanto de entrada como
de saída para os blocos operacionais. Que registrador é esse?
A) Registrador B.
B) Registrador acumulador.
C) Registrador processador.
D) Registrador operador.
E) Registrador funcional.
3) Contadores são utilizados para criar máquinas de estados. Existem contadores em
formatos específicos para uso com máquina de estados que reduzem o tamanho do
decodificador vinculado. Com base nessas informações, quantos flip-flops são
necessários para criar uma máquina com quatro estados?
A) Cinco flip-flops do tipo D se utilizados no formato de contador em anel.
B) Quatro flip-flops do tipo D se utilizados no formato de contador Johnson.
C) Dois flip-flops do tipo D se utilizados no formato de contador em anel.
D) Dois flip-flops do tipo D se utilizados no formato de contador Johnson.
E) Cinco flip-flops do tipo D se utilizados no formato de contador Johnson.
4) Os contadores em anel são muito utilizados no controle de máquinas de estado. Qual
será a sequência de estados de um registrador de 3 bits configurado para operar
como um contador Johnson?
A) 0002 → 1002 → 1102 → 1112 → 0112 → 0012
B) 0002 → 0012 → 0112 → 1112 → 1102 → 1002
C) 0012 → 0112 → 1112 → 1102 → 1002 → 0002
D) 0002 → 1012 → 0112 → 1102 → 1002 → 0012
E) 0002 → 1002 → 1102 → 0102 → 0012 → 1012
5) Considerando [A] como sendo o registrador acumulador de entrada paralela e saída
serial (com quatro bits de multiplicador), dividido em [As] para receber a soma e
[Am] que é iniciado com o multiplicador, [B] como sendo o registrador de
multiplicando e [S] como a saída de um somador completo, cujas entradas são [B] e
os quatro bits mais significativos do registrador [A], marque a alternativa que
descreve a sequência de operações para a multiplicação entre os números 11012 e 102
utilizando um circuito de multiplicação por soma e deslocamento.
A) [B] = 1101 2 ; [A] = 102 ; [A] → [A]; [S] → [A s] ; [A] →
[A]; [A] → [A]; [A] → [A].
B) [A] = 11012; [B] = 102; [S] → [As]; [A] → [A]; [S] → [As].
C) [A] = 11012; [B] = 102; [S] → [As]; [A] → [A]; [S] → [As]; [A] → [A]; [A] → [A]; [A] → [A].
D) [A] = 11012; [B] = 102; [S] → [As]; [A] → [A].
E) [B] = 11012; [A] = 102; [S] → [As]; [A] → [A]; [S] → [As]; [A] → [A]; [A] → [A]; [A] → [A].
NA PRÁTICA
Nem sempre será possível obter elementos que estejam adequados às necessidades do projeto. O
caso mais comum é a necessidade de um circuito com tamanho de variável maior do que o
disponível, como, por exemplo, para realizar a soma de variáveis de 16 bits e contar apenas com
circuitos de 8 bits de soma.
Confira Na Prática o que fazer em situações como essa, que são tão corriqueiras.
SAIBA MAIS
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do
professor:
Registradores
Quer saber mais sobre como os registradores funcionam? Então não deixe de assistir a este
vídeo.
Conteúdo interativo disponível na plataforma de ensino!
Multiplicador binário
Este vídeo apresenta a construção de um circuito multiplicador binário de 3 bits. Vale a pena
assistir.
Conteúdo interativo disponível na plataforma de ensino!
Tudo o que você precisa saber sobre registradores
O conteúdo a seguir contempla informações sobre os registradores, transferência de dados,
cargas paralelas e seriais e configurações híbridas. Vale a pena a leitura.
Conteúdo interativo disponível na plataforma de ensino!
Circuitos Lógicos - Aula 08 - Blocos básicos: Circuitos Aritméticos
Neste vídeo você aprenderá sobre circuito meio-somador, somador completo somador de n bits
entre outras características do circuito aritmético.
Conteúdo interativo disponível na plataforma de ensino!
Circuitos Lógicos - Aula 11 - Registradores
Neste vídeo você vai aprofundar seus estudos sobre a associação de dois ou mais Flip flop's
controlados por um clock comum que consiste como registradores.
Conteúdo interativo disponível na plataforma de ensino!
Desenvolvimento físico de um sistema
digital
APRESENTAÇÃO
Os circuitos digitais possuem inúmeras características funcionais, comportamentais e estruturais
que os tornam populares e importantes para o cotidiano das pessoas das mais diversas idades e
condições sociais. Independentemente da aplicação em que esses circuitos estão relacionados, os
projetos desses circuitos digitais contemplam muitas questões e análises mais complexas que a
simples conexão entre portas lógicas e flip-flops discretos.
Nesta Unidade de Aprendizagem, você vai estudar as questões relativas às implementações
físicas desses circuitos digitais, seja sob a perspectiva da metodologia e/ou dependências para a
implementação física, seja sob as análises necessárias para a escolha da metodologia mais
adequada ao perfil de projeto em que o seu produto está associado.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
• Analisar tecnologias de circuitos integrados manufaturados.
• Descrever tecnologias de circuitos integrados programáveis.
• Comparar as tecnologias de circuitos integrados.
DESAFIO
Os circuitos digitais podem ser implementados fisicamente por meio de diversas abordagens e
tecnologias de projeto. O uso de arranjos de portas programáveis em campo (field-
programmable gate array – FPGA) é popular devido ao fato de essa abordagem permitir uma
rápida inserção do produto final no mercado, já que esses dispositivos podem ser programados
pelo próprio usuário em campo, ao contrário de outras tecnologias como circuitos integrados de
aplicação específica (application-specific integrated circuits – ASIC), que exigem de processos
de fabricação complexos e demorados.
Uma das características mais relevantes dos FPGAs é o emprego de particionamentos e tabelas
de consultas (lookup tables – LUT) para a implementação de circuitos digitais combinacionais.
Neste Desafio, você deverá desenvolver graficamente, por meio de um diagrama, o
particionamento e o mapeamento do circuito digital combinacional, apresentado na Figura 1, em
tabelas de consultas de três entradas (LUT-3).
INFOGRÁFICO
O emprego de programmable array logic (PAL), desde a década de 1970, é importante no
desenvolvimento de circuitos digitais. Esses dispositivos, embora tenham restrições quanto a sua
capacidade de entradas e saídas, podem contribuir significativamente para que projetos de
circuitos digitais sejam desenvolvidos de forma mais ágil e confiável que um circuito feito por
portas lógicas discretas.
Neste Infográfico você vai entender como é a estrutura interna dos PALs e como esses
dispositivos podem ser utilizados para gerar circuitos digitais combinacionais.
Conteúdo interativo disponível na plataforma de ensino!
CONTEÚDO DO LIVRO
Os circuitos digitais são parte do seu cotidiano e das pessoas que vivem ao seu redor. Esses
circuitos possuem características estruturais e funcionais distintas. Por exemplo, o circuito
digital que controla os movimentos de ajuste do retrovisor do seu carro é completamente
diferente do circuito digital que controla os freios desse mesmo automóvel.
Por conta dessas características funcionais, dos investimentos disponíveis e também pela
disponibilidade de tempo de projeto, os circuitos digitais podem ser implementados fisicamente
de diversas formas e com diferentes tecnologias.
No capítulo Desenvolvimento físico de um sistema digital, da obra Eletrônica digital, você
vai estudar os tipos de tecnologias associadas ao projeto de circuitos integrados, as tecnologias
de circuitos programáveis, bem como as características desses projetos quanto a tempo, custo
e desempenho.
ELETRÔNICA
DIGITAL
Marlon Leandro Moraes
Desenvolvimento físico
de um sistema digital
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
Analisar tecnologias de circuitos integrados manufaturados.
Descrever tecnologias de circuitos integrados programáveis.
Comparar as tecnologias de circuitos integrados.
Introdução
Você já deve ter estudado o projeto lógico de circuitos digitais em que,
para resolver alguma demanda técnica, uma série de etapas precisam ser
cumpridas para garantir a coerência funcional do projeto. Dentre essas
etapas, podemos destacar a obtenção da tabela verdade, a redução das
funções booleanas e a descrição estrutural do circuito por meio de um
diagrama esquemático de portas lógicas. Todas essas etapas, embora
sejam essenciais para que o circuito digital atenda à especificação do
projeto sob a perspectiva do comportamento funcional, não garantem
que o circuito digital esteja disponível fisicamente para ser implementado
em uma placa de circuito impresso. Ou seja, o projeto ainda necessita de
etapas subsequentes para garantir a sua aplicabilidade real.
Neste capítulo, você vai estudar os tipos de tecnologias de circuitos
integrados manufaturados e as tecnologias de circuitos lógicos progra-
máveis, bem como suas características básicas.
Tecnologias de circuitos integrados
O desenvolvimento físico do projeto de circuitos digitais com poucas entradas
e/ou poucas funções lógicas (pequena escala) permite que os projetistas de
hardware implementem fisicamente esses circuitos, por meio de portas lógicas
discretas. Entretanto, conforme o número de entradas e funções lógicas foram
2 Desenvolvimento físico de um sistema digital
aumentando ao longo dos anos, a viabilidade dessa abordagem de implementa-
ção física se tornou muito difícil e ineficaz, por conta do número de elementos
lógicos e conexões, pelo tamanho da placa de circuito impresso necessária e
pelo tempo empregado para a implementação e o teste dos circuitos.
Nesse contexto técnico, associado também à necessidade constante de
redução de tempo e de custos de projeto, o desenvolvimento de circuitos
digitais por meio do emprego de circuitos integrados (IC, do inglês integrated
circuits) se tornou um importante alicerce do desenvolvimento tecnológico.
Circuito integrado totalmente customizado
Os circuitos integrados totalmente customizados (ou full-custom IC), como
o seu nome sugere, são uma categoria de circuitos integrados de aplicação
específica (ASICs, do inglês application specific integrated circuits), em
que cada porta lógica, em nível de transistor, é desenvolvida e caracterizada
individualmente. Ou seja, cada elemento lógico é projetado desde a sua estru-
tura mais elementar para se obter a melhor resposta em frequência, a menor
dissipação de potência e a menor ocupação de área em silício possível.
Conforme define Vahid (2008), essa abordagem de projeto de circuitos
digitais não pode ser realizada por qualquer projetista de hardware, afinal,
diversos recursos técnicos, humanos e de infraestrutura são necessários para
a implementação física de um dispositivo totalmente customizado.
Em decorrência da complexidade funcional, da necessidade do desenvol-
vimento de cada etapa desde o leiaute até a implementação física em silício,
da demanda significativa de tempo (meses, ou até anos), dos custos associados
(milhares a milhões de dólares), a implementação física via circuito integrado
full-custom se torna inviável para a maioria dos projetos de circuitos digitais.
Isso porque, para garantir um retorno financeiro compatível com os investi-
mentos realizados, milhões de unidades desse circuito integrado deveriam ser
comercializadas, o que não é a realidade da esmagadora maioria dos projetos.
Gate array
De acordo com Vahid (2008), os custos de implementação de um circuito
integrado, conhecidos como custos não recorrentes de engenharia (NRE, do
inglês nonrecurring enginering) para um projeto full-custom são da ordem
de milhões de dólares, e o tempo despendido para a sua execução é da ordem
de meses ou anos. Essa característica, conforme comentado anteriormente,
torna-se inviável para a maioria dos projetos de circuitos digitais.
Desenvolvimento físico de um sistema digital 3
No sentido de reduzir esses custos financeiros e, também, o tempo de
projeto, uma abordagem semicustomizada chamada de gate array (matriz
de portas) pode ser utilizada para o desenvolvimento de circuitos integrados.
Segundo Vahid (2008), as etapas de projeto e caracterização dos transistores
que compõem os dispositivos lógicos são muito mais complexas e custosas
do que a implementação das conexões entre esses transistores.
Com base nessas relações, e na tentativa de agilizar a implementação, o gate
array foi concebido. Os fabricantes de circuitos integrados projetam, caracte-
rizam e pré-implementam fisicamente matrizes de portas lógicas chamadas
gate arrays. Os projetistas de circuitos digitais baseados nessas estruturas
pré-fabricadas projetam as interconexões entre esses componentes lógicos, de
acordo com a necessidade do seu projeto, por meio de ferramentas de desenho
assistido por computador (CAD, do inglês computer aided design). Por fim,
a camada de conexões é adicionada sobre a matriz pré-fabricada, e o circuito
integrado funcional é finalizado conforme apresenta o fluxo da Figura 1. A
Figura 1a apresenta o circuito desejado, a Figura 1b traz a matriz de portas
pré-fabricadas, e, por fim, a Figura 1c mostra as conexões físicas entre portas
implementadas pelo projetista do circuito.
Figura 1. Tecnologia de gate array: (a) circuito desejado; (b) gate array; (c) gate array com
as conexões.
Fonte: Adaptada de Vahid (2008).
Essa abordagem reduz consideravelmente o custo, o tempo do projeto e a
implementação física do circuito integrado, quando comparada à metodologia
full-custom. Entretanto, cabe ressaltar que, devido ao fato de as estruturas
do leiaute do gate array serem genéricas e as conexões serem maiores, por
conta também do posicionamento mais distante entre os elementos lógicos, os
circuitos baseados em gate array possuem uma maior ocupação em área de
silício, um maior consumo de potência e uma menor frequência de operação,
quando comparados aos circuitos totalmente customizados.
4 Desenvolvimento físico de um sistema digital
Standard cell
O emprego da metodologia por standard cell (célula padrão), de acordo com
Vahid (2008), também objetiva reduzir o tempo e os custos associados ao
processo de implementação física de um circuito integrado. Nessa abordagem,
o leiaute e a caracterização das portas lógicas são realizados previamente pelo
fabricante, que disponibiliza essas informações em um conjunto de arquivos
chamado de biblioteca de células.
Cabe ao projetista, de acordo com as necessidades do seu projeto, selecio-
nar, dentro desse conjunto de células dispostas na biblioteca, as que melhor
se adequam à sua demanda sob o ponto de vista funcional, de resposta em
frequência, de área ou, ainda, de consumo de potência. Também é papel do
projetista posicionar essas células dentro da área disponível do seu circuito
integrado e realizar as conexões entre as células.
Devido à complexidade dos projetos, à quantidade de células e, também,
ao tamanho da biblioteca, essas tarefas dos projetistas não são realizadas
manualmente, mas, sim, por meio de ferramentas de CAD específicas para
o projeto de ASICs.
A Figura 2 apresenta um diagrama ilustrativo do processo de implemen-
tação de um circuito utilizando a metodologia standard cell. Observe que o
circuito desejado (Figura 2a) necessita de duas portas lógicas, uma AND e
uma NOT. Essas portas lógicas são selecionadas dentro da biblioteca (Figura
2b), que possui diversas portas lógicas distintas. Após a seleção das portas
lógicas adequadas, estas são posicionas e conectadas dentro da área do circuito
integrado (Figura 2c).
Evidentemente, esse circuito possui um caráter meramente ilustrativo e
didático, dada a sua composição estrutural bastante simplificada. Ainda assim,
é possível verificar que o circuito da Figura 2c possui uma fragmentação em
filas de células bastante regulares. Isso é bastante importante para o desen-
volvimento de circuitos baseados em standard cell, pois todas as células da
biblioteca tendem a possuir tamanhos regulares, de forma que a ocupação do
circuito possa ser organizada em linhas padrões.
Desenvolvimento físico de um sistema digital 5
Figura 2. Tecnologia de standard cell: (a) circuito desejado; (b) biblioteca de células;
(c) leiaute das células posicionadas no CI.
Fonte: Adaptada de Vahid (2008).
Se você fizer comparações entre os circuitos standard cell e os gate array,
verá que os circuitos standard cell tendem a ser menores em área e mais
otimizados em relação ao consumo e à frequência de operação. Se você fi-
zer a comparação entre os circuitos full-custom e os circuitos standard cell,
essas diferenças são ainda mais evidentes, pois os circuitos standard cell são
maiores em área e menos otimizados em relação ao consumo e à frequência
de operação. Porém, esses circuitos possuem um custo NRE muito menor
e um tempo de execução bastante pequeno e são muito menos propensos a
retrabalhos, conforme define Vahid (2008).
6 Desenvolvimento físico de um sistema digital
Circuitos integrados programáveis
Se você observar todos os ASICs apresentados na seção anterior, você vai
concluir que, embora estes possuam diferenças importantes na sua metodologia
de implementação física, todos eles necessitam de um tempo significativo
para que o fabricante do semicondutor finalize a implementação e, assim, o
projetista de fato integre o circuito em seu produto. Nesse sentido, os circuitos
integrados programáveis ganharam muito espaço nos últimos 35 anos, já que
a integração do dispositivo acontece rapidamente à aplicação final.
Programmable array logic (PAL)
Segundo Pedroni (2010) e Horowitz (2017), os primeiros circuitos do tipo
programmable array logic (PAL) foram disponibilizados no mercado no início
da década de 1970. Baseados no princípio de que qualquer circuito lógico-
-combinacional pode ser implementando em função da soma de produtos
(SOP, do inglês sum of products), esses circuitos programáveis contribuíram
bastante para a agilidade do desenvolvimento físico de circuitos digitais
combinacionais, já que a estrutura lógica e de conexões já era entregue pronta
para o usuário.
Conforme é possível observar na Figura 3a, a estrutura básica de uma
lógica PAL é composta por entradas (I3, I2, I1 e I0) que geram, por meio de
buffers e inversores, seus respectivos sinais negados e não negados. Esses
sinais negados e não negados são associados a um arranjo programável (por
fusíveis ou antifusíveis) nas entradas das portas lógicas AND. A saída desse
arranjo programável é associada às entradas de um novo arranjo fixo de portas
lógicas OR, que geram as saídas (O3, O2, O1 e O0) da PAL.
Para a implementação de um circuito digital combinacional, o projetista
deve realizar a programação do arranjo lógico AND, via ferramenta computa-
cional, de acordo com a função booleana desejada. No sentido de simplificar
o número de conexões do diagrama apresentado na Figura 3a, uma abreviação
simbólica das entradas das portas lógicas AND foi realizada. A Figura 3b
apresenta a relação entre a abreviação simbólica e a lógica real das conexões
de entrada das portas lógicas AND.
Desenvolvimento físico de um sistema digital 7
Figura 3. Estrutura básica de uma PAL.
Fonte: Adaptada de Horowitz (2017).
Programmable logic array (PLA)
A programmable logic array (PLA) foi lançada também na década de 1970
com características estruturais bastante semelhantes à PAL, conforme destaca
Pedroni (2010). Ainda sob a perspectiva de que circuitos digitais combina-
cionais podem ser implementados utilizado SOP, os circuitos PLA possuem
uma estrutura interna básica, conforme apresentado na Figura 4, em que a
grande diferença está na possibilidade de programação em ambos os arranjos
lógicos. Isto é, tanto as entradas das portas lógicas AND quanto as entradas
das portas lógicas OR podem ser programadas pelo usuário de acordo com a
necessidade do projeto em questão.
Embora essa estrutura permita uma maior flexibilidade de programação
lógica do dispositivo, em especial no que se refere à complexidade das funções
booleanas, esses dispositivos programáveis apresentam atrasos de propagação
dos sinais maiores em relação às lógicas PAL, em função da existência de
números maiores entre as entradas e as saídas dos circuitos digitais.
8 Desenvolvimento físico de um sistema digital
Figura 4. Estrutura básica de uma PLA.
Fonte: Adaptada de Horowitz (2017, p. 768).
Field-programmable gate array (FPGA)
Tanto os circuitos PAL quantos os PLA receberam, ao final da década de 1970,
incrementos estruturais de flip-flops nas suas respectivas saídas, para permitir
o emprego desses dispositivos lógicos programáveis em projetos de circuitos
digitais sequenciais. No entanto, o número de portas de entradas e saídas des-
ses elementos foi um grande empecilho para o seu emprego em projetos de
circuitos digitais mais complexos, funcionalmente falando. Isso se deve ao fato
de o incremento de poucas entradas ou saídas em qualquer uma das estruturas
impactar o aumento significativo de área, consumo e atrasos do dispositivo.
Os arranjos de portas programáveis em campo (FPGAs, do inglês field-
-programmable gate arrays) chegaram ao mercado no início dos anos 1980
para preencher essa lacuna, isto é, permitir o desenvolvimento de circuitos
digitais mais complexos funcionalmente. Embora o nome dos FPGAs induza
ao entendimento de que a sua estrutura interna seja composta por um arranjo
de portas semelhante às estruturas dos circuitos PAL e PLA, na realidade,
Desenvolvimento físico de um sistema digital 9
a arquitetura interna dos FPGAs é composta por elementos programáveis
chamados tabelas de consulta (LUTs, do inglês look up tables). Conforme
destaca Vahid (2008), a nomenclatura dos FPGAs relacionada aos gate arrays
se deve ao fato de esses dispositivos terem sido disponibilizados no mercado
em substituição aos dispositivos que, de fato, possuíam em sua arquitetura
interna os arranjos de portas.
A Figura 5 apresenta a arquitetura básica de um FPGA composta por um
bloco lógico programável (CLB, do inglês configurable logic block) e por
matrizes de chaveamentos (switch matrices), que serão detalhados a seguir.
Figura 5. Arquitetura básica de um FPGA.
Fonte: Adaptada de Vahid (2008).
Look up table (LUT)
Segundo Vahid (2008), o princípio de funcionamento básico dos FPGAs está
no emprego de memórias para a descrição de funções lógicas combinacionais
em substituição a um arranjo de portas. Basicamente, uma memória com uma
palavra de 1 bit, com N bits de seleção de endereços, pode ser configurada em
modo de leitura e funcionar como um circuito combinacional de N entradas.
Um exemplo desse conceito é apresentado na Figura 6, em que a tabela ver-
dade da função booleana desejada (Figura 6a) é representada em uma memória
com quatro palavras de um bit cada (4x1), em modo de leitura (Figura 6b).
10 Desenvolvimento físico de um sistema digital
De acordo com as combinações dos sinais x e y, conectados aos bits de seleção
de endereço da memória, o barramento de dados (D) gera uma saída coerente
com a função F.
Figura 6. Implementação lógica utilizando memórias.
Fonte: Adaptada de Vahid (2008).
Esse conceito de uso de memória para implementação de circuitos digitais
combinacionais, fundamental para o desenvolvimento dos FPGAs, é chamado
de tabela de consulta, como visto anteriormente, na qual o número de bits
de endereçamento da memória é o que define a capacidade da LUT, isto é, o
número de entradas possíveis do circuito combinacional.
Em geral, os FPGAs são baseados em tecnologia SRAM, isto é, de memórias voláteis.
Quando a tensão de alimentação desses dispositivos é suprimida, os conteúdos das
LUTs são apagados.
Particionamento LUT
Embora o princípio de funcionamento das LUTs seja o emprego de memórias
para a implementação de circuitos digitais combinacionais, o incremento
Desenvolvimento físico de um sistema digital 11
do número de entradas do circuito se torna um problema importante para o
desenvolvimento físico dessas estruturas. Por exemplo, se você precisar de
um circuito combinacional de 16 entradas, o tamanho da memória necessária
para a representação da tabela de consulta seria de 64k, isto é, uma memória
de 65.536 posições.
Conforme define Vahid (2008), uma implementação física genérica baseada
em uma única tabela de consulta não seria uma estrutura viável e eficiente
para circuitos lógicos com um número de entradas mais elevado. No sentido
de resolver essa questão de implementação, o conceito de particionamento de
tabelas de consulta foi implementado nos FPGAs, o que tornou suas estruturas
mais eficientes, em especial com relação à ocupação de área em silício.
A Figura 7a apresenta um circuito lógico com cinco entradas. Se esse circuito
fosse implementado com apenas uma memória, esse dispositivo deveria possuir
32 palavras de 1 bit cada para a representação coerente do circuito combinacional.
A Figura 7b apresenta um particionamento do circuito combinacional original
em dois fragmentos, representados pelas funções x = kps’ e w = x + t + d.
Do ponto de vista funcional, ambos os circuitos possuem a mesma carac-
terística; entretanto, do ponto de vista estrutural, são necessárias agora apenas
duas memórias 8x1 para a sua representação por meio de tabelas de consulta,
conforme pode ser observado na Figura 7c. Em resumo, em vez de você
precisar utilizar uma memória de 32 palavras, são necessárias duas memórias
de oito palavras, economizando, assim, uma área de 50% do dispositivo. É
com base nesse princípio de particionamento que os FPGAs são estruturados,
segundo Vahid (2008).
Figura 7. Exemplo de partição de um circuito em duas tabelas de consulta: (a) circuito
desejado; (b) partição do circuito em grupos de três entradas e uma saída, no máximo;
(c) grupos mapeados para tabelas de consulta de três entradas e uma saída.
Fonte: Adaptada de Vahid (2008).
12 Desenvolvimento físico de um sistema digital
Bloco lógico programável
O conceito de LUT é fundamental para a implementação de circuitos digitais
combinacionais em FPGAs. Porém, essas estruturas não possibilitam a im-
plementação de circuitos digitais com características sequenciais em FPGAs.
Nesse sentido, as estruturas internas dos FPGAs possuem um CLB, que integra
uma LUT e um flip-flop, permitindo, assim, o desenvolvimento de circuitos
tanto combinacionais quanto sequenciais.
A Figura 8 apresenta o diagrama básico de um CLB composto por uma
LUT de duas saídas (D1 e D0) e seus respectivos flip-flops. Observe a existência
de um circuito multiplexador associado a cada uma das saídas. Esse circuito
multiplexador é responsável pela configuração da saída do CLB; ou seja, esse
circuito configura se a saída do CLB vai propagar um sinal registrado pelo
flip-flop ou não.
Figura 8. Exemplo da estrutura interna de um CLB.
Fonte: Adaptada de Vahid (2008).
Desenvolvimento físico de um sistema digital 13
Matriz de chaveamento
De nada adiantaria LUTs, particionamentos e CLBs se esses elementos não
pudessem ser interconectados entre si para gerar circuitos mais complexos.
Os FPGAs possuem em sua estrutura interna uma rede de interconexões que
permite o chaveamento de sinais dos pinos de entradas para os CLBs, dos
CLBs para outros CLBs, e dos CLBs para as saídas.
A Figura 9a apresenta o diagrama simplificado da estrutura interna de um
FPGA genérico; é possível observar na Figura 9b o princípio da matriz de cha-
veamento. Evidentemente, um FPGA não é composto apenas por duas LUTs;
entretanto, no sentido de facilitar o entendimento, essa estrutura foi simplificada.
Figura 9. Matriz de chaveamento.
Fonte: Adaptada de Vahid (2008).
Com base na definição de Vahid (2008), pode-se observar na Figura 9a que
os sinais P1, P2 e P3 são entradas que se propagam para a LUT localizada na
esquerda do diagrama. As saídas dessa LUT, D1 e D0, são propagadas para a
matriz de chaveamento juntamente com os sinais externos P4 e P5. A função da
matriz de chaveamento é definir quais desses sinais serão propagados para as
entradas a1 e a0 da LUT da esquerda. Esse chaveamento é realizado por meio
de dois bits configuráveis internos à matriz de chaveamento, conforme pode
ser observado na Figura 9b.
Em resumo, os FPGAs são estruturas compostas não por portas lógicas, mas
por elementos configuráveis que podem se comportar como esses elementos.
Em geral, os fabricantes classificam seus dispositivos em função do número
14 Desenvolvimento físico de um sistema digital
de LUTs e/ou pelo número de CLBs. Outro parâmetro bastante influente na
usabilidade e no preço desses dispositivos é relativo ao número de pinos de
entrada e saída do dispositivo. Na hora de estimar qual o dispositivo mais
adequado ao seu projeto ou produto, uma análise desses parâmetros é um
bom começo para o seu trabalho.
Comparação entre tecnologias
Conforme você estudou neste capítulo, existem diversas abordagens possíveis
para a implementação física de um circuito digital. Todas essas implementa-
ções possuem características estruturais, elétricas, de custo e viabilidade que
devem ser consideradas por você na hora do projeto. Afinal, de nada adianta
você desenvolver um circuito que atenda às especificações funcionais, mas
que o custo seja extremamente alto, ou que o prazo de entrega não atenda às
necessidades mercadológicas.
Com base em Vahid (2008), a Figura 10 apresenta um gráfico comparativo
entre as tecnologias apresentadas neste capítulo, considerando fatores como a
customização, a densidade, o consumo de potência, a capacidade de integração,
o custo e, também, o tempo para a disponibilização do produto no mercado.
Figura 10. Comparação entre diversas tecnologias de circuito integrado.
Fonte: Vahid (2008, p. 428).
Desenvolvimento físico de um sistema digital 15
Observando o gráfico, você verá que as tecnologias de circuitos localizadas à
direita do gráfico possuem melhor desempenho em frequência, menor consumo
de potência e maior densidade. Em contrapartida, essas mesmas tecnologias
possuem um custo mais elevado e um tempo de desenvolvimento maior.
Por outro lado, tecnologias localizadas à esquerda do diagrama, por serem
genéricas em sua fabricação, quando utilizadas em projetos de circuitos di-
gitais, tendem a ser disponibilizadas no mercado em um tempo muito menor
e com um custo bastante reduzido. Em compensação, essas tecnologias de
circuito não possuem características de consumo de potência, resposta em
frequência e integração muito atrativas, quando comparadas às tecnologias
semicustomizadas ou customizadas.
Em resumo, a escolha por uma determinada implementação física não
pode ser realizada somente pela análise técnica, como frequência, consumo
e integração. Essa escolha deve considerar fatores como custo, tempo de
desenvolvimento e necessidade de entrega ao mercado consumidor.
Para saber mais sobre FPGAs comerciais, consulte as informações disponíveis no link
a seguir.
https://goo.gl/uh239P
HOROWITZ, P. A arte da eletrônica: circuitos e eletrônicos e microeletrônica. 3. ed. Porto
Alegre: Bookman, 2017.
PEDRONI, V. Eletrônica digital moderna com VHDL. Rio de Janeiro: Elsevier, 2010.
VAHID, F. Sistemas digitais: projeto, otimização e HDLs. Porto Alegre: Artmed, 2008.
16 Desenvolvimento físico de um sistema digital
Leituras recomendadas
HOROWITZ, P. Dispositivos lógicos programáveis. In: HOROWITZ, P. A arte da eletrônica:
circuitos e eletrônicos e microeletrônica. 3. ed. Porto Alegre: Bookman, 2017.
SCHULER, C. Circuitos integrados. In: SCHULER, C. Eletrônica II. 7. ed. Porto Alegre:
AMGH, 2013. (Série Tekne).
TOCCI, R. J. Sistemas digitais: princípios e aplicações. 11. ed. São Paulo: Pearson Prentice
Hall, 2011.
VAHID, F. Implementação física. In: VAHID, F. Sistemas digitais: projeto, otimização e
HDLs. Porto Alegre: Artmed, 2008.
DICA DO PROFESSOR
O projeto de circuitos digitais discretos possui um fluxo de projeto definido em geral pela
montagem da tabela verdade, pelo processo de simplificação lógica, pela extração das funções
booleanas e, posteriormente, pela obtenção do esquemático do circuito lógico. Esse processo é
baseado nas teorias de eletrônica digital clássica, que são fundamentais para projetos desses
circuitos. Porém, quando a complexidade funcional e estrutural desses circuitos é
incrementada, o emprego de circuitos digitais discretos dá lugar aos FPGAs.
Nesta Dica do Professor, você vai entender o fluxo básico de projeto de circuitos digitais
utilizando FPGAs, bem como quais são as entradas e saídas desses momentos.
Conteúdo interativo disponível na plataforma de ensino!
EXERCÍCIOS
1) Considerando as caraterísticas dos projetos de circuitos integrados totalmente
customizados (full-custom), pode-se dizer que:
A) esses circuitos são construídos utilizando elementos preconcebidos em bibliotecas.
B) possuem um custo de projeto extremamente reduzido.
C) sua capacidade de integração é pior que a dos circuitos implementados em FPGAs.
D) são circuitos reprogramados pelo usuário.
E) são circuitos cujos consumos de potência são melhores que os dos circuitos de gate array.
2) Considerando as características estruturais de um FPGA básico, quais dos elementos
abaixo não faz parte da estrutura de um FPGA?
A) CLB.
B) Gate array.
C) Matriz de chaveamento.
D) Flip-flops.
E) Lookup table (LUT).
3) As tabelas de consulta (lookup tables – LUT) dos FPGAs possuem sua estrutura
interna baseada em uma implementação fisicamente que utiliza:
A) memórias.
B) flip-flops.
C) multiplexadores.
D) portas lógicas.
E) gate array.
4) Um circuito digital foi implementado em um FPGA utilizando duas LUTs, conforme o
diagrama apresentado na abaixo.
Você conhece o comportamento de cada LUT mediante a cada tabela de verdade
correspondente, que também são apresentados na sequência.
Determine a tabela verdade do sinal sinal Y, que corresponde a saida do FPGA.
A)
B)
C)
D)
E)
5) Uma lookup table possui a sua configuração interna de acordo com a Tabela 3.
Considerando isso, determine o diagrama esquemático do circuito digital equivalente dessa
configuração.
A)
B)
C)
D)
E)
NA PRÁTICA
Projetar circuitos digitais complexos utilizando portas lógicas discretas é uma tarefa
demasiadamente enfadonha e improdutiva, sobretudo se considerarmos a possibilidade de falhas
de montagem e/ou eventuais necessidades de alteração de escopo de projeto. Ao mesmo tempo,
fazer o projeto de hardware de uma placa de circuito impresso (PCI) que tenha um FPGA, em
especial para projetistas menos experientes, pode ser uma tarefa muito complexa.
Confira Na Prática o exemplo de um kit de desenvolvimento que já vem com o FPGA integrado
e validado, deixando para você somente o trabalho de desenvolver o circuito lógico que será
programado dentro do FPGA.
Conteúdo interativo disponível na plataforma de ensino!
SAIBA MAIS
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do
professor:
Introdução a FPGA – O que é e como funciona
Confira o vídeo a seguir, que traz um exemplo básico de estrutura e projeto em FPGAs.
Conteúdo interativo disponível na plataforma de ensino!
Diferença entre processador e FPGA
Neste vídeo você vai ver uma breve comparação entre processadores e FPGAs.
Conteúdo interativo disponível na plataforma de ensino!
Sistemas digitais
O capítulo 7, Implementação física, do livro Sistemas digitais, de Frank Vahid, é uma excelente
referência sobre projetos de circuitos utilizando FPGA.
Linguagem de descrição de hardware
APRESENTAÇÃO
O projeto de circuitos digitais combinacionais e/ou sequenciais complexos baseados em
diagramas esquemáticos é uma tarefa extremamente trabalhosa e muito susceptível a falhas,
devido à quantidade de conexões entre os elementos lógicos. Outra característica dessa
abordagem metodológica de projeto de circuitos digitais está na dificuldade de alterações
funcionais, pois pequenas alterações de escopo funcional impactam em alterações profundas da
arquitetura do circuito.
Embora o estudo das teorias clássicas da Eletrônica Digital seja fundamental para a formação de
bons projetistas de circuitos de digitais, a compreensão de outras técnicas de projeto se torna
igualmente relevante, sobretudo se considerarmos as necessidades de agilidade e confiabilidade
inerentes aos projetos de circuitos digitais.
Nesta Unidade de Aprendizagem, você verá a importância das linguagens de descrição de
hardware (hardware description language – HDL), bem como as características elementares de
circuitos combinacionais e sequenciais. Ainda, você vai analisar componentes operacionais,
além de entender como são desenvolvidos os projetos em nível de transferência de registradores
(register transfer level –RTL) implementados sob essa metodologia de projeto.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
• Descrever as lógicas combinacional e sequencial através de inguagem de descrição de
hardware.
• Analisar componentes de bloco operacional através de linguagem de descrição de
hardware.
• Desenvolver projetos register transfer level através de linguagem de descrição de
hardware.
INFOGRÁFICO
Há diversas formas de você projetar um circuito digital capaz de realizar operações de soma
com sequencias numéricas binárias. Uma das mais clássicas é baseada na utilização de um
circuito somador com arquitetura de propagação de carry (vai-um) através da associação de
portas lógicas.
Embora essa abordagem seja correta sob o ponto de vista funcional, quando o número de bits do
circuito torna-se elevado, o número de portas associadas é muito grande e trabalhosa. Nesse
contexto, o projeto de circuitos digitais em HDL que integre tanto descrições funcionais
quanto estruturais é uma alternativa importante.
Veja, no Infográfico a seguir, um exemplo de implementação em VHDL de um circuito
somador com propagação de carry e com entradas de 3 bits que aborda tanto o conceito de
descrição funcional quanto o de descrição estrutural.
CONTEÚDO DO LIVRO
Projetar circuitos digitais com características funcionais complexas não é uma tarefa simples,
sobretudo se você utilizar elementos lógicos discretos para o seu projeto. Afinal, usando essa
abordagem de projeto clássica, seu circuito final terá uma arquitetura muito específica, de difícil
manutenção, e pouca possibilidade de reaproveitamento em outros projetos.
O emprego de linguagens de descrição de hardware (hardware description language – HDL)
altera drasticamente essa realidade, fazendo com que o seu projeto sofra alterações funcionais
sem a necessidade de um retrabalho completo. Outra característica importante dos projetos em
HDL é a sua reutilização lógica, afinal, a implementação é pensada sob a perspectiva
funcional, não sendo vinculada a uma arquitetura específica por parte do projetista.
No capítulo Linguagem de descrição de hardware, da obra Eletrônica digital, você verá as
características elementares das linguagens de descrição de hardware, bem como as formas de
implementação de circuitos combinacionais e sequenciais utilizando a linguagem HDL
denominada VHDL. Ainda, você fará a análise de blocos operacionais e projetos em nível de
transferência de registradores (register transfer level – RTL) que utilizam essa abordagem de
desenvolvimento de projeto de circuitos digitais.
Boa leitura.
ELETRÔNICA
DIGITAL
Marlon Leandro Moraes
Linguagem de descrição
de hardware
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
Descrever as lógicas (combinacional e sequencial) pelo uso de lin-
guagem de descrição de hardware.
Analisar componentes de bloco operacional pelo uso de linguagem
de descrição de hardware.
Desenvolver projetos register transfer level pelo uso de linguagem de
descrição de hardware.
Introdução
O desenvolvimento de circuitos digitais baseados em portas lógicas dis-
cretas impõe importantes desafios aos projetistas de hardware, sobretudo
quando consideramos a implementação de circuitos com características
funcionalmente complexas, conforme salienta Tocci (2011). Segundo
Vahid (2008), a descrição de circuitos digitais complexos por meio de
diagramas esquemáticos não garante que os profissionais envolvidos
no processo de produção entendam as funcionalidades desse projeto,
nem tampouco que o implementem fisicamente de forma igual. Nesse
contexto, o emprego de linguagens de descrição de hardware contribui
decisivamente para tornar os projetos de circuitos digitais complexos (sob
as perspectivas estrutural e comportamental) mais confiáveis e exequíveis
sob a perspectiva da implementação física.
Assim, neste capítulo, você vai estudar como são realizadas as descri-
ções de circuitos digitais combinacionais e sequenciais, além de analisar
componentes dos blocos operacionais. Você também vai verificar o
desenvolvimento de projetos em nível de transferência de registradores
descritos por meio de uma linguagem de descrição de hardware.
2 Linguagem de descrição de hardware
Descrição de circuitos digitais
Conforme destaca D’Amore (2015), se você fizer uma análise da complexidade
funcional e estrutural dos circuitos digitais desenvolvidos até a metade da
década de 1980 e uma comparação com os circuitos desenvolvidos poste-
riormente a esse período vai perceber um salto bastante significativo. Se
você fizer uma correlação desse salto quantitativo e qualitativo dos circuitos
digitais com as ferramentas e técnicas disponíveis nesse período, você vai
perceber que o desenvolvimento das linguagens de descrição de hardware
(hardware description language, HDL) foram decisivas para o melhoramento
do processo de desenvolvimento de circuitos digitais. Isso porque apenas
o uso dos diagramas esquemáticos não garantia o entendimento completo
das funcionalidades dos projetos nem assegurava que esses projetos seriam
implementados da forma como constava nos diagramas.
Um exemplo disso pode ser visto na Figura 1, em que é apresentado o dia-
grama esquemático de um circuito digital bastante elementar, composto por três
portas lógicas (NOT, OR e AND). Observe que, nesse diagrama esquemático,
existem três entradas de dados à esquerda do diagrama (c, h e p), e uma saída
(f) localizada à direita do circuito discreto. Se você decidir implementar esse
circuito fisicamente em uma protoboard, você certamente observará que o
circuito montado fisicamente não terá a aparência descrita na Figura 1.
Figura 1. Diagrama esquemático de um circuito digital.
Fonte: Adaptada de Vahid (2008).
Essas diferenças entre o diagrama esquemático e a sua respectiva imple-
mentação física se tornam ainda mais evidentes quando tratamos de circui-
tos digitais complexos, seja pela perspectiva de elementos lógicos e/ou das
características funcionais.
Linguagem de descrição de hardware 3
Um exemplo dessa dificuldade é apresentado no diagrama esquemático
da Figura 2. Você conseguiria facilmente descrever o comportamento lógico
desse circuito digital? Você conseguiria implementar facilmente esse circuito?
Caso esse circuito apresentasse alguma inconsistência lógica, você conseguiria
facilmente localizar o problema? Provavelmente a sua resposta seja “não” para
todos esses questionamentos, dada a complexidade das tarefas.
Figura 2. Diagrama esquemático de um circuito digital complexo.
Fonte: Vahid (2008, p. 464).
Nesse sentido, o desenvolvimento das HDLs veio a contribuir fortemente
para o melhor entendimento dos circuitos digitais, especialmente os complexos,
criando uma linguagem única a ser empregada por todos os fornecedores de
tecnologia para a descrição de circuitos. Existes diversas HDLs disponíveis
no mercado, por exemplo: VHDL (sigla para VHSIC hardware description
language, sendo que VHSIC é a sigla para very high speed integrated circuits,
ou circuitos integrados de altíssima velocidade), Verilog e SystemC. Embora
essas HDLs possuam características sintáticas distintas, todas são uma po-
derosa ferramenta de desenvolvimento de circuitos digitais.
Nesta seção, serão apresentados alguns exemplos da descrição de circuitos
combinacionais e sequenciais utilizando a linguagem VHDL e as suas carac-
terísticas básicas de projeto.
4 Linguagem de descrição de hardware
As HDLs possuem diversas características importantes, mas uma das mais relevantes
está no fato de as atribuições do código serem realizadas de forma paralela, não
sequencial. Isso quer dizer que uma atribuição na primeira linha do código será fun-
cionalmente equivalente a uma atribuição realizada na última linha. Quando você
estiver descrevendo circuitos por meio de uma HDL, você não pode pensar que seu
projeto vai funcionar como um software, mas que o seu projeto é, de fato, um hardware.
Circuitos combinacionais
As HDLs possuem sintaxes específicas para o processo de descrição de
circuitos digitais, e, no caso do VHDL, isso não é diferente. Nesse con-
texto, serão apresentados os elementos básicos que compõem essa sintaxe,
bem como suas características específicas relativas à descrição de circuitos
combinacionais.
A Figura 3a apresenta o diagrama esquemático de um circuito combi-
nacional composto por três portas lógicas (NOT, OR e AND). Observe que
esse circuito possui três entradas (c, h e p), uma saída (f) e dois elementos
de interconexão (n1 e n2). Esse mesmo circuito foi descrito em VHDL e
apresentado na Figura 3b. Conforme apresenta Vahid (2008), a descrição
de um circuito digital em VHDL é iniciada pela sua entity (entidade), que,
neste exemplo, foi chamada de “exemplo_comb”. Embora se recomende
fortemente o emprego de nomes intuitivos, esse nome tem a função de
identificação do circuito digital — ou seja, pode ser utilizado um nome
genérico qualquer.
Entretanto, além da identificação do projeto, a entity possui também a
função de descrever as interfaces do circuito (port, isto é, portas). Conforme
você pode observar na Figura 3b, a linha 4 apresenta a descrição das três
entradas (in) do circuito, indicando os seus respectivos nomes (c, h e p) e o
seu formato bit. Isto é, esses sinais podem receber dados binários no for-
mato de nível lógico baixo (0) ou nível lógico alto (1). Também foi descrito
na entity desse circuito a sua respectiva saída f, cuja característica lógica
também é um bit.
Linguagem de descrição de hardware 5
Figura 3. (a) Diagrama esquemático do circuito digital. (b) Descrição estrutural
do circuito digital em VHDL.
Fonte: Adaptada de Vahid (2008).
Usaremos os nomes dos componentes da estrutura VHDL em inglês, devido à sintaxe
da descrição ser nesse idioma.
6 Linguagem de descrição de hardware
A descrição do circuito continua pela definição da sua architecture (ar-
quitetura). Esse elemento do VHDL, cuja nomenclatura também pode ser
genérica e, no exemplo da Figura 3b, foi chamado de “exemplo_comb_1”,
tem a função básica de descrever as relações lógicas das entradas e dos sinais
de interconexão internos para a geração das saídas do circuito. Observe que,
na Figura 3b, são descritos os sinais internos n1 e n2 do tipo bit; esses sinais
geram a saída f por meio das relações lógicas definidas na Figura 3a.
Se você fizer uma análise mais criteriosa da relação entre a descrição
gráfica apresentada no diagrama esquemático da Figura 3a e a sua respectiva
descrição em VHDL na Figura 3b, concluirá que não existe muita diferença
entre os dois processos, afinal, ambos possuem uma característica bastante
estrutural e hierárquica. Nesse momento, você pode estar se perguntando, com
razão: qual é a vantagem de descrever circuitos digitais por meio de HDLs?
De fato, a descrição apresentada na Figura 3b não possui grandes vantagens
de implementação física, já que esta é bastante estrutural e, se for utilizada
em circuitos maiores e mais complexos, apresentará ainda mais empecilhos de
descrição ao projetista de hardware. Nesse contexto, uma outra abordagem de
descrição será apresentada nesta seção, em que o foco não será a característica
estrutural do circuito, mas, sim, a sua característica funcional.
Para dar início a essa nova abordagem de descrição do circuito apresentado
na Figura 3a, usaremos a sua respectiva tabela verdade, conforme apresentado
na Figura 4.
Figura 4. Tabela verdade do circuito digital.
Linguagem de descrição de hardware 7
A partir dessa descrição em VHDL, baseada em uma estrutura sintática
comportamental, conhecida como when/else, conforme define D’Amore
(2015) e apresentada a Figura 5, algumas observações e análises podem ser
realizadas. A primeira delas está na entity, em que foi criada uma entrada
chamada de chp, cujo tipo é um bit_vector. Esse tipo, apresentado na linha 4
da Figura 5, em vez de utilizar três entradas de um bit cada, cria um elemento
de entrada vetorial que é composto por três sinais agrupados.
Embora o emprego de vetores facilite a descrição dos elementos de entrada,
saída e interconexão de circuitos digitais em VHDL, a grande diferença da
descrição apresentada na Figura 5 está no emprego de uma arquitetura baseada
em uma estrutura lógica com descrição funcional. Isto é, o circuito descrito
na architecture da Figura 5 gerará nível lógico alto (1) na saída f, quando
(when) a entrada chp for igual a 001 (linha 13). Caso essa condição não seja
verdadeira (else), a saída f vai receber nível lógico alto se a entrada chp for
igual a 010 (linha 14). Caso essa segunda condição também não for satisfeita
(else), a saída f receberá nível lógico alto se a entrada chp for igual a 011
(linha 15). Na hipótese de as condições expressas nas linhas 13, 14 ou 15 não
serem satisfeitas, a saída f vai receber a atribuição de nível lógico baixo (0),
conforme apresentado na linha 16.
Figura 5. Descrição funcional do circuito digital when/else.
8 Linguagem de descrição de hardware
Essa abordagem de descrição HDL comportamental, descrita na Figura 5,
permite aos projetistas de circuitos digitais terem muito mais foco no compor-
tamento do circuito lógico do que em sua estrutura física. Além disso, essa
abordagem permite um entendimento muito mais rápido, eficiente e intuitivo
das funcionalidades de circuitos mais complexos; quando são necessárias
alterações, elas também são realizadas de forma mais otimizada e eficaz.
D’Amore (2015) também define uma outra sintaxe, em VHDL, que contempla
esse perfil de desenvolvimento comportamental de circuito digital, conhecida
como with/select. O emprego dessa descrição é apresentado na Figura 6, em
que a saída f receberá nível lógico alto quando o vetor de entrada chp for igual
a 001, 010 ou 011. Observe que, para qualquer outra combinação lógica da
entrada de dados chp, a saída f receberá a atribuição do nível lógico baixo.
Figura 6. Descrição funcional do circuito digital with/select.
Ainda segundo D’Amore (2015), podemos também descrever circuitos
combinacionais com o emprego de outras duas sintaxes presentes no VHDL e
que são bastante comuns em outras linguagens: if/elsif/else e case/when. Essas
estruturas de descrição lógicas são apresentadas na Figura 7. Observe que, em
ambos os casos, existe a necessidade do emprego de um processo (process),
cuja característica básica é a realização das análises dos condicionamentos
de forma sequencial (mesmo que a atribuição das saídas continue atendendo
à característica concorrente dos circuitos).
Linguagem de descrição de hardware 9
A Figura 7a apresenta a descrição do circuito utilizando o condicional
if/elsif/else do VHDL, enquanto a Figura 7b apresenta a descrição do cir-
cuito utilizando o condicional case/when. Ambos os circuitos atendem ao
comportamento funcional da tabela verdade apresentada na Figura 4, em
que a saída f receberá nível lógico alto quando o vetor de entrada chp for
igual a 001, 010 ou, ainda, 011. Caso essas condições são sejam satisfeitas,
o circuito digital vai apresentar na saída um nível lógico baixo.
Figura 7. Descrição funcional do circuito digital com os condicio-
nais (a) if/elsif/else e (b) case/when.
10 Linguagem de descrição de hardware
Uma importante observação sobre os circuitos combinacionais implementados uti-
lizando process é relativa à sua lista de sensibilidade, isto é, aos parâmetros descritos
dentro dos parênteses na declaração do processo (linha 13 da Figura 7a e linha 13
da Figura 7b). A lista de sensibilidade deve conter todas as entradas que são
influentes no circuito descrito pelo processo.
Em resumo, existem diversas formas de descrição de um circuito digital
combinacional por meio da VHDL. Todas essas descrições comportamentais
tendem a gerar um circuito físico igual sob a perspectiva estrutural, fazendo
com que a escolha por uma em detrimento das demais seja uma questão pessoal
do projetista diante do circuito digital que ele precisa descrever.
Circuitos sequenciais
Os circuitos combinacionais possuem as características de serem implemen-
tados essencialmente por portas lógicas, não possuírem a capacidade de reter
dados e, também, quando sujeitos a entradas iguais, sempre gerarem saídas
idênticas. Em contrapartida, os circuitos sequenciais possuem as caracterís-
ticas de serem implementados por portas lógicas associadas a dispositivos de
memória (latches e flip-flops), possuírem a capacidade de retenção de dados, e,
por conta disto, suas saídas dependerem não somente dos estados lógicos das
entradas, mas também dos estados anteriores dos seus elementos de memória,
conforme leciona Tokheim (2013).
Considerando todas essas diferenças, a descrição de circuitos sequenciais
em uma linguagem de descrição de hardware não pode ser igual à descrição de
um circuito combinacional. Nesta seção, serão apresentadas as características
necessárias para a descrição de circuitos sequenciais por meio da linguagem
de descrição de hardware VHDL.
Um dos elementos mais básicos na descrição de circuitos digitais sequenciais
são os registradores do tipo D ( flip-flop). A Figura 8 apresenta a descrição
básica desse elemento lógico, onde você pode observar uma entidade (entity)
composta por portas (port) de entrada (clk e d) e saída (q e qn) do tipo bit.
Essas características são comuns aos circuitos combinacionais e sequenciais,
afinal, a entity tem a função de descrever as interfaces do dispositivo.
Linguagem de descrição de hardware 11
Figura 8. Descrição funcional de um registrador tipo D (flip-flop).
Entretanto, a diferença substancial entre esses tipos de descrição funcional
está na sua arquitetura. Você deve se recordar que um flip-flop tipo D qualquer
atualiza as suas saídas (q e qn) com o estado lógico do dado de entrada (d),
quando o seu sinal de sincronismo (clk) transicionar de nível lógico baixo (0)
para alto (1), isto é, no instante da borda de subida. Nesse contexto, a arqui-
tetura dessa descrição em VHDL apresenta uma sintaxe característica para a
indicação e a necessidade de um circuito sequencial baseado em registradores.
Essa sintaxe pode ser vista na linha 17 da Figura 8, onde existe uma verificação
interna ao processo (process), que analisa se houve uma transição no sinal
de sincronismo de relógio (clk’event) condicionada simultaneamente a uma
borda de subida (clk = ‘1’).
Observe também que, ao contrário dos circuitos combinacionais, a lista de
sensibilidade (linha 15 da Figura 8) não apresenta todas as entradas de dados
do circuito digital. Essa característica descritiva é em função da característica
funcional de um registrador, em que as saídas devem ser atualizadas somente
quando houver uma borda de subida no sinal de sincronismo.
12 Linguagem de descrição de hardware
Existem registradores (flip-flops) sensíveis à borda de descida. Para a descrição funcional
desses circuitos em VHDL, utiliza-se a sintaxe condicional: clk’event and clk=’0’.
Conforme descreve Vahid (2008), as máquinas de estados finitos ( finite
state machine, FSM) são circuitos bastante importantes e frequentes para a
implementação de blocos de controle de circuitos processadores. Esses cir-
cuitos sequenciais, cuja característica funcional tende a ser bastante complexa
(em especial quando apresenta muitos estados lógicos e entradas), podem ser
facilmente descritos em VHDL, reduzindo enormemente o tempo de desen-
volvimento e permitindo, também, a sua rápida adaptação quando eventuais
mudanças de escopo de projeto são necessárias.
A Figura 9a apresenta um exemplo de descrição comportamental em
VHDL de uma FSM cujas funções lógicas foram divididas em dois processos.
O primeiro processo (iniciado na linha 12) é sensível ao sinal de sincronismo
de relógio (clk). Esse elemento descritivo tem a finalidade de modelar os regis-
tradores de estado da FSM; isto é, toda vez que o sinal de relógio transicionar
de nível lógico baixo para nível lógico alto (borda de subida), as saídas dos
registradores (estado) serão atualizadas com o estado lógico das entradas dos
registradores (proximo_estado).
A descrição do segundo processo, iniciado na linha 19 da Figura 9a,
representa os circuitos lógicos combinacionais de decodificação de estados
futuros e decodificação de saída da FSM. Observe que esse processo, por ser
combinacional, apresenta em sua lista de sensibilidade os sinais de entrada
(dado) e estado atual (estado) da FSM. A Figura 9b apresenta um diagrama
de transições da FSM, em que são representados os estados (A, B, C e D), o
bit de entrada (dado) e suas respectivas saídas lógicas (saida).
Linguagem de descrição de hardware 13
Figura 9. (a) Descrição de uma máquina de estados finitos. (b) Diagrama
de estados.
14 Linguagem de descrição de hardware
Observe que foi criado um tipo de dado, denominado tipo_estado, para tornar a
descrição funcional mais intuitiva. Esses tipos de representações de dados não binários
são substituídos por dados binários durante o processo de síntese do circuito.
Componentes dos blocos operacionais
A descrição de blocos operacionais de circuitos processadores, por ter uma
característica estrutural e funcional mais complexa, exige uma abordagem inte-
gradora das potencialidades das HDLs. Ou seja, dependendo das necessidades
de projeto, o desenvolvedor poderá adotar uma descrição que contemple tanto
conceitos estruturais quanto conceitos comportamentais de circuitos digitais.
Somador completo
Conforme apresenta Vahid (2008), a Figura 10 representa a descrição de um
circuito somador completo ( full adder) em VHDL. Descrito por meio de
um processo comportamental, sensível às entradas de dados (a, b e ci), esse
circuito tem a função de realizar a soma binária das entradas, gerando uma
saída composta por dois bits (s e co).
Figura 10. Descrição do circuito somador em VHDL.
Fonte: Vahid (2008, p. 485).
Linguagem de descrição de hardware 15
As descrições apresentadas nesta seção utilizam os tipos de dado Standard Logic.
Esse padrão de dados não é nativo da linguagem VHDL e, por conta disso, exige a
declaração de sua biblioteca:
library ieee;
use ieee.std_logic_1164.all;
Somador com propagação de carry
O circuito somador completo é um elemento clássico no estudo da eletrônica
digital, entretanto, sua capacidade de soma é reduzida a operações de 1 bit,
isto é, à soma binária dos elementos a, b e ci. Circuitos processadores exigem
operações binárias com palavras de dados maiores, o que provoca a busca por
implementações que atendam a essa demanda técnica. O emprego de circuitos
estruturais hierárquicos é uma estratégia recorrente no processo de descrição
de circuitos digitais dessa natureza.
A Figura 11, descrita por Vahid (2008), apresenta o exemplo de um circuito
digital somador com propagação de carry (“vai-um”), descrito por meio de
uma abordagem hierárquica estrutural. Nessa abordagem, quatro somadores
completos, definidos no item anterior, são reutilizados e associados para
gerar um somador com capacidade de realizar operações com dados de 4 bits,
denominado SomadorDeVaiUmPropagado4.
16 Linguagem de descrição de hardware
Figura 11. Descrição estrutural de um somador de 4 bits com pro-
pagação de carry.
Fonte: Vahid (2008 p. 487).
Observe, na Figura 11, que a região de declarações da arquitetura apresenta,
além da declaração de sinais de interconexão (co1, co2 e co3), a declaração do
componente “SomadorCompleto” (esse somador foi definido na Figura 10). Essa
declaração de componente (component) é fundamental para que as instâncias
do somador completo (SomadorCompleto), utilizadas na arquitetura para gerar
um somador de 4 bits, sejam reconhecidas pela ferramenta de síntese como
um bloco válido. Essas instâncias foram denominadas SomadorCompleto1,
SomadorCompleto2, SomadorCompleto3 e SomadorCompleto4, conforme
apresentado na Figura 11.
Observe também que na entidade do circuito SomadorDeVaiUmPropagado4
(Figura 11), algumas entradas e saídas foram definidas como “std_logic_vec-
tor”. Conforme define Vahid (2008), o emprego de vetores é uma importante
ferramenta de simplificação no processo de descrição de circuitos digitais
por meio de HDLs. Entretanto, como a estrutura lógica do somador completo
realiza operações utilizando dados de apenas um bit, os acessos aos dados
desses vetores são realizados considerando os elementos de forma individual.
Linguagem de descrição de hardware 17
O princípio de desenvolvimento desse bloco operacional integra, além do
desenvolvimento hierárquico estrutural, a prática de reutilização de circuitos
digitais descritos em VHDL. Observe, ainda, na Figura 11, que os sinais de
entrada da entidade são conectados nos blocos somadores completos, e seus
respectivos bits de carry out (vai-um) são associados ao sucessivo bloco soma-
dor completo. Isto é, existe uma cadeia de propagação de dados formada pelos
bits de carry dos somadores completos. Essa associação pode ser observada
no diagrama de blocos apresentado na Figura 12.
Figura 12. Diagrama de blocos equivalente do somador de 4 bits.
Contador crescente
O circuito contador de 4 bits apresentado na seção anterior, embora seja um inte-
ressante exemplo de projeto de bloco operacional, apresenta uma característica
puramente combinacional. Circuitos sequenciais também podem utilizar essa
abordagem de descrição em HDLs, como o contador crescente apresentado no
diagrama da Figura 12. Observe que esse circuito possui uma interface composta
por uma entrada de sincronismo de relógio (clk), uma entrada de habilitação de
incremento de contagem (cnt), uma saída de dados de 4 bits relativa à contagem
(C) e uma saída indicativa relativa ao término da contagem (tc).
18 Linguagem de descrição de hardware
Figura 13. Diagrama de blocos de um contador crescente.
Fonte: Adaptada de Vahid (2008).
A estrutura interna do circuito contador possui um registrador de carga,
um elemento de incremento interno e uma porta lógica AND com quatro
entradas. Conforme define Vahid (2008), o funcionamento básico do circuito
contador crescente respeita o sequenciamento de ações e condições a seguir:
os dados atuais do registrador de carga de 4 bits (C) são inseridos na
entrada do bloco de incremento unitário;
o bloco de incremento unitário realiza a leitura desses dados do regis-
trador de carga (C), gerando em sua saída um novo dado de 4 bits na
entrada do registrador de carga;
quando um sinal de relógio (clk) possui uma transição de borda de
subida, e o sinal de habilitação (cnt) de contagem está em nível lógico
alto, os dados do registrador de 4 bits são atualizados, fazendo com
que todos os passos anteriores sejam repetidos;
quando o valor da saída do registrador de carga (C) atinge o seu valor
máximo (1111), a entrada da porta lógica AND receberá em todas as suas
quatro entradas nível lógico alto, fazendo com que a saída de indicativa
de término de contagem (tc) receba nível lógico alto.
Linguagem de descrição de hardware 19
A Figura 14 apresenta a descrição em VHDL estrutural denominada Conta-
dorCrescente, relativa ao circuito contador apresentado no diagrama de blocos
da Figura 13. Observe que a descrição da entidade possui quatro elementos:
uma porta de entrada de sincronismo de relógio (clk), uma porta de habilitação
de contagem (cnt), uma saída vetorial de dados para apresentação da contagem
(C) e, por fim, uma porta de saída para indicação de término de contagem
(tc). Na arquitetura do circuito apresentada na Figura 13, foram declarados os
componentes Reg4, Inc4 e AND4, que, respectivamente, referem-se aos blocos
lógicos do registrador de carga de 4 bits, ao bloco de incremento unitário e a
uma porta lógica AND de quatro entradas.
Figura 14. Descrição estrutural de um contador crescente
de 4 bits.
Fonte: Vahid (2008, p. 490).
20 Linguagem de descrição de hardware
Observe também que existem dois sinais vetoriais de 4 bits declarados na
arquitetura (Ctemp e Cinc). Esses sinais de interconexão interna são necessários
para a realização das conexões entre os blocos e a geração da realimentação
entre o registrador de carga de 4 bits e o bloco de incremento unitário. Afinal,
em VHDL, não é possível realizar a leitura de uma porta de saída.
No sentido de simplificar a descrição desta seção, os elementos Reg4,
Inc4 e AND4 não foram apresentados neste capítulo. Entretanto, é importante
lembrar que todos os blocos devem ser descritos e adicionados ao projeto para
a realização do processo de síntese do circuito com sucesso.
Projeto RTL
A Figura 15 apresenta o diagrama de uma máquina de estados em alto nível,
definida por Vahid (2008), que representa o comportamento funcional do
sistema de medição de distâncias por feixe de laser. Cabe ressaltar que algumas
simplificações foram adotadas para facilitar a implementação, como utilizar um
sinal de relógio com 300MHz, para garantir que cada incremento do contador
representasse um metro de distância. Outra questão relevante está relacionada
ao cálculo algébrico para obtenção da distância D. Como o tempo medido pelo
contador Dctr é referente ao envio do feixe e ao seu tempo de reflexão, o valor
do contador deve ser dividido por dois para a obtenção da distância correta.
Figura 15. Máquina de estados em alto nível.
Fonte: Vahid (2008 p. 250).
Linguagem de descrição de hardware 21
Em resumo, o comportamento funcional da máquina de estados em alto
nível apresentada na Figura 15 apresenta as seguintes características.
No estado inicial S0, a máquina de estados desliga o laser (L) e zera
o barramento (D); depois desses eventos, ocorre a transição para o
estado S1.
No estado S1, o contador de tempo Dctr é zerado, e a máquina fica à
espera do botão B ser pressionado. Quando o botão B for pressionado
(B = 1), a máquina de estados realiza uma transição para o estado S2.
No estado S2, o feixe de laser L é ativado, e a máquina de estados
realiza uma transição para o estado S3.
No estado S3, o feixe de laser L é desativado. A máquina de estados
permanecerá no estado S3 enquanto o sensor não receber o reflexo do
feixe de laser (S = 0). Para cada evento de relógio nessa condição, o
contador de tempo Dctr é incrementado de forma unitária. Quando o
sinal de reflexo S for detectado (S = 1), a máquina de estados realiza
uma transição para o estado S4.
No estado S4, a saída D é carregada com o valor da contagem de tempo
Dctr dividido por dois, e a máquina de estados realiza uma transição
para o estado S1, permanecendo assim até que o botão B seja pressio-
nado novamente.
Ainda seguindo o exemplo do medidor de distância por feixe de laser,
apresentado por Vahid (2008), as conexões entre o bloco operacional e o bloco
de controle são apresentadas na Figura 16. Observe que as entradas e saídas
de controle (B, L e S) são conectadas ao bloco de controle, e a saída de dado
D, ao bloco operacional. Em geral, não são apresentados os sinais de relógio
nesses diagramas, entretanto, como a frequência de operação desse exemplo
é fundamental para o cálculo adequado da distância, a referência de relógio
de 300 MHz é destacada no diagrama da Figura 16.
22 Linguagem de descrição de hardware
Figura 16. Conexão entre os blocos operacional e de controle.
Fonte: Vahid (2008, p. 254).
Bloco de controle e operacional
A Figura 17 apresenta a descrição estrutural do circuito medidor de dis-
tâncias exemplificado por Vahid (2008), em que as interfaces da entidade
(MedidorDistanciaLaser) possuem uma porta de entrada relativa à indicação
de início da medição (B), uma porta para o sensor responsável pela recepção
da reflexão do sinal do laser (S), uma porta de saída para acionamento do
feixe de laser (L) e uma saída vetorial de 16 bits para a indicação ao usuário
da distância medida (D). Além desses sinais relativos à aplicação, foram
descritas também as portas de entrada dos sinais de referência de relógio
(clk) e reset (rst) do sistema.
Como esperado, em circuitos desenvolvidos por meio da metodologia
de projeto em nível de transferência de registradores (register transfer
level, RTL), a descrição VHDL desse circuito processador possui dois
componentes básicos (Figura 15): um bloco de controle (BlocoDeCon-
trole_ MDL) e um bloco operacional (BlocoOperacional_ MDL). Esses
blocos são definidos na região de declarações da arquitetura e, posterior-
mente, instanciados sob os respectivos nomes: BlocoDeControle_ MDL_1
e BlocoOperacional_ MDL_1.
Linguagem de descrição de hardware 23
Figura 17. Descrição estrutural do projeto RTL.
Fonte: Vahid (2008, p. 499).
Embora esse circuito tenha um caráter didático, sua estrutura já apresenta
um nível de complexidade que impõe a sua descrição por meio de uma abor-
dagem que integra uma descrição tanto estrutural quanto comportamental.
A Figura 18 apresenta a descrição estrutural do bloco operacional, em que é
possível observar tanto a declaração quanto a instanciação do bloco contador
(ContadorCrescente16), responsável pela contagem da medição da distância,
do bloco registrador (Reg16), necessário para o armazenamento do dado, e,
por fim, do bloco de deslocamento (DeslocadorDireitaUm16), necessário para
a divisão da distância medida por dois.
24 Linguagem de descrição de hardware
Figura 18. Descrição estrutural do bloco operacional.
Fonte: Vahid (2008, p. 500).
A Figura 19 apresenta a descrição comportamental em VHDL da FSM
do circuito medidor de distância por feixe de laser. Observe que esse circuito
digital de controle, denominado “BlocoDeControle_MDL”, possui dois pro-
cessos com características distintas.
Linguagem de descrição de hardware 25
Figura 19. Descrição comportamental em VHDL do bloco de controle.
Fonte: Adaptada de Vahid (2008).
26 Linguagem de descrição de hardware
O primeiro processo é relativo à criação e ao modelamento dos registradores
de estado atual da FSM. Toda vez que ocorrer uma transição de subida no sinal
de sincronismo de relógio (clk), o estado atual da FSM (estadoatual) receberá
uma atualização definida pelo próximo estado decodificado (proximoestado).
Já o segundo processo descrito no bloco de controle possui uma característica
puramente combinacional, sendo a sua função decodificar, com base no estado
atual (estadoatual) e nas condições das entradas lógicas do bloco, o estado
futuro da FSM (proximoestado) e as respectivas saídas do bloco de controle.
Em resumo, as linguagens de descrição de hardware são uma importante
ferramenta no processo de desenvolvimento de circuitos digitais, sobretudo
em circuitos com características comportamentais e/ou estruturais complexas.
Nesses casos, o emprego das HDLs contribui decisivamente para a otimização
do desenvolvimento, para a modularização do projeto e para a garantia de uma
fácil manutenção dos circuitos já desenvolvidos.
D'AMORE, R. VHDL: descrição e síntese de circuitos digitais. 2. ed. Rio de Janeiro: LTC, 2015.
TOCCI, R. J. Sistemas digitais: princípios e aplicações. 11. ed. São Paulo: Pearson Prentice
Hall, 2011.
TOKHEIM, R. Fundamentos de eletrônica digital: sistemas combinacionais. 7. ed. Porto
Alegre: AMGH, 2013.
VAHID, F. Sistemas Digitais: projeto, otimização e HDLs. Porto Alegre: Bookman, 2008.
Leituras recomendadas
BIGNELL, J. W.; DONOVAN, R. Eletrônica digital. São Paulo: Cengage Learning, 2009.
HOROWITZ, P. A arte da eletrônica: circuitos e eletrônicos e microeletrônica. 3. ed. Porto
Alegre: Bookman, 2017.
PEDRONI, V. Eletrônica digital moderna com VHDL. Rio de Janeiro: Elsevier, 2010.
SCHULER, C. Eletrônica II. 7. ed. Porto Alegre: AMGH, 2013.
SEDRA, A. S.; SMITH, K. C. Microeletrônica. 5. ed. São Paulo: Pearson Prentice Hall, 2007.
VAHID, F. Linguagens de descrição de hardware. In: VAHID, F. Sistemas digitais: projeto,
otimização e HDLs. Porto Alegre: Bookman, 2008.
TOKHEIM, R. Fundamentos de eletrônica digital: sistemas sequenciais. 7. ed. Porto Alegre:
AMGH, 2013. v. 2.
DICA DO PROFESSOR
O emprego das linguagens de descrição de hardwares (hardware description language – HDL)
tornou a tarefa de desenvolvimento de circuitos digitais muito mais ágil e confiável. Essa
afirmação se torna mais evidente quando compara-se a atual metodologia, baseada em HDLs,
com a metodologia anterior, baseada no desenvolvimento de circuitos digitais através de
diagramas esquemáticos.
Todavia, o processo de descrição exige, por parte do projetista, o respeito à sintaxe básica
e atenção a uma série de cuidados característicos das linguagens de descrição de hardwares.
Nesta Dica do Professor, você verá a importância da lista de sensibilidades durante o processo
de descrição de circuitos combinacionais, bem como os seus impactos funcionais.
Conteúdo interativo disponível na plataforma de ensino!
EXERCÍCIOS
1) Considerando que a imagem a seguir apresenta a descrição VHDL comportamental de um
circuito digital puramente combinacional, determine a tabela verdade equivalente ao
circuito digital.
A)
B)
C)
D)
E)
2) Considerando que a figura a seguir apresenta a descrição VHDL comportamental de um
circuito digital puramente combinacional, determine a tabela verdade equivalente às saídas
‘c’, ‘d’, ‘e’ e ‘f’’ do circuito digital.
A)
B)
C)
D)
E)
3) Considerando o comportamento lógico da descrição VHDL apresentada na figura a
seguir, determine a tabela verdade do circuito elemento registador modelado através
de uma linguagem de descrição de hardware.
A)
B)
C)
D)
E)
4) A figura a seguir apresenta a descrição comportamental de um circuito digital sequencial
com característica funcional de uma máquina de estados finitos (finite state machine –
FSM). Determine o diagrama de transições dos estados da FSM relativo ao circuito da
figura.
A)
B)
C)
D)
E)
5) A figura a seguir apresenta a descrição comportamental de um circuito digital sequencial
com característica funcional de uma máquina de estados finitos (finite state machine –
FSM). Determine o diagrama de transições dos estados da FSM relativa ao circuito da
figura.
A)
B)
C)
D)
E)
NA PRÁTICA
O processo de implementação e de desenvolvimento de circuitos digitais é uma tarefa
muito complexa, sobretudo quando trabalha-se em projetos de circuitos com muitas
características funcionais.
Todavia, o processo de desenvolvimento torna-se ineficaz e não confiável se o desenvolvedor do
circuito não tiver garantias mínimas de que o seu projeto atende às especificações funcionais
definidas no início.
Veja, neste Na Prática, a importância do processo de verificação funcional de circuitos digitais
implementados através das linguagens de descrição de hardware (hardware description
language – HDL), além de exemplos comerciais dessas ferramentas de análise de circuitos
digitais.
SAIBA MAIS
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do
professor:
Xilinx ISE Project Navigator 13.2 - Tutorial: criação de projetos
Neste vídeo, você vai aprender a criar um projeto para compilação e síntese de circuitos digitais
descritos em VHDL, na ferramenta ISE Project Navigator da Xilinx®:
Conteúdo interativo disponível na plataforma de ensino!
VHDL - Aula 1- Estrutura de código
Uma ferramenta comercial muito popular para o processo de compilação e de síntese de
circuitos digitais é o Quartus da Altera®. Neste vídeo, você vai aprender a criar um projeto na
ferramenta Quartus, entendendo as suas funcionalidades básicas.
Conteúdo interativo disponível na plataforma de ensino!
Introdução ao Molelsim
O processo de simulação de circuitos é muito importante para a validação comportamental do
seu projeto em VHDL. Este vídeo apresenta uma introdução à ferramenta de simulação
comportamental Modelsim®, Simulador da Menthor®.
Conteúdo interativo disponível na plataforma de ensino!