Você está na página 1de 113

Faculdade de Filosofia Ciências e Letras Santa Marcelina.

FAFISM – Muriaé - MG

Arquitetura de computadores.
Notas de aula.

Prof. Tarcísio Barroso Marques.


2011

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG


tarcisiob@gmail.com
Apresentação da disciplina

A disciplina “Arquitetura de computadores” tem por finalidade apresentar o


“mundo” do hardware do computador, mostrando a sua constituição, seus circuitos
internos, e sua lógica de funcionamento. Arquitetura não é um simples curso de
montagem de computadores. Encaixar as peças em um computador e fazê-lo
funcionar é uma tarefa relativamente fácil. Muito mais interessante é entender a
função de cada componente e suas interconexões. Para isto iremos mergulhar
num mundo fascinante que envolve diretamente a eletrônica e seus circuitos
lógicos. É objetivo deste curso fornecer-lhe sólidos fundamentos para operação
dos circuitos digitais, como por exemplo: Portas lógicas, memórias,
processadores, dentre outros.

Estas notas de aula visam apenas complementar os estudos, sendo o livro


texto (Sistemas Digitais, Princípios e Aplicações), a fonte de principal consulta.
Espero que esta disciplina seja-lhe motivante e de grande proveito. Bons estudos!

Prof. Tarcísio

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 2


tarcisiob@gmail.com
1 Um breve histórico.

Se notarmos, o ramo da informática evoluiu-se numa velocidade incrível


principalmente a partir do surgimento do que chamamos de semicondutores de
silício (transistores, diodos). Em 1956 foi posto no mercado, o primeiro
computador transistorizado. Acompanhe a próxima tabela que mostra a evolução
dos computadores. Abaixo, a foto do marco inicial do computador, o ábaco,
inventado no ano 500 a.C.

1. 1 Eventos relevantes da evolução da computação.

500 a.C. Invenção e utilização do ábaco


1642 d.C. Blaise Pascal cria sua máquina de somar.
1670 Gottfried Leibniz cria uma máquina de calcular que realiza as quatro
operações aritméticas.
1823 Charles Babbage cria a máquina de diferenças, por contrato com a
Marinha Real Inglesa.
1842 O mesmo Babbage projeta uma máquina analítica para realizar
cálculos.
1889 Herman Hoilerith inventa o cartão perfurado.
1890 Hollerith desenvolve um sistema para registrar e processar os dados
do censo.
1924 Constituição da IBM.
1939 John Atanasoff projeta o primeiro computador digital.
1946 Término da construção do ENIAC.
1946 John von Neumann propõe que um programa seja armazenado no
computador e projeta o IAS, implementando sua proposta.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 3


tarcisiob@gmail.com
1951 Termina a construção do primeiro computador comercial de
propósito geral, o UNIVAC.
1956 Termina a montagem do primeiro computador transistorizado, o
TX-0, no MIT.
1957 Uma equipe da IBM, liderada por John Bachus, desenvolve a
primeira linguagem de alto nível, Fortran, voltada para solucionar
problemas matemáticos.
1958 A IBM lança o IBM-7090.
1958 Jack Kilby, na Texas Instruments, completa a construção do primeiro
circuito integrado, contendo cinco componentes.
1962 Douglas Engelbart, do Stanford Research Institute, inventa o mouse.
1964 A IBM lança o IBM/360, primeiro computador a utilizar circuitos
integrados.
1964 A linguagem Basic (Beginners All-purpose Symbolic Instruction
Code) é desenvolvida por Thomas Kurtz e John Kennedy no
Dartmouth College. Mais tarde, ela se torna popular devido ao
lançamento do Altair com o interpretador desenvolvido por Bifl Gates
e Paul AIIen, fundadores da Microsoft.
1965 Gordon Moore, diretor de pesquisa e desenvolvimento da empresa
Fairchild Semiconductor, prevê que a densidade dos transistores e
circuitos integrados dobraria a cada 12 meses nos 10 anos
seguintes. Esta previsão foi atualizada em 1975, substituindo 12
meses por 18 meses e tornou-se conhecida como Lei de Moore.
1967 A primeira versão do sistema operacional Unix é lançada, rodando
em um computador DEC PDP-7. Este sistema foi escrito, a partir de
1969, no Bell Laboratories, por Dennis Ritchie e Ken Thompson.
1970 A linguagem Pascal é projetada por NickJaus Wirth.
1971 A Intel lança o primeiro sistema de microcomputador, baseado no
processador 4004, com desempenho de 60.000 operações por
segundo e 2.300 transistores encapsulados.
1971 Dennis Ritchie, do Bell Labs, desenvolve a linguagem C.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 4


tarcisiob@gmail.com
1972 Gary Kildall escreve um sistema operacional na linguagem PL/M e o
denomina CP/M (Control Program/Monitor).
1973 A Intel lança o processador 8080 de 2 MHz (primeiro lançamento em
1973), com 6000 transístores e 640.000 instruções por segundo. O
CP/M é adaptado para o 8080 e a Motorola lança seu processador
de 8 bits, o 6800.
1974 Na edição de janeiro da revista Popular Electronics é realizado o
lançamento do primeiro microcomputador de 8 bits, o Altair.
1975 Steve Wozniak e Steve Job formam a Apple Computer. A DEC lança
um de seus mais populares minicomputadores, o VAX 11/780.
1976 A Apple Company lança seu computador Apple II.
1976 Surge a primeira planilha eletrônica, Visicalc.
1977 A IBM anuncia o lançamento de seu primeiro microcomputador, o
IBM-PC.
1979 A Apple apresenta seu primeiro computador do tipo Macintosh.
1981 A Microsoft lança sua planilha Excel, o primeiro aplicativo para o
Windows.
1984 A Microsoft lança seu sistema operacional Windows para IBM-PCs.
1987 A Microsoft lança a versão 3.0 do Windows para PCs.
1989 A AMD lança seu clone do processador Intel 386.
1990 A IBM e a Motorola estabelecem um acordo para desenvolvimento do
microprocessador PowerPC.
1991 A IBM lança um microcomputador portátil, o ThinkPad 700C.
1992 Linus Torvalds desenvolve o sistema operacional Linux, na Finlândia.
A NCSA desenvolve o primeiro navegador para Internet, o Mosaic.
1993 O Mosaic se transforma no Netscape.
1994 A Iomega lança seus Zip drives.
1995 Inicia-se o contencioso entre a Microsoft e o governo dos EUA, que
dura até os dias atuais.
1996 Aparecem no mercado os CD-RW (CD que podem ser regravados).
1998 A Compaq adquire a DEC.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 5


tarcisiob@gmail.com
1. 2 Linguagem de “Alto Nível”

Uma linguagem é dita de “Alto nível”, quando ela se aproxima à fala


humana. Todas as plataformas de programação mais empregadas, utilizam
linguagens de alto nível. Como exemplos temos o Visual Basic, .net, Delphi,
dentre outros. Veja um exemplo de uma linguagem em Delphi:

Linguagem Delphi:
Procedure Tform1.TesteAsm;
Var I, Total: Integer;
Begin
Total :=0;
For i:= 0 to 5 do
Total:= Total + 10;
End;

1.3 Linguagem de “Baixo Nível”

A linguagem de “Baixo nível” é aquela de difícil entendimento por nós


humanos. O computador usa por exemplo uma linguagem de baixíssimo nível,
conhecida como linguagem de máquina ou binária. Isto que dizer que o programa
que digitamos em um ambiente como o Delphi ou o Visual Basic, é convertido
para tal linguagem. Veja o exemplo de uma linguagem de máquina.

Linguagem de máquina (binário)

00010111010101
0000111110011010011
00110011001100110010
00000001

Uma vez que a linguagem que o computador trabalha é a linguagem


binária, em arquitetura de computadores, daremos ênfase à esta linguagem.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 6


tarcisiob@gmail.com
Componentes de um sistema de computação.

Um sistema de computação é composto basicamente por informações de


entrada, memória, processador e informações de saída. A figura a seguir ilustra
bem este conceito:

Números binários.

Conforme comentado anteriormente, estudaremos em maior detalhes a


linguagem binária utilizada pelos computadores. Para isto conceituaremos o bit e o
byte.

O Bit.
Assim como para nós a letra “A” do alfabeto separada não faz muito sentido
(somente agrupando algumas letras conseguiremos formar uma palavra), também
poderemos dizer o mesmo para o “bit”. O bit portanto é a menor unidade de
informação. Somente agrupando-os conseguiremos atribuir comandos ao
computador.

O bit zero, indica para o computador a ausência de tensão. Já o bit um


indica a presença da tensão. E, acredite, apenas com a combinação de zeros e
uns, conseguimos fazer tudo isto que vocês já sabem que o computador faz!

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 7


tarcisiob@gmail.com
Explicando melhor.

Suponha que você tenha uma pizzaria e resolva criar um sistema de


códigos para seus empregados da seguinte forma:

Você colocou um painel com duas lâmpadas e montou uma tabela (mais adiante
chamaremos esta tabela de “tabela verdade”). Toda vez que quiser solicitar a
elaboração de uma pizza, adotara um código previamente estabelecido. Assim,
zero, indica uma luz apagada e um indica uma luz acesa.

0 0 – Pizza de calabresa
0 1 – Pizza de Mussarela
1 0 – Pizza de quatro queijos
1 1 – Pizza Portuguesa

Observe que com dois bit´s conseguimos fazer quatro combinações, de tal forma a
poder codificar quatro pizzas. Os números que estamos utilizando são números
binários, ou seja, estão na base 2. Veja que interessante:
Dois números
binários
2 números binários geram quatro combinações porque 22 = 4

Base 2

Seguindo a mesma linha de raciocínio, para a pizzaria poder vender 8 pizzas,


quantos números binários seriam necessários?
Três números binários

23 = 8
Base 2

Pelos cálculos verificamos que precisaremos de três números binários. Veja a


tabela abaixo

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 8


tarcisiob@gmail.com
Número Nome da Terceiro Segundo N. Primeiro
da Pizza Pizza N. Binário Binário N. Binário
0 Calabresa 0 0 0
1 Portuguesa 0 0 1
2 Mista 0 1 0
3 Mussarela 0 1 1
4 Frango 1 0 0
5 Atum 1 0 1
6 Bacalhau 1 1 0
7 Francesa 1 1 1

Note que estamos utilizando três lâmpadas. Então, chegamos à conclusão


de que os bit´s podem ser agrupados. Na tabela acima estamos agrupando três
bit´s.

O Byte.
O byte é um agrupamento de oito bit´s. Agora vem a pergunta: Com oito
bit´s (1 byte) quantas combinações possíveis poderemos ter? A resposta para esta
pergunta é fácil:

28 = 256 combinações

Poderíamos ter portanto, pizzas numeradas de zero à 255!

A base decimal x base binária.

A base decimal é conhecida por nós. Na tabela anterior notamos que


trabalhos com oito pizzas, mais especificamente numeradas de zero à sete. Zero e
sete são números decimais. Podemos notar uma equivalência entre os números
decimais e os números binários (zero e um). Antes, porém, vamos verificar porque
o número 152 é decimal ou seja, base 10:

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 9


tarcisiob@gmail.com
152 10

2 15 10 Número mais
5 1 significativo
1 Centena

5 Dezenas

2 Unidades

Número menos
significativo

152 está na base decimal porque pode ser representado na potência de 10.

152 = 2 * 100 + 5 * 101 + 1 * 102 = 2 + 50 + 100

Num. Menos
significativo

A base binária representada como base decimal.

Assim como na base decimal temos o número 10 como base (0 a 9), na


base binária teremos o número 2 como a base, pois apenas poderemos ter os
números zero e um. Observe a tabela de pizzas feita anteriormente:
Número Nome da Terceiro Segundo N. Primeiro
da Pizza Pizza N. Binário Binário N. Binário
0 Calabresa 0 0 0
1 Portuguesa 0 0 1
2 Mista 0 1 0
3 Mussarela 0 1 1
4 Frango 1 0 0
5 Atum 1 0 1
6 Bacalhau 1 1 0
7 Francesa 1 1 1

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 10


tarcisiob@gmail.com
A pergunta é: Porque se olharmos por exemplo para a pizza Mussarela,
podemos afirmar que o número binário 0 1 1 representa o número decimal 3?
Lógico, nós fizemos a tabela, mas há uma equivalência evidente. Veja só:

Num. Menos
significativo
0 1 12

0 1 12 = 1 * 20 + 1 * 21 + 0 * 22 = 1 + 2 + 0 = 310

Pronto! Aprendemos que para converter de uma base binária para uma base
decimal, basta multiplicarmos pelas potências de 2. De posse deste conceito
poderemos fazer alguns exercícios.

Conversões entre bases


Converta os números binários para a base decimal:

1. 101010101
2. 1111
3. 11000001
4. 111111

As grandezas binárias

Assim como na vida real encontramos grandezas que representam as


potências de dez (quilo, mega, giga), as mesmas grandezas são usadas para
representar os números binários. Devemos apenas lembrar que tais números são
representados por potências de 2.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 11


tarcisiob@gmail.com
Grandeza Nome Equivalência decimal Equivalência binária
10
K Quilo 10 x 10 x 10 = 1000 2 = 1024

M Mega 1000K = 1000 x 1000 = 1024K = 1024 x 1024 = 1.048.576


1.000.000

G Giga 1000M = 1000 x1.000.000 = 1024M = 1024x1.048.576 =


1.000.000.000 1.073.741.824

T Tera 1000G = 1000 x 1.000.000.000 1024G

Exercícios
Grandezas binárias

Os números binários abaixo representados equivalem a quantos bit´s?

1. 1Mbit
2. 256 Kbit´s
3. 32 Mbit´s
4. 128 Mbit´s
5. 16 Mbit´s

A base decimal representada como base binária.

Ainda no exemplo da pizzaria, aprendemos a converter o número binário 1


0 1 em um número decimal, no caso 1 012 = 510. Como seria porém o processo
inverso. Como saber que o número 5 equivale a 1 0 1? Para resolver este
problema basta dividir o número decimal pela base que se deseja converter (base
2).

Decimal para binário – divide pela base 2


Binário para decimal – multiplica pela base 2.

5 2

1 2 2

0 1 = 1 01

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 12


tarcisiob@gmail.com
Outro exemplo:

610 = ?2

6 2

0 3 2

1 1 = 1 1 0

Exercícios propostos:

1. Conceitue Hardware e Software.


