Você está na página 1de 156

Circuitos Lógicos

Material Teórico
Circuitos Lógicos

Responsável pelo Conteúdo:


Prof. Ms. Fábio Peppe Beraldo

Revisão Textual:
Profa. Esp. Márcia Ota

Revisão Técnica:
Prof. Ms. Rodrigo da Rosa
Circuitos Lógicos

• Introdução
• Sistemas
• Circuitos Digitais/Circuitos Lógicos
• Sistema de Numeração
• Medição de Desempenho de Computadores

OBJETIVO DE APRENDIZADO
· O objetivo dessa unidade é de levar ao aluno o conhecimento da
evolução tecnológica e, então este passará a estudar os conceitos
de sistemas de numeração o que o tornará apto a realizar distin-
ções tecnológicas e também a fazer conversões matemáticas entre
sistemas numéricos.

ORIENTAÇÕES
Nesta Unidade, aprenderemos um pouco mais sobre o trabalho com
Circuitos Lógicos, sua evolução e importância, bem como iniciaremos o
nosso primeiro tópico de estudo: os sistemas de numeração.

Desse modo, leia o material com atenção e, se sentir necessidade, releia


para que sua absorção seja adequada. Fique atento (a) nessa etapa, pois é
o momento oportuno para registrar suas dúvidas; por isso, não deixe de
registrá-las e transmiti-las ao professor-tutor.

Além disso, para que a sua aprendizagem ocorra num ambiente mais
interativo possível, na pasta de atividades, você também encontrará as
atividades de avaliação, uma atividade reflexiva e a videoaula. Cada material
disponibilizado é mais um elemento para seu aprendizado. Por favor, estude
todos com atenção!

Bom Estudo!!!
UNIDADE Circuitos Lógicos

Contextualização
Atualmente, o termo digital é tão comum em nosso palavreado que nem
pensamos o que essa palavra realmente significa, mas o mais importante é que
esse termo torna possível o funcionamento de elementos como computadores,
robôs, médicos eletrônicos, transportes, entretenimento, dentre muitos outros.
Nesta unidade, você verá vários elementos desse mundo digital, além de novos
conhecimentos que ampliarão seu conhecimento da área.

Quando trabalhamos com números, mais especificamente, quando trabalhamos


com as representações digitais dos números, estamos quantificando por
comparação ou proporcionalidade, elementos de cálculo por símbolos chamados
dígitos. Podemos usar como exemplo um relógio digital, onde as horas do dia são
representadas por dígitos decimais e esses valores são comuns em qualquer lugar
do mundo; dessa forma, tornando o método de medição único.

A representação pode ser digital ou analógica, sendo na analógica feita de forma


contínua e na digital, feita passo a passo ou mais tecnicamente de forma discreta.

6
Sistemas
Utilizamos o termo sistema digital quando há uma combinação de dispositivos
projetados para lidar com informações lógicas ou com quantidades físicas
representadas de forma digital, ou seja, as quantidades trabalhadas só podem
assumir valores discretos. Os dispositivos que trabalham dessa forma são em sua
grande maioria dispositivos eletrônicos. Pode-se exemplificar um sistema digital
por um equipamento audiovisual ou telefônico.

Quando trabalhamos com o termo sistema analógico, estamos falando de


dispositivos que podem manipular quantidades físicas que são representadas de
forma analógica, onde as quantidades físicas acabam variando sobre um intervalo
contínuo de valores, como, por exemplo, a amplitude do sinal de saída de um
receptor de rádio que pode ter uma gama de valores de zero até milhares.

Claro que se existem duas frentes de trabalho, uma tem mais vantagem que a
outra, como mostrado a seguir:
• Sistemas digitais são mais fáceis de projetar: Isto se deve ao fato de que
os circuitos utilizados são circuitos de chaveamento, em que os valores exatos
de tensão ou corrente não são importantes, mas apenas o intervalo (ALTO ou
BAIXO), no qual eles se localizam.

7
7
UNIDADE Circuitos Lógicos

• Fácil armazenamento de informação: Isto é alcançado por circuitos de


chaveamento especiais, capazes de capturar a informação e guardá-la pelo
tempo que for necessário.
• Maior exatidão e precisão: Sistemas digitais podem manipular quantos
dígitos de precisão forem necessários, para o que, basta adicionar um número
maior de circuitos de chaveamento. Em sistemas analógicos, a precisão está,
geralmente, limitada a três ou quatro dígitos, porque os valores de corrente
e tensão são diretamente dependentes dos valores dos componentes dos
circuitos e também são afetados por flutuações randômicas (ruído).
• A operação do sistema pode ser programada: É bastante simples projetar
sistemas digitais, cuja operação pode ser controlada por um conjunto de
instruções, constituindo um programa. À medida que a tecnologia avança, a
programação de sistemas vem se tornando cada vez mais simples. Sistemas
analógicos também podem ser programados; entretanto, a variedade e a
complexidade das operações disponíveis são bastante limitadas.
• Circuitos digitais são menos afetados pelo ruído: Flutuações na tensão
(ruído) não são tão críticas em sistemas digitais porque o valor exato da tensão
não é tão importante, desde que a amplitude do ruído também não seja tão
grande que nos impeça de distinguir corretamente os níveis lógicos.
• Um maior número de circuitos digitais pode ser colocado em um circuito
integrado: É verdade que circuitos analógicos também foram beneficiados com
o grande desenvolvimento da tecnologia de fabricação de circuitos integrados,
mas sua complexidade e a utilização de componentes economicamente
inviáveis de serem integrados (capacitores de alto valor, resistores de precisão,
indutores, transformadores) têm impedido que sistemas analógicos alcancem
o mesmo nível de integração.

Se há vantagens, podemos esperar também algumas desvantagens. No mundo


real, quase tudo é medido de forma analógica, sendo as medições operadas e contro-
ladas por um tipo de sistema. São elas: a temperatura, a pressão, posicionamento,
velocidade, entre muitos outros. Você pode até achar que não, mas quando você
determina uma hora ou uma temperatura, você está, na verdade, fazendo uma apro-
ximação digital de uma grandeza inerentemente analógica.

Para tirarmos alguma vantagem digital de medições analógicas, temos que


seguir alguns passos, como converter as entradas analógicas para digital, processar
a informação digital e converter as saídas digitais de volta à forma analógica.

A Figura1 mostra um diagrama de blocos de um típico sistema de controle de


temperatura. Como se pode ver no diagrama, a temperatura é medida por um
dispositivo analógico e o valor medido é, então, convertido para uma representação
na forma digital por um conversor analógico-digital (conversor A/D).

8
(Analógico) (Digital)
Temperatura Dispositivo de Conversor Processamento
(Analógico) medição analógico-digital digital

(Digital)

Conversor (Analógico) AJuste de


Controlador
digital-analógico temperatura

Figura1: Diagrama de blocos de um sistema de controle de temperatura que utiliza técnicas


de processamento digital, possíveis graças às conversões analógico-digitais.
Fonte: Ronald J. Tocci; Sistemas Digitais – Princípios e Aplicações.

Em seguida, este valor é processado por um circuito digital que pode incluir ou
não um computador digital. A saída digital é, então, convertida de volta à forma
analógica por um conversor digital-analógico (conversor D/ A). Esta saída analógica
é fornecida como entrada a um controlador que realiza algum tipo de ação para
ajustar a temperatura.

A necessidade de conversão entre formas analógicas e digitais pode ser


considerada uma desvantagem por causa do seu custo e complexidade adicionais.
Um outro fator que, geralmente, é importante é o tempo extra necessário para
realizar estas conversões. Em muitas aplicações, esses fatores são compensados
pelas numerosas vantagens de usarmos técnicas digitais, em razão das quais a
conversão entre quantidades digitais e analógicas tomou-se algo bastante comum
na tecnologia atual.

Existem situações, entretanto, em que a utilização de técnicas analógicas é mais


simples e econômica. Por exemplo: a amplificação de sinais é mais facilmente re-
alizada com o auxílio de circuitos analógicos. É comum observar as técnicas analó-
gicas e digitais serem utilizadas em um mesmo sistema de modo a se tirar proveito
das vantagens de cada uma das técnicas. Nesses sistemas híbridos, uma das mais
importantes etapas do projeto é determinar em que partes devem ser empregadas
as técnicas analógicas e aquelas em que devem ser utilizadas técnicas digitais.

Circuitos Digitais/Circuitos Lógicos


Os circuitos digitais são sempre projetados para produzir tensões de saída que
estejam dentro dos intervalos predeterminados para os binários 0 e 1, além de
também serem utilizados na resposta a essas tensões, ou seja, um circuito digital
responderá do mesmo modo a todas as tensões de entrada que estiverem dentro
do intervalo permitido para o 0; de maneira semelhante, ele não distinguirá entre
tensões de entrada que estejam dentro do intervalo permitido para 1.

9
9
UNIDADE Circuitos Lógicos

Na Figura 2, você encontra uma representação de um circuito digital com


entrada Vi e saída V0. É possível identificar na figura que o V0 é idêntico em ambos
os casos, uma vez que as duas fontes de entrada de sinal possuem diferentes
valores de tensão; logo, elas possuem o mesmo valor binário.

Caso I
5V
vi
0V
t

4V
vo
0V

vi Circuito
vo Caso II
digital

vi
0.5 V
t

vo 4V
0V

Figura 2: Um circuito digital responde a um nível binário (O ou 1) e não ao valor exato da tensão de entrada.
Fonte: Ronald J. Tocci; Sistemas Digitais – Princípios e Aplicações.

Chamamos de lógica do circuito a forma como um circuito digital responde a uma


entrada. Cada tipo de circuito digital obedece a um determinado conjunto de regras
lógicas e por essa razão também chamamos os circuitos digitais de circuitos lógicos.

Quase todos os circuitos digitais existentes nos sistemas digitais modernos são
circuitos integrados (CIs). A grande variedade de CIs lógicos disponível tornou
possível a construção de sistemas digitais complexos menores e mais confiáveis do
que aqueles construídos com circuitos lógicos discretos.

Sistema de Numeração
Os processadores têm por função básica executar operações matemáticas como
a soma, subtração, divisão, dentre outras mais complexas. Para tanto, foram criadas
diversas formas para se tentar reproduzir tais funções no computador, sendo a mais
comum a notação posicional.

Conceitualmente falando, na notação posicional, os algarismos assumem valores


diferentes de acordo com a posição relativa dele, sendo o valor total do número a

10
soma dos valores relativos de cada algarismo. Assim sendo, dependendo do sistema
de numeração adotado, a quantidade de algarismos que o compõe é chamada de
base e, assim, chegamos à famosa conversão de bases.
Pode parecer estranho esse conceito, pois a cultura ocidental não utiliza a
notação posicional, pois esta é característica dos numerais hindu-arábicos. No
sistema ocidental, basta relacionarmos um valor a outro e pronto. Para tanto,
convencionou-se dez algarismos (0,1,2,3,4,5,6,7,8,9) que chamamos de sistema
decimal. Em outras palavras, a base de um sistema é a quantidade de algarismos
que esse sistema possui; logo, no ocidente, utilizamos um sistema de base 10,
bem como há o sistema binário que possui base 2 (0 e 1) utilizado como base da
linguagem computacional.

Para descobrirmos um número de uma base (x), simplesmente, utilizamos o Teorema


Fundamental da Numeração, representado por:
n −1
N10 = ∑ d x b
i =− m
i

Onde:
N = número equivalente na base 10;
d = dígito;
b = base (em outro sistema de numeração);
i = índice do dígito ou expoente da base “b”;
m = quantidade de dígitos à direita da vírgula;
n = quantidade de dígitos à esquerda da vírgula.

Fonte: https://goo.gl/DbIjPQ

Vamos usar, como exemplo, uma conversão do sistema binário para decimal:
• 101,012 (onde b=2, m=2, n=3) temos:
• N10 = 1 x 22 + 0 x 21 + 1 x 20 + 0 x 2–1 + 1 x 2–2
• N10 = 4 + 0 + 1 + 0 + 0.25
• N10 = 5.25
Veremos, agora, uma conversão do sistema octal para decimal:
• 10118 (onde b=8, n=4) temos:
• N10 = 1 x 83 + 0 x 82 + 1x 81 + 1 x 80
• N10 = 512 + 0 + 8 + 1
• N10 = 521
Veremos, agora, uma conversão do sistema Hexadecimal para decimal:
• 101116 (onde b=16, n=4) temos:
• N10 = 1 x 163 + 0 x 162 + 1 x 161 + 1 x 160
• N10 = 4096 + 0 + 16 + 1
• N10 = 4113

11
11
UNIDADE Circuitos Lógicos

Em nosso material complementar, temos o link para um jogo da Cisco de conversões entre
Explor

binário e decimal, jogue e veja até onde chega, será uma forma bastante competitiva de
aprender. Será que você consegue raciocinar como uma máquina?

De forma muito mais fácil que a conversão para o sistema decimal, a conversão
do sistema decimal para outro é realizada dividindo o valor inteiro ou multiplicando o
valor fracionário até que se chegue ao inteiro, que se quer converter sucessivamente
pelo valor da base para a qual se quer converter. Vamos verificar os exemplos:

Pegando o valor 37,125, dividimos primeiro o inteiro:

3710 → ?2
• 37 ÷ 2 = 18, resta 1
• 18 ÷ 2 = 9, resta 0
• 9 ÷ 2 = 4 resta 1
• 4 ÷ 2 = 2, resta 0
• 2 ÷ 2 = 1, resta 0

Se pegarmos o resultado da última divisão e de ordem retroativa o resto de cada


outra divisão, teremos o valor no sistema binário; 3710 → 1001012.

Agora, pegamos a parte fracionária para dividir:

37,(125)10 → ?2
• 0,125 × 2 = 0,25, fração de 0
• 0,25 × 2 = 0,50, fração de 0
• 0,50 × 2 = 1,00, inteiro 1

Se pegarmos a representação do digito anterior à vírgula, de forma consecutiva,


teremos como resultado 37,(125)10 → 37,(001)2; adicionando o valor descoberto
do valor inteiro, temos, então, 37,12510 → 100101,0012.

Agora, falta vermos as conversões do sistema Binário para o Octal e Hexade-


cimal. A conversão de base 2 para base 8 se dá da seguinte forma:
• na parte inteira, deve-se formar grupos de três dígitos à esquerda,
complementando-se com zeros;
• na parte fracionária, deve-se formar grupos de três dígitos à direita,
complementando-se com zeros. Essa conversão deve utilizar a tabela de
conversão para identificar o valor que cada grupo representa.

12
Tabela 1: Tabela de conversão de sistemas
Decimal Binário Octal Hexadecimal
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
Fonte: Elaborado pelo autor.

Vamos usar, como exemplo de conversão, o seguinte valor binário:


• 010101,0101002 → ?8
• 010 = 2 101 = 5 010 = 2 100 = 4

Assim, temos:
• 010101,0101002 → 25,248

A conversão do sistema Binário para Hexadecimal se dá igualmente à conversão


para Octal, apenas usando grupos de quatro dígitos à esquerda e à direita, ao invés
de três, utilizando a mesma tabela, veja o exemplo:
• 11001011101,11110112 → ?16
• 0110=6 0101=5 1101=D 1111=F 0110=6

Assim, temos:
• 11001011101,11110112 → 65DF616

Essas são as conversões mais utilizadas dentre a área de programação para


entender melhor as linguagens de baixo nível. A seguir, na unidade, veremos outras
formas de leitura e medição, mas, dessa vez, de desempenho de processamento.

13
13
UNIDADE Circuitos Lógicos

Medição de Desempenho de Computadores


O desempenho de qualquer hardware computacional tem duas perspectivas
de extrema importância para seus fabricantes: a perspectiva do fabricante do
hardware que pretende evolucionar o mercado com melhorias de desempenho dos
seus componentes e a perspectiva do usuário que pretende realizar comparações
entre sistemas distintos, ou seja, quem tiver a melhor tecnologia para o objetivo
específico do usuário e, por fim, ganhar a confiança deste, será a empresa com
maior lucro que, no fim das contas, é o objetivo de qualquer empresa.

A medição do desempenho dos computadores é, geralmente, feita por


comparação entre sistemas de hardware diferentes, no qual aquele com menor
tempo de execução é considerado o mais potente e mais desejado.

Para essa execução, alguns elementos são levados em consideração como a


“latência” ou “Tempo de Execução”, que é o intervalo de tempo entre o início e
o fim de uma tarefa. Há também o “throughput” que é o trabalho feito durante
um dado tempo, ou seja, quantas tarefas, determinado processador consegue
executar em um tempo específico. O sistema de hardware ideal é aquele com alto
throughput e baixa latência, ou seja, maior quantidade de tarefas realizadas por
tempo específico e menor tempo de execução.

Antes de iniciarmos os trabalhos com instruções na próxima unidade,


devemos compreender alguns conceitos sobre desempenho de computadores. O
Desempenho do Sistema refere-se ao tempo de execução de um programa com
o sistema sem nenhuma carga de processamento. Há também o Desempenho de
Processamento que se refere ao tempo do processamento para as tarefas.

É função do projetista de hardware otimizar o desempenho do computador,


reduzindo o tempo de processamento, bem como é função do programador
reduzir o número de ciclos que um programa consome para executar determi-
nada tarefa.
Essa eterna batalha do engenheiro de hardware e do programador pelo melhor
desempenho é dada pela equação ciclo/instrução chamado CPI (Cycles Per
Instruction) que nada mais é que o valor médio da quantidade de tempo necessário
para processamento pelo número de instruções que serão processadas. Dizemos
que é uma média, pois instruções diferentes podem demorar tempos diferentes.

De uma forma bem simplificada (por enquanto), pode-se definir o tempo de


execução de um programa pela equação:
instruções ciclos segundos segundos
tempo = × × =
programa instrução ciclo programa

14
Explor
Clube do Hardware – Programas para teste de Desempenho
Visitando o endereço abaixo, você encontrará dezenas de aplicações para medição de
desempenho do sintético e aplicação. Acesse, explore, conheça e experimente para se
familiarizar com as ferramentas mais adequadas a cada situação:
https://goo.gl/97WRmi

Nas próximas unidades, vamos explorar mais profundamente os conceitos


de instrução e CPU, os quais vão necessitar dos conhecimentos aqui estudados;
então, não deixe de exercitar e participar dos fóruns para sanar todas suas dúvidas.
Nos vemos lá, abraços!

15
15
UNIDADE Circuitos Lógicos

Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:

Sites
The National Museum of Computing
http://www.tnmoc.org/
Cisco Binary Game
https://goo.gl/gbFkSU
TECMUNDO - O que são FLOPS?
https://goo.gl/G4l8pD

Livros
Eletrônica Digital Moderna e VHDL
PEDRONI, A. V., Eletrônica Digital Moderna e VHDL, 1a edição, Ed. Campus

16
Referências
IDOETA, I. V., CAPUANO, F. G., Elementos de Eletrônica Digital, Ed. Érica,
Ed. 40, 2000.

SEDRA A., S. et all: Microeletrônica, Ed. Makron Books, 1994.

TOCCI, Ronald J., Sistemas Digitais – Princípios e Aplicações., Editora. Person,


Ed. 10º, 2008.

17
17
Circuitos Lógicos
Material Teórico
Aritmética Binária

Responsável pelo Conteúdo:


Prof. Ms. Fábio Peppe Beraldo

Revisão Textual:
Profa. Esp. Márcia Ota

Revisão Técnica:
Prof. Ms. Rodrigo da Rosa
Aritmética Binária

• Representação De Variáveis Binárias


• O Transistor, Estrutura Básica
• Estrutura e Operação de Portas CMOS
• Portas Lógicas
• O Retardo de Propagação

OBJETIVO DE APRENDIZADO
· Esta unidade objetiva capacitar o aluno na identificação de
representações de variáveis binárias, estrutura básica de um transistor,
estrutura e operação de portas CMOS, portas NOT, NAND, NOR,
portas complexas, retardo de propagação.

ORIENTAÇÕES
Nesta Unidade, aprenderemos um pouco mais sobre o trabalho com
aritmética binária dos circuitos lógicos, bem como representações de va-
riáveis binárias, estrutura básica de um transistor, estrutura e operação
de portas CMOS, portas NOT, NAND, NOR, portas complexas, retardo
de propagação.

Desse modo, leia o material com atenção e, se sentir necessidade, releia


para que sua absorção seja adequada. Fique atento (a) nessa etapa, pois é
o momento oportuno para registrar suas dúvidas; por isso, não deixe de
registrá-las e transmiti-las ao professor-tutor.

Além disso, para que a sua aprendizagem ocorra num ambiente mais
interativo possível, na pasta de atividades, você também encontrará as
atividades de avaliação, uma atividade reflexiva e a videoaula. Cada material
disponibilizado é mais um elemento para seu aprendizado, por favor, estude
todos com atenção!

Bom Estudo!
UNIDADE Aritmética Binária

Contextualização
Atualmente, o termo digital é tão comum em nosso palavreado que nem
pensamos o que essa palavra realmente significa, mas o mais importante é que
esse termo torna possível o funcionamento de praticamente todos eletrônicos que
conhecemos. Nesta unidade, vamos identificar como os circuitos digitais interpretam
sinais de entrada e os transformam em outros tipos de sinais, criando uma maior
conversação entre dispositivos.