2. Dê exemplos de dispositivos de memória, de entrada e de saída em um
computador. Explique a função de cada um.
3. Conceitue linguagem de alto e baixo nível.
4. Os números binários abaixo representados equivalem a quantos bit´s?

2 Gbit´s
32 Mbytes
128 Kbytes
256 Mbytes
10 Bytes

5. Converta os números em binário para a base decimal. Em seguida, faça a


operação inversa, convertendo-os novamente para a base binária.

110010
1010
0011
1001
100

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 13


tarcisiob@gmail.com
6. Converta os números decimais para a base binária. Em seguida, faça a
operação inversa:

10
64
128
32
135

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 14


tarcisiob@gmail.com
Capítulo 2

2.1 - Outras bases

Foi usada até o presente momento a base decimal, (que é a que todos nós
conhecemos) e a base binária (usada pelo computador). Além destas, existem
outras duas bases muito comuns no uso da linguagem de computadores.

2.1.1 - Porque utilizamos tantas bases?

A base binária pode estar mais fácil de aceitar pois sabemos que o
computador trabalha somente com zeros (0) ou uns (1). Daí a importância de
sabermos representar um número decimal na base binária e vice-versa.

Outras bases existem pela necessidade de abreviar um número binário. Por


exemplo, para representarmos um número 3210 em seu equivalente binário
utilizamos a notação:

3210 = 11112

Observe que quanto menor a base de numeração, maior é a quantidade de


algarismos necessários para representar um dado número.

3210  Utiliza apenas dois algarismos


11112  Utiliza quatro algarismos.

2.1.2 - Base Octal.

Como o próprio nome diz, a base Octal é representada por oito números (0
a 7). Isto quer dizer que, em analogia à base binária, os números expressos em
base octal podem ser decompostos em potências de 8.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 15


tarcisiob@gmail.com
2.1.2.1 - Conversão da base octal para a base decimal.

Conforme comentamos, como estamos utilizando a potência de 8, para


convertermos de uma base octal para uma base decimal basta decompor o
número como o exemplo a seguir:

Exemplo: 1318 = 1 * 80 + 3 * 81 + 1 * 82 = 1 * 1 + 3 * 8 + 1 * 64 = 1 + 24 + 64 = 8910

2.1.2.2 A base decimal representada como base Octal.

Assim como podemos representar um número octal em uma base decimal,


também é possível fazer o processo inverso. Neste caso, basta dividirmos pelo
número 8. Veja o exemplo de conversão do número 8910 para uma base octal:

8910 = ?8

89 8

1 11 8

3 1 = 1 3 18

2.1.3 - Exercícios.

Converta os números decimais para as suas respectivas bases octais. Logo


após faça o processo inverso, convertendo-os de Octal para decimal.

1. 128
2. 37
3. 8
4. 90
5. 125
6. 225
7. 237
8. 410
9. 640
10. 880

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 16


tarcisiob@gmail.com
2.1.4 - A base hexadecimal.

A base hexadecimal permite representar números com potências de 16.


São utilizados portanto, 16 números para a sua representação ( 0 a 15). Veja uma
tabela comparativa.
Decimal Hexadecimal
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 A
11 B
12 C
13 D
14 E
15 F

Observe na tabela anterior que a partir do número 10 o equivalente hexadecimal é


representado por letras para que não se confunda por exemplo 10(dez) com 1
(um) 0(zero) ou então 15(quinze) com 1(um) 5(cinco) que são diferentes.

2.1.4.1 - Conversão da base hexadecimal para a base decimal.

Conforme comentamos, como estamos utilizando a potência de 16, para


convertermos de uma base hexadecimal para uma base decimal basta decompor
o número como o exemplo abaixo:

Exemplo: 2A516 = 5 * 160 + 10 * 161 + 2 * 162 = 5 * 1 + 10 * 16 + 2 * 256 = 5 + 160


+ 512 = 67710

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 17


tarcisiob@gmail.com
2.1.4.2 - A base decimal representada como base Hexadecimal.

Assim como podemos representar um número hexadecimal em uma base


decimal, também é possível fazer o processo inverso. Neste caso, basta
dividirmos pelo número 16. Veja o exemplo de conversão do número 67710 para
uma base hexadecimal:

67710 = ?16

677 16

5 42 16

10 2 = 2 10 5 16 = 2 A 5 16

2.1.5 - Exercícios.

Converta os números decimais para as suas respectivas bases


hexadecimais. Logo após faça o processo inverso, convertendo-os de
hexadecimal para decimal.

1. 750
2. 330
3. 470
4. 980
5. 1000
6. 782
7. 16
8. 652
9. 698
10. 985

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 18


tarcisiob@gmail.com
2.2 - Conversão entre bases diferentes.
Uma vez que sabemos manipular as bases diferentes, é possível a
conversão entre quaisquer bases tomando o seguinte cuidado:

Toda a conversão entre bases diferentes de 10, deve-se antes converter para a
base decimal. Exemplo: Binária para hexadecimal  Converta antes para a base
decimal. Octal para binário  Converta antes para decimal e assim por diante...

2.2.1 - Exercícios.

Efetue as conversões conforme indicado:

374218 = ? 16
14A3B16 =?8
110111000112 = ? 16
2BEF516 =?8
53318 =?2
1000110112 = ? 8
21710 =?2

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 19


tarcisiob@gmail.com
Capítulo 3 – Portas lógicas

3.1 - Portas lógicas (Conceito).

Portas lógicas são dispositivos eletrônicos que tem várias aplicações na


prática, não somente no ramo da computação como também na automação
comercial, industrial e na eletrônica em geral. O principal objetivo de uma porta
lógica é analisar as entradas de dados e fornecer uma determinada resposta de
acordo com uma tabela, conhecida como “tabela verdade”.

Como um exemplo prático, imaginemos o seguinte:

Suponha uma residência que contenha um portão e uma porta de entrada.


Suponha ainda que você tenha uma ajudante que lhe presta serviços. Desta
forma, ao sair para o trabalho, você deixa o portão apenas encostado, pois a
ajudante possui apenas a chave da porta de entrada. O que se deseja é construir
um alarme que possa disparar quando você esquecer a porta de entrada aberta E
também o portão. Neste caso, por sua casa estar vulnerável a ladrões, o alarme
deverá avisar-lhe.

O exemplo, embora extenso, é extremamente fácil de ser resolvido com o


emprego da eletrônica digital. Para solução será empregada uma porta lógica
conhecida como Porta lógica AND (E).

3.1.1 - A porta lógica AND (E).

O dispositivo eletrônico conhecido como porta lógica AND (E) tem a


seguinte simbologia:

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 20


tarcisiob@gmail.com
Observe na figura anterior que esta porta lógica contém duas entradas e
apenas uma saída. O seu funcionamento dá-se observando a seguinte tabela
verdade:

Decimal B A Saída = A.B


0 0 0 0
1 0 1 0
2 1 0 0
3 1 1 1

Regra:

Esta porta lógica é conhecida como porta que faz multiplicação binária pois
quando temos qualquer uma das entradas igual a 0 (zero), a saída sempre será
zero.

Solução do exemplo prático.

Se é desejado que o alarme soe apenas quando for esquecido o portão E a


porta aberta, basta ligá-los conforme mostrado na figura anterior. Desta forma a
sirene soará apenas quando tivermos nível lógico 1 tanto na porta quanto no
portão. Neste caso foi considerado que deve ser colocado um sensor que ao abrir
a porta/ portão, forneça o nível lógico desejado.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 21


tarcisiob@gmail.com
O que é um nível lógico.

O nível lógico é chamado de alto ou um (1) quando tem-se uma tensão por
volta de 5 volt´s. Por outro lado, o nível lógico baixo ou zero (0) é considerado
quando tem-se uma tensão por volta de 0 volt´s. Observe que apesar de estarmos
usando tensões, para nós o que interessa é o número zero e o número um.

Detalhando um pouco mais o exemplo prático:

Se você não entendeu muito bem esta simbologia, não se preocupe. Isto é
comum, pois este foi o primeiro contato com uma porta lógica. O importante é
notar que quando o portão for aberto o sensor “joga” o nível lógico 1 (um) na
entrada da porta lógica. Por sua vez, analisando as entradas, ela irá “jogar ou não”
nível lógico 1 (um) em sua saída. Se ela colocar a saída em nível lógico 1 (um) a
sirene soará. Caso contrário a sirene ficará muda.

A porta lógica inversora.

A porta lógica inversora, assim como todas as demais portas é muito


utilizada na computação, automação industrial e eletrônica digital. Mostrada na
figura abaixo, ela comporta-se, como próprio nome diz, invertendo a sua entrada
ou seja:

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 22


tarcisiob@gmail.com
0 – Nível lógico zero (tensão igual a 0 v)  Apresenta nível lógico um (tensão
igual a 5 v).

1 – Nível lógico um (tensão igual a 1 v)  Apresenta nível lógico zero (tensão


igual a 0 v).

Esta pequena bola


representa inversão!

Observe na figura anterior que esta porta lógica contém uma entrada e uma
saída. O seu funcionamento dá-se observando a seguinte tabela verdade:

Inverteu a entrada. Por isto


é chamada de inversora
Decimal A Saída = A
0 0 1
1 1 0

Aplicação prática de uma porta inversora:

Montar um alarme que avisa-lhe quando um portão foi esquecido aberto.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 23


tarcisiob@gmail.com
Foi considerado no exemplo anterior que a sirene soará apenas quando
nela for aplicada nível lógico igual a um.

Exemplo de uma aplicação prática, empregada em computadores, para


a transferência de dados a um dado momento.

O exemplo anterior mostra perfeitamente o computador tentando enviar os


dados no “registrador de origem” para, por exemplo, uma impressora (registrador
de destino). Imagine que a impressora está com o Buffer cheio de dados e está
imprimindo. Neste instante, o computador tenta enviar novos dados a serem
impressos.

Como a impressora está ocupada, ela coloca nível lógico igual a zero em
“sinal da UC”. Assim os dados do registrador “A” (neste exemplo o computador)
não são enviados para o registrador “B” (impressora) pois zero em uma porta
lógica E dará sempre zero em suas saídas.

Para os dados serem transferidos do computador para a impressora, é


necessário que se coloque o nível lógico igual a um em “sinal da UC”

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 24


tarcisiob@gmail.com
Exercícios

1) Seja A = 0110 e B = 1101. Calcular X = A . B. B A Saída


0 0 1
2) Seja A = 0101, B = 0011 e C = 1111.
0 1 1
Calcular X = A . B . C. 1 0 1
1 1 0
3) Utilizando portas lógicas E e também portas
lógicas inversoras, montar o circuito que atenda a tabela verdade.

4) Seja A = 1 e B = 0. Calcular A.B (Porta lógica E


com uma inversora ligada em sua saída).

Seja A = 1 e B = 0. Calcular A . B (Uma porta lógica


inversora ligada a cada entrada da porta lógica E.

5) Complete a tabela verdade de acordo com o circuito


mostrado:

B A Saída
0 0
0 1
1 0
1 1

6) Complete a tabela verdade de acordo com o circuito mostrado:

C B A Saída
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

Porta lógica NE (NAND).

A porta lógica NE funciona exatamente de forma inversa à porta lógica E.


Observe a presença da “bolinha” na saída da mesma, indicando uma inversão dos
valores. Veja a sua simbologia, seguida pela tabela verdade:

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 25


tarcisiob@gmail.com
A B Saída
0 0 1
0 1 1
1 0 1
1 1 0
S = A.B

Porta lógica OU (OR).

Assim como todas as portas lógicas, a porta lógica OU também tem


diversas aplicações. Sua tabela verdade está mostrada abaixo, bem como sua
simbologia: B A Saída
0 0 0
0 1 1
1 0 1
1 1 1
S = A+B

Pela tabela verdade podemos notar que basta apenas uma entrada estar
em nível lógico “1” para que a saída fique em “1”.

Exemplo prático.

Seguindo o exemplo do alarme, imagine que


queiramos construir um alarme que soe quando
uma ou mais portas forem abertas em sua casa.
Veja o exemplo que se segue:

Quando uma das


portas se abrir, o
alarme soará

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 26


tarcisiob@gmail.com
Porta lógica NOU.

Em analogia com a porta lógica NE, a porta lógica NOU comporta-se


exatamente de forma inversa à porta lógica OU. Veja a tabela verdade e
simbologia:

Tabela verdade da porta lógica NOU

B A Saída
0 0 1
0 1 0
1 0 0
1 1 0
S = A+B

Exercícios.

1) Dadas as expressões matemáticas, desenhar o circuito lógico:

a. A + B * A * B + A * C

b. (B * A + A + B + B + C ) * (A + B)

c. (B + D) + (A + C)

d. (A + B) * (B * C) + (A * B)

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 27


tarcisiob@gmail.com
2) Dado os circuitos lógicos, escrever a expressão matemática:
a. b.

3) Escreva a expressão matemática dos circuitos lógicos mostrados abaixo:

Calma, bons estudos e até o próximo capítulo, onde poderemos praticar os


conhecimentos adquiridos até aqui!

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 28


tarcisiob@gmail.com
Capítulo 4 – Os circuitos integrados

4. 1– Introdução

Os circuitos integrados são pastilhas de silício (um material semi-condutor)


que integram uma variedade de circuitos em um só local. Suas aplicações são
inúmeras e não exagero dizer que praticamente todo o dispositivo eletrônico atual
possui ao menos um circuito em seu interior.

No que diz respeito às portas lógicas, o circuito integrado corresponde à um


agrupamento de vários circuitos lógicos. Todas as portas lógicas estudadas até o
momento são facilmente encontradas neste dispositivo. A figura que segue, ilustra
um circuito integrado visto pelo lado de fora do encapsulamento:

Ranhura

Os circuitos integrados são identificados pela numeração, escrita em sua


parte superior. Isto permitirá a você, identificar o circuito, que mediante uma
consulta aos manuais, poderá visualizar os diagramas elétricos que representam
o seu interior.
Em nossos estudos, a maioria dos chip´s possuirão 14 pinos, o que não é
uma regra, uma vez que existem circuitos integrados com inúmeros terminais,
dependendo de sua complexidade.
Outro ponto importante a ser observado refere-se à ranhura do circuito que
indica que o início da contagem dos pinos será feito na parte inferior esquerda da
mesma.
A seguir, iremos aprofundar a nossa visão para os circuitos integrados de
todas as portas lógicas estudadas até o momento.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 29


tarcisiob@gmail.com
4.2 – Encapsulamento da porta lógica E

O encapsulamento da porta lógica E está disposto no circuito integrado


7408, que é composto por quatro portas “E”, conforme observa-se na figura
abaixo:

4.3 – Encapsulamento da porta lógica NE

O encapsulamento da porta lógica NE está disposto no circuito integrado


7400, que é composto por quatro portas “NE”, conforme observa-se na figura
abaixo:

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 30


tarcisiob@gmail.com
4.4 – Encapsulamento da porta lógica OU

O encapsulamento da porta lógica OU está disposto no circuito integrado


7432, que é composto por quatro portas “OU”, conforme observa-se na figura
abaixo:

4.5 – Encapsulamento da porta lógica NOU

O encapsulamento da porta lógica NOU está disposto no circuito integrado


7402, que é composto por quatro portas “NOU”, conforme observa-se na figura
abaixo:

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 31


tarcisiob@gmail.com
4.6 – Encapsulamento da porta lógica INVERSORA

O encapsulamento da porta lógica Inversora está disposto no circuito


integrado 7404, que é composto por seis portas inversoras, conforme observa-se
na figura abaixo:

4.7 – Outros encapsulamentos.

Existem milhares de outros encapsulamentos. Veja alguns exemplos:

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 32


tarcisiob@gmail.com
Como você mesmo deverá estar imaginando, as combinações realmente
são inúmeras e a sua existência depende primordialmente ao fator aplicação.
Muitos circuitos integrados nascem da necessidade de aplicação específica para
um determinado fabricante de equipamentos eletrônicos por exemplo. Mas sempre
lembre-se, todos os circuitos complexos, com muitas ligações internas, derivam
através de uma análise cuidadosa, essencialmente das portas lógicas simples,
como as que já aprendemos até o momento. Basta para isto, observar os as
imagens anteriores.

4.8 – Interconexões elétricas entre os circuitos.

Para efetivamente usarmos os circuitos precisamos fazer conexões


elétricas através de fios, entre os seus diversos pinos. A questão resume-se em
praticamente analisar o desenho do circuito final, feito através da simbologia das
portas lógicas e na seqüência, na tradução desta simbologia para os diagramas
elétricos dos circuitos conforme mostrados nas figuras anteriores.
Para que possamos ser mais claros, observe o diagrama elétrico de um
circuito digital relativamente simples:

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 33


tarcisiob@gmail.com
Pode-se observar na figura anterior que serão necessárias duas portas
lógicas: A porta lógica NOU (7402) e a porta lógica NE (7400). Veja então, os dois
diagramas desenhados um ao lado do outro e observe as suas interconexões:

Analisando o desenho anterior, observamos que foram feitas todas as


ligações necessárias ao funcionamento do circuito, bastando que ele seja ligado à
fonte de alimentação (5 v para circuitos TTL) para que entre em operação e
apresente uma saída que irá variar de acordo com as entradas A, B e C.
Fica aqui uma pergunta que você deverá estar fazendo agora: “Como é que
eu irei visualizar a saída?” ou mesmo: “Como eu poderia ligar uma sirene à saída
do circuito?”. Isto, garanto-lhes, será muito interessante, mas vou deixar você um
pouco curioso agora.... Por hora vamos nos ater a fixar o que foi aprendido,
fazendo alguns exercícios e, no próximo capítulo daremos início ao aprendizado
desta interface com a saída.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 34


tarcisiob@gmail.com
Exercícios

Montar o diagrama de interconexões para os circuitos ou expressões matemáticas


mostradas abaixo:

1) 2)

3) 4)

5) 6)

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 35


tarcisiob@gmail.com
Capítulo 5 – O Transistor

5. 1 Introdução

Transistores são um dos desenvolvimentos mais importantes da física de


estado sólido e da engenharia de dispositivos dos últimos 50 anos. A integração
dos transistores tem sido a base de todo o desenvolvimento da indústria de
informática, uma vez que cada processador é composto por uma infinidade de
transistores.
Existem várias formas de se apresentar um transistor de junção,
procuraremos nesta disciplina, seguir uma apresentação que realce mais a parte
conceitual, sem ater-nos às questões físicas, embora muito importantes.
O transistor é um dispositivo ativo, portanto ele é capaz de amplificar a
potência do sinal de entrada. Um transistor é capaz de amplificar um pequeno
sinal de entrada permitindo que haja um grande fluxo deste sinal em sua saída.
Para facilitar o seu entendimento, bastamos compara-lo à um chuveiro que,
mediante à um mínimo esforço (abertura de um registro) podemos controlar um
intenso fluxo de água que cai sobre nós, ao tomarmos um banho. Podemos então
dizer, que basicamente para que um transistor possa operar é necessário:

• Uma fonte de alimentação (Como se fosse a caixa d´agua).


• Uma base de entrada ( Como se fosse o registro do chuveiro)
• Uma fonte de excitação (Ação de abrir ou fechar o registro do chuveiro)
• Uma carga (A própria pessoa que deseja tomar banho).

Conforme vimos, pelo fato de ser um dispositivo ativo, ele necessita de uma
fonte de alimentação. Consequentemente, o transistor apresenta 3 entradas, uma
para o sinal de entrada e as outras duas associadas ao sinal de saída e à
alimentação.
As fontes de alimentação destinam-se à fornecer energia elétrica ao
transistor. Sua construção é relativamente simples, porém requer conhecimentos

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 36


tarcisiob@gmail.com
de eletrônica. Por este motivo, vamos simplesmente usa-la ou substituí-la por
pilhas. O nome transistor vem do inglês, sendo composto por trans(fer+res)istor,
ou seja, apresenta características de um resistência associada com capacidade de
transferir a informação.
O transistor é um sanduíche de duas junções pn (dispositivos
semicondutores), uma de frente para a outra, formando uma sequência de junções
npn. Estas seções são chamadas de coletor, base e emissor.

A corrente na base (registro do chuveiro) controla a passagem de corrente


no coletor (caixa d´agua para o chuveiro), ou seja, em condições ótimas de
operação, a corrente no coletor é proporcional à corrente na base. Existem
diversos tipos de invólucro (material com que é revestido), variando basicamente
de acordo com o material semicondutor e potência de dissipação. A figura que
segue, exibem os invólucros mais comumente encontrados.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 37


tarcisiob@gmail.com
5.2 - Polarizando um transistor de junção

Existem algumas regras "práticas" para que o transistor funcione de forma


correta, polarizado em sua região ativa. Em toda nossa discussão, o tipo de
transistor analisado será um npn. A observação das regras apresentadas a seguir
permitem a solução de uma parte significativa dos problemas relacionados a
polarização de transistores.

1. O colector deve ser mais positivo que o emissor.


2. As junções base-emissor e base-coletor apresentam similaridades a
diodos. A junção base-emissor tem polarização direta e a junção
base-coletor tem polarização reversa.
3. Para cada transistor, existem valores máximos de corrente do
coletor, IC, da base, IB, e de tensão entre o coletor e o emissor, VCE,
os quais não podem ser excedidos sem custar ao "excededor" o
custo de um novo transistor!! Prestar atenção também à potência a
ser dissipada pelo transistor (P=IC VCE).
4. Sendo as regras anteriores obedecidas, existe uma relação entre a
corrente do coletor e da base dada por IC = b IB. Atenção, depende
fortemente da construção do transistor, nao é um bom parâmetro de
projeto.
5. Como o valor de b em geral é grande (>100), aproxime que a
corrente no coletor e no emissor são iguais, IE = IC (logo, IE = b IB) .
6. A polarização direta da junção base-emissor faz com que a tensão
na base seja (para transistores de silício) da ordem de 0.6 V maior
que a tensão no emissor, ou seja VE = VB - 0.6 V

A seguir, mostra-se uma maneira simples de polarização de um transistor:

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 38


tarcisiob@gmail.com
Você poderia estar questionando: “Mas onde entram as portas lógicas....?”.
A resposta para esta pergunta é simples: A porta lógica possui uma saída que
fornece uma pequena corrente elétrica, incapaz de acionar grandes cargas como
por exemplo uma lâmpada incandescente, mas se ligarmos a sua saída na
entrada da resitência de base, este pequeno sinal fornecido pela porta lógica será
capaz de controlar a carga (no caso lâmpada) conectada ao coletor (c) do
transistor. A figura abaixo ilustra este caso:

Vale ressaltar, que existem as mais variadas cargas e nem todas elas
podem ser diretamente ligadas à um transistor, uma vez que ele possui limites de
correntes elétricas. Para resolver este problema, torna-se necessário o uso do
relé, um dispositivo eletromecânico, cujo princípio de funcionamento baseia-se nas

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 39


tarcisiob@gmail.com
leis do eletromagnetismo, conforme já estudamos há alguns anos atrás, lá no 2º
grau, nas feiras de ciências.... Vejamos mais detalhes sobre este interessante
dispositivo:

5. 3 – O Relé

Um relé é um simples switch eletromecânico formado por um eletroímã e


um conjunto de contatos. Os relés estão escondidos em todos tipos de
dispositivos. Os primeiros computadores utilizavam relés para implementar
funções booleanas.

- Construção de um relé
Os relés são dispositivos simples e possuem quatro partes:

• eletroímã
• armadura que pode ser atraída pelo eletroímã
• mola
• conjunto de contatos elétricos

A figura que segue exibe estas quatro partes:

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 40


tarcisiob@gmail.com
Nesta figura, você pode perceber que o relé é formado por dois circuitos
completamente independentes. O primeiro está na parte inferior e funciona com o
eletroímã. Neste circuito, um interruptor controla a potência do eletroímã. Quando
ele está ligado, o eletroímã é ativado e atrai a armadura (azul). A armadura
funciona como um interruptor no segundo circuito. Quando o eletroímã está
energizado, a armadura completa o segundo circuito e a luz se acende. Quando o
eletroímã não está energizado, a mola puxa a armadura e o circuito não se
completa. Neste caso, a luz não acende.
Um relé possui diversas variáveis que caracterizam o seu funcionamento:

• a voltagem e corrente necessárias para ativar a armadura;


• a voltagem e corrente máximas que a armadura e contatos da armadura
podem suportar;
• o número de armaduras (geralmente, uma ou duas);
• o número de contatos da armadura; geralmente, um ou dois (o relê do
exemplo tem dois, mas um não é utilizado);
• se o contato (caso exista apenas um contato) está normalmente aberto (NA)
ou normalmente fechado (NF).

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 41


tarcisiob@gmail.com
5.3.2 - Aplicações dos relés

O objetivo do relé é utilizar pequena quantidade de energia eletromagnética


(proveniente, por exemplo, de um pequeno interruptor ou circuito eletrônico
simples) para mover uma armadura que pode gerar uma quantidade de energia
muito maior. Por exemplo, pode-se usar 5 volts e 50 miliamperes para ativar o
eletroímã e energizar uma armadura que suporta 120V AC em 2 ampéres (240
watts).
Os relés são comuns em eletrodomésticos, geralmente quando existe um
controle eletrônico que liga algo como um motor ou uma lâmpada. Eles também
são muito comuns em carros, onde a fonte de energia de 12V significa que quase
tudo no carro precisa de uma grande quantidade de corrente. Nos modelos mais
novos, os fabricantes combinam os painéis de relés na caixa de fusíveis para
facilitar a manutenção. Veja a seguir, um exemplo de um painel de relés em um
automóvel:

5.3.2 – Um relé aplicado à um circuito digital.

A aplicação de um relé à um circuito digital consiste basicamente em


acopla-lo ao circuito através de um transistor conforme mostrado na figura abaixo:

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 42


tarcisiob@gmail.com
Exercícios

Esboce um circuito digital com todas as ligações necessárias para ascender


uma potente luz de 200 w e uma sirene, quando o usuário esquecer uma ou mais
partes abertas em sua residência: Porta da cozinha; janela da cozinha; janela da
sala; portão.

Bons estudos e até o próximo capítulo, onde aprenderemos a simplificar


circuitos através do estudo de alguns teoremas.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 43


tarcisiob@gmail.com
Capítulo 6 – Simplificações de circuitos.

6.1 - Teoremas de Morghan.


Os teoremas de Morghan visam simplificar o circuito digital, antes mesmo
de sua construção, economizando portas lógicas e tempo na interconexão de
complexos circuitos digitais. Basicamente são dois os principais teoremas, a
saber:

6.1.1 - Primeiro teorema.


O primeiro teorema de Morghan afirma que:

A+B = A *B

Comprovação:

A B A+B A+ B A B A *B
0 0 0 1 1 1 1
0 1 1 0 1 0 0
1 0 1 0 0 1 0
1 1 1 0 0 0 0

6.1.2 - Segundo teorema.

O segundo teorema de Morghan afirma que:

A *.B = A + B

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 44


tarcisiob@gmail.com
Comprovação:

B A A.B A.B A B A +B
0 0 0 1 1 1 1
0 1 0 1 0 1 1
1 0 0 1 1 0 1
1 1 1 0 0 0 0

Exercícios:

Simplifique os circuitos abaixo:

1) 2) 3)

4)

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 45


tarcisiob@gmail.com
5)

6)

7)

8)

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 46


tarcisiob@gmail.com
6.2 - Porta lógica XOR.

A porta lógica XOR é também conhecida como OU EXCLUSIVO, por somar


as entradas exclusivamente quando nelas são aplicadas valores diferentes. Em
outras palavras: Ela apresenta nível lógico igual a “1” em sua saída quando as
entradas forem (0 1) ou (1 0). São diversas as suas aplicações, dentre elas, a
simplificação de circuitos. Abaixo segue sua tabela verdade e o circuito
representativo:

B A Saída
Saída = A B
0 0 0
0 1 1
1 0 1
1 1 0

6.3 - Porta lógica XNOR.

Também conhecida como NOU EXCLUSIVO, e, em analogia às demais


portas lógicas, a porta lógica XNOR apresenta a tabela verdade que é o inverso
da XOR. Veja figura abaixo:

B A Saída
0 0 1
Saída = A B
0 1 0
1 0 0
1 1 1

6.4 - Aplicações práticas da porta lógica XOR / XNOR.

O exemplo abaixo ilustra a aplicação de uma porta lógica XOR em conjunto


com uma NOU para a comparação de duas palavras.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 47