6
Representação De Variáveis Binárias
Antes de falarmos sobre contas, aritmética, álgebra e muito outros assuntos,
precisamos lembrar algumas questões básicas para entender as variáveis binárias.
O termo variável diz respeito a qualquer elemento de uma população que se pode
dar um valor numérico ou categoria e, então, este pode assumir valores diferentes
de unidades observáveis.

Desse modo, podemos identificar o termo população como uma variável que
gostaríamos de estudar. Então, dizemos que a população é constituída por todos os
valores que a variável estudada pode assumir. Ao processo de observar uma variável
damos o nome de experiência aleatória. Dizemos que a variável é quantitativa
quando esta se refere a características que se possa contar ou medir, as quais, por
sua vez, podem ser classificadas como variáveis quantitativas discretas, ou seja,
variáveis relacionadas a elementos que só podemos contar e não medir; e as variáveis
quantitativas contínuas, ou seja, aquelas que só podemos medir e não contar.

As variáveis também podem ser classificadas como qualitativas se não forem


suscetíveis de medição ou contagem, mas unicamente de uma classificação, podendo
assumir várias modalidades ou categorias. Quando essas variáveis possuem somente
duas categorias, podemos dizer que elas são do tipo binária, como, por exemplo,
o sexo de um grupo de pessoas.

Um exemplo mais próximo de nossa disciplina pode ser dado se pensarmos em


um interruptor, quando está aberto, ou seja, quando não há corrente circulando
pelo circuito, podemos dizer que o estado do interruptor é zero (0), mas se estiver
fechado, ou seja, quando há corrente passando pelo circuito, podemos dizer que o
estado do interruptor é um (1). Vale lembrar que um estado nunca pode ocorrer ao
mesmo tempo que o outro em um mesmo circuito.

A Fig.1 mostra dois circuitos semelhantes que representam um interruptor de


uma lâmpada, um circuito bastante simples, onde na parte A o circuito se encontra
aberto e a lâmpada apagada e na parte B o circuito se encontra fechado e a
lâmpada acesa. Esses circuitos também podem ser classificados como: circuitos
digitais ou lógicos.

+ +
- -

Figura 1 – Representação de um interruptor de lâmpada comum aberto (esquerda) e fechado (direita)

7
7
UNIDADE Aritmética Binária

O Transistor, Estrutura Básica


O transistor existe hoje em qualquer equipamento eletrônico e foi desenvolvido
em 1947 nos laboratórios da empresa de telefonia Beel, que teve sua ideia originária
em buscar um dispositivo de funcionamento semelhante aos das válvulas.

Seu funcionamento baseia-se na capacidade de os transistores utilizarem uma


baixa corrente elétrica que alimenta o nível de carga entre dois terminais. Existem
dois tipos de transistores: o transistor de junção bipolar (TJB) e o transistor de
efeito de campo (FET), que, como o próprio nome diz, funciona através do efeito
de um campo elétrico na junção. Esse tipo de transistor tem muitas aplicações na
área de amplificadores (operando na área linear), em chaves (operando fora da
área linear) ou em controle de corrente sobre uma carga.

Os FETs têm como principal característica uma elevada impedância de entrada,


o que permite seu uso como adaptador de impedâncias, podendo substituir
transformadores em determinadas situações. Além disso, são usados para amplificar
frequências altas com ganho superior ao dos transistores bipolares.

O transistor de junção bipolar é estruturado como dois diodos de junção PN


representados pelas fronteiras entre os terminais que o constituem. Levando em
consideração que um diodo opera em três regiões distintas, região de condução
com polarização direta, região de corte com polarização reversa e região de ruptura
com polarização reversa, as partes do transistor TJB são: emissões, base e coletor e
as junções PN que nele existem são as fronteiras entre os terminais que identificam
esse semicondutor, onde E representa o emissor, B a base e C o coletor, conforme
demonstrado na figura a seguir:
Junção Junção Junção Junção
Base = Emissor Base = Coletor Base = Emissor Base = Coletor

E P N P C E N P N C

Altamente Camada Menos Altamente Camada Menos


dopado B mais fina dopado que dopado B mais fina dopado que
e menos o emissor r e menos o emissor r
dopada mais dopado dopada mais dopado
que a base que a base

Figura 2 – Representação de Transistores PNP e NPN mostrando suas regiões integrantes, incluindo as junções

No funcionamento do transistor TJB, os extremos diferem-se entre si pela


quantidade de cargas negativas ou elétrons; no meio, existe uma região de equilíbrio
de cargas opostas que formam a região de depleção após emissor e coletor serem
dopados, onde o emissor terá elétrons em grande quantidade que serão recebidos
pelo coletor. Entre o emissor e o coletar, na base, localizam-se os portadores de
carga que irão transferir os elétrons entre uma região e outra.

8
O processo de funcionamento se dá da seguinte forma:

A junção JEB (junção base-emissor) encontra-se polarizada diretamente e isso


reduz a região de depleção que passa a ser condutora. Então, cargas vindas do
emissor ocuparão pequenos espaços na base em virtude de elementos como a
dopagem e construção, o que pode proporcionar uma menor excitação das
partículas nesse meio.

Os elétrons combinados às lacunas constituem a corrente que irá fluir pela base
que tecnicamente recebe o nome de IB. A grande maioria dos elétrons presentes na
base são levados para o coletor devido à energia acumulada nessa região, resultante
da polarização da junção base-emissor, além da distribuição dessas cargas que
favorece o deslocamento.

Na junção base-coletor, ocorre a polarização reversa, criando um campo elétrico


que atrai as cargas dentro do coletor e essas cargas constituem a corrente que
percorre o coletor, sendo essa corrente maior que a da base; logo, podemos assumir
que IC >> IB. Dessa forma, fica identificado como trabalho da base o controle do
fluxo de cargas entre emissor e coletor.

Levando em consideração as regiões: Emissor, Base e Coletor, podemos ainda


fazer distinções quanto às formas de montagem de um transistor que pode ser BC,
EC e CC, lembrando que o termo comum é referência à ligação entre a zona que
identifica o componente e o terra.

Base Comum (BC):


• Montagem: Entrada do sinal entre o emissor e a base. Saída do sinal entre
coletor e base.
• Características: Possui um ganho de corrente (GI) menor que 1, ganho de
tensão (GV) elevado, resistência de entrada (RIN) baixa e resistência de saída
(ROUT) alta.

IC RC

Saída
+ VCC
IB
-

• Circuitos: Entrada
-
VBE
+

IE

Base Comum

9
9
UNIDADE Aritmética Binária

Emissor Comum (EC):


• Montagem: Entrada do sinal entre a base e emissor. Saída do sinal entre
coletor e emissor.
• Características: Possui um ganho de corrente (GI) elevado, ganho de tensão
(GV) elevado, resistência de entrada (RIN) média e resistência de saída (ROUT) alta.

IC RC

+ VCC
IB
-

• Circuitos:
+
VBE
-

IE

Emissor Comum

Coletor Comum (CC):


• Montagem: Entrada do sinal entre a base e coletor. Saída do sinal do circuito
do emissor.
• Características: Possui um ganho de corrente (GI) elevado, ganho de tensão
(GV) menor que ou igual a 1, resistência de entrada (RIN) muito alta e resistência
de saída (ROUT) muito baixa.

IC

IB
Entrada

+ Saída
VBE
- RE
• Circuitos:
IE
-

Coletor Comum

As zonas de operação de um transistor são quatro: região de corte, zona ativa,


região de saturação e região de ruptura. A zona ativa possui algumas condições de
funcionamento como:

10
• Junção base-emissor diretamente polarizada → VBE > tensão limiar;
• Junção base-coletor inversamente polarizada → < VBC < VCC;
• 0 < VCE < VCC;
• Corrente de coletor determinada pela expressão I C  CC  I B onde βCC é o
ganho estático de corrente do transistor (relação entre as correntes que saem
pelo coletor e que entra no emissor);
• Amplificação de sinal da tensão variável com ganho da ordem de centenas.

Quando um transistor está trabalhando nas regiões de saturação e corte,


assume o comportamento de uma chave, ou seja, interruptor aberto ou fechado
(como já estudado). Na zona de corte, o transistor equivale a um interruptor aberto
com corrente nula no coletor. Dessa forma, a tensão entre o coletor e o emissor,
equivale a tensão contínua aplicada sobre ele (VCE = VCC), assim I B ≅ 0 . Já na zona
de saturação, o transistor corresponde a um interruptor fechado; logo, a tensão
entre o coletor e o emissor será praticamente nula e a corrente no coletor irá
atingir seu valor máximo (limitado pela resistência associada a ele) I C  VCC  RC .

Na região de ruptura, há um valor que limita a tensão, conforme especificação


do transistor, valor esse que, se ultrapassado, gerará dano ao componente, Na
figura a seguir, você pode notar alguns exemplos de tensão de ruptura:

IC (MA)
50
25
Breakdown
40
20
Curva de potência máxima
30
15

20
10
Área útil
10
5
0
VCE (V)
5 10 15 25 25

Região de Saturação Região de Corte

Figura 3 – Regiões de funcionamento de um transistor

As principais aplicações de transistores seriam como amplificadores de corrente


ou tensão e como controle ON-OFF (chaves do tipo liga-desliga), por exemplo,
chavear um motor de alta potência com um sinal de um microcontrolador, amplificar
um sinal e circuitos osciladores como luzes e contadores de tempo.

11
11
UNIDADE Aritmética Binária

Estrutura e Operação de Portas CMOS


Antes de tudo, devemos entender o que são os dispositivos CMOS. O termo
CMOS ou Complementary Metal-Oxide Semiconductor diz respeito a uma
tecnologia utilizada em transistores de efeito de campo (FET) no lugar dos já
estudados transistores bipolares na elaboração de circuitos integrados.

O uso dos dispositivos FET, como tudo, traz vantagens e desvantagens, mas com
o avanço tecnológico, vem eliminando cada vez mais as desvantagens, aumentando
a velocidade de trabalho e reduzindo seu consumo de energia.

Temos a seguir uma demonstração de como são construídos os CMOS ou


MOSFETs nas aplicações de circuito integrados:
G
Dreno Coletor
S D
Alumínio
Óxido de Silício Base
Canal N
Gate
N N Fonte Emissor
Substrato P
Figura 4 – Estrutura básica do dispositivo CMOS

Podemos ver, na figura 4, o gate ou controle do eletrodo no lugar da base e


a polarização ocorre da fonte para o dreno, fazendo uma analogia ao transistor
bipolar. Além disso, é possível também observar que entre o eletrodo do gate, que
é constituído de uma placa de alumínio e o substrato ou canal, que é por onde
passa a corrente, não existe contato elétrico ou junção; em seu lugar, existe uma
fina camada de óxido de alumínio ou óxido-metálico que, por fim, dá o nome ao
dispositivo (metal-oxide).

A corrente que circula entre a fonte e o dreno do dispositivo CMOS pode ser
controlada pela tensão aplicada ao seu gate. Assim, no tipo P uma tensão positiva
de comporta aumenta sua condução, ou seja, faz com que ele sature e no tipo N,
uma tensão negativa de comporta é que o leva à saturação.

Mais uma vez fazendo uma comparação com os tipos bipolares, podemos di-
zer, então, que enquanto os transistores bipolares são típicos amplificadores de
corrente, os FETs ou transistores de efeito de campo MOS são típicos amplifica-
dores de tensão.

Essa diferença leva o transistor de efeito de campo MOS a apresentar caracterís-


ticas muito interessantes para aplicações em Eletrônica Digital ou Analógica.

Uma delas está no fato de que a impedância de entrada do circuito é extrema-


mente elevada, o que significa que precisamos praticamente só de tensão para
controlar os dispositivos CMOS. Assim, é preciso uma potência extremamente

12
baixa para o sinal que vai excitar a entrada de um circuito integrado CMOS, já que
praticamente nenhuma corrente circula por esse elemento.

A outra está no fato de que, diferentemente dos transistores bipolares que só


começam a conduzir quando uma tensão da ordem de 0,6 V vence a barreira de
potencial de sua junção base-emissor, os FETs não têm esta descontinuidade de
características, o que os tornam muito mais lineares em qualquer aplicação que
envolva amplificação de sinais.

A tecnologia CMOS permite que os dispositivos tenham características excelentes


para aplicações digitais. Quando utilizamos uma configuração com transistores do
tipo N e O ao mesmo tempo, podemos usar, então, um circuito inversor, conforme
a figura 5.
Vdd
E S
0 1 (P)
1 0 Q1

E S

Q2
(N)

Figura 5 – Circuito Inversor

Nesse circuito da figura 5, é possível ver que, dependendo da intensidade do sinal


aplicado no gate dos transistores ao mesmo tempo, um deles estará polarizado para
condução máxima, ou seja, saturado, e o outro estará obrigatoriamente polarizado
no sentido de corte de corrente.

Portas Lógicas
Seja qual for o sistema digital que está trabalhando, sempre o representamos
utilizando portas lógicas. Veremos a seguir as principais portas lógicas e seus
métodos de funcionamento.

A primeira porta lógica estudada é a Porta AND (E) que representa a função
E, seu funcionamento diz que a saída será 1 somente se ambas as entradas forem
iguais a 1; nos demais casos, a saída será 0. A figura 6 mostra a representação da
porta AND e uma implementação em um transistor TTL de 4 portas AND com
alimentação VCC=5V.

13
13
UNIDADE Aritmética Binária

A +Vcc
B
14 13 12 11 10 9 8

A
Y 7408
B
1 2 3 4 5 6 7
Terra

Figura 6 – Porta Lógica AND (A), Transistor de 4 portas AND (B)

Podemos representar também os resultados de uma saída da porta lógica através


da representação da tabela verdade que nos demonstra a saída da porta de acordo
com os sinais de entrada. Em lógica, dizemos que o valor 0 significa FALSO (F)
e normalmente é representado por um nível de tensão 0V, isto é, um nível baixo
de tensão ou BAIXO ou ainda LOW. Já o valor 1 significa VERDADEIRO (V) e
é representado por um nível de tensão +VCC, ou seja, um nível alto de tensão ou
ALTO ou ainda HIGH.
A B Y A B Y
0 0 0 F F F
0 1 0 F V F
1 0 0 V F F
1 1 1 V V V
A B Y A B Y
OV OV OV L L L
OV +Vcc OV L H L
+Vcc OV OV H L L
+Vcc +Vcc +Vcc H H H
Figura 7 – Representações da Tabela Verdade para a porta lógica AND

A próxima porta que veremos é a porta OR ou porta OU. Essa porta executa
a função de soma dos sinais de entrada de forma booleana da seguinte maneira:
• Se a chave A está aberta (A=0) e a chave B aberta (B=0), não haverá circulação
de energia no circuito; logo, a lâmpada fica apagada (S=0).
• Se a chave A está fechada (A=1) e a chave B aberta (B=0), haverá circulação
de energia no circuito e a lâmpada fica acesa (S=1).
• Se a chave A está aberta (A=0) e a chave B fechada (B=1), haverá circulação
de energia no circuito e a lâmpada fica acesa (S=1).
• Se a chave A está fechada (A=1) e a chave B fechada (B=1), haverá circulação
de energia no circuito e a lâmpada fica acesa (S=1).

14
• Observando todas as quatro situações possíveis, pode-se concluir que
a lâmpada fica acesa somente quando a chave A ou a chave B ou ambas
estiverem fechadas.

A +Vcc
B C
14 13 12 11 10 9 8 A B Y
A 0 0 0
Y 7432 0 1 1
B
1 0 1
1 2 3 4 5 6 7 1 1 1
Terra

Figura 8 – Representações da porta lógica OR (A), Transistor de 4 portas


do tipo OR (B) e Tabela Verdade da porta lógica OR (C)

Veremos, agora, uma versão especial da porta OR, chamada XOR (OU
ESPECIAL) que trabalha da seguinte forma: a saída será 1 quando os sinais de
entrada forem diferentes entre si e 0 caso contrário.

A B
A B Y
A 0 0 0
Y 0 1 1
B
1 0 1
1 1 0
Figura 9 – Representações da porta lógica XOR (A) e Tabela Verdade (B)

A próxima porta lógica estudada representa a negação de um sinal, ou seja, se


a variável estiver em 0, o resultado da função é 1 e se a variável estiver em 1, o
resultado da função é 0. Essa porta também é conhecida como sistema inversor.

A B +5V C
14 13 12 11 10 9 8

A B
A Y 0 1 7402

1 0
1 2 3 4 5 6 7
Terra

Figura 10 – Representações da porta lógica NOT (A), Transistor de 6 portas


do tipo NOT (B) e Tabela Verdade da porta lógica NOT (C)

15
15
UNIDADE Aritmética Binária

Seguindo, temos a porta lógica NAND (NÃO E) que faz uma composição da
porta NOT e da porta AND da seguinte forma: a saída será 0 se e somente se as
N entradas forem iguais a 1; nos demais casos, a saída será 1.

A B
A B Y
A
0 0 1
Y 0 1 1
B
1 0 1
1 1 0
Figura 11 – Representações da porta lógica NAND (A) e Tabela Verdade (B)

A porta que veremos, agora, também é uma composição de duas outras, é


a porta NOR (NÃO OU) que mescla as portas NOT e OR da seguinte forma: a
saída será 1 se e somente se as entradas forem iguais a 0; nos demais casos, a
saída será 0.

A B
A B Y
A 0 0 1
Y 0 1 0
B
1 0 0
1 1 0
Figura 12 – Representações da porta lógica NOR (A) e Tabela Verdade (B)

Há também a versão especial da porta NOR, chamada XNOR que trabalha da


seguinte forma: a saída será 1 quando os sinais de entrada forem idênticos e 0
caso contrário.

A B
A B Y
A 0 0 1
Y 0 1 0
B
1 0 0
1 1 1
Figura 13 – Representações da porta lógica XNOR (A) e Tabela Verdade (B)

16
É possível fazer combinações ou interligações de portas lógicas, como no
exemplo a seguir:

A B
A A B C Y
B Y 0 0 0 1
0 0 1 0
C
0 1 0 1
0 1 1 1
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 1
Figura13 – Exemplo de portas lógicas combinadas (A) e Tabela Verdade (B)

Para facilitar o tratamento analítico das diversas funções lógicas possíveis de


serem implementadas através de portas lógicas, utiliza-se a representação da
função lógica através de equações booleanas, conforme demonstrado na tabela 1:

Tabela 1 – Representação das portas lógicas por equações Booleanas


teste

A
AND Y Y=A⋅B
B

A
OR Y Y=A+B
B

A
XOR Y Y=A⊕B
B

NOT A Y Y=A

A
NAND Y Y=A⋅B
B

A
NOR Y Y=A+B
B

A
XNOR Y Y=A⊕B
B

17
17
UNIDADE Aritmética Binária

Todo circuito lógico executa uma expressão booleana e, por mais complexo
que seja o circuito, ele é composto pela interligação dos blocos lógicos básicos,
para gerar as expressões lógicas, você deve averiguar qual circuito lógico está
trabalhando e, então, adicionar as expressões vistas na tabela 1, parte por parte,
até completar o circuito. Veja um exemplo na figura 14:

A S1=A.B
B S=S1+C
(1)
C
(2)
Figura 14 – Identificando as expressões conforme os circuitos lógicos

Identificando a expressão do circuito lógico, também se torna possível identificar


a tabela verdade desse circuito, da seguinte forma:
• Considerando uma expressão S = A × B × C + A × D + A × B × D, você
identificará 4 variáveis (A, B, C e D), usando a expressão 24, você chega a
16 interpretações de sinal, como visto na figura 15. Agora, você pode criar
colunas para cada subfórmula e após, mais uma coluna para o resultado do
sinal de saída. Para cada subfórmula e o sinal de saída, você deve simplesmente
aplicar a expressão sobre as variáveis.

A B C D A.B.C A.D A.B.D S


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

Figura 15 – Construção da tabela verdade de uma expressão lógica

18
O Retardo de Propagação
Um sinal lógico sempre sofre retardo em sua passagem através de um circuito.
Os dois tempos correspondentes aos retardos de propagação são definidos como:
• tPLH: tempo de retardo correspondente à passagem do nível lógico 0 para o
nível lógico 1 (BAIXO para ALTO).
• tPHL: tempo de retardo correspondente à passagem do nível lógico 1 para o
nível lógico 0 (ALTO para BAIXO).
Entrada 1

Entrada 1
Saída 1

tPHL tPLH

Figura 16 – Exemplo de Retardo de Propagação

Em geral, tPLH e tPHL possuem valores diferentes, variando também em função


das condições de carregamento, as quais o circuito está submetido. Tais valores são
usados para compararem as velocidades de operação dos circuitos lógicos. Vamos
tomar um exemplo com um circuito com retardo de propagação em torno de 10ns
que é mais rápido do que um circuito com retardo da ordem de 20 ns.

19
19
UNIDADE Aritmética Binária

Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:

Sites
The National Museum of Computing
http://www.tnmoc.org/
Cisco Binary Game
https://goo.gl/0L4B9C

Leitura
O que são FLOPS? – TECMUNDO
https://goo.gl/ULnFLS

20
Referências
IDOETA, I. V., CAPUANO, F. G., Elementos de Eletrônica Digital, Ed. Érica,
Ed. 40, 2000.

SEDRA A., S. et all: Microeletrônica, Ed. Makron Books, 1994.

21
21
Circuitos Lógicos
Material Teórico
Circuitos Combinacionais

Responsável pelo Conteúdo:


Prof. Ms. Fábio Peppe Beraldo

Revisão Textual:
Profa. Esp. Márcia Ota