tarcisiob@gmail.com
Observe que se as portas XOR apresentam “0” em sua saída, apenas se os
bit´s de entrada forem iguais. Neste caso, se ambas as palavras forem iguais,
todas as portas XOR, por terem as entradas iguais, apresentarão “0” em sua
saída. Uma seqüência de zeros em uma porta NOU apresentará como saída “1”.
Neste caso, se RF = “1”, podemos afirmar que ambas as palavras são iguais!

6.4.1 - Outras aplicações.

A porta lógica XOR também é utilizada para a simplificação de circuitos.


Pode-se afirmar que:

Comprovação:

A B A B A.B A .B A.B+A.B A B
0 0 1 1 0 0 0 0
0 1 1 0 1 0 1 1
1 0 0 1 0 1 1 1
1 1 0 0 0 0 0 0

Exercícios.

1) Em analogia à expressão anterior, encontre a equivalência para a porta


lógica XNOR.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 48


tarcisiob@gmail.com
Capítulo 7

7.1 - Obtenção de um circuito a partir de uma tabela verdade já existente.

A obtenção de um circuito a partir de uma tabela verdade é muito útil


quando pode-se prever o funcionamento do circuito (saída final) sem saber ao
certo como ele será constituído. Veja o exemplo que segue:

“Elaborar um circuito lógico para controlar a irrigação de um jardim,


considerando que ele deverá ser aguado apenas aos sábados e após às 17:00.
Suponha neste exemplo que existe um dispositivo externo ligado ao circuito que
irá apresentar nível lógico igual a “1” quando o dia da semana for Sábado. Da
mesma forma, existe outro circuito que irá apresentar nível lógico igual a “0”
quando passar das 17:00 h.”

Veja a “caixa preta” do circuito, bem como sua tabela verdade.

Dia da semana
Circuito
Hora Lógico

Válvula de água.
Nível lógico = “1”
aciona a água

Solução:
Montemos a tabela verdade que irá representar o funcionamento do
circuito:

B = Dia A= Saída
da Horário
semana
0 0 0
0 1 0
1 0 1
1 1 0

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 49


tarcisiob@gmail.com
Observe que a saída = “1” representa o dia da semana = sábado(1) e
horário após às 17:00 (0). A solução do problema é tomada a partir da terceira
linha, que satisfaz às exigências anteriores. Neste caso o circuito será:
Saída = A . B

Exercícios:

Dada a tabela verdade, montar o circuito lógico simplificado:


1) 2) 3) 4)

B A Saída B A Saída B A Saída B A Saída


0 0 1 0 0 1 0 0 1 0 0 1
0 1 1 0 1 1 0 1 0 0 1 0
1 0 0 1 0 1 1 0 1 1 0 1
1 1 0 1 1 0 1 1 0 1 1 1
5) 6) 7) 8)

C B A Saída C B A Saída C B A Saída C B A Saída


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

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 50


tarcisiob@gmail.com
7.2 - O Mapa de Karnaugth para a simplificação de circuitos.

O Mapa de Karnaugth é muito útil, pois permite de forma rápida, a


visualização de um circuito simplificado que atenda a uma tabela verdade. O
grande segredo porém, é a correta montagem das células adjacentes do mapa.
Veja os exemplos abaixo para um melhor entendimento:

7.2.1 - Tabela verdade e mapa de Karnaugth para uma variável

7.2.2 - Tabela verdade e mapa de Karnaugth para duas variáveis.

7.2.3 - Tabela verdade e mapa de Karnaugth para três variáveis.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 51


tarcisiob@gmail.com
7.2.4 - Tabela verdade e mapa de Karnaugth para quatro variáveis.

7.2.5 - Utilizando o mapa de Karnaugth.

Para utilizar o mapa de Karnaugth, deve-se observar as saídas, escrevendo


no próprio mapa, as que possuem nível lógico igual a 1. Veja no exemplo abaixo,
que as saídas foram escritas em vermelho no mapa:

Exemplo 1
Montar o circuito lógico que atenda à tabela verdade:

Decimal B A Saída
0 0 0 1
1 0 1 1
2 1 0 0
3 1 1 0

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 52


tarcisiob@gmail.com
A explicação segue abaixo:

Pode-se observar na tabela verdade, que o decimal 0 e o decimal 1


possuem nível lógico igual a 1. Desta forma, os mesmos 1s foram inseridos no
mapa, nas células correspondentes.

O próximo passo é circular todos os 1s adjacentes, sempre em potências de 2.


Assim:

• 1 bola pegando apenas um número 1


• 1 bola pegando dois números 1.
• 1 bola pegando quatro números 1.
• 1 bola pegando oito números 1.
• 1 bola pegando dezesseis números 1.
• Etc....

Ainda no exemplo anterior, podemos observar que foi possível o traçado de


uma bola agrupando dois números 1. Observando agora este agrupamento
podemos notar que apenas a variável B abrange por completo este agrupamento.
Assim, a saída corresponderá a:
S=B

Exemplo2
Monte o circuito lógico que atenda à tabela verdade:

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 53


tarcisiob@gmail.com
Explicação:
1. Foram inseridas no mapa, as saídas que apresentam nível lógico igual a 1.
2. Logo em seguida foram agrupados os 1s, sempre em potências de 2.
Formou-se então, três bolas distintas.
3. Pode-se observar nas bola que está mais à esquerda, que a variável B
abrange a bola por completo. Da mesma forma, a variável C também a
abrange por completo. Para esta primeira bola analisada o circuito ficará:
Bola1 = B . C
4. Analisando agora a bola que está de pé, podemos notar que a variável B e
a variável A as cobrem por completo. Para esta segunda bola analisada o
circuito ficará:
Bola2 = B . A
5. Finalmente, analisando a última bola, notamos que a variável B e a variável
C as cobrem por completo. Então, o circuito desta bola ficará:
Bola3 = B . C

Finalmente, o circuito que atende à “exigente” tabela verdade está descrito abaixo:

S= B.C + B.A + B.C

Ou então...

S = ( B + C ) + B.(A + C) Ufa....

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 54


tarcisiob@gmail.com
Aplicações práticas do Mapa de Karnaugh

1ª Questão: Determine a expressão mínima representada por cada um dos


mapas de Karnaugh mostrados a seguir:

2ª Questão: Um comitê consiste de um Presidente, Diretor, Secretário e


Tesoureiro. Uma moção passa se, e somente se, recebe a maioria dos votos, ou o
voto do Presidente mais o de um outro membro. Cada membro aperta um botão
para indicar a aprovação de uma moção. Projete um circuito lógico, com portas
lógicas básicas ( OR, AND e NOT), que faça acender uma lâmpada se uma
moção for aprovada. Este circuito deverá ser o mais simplificado possível.

a) Tabela verdade
b) Mapa de Karnaugh
c) Circuito lógico

Obs: Moção: Proposta, em uma assembléia, acerca do estudo de uma questão, ou relativa a
qualquer incidente que surja nessa
assembléia.

3ª Questão: Num cruzamento há quatro semáforos com um conjunto de lâmpadas


verde e vermelho cada um. Por exemplo, o semáforo “FA” comanda o fluxo de
veículos que passam pelo ponto “A”, onde existem detectores que indicam a
passagem destes veículos. Construa um sistema de portas lógicas o mais
simplificado possível que comande os semáforos, lembrando que quando dois ou
mais veículos chegarem simultaneamente a esse semáforo, o que estiver à direita
terá a preferência. Quando 4 veículos chegarem simultaneamente, dê a
preferência para os que estão em “A” e “C”. É proibida a conversão à esquerda.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 55


tarcisiob@gmail.com
4ª Questão: Uma rua C (mão única) termina numa Avenida AB onde existem 3
conjuntos de lâmpadas (verde/vermelho) FA, FB e FC que são comandadas por
detectores A, B e C que indicam a presença ou não de veículos nas posições A-A’,
B-B’ e C-C’ respectivamente. Implemente um circuito lógico utilizando portas
lógicas básicas que comande FA, FB e FC da seguinte forma:
a) Se chegar mais de um carro simultaneamente no cruzamento entre a rua C
e a avenida AB, têm preferência o que estiver mais à direita.
b) Se chegar 3 carros simultaneamente no cruzamento, a avenida tem
preferência.
c) A rua C é mão única e pode-se virar tanto à direita quanto à esquerda.
d) Nas condições não definidas deve-se adotar irrelevante.
Obs: Tal circuito deverá ser o mais minimizado possível.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 56


tarcisiob@gmail.com
5ª Questão: Construir o circuito, o mais simplificado possível, de um controlador
para um sistema de aquecimento solar, com as seguintes regras:
• A válvula V1 abrirá somente quando o reservatório estiver cheio;
• A válvula V2 abrirá somente quando a placa estiver cheia e tiver sol;
• A válvula V3 abrirá somente quando a placa estiver vazia.

Considerar o reservatório ideal, que não perderá calor, e que a placa troca calor instantaneamente.
Os sensores A e B indicam quando o reservatório e a placa estão cheios. A foto-célula indica a
presença de luz solar e, portanto indica que a placa sofreu aquecimento.

6ª Questão: A figura mostra a interseção de uma via preferencial com uma outra
secundária. Vários sensores de detecção de veículos estão colocados ao longo
das mãos de direção C e D (via principal) e A e B (via secundária). A saída de tais
sensores está no nível lógico BAIXO quando nenhum veículo foi detectado, e no
nível lógico ALTO quando pelo menos um veículo tiver sido detectado. O sinal de
tráfego no cruzamento deve ser controlado como se segue:

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 57


tarcisiob@gmail.com
a) A luz do sinal Leste-Oeste (L-O) deverá estar verde, sempre que houver
veículos em ambas as mãos de direção C e D.
b) A luz do sinal Leste-Oeste (L-O) deverá estar verde, sempre que houver
veículos ou em C ou em D, estando ambas as outras duas mãos, A e B,
sem nenhum veículo detectado.
c) A luz do sinal Norte-Sul (N-S) deverá estar verde, sempre que houver
veículos em A e em B, estando C e D ambas desocupadas.
d) A luz do sinal Norte-Sul (N-S) deverá estar verde, quando ou A ou B
estiverem ocupadas, enquanto C ou D estiverem vazias.
e) A luz do sinal Leste-Oeste (L-O) deverá estar verde, quando nenhum
veículo tiver sido detectado pelos sensores.

Usando as saídas dos sensores A, B C e D como entrada, projete um


circuito lógico para controlar os sinais. Deve haver duas saídas, N-S e L-O, que
vão para o nível lógico ALTO quando a luz correspondente estiver verde.
Simplifique o circuito resultante tanto quanto for possível, mostrando todos os
passos seguidos no processo de simplificação.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 58


tarcisiob@gmail.com
Capítulo 8 – Latche´s.

O latch é considerado a mais simples de todas as memórias. Como


descrito, ele tem a capacidade de armazenar uma determinada saída, mantendo-a
inalterada até o momento que se deseje “gravar” novos dados.

Embora possam vir embutidos em pastilhas (chip´s) de circuito integrado, o


latch pode ser facilmente montado usando-se para isto algumas portas lógicas.
Veja os exemplos que seguem:

8.1 - Latch elaborado com portas lógicas NOU.

Tabela verdade
R S Q(t+1) Interpretação
0 0 Q(t) Sem mudança
0 1 1 Saída igual a 1
1 0 0 Saída igual a 0
1 1 ?? Indeterminado

Explicação:
R e S são entradas de controle. Q (t+1) representa a saída Q logo após a
ação de R e S. Q(t) representa a saída Q antes da ação de R e S. A interpretação
da tabela é feita da seguinte maneira:

a) Quando R = S = 0, Q(t+1) = Q(t), isto é, o estado da saída atual é igual ao


estado da saída antes da aplicação dos controles R e S. Logo, não há
mudança nas saídas nestas condições.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 59


tarcisiob@gmail.com
b) Quando R = 0 e S = 1, Q(t+1) = 1, isto é, a saída está em nível lógico igual
a 1. Dizemos então que o Latch armazena o bit 1, mesmo se S retornar a 0.

c) Quando R = 1 e S = 0, Q(t+1) = 0, isto é, a saída está zerada. Dizemos


então que o Latch armazena o bit 0, mesmo se R retornar a 0.

d) Quando R = 1 e S = 1 tem-se uma condição que deve ser evitada, isto é,


não permitida, uma vez que elas conduzem a uma situação chamada de
Condição de corrida (Race Condition), a qual conduz a uma operação
imprevisível. Esta condição é somente usada por programas quando o
programador necessita de uma função randômica.

8.1.1 - Exercícios

1) Considere que as entradas de um latch, construído de portas lógicas NOU,


recebam entradas R e S (Figura 8.1). Construa o gráfico representativo de
sua saída Q(t+1), considerando que Q(t) = 0.
.

Solução:
Em A tem-se R = 1 e S = 0, neste caso, a saída Q(t+1) = 0

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 60


tarcisiob@gmail.com
No instante B temos R = 0 e S = 0, neste caso, a saída Q(t+1) = Q(t). Q(t)
anteriormente valia 0, então Q(t+1) = 0.
No instante C temos R = 0 e S = 1, neste caso, a saída Q(t+1) = 1.
No instante D temos R = 0 e S = 0, neste caso, a saída Q(t+1) = Q(t). Q(t)
anteriormente valia 1, então Q(t+1) = 1.
No instante E temos R = 1 e S = 0, neste caso, a saída Q(t+1) = 0.
No instante F temos R = 0 e S = 0, neste caso, a saída Q(t+1) = Q(t). Q(t)
anteriormente valia 0, então Q(t+1) = 0.
No instante G temos R = 0 e S = 1, neste caso, a saída Q(t+1) = 1.
No instante H temos R = 0 e S = 0, neste caso, a saída Q(t+1) = Q(t). Q(t)
anteriormente valia 1, então Q(t+1) = 1.
No instante I temos R = 1 e S = 0, neste caso, a saída Q(t+1) = 0.
No instante J temos R = 0 e S = 0, neste caso, a saída Q(t+1) = Q(t). Q(t)
anteriormente valia 0, então Q(t+1) = 0.

Observe finalmente como ficará o gráfico:

2) Repita o exemplo anterior, considerando que Q(t) = 1.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 61


tarcisiob@gmail.com
8.2 - Latch elaborado com portas lógicas NE.

Tabela verdade

R S Q(t+1) Interpretação
0 0 ?? Indeterminado
0 1 1 Saída igual a 1
1 0 0 Saída igual a 0
1 1 Q(t) Sem mudança

8.2.1 -Exercício proposto

Considere que as entradas de um latch, construído de portas lógicas


NAND, recebam entradas R e S, conforme mostrado a seguir.