Revisão Técnico:
Prof. Ms. Rodrigo da Rosa
Circuitos Combinacionais

• Introdução
• Teoremas da Álgebra Booleana
• Simplificação de Circuitos Lógicos
• Circuitos Combinacionais
• Mapa de Karnough

OBJETIVO DE APRENDIZADO
· Nesta Unidade, objetiva-se que o aluno tenha conhecimento sobre
Minimização de funções e Circuitos Combinacionais a fim de que
esteja apto a realizar trabalhos com redes de circuitos e interpretação
de Mapas de Karnaugh.

ORIENTAÇÕES
Olá, aluno (a)!

Nesta Unidade, aprenderemos um pouco mais sobre o trabalho com Circuitos


Lógicos, e minimização de funções, além do mapa de Karnaugh.

Desse modo, leia o material com atenção e, se sentir necessidade, releia


para que sua absorção seja adequada. Fique atento (a) nessa etapa, pois é
o momento oportuno para registrar suas dúvidas; por isso, não deixe de
registrá-las e transmiti-las ao professor-tutor.

Além disso, para que a sua aprendizagem ocorra num ambiente mais
interativo possível, na pasta de atividades, você também encontrará as
atividades de avaliação, uma atividade reflexiva e a videoaula. Cada material
disponibilizado é mais um elemento para seu aprendizado, por favor, estude
todos com atenção!

Bom Estudo!
UNIDADE Circuitos Combinacionais

Contextualização
Para entendermos os circuitos combinacionais, precisamos estudar a simplifi-
cação de circuitos lógicos, começando por um aprofundamento na simplificação
de circuitos lógicos. Dois métodos serão usados: o primeiro utilizará os teoremas
da álgebra booleana e o segundo, uma técnica de mapeamento.

Além disso, vale lembrar que estudaremos técnicas simples para projetar circuitos
lógicos que satisfaçam um dado conjunto de requisitos.

6
Introdução
Soma de Produtos
Para trabalharmos com simplificação de expressões, temos que lembrar que
a simplificação exige que a expressão trabalhada esteja na forma de soma de
produtos, como exemplificado:

A BC  A BC
A B  A BC  C D  D

Cada uma dessas expressões no formato “soma de produtos” consiste em


dois ou mais termos AND (que são os produtos), os quais, por sua vez, estão
conectados a uma porta OR. Cada termo AND consiste em uma ou mais variáveis
que aparecem individualmente na sua forma complementada ou não. Se tomarmos
como exemplo a expressão A  B  C  A  B  C , o primeiro produto AND contém
as variáveis A, B e C na sua forma não complementar ou não invertida, já no
segundo produto, há as variáveis A e C na sua forma complementada ou invertida.

Podemos observar que, em uma expressão do tipo “soma de produtos”, um


sinal de inversão não pode cobrir mais do que uma variável em um termo, ou
seja, não poderíamos ter algo como A × B × C .

Produto de Somas
Uma segunda forma para os projetos de circuitos lógicos é o produto de somas,
que consiste em dois ou mais termos OR (somas) que são conectados às entradas
de uma porta AND. Cada termo OR contém uma ou mais variáveis na sua forma
complementada ou não, conforme exemplos:

 A  B  C   A  C
 A  B  C  D   F
O mais utilizado e, portanto, o mais exemplificado aqui é de “soma de produtos”,
ficando o método de “produto das somas” reservado para circuitos especiais.

7
7
UNIDADE Circuitos Combinacionais

Teoremas da Álgebra Booleana


Antes de falarmos das simplificações, devemos nos atentar a alguns teoremas
de extrema importância, uma vez que são muito utilizados durante os cálculos
de simplificação.
Os teoremas booleanos nos ajudam a simplificar expressões de circuitos lógicos
e serão listados os oito primeiros na figura a seguir. Em cada um deles, (X) é uma
variável lógica que pode ser igual a 0 ou 1 e para exemplificar a circuitaria, há um
pequeno circuito lógico que o representa.

Teoremas para variável única


Teorema 01
Esse teorema mostra que o resultado de uma operação AND, que possui como
entrada de sinal uma variável X qualquer e outro sinal de valor 0, tem uma saída de
sinal igual a 0. A saída de uma porta AND sempre será 0 toda vez que um de seus
sinais de entrada for igual a 0, independente da outra fonte de sinal.

Teorema 02
Teorema de fácil compreensão matemática, uma vez que qualquer elemento
multiplicado por 1 tem como resposta o próprio elemento.

Teorema 03
Pode ser provado verificando o resultado para cada valor possível de entrada. Se
x = 0; então, 0 × 0 = 0; se x = 1; então, 1 × 1 = 1; logo, x × x = x.

Teorema 04
Pode ser provado do mesmo modo. Entretanto, podemos raciocinar que, em
qualquer instante, x ou seu inverso x deve ser igual a 0 e, então, uma operação
AND de x com seu inverso será sempre igual a 0.

Teorema 05
A soma de 0 a qualquer valor não altera esse valor, seja na adição ordinária ou
na operação OR.

Teorema 06
O teorema 6 diz que uma operação com a porta OR possui como entradas uma
variável qualquer x e 1 será sempre igual a 1. É possível fazer a verificação desse
teorema para os dois valores possíveis ele x; 0 + 1 = 1 e 1 + 1 = 1. De modo
equivalente, podemos lembrar que a saída de uma porta OR de duas entradas será
igual a 1, quando qualquer uma das entradas for igual a 1, não importando o valor
da outra entrada.

8
Teorema 07
Mais um teorema de fácil prova: para ambos os valores da variável, basta fazer
o cálculo de x; 0 + 0 = 0 e 1 + 1 = 1.

Teorema 08
Pode ser provado raciocinando que, em qualquer instante, x ou seu inverso x
estará em nível lógico 1; então, sempre teremos a operação OR de 0 e 1, cujo
resultado será sempre 1.
x
(1) x.0 = 0 0
0

x
(2) x.1 = x x
1

x
(3) x.x = x x

x
(4) x.x= 0 0

x
(5) x+ 0 = x x
0

x
(6) x+ 1 = 1 1
1

x
(7) x+x = x x

x
(8) x+x = 1 1

Figura 1 – Teoremas para variável única

Teoremas para variável única


Teoremas 09 e 10 – Leis da Comutatividade
Estas leis determinam que a ordem, na qual realizamos as operações AND e OR
não é importante, pois o resultado será sempre o mesmo.

9
9
UNIDADE Circuitos Combinacionais

Teoremas 11 e 12 – Leis da Associatividade


Estas leis determinam que podemos agrupar as variáveis de expressões do tipo
AND ou OR do modo que desejarmos.

Teorema 13 – Leis da Distributividade


Esse teorema afirma que uma expressão pode ser expandida quando se
multiplicam os termos um a um, igual na álgebra comum. Também é regra, por
esse teorema, que é permitido fatorar uma expressão, caso tenhamos a soma de
dois ou mais termos, cada um contendo uma variável comum, podemos fatorar
essa variável como fazemos na álgebra comum, conforme mostra o exemplo:
Assumindo a expressão:

z  A BC  A BC

Nessa equação, é possível fatorar a variável :


z  B AC  AC 
Assumindo a expressão:
z  A BC  A B D

Nessa equação, é possível fatorar a variável :


z  A  B  C  D

Teorema 14
O teorema 14 não possui nenhum correspondente na álgebra comum. Nele,
você deve se atentar aos valores através do estudo dos casos a seguir:

Caso 1 – para x = 0 e y = 0
x+x×y=x
0+0×0=0
0=0

Caso 2 – para x = 0 e y = 1
x+x×y=x
0+0×1=0
0=0

Caso 3 – para x = 1 e y = 0
x+x×y=x
1+1×0=1
1=1

10
Caso 4 – para x = 1 e y = 1

x+x×y=x

1+1×1=1

1=1

O teorema 14 também pode ser demonstrado através de fatoração e do uso


dos teoremas 6 e 12:

x + x × y = x × (1 + y)

x+x×y=x×1 uso do teorema 6

x+x×y=x uso do teorema 2

Teorema 15
Vamos usar como explicação um exemplo de simplificação da expressão:

x  AC D  A BC D

Fatorando as variáveis comuns C × D, temos:


x  C D A  A B 
Esse teorema diz que podemos substituir A  A  B por A + B. Assim, temos:

x  C  D   A  B
x  AC D  BC D

Teoremas de DeMorgan (Redes NAND-NAND e NOR-NOR)


Os teoremas de DeMorgan são extremamente úteis para simplificar expressões,
nas quais o produto (AND) ou a soma (OR) das variáveis são invertidos. Os dois
teoremas são:

Teorema 16
O complemento da soma é igual ao produto dos complementos.

 x  y  x  y
Teorema 17
O complemento do produto é igual à soma dos complementos.

 x  y  x  y
Vamos utilizar um exemplo conjunto, onde ambos os teoremas (16 e 17) são

11
11
UNIDADE Circuitos Combinacionais

aplicados na mesma simplificação.

Como simplificar a expressão a seguir para outra que contenha apenas variáveis
simples invertidas?


z  A  C)  (B  D 
Utilizando o teorema 17, podemos reescrever a expressão anterior como:


z  AC  BD   
Agora que a inversão foi separada, podemos tratar os termos utilizando o
teorema 16 para sua simplificação:


z  AC  B D  
Nessa simplificação, partimos o sinal de inversão ao meio e trocamos os sinais
(+) por (–) e, então, cancelamos as inversões duplas e temos finalmente:

z  AC  B D

Nesse exemplo de simplificação com teoremas de DeMorgan, vimos que


quando utilizamos seus teoremas, o que fazemos é partir o sinal de inversão em
qualquer ponto na expressão e, então, mudamos o sinal do operador que estiver
neste ponto (simplificando, trocamos (+) por (–) e (–) por (+)), procedimento este
que pode ser feito até a redução máxima da expressão a variáveis simples.

Exemplo1:

z  A  BC
z  A BC  

z  A B  C 

z  A B  C 
Exemplo 2:

z   A  B  C   D  E  F 

  
z  A  BC  D  E F 
z   A  B  C   D  E  F 

 
z   A  B  C   D  E  F 
    
z  A B  AC  D E  D F

12
Simplificação de Circuitos Lógicos
Uma vez obtida a expressão de um circuito lógico, é comum optarmos por
reduzi-la a uma forma mais simples, que contenha um menor número de termos ou
variáveis em um ou mais termos da expressão. Esta nova expressão pode ser usada
para implementar um circuito equivalente ao circuito original, mas que contém um
menor número de portas e conexões.

A A + BC
B BC x = A B(A + BC)
C A A + BC
B BC x = A B(A + BC)
C A A
B x=AB C
C
CA
B x=AB C
C
C

B
Figura 2 – Simplicação de circuito lógico. (A) Circuito original e (B) Circuito simplificado.

É sempre preferível um circuito mais simples para se trabalhar, contando-se que


tenha a mesma lógica que o circuito original, uma vez que no circuito simplificado
há um número menor de portas e, portanto, será menor e mais barato do que
o circuito original. Além disso, a confiabilidade será melhorada porque existe um
menor número de ligações, diminuindo, assim, uma das causas potenciais de falhas
no circuito.

Método Algébrico de Simplificação


Para a simplificação algébrica, usam-se os teoremas da álgebra booleana, porém
nem sempre é simples de se identificar qual teorema deve ser aplicado para se ter
obter o circuito mais simples possível. Não existe um modo fácil de constatar se
a expressão obtida está em sua forma mais simples ou se poderia ser ainda mais
simplificada. Portanto, a simplificação algébrica, frequentemente, torna-se um
processo de tentativa e erro. Com a experiência, no entanto, pode-se ficar perito
e obter resultados razoavelmente bons.

Para explicar como fazer a simplificação pelo metodo algébrico, vamos trabalhar
direto com os exemplos.

13
13
UNIDADE Circuitos Combinacionais

Vamos simplificar o circuio lógico a seguir:


AC
A A AB(A C)

z = ABC + AB (A C )
C
B
A
ABC
B

Figura 3 – Circuito Lógico Original

Antes de mais nada, é preciso identificar cada expressão de cada porta lógica
individual ou agrupada (aquela que entra na última porta lógica), o que nos dá a
seguinte expressão:

O próximo passo é desfazer os grandes sinais de inversão ou inversão dupla,


conforme os teoremas de DeMorgan (encontrados no material complementar) e,
então, multiplicar os termos. Assim, temos:

 
z  A  B  C  A  B  A  C ; conforme teorema 17 de De Morgan.

z  A  B  C  A  B   A  C  ; cancelamento de inversões duplas.

z  A  B  C  A  B  A  A  B  C ; multiplicação.

z  A  B  C  A  B  A  B  C ; regra A × A = A

Com a expressão, agora, sob a forma de soma-de-produtos, devemos procurar


por variáveis comuns dentre os vários termos com a intenção de fatorar. O primeiro
e terceiro termos têm AC em comum, que pode ser fatorado:


z  AC B  B  A B 
Aplicando a regra B  B  1 , teremos:

z  A  C  1  A  B
z  AC  A B

O fator comum, agora, é o A que pode ser fatorado, nos dando:

z  A C  B  

14
Este resultado não pode mais ser simplificado, dando- nos, então, a expressão
final que pode ser implementada, agora, em um novo circuito lógico mais simples,
conforme a figura a seguir:

B B+C
C z = A(B + C)
A
Figura 4 – Circuito Lógico Simplificado

É possível ser mais simples ou há outras formas? Vamos tentar outros dois
métodos no exemplo a seguir. Suponha a seguinte expressão:

z  A BC  A BC  A BC

Método 1
Se prestarmos atenção, veremos que a expressão possui o produto A × B nos
primeiros dois termos:

z  A BC  A BC  A BC

Logo, podemos isolar esse termo:


z  A B C  C  A BC 
Aplicando a regra C  C  1 , teremos:

z  A  B  1  A  B  C
z  A B  A BC

O fator comum, agora, é o A que pode ser fatorado, dando-nos:


z  A B  BC 
Aplicando o teorema 15, temos:
z  A   B  C

15
15
UNIDADE Circuitos Combinacionais

Método 2
Lembrando a expressão original:

z  A BC  A BC  A BC

Podemos observar que há duas semelhanças, o primeiro e o segundo termos


possuem AB em comum e o primeiro e o terceiro termos possuem AC em comum.
Mas como saber se devemos fatorar AB dos primeiros dois termos ou AC dos dois
termos extremos? Na verdade, podemos fazer ambos usando o termo ABC duas
vezes. Veja como fica:

z  A BC  A BC  A BC  A BC

Isso somente é permitido lembrando que A  B  C  A  B  C  A  B  C , como


visto no teorema 7. Agora, sim, podemos fatorar AB dos dois primeiros termos e
AC dos últimos termos:

 
z  A B C  C  AC B  B  
Aplicando a regra C  C  1e B  B  1 , teremos:

z  A  B  1  A  C  1
z  A  B  A  C)
z  A   B  C

Este é, naturalmente, o mesmo resultado obtido com o método 1. Esse artifício


de usar o mesmo termo duas vezes sempre pode ser usado. De fato, o mesmo
termo pode ser usado mais de duas vezes, se for necessário.

Vamos ver mais alguns exemplos? Quanto mais exemplos estudados, maior a
gama de teoremas aplicados.

Vamos simplificar a seguinte expressão:

 
z  AC A B D  A BC D  A BC

Pode parecer complicado, mas vamos lá! A primeira coisa a se fazer é usarmos
os teoremas de De Morgan no primeiro termo:

 
z  AC A  B  D  A BC D  A BC

Com isso, podemos realizar a multiplicação do primeiro termo:

z  AC A  AC B  AC D  A BC D  A BC

16
Aplicando a regra A  A  0 , teremos:

z  AC B  AC D  A BC D  A BC

Chegamos, agora, na forma de “soma de produtos” que queríamos. O próximo


passo é o mesmo de sempre, procurar por fatores comuns dentre os vários
termos “produto”. Se prestar atenção, identificará que os termos dos extremos da
expressão têm o produto BC em comum e os termos do meio possuem o produto
AD em comum.

Esses elementos podem ser fatorados, dando-nos a seguinte expressão:


 
z  BC A  A  A D C  BC  
Aplicando o teorema 15, que diz que:

 A  A  1e  C  B  C  C  B  , teremos:
z  B  C  A  D   B  C

Você deve estar se perguntando: Mas e se eu tivesse fatorado o C presente no


primeiro, segundo e quarto termos do produto ao invés dos produtos BC e AD ,
quando chegamos anteriormente na equação:

z  AC A  AC B  AC D  A BC D  A BC

Tudo bem, você pode fazer isso se quiser! Então, chegará à seguinte equação:


z  C A B  A D  A B  A BC D 
Nessa etapa, você perceberá que ainda poderá fatorar o valor dentro dos
parênteses, tendo:

 
z  C  B   A  A   A  D  A  B  C  D

Lembrando da regra que A  A  1 , temos:

 
z  C B  A D  A BC D

Agora, vem a multiplicação:

z  BC  AC D  A BC D

Nesse ponto, você observa que voltamos à fatoração do produto AD , do


segundo e terceiro termos:

z  BC  A D C  BC 

17
17
UNIDADE Circuitos Combinacionais

Agora, devemos usar o teorema 15 na expressão dentro dos parênteses


para obter:

z  B  C  A  D   B  C

Que é a mesma resposta, mas por um caminho mais longo, o que nos prova
que sempre devemos procurar pelos maiores fatores comuns para fatorar, tor-
nando a reposta mais simples de ser obtida.

Circuitos Combinacionais
Já vimos anteriormente que, quando temos um circuito lógico, os resultados
dos circuitos podem ser listados em uma tabela-verdade, mas também podemos
obter a expressão do circuito lógico, observando a tabela-verdade criada por ele.
Veja o exemplo:

A B x
0 0 0
0 1 1
1 0 0
1 1 0
Figura5 – Tabela Verdade do exemplo de Circuitos Combinatórios

Na tabela verdade da figura 5, temos um exemplo de onde a saída X apenas terá


o valor 1 quando A = 0 e B = 1. Dessa forma, podemos determinar quais portas
lógicas geram tal processo e, assim, identificar como ficaria a expressão desse
circuito, conforme a figura 6:

A
B
x = AB
A

Figura 6 – Circuito Lógico do exemplo de Circuitos Combinatórios

Como esse exemplo é mais simples, notamos facilmente que a porta lógica
AND pede que os dois sinais de entrada tenham o valor 1 para que sua saída seja
1, mas por se tratar de um sinal invertido, temos de considerar também uma porta
lógica inversora anterior em um dos sinais de entrada, o que exige um sinal de
entrada com valor 0 para que possua uma saída invertida de valor 1. Dessa forma,
chegamos à conclusão da expressão de saída.

18
Vamos ver, agora, um exemplo um pouco mais complexo, observe a tabela-
verdade da figura 7:

A B x
0 0 0
0 1 1
1 0 1
1 1 0
Figura 7 – Tabela Verdade do exemplo de Circuitos Combinatórios Complexos

Essa tabela nos informa que a saída X será 1 apenas para dois casos específicos,
quando A = 0, B = 1 e A = 1 e B = 0. Já sabemos que o termo A  B  1 quando A
= 0, B = 1; sabemos também que o termo A  B  1 quando A = 1 B = 0. Isso nos
leva à conclusão que o sinal apenas será ALTO para uma ou outra das condições
analisadas; logo, fica mais fácil de entender que esses termos devem ser unidos
com a porta lógica OR para produzirem a saída desejada.

Graficamente, teremos, então:

B ALTO quanto A=0 e B=1

A
ALTO quanto A=1 e B=0
B

Figuea 8 – Representação lógica dos pré-circuitos

Uma porta AND é adicionada a cada exemplo, onde a saída na tabela-verdade


é 1 e, então, as saídas das portas AND são unidas em ua porta OR para produzir a
saída X que terá o valor 1 quando um dos termos AND for 1, gerando o seguinte
circuito lógico:

B
x = AB + AB

Figura 9 – Representação lógica do Circuito Lógico Final

19
19
UNIDADE Circuitos Combinacionais

Que tal colocarmos em prática um exemplo de projeto de um conversor? Vemos,


na figura 10, uma representação de um conversor analógico-digital que monitora
a tensão de uma bateria de 12V; a saída desse conversor gera um número binário
de 4bits (ABCD) que corresponde à tensão da bateria com incrementos de 1V,
sendo A o MSB (Most Significant Bit ou Bit Mais Significante) e D o LSB (Least
Significant Bit ou Bit Menos Significante). As saídas binárias do conversor são
ligadas em um circuito digital que deve produzir uma saída em ALTO sempre que o
valor binário for maior que 01102 = 610, ou seja, quando a tensão da bateria for
maior que 6V. E, agora, como projetar esse circuito?
MSB
A
Conversor B Circuito z
+ analógico
C lógico
VB digital
D
- LSB

Figura 10 – Conversor Analógico-Digital

A B C D z
(0) 0 0 0 0 0
(1) 0 0 0 1 0
(2) 0 0 1 0 0
(3) 0 0 1 1 0
(4) 0 1 0 0 0
(5) 0 1 0 1 0
(6) 1 0 0 1 0
(7) 0 1 1 1 1 → ABCD
(8) 1 0 0 0 1 → ABCD
(9) 1 0 0 1 1 → ABCD
(10) 1 0 1 0 1 → ABCD
(11) 1 0 1 1 1 → ABCD
(12) 1 1 0 0 1 → ABCD
(13) 1 1 0 1 1 → ABCD
(14) 1 1 1 0 1 → ABCD
(15) 1 1 1 1 1 → ABCD
Figura 11 – Tabela-Verdade do Conversor Analógico-Digital