Explique porque é impossível determinar a saída Q(t+1).

8.3 - Aplicações práticas dos Latche´s

Além do Latch ser o principal circuito de das memórias eletrônicas e dos


contadores digitais/relógios digitais, sua aplicação poderá ocorrer em diversas
áreas. Considre agora, um exemplo mais simples e fácil de entender:

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 62


tarcisiob@gmail.com
Suponha que você deseja criar um circuito lógico que memorize a abertura
de uma agenda por exemplo. Usando latch NOU você pode instalar um interruptor
que é acionado no momento em que a agenda se abre.

Explicação:
Observe que ao abrir a agenda, é colocado nível lógico 1 na entrada S do
Latch. Desta forma a saída Q(t+1) = 1. Neste caso a luz ascende. Suponha agora
que a agenda é fechada. Mesmo colocando nível lógico 0 em S, a saída
permanecerá em 1 indicando a abertura da agenda. Pronto! Você acabou de
montar “um circuito detector de intrusos...”.

8.3.1 - Exercício proposto.


Repita o exemplo anterior para o uso de um latch feito de portas lógicas NAND.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 63


tarcisiob@gmail.com
8.4 - Sinais de clock

O sinal de clock é um sinal que faz as operações ocorrerem em intervalo de


tempo espaçados regularmente. Todos os circuitos binários para serem realmente
úteis precisam desta base de tempo, que varia regularmente entre 0(zero) e
1(um). Como exemplo bem simples podemos citar o relógio digital. Mais
especificamente neste exemplo, o “Clock” faz a vez do segundo do relógio. O que
o circuito digital tem que fazer é contar 60 variações deste clock e marcar um
minuto, assim sucessivamente.
O computador é outro ótimo exemplo também. A CPU processa as
informações baseadas no seu relógio interno ou “Clock”. Uma CPU com
velocidade de 2 GHz por exemplo, indica que o sinal de clock varia a uma
velocidade de 2.000.000.000 de vezes por segundo. A Figura abaixo exibe um
exemplo de um sinal de clock.

Freqüência do sinal de clock.. (Quanto mais veloz é o sinal de clock, menor é este
intervalo.)

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 64


tarcisiob@gmail.com
8.5 - Latch RS sincronizado pelo sinal de clock.

O Latch RS sincronizado pelo sinal de clock equivale à um Latch RS normal


acrescido de um relógio (clock) através da adição de duas portas AND, como
mostrado na Figura abaixo:

O circuito anterior representa o latch sincronizado pelo sinal de clock.


Observe que as entradas R e S somente estarão ativas quando o sinal de clock
permanece em nível alto (1).

Quando o sinal de clock permanece em nível baixo (0), as saídas das


portas lógicas AND sempre apresentarão zero(0). Observe ainda neste caso que 0
e 0 nas entradas do latch NOU não afetará a saída Q(t+1). Então podemos dizer
que quando o clock está em zero(0), a saída Q(t+1) = Q(t)  Sem mudança. Veja
a tabela verdade para maiores explicações:

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 65


tarcisiob@gmail.com
Clock R S Q(t+1) Interpretação
0 0 0 Q(t) Sem mudança
0 0 1 Q(t) Sem mudança
0 1 0 Q(t) Sem mudança
0 1 1 Q(t) Sem mudança
1 0 0 Q(t) Sem mudança
1 0 1 1 Saída = 1
1 1 0 0 Saída = 0
1 1 1 ?? Indeterminado

8.5.1 - Exercícios.

1) Dado os sinais: Clock, R e S, determinar a saída Q(t+1).

Clk

Q(t+1)

2) Dado os sinais: Clock, R e S, determinar a saída Q(t+1).

Clk

Q(t+1)

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 66


tarcisiob@gmail.com
8.6 - Latch tipo D sincronizado pelo Clock.

O latch tipo D sincronizado pelo clock é formado pelos mesmos


componentes do latch RS, acrescendo-se uma porta lógica inversora da antiga
entrada “S” para a entrada “R”, evitando assim, a situação de instabilidade quando
aplica-se as entradas R = 1 e S = 1 durante os clock´s positivos (1). Veja a
ilustração que segue;

Tabela verdade
Clock D Q(t+1) Interpretação
0 0 Q(t) Sem mudança
0 1 Q(t) Sem mudança
1 0 0 Saída = 0
1 1 1 Saída = 1

8.6.1 - Exercícios

1) Dado os sinais de clock e a entrada D, determinar a saída Q(t+1).


Clk

Q(t+1)

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 67


tarcisiob@gmail.com
Clk

Q(t+1)

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 68


tarcisiob@gmail.com
Capítulo 9 - Flip-Flop´s.

9.1 – Introdução

Flip-flop´s são latches cujo clock atua em um curtíssimo intervalo de tempo.


Eles tem realmente uma enorme aplicação, pois como veremos adiante, são
usados para a construção de registros, muito utilizados em computadores.
Os registros possibilitam dentre outras coisas, construção de contadores,
seqüenciadores, etc...

9.2 - Flip-Flop tipo D.

Conforme comentado anteriormente, o flip-flop desenhado abaixo funciona


num curto intervalo de clock. Mais especificamente, neste exemplo, quando o sinal
de clock está mudando do nível lógico zero(0) para o nível lógico um(1). Neste
caso, a entrada aplicada em D aparecerá em sua saída Q(t+1). Ou seja:

O flip-flop somente funciona quando o clock está mudando de zero para um.

Quando o flip-flop muda de zero para um e neste mesmo instante aplica-se D = 1,


então a saída será igual a um. Por outro lado, se naquele instante aplicarmos D =
0, então a saída será igual a zero.

Podemos afirmar, mais uma vez, que o flip-flop trabalha nas mudanças ou
“FLANCOS” do clock.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 69


tarcisiob@gmail.com
Simbologia: Tabela Verdade:

CLK D Saída
0 0 Q(t)
0 1 Q(t)
1 0 Q(t)
1 1 Q(t)
↓ 0 Q(t)
↓ 1 Q(t)
↑ 0 0
↑ 1 1

Note na tabela verdade que o flip-flop trabalha somente no flanco positivo


do clock (Mudança de zero para um).

9.2.1 - Exercícios
Considerando um flip-flop tipo D, determinar a saída Q(t+1) para os dois
gráficos abaixo:

Clk

Q(t+1)

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 70


tarcisiob@gmail.com
Clk

Q(t+1)

9.3 - Flip-flop JK

Posteriormente, quando serão estudados os contadores, o Flip-flop JK é o


elemento ideal para ser usado. O flip-flop JK também, na maioria dos casos, tem
funcionamento pelo “flanco” positivo do sinal de clock. O funcionamento do circuito
está detalhado a seguir:

a) As entradas J e K são terminais de controle. Elas determinam o


comportamento do circuito sob a ação do flanco positivo do sinal de clock.
Quando J = 0 e K = 0 ambas as entradas são desabilitadas e o circuito fica
inativo em qualquer circunstância, mesmo sob a ação do Clock. Isto
significa que a saída mantém-se em estado lógico inalterado.

J = 0 e K = 0  Q(t+1) = Q(t).

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 71


tarcisiob@gmail.com
b) Quando J= 0 e K = 1, se a saída Q(t) = 1, após a ação do clock ela
assumirá 0. Se por outro lado, a saída Q(t) = 0, após a ação do sinal de
clock ela permanecerá inalterada. Podemos então dizer que quando:

J = 0 e K = 0  Q(t+1) = 0.

c) Quando J=1 e K= 0 a situação inverte-se. Se antes da ação do clock, a


saída Q(t) = 0, após a ação do sinal de clock ela assumirá 1. Por outro lado,
se for 1, após o sinal de clock ela permanecerá inalterada. Podemos então
dizer que quando

J = 1 e K = 0  Q(t+1) = 1.

d) Quando J = 1 e K = 1 a saída será o complemento da anterior. Se antes da


ação do clock era 0, após o clock passa a ser 1 e vice versa.

J = 1 e K = 1  Q(t+1) = Q(t).

Tabela verdade:
CLK J K Saída
0 0 0 Q(t) Simbologia:
0 0 1 Q(t)
1 1 0 Q(t)
↓ 1 1 Q(t)
↑ 0 0 Q(t)
↑ 0 1 0
↑ 1 0 1

↑ 1 1 Q(t)

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 72


tarcisiob@gmail.com
Capítulo 10 – Registros e contadores

10.1 - Introdução.

Um registro é um grupo de flip-flop´s que operam em conjunto como se


fosse uma única unidade. Os registros mais simples não fazem outra coisa senão
armazenar uma palavra binária (conjunto de bit´s). Outros registros modificam a
palavra armazenada deslocando os bit´s para a direita ou para esquerda. São
conhecidos como registros de deslocamento. Existem também vários outros que
desempenham funções específicas. Veja alguns deles...

10.2 - Registro separador.

Funciona como um buffer que transmite a palavra inserida para as saídas


quando da ação do flanco positivo do clok. Assim podemos dizer que as entradas
colocas em “D” somente saem quando o clock está em seu flanco positivo.

10.3 - Registro de deslocamento para a esquerda.

Um registro de deslocamento tem a finalidade de mover os bit´s


armazenados para a esquerda.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 73


tarcisiob@gmail.com
Para o exemplo anterior, veja a tabela verdade que mostra as saídas de
acordo com o sinal de clock. Lembre-se que o flip-flop “D” está funcionando no
flanco positivo do clock.

Observe na tabela anterior, o número 1 deslocando-se no decorrer do sinal de


clock.

Um exemplo prático

Pense que nas saídas Q0, Q1, Q2 e Q3 são ligadas algumas luzes. O efeito
que se verá será o de um seqüenciador, que irá acendendo as lâmpadas e
mantendo-as acesas no decorrer do sinal de clock. Este exemplo prático será
testado no laboratório.

10.4 - Registro de deslocamento para a direita.

O registro de deslocamento para a direita tem funcionamento análogo ao da


esquerda. Apenas o bit 1 flui em sentido contrário. Veja a ilustração bem como a
tabela verdade:

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 74


tarcisiob@gmail.com
Tabela verdade:

10.5 - Registro de deslocamento circular para a esquerda.

O registro de deslocamento utiliza uma porta inversora ligada na saída do


último registro de deslocamento de tal forma a “circular” os bit´s no decorrer do
sinal de clock. Desta forma temos as seguintes etapas:

Primeiro clock : 0001 - Início


Segundo clock: 0011
Terceiro clock: 0111
Quarto clock: 1111
Quinto clock: 1110
Sexto clock: 1100
Sétimo clock: 1000
Oitavo clock: 0000
Nono clock: 0001 -Voltou ao início.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 75


tarcisiob@gmail.com
10.6 - Registro de deslocamento circular para a direita.

De forma análoga ao registro anterior, este registro desloca os bit´s de


forma circular diferenciando pelo trajeto dos bit´s que neste caso é da esquerda
para a direita. Veja as seqüências abaixo:

Primeiro clock : 1000 - Início


Segundo clock: 1100
Terceiro clock: 1110
Quarto clock: 1111
Quinto clock: 0111
Sexto clock: 0011
Sétimo clock: 0001
Oitavo clock: 0000
Nono clock: 1000 -Voltou ao início.

10.7 - Registro de deslocamento circular para a direita:

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 76


tarcisiob@gmail.com
10.8 - Contadores.

Um contador é um registro capaz de contar um número de pulsos que


alcança a entrada de clock, seguindo uma determinada seqüência. Na prática há
muitos contadores digitais usados em várias aplicações como: Contagem de
pulsos, divisão de freqüência, sequenciamento e temporização de operações. Um
contador é útil por exemplo, para contar os produtos que deslizam por um esteira
rolante em uma determinada indústria. Inúmeras são as suas aplicações. Vejamos
agora como se constrói um contador.
O uso do Flip flop JK é primordial para o entendimento de um contador.
Analise o desenho abaixo:

Na operação deste contador são destacados os seguintes pontos:

a) O pulso de clock é aplicado somente no Flip Flop Q0, cuja saída é


complementada cada vez que ocorre o flanco positivo do clock, pois J = K =
1.
b) A saída Qo agem como entrada de clock para o Flip Flop Q1, cuja saída é
complementada sempre que Q0 comutar de zero para um. Lembrar que os
Flip Flop´s possuem entradas J = K = 1.
c) Após a ocorrência do sétimo pulso de clock, os Flip Flop´s assume a
contagem 111. No 8º pulso de clock todas as saídas voltam a zero, o que

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 77


tarcisiob@gmail.com
quer dizer que o contador percorreu um ciclo completo e reinicia a
contagem. Veja a tabela representativa:

Decimal Q2 Q1 Q0 Clock
0 0 0 0 0
1 0 0 1 1
2 0 1 0 2
3 0 1 1 3
4 1 0 0 4
5 1 0 1 5
6 1 1 0 6
7 1 1 1 7
8 0 0 0 8

10.8.1 - Observações:

O contador é dito assíncrono porque nem todos os flip flop´s operam em


exato sincronismo com o sinal de clock. Somente Q0 responde ao sinal de clock.
Q1 tem que esperar a resposta de Q0 para ser acionado. Q2 tem que esperar Q1
para ser acionado. Assim registra-se um atraso entre as respostas de cada Flip
Flop. Nos modernos Flip Flop´s , e, logicamente, nos computadores, este
problema é resolvido com o uso de contadores síncronos. Este tópico porém, não
será abordado nesta disciplina.

10.8.2 - Módulo de contagem.

O contador mostrado anteriormente possui 8 estados distintos. Então diz-se


que o contador possui módulo 8. Lembrar que o módulo é sempre igual ao número
de estados que o contador percorre num ciclo completo (antes de reiniciar a
contagem).

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 78


tarcisiob@gmail.com
Exercícios:

1) Pretende-se que um contador conte um número de itens transportado por uma


correia em uma indústria. A combinação de uma fonte de luz e uma fotocélula é
usada para gerar um único pulso cada vez que um item interceptar os raios de luz.
O contador deve contar até 500 itens. Desenhar o circuito contador para esta
finalidade.

2) Desenhe um contador que conte exatamente de 0 á 5. Atingida esta contagem,


o contador deve parar de contar. Desenhe o gráfico ilustrativo mostrando os sinais
no decorrer do tempo.

3) Desenhe um contador que conte exatamente de 0 à 60. Atingida este valor, o


contador deve reiniciar a contagem.

4) Desenhe um contador que conte exatamente de 5 à 9. Atingindo este valor, o