Primeiramente, deve-se avaliar a tabela-verdade fornecida, onde podemos notar


que a saída Z apenas será 1 para os casos, em que o número binário fornecido pelo
conversor for maior que 1001, para todos os outros casos, a saída será o. Logo,
podemos montar a seguinte equação:

20
z  A BC D  A BC D  A BC D 
A BC D  A BC D 
A BC D  A BC D 
A BC D  A BC D

A simplificação dessa equação exige um pouco de atenção e paciência, mas


vamos lá! Note que, do segundo produto em diante, há a repetição do termo D + D
e esse será o foco da fatoração dessa equação, o que nos dará:

 
z  A  B  C  D  A  B  C  D  D  A  B  C  (D  D) 

 
A BC D  D  A BC D  D  
z  A BC D  A BC  A BC  A BC  A BC

z  A BC D  A B C  C  A B C  C   
z  A BC D  A B  A B
z  A BC D  A B  B  
z  A BC D  A

Se você lembrar do teorema 15, perceberá que podemos aplicá-lo. O Teorema


15 nos diz que x  x  y  x  y , que no nosso caso seria
= e y BCD , logo:
x A=


z  A BC D  A
z  BC D  A

Assim, chegamos ao circuito lógico final, conforme a figura 12, que é o circuito
representativo do nosso conversor analógico-digital.
A
z = A + BCD

B
C
D

Figura 12 – Circuito Lógico do Conversor Analógico-Digital

Mapa de Karnough
O método gráfico conhecido como Mapa de Karnough é uma ferramenta que
facilita o processo de simplicação de uma equação lógica ou mesmo pode ser usado
para converter uma tabela verdade no seu circuito lógico correspondente. O Mapa
de Karnough pode ser usado, conceitualmente, para qualquer quantidade de sinais
de entrada, mas claro que há um limite prático de 6 sinais de entrada.

21
21
UNIDADE Circuitos Combinacionais

O mapa de Karnough é um meio de mostrar a relação entre as entradas lógicas


e a saída desejada do circuito. Na figura 13, você encontra três exemplos de mapa
para duas, três e quatro sinais de entrada.

A B X B B
0 0 1 → AB A B
1 B
0
0 1 0 x  AB  AB A 1 0 A
1 0 0 A 0 1 A
1 1 1 → AB A 0 1
B B
C C
A B C X A 1
C 0
C
AB 1 1
0 0 0 1 → ABC A
ABA 10 1
0 0 1 1 → ABC AB 1
1
0
0 1 0 1 → ABC x  ABC  ABC  B
AB 1 0
0 1 1 0   1 0
  ABC  ABC  C C B
1 0 0 0
1 0
1 0 1 0 AB
AB
1
0
1
0
1 1 0 1 → ABC AB 0 0
1 1 1 0 AB 1 0
CD CD CD CD B
1 0
A B C X AB CD
0 CD
1 CD
0 CD
0
0 0 0 0
AB 0 1AB 00 00
0 0 0 1 → ABCD AB 0 1 0 0
0 0 1 0 AB 0 1 0 0 C
0 0 1 0 0
CD 1
CD 0
CD 0
CD C
0 1 0 0 0 1 0 0
AB 0 1 0 0
0 1 0 1 → ABCD AB 0 0 0 0
0 1 1 0 AB 0 0 0 0
 x  ABCD  ABCD  AB 0 1 0 0
0 1 1 0   C
1 0 0 0   ABCD  ABCD
0 1 0 0
1 0 0 0
1 0 1 0 AB 0 0 0 0
1 0 1 0
1 1 0 0
1 1 0 1 → ABCD
1 1 1 0
1 1 1 0 → ABCD
Figura 13 – Mapa de Karnough para duas (A), três (B) e quatro (C) variáveis

Na figura 13, há quatro pontos importantes que devemos observar e guardar,


pois são de extrema importância.

22
Observação 1
A tabela verdade fornece o valor da saída X para cada combinação de valores da
entrada e o mapa de Karnough dá a mesma informação em um formato diferente.
Para cada linha na tabela verdade há uma correspondência em um quadrado do
mapa de Karnough. Na figura 13.A, a condição na tabela verdade, tem como
correspondência o quadrado AB no mapa de Karnough. Como a tabela verdade
mostra X = 1 para esse caso, o valor 1 é colocado no quadrado AB do mapa.

De forma semelhante, a condição A = 1,B = 1 na tabela verdade tem


correspondência no quadrado no mapa de Karnough, e como X = 1 para esse
caso também, o valor 1 também é colocado no quadrado AB. Os demais quadrados,
para onde X = 0 na tabela verdade, são preenchidos com o valor 0. Os exemplos
das figuras 13.B e 13.C são preenchidos seguindo a mesma regra.

Observação 2
Os quadrados que aparecem no mapa de Karnough possuem uma identificação,
onde os quadrados no sentido horizontal diferem apenas em uma variável. Se
tomarmos como exemplo o quadrado posicionado no canto superior esquerdo em
um mapa de Karnough de quatro variáveis com denominação ABCD , tem como
adjacente, imediatamente, à sua direita, um quadrado denominado ABCD .

De maneira semelhante, os quadrados verticais diferem apenas uma variável,


por vez, com seus adjacentes, ou seja, o quadrado no canto superior esquerdo
recebe a denominação ABCD e o logo abaixo recebe ABCD .

Observação 3
Para que os quadrados adjacentes, seja na horizontal ou na vertical, possuam a
diferenciação correta de apenas uma variável, eles devem ser organizados na ordem
mostrada AB , AB , AB e AB , e de mesma forma da esquerda para a direita.

Observação 4
Preenchido o Mapa de Karnough com os valores de 0 e 1 nos locais corretos, a
expressão na forma de soma de produtos para a saída X pode ser obtida juntando
cada quadrado com o valor 1 utilizando a função da porta lógica OR. Tomando como
exemplo o Mapa de Karnough de três variáveis com os quadrados ABC , ABC , ABC
e ABC que possuem valor 1 geram a expressão x  ABC  ABC  ABC  ABC .

Agrupamento de Termos do Mapa de Karnough


O agrupamento de termos é a forma simplificado extraída do mapa de Karnough,
o agrupamento é obtido combinando os quadrados do mapa de Karnough que
contenham o valor 1. Vamos usar como exemplo os seguintes mapas:

23
23
UNIDADE Circuitos Combinacionais

C C C C

AB 0 0 0 0

AB 1 0 1 1
X = ABC + ABC X = ABC + ABC
= BC = AB
1 0 0 0

AB 0 0 0 0

(a) (b)

C C CD CD CD CD

AB 1 0 AB 0 0 1 1

AB 0 0 AB 0 0 0 0
X = ABC + ABC = BC
0 0 0 0 0 0

AB 1 0 AB 1 0 0 1

(c) (d)

Figura 14 – Agrupamentos de pares de quadrados com valor 1

A figura 14.A apresenta um mapa de Karnough para uma tabela verdade de três
variáveis. Você pode observar que há um par de quadrados com valor 1 que são
adjacentes na vertical, o primeiro representando ABC e o segundo ABC .

Nesses dois termos, apenas a variável A aparece tanto na forma normal (A),
quanto na forma complementar (A) e as variáveis B C permanecem inalteradas.
Sendo assim, eles podem ser agrupados ou combinados, para que seja possível
eliminar a variável A, conforme a expressão:

x  A BC  A BC

x  BC A  A 
x  B  C  1
x  BC

Como segundo exemplo, na figura 14.B, você encontra um exemplo com dois
quadrados de valor 1 horizontalmente adjacentes; logo, podem ser combinados
eliminando a variável C comum a ambos quadrados. De mesma forma na figura
14.C, os quadrados esquerdo superior e esquerdo inferior, que são adjacentes,
podem ser agrupados eliminando a variável A. A figura 14.D mostra um exemplo
um pouco mais completo com dois grupos de semelhanças de variáveis que podem
ser eliminadas da mesma forma que os demais.

24
Esses foram exemplos de agrupamentos de dois termos, mas também podemos
ter o agrupamento de 4 termos, conforme a figura a seguir:
CD CD CD CD

AB 1 0 0 1

AB 0 0 0 0
X = BD
0 0 0 0

AB 1 0 0 1

Figura 15 – Agrupamentos de quartetos de quadrados com valor 1

Quando um quarteto é agrupado, o termo resultante contém apenas as variáveis


que não mudam de forma para todos os quadrados do quarteto.

Há também o agrupamento de oito termos ou octetos, onde um grupo de


quadrados adjacentes que contenham o valor 1 podem ser combinados, quando
um octeto é agrupado num mapa de quatro variáveis, três das quatro variáveis
são eliminadas, porque apenas uma variável permanece inalterada, conforme no
exemplo da figura 16:
CD CD CD CD CD CD CD CD

AB 0 0 0 0 AB 1 1 0 0

AB 1 1 1 1 AB 1 1 0 0

1 1 1 1 1 1 0 0

AB 0 0 0 0 AB 1 1 0 0

X=B X=C

Figura 16 – Agrupamentos de quartetos de octetos com valor 1

Quando uma variável aparece nas formas complementada e não complementada


dentro de um grupo, essa variável é eliminada da expressão. Importante salientar
que variáveis que não mudam para todos os quadrados do grupo devem aparecer
na expressão final.

Resumidamente, para simplificar uma expressão através do mapa de Karnough,


você deve seguir os passos a seguir:
• Passo 1: Construa o mapa de Karnough e coloque valores 1 nos quadrados
que correspondem aos valores 1 da tabela-verdade. Em seguida, preencha os
demais quadrados com valores 0.

25
25
UNIDADE Circuitos Combinacionais

• Passo 2: Examine o mapa de Karnough para detectar valores 1 adjacentes e


agrupe aqueles com valor 1 que não são adjacentes a quaisquer outros valo-
res 1. Estes são denominados valores 1 isolados.
• Passo 3: Procure por valores 1 que são adjacentes a somente um outro valor
1. Agrupe todo par que contenha o valor 1.
• Passo 4: Agrupe qualquer octeto, mesmo que ele contenha algum valor 1 que
já tenha sido combinado.
• Passo 5: Agrupe qualquer quarteto que contenha um ou mais valores 1 que
ainda não tenham sido combinados, certificando-se de usar o número mínimo
de agrupamentos.
• Passo 6: Agrupe quaisquer pares necessários para incluir quaisquer valores
1 que ainda não tenham sido combinados, certificando-se de usar o número
mínimo de agrupamentos.
• Passo 7: Forme a soma OR de todos os termos gerados por cada agrupamento.

Visitando o endereço abaixo, você encontrará um programa gratuito que poderá fazer
Explor

download na língua inglesa e espanhola. Então, leia o manual e utilize o programa para
aprofundar seus conhecimentos e aprender como fazer as dezenas de cálculos via software.
Acesse, explore, conheça e experimente para se familiarizar com as ferramentas mais
adequadas a cada situação:
Sistemas Lógicos e Digitais – Software de Simulação, Simplificação e Conversão
https://goo.gl/AVhUyG

Nas próximas unidades, vamos explorar mais profundamente os conceitos de


instrução e CPU, os quais vão necessitar dos conhecimentos aqui estudados. Por
isso, não deixe de exercitar e participar dos fóruns para sanar todas suas dúvidas.
Até lá! Abraços!

26
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:

Sites
Mapa de Karnaugh online
https://goo.gl/kWhwKa

Calculadora Lógica (Tabela-Verdade)


https://goo.gl/nxYkyY

Simplificação de funções booleanas e Mapas de Karnaugh


https://goo.gl/gA7gfw

Calculadora Lógica (Tabela-Verdade)


https://goo.gl/D9jxyB

27
27
UNIDADE Circuitos Combinacionais

Referências
IDOETA, I. V., CAPUANO, F. G., Elementos de Eletrônica Digital, Ed. Érica,
Ed. 40, 2000.

SEDRA A., S. et all: Microeletrônica, Ed. Makron Books, 1994.

28
Circuitos Lógicos
Material Teórico
Unidade Lógica e Aritmética

Responsável pelo Conteúdo:


Prof. Ms. Fábio Peppe Beraldo

Revisão Textual:
Profa. Esp. Márcia Ota

Revisão Técnica:
Prof. Ms. Rodrigo da Rosa
Unidade Lógica e Aritmética

• Unidade Lógica e Aritmética (ULA)


• O Ciclo de Instrução
• O Pipeline
• Circuitos Sequenciais

OBJETIVO DE APRENDIZADO
· O objetivo desta unidade é capacitar o aluno a usar corretamente
os registradores do computador, consumindo menos memória, ao
mesmo tempo em que acelera o ciclo de instruções.

ORIENTAÇÕES
Nesta Unidade, vamos aprender um pouco mais sobre o que é a Organização
de processadores, o ciclo de instrução e os registradores, além do conceito
de flip-flop.

Leia o material com atenção e, se sentir necessidade, releia para que sua
absorção seja adequada. Fique atento (a) nessa etapa, pois é o momento
oportuno para registrar suas dúvidas; por isso, não deixe de registrá-las e
transmiti-las ao professor-tutor.

Além disso, para que a sua aprendizagem ocorra num ambiente mais
interativo possível, na pasta de atividades, você também encontrará as
atividades de avaliação, uma atividade reflexiva e a videoaula. Cada material
disponibilizado é mais um elemento para seu aprendizado, por favor, estude
todos com atenção!

Bom Estudo!
UNIDADE Unidade Lógica e Aritmética

Contextualização
A Unidade Central de Processamento ou Central Processing Unit (CPU) é
considerada por muitos o cérebro do computador; porém, podemos dizer que ele
é o coração também, uma vez que gera informações que alimentam o sistema
operacional e este, por usa vez, os programas.

Tecnicamente, sua função é executar programas armazenados na memória


principal, buscando suas instruções, examinando essas instruções e identificando
seus comandos, como visto na última unidade e, então, executá-las sequencialmente.

Nesta unidade da disciplina, aprenderemos como que a CPU realiza sua função
e como as instruções se comportam quando migram entre as memórias.

Bom estudo!

6
Unidade Lógica e Aritmética (ULA)
A unidade lógica e aritmética é o componente da CPU responsável pelas
execuções das operações matemáticas dos dados, ou seja, é na ULA que as
operações das instruções estudadas, realmente, são trabalhadas interpretadas e as
respostas são geradas. As operações que a ULA compreende são:
• Soma; • Subtração;
• Multiplicação; • Divisão;
• Operação lógica AND; • Operação logica OR;
• Operação lógica XOR; • Operação complemento;
• Deslocamento à direita; • Deslocamento à esquerda;
• Incremento; • Decremento.
Normalmente, essas operações utilizam um ou dois valores e, por isso, a ULA
possui duas entradas e ambas se concentram a uma saída, via barramento interno.

Figura 1: Estrutura da CPU com destaque para a ULA


Fonte: Monteiro, M., Introdução a Organização de Computadores.

Figura 2: Interligação da ULA com a CPU.


Fonte: Monteiro, M., Introdução a Organização de Computadores.

7
7
UNIDADE Unidade Lógica e Aritmética

É possível definir que a ULA funciona como um conjunto de circuitos lógicos,


utilizados conforme o tipo de operação a ser realizada, que recebem na entrada
dois ou, às vezes um; valores, que seguem pela circuitaria, determinados pelas
portas lógicas e, na saída, entregam um resultado.

Vamos exemplificar, aqui, a soma de dois valores binários, X=1 e Y=1, que irão
produzir o valor Z=0 e um bit carry (C=1) que tem a função de armazenamento
em um registrador especial do processador para referências, quando necessário.
Chamamos esse registrador de FLAG. O que muitos desconsideram é que as
distâncias percorridas fisicamente têm grande influência no tempo de resposta,
apenas para lembrar, a ULA ainda obedece à fórmula e = vt, onde:
• e = é a distância entre a entrada e a saída do circuito.
• v = é a velocidade atingida pelos sinais elétricos que são representações dos
bits através do circuito que é, nominalmente, a velocidade da luz; porém,
jamais alcança os 300.000km/s, pois isso só ocorre no vácuo.
• t = é o tempo de execução da operação, ou seja, o tempo de percurso dos
sinais desde a entrada até a saída.

Figura 3: Circuito lógico da ULA.


Fonte: Monteiro, M., Introdução a Organização de Computadores.

O circuito somador é a base de funcionamento da ULA, classificado,


essencialmente, pelo somador half adder ou somador parcial e o somador full
adder, que é o somador completo.

No somador parcial, a soma é realizada apenas com os dois valores binários


envolvidos recebidos na entrada (X e Y como visto na figura 3) e em sua saída,
entrega um resultado Z e o carry (o carry, às vezes, pode não acontecer), ou seja, a
figura 3 é uma representação lógica de um somador parcial. No somador completo,
o carry é considerado na soma, que fica com três parcelas.

8
Dessa forma, as ULAs, em sua totalidade, são fabricadas como um circuito
somador que pode somar dois valores numéricos, independentemente da
quantidade de bits que eles possam possuir, dependendo diretamente da palavra
do processador.

Mais para frente na disciplina, nós aprenderemos sobre os circuitos lógicos e,


então, retomaremos os exemplos práticos dos somadores, utilizando a representação
de circuitaria de suas portas lógicas.

Processadores
Um processador tem a função de armazenar dados em uma memória e, então,
usar esses dados para o correto processamento. Esse processamento envolve a
busca de instruções do programa armazenado, exame e identificação dos opcodes
e operandos dessa instrução e, por fim, a execução do mesmo para que o programa
“rode” corretamente.

Como já mencionado, para executar o processamento das instruções, a CPU


usa uma quantidade de memória para o armazenamento temporário de dados, ela
mantém a posição de memória da última instrução e, com isso, recebe o valor de
endereçamento, onde obtém a instrução seguinte para o processamento contínuo.

Para realizar todo o trabalho corretamente, a CPU segue alguns passos, descritos
a seguir:

1. Busca de instrução: a CPU executa a leitura de uma instrução localizada


na memória.
2. Interpretação de instrução: decodificação da instrução em busca da
ação desejada.
3. Busca de dados: carregamento, se necessário, de um dados da memória
ou dispositivo de E/S.
4. Processamento de dados: operações aritméticas ou lógicas sobre os
dados carregados.
5. Escrita de dados: escrita dos dados processados.

Fonte: https://goo.gl/4EpV8e

Na figura 4, há um diagrama simplificado da CPU, já demonstrado na unidade


anterior. Conforme a figura, podemos resumir a CPU como um dispositivo
composto por uma ULA (Unidade Lógica e Aritmética) e uma UC (Unidade
de Controle). Vimos, na última unidade, que a ULA tem a função de processar
todas as instruções, conforme sua construção de opcodes e operandos, já a UC é
responsável por controlar a transferência de dados e instruções entre a CPU e os
demais componentes do computador, além de controlar o próprio funcionamento
da ULA. Faz parte também da composição de uma CPU uma quantidade de
memória especial chamada Registrador que tem a função de armazenar dados
imediatos para o processamento.

9
9
UNIDADE Unidade Lógica e Aritmética

Figura 4: Estrutura da CPU com destaque para a ULA


Fonte: Monteiro, M., Introdução a Organização de Computadores.

Uma visão mais atenta da figura 4 nos mostra todos os caminhos percorridos
por um sinal dentro da CPU, sendo eles os caminhos de transferência de dados e a
sinalização de controle da UC que, por muitos, é chamado de barramento interno de
CPU. Esse sinal de controle é utilizado apenas para transferência interna das partes
da instrução durante seu trabalho, sem contato com o ambiente externo à CPU; a
esta comunicação externa cabe o trabalho do barramento de transferência de dados.

Registradores
Os registradores são unidades de memória de alto nível ou hierarquia que
possuem duas funções definidas:
• Registradores visíveis para o usuário: possibilitam ao programador de
linguagem de montagem ou de máquina minimizar referências à memória,
pela otimização do uso de registradores.
• Registradores de controle e de estado: são usados pela unidade de controle
para controlar a operação da CPU e por programas privilegiados do sistema
operacional para controlar a execução de programas.

Registradores Visíveis ao usuário


Esses registradores são aqueles que o programador pode referenciar por conta
própria via linguagem de máquina executada pela CPU e pode ser dividido em:
• Registradores de propósito geral: podem conter operandos que executem
qualquer tipo de operação, sendo de propósito geral; porém, como tudo na
vida, há exceções, onde esses registradores armazenam valores não gerais,
como operações com número de ponto flutuante ou pilhas.

10
• Registradores de dados: são usados apenas para conter dados e não podem
ser empregados no cálculo de endereços de operandos.
• Registradores de endereços: podem funcionar como os de propósito geral
ou para um endereçamento especial como:
• Registradores de segmento: utilizados para armazenar endereçamentos
segmentados.
• Registradores de índices: utilizados para endereçamentos indexados.
• Apontador de topo de pilha: utilizado na pilha visível para o usuário; dessa
forma, a pilha ficará alocada na memória, onde um registro especial endere-
çará o topo da pilha.
• Registradores de códigos de condição ou flags: são bits utilizados pela
CPU como resultados de operações.

Registradores de controle e de estado