contador para de contar. Desenhe o gráfico ilustrativo, mostrando os sinais no
decorrer do tempo.

5) Considere um sinal de clock com freqüência de 1 Hz = 1 s. Construa um


registro de deslocamento para a esquerda que inicia o deslocamento passado
cinco segundos que o circuito foi acionado.

6) Considere um sinal de clock com freqüência de 1 Hz = 1 s. Construa um


registro de deslocamento para a direita que inicia o deslocamento passado 7
segundos que o circuito foi acionado.

8) Determinar o módulo e a freqüência do sinal na saída de Q3, sabendo-se que a


freqüência do sinal de clock é de 1 MHz.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 79


tarcisiob@gmail.com
9) Construa um circuito de um relógio digital que marque as horas e minutos.

10) Construa um circuito de um relógio digital que mostre as horas, minutos e dias
da semana.

11) Desenvolva um circuito de deslocamento de três bit´s para esquerda que


passado 10s que foi ligado, inicia o deslocamento.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 80


tarcisiob@gmail.com
Capítulo 11

Conexão de dispositivos externos ao computador, com o uso da E/S


paralela.

11.1 Introdução.

Basicamente, um I/O é uma porta de entrada e saída de um dispositivo


qualquer. Este pode ser um PC ou microcontrolador. É com estas, que nossas
“máquinas” se comunicam com o mundo exterior. Para utilizar uma porta de I/O
são necessárias algumas noções básicas como: níveis de tensão, pinagem,
endereço, tipo de acesso, tipo de dados (se byte ou bit), e outras.
Geralmente nos microcontroladores, as portas de i/O podem ser
controladas tanto no nível de bytes ou bits (cada pino de I/O é controlado de forma
independente), possuem nível de tensão padrão TTL (para a grande maioria dos
microcontroladores) e seu acesso é feito através de registradores (endereços).

Já em um PC o acesso aos I/O’s é um pouco diferente, em alguns casos.


São muitas as portas presentes: USB, RS232, LPT, MODEM, SOM, VÍDEO, entre
outras. Cada uma delas possui um modo peculiar para o acesso e devem ser
estudadas antes de qualquer tentativa.

A porta de I/O mais simples para acesso no PC é sem dúvida alguma a


“porta paralela”, também conhecida como LPT. Ela possui níveis de tensão
compatíveis com padrão TTL (O e 5 VDC), pode ser acessada tanto em nível de
bytes como bits (cada pino de saída ou entrada pode ser lido ou escrito de
maneira independente), existe um endereço fixo para saídas e entrada, entre
outras semelhanças. Sendo assim, esta é a porta mais indicada para um primeiro
contato.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 81


tarcisiob@gmail.com
Na figura abaixo podem ser vistos a pinagem padrão da porta LPT nos PCs,
montada sob um DB25 fêmea e na tabela 1 as informações dos pinos presentes
na mesma e suas funções.

Observando a tabela 1, pode-se notar que temos pinos de entrada e saída..


Podemos usar os pinos de dados e controle como saída e os pinos de status
como entrada.

Obs.: As especificações passadas na tabela 1, referem-se a porta paralela


configurada no modo NORMAL ou SPP.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 82


tarcisiob@gmail.com
Agora que conhecemos fisicamente como a porta se apresenta (tipo de
conector e sua pinagem), quantas entradas e saídas estão disponíveis e o nível de
tensão presente nos pinos (TTL), falta apenas conhecer os endereços dos
registradores de “dados”, “controle” e “status”. Isso está descrito na tabela 2.

Obs: Os endereços passados na tabela 2 referem-se à porta LPT1 dos PCs. Os


“H” após os endereços, apontam que os valores demonstrados estão na notação
Hexadecimal.

No compilador PACIFIC C utilizado nesta demonstração, temos funções de


acesso a I/Os prontas:

Outp(endereço, byte);
Inp(endereço);

11.2 Enviando dados para a porta paralela.

A função “outp” permite a “saída” de dados, e recebe dois parâmetros:


O endereço e um byte a ser enviado. Se desejarmos enviar o valor “2” para a
porta paralela, por exemplo, iremos preparar a função da seguinte maneira:

outp(0x378,2);

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 83


tarcisiob@gmail.com
Podemos notar que o endereço foi escrito em hexadecimal (0x378). O
modificador “Ox” permite escrever dados em hexadecimal.

Isso foi feito para facilitar a compreensão do programa e deve ser adotado
como “norma” e “método” de programação. Nos PCs e na maioria dos
microcontroladores os endereços das portas de I/Os, memória (registradores) e
outros são sempre feitos em hexadecimal. Nada impede que usemos a notação
“decimal”, porém isso deixará os programas fora dos “padrões e convenções”
adotados pela maioria dos programadores.

11.3 Capturando dados da porta paralela.

A função “inp” é empregada para aquisição de dados de uma porta de I/O.


Ou seja, ela é de “entrada”. Ela recebe um único parâmetro, o endereço da porta e
retorna um byte com o conteúdo desta. Seu uso é:
valor = inp(0x379);

No exemplo, a variável “valor’ conterá o “status” da porta paralela. Neste


endereço do PC é guardado o “status” da porta paralela. Ela é utilizada pela
impressora para informar a falta de papel, pausa na impressão e outras. Porém,
assim como usamos o endereço “378H” para escrever um dado qualquer,
podemos usar o endereço “379H” para colher um dado qualquer desta porta.
Talvez as informações passadas possam parecer um pouco confusas. Assim,
nada melhor que um pouco de prática para sanar qualquer dúvida.

11.4 Exemplo de um circuito prático

Vamos montar um pequeno circuito que permitirá testar tudo o que foi dito
até o presente momento sobre portas I/O. O mesmo é bem simples e pode ser
montado em uma matriz de contatos. Durante a montagem, deve-se tomar

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 84


tarcisiob@gmail.com
cuidado no quesito alimentação do circuito. Ela deve ser necessariamente de 5
VDC. Isso é muito importante!!! Os PCs não suportam em suas entradas tensões
maiores que 5 VDC e podem queimar!

O circuito foi montado com oito LEDs e oito resistores limitadores para a
parte de “saída” e três chaves para entrada.

Tenha cuidado ao montar os LED´S (D1 a D8). Estes componentes são


polarizados e se ligados invertidos, impedirão o funcionamento correto do circuito.
Os resistores também merecem um cuidado especial. Os resistores limitadores de
corrente para os LEDs, R1 aR8, são de 560 Ω e identificados com as cores:
“verde”, “azul” e “marrom” .Já os resistores R9, R10 e R11 para as chaves são de 10
kΩ e identificados com as cores: “marrom”, “preto” e “laranja”. A inversão dos
mesmos pode causar a queima da porta paralela!!! Tenha cuidado ao soldá-los ou
montá-los na matriz de contatos!

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 85


tarcisiob@gmail.com
O conector CN1, DB25 macho, deve ser montado fora da placa ligado à
mesma através de um cabo tipo “fIat’ com 12 vias e 1,5 metros máximos.
Após o término da montagem, verifique tudo: ligações, soldas, possíveis
curtos na placa, etc.

Lembre-se que você estará lidando com seu PC e qualquer erro ou engano
poderá causar a queima da porta paralela!!! É preferível perder alguns minutos em
uma verificação minuciosa do circuito a perder horas tentando encontrar o “por
que”o pior aconteceu?”

Código fonte comentado:

//Programa para teste e controle da porta paralela Compilador


//PACIFC C - Porta utilizada - LPT1 (378H) Para alterar para
LPT2 //altere LPT_D para 0x278 (278H)
#include <stdio.h>
#include <dos.h>
#include <stdlib.h>

#define LPT_D 0x378 //define endereço da LPT (dados)


#define LPT_S (LPT_D+1) //define endereço da LPT (status)
#define LPT_C (LPT_S+1) //define endereço da LPT (controle)

//declaração das funções


void sair(void); //função para saída do programa
void sobe_led(void); //função ligar em um sentido
void desce_led(void); //função ligar no outro sentido
void centro_led(void); //função pisca led do centro
void borda_centro_led(void);//função que pisca led da borda
void ascende_um_a_um(void);//função ascende os leds um
void apaga_um_a_um(void); //função apaga os leds um a um
void tempo(void); //função de temporização

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 86


tarcisiob@gmail.com
//função principal
main(void){
printf("Programa para testar a porta paralela\n");
printf("Tecle S1 na placa para finalizar a execução\n\n");
while(1){
sobe_led();
desce_led();
centro_led();
borda_centro_led();
ascende_um_a_um();
apaga_um_a_um();}
}

//função para sair do programa. Antes de sair, desativa todos os


//bits da porta paralela
void sair(void){
outp(LPT_D,0);
exit(0);
}

//funcao para temporizar. Se preciso, altere os valores 10 e 10000


void tempo(void){
int i, j;
for(i=0;i<=1000;i++) //faz dez vezes
for(j=0;j<=15000;j++); //nao faz nada, apenas perde ciclos
return;
}

//funcao para piscar led's em um sentido


void sobe_led(void){

unsigned char saida; //bytes para entrada e saida


int entrada, conta;
saida=1; conta=1;

while(conta <=8){ //Pisca os oito leds


entrada=inp(LPT_S); //lê entrada S1
if (entrada==63){sair();} //S1 pressionada?!
outp(LPT_D,saida); //escreve valor na porta
tempo(); //temporiza
saida=saida<<1; //gira saida a esqurda
conta = conta + 1; }
return;
}

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 87


tarcisiob@gmail.com
//funcao para piscar os leds no outro sentido
void desce_led(void){
int entrada, conta;
unsigned char saida;
saida=128; conta=1;

while(conta <=8){
entrada=inp(LPT_S); //lê entrada
if (entrada==63){sair();} //S1 pressionado?
outp(LPT_D,saida); //escreve dado na porta
tempo(); //temporiza
saida=saida>>1; //gira saida a direita
conta = conta + 1;
}
return;
}

//funcao para piscar os leds a partir do centro


void centro_led(void){

int entrada;

entrada=inp(LPT_S); //lê entrada


if (entrada==63){sair();} //S1 pressionado?
outp(LPT_D,24); tempo();
outp(LPT_D,36); tempo();
outp(LPT_D,66); tempo();
outp(LPT_D,129);tempo();
outp(LPT_D,0);
return;
}

//funcao para piscar os leds da borda para o centro


void borda_centro_led(void){

int entrada;

entrada=inp(LPT_S); //lê entrada


if (entrada==63){sair();} //S1 pressionado?
outp(LPT_D,129);tempo();
outp(LPT_D,66); tempo();
outp(LPT_D,36); tempo();
outp(LPT_D,24); tempo();
outp(LPT_D,0);
return;
}

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 88


tarcisiob@gmail.com
//funcao para ascender todos os led´s (um a um)
void ascende_um_a_um(void){
int entrada;
entrada=inp(LPT_S);
if (entrada==63) {sair();}
outp(LPT_D,1);tempo();
outp(LPT_D,3);tempo();
outp(LPT_D,7);tempo();
outp(LPT_D,15);tempo();
outp(LPT_D,31);tempo();
outp(LPT_D,63);tempo();
outp(LPT_D,127);tempo();
outp(LPT_D,255);tempo();
outp(LPT_D,0);
return;
}

//funcao para apagar todos os leds (um a um)


void apaga_um_a_um(void){
int entrada;
entrada=inp(LPT_S);
if (entrada==63) {sair();}
outp(LPT_D,255);tempo();
outp(LPT_D,127);tempo();
outp(LPT_D,63);tempo();
outp(LPT_D,31);tempo();
outp(LPT_D,15);tempo();
outp(LPT_D,7);tempo();
outp(LPT_D,3);tempo();
outp(LPT_D,1);tempo();
outp(LPT_D,0);
return;
}

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 89


tarcisiob@gmail.com
Exercícios:

Desenvolva um programa em C para escrever a seguinte seqüência binária nos


dados de saída:

Exercício 1 Exercício 2

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 90


tarcisiob@gmail.com
Capítulo 12

Exercícios revisionais com a linguagem C

Os exemplos apresentados a seguir tem por objetivo mostrar um pouco


mais da sintaxe dos comandos em C. Isto é necessário para que possamos
aprimorar mais nossos programas de forma a criar aplicativos que realmente
possam ser interessantes com o uso da porta paralela.

O código abaixo apresenta o fatorial de um dado número:


#include <stdio.h>
#include <stdlib.h>
main()
{
int i, numero;
int fat;
printf("Por favor informe o numero a calcular ");
scanf("%i",&numero);
fat = 1;
for(i=1;i<=numero;i++){fat = fat * i;}
printf ("O fatorial e %i ",fat);
}

O código abaixo exemplifica o uso de funções utilizando a linguagem C


#include <stdio.h>
#include <stdlib.h>
int a[20];
void gerar(void){
int i;
for (i=0;i<20;i++){
a[i]=rand();
}
}
void mostrar(void){
int i;
for (i=0;i<20;i++){
printf(" %d",a[i]);
}
}
int maior(void){
int i,m;
m = a[0];
for (i=0;i<20;i++){
if (a[i] > m){
m=a[i];
}
}
return(m);
}
void main(void){
int op=10;
while (op != 5){
printf("Escolha uma opcao:\n1-Gerar\n2-Maior\n3-
Menor\n4-mostrar matriz\n5-sair\n");
scanf("%d",&op);
if (op == 1){gerar();}
if (op == 4) {mostrar();}
if (op == 2) {printf("O maior numero e %d",maior());}
}
}

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 91


tarcisiob@gmail.com
O Código abaixo, mostra a tabela de conversão de graus Celsius em graus
Fahrenheit

/*Programa p/ imprimir a conversão de graus na ordem


crescente*/
#include <stdio.h>
#include <stdlib.h>

main(){
int inicio, fim, incr;
float fahr, celsius;

inicio = 0;
fim = 300;
incr = 20;

fahr = inicio;
while (fahr <=fim){
celsius = (5.0/9.0) * (fahr - 32.0);
printf ("%4.0f -- %6.5f\n", fahr, celsius);
fahr= fahr + incr;
}

//Mesmo problema usando o for


for (fahr = 0; fahr <= 300; fahr = fahr + incr){
printf("%4.0f .. %6.1f\n", fahr, (5.0/9.0) * (fahr -
32.0));
}
}

Exercícios propostos:
1) Repita o exercício anterior, apresentando a tabela na ordem decrescente.
2) Repita o exercício anterior, utilizando uma função para calcular a temperatura e
retornar o valor calculado.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 92