Uma CPU utiliza vários tipos de registradores para controlar a operação e, por
sua vez, a maioria dessas não são visíveis para o programador, em contraposto
ao modelo anterior. Lembrando que diversas máquinas possuem registradores
construídos de forma diferente. Então, foi preciso criar um padrão de registradores
para funções específicas, como segue:
• Contador de programa (PC): contém o endereço da instrução a ser buscada.
• Registrador de instrução (IR): contém a última instrução buscada.
• Registrador de endereçamento à memória (MAR): contém o endereço de
uma posição de memória.
• Registrador de armazenamento temporário de dados (MBR): contém uma
palavra de dados a ser escrita na memória ou a palavra lida mais recentemente.

Esses registradores são responsáveis pelo transporte de dados entre CPU e me-
mória externa, sem que o usuário tome conhecimento dessa ação, sendo que den-
tro da CPU esses dados são entregues somente para a ULA. Há ainda a possibili-
dade de um registrador intermediário que interage entre o MBR e a E/S da ULA.

Uma vez clara a necessidade de diversos tipos de registradores na CPU, criou-se


um conjunto conhecido como Palavra de Estado de Programa (PSW) que irá conter
os códigos de condição além de informações do estado da instrução, constituídos
dos seguintes campos:
• Sinal: contém o bit de sinal do resultado da última operação aritmética.
• Zero: atualizado com valor 1 se o resultado da última operação for O.
• ‘Vai-um’: atualizado com valor 1 se uma operação resultar em um ‘vai-um’ para
fora do bit de ordem superior (adição) ou em um ‘vem-um’ para o bit de ordem
superior (subtração). É usado por operações aritméticas de múltiplas palavras.

11
11
UNIDADE Unidade Lógica e Aritmética

• Igual: atualizado com valor 1 se uma comparação lógica resultar em igualdade.


• Overflow: usado para indicar overflow aritmético.
• Habilitar/desabilitar interrupção: usada para habilitar ou desabilitar
interrupções.
• Supervisor: indica se a CPU está executando em modo supervisor ou em
modo de usuário. Certas instruções privilegiadas apenas podem ser executadas
no modo supervisor, assim como certas áreas de memória apenas podem ser
acessadas no modo supervisor.

É necessário também que a CPU possua um registrador que sempre aponte para
um ponto na memória, onde haja informações do estado original da instrução.
Quando esse ponto na memória for especificamente uma memória virtual, esse
registrador apontará para a tabela de páginas.

Uma forma de facilitar o desenvolvimento correto dos registradores ocorre


quando o programador tem conhecimento total sobre sistemas operacionais, pois
ele sabe como o sistema irá interagir com a CPU.

O Ciclo de Instrução
O ciclo de instruções de um computador ocorre quando a CPU busca uma
instrução em um campo de memória. Para tanto, é utilizado um registrador chamado
contador de instruções que sempre irá guardar o endereçamento da instrução a ser
executa, ou seja, após fazer uma busca, o contador de instruções já armazena o
endereçamento da próxima instrução para manter o processamento sequencial.

Após a busca, a instrução deve ser entregue para o processador e isso ocorre
através do carregamento dos dados no registrador de instruções do processador
que criará bits que identificarão que ação o processador deve executar nos dados.
Assim, ele pode interpretar a instrução e executar cada ação corretamente. Essas
ações estão listadas a seguir:
• Processador-memória: transferência de dados do processador para a memória
ou da memória para o processador.
• Processador E/S: transferência de dados entre o processador e um dispositivo
periférico por meio de um módulo de E/S.
• Processamento de dados: execução de operações aritméticas ou lógicas
sobre os dados.
• Controle: determinadas instruções podem especificar que a sequência de
execução de instruções seja alterada.

Como já dito anteriormente, em unidades anteriores, o computador possui uma


memória ou registro de armazenamento chamado AC (acumulador), considerando
instruções e dados de 16 bits, organizamos a palavra do processador em

12
16 bits; assim, a instrução é construída contendo 4 bits para o código de operação,
conforme estudado anteriormente.

Para exemplificar o funcionamento do ciclo de instrução, vamos analisar a


execução parcial de uma aplicação mostrada na figura 5.

Figura 5: Diagramação do Ciclo de Instrução.


Fonte: Stallings, W., Arquitetura e Organização de Computadores.

No passo 1, temos que o PC (contador de instruções) está em 300, ou seja, o


programa já rodou 299 instruções e está, agora, executando a instrução 300 que
é carregada no IR (registrador de instruções).

No passo 2, os quatro primeiros bits do IR são interpretados, de forma que seu


comando é o armazenamento do AC (acumulador) de um valor. O valor que deve
ser armazenado no AC está descrito e endereçado (endereço 940) nos 12 bits
restantes da instrução do IR.

No passo 3, o PC sobe para 301, ou seja, para o próximo ciclo de instrução que
é, então, carregada para o IR.

No passo 4, a instrução é interpretada e, como no passo 2, é identificado que


uma soma deve ser feita com o conteúdo endereçado como AC e o endereçado
como 941; por fim, o resultado deve ser endereçado de volta para AC, apagando
o valor que lá havia.

No passo 5, o PC muda, mais uma vez, para a próxima instrução que é buscada
e carregada em IR.

13
13
UNIDADE Unidade Lógica e Aritmética

No passo 6, novamente, da mesma forma que no passo 2, a instrução é


interpretada como a ação de armazenamento do valor do AC para o endereço de
memória 941, sobrescrevendo o valor existente nessa posição.

Na figura 5, foi descrito o funcionamento de uma execução de programa,


utilizando três ciclos de instruções, todos com os momentos de busca e execução.
Como sabemos, há processadores com arquiteturas complexas que podem ter
vários comandos e endereçamentos de memória, o que reduziria o número de
ciclos e, possivelmente, o tempo de processamento.

Os estados de um ciclo de instruções podem ser descritos por:

Cálculo de endereço de instrução (CEI): instruction address calculation: nesse


estado temos a determinação do endereço da próxima instrução que será carregada.
Esse estado geralmente envolve a soma de um valor constante ao endereço da
instrução anterior.
Busca de instrução (BI): instruction fetch: nesse estado, a instrução calculada é
carregada ou lida da memória para o processador.
Decodificação de instrução (DI): instruction operation decoding: nesse estado
faz-se a análise do código da instrução carregada que será executada. Esse estado
determina qual é a operação a ser realizada e quais operandos serão utilizados.
Cálculo de endereço de operando (CEO): operand address calculation: ocorre
quando a operação atual envolver uma referência a operando na memória ou nos
dispositivos de E/S, para então carrega-lo.
Busca de operando (BO): operand fetch: o operando é localizado na memória ou é
lido no dispositivo de E/S.
Execução da operação (EO): data operation: nesse passo há a execução da operação
indicada pela instrução.
Armazenamento de resultado (AR): operand store: escrita do resultado do
processamento.

Fonte: https://goo.gl/ilnwtd

Instruction Operand Operand


fetch fetch store

operandos Resultados
múltiplos múltiplos

Instruction Instruction Operand Operand


Data Interrupt
address operation address address Interrupt
Operation check
calculation decoding calculation calculation

instrução completa, retorno de cadeia sem


busca de nova instrução de catacteres ou vetor interrupção

Figura 6: Diagrama de transição de estados de um ciclo de instrução.


Fonte: Stallings, W., Arquitetura e Organização de Computadores.

14
Os estados na parte superior da figura 6 envolvem transferências de valores
entre o processador, de um lado, e a memória ou um dispositivo de E/S, de outro.
Os estados na parte inferior do diagrama envolvem apenas operações realizadas
internamente no processador. O estado (CEO) aparece duas vezes, pois uma
instrução pode envolver uma operação de leitura.

Fluxo de dados do clico de instruções


Não existe uma sequência correta única para o fluxo de dados, pois esse fluxo
depende da forma como a CPU foi projetada; porém, é possível que se estime uma
estrutura, ao menos, lógica, de como deve ser a sequência.

Basicamente, um ciclo de busca é constituído de um momento onde a instrução é


lida da memória. Nessa sequência, o PC mantém o endereço da próxima instrução
que deve ser carregada. Esse endereço é carregado para o MAR (via address bus),
A UC comanda que seja feita a leitura da memória e o valor lido é copiado no
MBR e, então, para o IR (via data bus), o contador sobe um valor que é a próxima
instrução a ser executada.

A figura 7 mostra uma sequência de ciclo de instruções, demonstrando o fluxo


das informações, semelhante ao apresentado na figura 5; porém, com a adição
dos barramentos que realizam o transporte dos dados da instrução para seus
respectivos controladores.
CPU

PC MAR

Memória

Unidade
de
controle

IR MBR

Barramento Barramento Barramento


de endereço de dados de controle

Figura 7: Fluxo de dados do clico de busca.


Fonte: Stallings, W., Arquitetura e Organização de Computadores.

O Pipeline
Podemos dizer que um pipeline funciona de forma semelhante a uma linha
de montagem uma vez que as instruções passam por uma sequência de estágios.
Vamos tomar o seguinte exemplo:

Sabemos que um ciclo de instrução possui várias etapas. Então, vamos pegar as
etapas de busca e execução das instruções, enquanto parte da instrução está sendo

15
15
UNIDADE Unidade Lógica e Aritmética

executada a memória não está trabalhando. Nesse instante, a memória poderia ser
utilizada em paralelo com a execução; dessa forma, o pipeline executa duas funções
paralelamente, enquanto uma parte da instrução é executada a próxima está sendo
armazenada de forma temporária, quando a execução termina, a memória de
trabalho recebe o valor carregado na memória temporária e começa uma nova
execução. Enquanto isso, uma nova instrução é carregada temporariamente e assim
por diante. Chamamos essa sequência de trocas de função de busca antecipada de
instrução (instruction prefetch) ou superposição de busca (jetch overlap).
A figura 8 mostra duas formas de execução: na primeira (a), há uma execução
sem pipeline e na segunda forma (b), há uma execução com pipeline, conforme a
descrição de pipeline.

Instrução Instrução Resultado


Busca Execução

(a)

Espera Espera

Novo endereço

Instrução Instrução Resultado


Busca Execução

Descarte
(b)

Figura 8: Demonstração lógica do trabalho do pipeline.


Fonte: Stallings, W., Arquitetura e Organização de Computadores.

Com essa explicação, fica óbvio que usando o pipeline o tempo de execução do
ciclo diminui bastante; porém, isso só ocorre quando os tempos de busca e execu-
ção são o mesmo, o que dificilmente acontece, pois é comum que o tempo de exe-
cução seja maior que o de busca devido às maiores operações que devem ser feitas.
Quando há instruções de desvio, a próxima instrução que deve ser buscada não
teve aquele carregamento prévio, pois seu endereçamento não é conhecido e a
busca em paralelo com a execução não é possível, pois essa descoberta só ocorre
durante a execução.
O desvio condicional é quando uma instrução sendo executada faz referência
à outra instrução ou dado em um determinado endereçamento diferente daquele
sequencial à execução do programa. Essa referência servirá como dado para se
alcançar o resultado da instrução em execução no momento e despois é descartada;
porém, esse desvio de percurso gera um atraso no ciclo e impede a correta execução
do pipeline.

16
Para tentar solucionar o problema das instruções de desvio ou desvio condicional,
é executada uma estratégia de adivinhação, tecnicamente chamada de preempção,
ou seja, quando uma instrução de desvio condicional é passada do estágio de
busca para o de execução, o estágio de busca obtém na memória a instrução,
imediatamente, seguinte à instrução de desvio. Então, se não ocorrer o desvio,
nenhum tempo será perdido. Se ocorrer o desvio, a instrução buscada deve ser
descartada, sendo buscada uma nova instrução.

As instruções de desvio, realmente, interferem no tempo do ciclo de instruções


e mesmo com a preempção de endereçamento não se obtém uma solução
otimizada. Para tanto, é preciso que o pipeline tenha mais estágios de trabalho
paralelo, da mesma forma que demonstrada, quando falamos sobre os estados
do clico de instrução:
• Busca de instrução (BI);
• Decodificação da instrução (DI);
• Cálculo de operandos (CD);
• Busca de operandos (BD);
• Execução da instrução (EI);
• Escrita de operando (ED).

Na figura 9, temos a demonstração de um pipeline, onde nove instruções


tiveram seu tempo de processamento conjunto reduzido de 54 unidades de tempo
(9 instruções de 6 unidades de tempo) para 14 unidades de tempo, usando os
estados de ciclo de instruções.
Tempo

1 2 3 4 5 6 7 8 9 10 11 12 13 14

BI DI CO BO EI EO
Intrução 1

BI DI CO BO EI EO
Intrução 2

BI DI CO BO EI EO
Intrução 3

Intrução 4 BI DI CO BO EI EO

Intrução 5 BI DI CO BO EI EO

Intrução 6 BI DI CO BO EI EO

Intrução 7 BI DI CO BO EI EO

Intrução 8 BI DI CO BO EI EO

BI DI CO BO EI EO
Intrução 9

Figura 9: Diagrama de tempo para operação da pipeline de instruções.


Fonte: Stallings, W., Arquitetura e Organização de Computadores.

17
17
UNIDADE Unidade Lógica e Aritmética

Em contraponto, no caso de uma interrupção (parada da execução devido


à alta prioridade de outro processo ou programa) ou um desvio condicional, se
imaginarmos as mesmas nove instruções de 6 unidades de tempo; porém, com um
desvio condicional ocorrendo da instrução três para a instrução 15.
Nesse caso, a CPU não tem como saber de que modo fazer a preempção, ou
seja, a instrução 4 é carregada e sua execução ocorre, normalmente, até que no
momento de desvio da instrução 3, acontece paralelamente, chame ou referencie
a instrução 15. Nesse momento, todas as instruções ocorrendo em paralelo são
interrompidas e aguardam o fim da instrução 15 e suas subsequentes. Quando o
resultado dessas execuções subsequentes terminarem e o valor resultado indicar o
retorno para a instrução 3, todas as instruções interrompidas retomam seu trabalho,
caso contrário, elas irão aguardar o fim das instruções, subsequente à instrução 15
e depois serão retomadas, como demonstrado na figura 10.
Penalidade devido
Tempo ao desvio

1 2 3 4 5 6 7 8 9 10 11 12 13 14

BI DI CO BO EI EO
Intrução 1

BI DI CO BO EI EO
Intrução 2

BI DI CO BO EI EO
Intrução 3

Intrução 4 BI DI CO BO

Intrução 5 BI DI CO

Intrução 6 BI DI

Intrução 7 BI

Intrução 8 BI DI CO BO EI EO

BI DI CO BO EI EO
Intrução 9

Figura 10: Desvio condicional na operação de uma pipeline de instruções.


Fonte: Stallings, W., Arquitetura e Organização de Computadores.

Desempenho da pipeline
Além de lidar com os desvios condicionais da pipeline e as interrupções, é muito
importante sabermos como se dará o desempenho da pipeline. Para tanto, veremos
algumas equações para fazer essa medição de desempenho.

18
Podemos dizer que o tempo relativo de uma pipeline de instrução é o tempo
que um conjunto inteiro de instruções leva para avançar um estágio da pipeline.
Esse tempo de ciclo pode ser determinado pela equação:
τ = max [ τi ] + d → τm + d  1≤i ≤k
i,

Onde:
• τm = atraso máximo de estágio (atraso por meio do estágio de maior atraso).
• K = número de estágios da pipeline de instrução. τm
• D = tempo necessário para propagar sinais e dados de um estágio para o próximo.

Nessa equação, o (d) é a aproximação ao pulso de um relógio e (τm) >> d. Se


considerarmos que uma quantidade de instruções representada por (n) sem o desvio
condicional, o tempo total Tk para executar todas as (n) instruções é representado por:

Tk = k + ( n − 1)  × τ

Se lembrarmos do exemplo gráfico anterior (figuras 8 e 9), onde havia 9


instruções com 6 unidades de tempo cada e sem desvio condicional teríamos,
então, 14 unidades de tempo para todo o clico do conjunto de instruções, provado
pela equação:

14 = 6 + ( 9 − 1) 

É possível calcular o quão mais rápido uma execução com pipeline sobre uma
execução sem pipeline, calculando o speedup (comparação de velocidades) entre
elas, da seguinte forma:
T1 n×k × τ n×k
Sk = = =
Tk k + ( n − 1)  × τ k + ( n − 1)

A figura 11 demonstra duas vertentes de avaliação de desempenho de ciclo


de instruções. Na parte (a), é demonstrado um speedup de execução de um
conjunto de instruções em função de instruções executadas em cada conjunto
sem a presença do desvio condicional. N parte (b), é demonstrado um gráfico
de speedup; porém, dessa vez, em função da quantidade de estágios de pipeline
que cada conjunto possui, onde se pode notar que quanto maior o número de
estágios, maior o speedup.

É possível notar que somente aumentar a quantidade de estágios acelera o


processo, isso se torna claro na parte (b) da figura 11, onde o speedup aumenta
quando se aumentou demais o número de estágios; porém, o número de instruções
diminuiu. Isso ocorre devido ao aumento de custo, por atrasos entre estágios e pelo
fato de que instruções de desvio requerem que a pipeline seja esvaziada, ou seja,
o uso de um número de estágios entre 6 e 9 parece ser mais adequado, sendo
contraproducente o uso de um número de estágios maior.

19
19
UNIDADE Unidade Lógica e Aritmética

Speedup
12
k = 12 estágios
10

8
k = 9 estágios
6
k = 6 estágios
4

0
1 2 4 8 16 32 64 128
Número de instruções
(a)
Speedup

14
n= 30 instruções
12
10
8 n= 20 instruções
6
n= 10 instruções
4
2
0
0 5 10 15 20
Número de instruções
(b)

Figura 11: Speedups obtidos com o uso de pipeline de instruções


Fonte: Stallings, W., Arquitetura e Organização de Computadores

Visão Elétrica de Postas que Compõem uma ULA Simples


Como já vimos, uma ULA tem a função de processar números usando o mesmo
formato que o resto do circuito digital. Os sistemas numéricos de complemento
para um e complemento para dois permitem que a subtração seja realizada pela
adição do minuendo com o complemento do subtraendo, simplificando o circuito
lógico. Uma vantagem do complemento para dois em relação aos outros sistemas
é que a representação possui apenas um zero, não possuindo um “zero negativo”.

Podemos resumir o trabalho de uma ULA de formas:

Operações simples:
• Operações aritméticas com inteiros;
• Operações lógicas bit a bit AND, NOT, OR, XOR;
• Operações de deslocamento de bits (deslocamento, rotação por um número
específico de bits para esquerda ou direita, com ou sem sinal); deslocamentos
podem ser interpretados como multiplicações ou divisões por 2.

20
Operações complexas:

O engenheiro de hardware deve projetar uma ULA para calcular qualquer


operação; no entanto, isso gera complexidade; o problema é que quanto mais
complexa a operação, mais cara é a ULA, mais espaço utiliza do processador e
mais dissipa energia. Dessa forma, é uma obrigatoriedade o estudo entre o poder
de processamento e a sua complexidade, satisfazendo aos requisitos do processador
ou de outro circuito. Imagine um cenário, onde é preciso calcular a raiz quadrada.
O engenheiro teria as seguintes opções:
1. Projetar uma ULA extremamente complexa que calcula a raiz quadrada de
qualquer número num único passo. Isso é chamado cálculo em passo-único
de clock.
2. Projetar uma ULA bastante complexa que calcula a raiz quadrada de qualquer
número em vários passos. Mas, existe um truque, os resultados intermediários
vão através de uma série de circuitos arranjados em linha, como numa linha
de produção, que faz com que a ULA seja capaz de aceitar novos números
para cálculo antes mesmo de terminar o cálculo dos anteriores. Isso faz com
que a ULA seja capaz de produzir números tão rápido como cálculos em
passo-único de relógio, com um atraso inicial até os números começarem a
sair. Isso é chamado cálculo em pipeline.
3. Projetar uma ULA complexa que calcula a raiz quadrada através de vários
passos. Isso é chamado de cálculo iterativo e usualmente confia no controle
de uma complexa unidade de controle com microcódigo.
4. Projetar uma ULA simples no processador e vender separadamente um
processador especializado e caro que o consumidor possa instalá-lo ao lado
desse, realizando uma das opções acima. Isso é chamado de coprocessador.
5. Dizer aos programadores que não há nenhum coprocessador e que não há
nenhuma emulação, assim eles têm que escrever seus próprios algoritmos
para calcular a raiz quadrada por software. Isso é chamado de bibliotecas
de software.
6. Emular a existência de um coprocessador, ou seja, sempre que um programa
tenta realizar o cálculo da raiz quadrada, faz o processador verificar se há
coprocessador presente e o utiliza se está ali; se não há, interrompe o programa
e invoca o sistema operacional para realiza o cálculo da raiz através de algum
algoritmo de software. Isso é chamado de emulação de software.

É comum que processadores poderosos utilizem a opção #1 para as operações


mais simples, #2 para as operações complexas mais comuns e #3 para as
operações extremamente complexas. Isso é possível através da construção de
ULAs complexas.

Na figura 12, você tem um exemplo da representação dos circuitos envolvidos


na construção de uma ULA simples de 2-bit que faz AND, OR, XOR e adição.

21
21
UNIDADE Unidade Lógica e Aritmética

Figura 12: Representação de uma ULA simples de 2-bit que faz AND, OR, XOR e adição
Fonte: SILVA, Rodrigo; ADAMCZEVSKI, Tiago; ULA de 2 entradas de 4 bits e 4 Operações, Universidade Federal do Paraná, 2010

Como seriam as representações de suas portas lógicas na forma estruturadas de


construção? Podemos ver a representação dos circuitos elétricos correspondente
das portas lógicas que podem existir na ULA e a estrutura de construção em chip,
nas figuras a seguir:

Figura 13: Layout da porta lógica NOT


Fonte: SILVA, Rodrigo; ADAMCZEVSKI, Tiago; ULA de 2 entradas de 4 bits e 4 Operações, Universidade Federal do Paraná, 2010

22
Figura 14: Layout da porta lógica AND
Fonte: SILVA, Rodrigo; ADAMCZEVSKI, Tiago; ULA de 2 entradas de 4 bits e 4 Operações, Universidade Federal do Paraná, 2010

Figura 15: Layout da porta lógica OR


Fonte: SILVA, Rodrigo; ADAMCZEVSKI, Tiago; ULA de 2 entradas de 4 bits e 4 Operações, Universidade Federal do Paraná, 2010

Figura 16: Layout da porta lógica XOR


Fonte: SILVA, Rodrigo; ADAMCZEVSKI, Tiago; ULA de 2 entradas de 4 bits e 4 Operações, Universidade Federal do Paraná, 2010

23
23
UNIDADE Unidade Lógica e Aritmética

Figura 17: Layout do módulo de portas lógicas AND


Fonte: SILVA, Rodrigo; ADAMCZEVSKI, Tiago; ULA de 2 entradas de 4 bits e 4 Operações, Universidade Federal do Paraná, 2010

Figura 18: Layout do módulo de portas lógicas OR


Fonte: SILVA, Rodrigo; ADAMCZEVSKI, Tiago; ULA de 2 entradas de 4 bits e 4 Operações, Universidade Federal do Paraná, 2010

Figura 19: Layout do módulo de soma/subtração


Fonte: SILVA, Rodrigo; ADAMCZEVSKI, Tiago; ULA de 2 entradas de 4 bits e 4 Operações, Universidade Federal do Paraná, 2010

24
Figura 20: Layout do seletor de funções da ULA
Fonte: SILVA, Rodrigo; ADAMCZEVSKI, Tiago; ULA de 2 entradas de 4 bits e 4 Operações, Universidade Federal do Paraná, 2010

Figura 21: Layout do seletor de ULA ativa


Fonte: SILVA, Rodrigo; ADAMCZEVSKI, Tiago; ULA de 2 entradas de 4 bits e 4 Operações, Universidade Federal do Paraná, 2010

Figura 22: Layout da ULA


Fonte: SILVA, Rodrigo; ADAMCZEVSKI, Tiago; ULA de 2 entradas de 4 bits e 4 Operações, Universidade Federal do Paraná, 2010

25
25
UNIDADE Unidade Lógica e Aritmética

Circuitos Sequenciais
Agora que já estudamos vários tipos de circuitos e seus elementos de memória,

o funcionamento da ULA e do processador, podemos usar essa base para


avançar nos conceitos de dispositivos mais complexos, sendo aquele estudado
agora, os circuitos sequenciais.

Classicamente podemos afirmar que um circuito sequencial é composto por um


circuito combinacional e elementos de memória, onde suas entradas e as saídas
estão conectadas ao circuito combinacional. O conceito clássico de elemento de
memória é de um circuito capaz de armazenar informação codificada em binário.
Nesses elementos, a saída do circuito combinacional tornam-se entradas para os
elementos de memória, recebendo o nome de variáveis de próximo estado. As
saídas desses elementos de memória tornam-se parte das entradas para o circuito
combinacional e recebem o nome de variáveis do estado atual. Logo, podemos
relacionar as conexões entre o circuito conbinacional e os elementos de memória
configurando o que se costuma chamar laço de realimentação, pois a saída de um
bloco é entrada para o outro e vice-versa.

O estado de um circuito sequencial é determinado pela informação armazenada


nos elementos mencionados, assim o circuito sequencial recebe informação binária
das entradas que, juntamente com a informação do estado atual, determinam
os valores das saídas e os valores do próximo estado, como demonstrado na
figura 23. Seguindo essa linha de raciocínio, fica mais fácil de compreender que as
saídas do circuito sequencial dependem não apenas das entradas, mas também do
estado atual, armazenado nos elementos de memória. O mesmo raciocínio pode
ser usado nas variáveis de próximo estado, logo, em função deste comportamento
sequencial é especificado pela sequencia tempostal de entradas, saídas e
estados internos.

Conceitualmente, divide-se os circuitos sequenciais em dois tipos, conforme


o comportamento temporal dos seus sinais: síncronos e assíncronos, mas esse
conceito veremos, a fundo, em outra unidade.

Chamamos de flip-flops aqueles elementos de memória utilizados nos circuitos


sequenciais síncronos. Um flip-flop nada mais é que um circuito digital que possui
duas entradas e duas saídas, e é capaz de armazenar um bit de informação. Nos
flip-flops temos duas entradas que não são intercambiáveis: uma é reservada ao
sinal de controle (relógio) e a outra recebe o dado (bit) a ser armazenado. As saídas
correspondem ao dado (bit) armazenado e ao seu complemento.

No exemplo do sinal de relógio, determinamos o instante em que o flip-flop


mostra o valor do dado, o que corresponder a uma borda de subida ou a uma
borda de descida, dependendo de como o flip-flop é constituído. O diagrama da
figura 23 mostra que o valor de cada virável de estado é armazenado em um flip-

26
flop específico. Os valores que representam o próximo estado só são mostrados
na borda ativa do relógio. Logo, o estado atual fica armazenado no conjunto de
flip-flop até que uma nova borda do relógio chegue, quando, então, o próximo
estado passa a ser o estado atual e um novo próximo estado será gerado pelo
circuito combinacional.

Figura 23: Layout da ULA


Fonte: GUNTZEL, José Luiz; NASCIMENTO, Francisco; Introdução aos Sistemas Digitais, 2001

Desde que devidamente alimentado com energia, um flip-flop pode manter


indefinidamente um estado, até que os sinais de entrada assumam uma configuração
tal que o façam mudar de estado. Essa configuração depende de como o flip-flop é
constituído. O estado em que um flip-flop se encontra usualmente é associado ao
valor binário que ele está armazenando. Desta forma, num dado instante, um flip-
flop estará armazenando ou o valor lógico 1 (um) ou o valor lógico 0 (zero), pois
esses são os dois valores possíveis para uma variável Booleana.

Breve simulação
No material complementar, há um link para uma simulação de funcionamento
da ULA. Então, acesse o link e, além de aproveitar maiores explicações sobre
a CPU (algumas que ainda veremos na disciplina futuramente), atente-se, mais
especialmente, ao simulador de parte operativa.

Nessa seção, você terá acesso a um simulador online na soma de dois valores
pela ULA (somador parcial) e a entrega do resultado. Além disso, verá como ocorre
o transporte dos dados entre registradores e ULA.

Essa simulação funciona como um resumo do estudado nessa unidade. Desse


modo, experimente e faça várias simulações, conforme as instruções do site e
discuta suas impressões e resultados com os amigos de sala no fórum virtual.

27
27
UNIDADE Unidade Lógica e Aritmética

Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:

Sites
Introdução à Computação – Simulador de CPU
https://goo.gl/4dYRWX
Arquiteturas de Computadores
https://goo.gl/9etNmX
Tópicos de Informática Aplicados à Administração
https://goo.gl/jNd4LE

Vídeos
Passos para Execução de uma Instrução
https://youtu.be/Ny-v5StdryY

28
Referências
MONTEIRO, Mario A.; A Organização de Computadores; 5ª Ed.; Editora:
LTC; 2012.

TANENBAUM, Andrew S.; Organização Estruturada de Computadores;


5ª Ed.; Editora: Pearson Education; 2006.

29
29
Circuitos Lógicos
Material Teórico
Operações de Circuitos Digitais

Responsável pelo Conteúdo:


Prof. Ms. Fábio Peppe Beraldo

Revisão Textual:
Prof. Esp. Márcia Ota

Revisão Técnica:
Prof. Ms. Rodrigo da Rosa
Operações de Circuitos Digitais

• Circuitos sequenciais síncronos


e assíncronos
• Os Latches
• Diagrama de Estados
• Análise de Circuitos Sequenciais
• Maquinas de Estados

OBJETIVO DE APRENDIZADO
· Nesta unidade, o aluno terá conhecimento sobre os tipos de sistemas
e o trabalho com máquinas específicas. Dessa forma, estará apto a
realizar trabalhos com operações avançadas de circuitos digitais.

ORIENTAÇÕES
Olá, aluno (a)!

Nesta Unidade, aprenderemos um pouco mais sobre o trabalho com Circuitos


Digitais, suas operações, máquinas e diagramas de estado.

Desse modo, leia o material com atenção e, se sentir necessidade, releia


para que sua absorção seja adequada. Fique atento (a) nessa etapa, pois é
o momento oportuno para registrar suas dúvidas; por isso, não deixe de
registrá-las e transmiti-las ao professor-tutor.

Além disso, para que a sua aprendizagem ocorra num ambiente mais
interativo possível, na pasta de atividades, você também encontrará as
atividades de avaliação, uma atividade reflexiva e a videoaula. Cada material
disponibilizado é mais um elemento para seu aprendizado, por favor, estude
todos com atenção!
UNIDADE Operações de Circuitos Digitais

Contextualização
Para entendermos os circuitos sequenciais, precisamos estudar suas duas
formas de apresentação: Os sistemas Síncronos e Assíncronos. Para tanto, vamos
exemplificar e criar formas de se entender cada passo desses sistemas, analisando
também as máquinas de estado.

Além disso, vale lembrar que estudaremos técnicas simples para projetar circuitos
lógicos que satisfaçam um dado conjunto de requisitos.

Bom estudo!

6
Circuitos sequenciais síncronos
e assíncronos
Como já visto, superficialmente, em outro momento de nossa disciplina, os
circuitos sequenciais podem ser divididos em dois tipos, conforme o comportamento
temporal dos seus sinais: síncronos e assíncronos.

O comportamento de um circuito sequencial assíncrono depende da ordem na


qual as entradas mudam e o estado do circuito pode se alterar a qualquer tempo,
como consequência de uma mudança de suas entradas. Os elementos de memória
utilizados nos circuitos sequenciais assíncronos apresentam uma capacidade de
armazenamento que está associada diretamente ao atraso de propagação dos
circuitos que os compõem.

Em outras palavras, o tempo que esses circuitos levam para propagar uma
mudança de suas entradas até suas saídas pode ser encarado como o tempo
durante o qual eles retêm os valores aplicados antes da mudança e, além disso,
esse fenômeno coincide com o conceito de memória, para os circuitos digitais.

Nos circuitos sequenciais assíncronos, os elementos de memória são compostos


por portas lógicas que provêm um atraso de propagação com valor adequado para
o funcionamento do circuito. Então, um circuito sequencial assíncrono pode ser
visto como um circuito combinacional com realimentação.

O projeto de circuitos com realimentação apresenta grandes dificuldades, uma


vez que seu funcionamento correto é dependente das características temporais dos
componentes (portas lógicas e fios). A principal dificuldade provém do fato de que
os componentes apresentam atrasos que não são fixos, podendo ser diferentes
mesmo para exemplares com mesma função e de um mesmo fabricante. Desta
forma, os circuitos sequenciais assíncronos têm sido evitados, sempre que possível,
em favor do uso de circuitos sequenciais síncronos.

Um circuito sequencial síncrono utiliza um sinal especial denominado de relógio


(ou clock, em inglês), o qual tem a função de cadenciar uma eventual troca de
estado. A figura 1 mostra um exemplo de sinal de relógio. A forma de onda de
um sinal de relógio é dita monótona, pois não se altera ao longo do tempo. Nela
podem ser identificados: a borda de subida, a borda de descida, o nível lógico zero
e o nível lógico um. O tempo que decorre para o sinal se repetir é denominado
período e é representado por T. Por exemplo, o tempo entre duas bordas de subida
sucessivas é igual a T. Da mesma forma, o tempo entre duas bordas de descida
sucessivas é igual a T.

7
7
UNIDADE Operações de Circuitos Digitais

nível alto
borda período (T) nível baixo
ascendente

borda
descendente

Figura 1: Exemplo de Clock

A frequência de um sinal de relógio ou clock é representada por f ou Hz e pode


ser definida como sendo o inverso do período ou tempo, ficando:

1 1
=f = ou Hz , onde s = segundos
T S

Dessa forma, podemos facilmente observar que o período é mensurado,


usando-se múltiplos de segundo (ms = milissegundo = 10-3s; µs = microssegundo =
10-6s; ns = nanossegundo = 10-9s; ps = picossegundo = 10-12s) e para medir a
frequência, usam-se os múltiplos da unidade Hertz (KHz = quilohertz = 103HZ;
MHz = megahertz = 106Hz; GHz = gigahertz = 109Hz).

Exemplo: Se um circuito trabalha a frequência de 200MHz, significa que os


blocos combinacionais precisam ter um atraso menor que o período
do relógio, identificado pela função:
1
T= −6
= 0.005 × 10 −9 s = 5ns
200 × 10 s

Em um circuito sequencial síncrono, o sinal de relógio determina quando os


elementos de memória irão mostrar os valores de suas entradas. Dependendo do
tipo do circuito que será utilizado como um elemento de memória; esta amostragem
das entradas será sincronizada pela borda ascendente ou descendente do relógio.
Independentemente do tipo da sincronização, o tempo que passa entre duas
amostragens sucessivas equivale a T, o período do relógio. Isso implica que
mudanças no estado de um circuito sequencial síncrono irão ocorrer somente após
a borda do sinal de relógio, na qual seus elementos de memória são disparados.

Fonte: https://goo.gl/mz193N

8
entradas Saídas
Variáveis do
circuito estado atual
combinacional

elementos de
memória

variáveis do
próximo estado

Figura 2: Diagrama de blocos de um circuito sequencial síncrono

Os flip-flops são os elementos de memória que são utilizados nos circuitos


sequenciais síncronos. Um flip-flop é um circuito digital com duas entradas e
duas saídas que é capaz de armazenar informação em um bit. Suas entradas não
são intercambiáveis, sendo uma reservada ao sinal de controle (que é o relógio)
e a outra entrada recebe o dado (que é o bit) que será armazenado. Já as saídas
correspondem ao dado (que é o bit) armazenado e o seu complemento direto.
O sinal do relógio descreve o preciso momento em que o flip-flop determina o valor
do dado, que pode corresponder a uma borda de subida ou a uma borda de descida,
de acordo como o flip-flop for constituído.
Na figura 2, é possível notar que o valor de cada uma das variáveis de estado é
armazenado em um flip-flop específico. Os valores do próximo estado apenas são
amostrados na borda ativa do relógio; dessa forma, o estado atual é armazenado
no conjunto de flip-flops até que uma nova borda do relógio seja ativada. Assim, o
próximo estado passa a ser o estado atual e um próximo estado novo é gerado pelo
circuito combinacional.

Fonte: https://goo.gl/mz193N

Se alimentado corretamente com energia, o flip-flop mantém indefinidamente


um estado até que os sinais de entrada assumam uma configuração que os façam
mudar de estado. Isso depende de como o flip-flop é constituído.

O estado atual de um flip-flop é relativo ao valor binário que ele armazena,


assim, em um instante, o flip-flop está armazenando o valor lógico 1 ou valor
lógico 0, sendo esses os dois valores possíveis para uma variável Booleana.

9
9
UNIDADE Operações de Circuitos Digitais

Os Latches
Existem vários tipos de flip-flops e esses se diferem pelo número de entradas
que possuem e também pela maneira, pela qual tais entradas afetam o estado em
que se encontra o flip-flop.

Os tipos mais simples de flip-flops são chamados de latches, os quais operam


por níveis de sinais na entrada, também chamados de “sensíveis a nível” e eles são
a base da construção de qualquer outro flip-flop mais avançado.

Para entendermos como um latch funciona, vamos focar nosso estudo no Latch
RS. Importante salientar que há outros tipos a serem estudados e são de suma
importância, como o latch RS controlado e o latch D.

O Latch RS
Esse é o latch mais simples que existe, sendo construído com o uso de duas portas
NOR com 2 entradas em cada e essas portas podem ser conectadas, conforme a
figura 3. Você pode observar duas entradas, que são denominadas R e S e duas
saídas, que são denominadas Q e Q . É observável também uma conexão entre a
saída e a entrada NOR n2. Há a conexão entre a saída Q e a entrada NOR n1.
Essas conexões são chamadas de realimentações e, no caso dos circuitos digitais,
são responsáveis pela propriedade de armazenamento do circuito.

R
n1 Q

n2 Q
S

Figura 3: Latch RS com portas NOR

10
Chamamos os circuitos que possuem realimentação de sequenciais, pois seu
comportamento depende não somente dos valores das portas de entrada, mas
somado a isso, o estado em que o circuito se encontra; dessa forma, a análise do
funcionamento do latch RS deve obedecer aos seguintes passos:

1º Identificação da combinação de entrada capaz de determinar o estado do


latch de maneira independente do estado anterior.

2º O estado determinado no passo 1 é assumido como sendo o estado inicial,


assim a aplicação de uma nova combinação de entradas para verificar como
o circuito se comporta, ou seja, se muda de estado ou não.

3º Repetição dos passos 1 e 2 para cada combinação de entradas capaz de


determinar o estado do circuito de maneira independente.

4º Feito os procedimentos iniciais, você encontra, agora, uma tabela de


comportamento denominada “tabela de transição de estados” ou “tabela de
transição” a qual é uma característica do latch.

Imagine que, no exemplo da figura 3, sejam aplicados simultaneamente os


valores 1 e 0 às entradas R e S no instante de tempo t0. É sabido que o valor 1
quando aplicado a qualquer entrada de uma porta NOR determina o valor da saída
desta porta como sendo 0, independente dos valores das demais entradas.

Seguindo esse procedimento, se aplicarmos R=1 e S=0 no tempo t0, a saída Q


será estabilizada com valor 0 em t0+td (n1), onde td (n1) é o atraso da porta por NOR
n1, a partir do tempo t0+td (n1), ambas entradas desta porta estarão estabilizadas
em 0. Assim, a partir do tempo t0+td (n1) + td (2), onde td (n1) é o atraso da porta
por NOR n2, a saída Q estará estabilizada com o valor lógico 1.

Continuando a operação desse latch, aplicam-se, agora, os valores R=0 e S=0


às entradas no instante de tempo t0, com t1 > t0 + td (n1) + td (n2) . Pensando em
função dos atrasos das portas n1 e n2, as saídas não se alterarão ineditamente.

Para efeitos de análise, consideramos que a entrada n1, que está conectada
a Q, continua com o valor lógico 1 e que a entrada de n2 que está conectada a
Q continua com o valor lógico 0. Desta forma, logo após o instante t1, n1 terá
0 e 1 em suas entradas, fazendo com que sua saída, que é a saída Q do circuito,
permaneça no valor lógico 0. De maneira semelhante, logo após, t1, n2 terá suas
entradas 0 e 0, fazendo com que sua saída, que é a saída Q do latch, permaneça
com o valor lógico 1. As formas de onda que ilustram o resultado da aplicação
sucessiva destes dois vetores de entrada (R=1,S=0) e (R=0,S=0) no latch RS são
mostradas na figura 4.

11
11
UNIDADE Operações de Circuitos Digitais

valor indeterminado nada muda


t0 t1 nas saídas
(=desconhecido)
após t1
td(n1) td(n2)

Figura 4: Formas de onda para aplicação do vetor de entrada (R=1;S=0)


seguido do vetor (R=0;S=0) no latch RS
Continuando o processo, podemos trabalhar, agora, com a simulação (R=0 e
S=1) no tempo t0 e (R=0 e S=0) no tempo t1. Nesse exemplo, em t0 + td (n2) a
saída Q estará estabilizada com o valor lógico 0. Uma vez que existe a ligação física
entre a saída e uma das entradas da porta NOR n1, após o instante a saída de
estará estabilizada com o valor lógico 1.

Se supormos mais uma vez que t1 > t0 + td (n2) + td (n1) , é possível admitirmos
que, logo após o tempo t1, as saídas Q e Q continuaram com seus valores anteriores.
A figura 5 mostra as formas de onda para essa suposição.
valor indeterminado nada muda
t0 t1 nas saídas
(=desconhecido)
após t1
td(n2) td(n1)

Figura 5: Formas de onda para aplicação do vetor de entrada (R=0;S=1)


seguido do vetor (R=0;S=0) no latch RS.
É possível perceber que, em todas as situações vistas até aqui, os valores obtidos
pelas saídas Q e Q são sempre complementares, sendo este o motivo pelo qual
elas recebem tais denominações. Se aplicarmos o vetor de entrada (R=1 e S=1), as
duas saídas irão se estabilizar em 1, o que entra em conflito com o visto até agora.

Se um latch deve armazenar um dentre dois estados possíveis para uma variável
Booleana e se o estado está associado ao valor de Q e Q, onde Q exibe o estado

12
e Q o seu complemento; então, como seria o estado representado pela situação
Q=1 e Q=1?

Por não haver uma resposta plausível a essa pergunta, acabou sendo decidido,
por convenção, que esse seria um estado proibido ou indeterminado; assim, a
situação (R=1 e S=1) deve sempre ser evitada, no caso do latch RS.

Conforme já mencionado, um latch, assim como um flip-flop, pode assumir


um dentre dois estados possíveis. Esses estados correspondem aos valores que uma
variável Booleana pode assumir, ou seja, 0 e 1. O estado 0 é chamado estado reset
e o estado 1 é também chamado estado set.