tarcisiob@gmail.com
O código abaixo preenche uma matriz com números aleatórios e mostra o seu
conteúdo

#include <stdio.h>
#include <stdlib.h>
main(){
int a[5][5], i, j;
for (i = 0; i<=4; i++){
for(j = 0; j<=4; j++){
a[i][j] = rand();
}
}

for (i = 0; i<=4; i++){


for(j = 0; j<=4; j++){
printf("[%i]", a[i][j]);
if (j == 4){printf("\n");
}
}
}

O código abaixo, ensina a lidar com o tempo com a linguagem C

#include <stdio.h>
#include <time.h>
void main(void){
struct tm *newtime;
time_t hora;
int i = 1;
while (i ==1){
time(&hora); /* Pega a hora do computador como um núm. Inteiro longo
*/
newtime = localtime(&hora); /* Converte o núm. P/ hora local */

if((newtime->tm_hour == 18) && (newtime->tm_min == 49) &&


(newtime->tm_mday == 16) && (newtime->tm_mon == 10) &&
(newtime->tm_year == 104)){
printf("Bom Dia!!!");
i = 2; //Para sair do loop
}else{

printf("%s\n", asctime(newtime)); //Mostra a hora local


printf("mon-%d\n",newtime->tm_mon); //Mostra o dia do mês
printf("yday-%d\n",newtime->tm_yday); //Mostra o dia do ano
printf("year-%d\n",newtime->tm_year); //Mostra o ano
}
}
}

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 93


tarcisiob@gmail.com
Exercícios propostos:

1) Desenvolva um programa em C que apresente a mensagem “BOM DIA”, “BOA


TARDE” OU “BOA NOITE”, respectivamente, de acordo com o horário do
computador.

2) Desenvolva um programa em C que escreva a palavra binária 110011012 na


porta paralela, no dia 22/12/2005.

3) Pesquise na Internet se há possibilidade de usarmos outro compilador, que não


o Pacific C para o interfaceamento com a porta paralela.

4) Pesquise na Internet, outras linguagens de programação que permitem o uso


da porta paralela.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 94


tarcisiob@gmail.com
Capítulo 13 – Sistemas de Memória

13. 1 Introdução

Memória tem papel crítico no desempenho de um sistema computacional.


Ela recebe dados do mundo externo transferidos para processador, e também
recebe dados do processador a transferir para mundo externo.

O objetivo deste capítulo é analisar os tipos de dispositivos de memórias


mais comumente usados. Já foram estudados os Flip-Flop´s que são dispositivos
de memória eletrônicos. Também vimos como grupos de FF´s chamados
registros, podem ser usados para armazenar informações e como essas
informações podem ser transferidas a outros locais.

Registros de FFS são elementos de memórias de alta velocidade que são


intensamente usados em operações internas de um computador digital no qual
informações digitais estão sendo transferidas, continuamente, de um local para
outro. Recentes avanços da tecnologia LSI (tecnologia que consegue comprimir
em uma única pastilha, uma grande quantidade de componentes eletrônicos) tem
tornado possível obter-se grande quantidade de FFs numa única pastilha
arranjada de várias maneiras. Essas memórias de semicondutores bipolar e MOS
são memórias mais rápidas disponíveis e seu custo tem decrescido na medida do
desenvolvimento da tecnologia LSI.

Devido à alta velocidade as memórias a semicondutores podem ser usados


como memórias internas de um computador no qual é importante que as
operações sejam rápidas. A memória interna de um computador está em
constante comunicação com o resto do computador na medida em que executa
um programa de instruções e os dados são usualmente armazenados nessas
memórias internas.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 95


tarcisiob@gmail.com
Embora memórias a semicondutores sejam apropriadas para memórias
internas de alta velocidade, seu custo por bit de armazenamento torna-as de uso
proibitivo como memórias de massa (bulky memory). As memórias de massa
referem-se à memórias externas ao computador principal, que são capazes de
armazenar grande quantidade de informações (milhões de bit´s). Fitas magnéticas
e discos magnéticos são dispositivos de memórias de massa mais comumente
utilizados.

13.2 - Características tecnológicas

As principais características tecnológicas que diferenciam os vários tipos de


dispositivos de
memória incluem custo, tempo e modo de acesso e persistência do
armazenamento.

13.2.1 - Custo.

Está relacionado com a tecnologia utilizada para armazenar os bits de dados e


sua velocidade de acesso. Mostra-se a seguir, uma relação das memórias e seu
custo, começando da memória SRAM, que apresenta um maior custo por Mbyte,
até à memória de fita magnética, com o menor custo de armazenamento por
Mbyte:

• SRAM: $$$$$/Mbyte
• DRAM: $$$/Mbyte
• Discos magnéticos: $$/Mbyte
• Fitas magnéticas: $/Mbyte

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 96


tarcisiob@gmail.com
13.2.2 - Tempo de acesso.

É o tempo para localizar, ler ou escrever um item de informação da (ou para a)


memória. Usualmente separa-se tempo de acesso (apenas localização) do tempo
de transferência (que depende da dimensão do dado). Tempos típicos são da
ordem de:

• SRAM: 13–25 ns
• DRAM: 60–70 ns
• Discos magnéticos: 8–10 ms

13.2.3 - Modo de acesso.

Especifica o modo pelo qual a localização pode ser determinada para a


transferência
do dado:

• Acesso a posições aleatórias: o acesso a posições arbitrárias ocorre em


tempo independente da posição acessada. Por exemplo, dispositivos
semicondutores de memória (RAM).
• Acesso serial: acesso ocorre apenas em seqüências pré-estabelecidas,
como ocorre com fitas magnéticas.
• Acesso direto (ou semi-aleatório): combina características de acesso
aleatório e seqüencial. O acesso a uma posição arbitrária é possível, porém
afeta consideravelmente o tempo de acesso. Por exemplo, discos
magnéticos.

13.2.4 - Alterabilidade.

Caracteriza se o processo de escrita de um item de informação é reversível


ou não.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 97


tarcisiob@gmail.com
Memórias de escrita e leitura podem ter seus conteúdos livremente alterados,
como em memórias RAM e discos magnéticos. O processo irreversível é
caracterizado por memórias apenas de leitura,
como ROM e PROM.

13. 3 - Terminologia das memórias.

Antes de uma análise sobre os vários dispositivos de memória serão


definidos alguns dos mais importantes termos que são comuns à maioria dos
sistemas de memória.

13.3.1 - Célula de memória

É um circuito elétrico para armazenar um único bit (0 ou 1). Exemplos de


células de memórias: Um Flip Flop.

13.3.2 - Palavra de memória (Word)

É um grupo de bit´s que representa informações ou dados de algum tipo.


Por exemplo, um registro consistindo de 8 FFs pode ser considerado uma
memória que armazena uma palavra de oito bit´s. Os tamanhos das palavras nos
modernos computadores estão na faixa de 8 a 138 bit´s, dependendo do tamanho
do computador.

13.3.3 - Byte

É um termo especial usado para uma palavra de 8 bit´s. Um Byte sempre


consiste de 8 bit´s, que é o tamanho mais comum de palavras num
microcomputador.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 98


tarcisiob@gmail.com
13.3.4 – Capacidade

É a maneira de especificar quantos bit´s podem ser armazenados numa


memória particular. Para efeito de ilustração suponha-se que se tem uma memória
que pode armazenar 4096 palavras de 20 bit´s. Isto representa uma capacidade
total de 81.920 bit´s. Pode-se também expressar esta capacidade de memória
como 4096 x 20. Quando expressa dessa maneira, o primeiro número é o número
de palavras (4096) e o segundo é o número de bit´s (20) por palavra (tamanho da
palavra). O número de palavras numa memória é freqüentemente, um múltiplo de
1024. É comum usar a designação 1K para representar 1024 quando referindo-se
à capacidade da memória. Assim, uma memória que possua uma capaciade de 4k
x 20 é realmente uma memória de 4096 palavras.

Exercícios.

1) Uma certa memória a semicondutor é especificada como 2k x 8. Quantas


palavras podem ser armazenadas na memória? Qual é o tamanho da palavra?
Quantos bit´s totais podem ser armazenados?

2) Uma certa memória a semicondutor é especificada como 16k x 8. Quantas


palavras podem ser armazenadas na memória? Qual é o tamanho da palavra?
Quantos bit´s totais podem ser armazenados?

3) Uma certa memória a semicondutor é especificada como 32M x 16. Quantas


palavras podem ser armazenadas na memória? Qual é o tamanho da palavra?
Quantos bit´s totais podem ser armazenados?

13.3.5 - Endereço (Address)

É um número que identifica o local de uma palavra na memória. Cada


palavra armazenada na memória tem um único endereço. Os endereços são

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 99


tarcisiob@gmail.com
sempre especificados em números binários, embora que possam ser expressos
em octal, hexadecimal ou decimal, por questão de conveniência. A tabela que
segue, mostra uma pequena memória consistindo de 8 palavras. Cada uma
dessas 8 palavras tem um endereço especificado por um número de 3 bit´s
compreendendo 000 à 111.

Endereço Palavra
000 Palavra 0
001 Palavra 1
010 Palavra 2
011 Palavra 3
100 Palavra 4
101 Palavra 5
110 Palavra 6
111 Palavra 7

Sempre que houver referência a um local definido da palavra na memória, usa-se


o código de endereço para especificá-lo.

Exercícios:

1) Uma memória é especificada como 4k x 8. Quantas linhas de entrada e de


saída ela possui? Quantas linhas de endereço ela possui? Qual é a sua
capacidade total em bytes?

2) Uma memória é especificada como 8k x 8. Quantas linhas de entrada e de


saída ela possui? Quantas linhas de endereço ela possui? Qual é a sua
capacidade total em bytes?

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 100


tarcisiob@gmail.com
13.3.6 - Operação de leitura (Read)

É uma operação pela qual uma palavra binária armazenada num local
específico (endereço) da memória é identificada e então, transferida para outro
local. Por exemplo, se for desejado usar a palavra 4 da memória por qualquer
motivo, deve-se realizar a operação de leitura no endereço 1002. A operação de
leitura é muitas vezes chamada de operação de busca (fech operation), uma vez
que uma palavra está sendo “buscada” na memória.

Exercícios:
Qual o número a ser escrito nas entradas de endereço para:
1) Acessar a primeira palavra.
2) Acessar a décima palavra.
3) Acessar a palavra de número 135.
4) Acessar a palavra de número 37.

13.3.7 - Operação de escrita (Write)

É uma operação pela qual uma nova palavra é colocada (armazenada) num
local particular da memória. Esta operação é também referida como uma operação
de armazenagem, sempre que uma nova palavra for escrita num local da
memória, ela substitui a palavra que havia sido anteriormente armazenada.

13.3.8 - Tempo de ciclo

É uma medida de velocidade da memória. É o tempo requerido para a


memória e o instante em que o dado torna-se disponível na saída da memória. O
símbolo tACC é usado para tempo de acesso.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 101


tarcisiob@gmail.com
13.4 – Tipos de memórias

13.4.1 - Memória volátil

Refere-se a qualquer tipo de memória que necessite de energia elétrica


para armazenar informação. Na falta da energia elétrica toda a informação é
perdida. Muitas memórias à semicondutores são voláteis, enquanto todas as
memórias magnéticas são não voláteis.

13.4.2 - Memória de acesso seqüencial (Seqüencial Access Memory – SAM)

É o tipo de memória no qual o tempo de acesso não é constante, varia


dependendo do local do endereço. Encontra-se uma palavra particular
armazenada seqüenciado todos os locais de endereço ate o endereço desejado
ser alcançado. Isso produz um tempo de acesso que é muito mais longo do que
aquele para as RAMs. Exemplos de SAM´s incluem fitas, discos e tambores
magnéticos.

13.4.3 - Memória para Ler/Escrever (Read/Write Memory – RWM)

É qualquer memória destinada à leitura ou escrita com igual facilidade.

13.4.4 - Memórias Estáticas

São memórias a semicondutor nas quais os dados ficam permanentemente


armazenados enquanto houver fonte de energia elétrica, sem necessidade de
reescrever, periodicamente, os dados na memória.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 102


tarcisiob@gmail.com
13.4.5 - Memórias Dinâmicas

São memórias a semicondutores nas quais os dados não ficam,


permanentemente, armazenados, mesmo com a presença da fonte de energia
elétrica, a não ser que os dados sejam reescritos periodicamente nas memórias.

13.5 - Classificação das memórias

Existem diversos tipos de memórias, diferenciadas pela sua capacidade de


armazenamento, tempo de acesso, volatilidade e também separadas entre
aquelas em que pode-se apenas ler um dado ou ler e escrever dados. Mostra-se a
seguir, todos estes tipos de memória.

13.5.1 - Memória ROM

ROM é a sigla para Read Only Memory (memória somente de leitura). Já


pelo nome, é possível perceber que esse tipo de memória só permite leitura, ou
seja, suas informações são gravadas pelo fabricante uma única vez e após isso
não podem ser alteradas ou apagadas, somente acessadas. Em outras palavras,
são memórias cujo conteúdo é gravado permanentemente. Existem três tipos
básicos de memória ROM: PROM, EPROM e EAROM:

• PROM (Programmable Read Only Memory) - um dos primeiros tipos de


memória ROM, o PROM tem sua gravação feita por aparelhos especiais
que trabalham através de uma reação física com elementos elétricos. Os
dados gravados na memória PROM não podem ser apagados ou alterados;
• EPROM (Electrically Programmable Read Only Memory) - A tecnologia
EPROM permite a remoção de seu conteúdo através de uma luz ultra-
violeta. A memória poderá ser gravada e ter seus dados apagados para
uma nova gravação, quantas vezes forem necessárias. Para isto elas
possuem uma janela de vidro, no qual o raio ultra-violeta poderá incidir em

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 103