Ao analisarmos as formas de onda da figura 4, podemos extrair que a aplicação


do vetor (R=1 e S=0) faz com que o latch migre para o estado set (onde a saída é
estabilizada com o valor lógico 1), independente do seu estado anterior. Caso, após
isso, for aplicado o vetor (R=0 e S=0), o latch não muda seu estado.

Se continuarmos a análise com formas de onda da figura 5, podemos observar


que a aplicação do vetor (R=0 e S=1) faz com que o latch vá para o estado
reset (onde a saída Q estabiliza com o valor lógico 0), independente de seu estado
anterior. Se, após isso, for aplicado o vetor (R=0 e S=0), não muda o estado em
que o latch está, mas por outro lado, o vetor (R=1 e S=1) deve ser evitado, uma
vez que é o estado proibido.

Resumidamente, temos:

Tabela 1 - Resumo do Funcionamento Sequencial do latch RS


R S Q Q Ação
1 0 0 1 Vai para estado reset
0 0 0 1 Mantém estado reset (= estado anterior)
0 1 1 0 Vai para estado set
0 0 1 0 Mantém estado reset (= estado anterior)
1 1 0 0 Estado proibido
Fonte: TOCCI, Ronald J.; Sistemas Digitais

A tabela anterior pode ser escrita de maneira mais compacta, de modo a


incorporar a informação da dependência temporal.

Tabela 2 - Resumo de transição de estados para o latch RS


R S Qt+1 Comentário
0 0 Qt Mantém estado anterior
0 1 1 estado set
1 0 0 estado reset
1 1 - estado proibido
Fonte: TOCCI, Ronald J.; Sistemas Digitais

13
13
UNIDADE Operações de Circuitos Digitais

Na tabela 2, há a listagem dos valores possíveis para as entradas na coluna à


esquerda, admitindo-se que esses valores estão sendo aplicados no instante de
tempo t. Para cada situação de entradas, o novo valor da saída para o instante
imediatamente posterior t+1 encontra-se na coluna à direita. Como a saída Q
sempre exibe o complemento da saída Q, apenas o valor de Q é listado, ficando
Q subentendido.

Diagrama de Estados
É possível expressar circuitos sequenciais por meio de um diagrama chamado
Diagrama de Estados, sendo o Latch RS um circuito sequencial, pode-se usar
um diagrama de estados para representar seu funcionamento, como pode ser
visto na figura 6.
R = 0 ∧ S =1

(R = 0 ∧ S = 0) ∨ (R = 0 ∧ S = 0) ∨
(R = 1 ∧ S = 0) (R = 0 ∧ S = 1)

reset set

R =1∧ S = 0

Figura 6: Diagrama de estados para o latch RS

No diagrama da figura 6, podem ser observados os estados reset e set


representados por nodos (os círculos). A transição entre os estados é representada
pelas setas. As condições das entradas, cuja determinada transição pode ocorrer,
está definida junto à aresta respectiva.

Um exemplo disso é o Latch RS no estado reset; para que ele vá para o estado
set, será necessário que (R=0 e S=1), caso isso não ocorra, o latch ficara no estado
em que se encontra.

Não é necessário desenhar o diagrama toda vez que houver uma ocorrência do
latch RS. Para facilitar, usa-se a simbologia apresentada na figura 7.

R Q

S Q

Figura 7: Símbolo do latch RS.

14
Análise de Circuitos Sequenciais
É comum dentre os mecanismos de empregados na descrição de comporta-
mentos de circuitos sequenciais os Diagramas de Estados, as Tabelas de Transi-
ção de Estados, as Tabelas de Saídas e as Equações Booleanas.

Nós chamamos de análise o processo de avaliar e descrever o funcionamento de


um circuito, a partir de usa estrutura, ou seja, partimos de um esquema de projeto
de um circuito sequencial e determinamos o comportamento de seus recursos.

Como um exemplo de análise, vamos determinar uma tabela de transição de


estados, a tabela de saída e o diagrama de estados baseados no esquema da figura 8.
cnt

D0 Q0
Y

C Q0

D1 Q1

C Q1

CK

Figura 8: Esquema de Circuito Sequencial

Como pode ser visto, o circuito possui uma entrada camada (cnt) e uma saída
chamada (Y) e dois flip-flops.

Como primeiro passo na análise, temos de determinar as equações Booleanas


para as entradas de cada flip-flop, em função da entrada externa (cnt) e das saídas
dos flip-flops (Q0 e Q1), ficando:

D0 = cnt ⊕ Q0 = cnt × Q0 + cnt × Q0

D0 = cnt × Q1 + cnt × Q1 × Q0 + cnt × Q1 × Q0


As equações de D0 e D1 são conhecidas como “equações de excitação”, pois
elas descrevem o comportamento dos sinais que são aplicados às entradas dos
flip-flops, os quais irão determinar o estado do circuito sequencial para o próximo
ciclo de relógio.

15
15
UNIDADE Operações de Circuitos Digitais

Para continuar a análise, é preciso aplicar as equações de excitação às equações


dos flip-flops, obtendo-se, assim, as “equações de estado”. Como no exemplo
da figura 8, temos flip-flops do tipo D, onde Qt+1 = Dt (a saída copia a entrada),
ficando as equações da seguinte forma:
Q0 t +1 = cnt × Q0 t + cnt × Q0 t

Q0 t +1 = cnt × Q1t + cnt × Q1t × Q0 t + cnt × Q1t × Q0 t


Y = Q0 × Q1 , para a saída

Utilizando as equações de estado, passa a ser possível montar a tabela de


transição de estados do circuito, onde, nas colunas mais para a esquerda, ficam
os valores referentes às variáveis de entrada e ao estado atual, enquanto que nas
colunas mais para a direita estão os valores correspondentes ao próximo esta-
do associado a cada combinação de entradas. Assim, os estados de um circuito
sequencial são definidos pelos valores binários armazenados nos seus flip-flops.

Dessa forma, temos quatro números de estados possíveis para o circuito


estudado, uma vez que as variáveis (Q0 e Q1) podem valor de 00, 01, 10 e 11.

Tabela 3: Tabela de transição de estados para o circuito da figura 8


Entrada Estado atual Próximo estado
cnt Q1t Q0t Q1t+1 Q0t+1
0 0 0 0 0
0 0 1 0 1
0 1 0 1 0
0 1 1 1 1
1 0 0 0 1
1 0 1 1 0
1 1 0 1 1
1 1 1 0 0
Fonte: TOCCI, Ronald J.; Sistemas Digitais

Na tabela, podemos observar oito combinações de entradas referentes aos 4


estados do circuito (estado atual), combinados com os 2 valores possíveis para a
entrada cnt.

Associado a cada uma destas combinações, existe um estado que será armazenado
pelo circuito após a próxima borda ascendente do sinal de relógio, que é o chamado
próximo estado. O próximo estado é definido pelas equações de estado:

Q0 t + t = cnt × Q0 t + cnt × Q0 t

Q0 t + t = cnt × Q0 t + cnt × Q0 t × Q0 t + cnt × Q1t × Q0 t


Também pode ser observado na tabela que sempre que (cnt) valer 0, o próximo
estado será igual ao estado atual, ou seja, não se muda de estado. Já quando (cnt)
vale 1 o circuito muda de estado na chegada de uma borda ascendente do relógio
(clock). Utilizando a equação de saída, temos, agora, a tabela de saída, conforme
a tabela 4.

16
Tabela 4: Tabela de saída para o circuito da figura 8
Entrada Estado atual Saída
cnt Q1t Q0t Y
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 1
Fonte: TOCCI, Ronald J.; Sistemas Digitais

Tendo as tabelas de transição de estado e de saída, pode ter também uma


representação gráfica das informações das tabelas, a essa representação chamamos
de “Diagrama de Estados”, onde cada estado que o circuito pode armazenar é
representado por um nó em que são registrados os valores das variáveis de estado
e os valores das variáveis de saídas do circuito.

Nesse diagrama, temos as transições entre estados indicados por arestas (os
arcos com as setas) e junto a cada uma dessas arestas são anotadas as condições
das variáveis de entrada necessárias para a transição ocorrer.

Na figura 9, você pode observar o diagrama gerado para o circuito da figura


8, onde fica fácil perceber que o sinal (cnt) é um sinal de habilitação, em que se
(cnt)=0 a contagem é parada (os flip-flops mantêm os estados) e se (cnt)=1, o
circuito continua a contagem de onde parou. Com essa observação, pode-se dizer
que é a representação de um contador síncrono de módulo-4 (que conta de 0 a
3). Além disso, o sinal de saída Y serve para indicar quando a contagem atingiu o
valor 3 (Q1=1 e Q0=1). Logo, enquanto o circuito permanecer no estado 11, Y
permanecerá com o valor 1.

cnt=1
cnt=0 Q1Q0=00 Q1Q0=01 cnt=0
Y=0 Y=0

cnt=1 cnt=1

cnt=1
Q1Q0=11 Q1Q0=10
cnt=0 cnt=0
Y=1 Y=0

Figura 9: Diagrama de estados para o circuito sequencial da figura 8

17
17
UNIDADE Operações de Circuitos Digitais

Na figura 10, são mostradas formas de onda que ilustram uma possível contagem:
o circuito foi suposto partir do estado 00 e o sinal (cnt) foi mantido com valor
lógico 1 por 3 ciclos de relógio consecutivos. Após, (cnt) foi feito igual a zero, o
que desabilitou a contagem. Com isso, o circuito contou de 0 a 3, parando em 3.
Verifique o comportamento da saída Y durante esta operação.
t0 t1 t2 t3

CK

cnt

Q1

Q0

Y
Figura 10: Diagrama de tempos para uma possível operação do circuito sequencial da figura 8

Vamos realizar mais exemplo que será bastante importante para o próximo
conceito. Vamos determinar a tabela de transição de estados, a tabela de saída e o
diagrama de estados para o circuito apresentado na figura 11.
cnt

D0 Q0
Y

C Q0

D1 Q1

C Q1

CK

Figura 11: Esquema de Circuito Sequencial

18
Este circuito estudado agora se diferencia do apresentado anteriormente no
elemento de saída Y, que apesar de também depender da entrada (cnt), neste
caso, Y=1 somente quando (Q1 e Q0 = 11) e (cnt)=1 (somente quando o circuito
estiver contado).

Y = cnt x Q0 x Q1, para a saída

Como a diferença desse circuito está na saída, a tabela de transição de estados é a


mesma do exemplo anterior, ficando diferente somente a tabela de saída conforme
apresentado abaixo:
Tabela 5: Tabela de saída para o circuito da figura 11
Entrada Estado atual Saída
cnt Q1t Q0t Y
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 1
Fonte: TOCCI, Ronald J.; Sistemas Digitais

No diagrama de estados desse exemplo, além de se anotar as condições de


entrada para a transição ocorrer em cada aresta, anotam-se também os valores das
saídas, ficando como mostrado na figura 12.

cnt=1 / Y=0
cnt=0 / Y=0 Q1Q0=00 Q1Q0=01 cnt=0 / Y=0

cnt=1 / Y=1 cnt=1 / Y=0

cnt=1 / Y=0
cnt=0 / Y=0 Q1Q0=11 Q1Q0=10 cnt=0 / Y=0

Figura 12: Diagrama de estados para o circuito sequencial da figura 11

Na figura 13, são mostradas formas de onda que ilustram uma possível operação
do Circuito O circuito conta de 0 até 3. No meio do ciclo em que a contagem atinge
o valor 3 (portanto, Y=1), o sinal (cnt) passa a valer 0, o que suspende a contagem
e faz Y passar para 0.

19
19
UNIDADE Operações de Circuitos Digitais

t0 t1 t2 t3

CK

cnt

Q1

Q0

Y
Figura 13: Diagrama de tempos para uma possível operação do circuito sequencial da figura 11

Máquinas de Estados
Nos dois exemplos anteriores, cada um dos circuitos estudados por nós
corresponde a um dos modelos possíveis de circuitos sequenciais, sendo eles:
cnt cnt

D0 Q0 D0 Q0
Y Y

C Q0 C Q0

D1 Q1 D1 Q1

C Q1 C Q1

CK CK

Exemplo1: Modelo dependente dos estados Exemplo2: Modelo dependente das entradas
ou modelo de Moore. ou modelo de Mealy.
Figura 14: Modelos de Circuitos Sequenciais

No caso do modelo de Moore, as saídas dependem única e exclusivamente do


estado em que o circuito se encontra, de modo que uma mudança nos valores das
entradas só toma efeito após a próxima borda do relógio. Já no caso do modelo de
Mealy, as saídas dependem não somente do estado em que o circuito se encontra,
mas também do valor atual das entradas externas, de modo que se estas se alteraram
ainda antes da troca de estados, as saídas do circuito podem se alterar.

20
As figuras 15 e 16 mostram os diagramas de blocos para o modelo de Moore e
de Mealy, respectivamente.
Entradas
I1 I2 In CK

D1 Q1
FF1
> Q1
O1
D1 Q1
O2
lógica de FF2 Saídas
> Q1 lógica de saída
próximo estado On

D1 Q1
FF3
> Q1

Figura 15: Diagrama de blocos para o modelo de Moore


Nos diagramas de bloco, o bloco combinacional é subdividido em dois outros
blocos; um deles fica responsável pela geração do próximo estado, chamado “bloco
de próximo estado” (implementando equações de estado apenas) e outro bloco que
gera os valores de saída chamado de “bloco de saída”. Além desses blocos de lógica
combinacional, existe um conjunto de flip-flops que armazenam os estados do
circuito, sendo o número de estados possíveis 2n, sendo (n) o número de flip-flops.

No caso dos Exemplos 1 e 2, o bloco de saída caba sendo constituído apenas


pela porta E que gera o sinal de saída Y e o bloco de próximo estado contém as
portas que estão à esquerda dos flip-flops, sendo essas as que implementam as
funções de estado.
Entradas
I1 I2 In CK

D1 Q1
FF1
> Q1
O1
D1 Q1
O2
lógica de FF2 Saídas
> Q1 lógica de saída
próximo estado On

D1 Q1
FF3
> Q1

Figura 16: Diagrama de blocos para o modelo de Mealy

21
21
UNIDADE Operações de Circuitos Digitais

Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:

Livros
Eletrônica Digital - Teoria e Laboratório
Garcia, P. A., Eletrônica Digital - Teoria e Laboratório, Ed. Érica, 2006, ISBN:
853650109X
Eletrônica Digital Moderna e VHDL
Pedroni, A. V., Eletrônica Digital Moderna e VHDL, 1a edição, Ed. Campus
Eletrônica Digital: Lógica Combinacional
BIGNELL, J. W., DONOVAN R., L.: Eletrônica Digital: Lógica Combinacional, vol
1, Ed. Makron Books, 1995
Fundamentals of Digital Logic with VHDL Design
Stephen Brown, Zvonko Vranesic; Fundamentals of Digital Logic with VHDL
Design; 3a Edição; McGraw-Hill; 2008
Sistemas Digitais - Fundamentos e Aplicações
Floyd, Thomas L., Sistemas Digitais - Fundamentos e Aplicações, 9a Ed, Bookman,
2007. ISBN: 9788560031931

Leitura
Circuitos Seqüenciais
https://goo.gl/mz193N

22
Referências
IDOETA, I. V., CAPUANO, F. G., Elementos de Eletrônica Digital, Ed. Érica,
Ed. 40, 2000.

SEDRA A., S. et all: Microeletrônica, Ed. Makron Books, 1994

23
23
Circuitos Lógicos
Material Teórico
Linguagem de Descrição de Hardware

Responsável pelo Conteúdo:


Prof. Ms. Fábio Peppe Beraldo

Revisão Textual:
Profa. Esp. Márcia Ota
Linguagem de Descrição de Hardware

• Projeto de Circuitos Sequenciais


• Dispositivos Lógicos Programáveis

OBJETIVO DE APRENDIZADO
· O objetivo desta unidade é demonstrar, ao aluno, formas diferentes
de projetos de circuitos.

ORIENTAÇÕES
Nesta Unidade, vamos aprender um pouco mais sobre como funcionam
os projetos de circuitos lógicos, alguns exemplos de dispositivos lógicos
programáveis, fechando com os microprocessadores.

Leia o material com atenção e, se sentir necessidade, releia para que sua
absorção seja adequada. Fique atento (a) nessa etapa, pois é o momento
oportuno para registrar suas dúvidas; por isso, não deixe de registrá-las e
transmiti-las ao professor-tutor.

Além disso, para que a sua aprendizagem ocorra num ambiente mais
interativo possível, na pasta de atividades, você também encontrará as
atividades de avaliação, uma atividade reflexiva e a videoaula. Cada material
disponibilizado é mais um elemento para seu aprendizado, por favor, estude
todos com atenção!

Bom Estudo!!!
UNIDADE Linguagem de Descrição de Hardware

Contextualização
O projeto de um circuito sequencial, normalmente, inicia pela definição de seu
comportamento de maneira textual e com a transcrição desse comportamento
para um diagrama de estados, de modo a detalhar os estados existentes, as
condições para trocas de estados e os valores das saídas. Pela análise do diagrama
de estados, é possível identificar o modelo de máquina de estados a ser seguido
(Moore ou Mealy).

Nesta unidade da disciplina, aprenderemos como que a CPU realiza sua função
e como as instruções se comportam quando migram entre as memórias.

Bom estudo!

6
Projeto de Circuitos Sequenciais
Quando estamos trabalhando com projetos de circuitos sequenciais, aprendemos
como descrever o comportamento do circuito desejado por meio de um formalismo
matemático, conhecido como equações booleanas e essas, por sua vez, são
convertidas no próprio circuito lógico.

Mas somente a equação booleana não é suficiente para descrever como é o


comportamento de um circuito sequencial. Para tanto, é preciso de um formalismo
que incorpore a variável TEMPO.

A Máquina de Estados Finitos (FSM – Finite State Machine) é exatamente o


formalismo necessário que consiste, basicamente, em um conjunto de estados que
representam todos os estados ou modos possíveis de um sistema. Podemos dizer,
de forma sistemática, que o FSM é o projeto de redes sequenciais.

O conceito de redes sequenciais as dividem em duas partes: uma delas são


os flip-flops, que já estudamos, os quais são responsáveis pelo armazenamento
de dados em unidades de memória, e a outra são as redes combinacionais que
implementam as funções de entrada dos flip-flops e também da rede. Dois dos
mais importantes elementos que temos que ter sempre em mente sao as maquinas
de estado sólido do tipo: Máquina de Estados de Moore e Máquina de Estados de
Mealy. Se lembramos o que já aprendemos em nossa disciplina, a FSM de Moore
possui uma metodologia de projeto de rede sequencial que é função somente dos
estados atuais da rede. O modelo geral dessa FSM pode ser visto na figura 1:
clk
Y1 Q1
I1 O1
Y2 Q2
I2 O2
Elementos de Memória
Rede Combinacional

Rede Combinacional

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


(Flips-Flops)

Yn Qn
de Entrada

de Saída

In On

Figura 1: Modelo geral de uma máquina de estados tipo Moore


Fonte: TOCCI, Ronald J.; Sistemas Digitais

Na FSM de Moore, o sinal de saída somente é válido após o sinal do relógio


(clock) ser aplicado à rede.

Já em uma FSM de Mealy, a metodologia de projeto é baseada em uma saída


que é função dos estados atuais da rede e das entradas do sistema ao mesmo
tempo. O FSM de Mealy pode ser visto na figura 2:

7
7
UNIDADE Linguagem de Descrição de Hardware

clk
Y1
I1
Y2
I2

Elementos de Memória
... ...

(Flips-Flops)
Yn
In

Rede Combinacional
Q1

de Entrada
Q2
...
Qn
O1
O2
...

On

Figura 2: Modelo geral de uma máquina de estados tipo Mealy


Fonte: TOCCI, Ronald J.; Sistemas Digitais

Vamos reavivar alguns elementos de máxima importância para trabalharmos


com redes sequenciais.

Para executarmos projetos de redes sequenciais, necessitamos seguir algumas


etapas básicas:
1. Determinação do diagrama de estados;
2. Determinação da tabela de estados;
3. Codificação dos estados;
4. Montagem do mapa de transição;
5. Montagem e simplificação do mapa de entrada dos elementos de memória
(flip-flops);
6. Montagem e simplificação do mapa de saída; e
7. Circuito esquemático.

Determinação do Diagrama de Estados


Os diagramas de estados dos nossos projetos não são mais que os diagramas
de transição com uma diferença, a cada estado recebe um nome e um valor
correspondente às saídas.

Como exemplo, vamos projetar um detector de paridade ímpar de um sinal serial


utilizando a metodologia FSM de Moore e os flip-flops JK. Para determinarmos o
diagrama de estados, vamos precisar estabelecer qual o requisito do projeto.

Um circuito detector de paridade ímpar de um sinal serial deve possuir apenas


uma entrada de sinal e uma saída, a qual deve indicar se o número de valores “1”
presentes no sinal de entrada é ímpar.

8
Esse diagrama deve conter a quantidade de estados necessários para a operação
e seu comportamento de acordo com cada valor possível de entrada. Na figura 3,
você pode observar a tabela de estados do detector serial de paridade ímpar.
Estado “Flip-Flop”
X=1
S0 S1
X=0 X=1 X=0
0 1

Saída
Entrada
Figura 3: Diagrama de estados do detector serial de paridade ímpar
Fonte: TOCCI, Ronald J.; Sistemas Digitais