tarcisiob@gmail.com
seu interior, provocando uma reação das moléculas dos semicondutores
que ficam dopados com determinada polaridade e assim aceitam uma nova
programação.
• EAROM (Electrically Alterable Read Only Memory) - são memórias
similares à EPROM. Seu conteúdo pode ser apagado aplicando-se uma
voltagem específica aos pinos de programação (daí o nome "electrically
alterable - alteração elétrica");

Um fato importante a ser citado é que, atualmente, usa-se um tipo diferente


de memória ROM. Trata-se da FlashROM, um tipo de chip de memória para BIOS
de computador que permite que esta seja atualizada através de softwares
apropriados. Essa atualização pode ser feita por disquete ou até mesmo pelo
sistema operacional. Tudo depende dos recursos que o fabricante da placa-mãe
em questão disponibiliza.

13.5.2 - Memória RAM

RAM é a sigla para Random Access Memory (memória de acesso


aleatório). Este tipo de memória permite tanto a leitura como a gravação e
regravação de dados. No entanto, assim que elas deixam de ser alimentadas
eletricamente, ou seja, quando o usuário desliga o computador, a memória RAM
perde todos os seus dados. Existem 2 tipos de memória RAM: estáticas e
dinâmicas, descritas a seguir:

• DRAM (Dynamic Random Access Memory): são as memórias do tipo


dinâmico e geralmente são armazenadas em cápsulas CMOS
(Complementary Metal Oxide Semiconductor). Memória desse tipo
possuem capacidade alta, isto é, podem comportar grandes quantidades de
dados. No entanto, o acesso a essas informações costuma ser mais lento
que o acesso à memórias estáticas. As memórias do tipo DRAM costumam
ter preços bem menores que as memórias do tipo estático. Isso ocorre

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 104


tarcisiob@gmail.com
porque sua estruturação é menos complexa, ou seja, utiliza uma tecnologia
mais simples, porém viável;
• SRAM (Static Random Access Memory): são memórias do tipo estático.
São muito mais rápidas que as memórias DRAM, porém armazenam
menos dados e possuem preço elevado se compararmos o custo por MB.
As memória SRAM costumam ser usadas em chips de cache (Memória
Cache).

13.5.3 - Memória EDO

EDO é a sigla para (Extended Data Out). Trata-se de um tipo de memória


RAM que chegou ao mercado no início de 1997 e que possui como característica
essencial a capacidade de permitir ao processador acessar um endereço da
memória ao mesmo tempo em que esta ainda estava fornecendo dados de uma
solicitação anterior. Esse método permite um aumento considerável no
desempenho da memória RAM.

Esse tipo de memória precisava ser usada com pentes em pares. Isso porque os
processadores daquela época (Pentium) podiam acessar 64 bits por vez, mas
cada pente de memória EDO trabalhava apenas com 32 bits. No caso de
processadores 486, esse acesso era feito a 32 bits e assim um único pente
poderia ser usado. Memórias EDO usavam o encapsulamento SIMM-72, visto em
um tópico mais à frente.

13.5.4 - Memória SDRAM

Na busca de uma memória mais rápida, a indústria colocou no mercado a


memória SDRAM (Synchronous Dynamic Random Access Memory), um tipo de
memória que permite a leitura ou o armazenamento de dois dados por vez (ao
invés de um por vez, como na tecnologia anterior). Além disso, a memória SDRAM
opera em freqüências mais altas, variando de 66 MHz a 133 MHz. A memória
SDRAM utiliza o encapsulamento DIMM, a ser visto no tópico seguinte.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 105


tarcisiob@gmail.com
13.6 - Histórico de encapsulamentos

A seguir, são mostrados os tipos de encapsulamento de memórias mais usados


nos PCs:

13.6.1 - DIP

DIP (Dual In Line Package) - esse é um tipo de encapsulamento de memória


antigo e que foi utilizado em computadores XT e 286, principalmente como
módulos EPROM (que eram soldados na placa). Também foi muito utilizado em
dispositivos com circuitos menos sotisticados;

Memória com encapsulamento DIP

13.6.2 - SIP

SIPP (Single In Line Pin Package) - esse tipo encapsulamento é uma espécie de
evolução do DIP. A principal diferença é que esse tipo de memória possui, na
verdade, um conjunto de chips DIP que formavam uma placa de memória (mais
conhecida como pente de memória). O padrão SIPP foi aplicado em placas-mãe
de processadores 286 e 386;

13.6.3 - SIMM

SIMM (Single In Line Memory Module) - o encapsulamento SIMM é uma evolução


do padrão SIPP. Foi o primeiro tipo a usar um slot (um tipo de conector de
encaixe) para sua conexão à placa-mãe. Existiram pentes no padrão SIMM com
capacidade de armazenamento de 1 MB a 16 MB. Este tipo foi muito usado nas
plataformas 386 e 486 (primeiros modelos).

Na verdade, houve dois tipos de padrão SIMM: o SIMM-30 e o SIMM-72. O


primeiro é o descrito no parágrafo anterior e usava 30 pinos para sua conexão. O
segundo é um pouco mais evoluído, pois usa 72 pinos na conexão e armazena

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 106


tarcisiob@gmail.com
mais dados (já que o pente de memória é maior), variando sua capacidade de 4
MB a 64 MB. O SIMM-72 foi muito utilizado em placas-mãe de processadores 486,
Pentium e em equivalentes deste;

Memória com encapsulamento SIMM-72

13.6.4 - DIMM

DIMM (Double In Line Memory Module) - esse é o padrão de encapsulamento que


surgiu após o tipo SIMM. Muito utilizado em placas-mãe de processadores
Pentium II, Pentium III e em alguns modelos de Pentium 4 (e processadores
equivalentes de empresas concorrentes), o padrão DIMM é composto por módulos
de 168 pinos.

Os pentes de memória DIMM empregam um recurso chamado ECC (Error


Checking and Correction - detecção e correção de erros) e tem capacidades mais
altas que o padrão anterior: de 16 a 513 MB. As memórias do tipo SDRAM utilizam
o encapsulamento DIMM.

Memória com encapsulamento


DIMM

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 107


tarcisiob@gmail.com
13.7 - Memória DDR

As memórias DDR (Double Data Rating) estão cada vez mais presentes
nos computadores e são consideradas as substitutas naturais das populares
memórias SDRAM. Isso se deve a vários fatores, entre eles, a rapidez deste novo
ipo de memória.

13.7.1 – Surgimento da memória DDR

Na época em que o Pentium III, da Intel, era o


processador mais usado, a velocidade padrão do FSB
(Front Side Bus - velocidade externa do processsador, ou
seja, a velocidade na qual o processador se comunica com
a memória e componentes da placa-mãe) era de 133 MHz,
equivalente a 1.064 MB por segundo. No entanto, sabe-se que no geral, o chipset
da placa-mãe não usa a freqüência de FSB para se comunicar com a memória,
mas sim a velocidade desta. Nessa época, o padrão para velocidade das
memórias era 133 MHz (as conhecidas memórias SDRAM PC133), que também
fornecia uma taxa de velocidade de 1.064 MB por segundo. Com isso, é possível
notar que havia um equilíbrio na velocidade de comunicação entre os
componentes do computador.

No entanto, com o lançamento da linha


Pentium 4, da Intel, Duron e Athlon da
AMD, esse "equilíbrio" deixou de existir,
pois o FSB dos processadores passou a
ter mais velocidade enquanto que as
memórias continuavam no padrão PC133,
mantendo a velocidade em 133 MHz. Isso
significa que o computador não conseguia
aproveitar todos os recursos de
processamento.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 108


tarcisiob@gmail.com
O simples lançamento das memórias DDR não foi uma solução imediata para os
problemas de velocidade das memórias e do FSB. Somente com o lançamento
das memórias Dual DDR é que a solução se tornou comprovadamente eficaz.

13.7.2 - Funcionamento das memórias DDR

As memórias DDR funcionam de maneira parecida às memórias SDRAM.


Seus pentes (ou módulos) possuem 184 pinos, 16 há mais que as memórias
tradicionais, que possuem 168. Fisicamente, há apenas uma divisão no encaixe
do pente, enquanto que na memória SDRAM há dois. Um detalhe interessante é
que a voltagem das DDR é 2.5v, contra 3.3v das SDRAM. Isso diminui o consumo
de energia e gera menos calor. Para um PC normal isso pode até não fazer muita
diferença, mas faz em um notebook, por exemplo.

O grande diferencial das memórias DDR está no fato de que elas podem
realizar o dobro de operações por ciclo de clock (em poucas palavras, a
velocidade em que o processador solicita operações. Assim, uma memória DDR
de 266 MHz trabalha, na verdade, com 133 MHz. Como ela realiza duas
operações por vez, é como se trabalhasse a 266 MHz.

Como já dito antes, as memórias DDR são muito parecidas com as memórias
SDRAM. Veja o porquê: os pentes de memórias SDRAM e DDR são divididos
logicamente em bancos, onde cada um contém uma determinada quantidade de
endereços de memória disponíveis. Cada banco, por sua vez, se divide em
combinações de linhas e colunas. Acessando uma linha e coluna de um banco é
que se acessa um endereço de memória. Dentro de cada banco, somente um
linha pode estar sendo usada por vez, mas é possível que haja mais de um
acesso simultâneo, desde que seja a endereços diferentes. É isso que a memória
DDR faz: basicamente acessa duas linhas, em vez de uma, não sendo preciso
mudar a estrutura da memória. Basta fazer alguns ajustes em circuitos e claro,
criar chipsets que possuam controladores de memória que consigam fazer
acessos desse tipo.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 109


tarcisiob@gmail.com
Um fato importante a citar é que é possível acessar mais de 2 endereços de
memória, mas isso gera custos bem maiores. Além disso, quanto maior a
quantidade de dados transferidos, maior o nível de ruído eletromagnético. A tabela
que segue, compara as velocidades entre os diversos tipos de memórias mais
comumente usadas:

Memória Velocidade
SDRAM PC100 800 MB/s
SDRAM PC133 1.064 MB/s
DDR200 ou
1.600 MB/s
PC1600
DDR266 ou
2.100 MB/s
PC2100
DDR333 ou
2.700 MB/s
PC2700
DDR400 ou
3.200 MB/s
PC3200
Dual DDR226 4.200 MB/s
Dual DDR333 5.400 MB/s
Dual DDR400 6.400 MB/s

13.8 - Dual DDR

As memórias do tipo Dual DDR funcionam baseadas na seguinte idéia: em


vez de utilizar uma única controladora para acessar todos os slots de memória da
placa-mãe, por que não usar duas controladoras ao mesmo tempo? Essa é a
principal diferença do esquema Dual DDR. As memórias atuais seguem o padrão
de 64 bits e são alocadas em bancos. Usando duas controladoras
simultaneamente, o acesso passa a ser de 138 bits. Para isso é necessário usar
dois pentes de memória idênticos no computador. Essa igualdade deve ocorrer,
inclusive com a marca, para evitar instabilidades.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 110


tarcisiob@gmail.com
Para trabalhar com Dual DDR não basta colocar dois pentes de memória idênticos
no computador. É necessário que sua placa-mãe tenha esse recurso. Além disso,
o esquema Dual DDR só se torna realmente eficiente se utilizado com
processadores Pentium IV, Athlon XP ou superiores.

Mesmo que sua placa-mãe suporte esse


recurso, uma dica interessante é comprar
um kit para Dual DDR. Esse kit contém dois
pentes de memória DDR exatamente
iguais, próprios para funcionar como Dual.
Se você comprar dois pentes de memória
DDR iguais, mas que venham separadas, o
funcionamento pode ser normal, mas as
chances de instabilidade aumentam. Isso
ocorre principalmente com o padrão DDR400. É claro que os kits são mais caros,
principalmente no Brasil. A foto ao lado mostra uma placa-mãe trabalhando com
Dual DDR.

13.9 - Operação geral das memórias.

Embora que cada tipo de memória seja diferente na sua operação interna
há certos princípios de operação básicos que são os mesmos para todos os
sistemas de memória. Uma compreensão dessas idéias básicas ajudará o estudo
das memórias individuais.

Cada sistema de memória requer vários tipos de linhas de entrada e saída


para desempenhar as seguintes funções:

1- Selecionar o endereço na memória que está sendo acessada para operação


de leitura ou escrita.
2- Selecionar a operação de leitura ou escrita a ser realizada.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 111


tarcisiob@gmail.com
3- Fornecer os dados de entrada a serem armazenados na memória durante a
operação escrita.
4- Manter os dados na saída da memória durante a operação leitura.
5- Habilitar (ou desabilitar) a memória de tal sorte que ela responderá (ou não
responderá) aos comandos de endereço e de leitura/escrita.

A Figura que segue ilustra essas funções básicas num diagrama


simplificado de memória 32 x 4 que armazena 32 palavras de 4 bit´s. Desde que o
tamanho das palavras seja de 4 bits há 4 linhas de entrada I0 a I3 e 4 linhas de
saída O0 a O3. Durante a operação escrita os dados a serem armazenados na
memória tem que ser aplicados nas linhas de entrada de dados. Durante a
operação leitura a palavra a ser lida na memória aparece nas linhas de saída de
dados.
Esta memória tem 32 diferentes locais de armazenagem e por isso, 32
diferentes endereços, desde 00000 a 11111. Assim, há necessidade de 5 entradas
A0—A4, para especificar um dos 32 locais de endereço. Para acessar um dos
locais de memória, para operação de leitura ou escrita, o código de 5 bit´s para o
local particular, tem que ser aplicado nas entradas de endereço.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 112


tarcisiob@gmail.com
Exercícios:

1) Explique resumidamente os modos de acesso das memórias:


• Acesso a posições aleatórias.
• Acesso serial.
• Acesso direto o semi-aleatório.
2) Conceitue:
• Célula.
• Palavra.
• Byte.

3) Uma certa memória a semicondutor é especificada como 16k x 32. Quantas


palavras podem ser armazenadas na memória? Qual é o tamanho da palavra?
Quantos bit´s totais podem ser armazenados?
4) Para que serve o barramento de endereços de uma memória.
5) Conceitue:
• Tempo de ciclo de uma memória.
• Memória volátil.
• Memória RAM.
• Memória SAM.
• Memória RWM.
• Memória ROM.
• Memórias estáticas.
• Memórias dinâmicas.
6) Quais os tipos de memórias ROM´s existentes? Explique resumidamente cada
uma.
7) Combine duas memórias RAM´s de 16 x 16 para obter uma de 16 x 32.
8) Combine duas memórias RAM´s de 16 x 16 para obter uma de 32 x 16.
9) Combine duas memórias RAM´s de 8 x 4 para obter uma de 8 x 8.
10) Combine duas memórias RAM´s de 8 x 4 para obter uma de 16 x 4.
11) Combine duas memórias RAM´s de 16 x 8 para obter uma de 16 x 16.

Prof. Tarcísio Barroso Marques – FAFISM – Muriaé – MG 113


tarcisiob@gmail.com

Você também pode gostar