Determinação das Tabelas de Estados


A tabela de estados é uma representação tabulada do comportamento do obtido
do diagrama de estados, com a inserção do valor da saída do sistema.

Estado Futuro
Estado Atual X=0 X=1 Saída (Z)
S0 S0 S1 0
S1 S1 S0 1

Figura 4: Tabela de estados

Codificação dos Estados


Na implementação do mapa de designação dos estados, as seguintes orientações
de projeto devem ser seguidas:
a) Estados, cujos estados futuros são iguais, devem ficar próximos;
b) Estados, seguintes a um mesmo estado, devem ficar próximos;
c) Estados, que possuem a mesma saída, devem ficar próximos.

Para o exemplo, tem-se que:

Qa Estados
0 1 S0=0
S0 S1 S1=1

Montagem do Mapa de Transição


O mapa de transição nada mais é que uma representação em formato de mapa
do diagrama de estados e da tabela de estados, com a codificação proposta na
codificação de estados. Para o exemplo proposto, temos:

9
9
UNIDADE Linguagem de Descrição de Hardware

Estado Atual

Qa Qa
X 0 1 Estado Futuro X 0 1
Entrada
0 S0 S1 0 0 1
1 S1 S0 1 1 0

Montagem dos Mapas de Entrada dos Flip-flops


Para realizar esta tarefa, devem-se utilizar as tabelas de transição dos flip-flops,
apresentadas no capítulo anterior, visualizando os estados atuais de Q e seus estados
futuros, posicionando no mapa as entradas necessárias para causar tal transição.
Para esse caso, temos:
p/Ja p/Ka
Qa Qa
X 0 1 X 0 1
0 0 - 0 0 -
1 1 - 1 1 -
Ja=X Ka=X

Montagem do Mapa de Saída


Obtido a partir da codificação dos estados:
Qa
0 1
0 1
Za=X

Apresentação do Esquemático do Circuito Desenvolvido


Basta implementar as equações lógicas obtidas com os elementos de memória
utilizados. Para o exemplo, temos:
VCC
3

2 KFF
INPUT PRN OUTPUT
7 K VCC
J Q
6 IMPAR
INPUT
4 CLK VCC
K
CURN
1
INPUT
5 RST VCC

10
Dispositivos Lógicos Programáveis
Como já estudo no curso, a evolução dos circuitos digitais deu-se dos transistores
na sua forma unitária para a versão coletiva conhecida como circuitos integrados
ou VLSI (Very Large Scale Integration). Assim, a criação do microprocessador
possibilitou um novo passo na evolução da microeletrônica com o desenvolvimento
de chips de memória de ala densidade e o avanço na tecnologia de produtos lógicos
como os Dispositivos Lógicos Programáveis (PLD).
Antigas gerações, de tecnologia de hardware, para projetos digitais apresen-
tavam um grande número de chips contendo portas básicas (AND e OR). Com o
avanço tecnológico, os projetos mais complexos passaram a usar circuitos de alta
densidade que, em geral, incluem dispositivos como controladores, contadores,
registradores e decodificadores, proporcionando o desenvolvimento de alternati-
vas para obter flexibilidade em uma implementação.
Com o uso de módulos programáveis (portas básicas que permitem a
implementação de sistemas digitais), estes módulos têm uma estrutura padrão e
são personalizados para uma função particular.
Exemplos de tipos e classes de dispositivos programáveis (configuráveis) com
capacidade de implementar funções lógicas são:
• PLA (Programmable Logic Array);
• PAL (Programmable Array Logic);
• CPLD’s (Complex Programmable Logic Devices);
• MPGA (Mask Programmable Gate Array);
• FPGA (Field Programmable Gate Array).
A grande capacidade e a versatilidade dos novos dispositivos programáveis
fizeram desses elementos uma alternativa mais que considerável no projeto de
sistemas digitais. A utilização de algumas ferramentas de desenvolvimento como
o EDA (Eletronic Design Automation) ou, então, o ECAD (Eletronic Computer
Aided Design) possuem ciclos rápidos de projeto.
Hoje em dia, já não é mais necessário o desenho de portas lógicas individuais
e planejar todas as interconexões, as linguagens de descrição de hardware
(HDL) estão tão consolidadas no meio acadêmico quanto no meio industrial
como a forma padrão na elaboração de projetos. Há também ferramentas de
síntese lógica automática disponíveis que possibilitam mapear os circuitos em
diversas tecnologias.
Com essa grande variedade, torna-se necessário uma prototipação mais rápida,
pois o ciclo de vida dos produtos é cada vez mais curto em relação ao tempo
necessário para o projeto e desenvolvimento em diversas categorias:

• CCl’s customizados ou ASICs (application specífic integrated circuits):


Esses dispositivos precisam de um método de fabricação especial devido
a necessidade de se utilizar diversas máscaras específicas para cada etapa
de projeto.

11
11
UNIDADE Linguagem de Descrição de Hardware

O longo tempo de desenvolvimento desses dispositivos aliados aos altos custos


são alguns exemplos de problemas desses elementos, logo em aplicações de
grande volume de produção esse custo é amortizado.

• MPGAs (mask-progratnmable gate arrays): Esse dispositivo já possui uma


fabricação mais rápida pois usa máscaras genéricas com módulos préprojetados,
mas quando se trabalha com interconexoes de móduos ele volta a necessitar
máscaras especialiadas. Como usa biblioteca de células seu tempo de projeto é
mais rápido, bem como os custos menores.

• Standard CelIs: Sua construção se dá de forma semelhante ao MPGA.


Os módulos ou standard cells são salvos em módulos de banco de dados e
os projetistas selecionam as células desejadas nesses bancos. Comparado
aos anteriores, são menos eficientes em tamanho e desempenho mas de
baixíssimo custo.

• PLDs (programmable logic devices): O diferencial aqui é a capacidade


de programação por parte do usuário, dessa forma elimina-se o processo de
fabricação e aceleramos as mudanças quando necessário. Comparado com os
demais, os PLDs tem um ciclo de projeto bem menor e seus custos são mais
baixos também.

Com a grande quantidade de dispositivos CIs existentes hoje no mercado, os


desenvolvedores e projetistas de sistemas lógicos passaram a implementar diversas
novas funções em projetos de computadores e eletrônicos. Porém, houve um
problema a se resolver, com o uso de uma quantidade grande de CIs, o espaço
exigido também acabou por aumentar a placa do circuito impresso.

A redução no número de CI’s em um projeto acarreta em inúmeras vantagens


além de menor espaço ocupado na placa de circuito impresso, também um menor
consumo de energia, levando a utilização de fontes menores e mais baratas e maior
confiabilidade no projeto, uma vez que possui um número menor de interligações,
e velocidades mais altas.

O desenvolvimento de Dispositivos Lógicos Programáveis (PLD - Programmable


Logic Devices) tem proporcionado a substituição de diversos chips por um único CI,
além de poder ser programado pelo usuário, eliminando o processo de fabricação e
facilitando eventuais mudanças no projeto, diminuindo o tempo e custo do projeto.

A estrutura interna de um PLD é baseada em um array que conecta os barra-


mentos aos blocos lógicos, aos pinos de entrada e saída, e aos blocos de memó-
ria. Os PLD’s, a princípio, possuíam apenas um único bloco lógico (que realizava
globalmente as operações), conectado aos pinos de entrada e saída do dispositivo.
Com o aperfeiçoamento da tecnologia de fabricação, esses dispositivos rece-
beram uma estrutura de interconexões programáveis, que viriam flexibilizar mais
ainda a programação.
Na verdade, o grande desafio de Eletrônica Digital é o desenvolvimento
do componente “universal” que alie versatilidade com elevada capacidade, alta

12
velocidade, baixo custo e fácil manuseio. A evolução trouxe uma otimização do
aproveitamento de espaço, aumentando ainda mais as interconexões do array de
blocos lógicos. A Figura 5 mostra a evolução dos PLD’s.
Classic Max 5000 Max 7000 Flex 10K
Flex 8000
Flex 6000
Max 9000

Global Programmable Enhanced Fast Track


Interconnect Interconnect Programmable Interconnect
Array Interconnect
Array

Figura 5: Evolução da arquitetura dos PLD’s da ALTERA


Fonte: TOCCI, Ronald J.; Sistemas Digitais

Tipos de PLDs
Existem duas classificações de PLDs:
• Dispositivo de Lógica Programável Simples (“SPLD - Simple Programmable
Logic Device”);
• Dispositivo de Lógica Programável de Alta Capacidade (“HCPLD - High
Capacity Programmable Logic Device”).
Programmable
Logic
≤ 600 Gates > 600 Gates

Simple High-Capacity
PLDs Segmented PLDs Continuous
Interconnect Interconnect

FPGAs CPLDs

EPROM EEPROM FLASH SRAM Antifuse EPROM EEPROM FLASH SRAM

Figura 6: Tipos de Dispositivo de Lógica programável


Fonte: TOCCI, Ronald J.; Sistemas Digitais

Os PLD’s simples usam tecnologia CMOS, oferecem elementos de memória do


tipo EPROM, EEPROM e memória FLASH, bem como possuem uma quantidade
de portas abaixo de 600 e englobam os dispositivos PALs, GALs e outros
componentes. Os HCPLDs (dispositivos lógicos programáveis de alta capacidade)
oferecem mais de 600 portas disponíveis. Também utilizam tecnologia CMOS com
memória EPROM, EEPROM, FLASH, SRAM e opções anti-fusível. Por HCPLD’s,
entendem-se os dispositivos FPGA e CPLD.

13
13
UNIDADE Linguagem de Descrição de Hardware

Os SPLDs (Simple Programmable Logic Devices)


Os SPLDs possuem estrutura interna baseada em conjuntos de portas AND e
OR que são chamados de arranjos lógicos e podem possuir flip-flops ou não em
sua saída. Esses PLDs são utilizados quando há necessidade de baixo custo e alto
desempenho.

Tipos de SPLDs
• Matriz Programáveis Logicamente (PLA) ou Matriz programável logica-
mente em campo (FPLA)

Quando avaliamos uma PROM, percebemos a existências de duas matrizes de


interconexões AND e OR, sendo a matriz AND fixa e a matriz OR é programável.
Essa arquitetura é adequada àquelas onde cada combinação possível de entrada
se faz necessária para a geração de uma função de saída, como, por exemplo, os
conversores de código e tabelas de dados.

Na figura 7, você tem uma estrutura de PLA que é semelhante a da PROM,


diferenciando-se apenas por:
• Dispor de menor quantidade de portas AND (não é decodificador completo);
• Ter duas matrizes de conexão das portas (AND e OR) programáveis (para
compensar o número menor de portas AND).

Um PLA, embora seja o mais versátil de todos os Dispositivos Lógicos


Programáveis por possuir dois conjuntos de fusíveis, é mais difícil de fabricar,
projetar que a PROM; consequentemente, tem um custo mais alto.
E0 E1
Conexão fixa
Conexão programável pelo usuário

E0 S0
PLA
E1 S1

S0 S1

Figura 7: PLA ainda não programada, com todos os fusíveis intactos


Fonte: TOCCI, Ronald J.; Sistemas Digitais

14
• Matriz Lógica Programável (PAL)

O diferencial do PAL é que ele não necessita que todas as combinações de entrada
sejam programáveis. Logo, pode-se dizer que os PAL são uma simplificação dos
PLA, sendo apenas a matriz de conexão das portas AND programável, a matriz
OR é fixa, vide figura 8.

Cada porta AND pode ser programada para gerar qualquer dos produtos AND
das duas variáveis de entrada e de seus complementos. Cada porta OR está ligada
somente a duas das saídas ANDs. Isso limita a função a ser implementada a ter,
no máximo, dois produtos AND. Se a função precisar de mais de dois produtos,
não pode ser implementada nesta PAL, devendo ser escolhido outro modelo
que tenha mais entradas para as portas OR. Caso seja necessário menos de
dois termos para a implementação da função, as saídas não utilizadas devem ser
colocadas no nível lógico “0”.

E0 E1
Conexão fixa
Conexão programável pelo usuário

E0 S0
PLA
E1 S1

S0 S1

Figura 8: PAL ainda não programada, com todos os fusíveis intactos


Fonte: TOCCI, Ronald J.; Sistemas Digitais

• Arranjo Lógico Genérico (GAL)

As GAL’s (“Generic Array Logic”) são estruturas como a PAL, mas possuem
macrocélulas de saídas, as quais podem ser configuradas como lógica combinacional
ou sequencial (registradores), como mostrada na Figura 9.

15
15
UNIDADE Linguagem de Descrição de Hardware

Entrada habilitadora

I/O

Registradores

GAL
Combinacional
Entradas

16v8

CLK

Figura 9: Circuito típico de uma GAL


Fonte: TOCCI, Ronald J.; Sistemas Digitais

Uma única GAL pode substituir 24 tipos diferentes de PAL. A GAL é construída
com a tecnologia CMOS; isso reduz o consumo de potência comparado a dispositivos
bipolares, mas possui alta taxa de ruído. A Gal possui a mesma quantidade de pinos
do que uma PAL, em torno de 20 e 24 pinos.
• Dispositivos Lógicos Programáveis Apagáveis (EPLD)

Os EPLD’s (“Ereaseable Programmable Logic Device”) são dispositivos que têm


quantidades de pinos entre 20 a 66, bem como um consumo mais baixo de potência
do que as GALs, em torno de metade da potência, mas não são rápidos, embora
possuem um custo baixo e são fáceis de usar em desenvolvimento de sistemas.

Além disso, são detentores dos registradores programáveis como tipo D, T, JK


ou Flip-flop RS com quatro entradas para clocks independentes.

No entanto, o problema dos EPLDs é que têm posse do arranjo de portas OR


fixas e AND programáveis, as quais apresentam baixa utilização de portas.

São utilizados em telecomunicações e aplicação industrial. A figura 10 mostra uma


macrocélula como decodificador de endereços, a qual tem oito termos de produtos,
mas apenas um deles é usado. Entretanto, quando uma aplicação necessita de mais
de oito termos de produtos deve ser feito um “loop” de realimentação o qual torna
o projeto muito mais lento.

16
1 termo de produtos
é utilizado

7 termos de produtos
FF dedicado

não utilizados
A0&A1&

A0 ... An

Figura 10: Macrocélula como decodificador de endereços


Fonte: TOCCI, Ronald J.; Sistemas Digitais

Os Dispositivos de lógica Programável de Alta Capacidade (HCPLD)


Tendo em vista a necessidade cada vez maior de implementar circuitos muito
complexos, conexões entre vários SPLDs foram criadas. Além disso, para contornar
o problema de interconexão entre os vários chips, foi desenvolvido um chip único
de grande complexidade.

Os HCPLD nada mais é que um dispositivo lógico programável que possui cen-
tenas de portas, quanto maior o número de portas do PLD, maior será sua com-
plexidade e em se tratando de estrutura de conexão, os HCPLD são divididos em:
• CPLD (Complex Programable Logic Devices)
• FPGA (Field Programable Gate Array)

Normalmente, um HCPLD é constituído por várias estruturas que e repetem,


conhecidas como células e cada célula é constituída de elementos que implementam
a lógica combinacional, acompanhados dos já estudados Latches (através de
memórias e flip-flops) que são destinados à lógica sequencial.

Interligando estas duas estruturas, existem multiplexadores programáveis que


realizam a interligação destes blocos entre si e destes com o exterior da célula (para
outra célula ou para barramentos).

Um barramento é uma estrutura que se destina a promover a interligação entre


as células. É uma conexão física (trilha metalizada) disponíveis no interior do chip.
Dependendo do tipo de PLD envolvido (FPGA ou CPLD), de sua complexidade e
de seu fabricante, há diferentes recursos e modos de conexão. Basicamente, esses
blocos de conexão são estruturas de conexão segmentadas (FPGA) e estruturas
contínuas (CPLD).

17
17
UNIDADE Linguagem de Descrição de Hardware

A interface com o mundo exterior é feita através de unidades conhecidas como


blocos de entrada e saída. Sua função é conectar as células aos pinos do integrado
que, normalmente, pode ser realizada diretamente (Célula → Bloco I/O) ou
indiretamente (Célula → Barramento → Bloco I/O). A seguir, serão descritas mais
detalhadamente cada uma dessas estruturas.

Tipos de HCPLD
• Dispositivos Lógicos Programáveis Complexos (CPLDs - Complex
Programmable Logic Devices)

Esse dispositivo é um conjunto de múltiplos PLDs em um único chip, onde os


blocos lógicos se comunicam um com o outro através de interconexões programáveis.
Essa arquitetura de dispositivo permite tornar muito mais aproveitável a integração
do silício do dispositivo, permitindo a redução no custo. Um único CPLD pode
substituir centenas de componentes.

Logic Logic
Block Block

Switch
Matrix

Logic Logic
Block Block

Figura 11: Estrutura interna de um CPLD.


Fonte: TOCCI, Ronald J.; Sistemas Digitais

As interconexões programáveis formam um barramento que interliga os sinais


das entradas ou saídas para as entradas de um bloco lógico, ou das saídas de
um bloco lógico para as entradas do mesmo ou outro bloco. Além disso, cada
bloco lógico é equivalente a um SPLD, contendo suas macrocélulas com suas
interconexões. Diferente das interconexões configuráveis da SPLD, as interconexões
entre os blocos lógicos da CPLD podem não ser totalmente conectáveis, ou seja,
algumas conexões entre um bloco e outro, teoricamente, pode ser possível, mas,
na prática, não podem ser executadas. Com isso, torna-se difícil utilizar 100%
das macrocéculas.
• Arranjos Lógicos Programáveis em Campo (FPGA - Field-Programmable
Gate Array)

Esses arranjos são circuitos programáveis que não possuem planos AND e OR,
mas sim milhares de unidades de blocos lógicos iguais e configuráveis. Essas unidades
lógicas são tratadas como componentes padrões que podem ser configurados
independentemente e interconectados a partir de uma matriz de trilhas condutoras
e chaves programáveis.

18
I/O I/O I/O I/O
I/O

I/O Bloco Bloco Bloco


Lógico Lógico Lógico
clk clk clk

I/O

Bloco Bloco Bloco


Lógico Lógico Lógico
clk clk clk
I/O

I/O Bloco Bloco Bloco


Lógico Lógico Lógico
clk clk clk

Interconexão programável
Segmento de conexão
Caminho de interconexão

Figura 12: Estrutura de um FPGA


Fonte: TOCCI, Ronald J.; Sistemas Digitais

Os dispositivos FPGA são divididos em duas unidades lógicas configuráveis,


sendo uma delas (a menor) uma matriz AND/OR que é configurável. A outra
unidade (maior) é um arranjo bidimensional que possui recursos mais complexos
como multiplexadores, blocos de memória e contadores. Essa unidade, como visto
na próxima figura, é um arranjo de elementos de circuitos não conectados que
chamamos de blocos lógicos e recursos de interconexão, cuja configuração é obtida
através de programação pelo usuário.
Os blocos lógicos, mostrados nas figuras 12 e 13, são interconectados através
de segmentos de trilha e comutadores programáveis. Chama-se de roteamento
a maneira pela qual esses comutadores programáveis e segmentos de trilha são
posicionados para permitir a interconexão das células lógicas.

Figura 13: Arquitetura de uma FPGA.


Fonte: TOCCI, Ronald J.; Sistemas Digitais

19
19
UNIDADE Linguagem de Descrição de Hardware

• Diferenças básicas entre CPLD e FPGA

Ambos são dispositivos lógicos programáveis e ambos, muitas vezes, são


produzidos pelas mesmas companhias. Existem, porém, muitas diferenças entre as
tecnologias associadas:
• FPGAs contém muitos pequenos blocos lógicos com flip-flops (até da ordem
de 1000000). CPLDs são compostos por um pequeno número (algumas
centenas) de grandes blocos lógicos.
• FPGAs, tipicamente, são baseados em RAM, isto significa que perdem sua
programação após desligar a alimentação. Portanto, precisam ser reconfigurados
(reprogramados) após cada corte de energia. CPLDs são baseados em EEPROM
mantendo sua programação após desligar a alimentação.
• CPLDs têm um tempo de resposta melhor, por ser composto de alguns
poucos grande blocos lógicos. Em contrapartida, essa característica lhe dá
menos flexibilidade.
• FPGAs têm recursos de roteamento especiais para implementar de maneira
eficiente funções aritméticas e RAM. CPLDs não têm.
• FPGAs podem ser usados em projetos grandes e complexos, enquanto CPLDs
estão restritos a projetos bem menores.

20
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:

Sites
Arquiteturas de Computadores
https://goo.gl/RZKgpz
Tópicos de Informática Aplicados à Administração
https://goo.gl/F92pAx

Livros
Eletrônica Digital - Teoria e Laboratório
Garcia, P. A., Eletrônica Digital - Teoria e Laboratório, Ed. Érica, 2006.
Fundamentals of Digital Logic with VHDL Design
Stephen Brown, Zvonko Vranesic; Fundamentals of Digital Logic with VHDL
Design; 3a Edição; McGraw-Hill; 2008.

21
21
UNIDADE Linguagem de Descrição de Hardware

Referências
MONTEIRO, Mario A.; A Organização de Computadores; 5ª Ed.; Editora:
LTC; 2012.

TANENBAUM, Andrew S.; Organização Estruturada de Computadores; 5ª


Ed.; Editora: Pearson Education; 2006.

22

Você também pode gostar