Upload
amancio-doho
View
3
Download
0
Embed Size (px)
DESCRIPTION
Muito boa brochura que explica muito bem alguns conceitos sobre sistemas digitais
Citation preview
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 1 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 2 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 3 of 101
Apresentação / 1º Projecto
Esta “Apresentação” diz respeito a uma disciplina, de seu nome “Sistemas Digitais”, leccionada no Instituto
Superior Técnico, em Lisboa. Esta é uma escola de Engenharia, isto é: subentende-se que a audiência está ali
para aprender a lidar com Projectos (de uma índole particular) em benefício da sociedade humana. Pelo que será
algo natural desenrolar a “Apresentação” precisamente em torno de um Projecto concreto – seguindo uma
abordagem que faça sobressair o que cabe na designação “Sistemas Digitais”, as competências que os estudantes
deverão adquirir ao longo do semestre, os meios facultados para os apoiar e os métodos de avaliação.
O Projecto vem a ser o seguinte: concretizar um circuito que viabilize o acender/apagar de uma lâmpada a
partir de um ou mais locais, cada um provido do “seu” interruptor.
I. Na primeira situação, a mais simples, existe um interruptor apenas: quem não terá já deparado com uma sala
em cujo tecto se encontra uma lâmpada comandada por um interruptor junto da porta – única – de acesso à sala?
Intuem-se os dispositivos subjacentes a tal configuração – e o pertinente circuito, i.e., a maneira de os interligar
para conseguir o funcionamento pretendido, vidé fig I: uma fonte de energia eléctrica (sem perda de generalidade:
o quadro eléctrico fornecendo uma tensão de 220 Volt) e um par de fios entre essa fonte e a lâmpada – em que
algures se interpõe um interruptor (I) de 2-contactos On/Off: Uma das posições do interruptor fecha o circuito – e
a lâmpada acende; invertendo a posição do interruptor, o circuito fica aberto, e a lâmpada apaga-se...
II. Dirá o leitor: isto até eu sei, não há aqui nada de novo... Considere-se então uma situação não tão simples:
uma escada coberta por uma lâmpada – a comandar por dois interruptores, ‘B’ e ‘T’: um no sopé, e outro no topo...
Obviamente, estender a solução precedente – pelo artifício de, entre a fonte de energia eléctrica e a lâmpada,
interpor em série dois interruptores de 2-contactos – não garante o funcionamento pretendido. Seja, por ex., o caso
de alguém estar a subir a escada (de ‘B’ para ‘T’) com a lâmpada acesa – o que se logra posicionando os
interruptores como se indica na fig II.A. Ao chegar ao topo, inverte a posição do interruptor aí existente (para que
a lâmpada se apague: poupança de energia oblige)... Se logo após chegar alguém mais ao sopé da escada para
também a subir, de nada lhe servirá inverter a posição do interruptor aí à mão: a lâmpada continuará apagada!
A solução, dir-lhe-á o seu fornecedor de material eléctrico, estará em usar, agora, uns assim designados
comutadores de escada – na prática, interruptores de 3-contactos – e, entre eles, dispor dois fios, vidé fig II.B...
Para o confirmar, reveja-se o caso de alguém estar a subir a escada com a lâmpada acesa – o que se pode lograr
com a posição dos interruptores esquematizada na figura. Ao chegar ao topo, inverte a posição do interruptor aí
existente – com o que a lâmpada se apagará... Se logo após chegar alguém mais ao sopé da escada para também a
subir, bastar-lhe-á inverter a posição do interruptor aí existente: a lâmpada voltará a acender!
III. Aborde-se agora uma situação ainda menos simples: uma sala com três portas; sala coberta por uma única
lâmpada – mas que se pretende que seja comandada por três interruptores, um em cada uma daquelas portas.
A solução, dir-lhe-ão na loja de material eléctrico, será usar, além de dois comutadores de escada (sejam ‘W’ e
‘E’), um designado inversor duplo ‘C’, e interligá-los por dois fios, como mostra a fig III... Um inversor duplo é
um interruptor de 4-contactos; nomeando-os de NW, NE, SE e SW, esse inversor garante que, a cada momento,
todos eles se encontram ligados entre si, dois a dois: ou {NW a SE e NE a SW} ou {NW a NE e SW a SE}.
Constata-se que, estando os interruptores posicionados como se indica na fig III, a lâmpada acende... Se se
inverter algum deles, ela apaga-se; se depois se inverter qualquer um deles, a lâmpada volta a acender...
IV. Não custa imaginar outros cenários mais complexos: nomeadamente, substituir os interruptores por botões
de pressão que, quando premidos, levam a lâmpada a acender por três minutos, etc., etc.: Mas por ora chega...
Está na hora de comparar as várias versões do Projecto entre mãos... Salta à vista que algo permanece de uma
para a outra: um subsistema de iluminação – envolvendo a fonte de energia, fios e uma lâmpada. Algo vai
mudando, todavia: o subsistema que o controla – que envolve os interruptores e os fios que os interligam. Porém, e
é este o ponto que importa agora salientar, não há como separar um do outro: percorrendo as várias soluções
esquematizadas, é notório que, em todas elas, o controlo está integrado no próprio subsistema a controlar.
Precisamente, a solução de Sistemas Digitais/Lógicos é outra. É o que se irá ver a seguir.
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 4 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 5 of 101
Apresentação / Pensar Lógico
A figura esquematiza a arquitectura duma solução “Lógica/Digital” para a versão “2-interruptores” do Projecto
enunciado. Como expectável, lá está o subsistema a controlar – i.e., a fonte de energia eléctrica, a lâmpada e o par
de fios que os interliga... Mas no horizonte há algo de novo: um “Circuito de Decisão”... De que se trata?
– Como o nome o indica, trata-se de um circuito com a finalidade de decidir se a lâmpada deve acender ou
apagar – e sinalizar essa sua decisão numa saída, ‘L’;
– Essa decisão não é à toa: é determinada pelos sinais que o circuito recebe nas suas entradas, {B, T} – que, no
caso, devem traduzir pari passu a posição dos interruptores.
Agora, é nítida a separação entre o subsistema a controlar e o subsistema que o controla: de comum, apenas um
assim designado “Interruptor electrónico” – cuja função é habilitar o acender/apagar da lâmpada seguindo as
indicações que recebe do Circuito de Decisão.
Precisamente, o foco da disciplina a que esta Apresentação diz respeito é o desenho de Circuitos de Decisão;
fica relegada para outras disciplinas a familiarização com o supracitado Interruptor electrónico, e bem assim com
os demais dispositivos em jogo: fonte de energia eléctrica, lâmpada...
Em termos gerais, o desenho de Circuitos de Decisão envolve duas etapas: antes de mais, uma especificação de
como ele deve operar – e que na prática se resume ao preenchimento de uma assim designada Tabela de Verdade; e
depois a materialização dessa especificação mediante os “tijolos” (mais formalmente: circuitos integrados ou,
mais brevemente: ICs ou chips) que o mercado disponibiliza para o efeito. Sem mais delongas, ir-se-á abordar a
especificação para o Projecto concreto entre mãos – deixando para as páginas seguintes a sua materialização física
A decisão que o Circuito de Decisão oferece na sua saída ‘L’ só pode ser uma entre duas possíveis: “acender”
ou “apagar”. Ela baseia-se nos valores recebidos nas entradas {B, T} – que devem seguir pari passu o estado dos
interruptores; cada um só pode assumir duas posições – sem perda de generalidade: “para cima” ou “para baixo”.
Como se relaciona essa decisão com os estados dos interruptores: quais as situações que conduzem ao acender
da lâmpada – e, outrossim, quais as que conduzem ao seu apagar?
• seja o caso em que ambos os interruptores se encontram “para o mesmo lado”, por ex., para-cima; sem
perda de generalidade, será pacífico aceitar que a lâmpada se encontrará apagada...
• admita-se que, nessa situação, um fulano começa a descer – tendo o cuidado prévio de inverter a posição
do interruptor no topo da escada; a lâmpada irá acender...
• descida a escada, é hora de o fulano inverter a posição do interruptor no sopé da escada; com isso, ficam
ambos os interruptores para-baixo: a lâmpada irá apagar...
Convém coligir estas observações numa tabela: à esquerda, listam-se as possíveis combinações dos estados
(p/cima e p/baixo) dos interruptores; à direita, inscreve-se a correspondente decisão (apagar ou acender) a tomar...
Tal como se apresenta, essa tabela tem o seu quê de aborrecido: a escrita repetida das palavras para-cima e
para-baixo, apagar e acender leva o seu tempo... Pelo que será compreensível a sua compactação – pelo artifício
dito de codificação: substituir tais palavras por símbolos, a saber: ‘0’ e ‘1’.
• para baixo” e “acender” são substituídos/codificados por ‘1’;
• para cima” e “apagar” são substituídos/codificados por ‘0’
Também por mor de compactação, as designações das colunas são substituídas por Literais: {B, T} e {L}...
O resultado global dessa substituição é a assim designada Tabela de Verdade do Circuito de Decisão em causa.
(Formalmente, define uma função L(B, T), cujo Domínio é {00, 01, 10 e 11}, e cujo Contradomínio é {0,1};
lida de cima para baixo, a coluna ‘L’ vem a ser '0110, que alguma literatura designa de número designativo de ‘L’)
Nela, e com os pressupostos acima: quando ocorrer B=1, subentende-se: “o interruptor B está para baixo”; e
quando B=0, subentende-se: “o interruptor B está para cima” (Idem para as notações T=1 e T=0). E, ao ocorrer
L=1, subentende-se: “a lâmpada L deve acender”; e, quando L=0, subentende-se: “a lâmpada L deve apagar-se”.
É a partir da Tabela que se chega a um circuito físico que concretiza o funcionamento requerido. Mas, antes de
abordar como se faz, é hora de o leitor avaliar os seus progressos: o circuito acima responde a dois interruptores,
{B, T}... Considere-se porém uma lâmpada comandada por três interruptores; a Tabela de Verdade irá comportar, à
esquerda, 3 colunas, {W, C, E}: qual o número designativo de ‘L’? (se respondeu 01101001, está de parabéns)
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 6 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 7 of 101
Apresentação / 1ª Solução: com tijolos básicos: AND, OR, NOT
Especificado um Circuito de Decisão através de uma Tabela de Verdade, a questão que se põe a seguir é: como
materializá-la fisicamente? Adiantando desde já que a solução não é única, intui-se: há que fazer um levantamento
dos chips que o mercado “oferece”, há que optar por alguns deles, e enfim há que os interligar.
(Durante a discussão da materialização, poder-se-á experimentar algum sentimento de confusão e perplexidade
– que, numa sessão de apresentação, será quase inevitável: o objectivo não é ficar-se convencido que já só falta
um ferro de soldar… É que ficam na sombra muitos detalhes, por isso mesmo vai haver sessões dedicadas a cada
solução – e só então se ficará capacitado para a concretizar. O importante é: que se compreenda que a disciplina é
interessante, enquanto se debruça sobre projectos práticos; que a sua abordagem é lógica – que está ao alcance de
qualquer um, não é nada transcendente; que há uma multiplicidade de soluções – e que há que as dominar a todas
(nem que seja para não se perder face à concorrência)…
Abaixo, aborda-se a materialização daquela Tabela de Verdade usando as gates elementares AND, OR e NOT.
Enunciado-SOP: Atente-se à coluna ‘L’ da Tabela... Ela assume o valor ‘1’ em duas linhas só: quando {B=0 e
T=1}, e quando {B=1 e T=0}; nas restantes linhas, volve-se em ‘0’. Com as conjunções (‘e’ e ‘ou’), pode verter-se
esta observação no seguinte enunciado: L=1 se e só se: [(B=0) e (T=1)] ou [(B=1) e (T=0)]
O “se e só se” (abreviadamente, sse), acentua que se procede a um elenco exaustivo das combinações de {B, T}
em que L=1: rejeitam-se aquelas em que L=0, e “não fica de fora” nenhuma das combinações para as quais L=1.
(Atente-se à concisão da linguagem: diz-se “L=1“, ou “L é igual a ‘1’”, para significar “na saída ‘L’, o valor
lógico é ‘1’“; e dir-se-á “B=0” ou “B é igual a ‘1’“ para significar que “na entrada ‘B’, o valor lógico é ‘0’)
O enunciado acima explicita a dependência de ‘L’ relativamente às entradas {B, T}; nele, ocorrem apenas três
tipos de operadores – a saber: ‘e’, ‘ou’ e ‘não’ (subentende-se que inquirir se é igual a ‘0’ equivale a inquirir se
não é igual a ‘1’). Acontece que já desde o século passado vem o mercado disponibilizando chips que os
concretizam, chips esses que, não surpreenderá o leitor, se designam de ANDs, ORs e NOTs.
• o AND é um dispositivo com uma saída que é ‘1’ sse todas as suas entradas forem ‘1’;
• o OR é um dispositivo com uma saída que é ‘1’ sse alguma das suas entradas for ‘1’;
• o NOT é um dispositivo com uma saída que é ‘1’ sse a sua única entrada for ‘0’.
O mercado faculta chips assim, sob a designação de, respectivamente, SN7408, SN7432 e SN7404.
A estes chips estão associados símbolos gráficos específicos; os mais antigos estão esquematizados ao lado.
Interligando-os – seguindo pari passu o enunciado-SOP supracitado –, chega-se ao logigrama embaixo, à esquerda:
• “L=1 se e só se: [...] ou [...]” traduz-se em: ‘L’ é a saída de um OR de 2-entradas;
• “[(...) e (...)] ou [(...) e (...)]” traduz-se em: qualquer uma das entradas do OR é um AND de 2-entradas;
• [(B=0) e (T=1)], que caracteriza um desses ANDs, traduz-se em: uma das suas entradas fica directamente
ligada a ‘T’, mas a outra fica ligada a ‘B’ através de um NOT (diz-se que a entrada ‘B’ é negada antes do AND);
• [(B=1) e (T=0)], que caracteriza o outro AND, traduz-se em: uma das suas entradas fica directamente
ligada a ‘B’, mas a outra fica ligada a ‘T’ através de um NOT.
Com isto, se, por ex., {B=0, T=1}, as entradas dos ANDs advêm, respectivamente, {1,1} e {0,0} – com o que
as respectivas saídas serão ‘1’ e ‘0’ – pelo que a saída, ‘L’, do circuito, será ‘1’ – como se pretende.
Adiantando que os chips SN7404 e SN7408 comportam, respectivamente, 2-NOTs e 2-ANDs, deduz-se que,
com três chips (e, bem entendido, uma fonte de alimentação e fios), se conseguirá concretizar o circuito!
Enunciado-POS: Atente-se ao enunciado-SOP a que se chegou acima:
A forma dele é a de um ‘ou’ de vários ‘e’s. E natural é a interrogação: será possível chegar a um enunciado em
que suceda o “contrário”, isto é: um enunciado com a forma de um ‘e’ de vários ‘ou’s? A resposta, diga-se já, é
“sim” – mas é algo abstrusa; pelo que é apresentada de imediato, protelando para outro momento o método
genérico de o leitor a ela chegar: L=1 se e só se: [(B=0) ou (T=0)] e [(B=1) ou (T=1)].
Para aceitar que o enunciado é veraz, repare-se que a condição [(B=0) ou (T=0)] é verificada nas três primeiras
linhas da Tabela de ‘L’: a única linha em que nem ‘B’ nem ‘T’ são ‘0’ é a última. Já a condição [(B=1) ou (T=1)] é
verificada nas três últimas linhas: a única em que nem ‘B’ nem ‘T’ são ‘1’ é a primeira... Qual, então, o conjunto de
linhas que satisfazem ambas as condições? Ora, entre {1ª, 2ª, 3ª} e {2ª, 3ª, 4ª}, o que é comum é {2ª, 3ª}: as linhas
que conduzem a L=1 são, exactamente, a segunda e a terceira: o enunciado-POS acima está, de facto, correcto!
Desse enunciado, e pressuposto que se entendeu a construção do logigrama embaixo à esquerda, será agora
pacífico chegar ao logigrama à sua direita. Um logigrama cuja concretização se bastará com, de novo, 3 chips só!
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 8 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 9 of 101
Apresentação / 2ª Solução: com NAND, NOR, XOR, XNOR
Elaborada a Tabela de Verdade, e concretizada numa interligação adequada dos chips AND, OR e NOT, eis uma
interrogação – que irá pairar em todo o semestre: poder-se-á conceber um outro circuito conforme à mesmíssima
Tabela? E, perguntará o leitor legitimamente, haverá alguma vantagem nisso? É altura de abordar essas questões.
Ademais das gates supracitadas, o mercado disponibiliza outras. Ao lado, assinalam-se quatro delas...
• o NAND é um dispositivo com uma saída que é ‘0’ sse todas as suas entradas forem ‘1’;
• o NOR é um dispositivo com uma saída que é ‘0’ sse alguma das suas entradas for ‘1’.
O mercado faculta chips assim, sob a designação de, respectivamente, SN7400 e SN7402.
Compare-se este funcionamento com o de um AND e o de um OR: constata-se que o NAND se comporta como
um AND seguido dum NOT (e um NOR se comporta como um OR seguido dum NOT). Isso sugere outra família de
Enunciados: conceba-se mentalmente uma outra Tabela, seja NOT-L – obtida de ‘L’ por substituição de ‘0’ por ‘1’
e vice-versa; o enunciado-SOP de NOT-L conduzirá a um logigrama em que NOT-L é a saída dum OR.
Justapondo-lhe um NOT – i.e., substituindo tal OR por um NOR, a conclusão é pacífica: o resultado final será ‘L’!
Ou seja: o foco agora vem a ser as linhas em que ‘L’ se volve ‘0’; enunciando ‘L’ como um ‘ou’ de ‘e’s (um ‘e’
por cada uma dessas linhas), e, no correspondente logigrama, substituindo o OR por um NOR chega-se a ‘L’;
idem, se se enunciar ‘L’ como um ‘e’ de ‘ou’s, e, no correspondente logigrama, substituir o AND por um NAND.
Enunciado-NOR: L assume o valor ‘0’ em duas linhas somente: naquela em que (B=0) e (T=0), e naquela em
que (B=1) e (T=1). Pode verter-se esta observação no seguinte enunciado:
L=0 se e só se: [(B=0) e (T=0)] ou [(B=1) e (T=1)].
Entretanto, a condição [(B=0) e (T=0)] equivale a dizer que a linha que a satisfaz é a única em que não sucede
[(B=1) ou (T=1)]; e [(B=1) e (T=1)] equivale a dizer que a linha que a satisfaz é a única em que não sucede
[(B=0) ou (T=0)]. Com estes considerandos, o Enunciado acima pode ser reescrito em:
L=0 se e só se: {não-[(B=1) ou (T=1)]} ou {não-[(B=0) ou (T=0)]}.
Desse enunciado, e pois que justapondo um NOT a um OR se obtém um NOR, será agora pacífico chegar ao
logigrama embaixo, à direita. Um logigrama cuja concretização se bastará com 2 chips apenas – todos eles NORs!
Enunciado-NAND: Eis um enunciado alternativo para cobrir as duas linhas em que L=0:
L=0 se e só se: [(B=0) ou (T=1)] e [(B=1) ou (T=0)].
Ele pode reescrever-se em
L=0 se e só se: {não-[(B=1) e (T=0)]} e {não-[(B=0) e (T=1)]}.
Desse enunciado, e pois que justapondo um NOT a um AND se obtém um NAND, chega-se ao logigrama
embaixo, à esquerda – cuja concretização se bastará com 2 chips apenas – todos eles NANDs!
Logigrama-só-com XOR (Exclusive-OR):
• o XOR é um dispositivo com uma saída que é ‘1’ sse as suas duas entradas forem diferentes.
Um breve relance à Tabela faz ressaltar que as linhas em que L=1 são precisamente aquelas em que ‘B’ e ‘T’
são diferentes! Bastará um chip SN7486A – ligando-lhe directamente as entradas ‘B’ e ‘T’ – para gerar ‘L’
Logigrama-só-com XNOR (NOT-Exclusive-OR):
• o XNOR é um dispositivo com uma saída que é ‘1’ sse as suas duas entradas forem iguais.
Observe-se de novo que as linhas da Tabela em que L=1 são precisamente aquelas em que ‘B’ e ‘T’ são
diferentes: Para produzir ‘L’, “bastará” um chip SN74266 – e proceder às ligações representadas em baixo à direita
Quiçá um exemplo possa ajudar a percebê-lo: admita-se que, em dado momento, acontece [(B=0) e (T=1)]...
Porquanto ‘B’ e ‘T’ estarão sendo diferentes, a saída ‘W’ estará sendo ‘0’; as entradas do XNOR-E estarão então
sendo, ambas, ‘0’, i.e., iguais – e por conseguinte a saída, ‘L’, do circuito, será ‘1’ – como se pretende.
Reveja-se o caminho percorrido: para uma dada Tabela, já se lograram 6 logigramas distintos: dois envolvendo
o trio OR-AND-NOT, um com dois NANDs, um com dois NORs, um com um XOR e um ultimo com um XNOR...
Quer dizer: soluções com chips distintos, e, mais do que isso, requerendo diferentes quantidades de chips. Ora
está na altura de sublinhar: os chips não custam todos o mesmo, há uns mais caros que outros... Ademais, ter que
contemplar mais chips implica mais fios, uma superfície maior, maior consumo de energia... Ao menos por estas
razões, adivinha-se uma preocupação no semestre: investigar várias estratégias de materialização dos Circuitos.
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 10 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 11 of 101
Apresentação / 3ª Solução: com decoder
A disciplina não tem um carácter meramente académico, antes se vai mesmo até à concretização real, física, dos
logigramas; nisso, uma preocupação maior dos estudantes será a eficiência: os chips a usar não devem ser mais que
os estritamente necessários, sob pena de requererem uma superfície maior, de haver que ligar mais fios, etc, etc...
Nesse sentido, não será surpresa a praxis dos fabricantes – de disponibilizarem no mercado chips, que, se bem
que mais complexos do que os já abordados até aqui, habilitam a uma maior compactação do circuito físico.
Um exemplo disso é o assim denominado descodificador (decoder, no jargão anglo-saxónico – a que, já o leitor
terá concluído, convém ir-se habituando...); este, ao invés dos dispositivos até agora considerados, exibe várias
saídas. Ao lado, esquematiza-se o chip Texas-SN74139, de 4-saídas e 2-entradas de selecção (a seu tempo se
passarão em revista outras entradas dos decoders e a sua funcionalidade) .
Uma analogia que quiçá ajude a entender o seu funcionamento será um vulgar semáforo, com três lâmpadas –
vermelha, amarela e verde: em cada momento somente uma delas deverá estar activa/acesa, as demais mantendo-se
então apagadas. Salvo em caso de mau-funcionamento, nunca se encontram duas delas acesas...
Precisamente, o decoder esquematizado é um dispositivo em que a cada momento uma só das suas (quatro)
saídas deverá estar activa, i.e., a ‘1’ (as restantes ficando inactivas, i.e., a ‘0’). Por mor de oferecer a possibilidade
de escolher qual será ela, segue-se a seguinte praxis:
• para as identificar, as saídas são etiquetadas com rótulos únicos – a saber: ‘00’, ‘01’, ‘10’ e ‘11’;
• para seleccionar a saída a ser activada, são disponibilizadas duas entradas, {S1S0}.
Doravante, se se quiser que seja activada a saída de rótulo ‘00’ (e apenas ela), bastará aplicar ‘00’ nas entradas
{S1S0}, isto é, forçar S1=0 e S0=0; e se se quiser que seja activada a saída de rótulo ‘01’ (e apenas ela), bastará
aplicar ‘01’ nas entradas {S1S0}; não custa adivinhar como proceder para activar as demais saídas...
Como usar tal decoder para materializar a Tabela de Verdade que tem vindo a ser considerada? Não será difícil
ao leitor descortiná-lo: a Tabela estabelece que a saída, ‘L’, será ‘1’ se e só se as combinações das entradas {B, T}
do circuito forem ‘01’ ou ‘10’...
Experimente-se então aplicar {B, T} às entradas de selecção {S1S0} do decoder – e perceber o resultado disso:
• se {B=0, T=1}, fica activa a saída de rótulo ‘01’ – e apenas ela;
• e, se {B=1, T=0}, fica activa a saída de rótulo ‘10’ – e apenas ela.
No fim de contas, a ligação de {B, T} a {S1S0} permite afirmar: o enunciado “L=1 se e só se as combinações
das entradas {B, T} do circuito forem ‘01’ ou ‘10’” equivale a dizer que L=1 se e só se estiver activa a saída ‘01’
ou a saída ‘10’. Então, para lograr a saída ‘L’, bastará interligar essas duas saídas do decoder a um OR: a sua saída
só advirá ‘1’ quando {B=0, T=1} ou {B=1, T=0} – e é isso que se pretende.
Mas, interrogar-se-á o leitor, que irá acontecer no caso de alguma outra combinação nas entradas, como seja
{B=0, T=0}? Não custa descobri-lo: em tal caso, {S1S0} advêm ‘00’ – com o que será activada a saída ‘00’: as
restantes saídas permanecem em ‘0’; isso acontecerá, em particular, com aquelas que são “aproveitadas” no OR (e
que são aquelas rotuladas ‘01’ e ‘10’) – e portanto a saída do circuito ‘L’, que é a saída desse OR, permanecerá ‘0’
– e é isso que se pretende.
Globalmente, portanto, para produzir ‘L’, bastarão dois chips – e proceder às ligações representadas.
Nota: conquanto à frente se regresse a este ponto, não será uma inútil perda de tempo confrontar este logigrama
com aquele correspondente ao Enunciado-SOP: em ambos os casos, a saída ‘L’ do circuito é gerada por um OR de
2-entradas... mas os NOT e AND que fazem parte do logigrama-SOP desapareceram, para dar lugar agora a um
decoder... Que terá acontecido? Isto, tão simplesmente: a compreensão de que todos os Circuitos de Decisão de 2-
entradas que se podem conceber podem reduzir-se a uma mesma estrutura genérica: um OR de um ou mais ANDs!
Os fabricantes limitaram-se então a facultar um dispositivo (oportunamente se discutirá porque se chama decoder)
– que, na prática, oferece um plano de ANDs das várias entradas de selecção (negadas ou não), um por cada saída
do decoder; trata-se de um dispositivo general-purpose, i.e., caso a caso, o desenhador de um Circuito limitar-se-á
a escolher quais desses ANDs – ou, o que é o mesmo, quais das saídas do decoder – são relevantes, e ligá-las a um
OR: menos chips e menos fios!
Mas, aí vem a inevitável pergunta: haverá uma solução ainda mais fácil? É o que se vai ver a seguir...
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 12 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 13 of 101
Apresentação / 4ª Solução: com multiplexer
Um outro exemplo de chips general-purpose facultados pelos fabricantes é o assim denominado multiplexer.
Ao lado, esquematiza-se o chip Texas-SN74153, com 1-saída, 2-entradas de selecção e 4-entradas de dados (a seu
tempo se passarão em revista outras entradas dos multiplexers e a sua funcionalidade).
Uma analogia que quiçá ajude a entender o seu funcionamento será um semáforo, com uma só lâmpada – mas
com três filtros: vermelho, amarelo e verde: em cada momento somente um deles deverá cobrir a lâmpada. Salvo
em caso de mau-funcionamento, nunca se abaixam dois filtros sobre a lâmpada...
Precisamente, o multiplexer esquematizado é um dispositivo em que a cada momento uma só das suas (quatro)
entradas de dados deverá ser reproduzida na sua (única) saída. Por mor de oferecer a possibilidade de escolher
qual será ela, segue-se a seguinte praxis:
• para as identificar, as entradas de dados são etiquetadas com rótulos – a saber: ‘00’, ‘01’, ‘10’ e ‘11’;
• para seleccionar a entrada a reproduzir na saída, são disponibilizadas duas entradas de selecção, {S1S0}.
Doravante, se se quiser que à saída apareça o valor que está na entrada de dados de rótulo ‘00’, bastará aplicar
‘00’ nas entradas {S1S0}; e se se quiser que à saída apareça o valor na entrada de dados de rótulo ‘01’, bastará
aplicar ‘001 nas entradas {S1S0}; não custa adivinhar como proceder para que na saída apareça o valor que estiver
numa das outras entradas de dados.
Como usar tal multiplexer para materializar a Tabela de Verdade que tem vindo a ser considerada? Não será
difícil ao leitor descortiná-lo: a Tabela estabelece que a saída, ‘L’, será ‘1’ se e só se as combinações das entradas
{B, T} do circuito forem ‘01’ ou ‘10’...
Experimente-se então aplicar {B, T} às entradas de selecção {S1S0} do multiplexer – e perceber o resultado
disso:
• se {B=0, T=1}, a saída deve reproduzir o valor na entrada de dados de rótulo ‘01’;
• e, se {B=1, T=0}, a saída deve reproduzir o valor na entrada de dados de rótulo ‘10’.
Ora, o que se pretende é que em ambos os casos a saída ‘L’ advenha ‘1’; bastará, para o efeito, forçar o valor
‘1’ em ambas as entradas de dados de rótulos ‘01’ e ‘10’: quando {B, T} for ‘01’ ou ‘10’, irá ser reproduzido na
saída do multiplexer o que estiver nessas duas entradas de dados, isto é, esse ‘1’...
Mas, interrogar-se-á o leitor, que irá acontecer no caso de alguma outra combinação nas entradas, como seja
{B=0, T=0}? Não custa descobri-lo: em tal caso, {S1S0} advêm ‘00’ – com o que será reproduzido na saída o que
se encontrar na entrada de dados de rótulo ‘00’; porquanto a Tabela de Verdade determina que, em tal situação,
L=0, dever-se-á, então, forçar ‘0’ nessa entrada de dados!
Generalizando esta conclusão: que fazer para que a saída do multiplexer funcione como se pretende que
funcione a saída do Circuito de Decisão? Isto, tão-somente: impor, nas entradas de dados do multiplexer,
exactamente os valores ‘0’/’1’ constantes na coluna ‘L’ da Tabela de Verdade – pela ordem em que lá se
encontram!
Globalmente, portanto, para produzir ‘L’, bastará um chip – e proceder às ligações representadas.
O leitor é vivamente instado a reparar no sublinhado “pela ordem em que lá se encontram”; é um ponto deveras
importante! Os rótulos das entradas de selecção e de dados (e outrossim os das saídas de um decoder) seguem uma
ordem imposta pelos fabricantes de chips. Se a ordem pela qual se preencherem as colunas {B, T} à esquerda na
Tabela de Verdade for outra, não está de modo nenhum garantido que as coisas venham de facto a funcionar como
se pretende! Pelo que não haverá que estranhar que, ao longo do semestre, volte à baila este ponto de ordem.
Nota: tal como a propósito do decoder, é altura de confrontar o logigrama acima com o do Enunciado-SOP – e
atestar que o multiplexer é um dispositivo general-purpose; intui-se o seu interior: um plano de ANDs das várias
entradas do multiplexer; interligados a um OR: de posse de um multiplexer, “basta” ao desenhador dum Circuito
forçar nas suas entradas de dados a respectiva Tabela de Verdade!
Chegou a altura da inevitável pergunta: haverá uma solução mais fácil? Mas por ora basta: há que deixar algo
por aprender para as próximas sessões, não se pode meter o Rossio na rua da Betesga (se tem dúvidas, TPC: vá até
lá ver que não se pode mesmo)... De qualquer modo, espera o autor que tenha sido suficiente para se possa agora
fazer sobressair o que cabe na designação “Sistemas Digitais”, as competências que os estudantes deverão adquirir
ao longo do semestre, os meios facultados para os apoiar e os métodos de avaliação. É isso que se irá ver a seguir...
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 14 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 15 of 101
Apresentação / Objectivos da Disciplina: aprender a Pensar Lógico
Uma outra designação para Sistemas Digitais é a de Sistemas Lógicos – que acentua o facto de o desenho de
tais sistemas ser, como se tem vindo a testemunhar, puramente Lógico. Em particular, não requere conhecimentos
matemáticos por aí além... Com a experiência tida em leccionar a disciplina, o autor destas linhas atreve-se mesmo
a asseverar: o maior embaraço “matemático” com que (alguns, poucos) estudantes deparam – e porquanto em
testes e exames lhes está vedada a utilização de calculadoras – é, horror dos horrores, a divisão por 16! De outra
parte, e numa primeira abordagem, também não se requerem conhecimentos por aí além de electricidade e
electrónica: para combinar ANDs, ORs, etc., não é preciso conhecer o seu esqueleto interno e como interoperam
os seus componentes (condensadores, transístores, etc.), ou mesmo como são eles fabricados...
O grande objectivo da disciplina é, de facto, que os estudantes aprendam a pensar lógico:
• compreender os conceitos e modelos subjacentes aos sistemas digitais (de que aliás se abordaram já, entre
outros, as Tabelas de Verdade e os Enunciados-SOP)
– como são os sinais com que lidam (na prática, confinados a ‘0’s e ‘1’s...)
– como representar neles várias espécies de informação
Esta é uma característica fantástica do “Digital”: “tudo” (i.e., números, valores discretos como sejam
sinais de controlo On/Off e letras, som, vídeo...) se pode representar por sucessões de ‘0’s e ‘1’s! E por
conseguinte: qualquer tipo de informação é susceptível de ser processada pelos sistemas digitais!
– quais as operações básicas aplicáveis (aliás já entrevistas: ANDs, ORs, NOTs, NANDs, NORs...)
– quais as expressões algébricas que as traduzem (i.e., uma notação mais concisa para ANDs, etc.)
– quais, e como funcionam, os dispositivos “general-purpose” digitais (os já abordados multiplexers e
decoders, e outros mais: coders, somadores, flip-flops, registos e contadores, RAMs e ROMs, FPGAs...)
A esta compreensão não se pretende chegar contemplando “de fora” como funciona um computador;
antes, todas as sessões de exposição começam por um projecto concreto: o subsequente desenrolar da sessão
procura abordá-lo e generalizar / abstrair, i.e.: captar o essencial para que o estudante o aplique noutros
casos concretos.
Nisto, distingue-se da praxis que começa por abstrair – e depois apresentar exemplos de aplicação. Um
exemplo: é comum a literatura apresentar primeiro os sistemas de numeração e a álgebra de Boole, e só
depois apresentar os chips, como “sítio” onde se corporiza tal álgebra. Preferiu-se aqui uma outra estratégia:
primeiro, apresentam-se os chips SN74xx como meio de resolver problemas de engenharia… e só depois, a
pretexto da optimização dos circuitos assim concebidos, se aborda a álgebra de Boole; e, porquanto nessa
fase os sistemas de numeração são de todo irrelevantes, somente mais tarde vêm eles a ser abordados.
• saber analisar sistemas digitais, i.e.: face a um Circuito feito pelo próprio (ou por outros) – e como que
fazendo de espião –, descobrir a sua funcionalidade (o que ele “faz”), e o tempo que demora a fazê-lo...
• saber sintetizar sistemas digitais de pequena complexidade:
Dado um enunciado, chegar ao correspondente logigrama mais simples:
– saber recorrer a vários métodos de síntese
(gates básicas, blocos combinatórios ou sequenciais, lógica programável...)
– saber usar algoritmos para minimizar o circuito: não mais complexo que o estritamente necessário...
– saber materializá-lo: ao longo do semestre, no laboratório, os estudantes terão oportunidade de meter
as mãos na massa; i.e., montar chips numa base de montagem e ligá-las por fios, de modo a concretizarem
projectos concretos; serão projectos de pequena dimensão, é certo (cada um deverá bastar-se em até cinco
chips), mas suficiente para se familiarizarem tu-cá-tu-lá com o hardware digital;
– saber manusear software CAD (xilinx), para evitar o risco de, ao fim de uma hora de trabalho no
laboratório, o circuito montado não funcionar como seria desejável: os estudantes constatarão que é uma
prática saudável, e antes da aula para montar o hardware, editar graficamente o circuito concebido e simulá-
lo! Ademais, aprenderão a carregá-lo (download) num dispositivo lógico programável (FPGA);
• saber comunicar – de modo claro e conciso – a solução que concebeu
– recorrer a terminologia e esquemáticos (IEC) precisos;
– saber discutir alternativas e defender a que escolheu
• desenvolver aptidões para trabalhar em equipa
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 16 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 17 of 101
Apresentação / Apoio aos Estudantes Para apoiar os estudantes na sua aprendizagem, decorrem, semanalmente:
• duas sessões de exposição de 1:30 m (vulgo: aulas Teóricas);
• uma outra sessão, de 1:30, dedicada “alternadamente” ao Laboratório e à resolução de Problemas.
• um horário de “dúvidas”.
Sugere-se esta praxis: Se um estudante vier a ter alguma dúvida sobre a matéria, procure um colega e tente resolvê-la com ele...
Se os dois não conseguirem esclarecê-la, procurem um outro colega e tentem resolvê-la com ele... Se os três o não conseguirem,
usem o e-mail ou o horário de dúvidas...
Talvez a maneira mais eficaz de apreender a matéria é dizê-la a outros – até a compreenderem bem. Quiçá o maior sinal de que
se sabe bem a matéria é saber explicá-la de um modo claro a quem nela sente dificuldades (vidé essa obra-prima que é “A evolução
da Física”, de Infeld & Einstein)... Pelo que: se o leitor vier a ter alguma dúvida sobre a matéria, e procurar um colega para lha pôr,
estará provavelmente a ajudá-lo a clarificar-se melhor nessa matéria.
A página-web da disciplina encontra-se por ora em http://web.ist.utl.pt/~ist10898/public/sd/ Ela oferece:
• um link para o Calendário /Planeamento das aulas (dos Cursos ME-Aer e ME-FT de 2011/2012); nele,
– estão calendarizadas as várias aulas: Teóricas, de Lab e de Problemas;
– estão afixados: os enunciados das (6) aulas de Lab {L1-L6} e os (6) de Problemas {P1-P6};
– são disponibilizados:
– acetatos/slides das aulas Teóricas, em dois formatos: .ppt e .pdf (formato este, salta aos olhos, se reveste de
uma forma comentada: cada slide é acompanhado, à direita, por um texto a propósito);
– dicas sobre o que concerne as aulas de Lab: montagem de Hardware e uso do xilinx;
• um link para uma Série de Problemas;
• um link para enunciados de Testes e Exames de anos anteriores.
Os slides têm uma estrutura compactada: evitam desdobrar um assunto por um número excessivo deles. Como que
reproduzem o caderno dum estudante há alguns anos: passaria um tempo significativo a requerer ao “prof.” para aguardar e se
afastar para o lado, para ele mesmo copiar para o caderno os desenhos feitos no quadro e tomar algumas notas adicionais.
Hoje em dia, e pressuposto que os pdfs dos slides foram já disponibilizados aos estudantes, estes não mais têm que copiar
desenhos – mas convém que os levem para as aulas, e neles inscrevam as suas próprias notas pessoais.
• Relativamente às aulas de Laboratório:
Todas as aulas de Lab versam um projecto, a ser feito por grupos de até dois estudantes. Elas sucedem-se em sintonia
com o que se aborda na aula Teórica: os estudantes irão discernindo a importância da aula Teórica – que sem ela ser-lhes-á
bem mais difícil abordar o projecto para o Lab seguinte; e a importância da aula de Lab – para ultrapassar o aspecto
passivo da aula Teórica. É fazendo, e não apenas vendo e ouvindo, que se aprende.
• repare-se que a primeira aula de Lab precede a primeira de Problemas! Por mor de, tão depressa quanto possível,
engajar os estudantes em meter as mãos na massa, convém que ela decorra logo após a sessão “Gates”;
• conquanto o site referido não o assinale, subentende-se, no final da primeira semana de aulas de Lab, uma aula “carro-
vassoura” para quem não teve sucesso na sua (primeira) montagem: nenhum estudante pode escapar ao sucesso no hardware…
É o mínimo, para poder ter alguma veleidade em acompanhar o que se segue...
• no final da última semana de aulas, também se subentende uma outra aula “carro-vassoura”, desta feita para quem não
teve sucesso em alguma montagem ao longo do semestre; eventualmente, alguém poderá não ter ido a uma aula de Lab, por
doença ou outra razão; aliás, a razão do insucesso até poderá ter sido o hardware ou o xilinx estar em dia-“não”... Não seja por
isso que não lhe seja dada a oportunidade de mostrar o seu projecto a funcionar bem…
• Relativamente às aulas de Problemas:
Os enunciados estão publicados – e para os resolver são de facto suficientes as aulas Teóricas... Atesta-o a experiência, em
2011/12, do autor destas linhas: desde a primeira aula, os estudantes foram chamados a resolver os problemas no quadro – e foi
comum vê-los aproximar-se e copiarem do caderno a resolução feita, antes, em casa…
No sentido de aceder a uma ampla diversidade de questões no âmbito do Digital, podem também os estudantes aproveitar o
link supracitado, Série de Problemas: grande parte dos enunciados é acompanhado de uma resolução pormenorizada,
chamando a atenção para aspectos em que os estudantes mais “metem água”… mas também há um largo leque de enunciados
de que só se dão as soluções finais, para que, se for o caso de os resolverem, possam conferir se chegaram à solução correcta.
• Relativamente à Bibliografia:
A sequência dos assuntos tratados nas aulas nem sempre coincide com a da Bibliografia indicada – que aliás também não é
necessariamente única. Com esta ressalva, a opinião ditada pela experiência do autor é: adquirir um livro só quando estiver
seguro de que lhe convém fazê-lo. A participação nas aulas e o site, em particular este documento, deverão ser suficientes...
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 18 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 19 of 101
Apresentação / Método de Avaliação (usado em 2012/2013)
Na nota final do estudante entram duas componentes, a saber:
• a nota da Componente Laboratorial, NLab
• a nota da Componente não-Laboratorial; esta pode obter-se de duas maneiras alternativas: por avaliação
contínua (NContínua) e por avaliação singular (NExame).
• Quanto à Componente Laboratorial: ao longo do semestre, sucedem-se 6 (seis) Trabalhos de Laboratório;
– o primeiro envolve a montagem de chips numa base hardware adequada;
– o segundo envolve a edição e simulação de um circuito usando o software xilinx;
– os três seguintes envolvem ambas as vertentes: montagem de hardware e uso de xilinx.
– o último envolve o uso de xilinx, e o de um hardware especial, um FPGA.
Para cada Trabalho de Lab, cada grupo deverá entregar ao professor um pré-relatório e um relatório
– o pré-relatório deve ser entregue antes da aula de Laboratório a que o Trabalho diz respeito;
– o relatório deve ser entregue até às 24:00 do dia seguinte a essa aula.
Cada grupo (de 2 estudantes) entrega um único pré-relatório e um único relatório.
O meio de entrega – sempre por via-electrónica – é combinado com o professor (por ex., fénix);
Os ficheiros a entregar deverão ser .pdf, com um nome respeitando o seguinte formato:
Para o pré-relatório: SD_YYLNA_GG.pdf, como seja SD_12L3A_04.pdf
Para o relatório: SD_YYLNB_GG..pdf, como seja SD_12L5B_37.pdf
(YY é o ano, ex.: 12, N pode ser 1,..., ou 6; e GG é o nº do grupo, exs.: 04 ou 37)
Ficheiros com nomes incorrectos poderão ser rejeitados;
e entregas “fora-de-prazo” serão penalizadas, em 25% da nota que teriam sem essa penalização
O enunciado de cada trabalho é acompanhado da grelha de classificação de cada item. A nota da
Componente Laboratorial, NLab, é a média das notas dos trabalhos; a aprovação na disciplina exige NLab não
inferior a 9,5.
• Quanto à Componente não-Laboratorial:
– ao longo do Semestre, sucederam-se 3 (três) Testes, cobrindo sucessivamente as Partes I, II e III em que a
Matéria se encontra organizada. Elas não são independentes, isto é: a Parte II elabora-se sobre a Parte I (como seja
Tabelas de Verdade, Simplificação de Circuitos...) e a Parte III elabora-se sobre a Parte II (como seja: decoders,
flip-flops...). Com o que: se um estudante não obtiver uma nota satisfatória numa das Partes, convém entendê-lo
como um sério aviso – de que “já parte coxo” para a Parte seguinte, ser-lhe-á mais difícil acompanhá-la, a não ser
que rapidamente se ponha em dia com aquela Parte insatisfatória!
A nota da Componente Testes, NTest, obtém-se pela média ponderada das notas dos vários Testes, usando-se os
pesos 27%, 33% e 40%. Para obter aprovação na disciplina, um estudante deverá ter NTest não inferior a 9,5.
– ao longo do Semestre, sucedem-se os assim denominados ClassWork: no site da disciplina, encontra-se
publicado um conjunto de enunciados genéricos (resolvidos, na sua maioria); os últimos 15 minutos de cada aula
de Problemas (excepto a primeira) são reservados para a resolução, pelos estudantes interessados, de alguns desses
enunciados (com, bem entendido, parâmetros distintos; um ex.: o site contém o enunciado “Converta 28(10) para a
base 8”; na aula de Problemas, o ClassWork poderá ser “Converta 53(10) para a base 16”).
Bem entendido, o ClassWork destina-se a incentivar os estudantes a acompanhar, de uma forma continuada, a
Matéria. Pelo que ele tem uma nota, NCW, obtida pela média das notas dos 5 (cinco) ClassWork; nota essa que
poderá aumentar a nota da Componente Contínua: NContínua será a maior entre NTest e 80% NTest + 20% NCW.
– para quem não se submeteu à Avaliação Contínua, ou nela reprovou, ou queira melhorar a nota nela
obtida, existe um Exame, em 2ª Época. Para um estudante obter aprovação na disciplina, a nota que ele obteve no
exame, NExame, deverá ser não inferior a 9,5.
• A nota final será a soma ponderada das notas obtidas nas duas componentes: a Componente Laboratorial
tem o peso 25%, e a Componente não Laboratorial tem o peso 75%.
Se um estudante, já com nota obtida com a Avaliação Contínua, for a Exame, para a melhorar, mas o não
conseguir, mantém-se a nota obtida naquela.
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 20 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 21 of 101
Gates básicas / 2º Projecto
Esta sessão versa os “tijolos” (mais formalmente: ICs ou chips) que o mercado disponibiliza para concretizar
Circuitos Digitais/Lógicos. Como nas outras sessões, ir-se-á desenrolar a partir dum Projecto concreto.
Imagine-se um edifício... Um corredor dispõe de duas lâmpadas: uma de Iluminação e uma outra (mais fraca)
de Presença; e de dois interruptores locais (Left e Right). Ao longo do dia, se e só se apenas um deles estiver On, a
lâmpada de Iluminação acende... Mas, para prevenir o ficar ela acesa durante a noite (pois o “último a abandonar o
corredor” não a apagou), o “fulano da recepção” dispõe de um botão Enable: de manhã, ele é premido, com o que a
lâmpada de Presença se apaga – e se torna possível acender a de Iluminação; à noite, a posição daquele botão é
invertida: a lâmpada de Presença acende-se, e a de Iluminação advém apagada...
O Projecto vem a ser o seguinte: concretizar um Circuito que decida o acender/apagar das lâmpadas {P, I}, a
partir dos sinais recebidos dos dois interruptores {L e R} e do botão Enable ‘E’.
A primeira etapa no desenho do Circuito de Decisão (ou, mais brevemente, circuito) é traduzir o enunciado
num elenco de entradas/predicados e saídas/decisões e na sua codificação:
Predicado é uma sentença relevante (a decisão do circuito depende dela) que só pode assumir dois valores:
sim e não. Cada uma das entradas do circuito há-de ficar associada a um predicado preciso. Eis uma possibilidade:
• entrada ‘E’ predicado: “o botão ‘E’ está premido”;
• entrada ‘L’ predicado: “o interruptor ‘L’ está On”.
• entrada ‘R’ predicado: “o interruptor ‘R’ está On”.
Qualquer dos predicados pode volver-se sim ou não; correspondentemente, em qualquer das entradas {E, L, R}
só poderão ocorrer dois valores – respectivamente, e de um modo codificado: ‘1’ (Sim) ou ‘0’ (Não).
Com estes pressupostos, quando doravante ocorrer L=1, subentende-se: “o interruptor ‘L’ está On”; e quando
ocorrer L=0, subentende-se: “o interruptor ‘L’ não está On”. Idem para as notações R=1 e R=0, e E=1 e E=0.
Há também que associar cada saída a uma decisão. Eis uma possibilidade:
• saída ‘P’ decisão: “a lâmpada ‘P’ deve acender”.
• saída ‘I’ decisão: “a lâmpada ‘I’ deve acender”.
Uma decisão pode volver-se sim ou não; correspondentemente, em qualquer das saídas {P, I} só poderão
ocorrer dois valores – respectivamente, e de um modo codificado: ‘1’ ou ‘0’.
Doravante, quando ocorrer I=1, subentende-se: “a lâmpada ‘I’ deve acender”; e quando ocorrer I=0,
subentende-se: “a lâmpada ‘I’ não deve acender”. Idem para as notações P=1 e P=0
– A segunda etapa é construir uma Tabela de Verdade (de facto, duas Tabelas, uma para ‘P’ e outra para ‘I’):
• à esquerda, dispõem-se três colunas, uma por cada uma das entradas do circuito, {E, L, R};
• à direita, dispõem-se duas colunas, correspondente às saídas do circuito, {P, I};
• inscrevem-se nas colunas {E, L, R} todos os trios possíveis de ‘0’ e ‘1’
Por convenção (que a seu tempo se justificará), eles devem ficar ordenados, assim: da direita para a
esquerda, cada coluna é a repetição de ciclos contendo, cada um, alguns ‘0’s seguidos do mesmo número de ’1’s:
na coluna mais à direita, ‘R’, inscreve-se ‘0’ e, por baixo, ‘1’: o ciclo é ‘01’; nele, o ‘0’ ocorre (1) vez só;
na coluna que lhe fica à esquerda, ‘L’, o ciclo é ‘0011’; nele, o ‘0’ ocorre (2) vezes;
na coluna que lhe fica à esquerda ‘E’, o ciclo é ‘00001111’; nele, o ‘0’ ocorre (4) vezes...
Esta Tabela pressupõe 3 entradas – mas, para a generalizar a mais entradas, basta ver: não por acaso, o número
de ‘0’s no ciclo da coluna ‘L’, 2, é exactamente o comprimento do ciclo usado na coluna que lhe fica à direita,
‘R’; e o número de ‘0’s no ciclo da coluna ‘E’, 4, é o do ciclo usado na coluna que lhe fica à direita, ‘L’...
• enfim, inscrevem-se nas colunas {P, I }, linha a linha – i.e., para a combinação de valores que essa linha
representa –, qual a decisão que o circuito deve correspondentemente tomar.
Em particular, a primeira linha, ‘000’, codifica “’E’ não está premido” e “nem ’L’ nem ‘R’ estão On”; a
decisão deve ser “’P’ deve acender” e “’I’ não deve acender” – pelo que nas colunas {P, I} se deve inscrever ‘10’.
Adivinha-se o que se segue: traduzir os números designativos de ‘P’ e ‘I’ em, por exemplo, Enunciados-SOP –
e, deles, deduzir logigramas envolvendo ORs, ANDs e NOTs; ao lado, encontra-se um deles, mas fica protelada a
sua justificação para mais adiante … É que, antes, convirá repensar o caminho percorrido, e não só…
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 22 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 23 of 101
Gates básicas / Recapitulando... Dados Binários
Os (dois) Projectos até agora considerados concretizam-se em circuitos onde é notória a seguinte característica:
entradas e saídas podem assumir dois e não mais que dois valores. Nomeadamente, pressupuseram que:
– uma Lâmpada pode estar apagada ou acesa; mesmo quando ela pode assumir vários níveis de intensidade
luminosa, o relevante é: está acesa? Sim ou não?
– um Interruptor pode estar para-cima (ou On) ou para-baixo (ou Off); ainda que rode à maneira dos ponteiros
de um relógio, para proporcionar vários níveis de intensidade luminosa, o relevante é: está On? Sim ou não?
– idem para um botão; o relevante é: está premido? Sim ou não?
Por mor de compactação, eles são codificados em símbolos especiais: ‘Não’ é codificado em ‘0’, e ‘Sim’ é
codificado em ‘1’. Só há ‘0’s e ‘1’s: tal é a característica distintiva do mundo Digital! Nas entradas e saídas dos
circuitos (e nas dos dispositivos que lhes perfazem o miolo), ocorrem dois, e não mais que dois, valores: ‘0’ e ‘1’.
Sublinhe-se: não são algarismos à maneira dos ‘0’s e ‘1’s apreendidos na instrução primária (ou mesmo antes
disso): o ‘0’ e o ‘1’ são, única e simplesmente, símbolos (mesmo que, aliás, também se venham a ler ‘zero’ e ‘um’).
A este respeito, quiçá o leitor tenha já deparado com a lógica das proposições. Aí, as proposições podem ser F
(False) ou V (Verdadeiro) / T (True); ao longo da discussão adiante, ir-se-á constatando a grande semelhança do
manejo dos ‘0’s e ‘1’s com o manejo de ‘F’s e ‘T’s nessa lógica das proposições (Idem para a lógica dos
subconjuntos de um Conjunto: o leitor poderá constatar a semelhança do manejo dos ‘0’s e ‘1’s com o manejo dos
subconjuntos ‘Vazio’ e ‘Universo’ nesta outra lógica).
Símbolos que são, ‘0’ e ‘1’ também não são valores de tensão, como seria 1 Volt... Mas, tratando-se de circuitos
electrónicos, é expectável que, nas entradas e saídas dos dispositivos, se experimentem tensões eléctricas. Então,
como é que é? Isto, simplesmente: os fabricantes obrigam-se a disponibilizar chips cujas entradas e saídas
reconhecem apenas dois valores de tensão – que denominam de L (Low) e H (High) (Isto, numa primeira
abordagem – que mais adiante será altura de escalpelizar esta asserção)
Em particular, os estudantes terão ocasião de, no laboratório, lidar com chips TTL – cujas tensões Low e High
são, respectivamente 0 Volt e 5 Volt –, aí aplicando a seguinte correspondência, dita de Lógica Positiva: 0 Volt
representa um ‘0’ lógico e 5 Volt representa o ‘1’ lógico.
Infere-se que, se se traçar o gráfico da evolução da tensão eléctrica num ponto dum circuito, o resultado será
um sinal característico: uma forma de onda que “oscila” entre dois níveis eléctricos, Low e High, a transição entre
eles sendo quasi instantânea. Nos momentos em que esse sinal for Low, e pressuposta a Lógica Positiva, isso quer
dizer: nesse ponto do circuito, então, o valor é ‘0’ – e quando ele for High, isso significa: então, o valor é ‘1’.
Abra-se um parêntesis sobre o calão digital: no mundo industrial, é comum a expressão “o sensor ‘tal’ está
activo” – como seja por exemplo “o sensor de porta aberta de uma casa com vigilância electrónica está activo”.
Porquanto esta abordagem tem uma conotação fortemente prática, adivinha-se que essa terminologia
activo/inactivo a irá acompanhar, ao menos a partir de algum momento. Voltar-se-á então a essa terminologia, mas
adiante-se desde já que, quando for o caso, activo (ou ‘A’) representará ‘está a 1’ – e, em consequência, inactivo
(ou ‘I’) representará ‘está a 0’.
Ao lado, listam-se outras situações binárias: ligado/desligado, em-cima/em-baixo, par/ímpar, pólo-Norte/pólo-
Sul, aprovado/reprovado, etc. Muitas outras poderá o leitor observar neste nosso mundo... E pelo que acima fica
dito, será pacífico aduzir que os Sistemas Digitais são directamente vocacionados para situações binárias...
Mas, a interrogação é inevitável: e se a situação não for binária? Eis exemplos: uma lâmpada com vários níveis
de luminosidade; um interruptor com mais que duas posições: em-cima e em-baixo, e também no-meio; uma
classificação em que se distingue entre aprovado e não aprovado, mas também aprovado com 12 ou 18; uma
medida de velocidade que tem que discernir se vai a mover-se a 15, 30 ou a 60 km/hora...
Há que ir passo-a-passo. A Parte-I versa tão só situações binárias; deixa-se para a Parte-II situações M-árias...
Convicto de que quem acompanhe a Parte-I, mais preparado ficará para acompanhar as Partes seguintes.
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 24 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 25 of 101
Gates básicas / Recapitulando... Circuitos Lógicos
Relativamente aos Projectos até agora considerados, o objectivo foi chegar a Circuitos Lógicos – concretizados
em logigramas com ORs ou NORs, ANDs ou NANDs, NOTs, XORs ou XNORs, decoders, Multiplexers...
Como características comuns, os Circuitos Lógicos apresentam:
• um conjunto de entradas; o 2º Projecto tem três entradas {E, L, R}, mas ao longo do semestre encontrar-
se-ão Projectos que se resolvem em uma só entrada ou em múltiplas entradas, bem mais que aquele irrisório 3...
• um conjunto de saídas; o 2º Projecto tem duas saídas {P, I}, mas ao longo deste itinerário encontrar-se-ão
Projectos que se resolvem em uma ou mais saídas...
Tanto as entradas como as saídas são binárias, isto é: nelas, só podem reconhecer-se ‘0’s e ‘1’s...
Um Circuito Lógico fica descrito/especificado sem ambiguidade por uma assim denominada Tabela de Verdade.
• à esquerda, ela comporta tantas colunas quantas as entradas do Circuito. Nelas, listam-se ordenadamente
todas as combinações de valores {‘0’ e ‘1’} admissíveis nas entradas. Para bom entendedor: se houver N entradas,
então o total de combinações – e por conseguinte o total de linhas da tabela – será de 2N.
• à direita, ela comporta tantas colunas quantas as saídas do Circuito. Em cada coluna, e linha a linha,
especifica-se qual o valor {‘0’ ou ‘1’} a obter na saída que corresponde a essa coluna, para a combinação de
valores à entrada que essa linha representa.
A partir dessa Tabela, desenha-se um logigrama/Diagrama Lógico. Eis as suas características:
• uma saída deve estar ligada a uma ou mais entradas:
– directamente ou
– por gates/Portas lógicas e/ou
– por dispositivos general-purpose (decoders, multiplexers, etc.)
• não se podem soldar, ao mesmo fio, duas entradas do logigrama e/ou duas saídas de chips (Por um motivo
claro: são imprevisíveis as entradas do circuito, bem como o são as saídas dos chips. A cada momento, “qualquer
uma” poderá estar a ‘0’ ou ‘1’ – ou, em termos electrónicos, a ‘L’ ou ‘H’... Suponha-se então que duas delas se
soldam a um mesmo ponto... Poderá em algum momento vir uma das entradas a forçar nesse ponto uma tensão
Low e simultaneamente a outra entrada estar a forçar uma tensão High: não se admire de um pivete a queimado...)
O desenho de um logigrama não é à toa: deve ser fácil de desenhar e deve ficar fácil de compreender… Tendo
em atenção as recomendações internacionais relevantes, e a lei do menor esforço, nesta abordagem observa-se a
seguinte praxis (à revelia da seguida por muitos outros autores, na bibliografia, Internet incluída):
• as entradas dum logigrama ficam à esquerda, e as saídas ficam à direita; sempre!
• o fluxo de ‘0’s e ‘1’s faz-se da esquerda para a direita e de cima para baixo – precisamente como é norma ler
desde a instrução primária… Isto, como regra geral: em alguns casos, poderá convir orientar o fluxo de ‘0’s e ‘1’s
da direita para a esquerda ou de baixo para cima. Quando isso suceder, dever-se-á inscrever uma ‘seta’ sobre a
linha em que o fluxo infringe a regra geral. Em tempo oportuno, em particular em circuitos com memória
(feedback), observar-se-ão exemplos de tal opção, e deverá ser pacífica ao leitor a razão que a ela leva.
• as entradas do logigrama correspondem pari passu às colunas à esquerda da Tabela… A esse respeito, a
preferência do autor destas linhas é: a coluna mais à esquerda na Tabela corresponde à entrada mais abaixo no
logigrama, e a coluna mais à direita corresponde à entrada mais acima.
Esta prática está ilustrada ao lado: as colunas à esquerda da Tabela estão pela ordem {E, L, R}, e, lidas de
baixo para cima, as entradas do logigrama encontram-se pela mesmíssima ordem {E, L, R}.
Em termos genéricos: às colunas são atribuídos pesos (que, não por acaso, são potências-de-2; no exemplo ao
lado, são: 4, 2, 1). A de menor peso é a que fica mais à direita, e a de maior peso é a que fica mais à esquerda. Esta
ordem é preservada na escrita da função e seus argumentos: I(E, L, R); e é preservada na implantação das entradas
do logigrama, quando são lidas de baixo para cima (Esta ordem acaba por estar conforme ao quotidiano do leitor:
na escrita de um valor numérico, seja 2536, o dígito mais significativo – de maior peso – está à esquerda… e numa
pauta das classificações dos estudantes, o maior número de identificação está embaixo…)
Última observação: para um dado enunciado, a Tabela de Verdade é única – mas a sessão anterior mostrou que
ela se pode “mapear” em vários logigramas distintos: não há uma solução única! Daí a pergunta: haverá uma
óptima? Para responder, impõe-se investigar: quais os dispositivos de que se dispõe para elaborar um logigrama?
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 26 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 27 of 101
Gates básicas / Portas / Gates Elementares
Para a concretização de circuitos lógicos, o mercado disponibiliza três Portas (ou Gates) elementares: ORs,
ANDs e NOTs. Como verdadeiros circuitos lógicos que são, estão-lhes associadas Tabelas de Verdade específicas.
• O NOT é uma gate com uma só entrada, seja ‘X’, e uma só saída, seja ‘Z’; esta advém ‘1’ sse a entrada for
‘0’ - do que se segue: se a entrada for ‘1’, a saída será ‘0’. Diz-que que ‘Z’ é a negação, ou o complemento, de ‘X’.
Aquela gate pode também designar-se de inversor;
• O AND é uma gate com (pelo menos) duas entradas, seja {X, Y}, e uma só saída, seja ‘Z’; esta advém ‘1’ sse
todas as entradas forem ‘1’ – do que se segue: se alguma delas for ‘0’, a saída será ‘0’. Diz-que que ‘Z’ é o
produto, ou conjunção, das entradas;
• O OR é uma gate com (pelo menos) duas entradas, seja {X, Y}, e uma só saída, seja ‘Z’; esta advém ‘0’ sse
todas as entradas forem ‘0’ – do que se segue: se alguma delas for ‘1’, a saída será ‘1’. Diz-que que ‘Z’ é a soma,
ou disjunção, das entradas.
Atente-se bem nos dois últimos enunciados, é gritante a chamada dualidade das operações AND e OR:
substituindo, no enunciado acerca do AND, todos os ‘0’s por ‘1’s e vice-versa, surge o enunciado relativo ao OR.
Parêntesis: se o leitor já teve o ensejo de contactar a lógica das proposições, terá certamente notado a analogia
das operações ‘negação’, ‘e’ e ‘ou’ dessa lógica com as operações lógicas acima (pressuposta a equivalência de ‘0’
e ‘1’ com F e V): a ‘negação’ duma proposição V é F, e a ‘negação’ duma proposição F é V, e assim por diante…
E se já contactou a lógica dos subconjuntos dum conjunto, ser-lhe-á pacífica a analogia das operações
‘complemento’, ‘intersecção’ e ‘união’ dessa lógica com as operações lógicas acima (pressuposta a equivalência de
‘0’ e ‘1’ com os subconjuntos Vazio/ e Universo/): o ‘complemento’ de é , e o ‘complemento’ de é , e
assim por diante…
Como concretizar fisicamente tais operadores {NOT, AND e OR}? Uma solução simples remete para uma
adequada ligação de comutadores, vidé esquemas ao lado:
– o AND de comutadores logra-se pela sua disposição em série: para que a lâmpada acenda, é necessário que
ambos os comutadores estejam On (recorde-se: a saída dum AND é ‘1’ sse todas as suas entradas forem ‘1’);
– o OR de comutadores logra-se pela sua disposição em paralelo: para que a lâmpada acenda, basta que um dos
comutadores esteja On (recorde-se: a saída dum OR é ‘1’ sse pelo menos uma das entradas for ‘1’);
– o NOT de um comutador logra-se pela sua disposição em curto-circuito com a lâmpada: para que ela acenda,
é necessário que o comutador esteja Off (recorde-se: a saída dum NOT é ‘1’ sse a sua entrada for ‘0’)
Os NOT, AND e OR facultados no laboratório são, porém, dispositivos electrónicos – mais precisamente, sob a
forma de Circuitos Integrados, com as designações SN7404, SN7408 e SN7432 (Isto no caso de ANDs e ORs com
só duas entradas; quando elas são em maior número, usam-se outras designações como sejam: SN7411 e SN7421).
Para efeitos de desenhar ‘no papel’ logigramas, ou de os compreender, a tais portas/gates estão associados
símbolos gráficos específicos. De facto, para cada uma delas está associado um par de símbolos: um mais antigo, e
um outro mais recente – com a forma geral de um rectângulo etiquetado – seguindo as convenções da IEC. Ambos
são válidos; os primeiros são usados sobretudo na Parte-I, ficando os segundos confinados às partes II e III.
Como sucede com qualquer Circuito Lógico, poder-se-á deduzir, para cada uma daquelas portas/gates, um
diagrama temporal que represente a variação dos níveis eléctricos das entradas e saídas seguindo pari passu os
valores da Tabela de Verdade, vidé ao lado.
A importância destas gates deve ser clara: basta recordar a primeira solução do Projecto da Sessão anterior. Foi
suficiente um então designado Enunciado-SOP com ‘e’s, ‘ou’s e ‘não’s – a partir de que se desenhou um
logigrama com apenas ANDs, ORs e NOTs. E nada impede generalizar essa metodologia a qualquer Projecto… Ou
seja: todos os Circuitos Digitais se podem concretizar com, apenas, ANDs, ORs e NOTs!
Pois que envolvem a escrita de ANDs, ORs e NOTs, é claro que Enunciados-SOP acabam por ser extensos –
pelo que, a lei do menor esforço a isso leva, a praxis corrente é usar, em vez desses nomes, símbolos algébricos,
concretamente: ‘’, ‘+’ e ‘~’. Voltar-se-á a isso mais tarde.
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 28 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 29 of 101
Gates básicas / Estudos de Casos com Portas Elementares
Todos os Circuitos Digitais se podem concretizar com, apenas, ANDs, ORs e NOTs! Nem que seja para o
ilustrar, enunciam-se ao lado três Projectos simples – para que o próprio leitor preencha as respectivas Tabelas de
Verdade e deduza as gates mais adequadas para os materializar:
1. Entre os medicamentos que uma farmácia vende, há dois, sejam ‘A’ e ‘B’, que, se tomados em conjunto, têm
efeitos catastróficos sobre o paciente… Para minimizar a probabilidade de isso acontecer, à saída da farmácia há
dois sensores: um sensível à passagem de ‘A’ e o outro sensível à passagem de ‘B’. Pretende-se um Circuito que
accione um alarme se e só se for o caso de estar saindo um paciente com ambos os medicamentos…
Recorde o que já se disse: a primeira etapa no desenho de um Circuito é traduzir o enunciado num elenco de
entradas/predicados e saídas/decisões e na sua codificação. Pelo que:
– quais os predicados a associar às entradas?
Ex.: entrada ‘A’ predicado: “o sensor ‘A’ detectou a passagem do medicamento ‘A’”;
entrada ‘B’ predicado:
– qual a decisão a associar à saída?
Ex.: saída ‘Alarme’ decisão: “o alarme assinalou a passagem dos dois medicamentos, ‘A’ e ‘B’”;
A segunda etapa é construir uma Tabela de Verdade:
• à esquerda, dispõem-se duas colunas, uma por cada uma das entradas do Circuito, {A, B};
• à direita, dispõe-se um coluna, correspondente à saída do Circuito, ‘Alarme’;
• inscrevem-se ordenadamente nas colunas {A, B} todos os duos possíveis de ‘0’ e ‘1’
• enfim, inscreve-se na coluna ‘Alarme’, linha a linha – i.e., para a combinação de valores que essa linha
representa –, qual a decisão que o Circuito deve correspondentemente tomar.
Neste preenchimento, há que usar permanentemente a seguinte codificação:
‘Não’ é codificado em ‘0’, e ‘Sim’ é codificado em ‘1’.
O leitor poderá por si próprio preencher a Tabela de Verdade da saída do Circuito; e, depois, confrontá-la com
as Tabelas das portas/gates AND, OR e NOT (recordadas ao lado em baixo) – para ver se alguma delas será
suficiente por si própria para concretizar essa Tabela. Não lhe será difícil deduzir que o Circuito se poderá
concretizar com, apenas um AND…
2. Uma instalação fabril dispõe de uma caldeira em que, sob pena de explosão, nem a Temperatura nem a
Pressão devem exceder determinados limiares. De forma a alertar para o risco de a caldeira voar, ela dispõe de dois
sensores ‘T’ e ‘P’, sensíveis respectivamente ao excesso de Temperatura e ao excesso de Pressão. Pretende-se um
Circuito que accione um Alarme se e só se algum daqueles limiares for violado…
– quais os predicados a associar às entradas {T, P}? qual a decisão a associar à saída ‘Alarme’?
– qual a Tabela de Verdade da saída do Circuito?
– existe alguma porta/gate capaz de por si própria concretizar essa Tabela? Qual?
3. Uma certa superfície agrícola é irrigada por um sistema de rega automática. Ele deve ser accionado se, é
claro, a precipitação de chuva não tiver sido suficiente. Para o efeito, existe um sensor de chuva, ‘C’; ele ficará
activo (i. e., dará um sinal apropriado) quando a precipitação ultrapassar um certo volume mínimo. Pretende-se um
Circuito que, se tal acontecer, faça o disable (desligamento) do sistema de rega.
– quais os predicados a associar às entradas ‘C’? Qual a decisão a associar à saída ‘Enable’?
– qual a Tabela de Verdade da saída do Circuito?
– existe alguma porta/gate capaz de por si própria concretizar essa Tabela? Qual?
Repare-se na diversidade de contextos em que os Projectos acima têm cabimento: os Circuitos Digitais estão
por todo o lado… Obviamente, e no quadro dum primeiro contacto com o Digital, eles foram escolhidos em
virtude da sua simplicidade extrema. Adivinha-se o que aí vem: considerar Projectos algo mais complexos. Mas,
antes de o fazer, convém olhar o mercado, a ver que portas/gates mais tem ele para oferecer…
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 30 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 31 of 101
Gates básicas / Portas/Gates Derivadas
Para a concretização de Circuitos Lógicos, o mercado disponibiliza, além das Portas Elementares, Portas com
as designações NOR, NAND, XOR e XNOR.
• O NAND é uma gate com (pelo menos) duas entradas e uma só saída; esta advém ‘0’ sse todas as entradas
forem ‘1’ – do que se segue: se alguma delas for ‘0’, a saída será ‘1’;
• O NOR é uma gate com (pelo menos) duas entradas e uma só saída; esta advém ‘1’ sse todas as entradas
forem ‘0’ – do que se segue: se alguma delas for ‘1’, a saída será ‘0’;
• O XOR (mnemónica de eXclusive-OR) é uma gate com duas entradas e uma só saída; esta advém ‘1’ sse as
entradas forem diferentes uma da outra – do que se segue: quando às entradas se apresenta o mesmo valor, a saída
será ‘0’;
• O XNOR é uma gate com duas entradas e uma só saída; esta advém ‘1’ sse as entradas forem exactamente
iguais – do que se segue: quando às entradas se apresentam valores diferentes, a saída será ‘0’.
O laboratório faculta estas gates sob a forma de Circuitos Integrados, com as designações SN7400, SN7410,
SN7420 e SN7430; e SN7402 e SN7427; e SN7486A e SN74286 (vidé ao lado).
Para cada uma destas gates, está associado um par de símbolos: um mais antigo, e um outro mais recente
seguindo as convenções da IEC, vidé ao lado.
Estas quatro portas/gates podem considerar-se derivadas das portas/gates elementares, no sentido de que se
podem conceber graficamente como sábia interligação de ANDs, ORs e NOTs:
O NAND equivale a um AND das entradas seguido de um NOT (e daí o nome: NAND NOT de AND);
O NOR equivale a um OR das entradas seguido de um NOT (e daí o nome: NOR NOT de OR);
O XOR equivale a um OR de dois ANDs das entradas (com a geografia ao lado) – como poderá o leitor
conferir, por aplicação sistemática nas entradas de todas as combinações possíveis de ‘0’s e ‘1’s;
O XNOR equivale a um XOR das entradas seguido de um NOT (e daí o nome: XNOR NOT de XOR).
Um olhar de relance aos logigramas ao lado faz adivinhar que o NOT será algo abundante – pelo que é habitual
a seguinte praxis: em vez do símbolo gráfico do NOT, usar borbulhas nas entradas das gates em cujas linhas se
encontram NOTs. A figura ao lado testemunha alguns exemplos:
– o símbolo gráfico do NAND – que equivale a um AND seguido dum NOT – acaba por ser o de um AND em
cuja saída se apôs uma borbulha; idem para o NOR: o seu símbolo é o dum OR com uma borbulha na saída;
– e, nos logigramas que interligam ANDs a um ORs para lograr um XOR, as borbulhas nas entradas dos ANDs
devem ser entendidas como: representam um NOT na linha que termina nessa entrada.
(Note-se que, na convenção IEC, se usa uma praxis semelhante, mas ela aceita que se use, em vez de uma
borbulha, um pequeno triângulo rectângulo, vidé ao lado)
Há que realçar que, num Circuito, o importante é o que se passa nas entradas e saídas – isto é, nos extremos…
Nomeadamente, considerem-se dois pontos dum circuito, seja {W e E}, interligados por um inversor: pretende-se
que em ‘E’ se obtenha o inverso/complemento de ‘W’. É irrelevante o sítio onde se interpõe o necessário NOT: ele
pode ser encostado a ‘W’ ou a ‘E’, sob a forma de borbulhas, ou pode ser algures “a meio caminho” entre ambos,
sob a forma do símbolo gráfico do NOT.
A terminar: a importância das gates NANDS e NORs deve ser clara: basta recordar a segunda solução do
Projecto da Sessão anterior. De um então designado Enunciado-NAND com ‘não[e]’s, chegou-se a um logigrama
só com NANDs. E nada impede generalizar essa metodologia a qualquer Projecto… Ou seja: todos os Circuitos
Digitais se podem concretizar com, apenas, NANDs ou NORs! Nisto, não se distinguem de Circuitos com ANDs,
ORs e NOTs. Mas de facto, ver-se-á mais adiante que Circuitos com NANDs ou NORs são mais baratos! Mais
ainda: em algumas tecnologias, um NAND é mais simples de fabricar que um AND: num Circuito Integrado real,
um AND pode resolver-se no seu cerne por um NAND das entradas em série com um outro NAND (de entradas
curto-circuitadas): neste aspecto, a gate elementar é o NAND, e a gate derivada é o AND!
Relativamente a XORs e XNORs, há que reconhecer: não são suficientes para concretizar tudo… Mas a
complexidade do seu logigrama faz intuir que serão bons ingredientes em alguns casos… E assim é, de facto, como
se verá adiante quando se abordarem Circuitos Aritméticos: Somadores, Comparadores, Detectores de Paridade…
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 32 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 33 of 101
Gates básicas / Interligação de Portas/Gates
Teve o leitor a ocasião de preencher Tabelas de Verdade para três controladores: o dum Alarme numa farmácia,
o dum Alarme para uma caldeira, e o dum sistema de rega… Os subsequentes logigramas resumiram-se a uma
única gate… É altura de progredir, para Projectos mais complexos, para os quais uma gate se revela insuficiente…
O ponto de partida será pacífico: um Circuito fica especificado sem ambiguidade por uma Tabela de Verdade.
A partir dela, deduz-se um Enunciado-SOP; ele faz o levantamento das combinações de valores {‘0’ e ‘1’} que
as entradas deverão assumir para que a saída do Circuito seja ‘1’. Eis um exemplo:
I = 1 sse [(E=1) e (L=0) e (R=1)] ou [(E=1) e (L=1) e (R=0)]
Este Enunciado explicita a dependência de ‘I’ relativamente às entradas {E, L, R}; a saída ‘I’ vem a ser ‘1’ em
duas e apenas duas combinações das entradas: quando elas forem respectivamente {1,0,1} ou {1,1,0}.
É notável que, no enunciado, ocorrem apenas três tipos de operadores – a saber: ‘e’, ‘ou’ e ‘não’ (subentende-
se que inquirir se é igual a ‘0’ equivale a inquirir se não é igual a ‘1’).
Do Enunciado-SOP, pode de imediato depreender-se um logigrama:
• “I=1 sse: [...] ou [...]” traduz-se em: ‘I’ é a saída de um OR de 2-entradas;
• “[(...) e (...) e (...)] ou [(...) e (...) e (...)]” traduz-se em: qualquer entrada do OR é um AND de 3-entradas;
• [(E=1) e (L=0) e (R=1)], que caracteriza um desses ANDs, traduz-se em: duas entradas ficam directamente
ligadas a ‘E’ e ‘R’, a outra fica ligada a ‘I’ através de um NOT (diz-se que a entrada ‘L’ é negada antes do AND);
• [(E=1) e (L=1) e (R=0)], que caracteriza o outro AND, traduz-se em: duas entradas ficam directamente
ligada a ‘E’ e ‘L’, a outra fica ligada a ‘I’ através de um NOT (diz-se que a entrada ‘R’ é negada antes do AND).
A etapa seguinte é concretizar esse logigrama mediante circuitos integrados que o mercado disponibiliza…
Após o que se deve verificar o Circuito: forçar, nas entradas {E, L, R}, todas as combinações admissíveis dos
níveis eléctricos {L e H}, e registar o correspondente valor à saída ‘I’. Em, seguida, até se pode traçar um
diagrama temporal, isto é: um gráfico da evolução da saída quando se aplicam nas entradas combinações possíveis
daqueles níveis. Aplicando a correspondência {L ‘0’ e H ‘1’}, esse diagrama temporal deverá espelhar
exactamente a Tabela supracitada: se o não estiver, quer dizer que algum erro se cometeu…
Um exemplo: no caso em apreço, a Tabela explicita que, para a combinação [(E=0) e (L=1) e (R=1)], a saída
deve ser ‘0’. O que há a verificar é: qual é, no Diagrama Temporal, o nível de saída para a combinação [(E=L) e
(L=H) e (R=H)]? Se ele não for ‘L’, então cometeu-se algum erro no processo de desenho do Circuito.
Para que esta verificação seja o mais rápida possível, convém conferir ao Diagrama Temporal uma certa
ordenação… A praxis aqui seguida é: a ordem dos gráficos das entradas deve ser a mesma que aquela seguida nas
entradas do logigrama: a entrada a que respeita o gráfico mais abaixo no Diagrama Temporal corresponde à
entrada mais abaixo do logigrama – que é a que corresponde à coluna mais à esquerda na Tabela de Verdade!
Para bom entendedor, esta praxis é mesmo para ser seguida pelos estudantes: em particular, na concretização de
Circuitos nas placas de montagem do laboratório, e na edição e simulação de Circuitos Digitais no xilinx.
Ainda que o Diagrama Temporal esteja conforme à Tabela de partida, a eficiência/economia impõe uma
pergunta: será possível construir um outro Circuito que também esteja conforme a essa Tabela?
A esta pergunta, a Sessão anterior responde afirmativamente: um Enunciado-SOP tem a forma de um ‘e’ de
‘ou’s; mas também se poderia elaborar um Enunciado-POS (que é um ‘e’ de ‘ou’s)… Ainda uma outra
possibilidade: note-se que para ‘I’ advir ‘1’ é necessário que E=1, e que além disso ‘L’ e ‘R’ tenham valores
distintos. Essa observação plasma-se no seguinte Enunciado-MultiLevel (nem SOP nem POS):
I = 1 sse (E=1) e [(L=0) e (R=1)] ou [(L=1) e (R=0)]
Adiante, abordar-se-ão outos tipos de Enunciados… Por uma razão óbvia: chegar ao Circuito mais simples.
Qual aquele que precisa de uma menor quantidade de ORs, ANDs e NOTs? Será este o cerne da discussão,
doravante…
Para o efeito, e reconhecendo a extensão de cada Enunciado acima, a primeira coisa a fazer é encurtá-lo, pelo
artifício de substituir ‘e’ por ‘’, ‘ou’ por ‘+’, (X=1) por X e (X=0) por X . Por cada um, obtém-se uma assim
designada Expressão algébrica, nitidamente mais compacta; e que o fica ainda mais:
– pela eliminação dos ‘’ – subentendendo-se que X Y significa X Y (isto é, X e Y);
– pela convenção de ‘’ ter precedência sobre ‘+’ – que habilita à eliminação de parêntesis supérfluos
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 34 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 35 of 101
Gates básicas / O Mundo Real
A terminar esta iniciação às gates, a curiosidade não dispensa algum tempo com o seu fabrico, ao menos nos
seus traços mais gerais… Para chegar a um circuito integrado, a primeira etapa é proceder à obtenção de silício – a
partir da areia da praia, mas preferencialmente a partir de jazidas de silício bem mais puro… O resultado vem a ser
cilindros de silício, de diâmetro cerca de 20 cm, que são cortados em bolachas finas. Cada uma delas irá ser o
substrato de múltiplos chips: antes de mais, procede-se à implantação adequada de impurezas nas bolachas, e
depois ao seu corte – de modo a obter chips. São eles que contêm os transistores, condensadores, etc., que realizam
as operações AND, OR, NOT e outras bem mais complexas… Em seguida, e considerando o caso das Dual inLine
Package, são implantados dentro de blocos ‘rectangulares’ de plástico (preto) com pinos metálicos de um lado e de
outro, vidé figura. Enfim, procede-se à interligação das entradas e saídas dos chips a esses pinos…
Ao longo do tempo, a tecnologia de produção dos circuitos integrados tem vindo a desenvolver-se, no sentido
de uma maior integração, isto é: no sentido de dotar cada chip de cada vez mais transistores… De uma densidade
SSI (Small Scale Integration), de até 10 transistores por chip, evolui-se para MSI e sucessivamente, vidé quadro ao
lado, para ULSI e enfim SOC, System On Chip – com para cima de 100 milhões de transístores em cada chip.
Ao longo do tempo, tem também havido uma procura por, nomeadamente, um menor dispêndio de energia. Isso
levou á existência actualmente de várias Famílias Lógicas. As mais comuns são:
TTL, Transistor-Transistor Logic, de que é exemplo a série SN7400;
CMOS, Complementary Metal Oxide-Silicon, de que é exemplo a série SN74HC.
Entre as duas, a família CMOS é aquela que hoje mais usada é, mas no laboratório prefere-se usar a família
TTL (pelo simples motivo de que é mais robusta contra o eventual mau manuseio por parte dos estudantes; por
mor de durabilidade dos chips, isso, é claro, não dispensa os estudantes de consultarem as Dicas de Montagem).
Os chips TTL reconhecem dois níveis eléctricos, a saber: Low=0 Volt e High=5 Volt. Na prática, e em virtude
de haver que considerar o ruído eléctrico, definem-se algumas gamas de tolerância:
– os fabricantes obrigam-se a fornecer nas saídas dos chips valores de tensão assim:
– se for o caso de deverem assinalar High, a tensão estará entre 2,4 e 5 Volt;
– se for o caso de deverem assinalar Low, a tensão estará entre 0 e 0,4 Volt;
– existe por conseguinte uma margem de indeterminação: entre 0,4 e 2,4 Volt.
– já quanto às entradas, os fabricantes obrigam-se ao seguinte:
– se for o caso de estarem recebendo um valor de tensão entre 2 e 5 Volt, deverão aceitá-lo como High;
– se for o caso de estarem recebendo um valor de tensão entre 0 e 0,8 Volt, deverão aceitá-lo como Low;
– existe por conseguinte uma margem de ruído: entre 0,4 e 0,8 Volt e entre 2 e 2,4 Volt.
(Para bom entendedor: suponha que uma saída de um chip, ‘W’, se encontra ligada a uma entrada de um outro
chip, ‘E’; suponha ainda que em dado momento, essa saída de ‘W’ deve ser High – para o efeito aparecendo nela a
tensão de 2,4 Volt; esta ‘propaga-se’ para aquela entrada de ‘E’; com o ruído eléctrico ambiente, poderá suceder
que não chegue lá exactamente o valor de 2,4 Volt, mas algo menos ou mais… Pois bem: desde que chegue lá com
um valor acima de 2 Volt, ainda deve ser aceite como High)
Os chips CMOS da série SN74HC também reconhecem dois níveis eléctricos, mas eles dependem da tensão de
alimentação usada (que pode variar entre 2 e 6 V); em particular, se ela for de 6 V, os níveis eléctricos são:
Low=entre 0 e 1,8 Volt e High=entre 4,2 e 6 Volt.
Uma característica muito importante dos chips tem a ver com atrasos:
– nas saídas, a transição entre os dois níveis – Low a High e vice-versa – não é instantânea, leva o seu
tempo: designam-se respectivamente de risetime e de falltime os intervalos de tempo necessários para o nível na
saída subir de Low a High ou baixar de High a Low;
– se a alteração em uma entrada do chip levar a que o nível na saída mude, essa mudança não é instantânea,
demora um assim designado tempo-de-propagação: designam-se respectivamente de tpLH e de tpHL os intervalos de
tempo que decorrem entre a alteração na entrada e a mudança da saída de Low a High ou de High a Low.
Uma outra característica dos chips a ter em conta são os assim designados fan-in e fan-out. É com ela que se
dará por terminada esta iniciação às gates.
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 36 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 37 of 101
Gates básicas / Buffers
Designa-se de fan-in o número máximo de entradas que uma gate poderá aceitar. Para exemplificar, o mercado
disponibiliza NANDs com 2, 3 e mesmo 8 entradas…
Abra-se um parêntesis para assinalar que precisamente uma das questões que oportunamente terá de ser tratada
é a seguinte: admita o leitor que é desafiado a um Projecto – e, aceitando-o, o traduz por um Enunciado-SOP em
que ocorrem ANDs de, seja 6 entradas… A questão é: como concretizá-lo fisicamente, se o mercado apenas lhe
oferece ANDs de, quando muito, 4 entradas?
Fan-out de uma gate é, por seu turno, o número máximo de dispositivos a que ela se poderá ligar.
Esta limitação pode ocasionalmente complicar a concretização física dos logigramas: seja, como exemplo, o
caso de um logigrama ter que disponibilizar 4 saídas – saídas essas a produzir por 4 gates: um AND, um OR, um
NAND e um XOR, vidé figura ao lado; e admita-se que todas estas gates recebem, numa das suas entradas, o
resultado de um NOR entre, seja, ‘S1’ e ‘S0’… Se o fan-out desse NOR for inferior a 4, então não será suficiente
ligar a sua saída àquelas 4 gates… Isso supera-se aplicando, à saída do NOR um assim denominado buffer, que
reproduz na sua saída o que estiver à sua entrada – mas cujo fan-out é já suficiente para alimentar aquelas 4 gates.
Repare-se que um buffer, nesta acepção, não se destina a armazenar informação: antes é inserido a modos de
amplificador, para que os níveis eléctricos nas entradas das gates venham a estar nas gamas toleradas.
Existem outras circunstâncias em que poderá convir usar buffers, a saber:
– para isolar as gates umas das outras;
– quando o dispositivo a que se deve ligar a saída de um chip necessita de mais corrente do que aquela que o
chip fornece (como é o caso de LEDs);
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 38 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 39 of 101
Álgebra de Boole / 3º Projecto
Esta sessão versa a Álgebra de Boole, ela oferece uma notação e regras comumente usadas para minimizar
circuito Lógicos. Como todas as outras sessões, ir-se-á desenrolar a partir de um Projecto concreto...
Considere um carro com alarme automático, com dois sensores de abertura de porta, implantados nas portas
‘L’ (Left) e ‘R’ (Right). Ele deverá soar se e só se um botão Enable estiver activado e ao menos um dos sensores
for activado. Pretende-se o circuito que controla o Alarme.
O leitor já não deverá precisar que lhe recordem as perguntas “sacramentais”…
– quais os predicados a associar às entradas {E, L, R}? qual a decisão a associar à saída ‘A’?
– qual a Tabela de Verdade da saída do Circuito?
A Tabela encontra-se ao lado; como expectável, ‘A’ volve-se ‘0’ (i.e., o Alarme não é activado):
– nas primeiras quatro linhas, isto é: quando E=0 (que significa: o botão Enable não está activado);
– e na quinta linha, precisamente quando L=R=0 (que significa: nenhum dos sensores está activado…)
Por outras palavras: ‘A’ volve-se ‘1’ apenas nas três linhas mais abaixo. Essa observação pode verter-se num
Enunciado-SOP: A=1 sse: [(E=1) e (L=0) e (R=1)] ou [(E=1) e (L=1) e (R=0)] ou [(E=1) e (L=1) e (R=1)];
Como já se avançou na última Sessão, e como se fará doravante, é preferível vertê-lo numa Expressão-SOP
suportada por, respectivamente, ‘+’, ‘’ e ‘~’, vidé ao lado (em que se omitiram os ‘’)…
Atente-se à forma da Expressão-SOP: é uma soma (‘+’) de três termos, cada um dos quais é um produto (‘’)
de três literais (Abra-se um parêntesis: SOP são precisamente as iniciais de “Sum Of Products”).
Esclareça-se, porém: ‘+’ e ‘’ não remetem para as operações aritméticas – soma e produto – supostamente
apreendidas na instrução primária; remetem, isso sim, para as operações lógicas ‘ou’/OR e ‘e’/AND.
A Expressão-SOP foi obtida a partir da Tabela de Verdade de ‘A’; mas pode caminhar-se em sentido contrário,
da Expressão-SOP para a Tabela, para tal bastando recordar as Tabelas de Verdade dessas duas operações:
– a Expressão-SOP é a soma (‘+’) de três termos; a Tabela de Verdade do OR afirma: ela advirá ‘1’ sse ao
menos um desses termos de soma for ‘1’;
– cada deles é um produto (‘’) de três literais (na forma normal, como seja ‘L’; ou na forma complementada,
como seja L ); a Tabela de Verdade do AND afirma: cada um desses termos será ‘1’ sse todos os membros forem
‘1’. Em particular, RLE será ‘1’ apenas quando for { E =1 e L =1 (ou: L=0) e R =1}; semelhantemente, RLE
será ‘1’ apenas quando for { E =1 e L=1 e R=0}; e RLE será ‘1’ apenas quando for {E=1 e L=1 e R=1}.
Conjugando a soma com esses produtos: a Expressão-SOP volve-se ‘1’ apenas para as seguintes combinações
das entradas: ‘101’, ‘110’ ou ‘111’; é essa a característica da Tabela de Verdade (e é precisamente assim que se
pretende que funcione a saída ‘A’ do Circuito: daí o sinal ‘=’ em: A = Expressão-SOP).
Alternativamente à Expressão-SOP, pode traduzir-se a Tabela de Verdade numa assim designada Expressão-
POS, que tem a forma de um produto de somas (POS são precisamente as iniciais de “Product Of Sums”), vidé ao
lado. Deixando para outro momento um método sistemático de a ela chegar, adiante-se que, para este caso
particular, basta reescrever mentalmente o enunciado do Projecto sob a forma dum Enunciado-POS, ‘e’ de ‘ou’s: o
Alarme deve soar se e só se o botão Enable estiver activo e se, além disso, ao menos um dos sensores, ‘L’ ou ‘R’,
estiver activo.
Resumindo: a partir da Tabela de Verdade, podem escrever-se uma Expressão-SOP e uma Expressão-POS. Cada
uma delas concretiza-se num logigrama específico só com ORs, AND e NOTs – que, e este é o ponto a realçar, são
diferentes: o primeiro envolve 3 chips (e 14 entradas) e o segundo envolve apenas 2 chips (e 4 entradas). Quer
dizer: por raciocínio puramente lógico, chegou-se a dois logigramas que são funcionalmente equivalentes, no
sentido de que concretizam a mesmíssima Tabela – mas que são diferentes, um é mesmo mais simples que o outro
(e, adiante-se: mais adiante, serão explorados métodos de chegar a logigramas ainda mais simples).
É então natural a seguinte questão: haverá alguma maneira de partir de um logigrama (ou da Expressão que lhe
subjaz) e chegar a um mais simples? É este assunto, de minimização de circuitos, que guiará as próximas páginas.
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 40 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 41 of 101
Álgebra de Boole / Regras de Simplificação / 1 Literal apenas
Convém, é claro, começar pelos cenários mais simples, e depois ir complicando… O cenário mais simples é: há
apenas um literal, seja ‘X’, a considerar…
Considere-se um AND de duas entradas – e aplique-se esse valor genérico, ‘X’, a uma delas… E aplique-se
algum valor à outra entrada… Escapando por ora a fazer entrar no jogo um outro valor genérico, seja ‘Y’, restam
os seguintes quatro cenários: aplicar, a essa outra entrada, ‘1’, ou ‘0’, ou ‘X’, ou o complemento de ‘X’.
A questão é: qual o valor à saída do AND, para cada um desses cenários?
Para lhe responder, aplica-se adiante o método dito de Indução completa – que se resume ao seguinte:
determinar a Tabela de Verdade de cada cenário (ou seja: varrer todas as combinações possíveis das
entradas/literais em jogo – neste caso, apenas ‘X’ –, e registar os resultados à saída) e formular uma regra de
minimização a partir dela…
A primeira coisa a fazer é colocar à esquerda uma coluna, ‘X’, listando todos os valores possíveis que ‘X’ pode
assumir: ‘0’ e ‘1’; logo à sua direita, coloca-se uma coluna, X , para, linha a linha, conter o complemento de ‘X’ –
e preenche-se de cima para baixo com, naturalmente, ‘1’ e ‘0’.
À direita, dispõem-se quatro colunas, uma por cada um dos cenários mencionados: {X 1}, {X 0}, {X X} e
{X X }; trata-se agora de preencher essas quatro colunas – e formular uma regra pertinente…
Veja-se a primeira coluna, {X 1} – que significa aplicar ‘X’ a uma entrada e ‘1’ à outra… Qual o valor à
saída do AND? A Tabela de Verdade do AND, ao lado, indica a solução: ela envolve duas colunas à esquerda, ‘X’ e
‘Y’; mas, dada a restrição de se forçar ‘X’ numa entrada e ‘1’ na outra, da coluna ‘Y’ só têm relevância as linhas
em que ela é ‘1’, isto é, as linhas ‘01’ e ‘11’. E, nessas linhas, o valor que se encontra na coluna ‘Z’ é exactamente
igual ao valor que se encontra na coluna ‘X’. Isso permite preencher a coluna ‘X 1’…
Com o mesmo tipo de raciocínio se poderão preencher as demais colunas; nomeadamente:
Para o caso {X 0}, apenas têm relevância as linhas da Tabela em que Y=0, isto é: as linha ‘00’ e ‘10’.
Para o caso {X X}, apenas têm relevância as linhas da Tabela em que Y=X, isto é: as linha ‘00’ e ‘11’.
Para o caso {X X }, apenas têm relevância as linhas da Tabela em que Y= X , isto é: as linhas ‘01’ e ‘10’.
Com estes reparos, preenchem-se as colunas que representam os quatro cenários em vista. Resta olhar para elas:
A coluna correspondente ao caso {X 1} é exactamente igual à coluna à esquerda, ‘X’, ou seja: X 1 =X
Esta regra diz: a operação ‘’ tem um elemento neutro, ‘1’;
A coluna correspondente ao caso {X 0} é toda ela preenchida com ‘0’s, ou seja: X 0 = 0
Esta regra diz: a operação ‘’ tem um elemento absorvente, ‘0’;
A coluna correspondente ao caso {X X} é exactamente igual à coluna à esquerda, ‘X’, ou seja: X X =X
Esta regra, dita de Idempotência, diz: não há quadrados nem cubos, X X continua a ser igual a ‘X’;
A coluna correspondente ao caso {X X } é toda ela preenchida com ‘0’s, ou seja: X X = 0
Esta regra é designada de Complementariedade.
Repare-se que o caminho acima se fez em torno de um AND de duas entradas, mas nada impede refazê-lo –
desta feita em torno de um OR de duas entradas… Chegar-se-ia a conclusões análogas, aliás sumarizadas ao lado.
Por mor da lei do menor esforço, prefere-se ter em conta a dualidade das operações AND e OR, já assinalada:
“substituindo, na Tabela de Verdade do AND, todos os ‘0’s por ‘1’s e vice-versa, surge a Tabela relativa ao OR”.
Se isso assim é, então pode afirmar-se o seguinte: se se dispuser de uma regra válida envolvendo ‘’s, obtém-se
uma outra regra válida se se substituir os ‘’s por ‘+’s e se substituir ‘0’s por ‘1’s e vice-versa. Aplicando esta
substituição à coluna da esquerda das regras de Simplificação ao lado, de imediato surge a coluna da direita…
Ainda com só um Literal, assinala-se ao lado outra regra, dita de Involução: se se complementar duplamente o
valor ‘X’, obtém-se esse mesmo valor ‘X’. Tal como as outras regras, prova-se por Indução Completa.
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 42 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 43 of 101
Álgebra de Boole / Regras de Simplificação / 2 Literais apenas
Explorados cenários com apenas um literal, é altura de abordar cenários com dois literais, seja ‘X’ e ‘Y’… Ao
lado, estão listadas as Regras de Simplificação que envolvem dois literais – denominadas respectivamente de
Comutatividade, Absorção, Redundância, Adjacência e Leis de De Morgan.
Que são regras válidas, é o leitor instado a demonstrá-lo de modo análogo ao que foi feito a propósito das
Regras de Simplificação envolvendo um literal apenas: por Indução Completa… Recorde-se o que se fez então:
preencher a Tabela de Verdade de cada cenário – e logo depois ‘olhar’ para ela e deduzir uma Regra. Mas,
porquanto agora cada uma das Regras se exprime como equivalência entre duas Expressões, é preferível seguir
outra estratégia: determinar as Tabelas de Verdade dessas Expressões, e, depois, verificar que são exactamente
iguais… Nesta estratégia, está implícito: se se obtêm os mesmos valores quaisquer que sejam ‘X’ e ‘Y’, pode
concluir-se que essas Expressões são equivalentes, e portanto que a Regra é válida.
Para demonstrar a validez das Regras ao lado, é possível também usar um método gráfico – concretamente, com
recurso aos assim designados Diagramas de Venn. Adiante, testemunha-se a sua aplicação às leis de De Morgan,
deixando ao leitor a sua aplicação às outras Regras de Simplificação:
A base do método é ‘olhar’ as Regras de uma outra perspectiva: ‘pensar’ ‘X’ e ‘Y' como subconjuntos (do
Universo) e os símbolos ‘’s e ‘+’s como operações Intersecção e União sobre subconjuntos. Com isso, a
equivalência entre Expressões volve-se na equivalência entre subconjuntos; bastará então discernir os
subconjuntos representados nos dois membros da igualdade de cada Regra, e verificar que são iguais…
Em termos práticos: a primeira etapa é traçar uma superfície rectangular, e, no seio dela, delimitar duas áreas
circulares que se sobreponham em parte. Subentende-se: a superfície rectangular representa o Universo, e os
círculos – etiquetados com os literais, ‘X’ e ‘Y’, em jogo – representam subconjuntos desse Universo.
A segunda etapa é determinar a área que representa o subconjunto à esquerda do sinal ‘=’, YX . Para o
efeito, determina-se primeiro a área representada por X Y – e que vem a ser a Intersecção das áreas ‘X’ e ‘Y’,
isto é, o que é comum a ambas; e depois, determina-se o complemento dessa área – que vem a ser ‘tudo o que está
dentro do Universo mas fora dela’, vidé ao lado.
A terceira etapa é determinar a área que representa o subconjunto à direita do sinal ‘=’, YX . Para o efeito,
determina-se primeiro a área representada por X (o complemento de ‘X’) – e que vem a ser “tudo o que está
dentro do Universo mas fora de ‘X’”; determina-se depois a área representada por Y ; enfim, determina-se a União
das áreas X e Y – e que vem a ser o que pertence a uma ou à outra.
A última etapa é, naturalmente, comparar as áreas que representam os dois subconjuntos à esquerda e à direita
do sinal ‘=’. Constata-se que elas coincidem – pelo que as leis de De Morgan são mesmo válidas.
Em rigor, as leis de De Morgan são duas, e a que acima se aborda é a que ocupa a coluna da esquerda do
quadro ao lado. E, perguntará o leitor, como demonstrar a lei que ocupa a coluna da direita? A esse respeito (e aliás
a respeito de todas as Regras da coluna da direita), é claro que se poderá também usar o método de Indução
Completa, ou os Diagramas de Venn; mais cómodo ainda, pode-se aplicar o já por mais que uma vez assinalado
princípio da Dualidade: por cada Regra válida (da coluna à esquerda), obtém-se uma outra Regra válida se se
substituir os ‘’s por ‘+’s (e vice-versa) e se substituir ‘0’s por ‘1’s (e vice-versa).
A terminar: há que apreender bem as leis de De Morgan. Em português corriqueiro, afirmam que o
complemento dum produto não é o produto dos complementos, é, isso sim, a soma dos complementos; e que o
complemento duma soma não é a soma dos complementos, é, isso sim, o produto dos complementos!
Como Corolário: complementar a saída de um AND equivale a trocá-lo por um OR e a complementar ambas as
entradas; e complementar a saída de um OR equivale a trocá-lo por um AND e a complementar ambas as entradas!
Há uma forte razão para conferir uma especial ênfase a estas leis; como o leitor terá ocasião de o apreciar mais
tarde, elas podem conduzir a uma grande simplificação dos circuitos! Adiante-se que uma praxis habitual será
traduzir um Circuito em uma Expressão (SOP ou POS), e depois aplicar as leis de De Morgan…
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 44 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 45 of 101
Álgebra de Boole / Regras de Simplificação / 3 Literais apenas
Explorados cenários com um ou dois literais, é altura de abordar cenários com três literais, seja ‘X‘,‘Y‘ e ‘Z‘…
Ao lado, estão listadas as Regras de Simplificação que envolvem três literais – denominadas respectivamente de
Comutatividade, Distributividade e Consenso.
Que são regras válidas, é o leitor instado a demonstrá-lo de modo análogo ao que foi feito a propósito das
Regras de Simplificação já abordadas: por Indução Completa, ou por Diagramas de Venn…
E de novo, após demonstrar a validez das Regras da coluna à esquerda do quadro ao lado, bastar-lhe-á recorrer
ao princípio da Dualidade para demonstrar a validez das Regras da coluna à direita…
Recapitulando o caminho recentemente percorrido: dispõe-se de um catálogo de 132 Regras de Simplificação
– com vista à obtenção de Circuitos funcionalmente equivalentes, todavia mais simples.
Quiçá a sua aplicação a um exemplo concreto possa ajudar a topar-lhe o alcance… O exemplo vai ser
precisamente a Expressão-SOP que traduz o Projecto entre mãos nesta Sessão, vidé ao lado:
– a Expressão-SOP envolve três termos de produto - RLE , RLE e RLE – que têm algo em comum: o
literal ‘E’; isso sugere aplicar a Distributividade; na prática, ‘põe-se ‘E’ em evidência’…
– o termo entre parêntesis é uma soma – subentendendo-se que primeiro se soma RL com RL e, só depois
se lhe adiciona RL ; mas, a percepção de que os dois últimos termos têm algo em comum (o literal ‘L’), sugere
aplicar a Associatividade: começar primeiro por somar os dois últimos termos e somente depois acrescentar o
primeiro…
– os termos RL e RL têm algo em comum, a saber: o literal ‘L’; isso sugere aplicar a Distributividade; na
prática, ‘põe-se ‘L’ em evidência’…
– ‘L‘ fica multiplicando um termo que é precisamente um literal mais o seu complemento; isso sugere aplicar a
Complementariedade…
– com isso, ‘L‘ fica multiplicando ‘1’; é hora de recordar que ‘1’ é o elemento neutro do produto…
– a expressão entre parêntesis fica agora sendo L RL ; aplicando a Comutatividade, isto é, transformando-a
em RLL , torna-se agora sugestivo aplicara a Redundância, obtendo-se o resultado final, L RE
– uma alternativa, mais demorada é, após aplicar a Comutatividade (obtendo RLL ), aplicar a
Distributividade…
– o parêntesis da esquerda é um literal mais o seu complemento; isso sugere aplicar a Complementariedade…
– após o que, por aplicação da Comutatividade, e recordando que ‘1’ é o elemento neutro do produto, se chega
ao mesmo resultado final, L RE .
Concluindo: partindo de uma Expressão-SOP – envolvendo 3 chips (e 14 entradas) –, atingiu-se uma Expressão
mais simples – envolvendo apenas 2 chips (e 4 entradas): valeram a pena estas manipulações algébricas…
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 46 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 47 of 101
Álgebra de Boole / Resumo/Álgebra de Boole
Ao lado, apresenta-se o catálogo das Regras de Simplificação. De facto, o título é “Álgebra de Boole”, e isso
pede uma explicação…
Em 1930, no MIT, foi construído um “potentíssimo” computador analógico electromecânico – o analisador
diferencial de Bush. Na altura era o computador mais potente do mundo – com o senão de estar limitado à
resolução de uma classe de problemas apenas: equações diferenciais…
A máquina foi construída um tanto empiricamente; o funcionamento exigia a configuração de um conjunto de
relays/interruptores – e o professor Bush encarregou um seu assistente, o engenheiro Claude Shannon, de
empreender um estudo matemático desse funcionamento…
Shannon é um dos intervenientes-chave para que o leitor possa dispor de computadores, de portáteis, de
câmaras de vídeo digital, etc. etc.. Duas das suas contribuições maiores para o efeito foi a fundação da Teoria da
Informação (que será mencionada em tempo oportuno) e, antes, uma Tese de Mestrado em 1938, onde sustenta:
– que os computadores ficariam bem mais baratos se, na sua construção, se abandonasse o sistema de
numeração decimal em favor do sistema binário (nesse sentido, ele pode ser considerado o pai do bit);
– que circuitos baseados na interligação de relays – que têm apenas dois estados (On e Off) – ficam cabalmente
descritos por uma estrutura matemática inventada um século antes, dita de Álgebra de Boole (de 2 valores).
A Álgebra de Boole é uma estrutura matemática inventada por um professor inglês, George Boole, em 1854 –
mostrando que a lógica poderia ser representada por expressões algébricas.
A Álgebra de Boole envolve a definição dos valores ‘0’ e ‘1’ (ou ‘V’ e ‘F’), e dos operadores ‘+’, ‘’ e ‘~’
gozando do conjunto de Regras de Simplificação no quadro ao lado. Com eles, e literais, se podem escrever
Expressões Booleanas – com o mesmíssimo formato que o leitor terá encontrado no Ensino Secundário quando
tomou contacto com expressões algébricas…
Justamente, Shannon sustenta que todos os Circuitos (constituídos por Relays) se podem concretizar como uma
interligação de Relays em série e em paralelo – ou, usando a notação da Álgebra de Boole, como uma Expressão
Booleana. Quando, por conseguinte, se traduz uma Tabela de Verdade numa Expressão-SOP ou numa Expressão-
POS, o que se está fazendo é encontrar uma Expressão Booleana que traduz o circuito… O ponto importante é
que, aplicando a Álgebra de Boole, se poderá chegar a circuitos mais simples…
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 48 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 49 of 101
Álgebra de Boole / Desafio a quem gosta de Desafios…
Um desenvolvimento da Álgebra de Boole consistiu na eleição, por Huntington, de um núcleo de Axiomas (que
o quadro ao lado assinala) – de que podem deduzir-se todas as ‘Regras de Simplificação’ (que não sejam Axiomas),
ou, na gíria da Álgebra de Boole, Teoremas.
Recorde-se, todavia, que as Regras de Simplificação foram, ao longo desta sessão, demonstradas pelo recurso
às Tabelas de Verdade das Operações ‘+’, ‘’ e ‘~’. Ou seja: se se conseguir, a partir dos Axiomas, deduzir essas
Tabelas de Verdade, a demonstração dos Teoremas encontrar-se-á ipso facto cumprida.
Obviamente, deixa-se ao leitor o levar por diante a dedução das Tabelas de Verdade a partir dos Axiomas –
sem, é claro, ceder à tentação de “ir procurá-la na Internet”…
(Por outras palavras:
– o axioma relativo ao elemento neutro, X1=X e X+0=X, conduz a que o resultado seja igual a ‘X’:
– nas linhas da Tabela de Verdade da Operação ‘’ em que Y=1 – isto é: nas linhas ‘01’ e ‘11’;
– nas linhas da Tabela de Verdade da Operação ‘+’ em que Y=0 – isto é: nas linhas ‘00’ e ‘10’.
– deixa-se ao leitor acabar de preencher as Tabelas, com os valores que os Axiomas impõem)
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 50 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 51 of 101
Álgebra de Boole / Aplicando a Álgebra de Boole
Diminuir o número de chips para concretizar um Projecto é um objectivo crucial no seu desenho: menos
dispositivos a adquirir, a requerer uma superfície menor, menor gasto em energia, menos hardware susceptível de
avariar... Pelo que convirá gastar algum tempo em exemplificar a aplicação da Álgebra de Boole na simplificação
de Expressões Booleanas. Ao lado, apresenta-se uma expressão e sucessivas etapas de simplificação…
– a Expressão dada é uma soma de vários termos de produto; todos eles envolvem o literal C, pelo que, e no sentido de o
“pôr em evidência”, se aplica a Comutatividade – para que, em todos eles, ‘C’ fique à esquerda…
– é hora de aplicar a Distributividade – na prática, “pôr ‘C‘ em evidência”…
A partir da expressão assim obtida, oferecem-se várias trajectórias distintas:
1ª Trajectória: – a soma entre parêntesis envolve três termos; pode aplicar-se a Associatividade – no sentido de “começar” por somar os
dois últimos membros e somente depois adicionar o primeiro…
– recorde-se agora uma das leis de De Morgan: o complemento da soma é o produto dos complementos… Então, pode
substituir-se o primeiro membro do parêntesis, que é um produto de complementos, pelo complemento de uma soma …
– ‘C‘ fica multiplicando uma soma mais o seu complemento; isso sugere aplicar a Complementariedade…
– com isso, ‘C‘ fica multiplicando ‘1’; é hora de recordar que ‘1’ é o elemento neutro do produto…
2ª Trajectória: – no sentido de aplicar a Distributividade, aplica-se a Comutatividade aos dois primeiros termos da soma…
– aplica-se agora a Distributividade: a soma dos primeiros termos entre parêntesis é convertida num produto de somas…
– a primeira dessa somas é precisamente um literal mais o seu complemento; isso sugere aplicar a Complementariedade…
– com isso, a segunda dessa somas fica multiplicando ‘1’; é hora de recordar que ‘1’ é o elemento neutro do produto…
– a soma entre parêntesis envolve três termos; pode aplicar-se a Associatividade – no sentido de “começar” por somar os
dois últimos membros e somente depois adicionar o primeiro;
– a última soma é precisamente um literal mais o seu complemento; isso sugere aplicar a Complementariedade…
– com isso, à primeira soma fica sendo adicionado ‘1’; é hora de recordar que ‘+’ tem um elemento absorvente, ‘1’…
– com isso, ‘C‘ fica multiplicando ‘1’; é hora de recordar que ‘1’ é o elemento neutro do produto…
3ª Trajectória: – a Expressão dada é uma soma de vários termos de produto; o primeiro envolve ‘A‘ e ‘B’, mas o segundo resume-se a ‘A‘
e o terceiro resume-se a ‘B‘… De forma a convertê-los em termos que contenham, todos eles, os dois literais, ‘A‘ e ‘B’,
recorde-se que ‘1’ é o elemento neutro do produto…
– a seguir, aplica-se a Complementariedade: substitui-se ‘1’ por um literal mais o seu complemento…
– a seguir, Distributividade: “desembaraça-se a expressão de parêntesis”…
– aplica-se a Comutatividade – para que, em todos os membros da soma, ‘B’ fique à esquerda… Além disso, e também
aplicando a Comutatividade, troca-se a ordem do segundo e terceiro termos…
– é hora de aplicar a Associatividade – associando os dois primeiros termos, e associando os três últimos… E, logo depois,
aplicar a Distributividade – “pondo B e ‘B’ em evidência”, respectivamente na primeira e segunda associação…
– é hora de aplicar a Idempotência: a soma de ‘A‘ com ‘A‘ volve-se em ‘A‘ …
– logo após, aplica-se a Complementariedade: a soma de um literal com o seu complemento volve-se ‘1’ …
– com isso, B e ‘B’ ficam multiplicando ‘1’; é hora de recordar que ‘1’ é o elemento neutro do produto…
– logo após, aplica-se a Complementariedade: a soma de um literal com o seu complemento volve-se ‘1’ …
– com isso, ‘C‘ fica multiplicando ‘1’; é hora de recordar que ‘1’ é o elemento neutro do produto…
É espectacular a simplificação lograda: de um Circuito remetendo para 1 OR de 3-entradas, 1 AND de 3-
entradas, e 2 AND de 2-entradas, e 2 NOT, chegou-se a um Circuito onde nem sequer são precisos chips: sob pena
de desperdício e ineficiência, é mesmo decisivo saber manusear a Álgebra de Boole!
Saliente-se que, neste exemplo, as três trajectórias conduziram ao mesmo resultado, ‘C‘; mas isso nem sempre
está garantido: dada uma Expressão Booleana, uma decisão na aplicação da Álgebra de Boole pode volver-se numa
trajectória que resulte numa Expressão final mais ou menos simples! E a 3ª trajectória ilustra um artifício comum:
por vezes, é vantajoso “complicar” temporariamente a Expressão, para que a seguir se obtenha algo mais simples.
Isto é um sério aviso ao leitor: não basta compreender a Álgebra de Boole, para fazer isto bem, há que
praticar!
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 52 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 53 of 101
Funções Booleanas / 4º Projecto
Esta sessão versa Funções Booleanas – mais prosaicamente, estratégias diferentes de desenho/especificação de
circuitos. Como todas as outras sessões, ir-se-á desenrolar a partir de um Projecto concreto...
Considere um júri constituído por três membros; cada um deles tem à sua disposição um botão com que
aprovam ou reprovam os candidatos que se apresentam… Se e só se a maioria estiver a favor da aprovação, uma
lâmpada verde acende. Pretende-se um circuito para controlar o acender / apagar da lâmpada…
A Tabela de Verdade encontra-se ao lado; como seria expectável,
– à esquerda, dispõem-se três colunas, representando os três membros do júri, {B2, B1, B0}; conforme à praxis
recomendada, as colunas dispõem-se de modo a que a de maior índice, ‘B2‘, fique à esquerda…
– ‘V‘ volve-se ‘1’ (i.e., a lâmpada verde acende) apenas nas quatro linhas em que ocorrem dois ou mais ‘1’s…
Para um leitor familiarizado com funções algébricas, será pacífico que esta Tabela de Verdade mais não faz que
especificar uma Função, V (B2, B1, B0); fá-lo pelo processo de, para todos os valores que as variáveis {B2, B1, B0}
podem assumir, declarar qual o valor que resulta para a função.
(Abra-se um parêntesis para recordar a característica fundamental de uma função: ela é uma variável
dependente – que, para uma dada combinação de valores das variáveis independentes, se volve sempre em algum
valor. Não depende de nada mais. E é precisamente esse o ‘funcionamento’ da Tabela de Verdade: a coluna ‘V‘
depende somente de {B2, B1, B0} – e em cada linha, ‘V‘ assume um valor único apenas!)
A Tabela de Verdade pode então ser entrevista:
– como a especificação de um Circuito cujas entradas são {B2, B1, B0} e cuja saída é ‘V‘…
– como a especificação de uma Função – Booleana! – cujas variáveis independentes (ou, mais simplesmente,
variáveis) são {B2, B1, B0} e cuja variável dependente (ou, mais simplesmente, valor da função) é ‘V‘.
Do que se depreende que é “equivalente” falar de variáveis ou de entradas, de saída ou do valor da função, de
função ou de circuito. No fundo, é isso que subjaz a praxis seguida na sessão anterior:
– traduzir a Tabela de Verdade numa Função Booleana: Saída = Expressão (SOP ou POS);
– concretizá-la em logigramas: as variáveis da função (os literais da Expressão) são mapeadas em entradas, o
valor da expressão é mapeado na saída, e a Expressão é mapeada numa interligação de ANDs, ORs e NOTs…
Entretanto, chegou a hora de adiantar que sob o termo ‘circuito’ cabem duas classes:
Circuitos ditos Combinatórios, caracterizados por: a cada instante, a saída depende somente dos valores que
então estão sendo aplicados às entradas. Esta abordagem dos Sistemas Digitais dedica-lhe toda a Parte-I e quase
toda a Parte-II;
Circuitos ditos Sequenciais, caracterizados por: para determinar a saída, não basta conhecer as entradas num
dado instante: é também preciso saber o que aconteceu antes, é preciso saber “todo” o historial das entradas até
então. Uma variante especial desses Circuito denomina-se de Circuitos Sequenciais Síncronos – e será o prato
forte do final da Parte-II e da Parte-III.
Do que se aduziu acima, uns e outros ficam cabalmente especificados por Funções Booleanas (a única
diferença sendo que a influir na saída dos Circuitos Sequenciais Síncronos, não chega ter em conta variáveis
externas do Circuito: também há que ter em conta variáveis internas, a cargo do registo daquele historial
supracitado).
É este carácter central das Funções Booleanas no desenho de circuitos que justifica dedicar-lhe esta sessão:
trata-se de explorar e avaliar as várias formas de as representar, e de como se pode passar de uma para outra. Isso
será feito, é claro, em torno do exemplo concreto que constitui a Tabela de Verdade ao lado…
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 54 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 55 of 101
Funções Booleanas / 1ª Forma / SOP canónica
Ao lado, apresenta-se a Tabela de Verdade para o 4º Projecto. Por mor de facilitar a exposição adiante, convém
enumerar as suas linhas, começando em ‘0’ e terminando em ‘7’. A combinação de valores das variáveis associada
a cada linha fica sendo genericamente designada de ‘bi’; por exemplo, b3=011, b5=101 e assim por diante…
Atente-se na coluna ‘V‘. Tem quatro ‘1’s (e quatro ‘0’s). Recordando o significado da operação ‘+’, é pacífico
considerar essa coluna como o OR/+ de 4 colunas, cada uma contendo apenas um ‘1’, vidé ao lado. O mesmo é
dizer que a Função ‘V‘ se pode entender como o OR/+ de 4 funções das entradas, denominadas de Mintermos:
– ‘m3‘ é ‘1’ apenas na linha ‘3’, isto é: apenas para a combinação de valores {B2=0, B1=1, B0=1}; isto, é claro,
remete para um AND: m3 (B2, B1, B0) =0
B1
B2
B (recorde: a saída de um AND advém ‘1’ sse todas as suas
entradas forem ‘1’);
– ‘m5‘ é ‘1’ apenas na linha ‘5’, isto é: só quando {B2=1, B1=0, B0=1}; ou seja: m5 (B2, B1, B0) = 0B
1B
2B ;
– ‘m6‘ é ‘1’ apenas na linha ‘6’, isto é: só quando {B2=1, B1=1, B0=0}; ou seja: m6 (B2, B1, B0) = 0B
1B
2B ;
– ‘m7‘ é ‘1’ apenas na linha ‘7’, isto é: só quando {B2=1, B1=1, B0=1}; ou seja: m7 (B2, B1, B0) = 0B
1B
2B .
Convém sublinhar a ‘forma’ de cada Mintermo: a Tabela de Verdade de um ‘mi‘ genérico é ‘1’ apenas na linha
‘i’; ‘mi‘ será um produto de todas as variáveis; nesse produto, cada variável aparece uma só vez, na forma normal
ou complementar, consoante respectivamente essa variável for ‘1’ ou ‘0’ em ‘bi‘.
Na prática, então:
– varre-se a coluna ‘V‘, de cima para baixo – à procura dos ‘1’s... No caso, o primeiro ‘1’ ocorre na linha ‘3’…
– ‘olha-se’ à esquerda, a ver qual o ‘bi‘ que lhe corresponde; no caso, será b3=011;
– forma-se depois um produto de todas as variáveis (nesta abordagem, preferindo-se começar por escrever
aquela mais a esquerda); a forma em que a variável ficará – normal ou complementar – depende de ‘bi‘: se em ‘bi‘
a variável for ‘1’, usa-se a forma normal; caso contrário, usa-se a forma complementar. No caso, em que b3=011, a
primeira variável é ‘0’, e as outras duas são ‘1’; em consequência, a primeira, ‘B2‘, ficará na forma complementar,
e as outras duas, ‘B1‘ e ‘B0‘, ficarão na formal normal: m3 = 0B
1B
2B .
– continua-se a varrer a coluna, detendo-se em cada ‘1’ para aplicar um procedimento similar…
– no final, ter-se-ão determinado, e escrito, todos os mintermos de ‘V‘;
– para lograr uma expressão booleana de ‘V‘, bastará, enfim, somar todos esses mintermos.
A esta Expressão de ‘V‘ dá-se o nome de SOP canónica, ou 1ª Forma Canónica (ou, ainda, Forma Disjuntiva).
Posto que é viável aplicar o procedimento acima a todas as Tabelas de Verdade, conclui-se que todas as funções
Booleanas se podem escrever nesta forma.
No caso, V = m3 + m5 + m6 + m7; ou, numa forma mais sintética, V = m (3, 5, 6, 7) ou, por extenso:
0B1
B2
B0
B1
B2
B0
B1
B2
B0
B1
B2
BV
A partir daqui, se deduz o logigrama do Circuito, vidé ao lado – que requere 1 OR de 4-entradas, 3 NOTs e 4
ANDs de 3-entradas.
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 56 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 57 of 101
Funções Booleanas / 2ª Forma / POS canónica
Ao lado, apresenta-se a Tabela de Verdade para o 4º Projecto…
Atente-se na coluna ‘V‘. Tem quatro ‘0’s (e quatro ‘1’s). Recordando o significado da operação ‘’, é pacífico
considerar essa coluna como o AND/ de 4 colunas, cada uma contendo apenas um ‘0’, vidé ao lado. O mesmo é
dizer que a Função ‘V‘ se pode entender como o AND/ de 4 funções das entradas, ditas de Maxtermos:
– ‘M0’ é ‘0’ apenas na linha ‘0’, isto é: apenas para a combinação de valores {B2=0, B1=0, B0=0}; isto, é claro,
remete para um OR: M0 (B2, B1, B0) = 0B
1B
2B (recorde: a saída de um OR advém ‘0’ sse todas as suas
entradas forem ‘0’);
– ‘M1’ é ‘0’ só na linha ‘1’, isto é: só quando {B2=0, B1=0, B0=1}; ou seja: M1 (B2, B1, B0) = 0B
1BB2 ;
– ‘M2’ é ‘0’ só na linha ‘2’, isto é: só quando {B2=0, B1=1, B0=0}; ou seja: M2 (B2, B1, B0) = 0B1B2B ;
– ‘M4’ é ‘0’ só na linha ‘4’, isto é: só quando {B2=1, B1=0, B0=0}; ou seja: M4 (B2, B1, B0) = 0
B1
B2
B .
Convém sublinhar a ‘forma’ de cada Maxtermo: a Tabela de Verdade de um ‘Mi’ genérico é ‘0’ apenas na linha
‘i’; ‘Mi’ será uma soma de todas as variáveis; nessa soma, cada variável aparece uma só vez, na forma normal ou
complementar, consoante respectivamente essa variável for ‘0’ ou ‘1’ em ‘bi’.
Na prática, então:
– varre-se a coluna ‘V’, de cima para baixo – à procura dos ‘0’s... No caso, o primeiro ‘0’ ocorre na linha ‘0’…
– ‘olha-se’ à esquerda, a ver qual o ‘bi’ que lhe corresponde; no caso, será b0=000;
– forma-se depois uma soma de todas as variáveis (nesta abordagem, preferindo-se começar por escrever aquela
mais a esquerda); a forma em que a variável ficará – normal ou complementar – depende de ‘bi’: se em ‘bi’ a
variável for ‘0’, usa-se a forma normal; caso contrário, usa-se a forma complementar. No caso, em que b0=000,
todas as variáveis são ‘0’; em consequência, ficarão todas na formal normal: M0 = 0B
1B
2B .
– continua-se a varrer a coluna, detendo-se em cada ‘0’ para aplicar um procedimento similar…
– no final, ter-se-ão determinado, e escrito, todos os maxtermos de ‘V’;
– para lograr uma expressão booleana de ‘V’, bastará, enfim, fazer o produto de todos esses maxtermos.
A esta Expressão de ‘V’ dá-se o nome de POS canónica, ou 2ª Forma Canónica (ou, ainda, Forma Conjuntiva).
Posto que é viável aplicar o procedimento acima a todas as Tabelas de Verdade, conclui-se que todas as funções
Booleanas se podem escrever nesta forma.
No caso, V = M0 + M1 + M2 + M4; ou, numa forma mais sintética, V = M (0, 1, 2, 4) ou, por extenso:
0
B1
B2
B0
B1
B2
B0
B1
B2
B0
B1
B2
BV
A partir daqui, se deduz o logigrama do Circuito, vidé ao lado – que requere 1 AND de 4-entradas, 3 NOTs e 4
ORs de 3-entradas.
Revejam-se as expressões obtidas para ambas as formas canónicas:
V = m (3, 5, 6, 7) e V = M (0, 1, 2, 4).
Convém reparar nas duas propriedades de que gozam os conjuntos de índices nelas utilizados:
– por um lado, esgotam a totalidade dos números que identificam as linhas da Tabela de Verdade;
– por outro lado, são disjuntos: nenhum dos índices aparece em ambas as formas, ‘’ e ‘’.
Isso não é fruto do acaso: em ‘’, coleccionam-se os números de todas as linhas em que a função toma o valor
‘1’, e só essas – e em ‘’ coleccionam-se os números de todas as linhas em que a função toma o valor ‘0’, e só
essas
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 58 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 59 of 101
Funções Booleanas / Formas SOP e POS Não-canónicas
Neste ponto do desenvolvimento, dispõe-se de duas expressões, ambas Formas Canónicas, para representar a
Tabela de Verdade para o 4º Projecto – naturalmente conduzindo a distintos logigramas… Lembrando entretanto a
Álgebra de Boole – e a sua promessa de lograr expressões mais simples –, é hora de a aplicar…
Da prática já tida, mormente no exemplo que fechou a sessão anterior, terá ficado claro que o “segredo” da
simplificação é procurar e associar dois termos Adjacentes, isto é: dois termos que difiram em apenas uma
variável; num dos termos, ela aparece na forma Normal, e, no outro termo, aparece na Forma Complementar:
XYXYX e XYXYX
Ou se aplica num golpe só a Adjacência; ou se aplica a Distributividade (neste caso, “pondo ‘X’ em
evidência”), e logo a seguir a Complementariedade e, enfim, a propriedade de ‘+’ e ‘’ terem elementos neutros…
Partindo da 1ª Forma Canónica, vidé ao lado,
É claro que o primeiro e o segundo termos da soma não são adjacentes, pois diferem em duas variáveis (B2 e
B1)… Idem para o primeiro e o terceiro, mas já o primeiro e o quarto diferem apenas na variável ‘B2’: são
adjacentes… É, pois, sugestivo, associá-los, e aplicar a propriedade da Adjacência…
Mas uma asserção similar vale para o segundo e quarto termos: são adjacentes; idem para o terceiro e quarto
termos: também são adjacentes.
Resumindo: o quarto termo é adjacente aos três primeiros… e natural é a questão: com qual deles será
preferível associar esse quarto termo? A melhor resposta será: associá-lo a todos os três! Para o efeito, um primeiro
passo é aplicar a Idempotência – replicando o quarto termo, dele obtendo portanto um total de três cópias…
Numa segunda etapa, aplica-se a Comutatividade: reposiciona-se uma cópia do quarto termo a seguir ao
primeiro termo e outra a seguir ao segundo termo…
Numa terceira etapa, aplica-se a Comutatividade, no seio de cada termo de produto: nos dois primeiros
termos da soma, a variável que difere neles (B2) é reposicionada à direita; idem para os dois termos seguintes e
para os dois últimos termos…
Continua-se aplicando a Associatividade e a Distributividade: no primeiro par de termos, “põe-se B1B0 em
evidência”; no segundo par, “põe-se B2B0 em evidência”; no terceiro par, “põe-se B2B1 em evidência”;
Continua-se aplicando a Complementariedade…
Enfim, e recordando que ‘1’ é o elemento neutro do produto, descartam-se os ‘1’s entre parêntesis…
A expressão que se obteve é uma SOP – uma soma de produtos – mas não canónica: pois que ao menos um
desses termos de produto (de facto, todos deles) não envolve todas as variáveis!
Essa SOP não-canónica resulta num logigrama suportado em apenas dois chips: um com ORs e o outro
disponibilizando os três ANDs de 2-entradas. Um logigrama mais simples que o da 1ª Forma Canónica!
Partindo agora da 2ª Forma Canónica, vidé ao lado,
O primeiro termo é adjacente aos três seguintes… e natural é aplicar a Idempotência – replicando o primeiro
termo, dele obtendo portanto um total de três cópias…
Numa segunda etapa, aplica-se a Comutatividade: reposiciona-se uma cópia do primeiro termo antes do
terceiro termo e outra antes do quarto termo…
Numa terceira etapa, aplica-se a Comutatividade, no seio de cada termo de soma: em cada par de termos de
produto, a variável que difere neles é reposicionada à direita …
Continua-se aplicando a Associatividade e a Distributividade: no primeiro par de termos, “põe-se B2+B1 em
evidência”; no segundo par, “põe-se B2+B0 em evidência”; no terceiro par, “põe-se B1+B0 em evidência”;
Continua-se aplicando a Complementariedade…
Enfim, e recordando que ‘0’ é o elemento neutro da soma, descartam-se os ‘0’s entre parêntesis…
A expressão que se obteve é uma POS – um produto de somas – mas não canónica: pois que ao menos um
desses termos de soma (de facto, todos deles) não envolve todas as variáveis!
Essa POS não-canónica resulta num logigrama suportado em apenas dois chips: um com ANDs e o outro
disponibilizando os três ORs de 2-entradas. Um logigrama mais simples que o da 2ª Forma Canónica!
Moral da história: manda a eficiência no desenho de circuitos o saber simplificar Expressões Booleanas – e
fazê-lo bem só se consegue com muita prática…
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 60 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 61 of 101
Funções Booleanas / Formas só com NANDs ou NORs
SOPs e POSs, as formas já exploradas para representar Funções Booleanas, fazem apelo a três tipos de chips:
ORs, ANDs e NOTs. Mas há formas que se bastam em um único tipo de chip, a saber: NAND ou NOR. É o que se
vai abordar de imediato. No final, será clara a maior eficiência a que tendencialmente conduz tal representação.
Ambas as formas se fundamentam em duas das Regras de Simplificação: a Involução e as leis de De Morgan.
O ponto de partida serão as formas SOP e POS não canónicas já obtidas:
Partindo da SOP não-Canónica, vidé ao lado,
A Involução assegura que complementando ‘V’ duplamente, se obtém a mesmíssima função ‘V’;
Com isso, já se não tem uma SOP (soma de produtos) mas sim o complemento do complemento de uma soma
(de produtos). Aplicando a pertinente lei de De Morgan – o complemento duma soma é o produto dos
complementos –, chega-se a uma Expressão que é o complemento de um produto de três termos; cada um destes é,
por sua vez, o complemento do produto de dois termos, vidé ao lado.
Ou seja: ORs, ANDs e NOTs sumiram-se; o único operador que fica é o complemento dum produto: um NAND.
Esta forma-NAND resulta num logigrama suportado em apenas dois chips: um com NANDs de 3-entradas e o
outro disponibilizando os três NANDs de 2-entradas.
Existe uma outra maneira – gráfica – de chegar a esse mesmo logigrama: partindo do logigrama da SOP não-
Canónica, vidé ao lado:
a primeira etapa é aplicar um Corolário óbvio das leis de De Morgan: obtém-se um circuito equivalente se se
trocar um OR por um AND e se se complementarem tanto as entradas como a saída ( YXYXYX );
com isso, o NOR advém substituído por um NAND cujas entradas estão complementadas; a segunda etapa é
deslizar o complemento dessas entradas para a saída dos ANDs que alimentam essas entradas, vidé ao lado…
com isso, os ANDs advêm substituídos por NANDs…
Partindo agora da POS não-Canónica, vidé ao lado,
A Involução assegura que complementando ‘V’ duplamente, se obtém a mesmíssima função ‘V’;
Com isso, já se não tem uma POS (produto de somas) mas sim o complemento do complemento de um
produto (de somas). Aplicando a pertinente lei de De Morgan – o complemento dum produto é a soma dos
complementos –, chega-se a uma Expressão que é o complemento de uma soma de três termos; cada um destes é,
por sua vez, o complemento da soma de dois termos, vidé ao lado.
Ou seja: ORs, ANDs e NOTs sumiram-se; o único operador que fica é o complemento duma soma: um NOR.
Esta forma-NOR resulta num logigrama suportado em apenas dois chips: um com NORs de 3-entradas e o outro
disponibilizando os três NORs de 2-entradas.
Há um outro modo – gráfico – de chegar ao mesmo logigrama: partindo do logigrama da POS não-Canónica:
a primeira etapa é aplicar um Corolário óbvio das leis de De Morgan: obtém-se um circuito equivalente se se
trocar um AND por um OR e se se complementarem tanto as entradas como a saída ( YXYXYX );
com isso, o AND advém substituído por um NOR cujas entradas estão complementadas; a segunda etapa é
deslizar o complemento dessas entradas para a saída dos ORs que alimentam essas entradas, vidé ao lado…
com isso, os ORs advêm substituídos por NORs…
Revendo o caminho percorrido, será pacífica esta conclusão: todos os Circuitos se podem construir com, só,
NANDs ou NORs. Começando por exprimi-los numa forma canónica, prosseguindo com a sua simplificação e
depois aplicando a Involução e as leis de De Morgan, logram-se circuitos só com NANDs ou só com NORs.
Poderá o leitor objectar – com razão! – que o exemplo é enviesado: aquelas Formas não-Canónicas não contêm
variáveis complementadas. Isso nem sempre é assim – como aliás sucede com as Formas Canónicas: ambas
podem conter variáveis complementadas, com o que os respectivos logigramas envolverão NOTs! Pois bem:
bastará substituir cada NOT por um NAND/NOR com as entradas curto-circuitadas, para aceitar a universalidade
da conclusão acima.
Circuitos assim tendem a ser mais compactos do que circuitos correspondentes às formas SOP e POS. De facto,
em algmas tecnologias de fabrico, os AND reais obtêm-se serializando dois NANDs (a saída de um deles é
aplicada a ambas as entradas do outro) – o mesmo é dizer: é mais barato um NAND que um AND.
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 62 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 63 of 101
Funções Booleanas / Formas Multinível (nem SOP nem POS)
As Formas já consideradas manifestam uma arquitectura de dois planos AND-OR: uma SOP envolve um plano
(vertical) de ANDs cujas saídas são as entradas dum OR, uma POS envolve um plano (vertical) de ORs cujas
saídas são as entradas dum AND… Mas há casos em que ela não é realizável ou, sendo-o, não é a mais eficiente:
O mercado poderá não oferecer ORs/ANDs com o número de entradas requerido nas formas SOP ou POS.
(A modos de exemplo, repare-se que a SOP não-canónica do 4º Projecto envolve – como seria expectável – 3
2C termos. Mas, se o júri tivera cinco membros, já ela envolveria 5
3C = 10 termos; isso significaria um plano de 10
ANDs e um OR com um fan-in de ao menos 10 entradas – que é coisa que de momento não existe no mercado…)
Que fazer então? Um artifício pacífico será recorrer a manipulações algébricas triviais que convertam a
Expressão entre mãos numa forma que se possa concretizar com os chips que o mercado disponibiliza…
Ao lado, exemplifica-se esse artifício – que se poderia justificar se o fan-in de ORs no mercado não excedesse
2: aplicando a Associatividade e a Distributividade (“pondo B2 em evidência”), chega-se a uma Forma que se
sustenta em ORs de 2-entradas… Agora, não mais há dois planos apenas, trata-se duma arquitectura multinível…
Pode ser mais económico usar portas livres de chips já existentes, em vez de acrescentar um novo
OR/AND…
Para clarificar, suponha-se uma SOP que remete para vários tipos de ANDs: um de 2-entradas, outro de 3-
entradas e um outro de 4-entradas – que o mercado disponibiliza sob as designações SN7408, SN7411 e SN7421.
– Ora o integrado SN7408 disponibiliza de facto um total de 4 ANDs! Com o que, se o leitor usar o SN7408
para concretizar um produto, ainda ficarão livres, nesse integrado, três AND de 2-entradas. Isso viabiliza um
artifício no sentido da maior eficiência: em vez de adquirir um integrado SN7421 para concretizar o AND de 4-
entradas, interligar adequadamente esses três ANDs livres para obter a funcionalidade requerida, vidé ao lado;
– Do mesmo modo, o integrado SN7411 disponibiliza de facto um total de 3 ANDs! Com o que, se o leitor usar
o SN7411 para concretizar um produto, ainda ficarão livres, nesse integrado, dois AND de 3-entradas – que,
interligados adequadamente, vidé ao lado, dispensarão a aquisição do integrado SN7421.
Em algumas situações, alguns artifícios podem levar a um menor número de chips…
Um exemplo será a concretização do XOR:
– É pacífico traduzir a Tabela de Verdade do XOR numa Expressão SOP, vidé ao lado – que remete para um
logigrama com um OR, dois ANDs e dois NOTs, a requerer 3 chips…
– Aplicando o método gráfico para, a partir do logigrama da SOP, chegar a um logigrama só com NANDS, e
não esquecendo que um NAND com as entradas curto-circuitadas equivale a um NOT, chega-se a um logigrama
com cinco NANDs de 2-entradas, a requerer 2 chips…
– Mas existe uma concretização física a exigir ainda menos chips: pegando na Expressão-SOP do XOR, aplica-
se uma dupla complementação (que não altera o seu valor) e continua-se com manipulações algébricas triviais;
logra-se uma Expressão que se concretiza num logigrama com, só, 4 NANDs de 2-entradas, a requerer um chip só
Estes artifícios podem revelar-se cruciais, mormente numa abordagem prática – em que os estudantes são
confrontados com sucessivos Trabalhos de Laboratório ao longo do semestre: por cada integrado a mais que um
estudante inclua na solução, há mais dois fios a juntar à montagem (respeitantes aos pinos VCC e GND), e há mais
um dispositivo vulnerável a avarias… Por mor de, no tempo disponibilizado, completar com sucesso a montagem
(e apresentá-la ao professor), é mister chegar a uma solução que se baste no menor número de integrados…
Em qualquer caso, esses artifícios significam abandonar uma arquitectura de dois planos em favor de uma
arquitectura multinível. Os circuitos assim logrados são equivalentes funcionalmente, mas já o não são do ponto de
vista do tempo: são mais lentos a reagir! Considere-se, de facto, que acontece uma alteração numa das entradas –
que leve à mudança na saída; uma questão cuja resposta poderá ser relevante em alguns casos é a seguinte: quanto
tempo, no máximo, poderá decorrer entre a mudança numa entrada e a subsequente mudança na saída?
– numa arquitectura SOP/POS, existe só uma rota entre uma entrada qualquer e a saída (como exemplo, vidé o
logigrama SOP do XOR); tipicamente, ela envolverá um AND e um OR (e, eventualmente, um NOT) – pelo que o
tempo máximo será a soma dos tempos de propagação no AND e no OR (e no NOT, se o houver);
– numa arquitectura multinível, poderão existir várias rotas entre uma entrada qualquer e a saída (vidé o
logigrama multinível do XOR); o tempo máximo é o da rota mais lenta/demorada entre uma entrada e a saída.
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 64 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 65 of 101
Funções Booleanas / Diagrama Temporal
A fechar esta sucessão de formas de representar uma Função Booleana, abordam-se agora os assim designados
Diagramas Temporais (e ‘esta’ está em itálico para realçar o facto de haver outras formas de representação,
nomeadamente Linguagens de Descrição de Hardware – exs: VHDL e Verilog – que aqui não são abordadas).
Um Diagrama Temporal consiste em vários gráficos; a variável independente (eixo das abcissas) é o tempo; e
nos eixos das ordenadas traça-se a evolução temporal do nível eléctrico {‘L’ e ‘H’} das entradas e da saída do
Circuito que concretiza a Função Booleana.
Para concretizar, apresenta-se ao lado um Diagrama Temporal para o 4º Projecto (acentue-se é um Diagrama, no
sentido de que podem conceber-se outros: no caso, ele segue ao longo do tempo as sucessivas linhas da Tabela de
Verdade, mas, conquanto essa estratégia possa ser recomendável, nada obriga a cumpri-la).
O ponto de partida é a respectiva a Tabela de Verdade… Para uma dada Função ‘V’, ela estabelece, para cada
combinação de valores lógicos {0 e 1} das variáveis {B2, B1, B0}, qual o correspondente valor lógico que ela
assume. Quanto ao Diagrama Temporal, ele estabelece, para cada combinação de níveis eléctricos {L e H} das
entradas {B2, B1, B0} – do Circuito que concretiza essa Função –, qual o nível eléctrico que a saída assume.
Antes de mais, há, então, que estabelecer uma correspondência entre valores lógicos {0 e 1} e níveis eléctricos
{L e H}. Deixando para mais tarde outras possibilidades, adiante-se desde já que aquela que hegemoniza a praxis
actual em Sistemas Digitais é a assim designada Lógica Positiva, caracterizada por:
O valor lógico ‘0’ é feito corresponder ao nível eléctrico ‘L’, e o valor lógico ‘1’ é feito corresponder ao nível
eléctrico ‘H’.
Isso viabiliza ao leitor conferir se um circuito que projectou cumpre a funcionalidade pretendida. Como
exemplo, a Tabela de Verdade ao lado manifesta que a combinação de variáveis {B2=0, B1=1, B0=1} conduz ao
valor lógico V=1; o que haverá a fazer é impor, às entradas daquele circuito, a combinação de níveis eléctricos
{B2=L, B1=H, B0=H} e conferir se à saída se obtém o nível eléctrico V=L. Se isso acontecer (e se repetir, com
sucesso, esta conferência para todas as combinações de variáveis), então o leitor poderá estar tranquilo…
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 66 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 67 of 101
Funções Booleanas / Recapitulando
Ao lado, estão compiladas as várias formas de representação que foram consideradas a propósito da função
Booleana a que conduz o Projecto com que se iniciou a presente sessão.
O ponto de partida é a Tabela de Verdade da Função, que no caso presente é V (B2, B1, B0); a partir dela podem
deduzir-se as demais formas de representação.
Nomeadamente, assinalam-se a 1ª e 2ª Formas Canónicas – que, recorde-se, são, respectivamente, a Soma de
todos os mintermos e o Produto de todos os maxtermos da Função. A 1ª Forma Canónica envolve um mintermo
por cada ‘1’ na Tabela de Verdade; e a 2ª Forma Canónica envolve um maxtermo por cada ‘0’ nessa Tabela.
Essas Formas Canónicas poderão ser simplificadas – por aplicação da Álgebra de Boole; resultam expressões
algébricas que mantêm o caracter de Somas de Termos de Produto ou Produtos de Termos de Somas – mas não
necessariamente Canónicas (pois ao menos um termo poderá não ser, respectivamente, mintermo ou maxtermo).
Por dupla complementação de tais expressões (Canónicas ou não), e subsequente aplicação das leis de De
Morgan, derivam-se expressões com, somente, NANDs ou NORs.
Realce-se: as Formas Canónicas são únicas – no sentido de que, para cada Função, só existe uma maneira de
escrever a 1ª Forma Canónica e uma só maneira de escrever a 2ª Forma Canónica (bem entendido, não entrando em
linha de conta com a Comutatividade, isto é: a possibilidade de trocar a ordem dos mintermos/maxtermos, e a
ordem por que neles surgem as diversas variáveis). Mas as restantes expressões não são únicas – no sentido de que
a simplificação das Formas Canónicas poderá dar origem a mais do que uma “expressão mais simples”.
De tais expressões podem desenhar-se logigramas de dois níveis: um plano de ORs seguido de um plano de
ANDs, ou vice-versa: um plano de ANDs seguido de um plano de ORs. Uma outra possibilidade será a de ambos
os planos se suportarem em, apenas, NANDs ou NORs.
Em alternativa, poderão também lograr-se logigramas multinível – mediante manipulações algébricas triviais,
que convertam alguma das expressões precedentes em uma outra que se volva em mais que dois planos.
Sublinhe-se: a obtenção das expressões e logigramas supracitados pressupõe o conhecimento da Tabela de
Verdade. Eventualmente, esta pode ser desconhecida – mas conhecer-se algum logigrama ou expressão algébrica…
Como fazer para, daí, lograr qualquer uma das demais formas de representação da função? A resposta é: usar o que
se conhece para preencher a Tabela de Verdade – e a partir dela gerar a forma de representação pretendida.
Eis um exemplo: como, a partir de um logigrama multinível, chegar a uma expressão (o mais simples possível)
somente com NANDs? Eis a resposta:
1. antes de mais, e por aplicação nas entradas de todas as combinações de ‘0’s e ‘1’s, deduz-se o correspondente
valor na saída (‘0’ ou ‘1’) – e preenche-se a Tabela de Verdade…
2. dessa Tabela de Verdade se pode subsequentemente chegar à 1ª Forma Canónica…
3. a seguir, por manipulações algébricas, deduz-se a SOP mais simples (que poderá não ser única)…
(Nota importante: numa sessão adiante – dedicada ao método de Karnaugh –, se abordará a dedução da SOP
mais simples directamente a partir da Tabela de Verdade, sem ter primeiro que produzir a 1ª Forma Canónica)
4. enfim, e por dupla complementação, e aplicação das leis de De Morgan, será hora de escrever uma expressão
somente com NANDs…
(Na gíria de Sistemas Digitais, o passo ‘1’ – uma espécie de espionagem, que olha para um logigrama
concebido por outrem e deduz o seu comportamento em termos de Tabela de Verdade – designa-se de análise; os
passos subsequentes designam-se de síntese)
A última forma de representação considerada é o Diagrama Temporal. Parte-se da Tabela de Verdade, lógica,
para obter mentalmente uma Tabela física – pelo artifício de (pressuposto que se usa a Lógica Positiva) substituir
cada ‘0’ lógico pelo nível eléctrico ‘L’, e cada ‘1’ lógico pelo nível ‘H’. Com isso em mente, desenha-se um
diagrama: ao longo do tempo, os níveis eléctricos nas entradas do Circuito vão assumindo as combinações de ‘L’ e
‘H’ respeitantes às sucessivas linhas da Tabela física, e o nível na saída é o determinado por essa mesma Tabela.
Uma praxis incontornável no Laboratório será: a partir dum enunciado, sintetizar um circuito (i.e., gerar uma
Tabela de Verdade – e, dela, proceder ao desenho de um logigrama e montá-lo sobre chips concretos); e, depois,
analisá-lo (i.e., aplicar nas entradas do circuito as sucessivas combinações dos níveis eléctricos ‘L’ e ‘H’, e
conferir se a saída corresponde àquela que a Tabela de Verdade determina).
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 68 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 69 of 101
Funções Booleanas / Lista de Funções de 1 e 2 Variáveis
Ao lado, estão compiladas as várias Funções Booleanas que podem conceber-se para uma e duas varáveis.
Com uma variável, ‘X’, podem conceber-se 4 Funções Booleanas distintas:
– uma Função, ‘g0’, que se volve em ‘0’ sempre, i.e., independentemente do valor de ‘X’: g0=0;
– uma Função, ‘g1’, que em cada momento assume o valor que ‘X’ tem então: g1=X;
– uma Função, ‘g2’, que em cada momento assume o valor inverso ao que ‘X’ tem então: g1= X ;
– uma Função, ‘g3’, que se volve em ‘1’ sempre, i.e., independentemente do valor de ‘X’: g0=1.
Com duas variáveis, X e Y, podem conceber-se 16 Funções Booleanas distintas:
– uma Função, f0, que se volve em ‘0’ sempre, i.e., independentemente dos valores de ‘X’ e ‘Y’: f0=0;
– uma Função, f1, que se volve em ‘1’ sse ‘X’ e ‘Y’ forem ambos ‘1’: f1= YX ;
– uma Função, f2, que se volve em ‘1’ sse X=1 e Y=0: f2= YX ;
– uma Função, f3, que em cada momento assume o valor que ‘X’ tem então: f3=X;
– uma Função, f4, que se volve em ‘1’ sse X=0 e Y=1: f4= YX ;
– uma Função, f5, que em cada momento assume o valor que ‘Y’ tem então: f5=Y;
– uma Função, f6, que se volve em ‘1’ sse YX : f6= YX ;
– uma Função, f7, que se volve em ‘1’ sse X ou Y forem ‘1’: f7= YX ;
– uma Função, f8, que se volve em ‘1’ sse ‘X’ e ‘Y’ forem ambos ‘0’: f8= YX = YX = 7f ;
– uma Função, f9, que se volve em ‘1’ sse YX : f9= YX = 6f ;
– uma Função, f10, que em cada momento assume o valor inverso ao que ‘Y’ tem então: f10= Y = 5f ;
– uma Função, f11, que se volve em ‘1’ sse X=1 ou Y=0: f11= YX = 4f ;
– uma Função, f12, que em cada momento assume o valor inverso ao que ‘X’ tem então: f12= X = 3f ;
– uma Função, f13, que se volve em ‘1’ sse X=0 ou Y=1: f13= YX = 2f ;
– uma Função, f14, que se volve em ‘1’ sse X ou Y forem ‘0’: f14= YX = 1f ;
– uma Função, f15, que se volve em ‘1’ sempre, i.e., independentemente dos valores de ‘X’ e ‘Y’: f15=1= 0f ;
Constata-se que algumas destas funções remetem para as gates básicas e derivadas apresentadas logo na
primeira Sessão:
– f1 é o velho conhecido AND;
– f7 é o velho conhecido OR;
– g2 é o velho conhecido NOT;
– f14 é o velho conhecido NAND;
– f8 é o velho conhecido NOR;
– f6 é o velho conhecido XOR;
– f9 é o velho conhecido XNOR.
Duas das funções, a saber f0 e f15 (e também g0 e g3), são Constantes.
Duas outras funções, a saber f3 e f5 (e também g1), são funções Identidade.
Duas outras funções, a saber f10 e f12 (e também g2), remetem para a gate NOT.
Restam 4 funções, de que, apenas por curiosidade, se revelam os nomes:
As funções f11 e f13 remetem para a operação Implicação, respectivamente Y → X e X → Y; e f4 e f2
remetem para o seu inverso.
Deixa-se ao leitor preencher a tabela das funções de 3 variáveis, e escrever as respectivas expressões
algébricas…
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 70 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 71 of 101
Sistemas de Numeração / 5º Projecto
A generalidade dos livros e cursos universitários versando Sistemas Lógicos/Digitais prefere começar por
abordar “Sistemas de Numeração”, só depois rodando a atenção para a Álgebra de Boole, Gates, etc…
O itinerário até agora percorrido é de certo modo inverso: primeiro, introduziram-se os chips SN74xx, como
meio de resolver problemas de engenharia; e só depois, a pretexto da optimização dos circuitos assim concebidos,
se abordou a álgebra de Boole – sem uma palavra sequer acerca de “Sistemas de Numeração”: foram de todo
irrelevantes...
Esta opção tem uma justificação: proporcionar aos estudantes, para quem este documento foi elaborado, o seu
envolvimento activo – isto é, o meter a mão na massa (leia-se: no laboratório) – tão cedo quanto possível, por
conseguinte sem o compasso de espera em que se traduziria estudar em primeiro lugar “Sistemas de Numeração”.
Como o próprio leitor irá constatar daqui por diante, não convém todavia protelar por mais tempo a sua
abordagem; é o que se fará nesta sessão – começando, como todas as outras Sessões, por enunciar um Projecto
concreto...
Considere que os candidatos a uma Universidade têm exame de aptidão a quatro disciplinas: Matemática,
Português, História e Arte. Um candidato é aceite se for aprovado em Matemática e ao menos noutra disciplina, ou
for aprovado em pelo menos três disciplinas.
Esse Projecto envolve 4 variáveis: a ideia é ir progredindo do mais simples para o mais complicado… Mas a
estratégia de resolução mantém-se: começar por elaborar a Tabela de Verdade… Ela encontra-se ao lado:
– à esquerda, dispõem-se quatro colunas, representando as quatro disciplinas {M, P, H, A}; conforme à praxis
recomendada, as colunas dispõem-se de modo a que a de maior peso, ‘M’, fique à esquerda…
– ‘R’, a Resposta do Circuito, volve-se ‘1’ (i.e., o candidato é aceite) apenas em cada uma das oito linhas em
que M=1 e há ao menos outro ‘1’, ou ocorrem três ou mais ‘1’s…
Exprimindo a saída como um somatório () de mintermos, vem
R = m (7, 9, 10, 11, 12, 13, 14, 15);
e exprimindo-a como um produtório () de maxtermos, vem
‘’R = M (0, 1, 2, 3, 4, 5, 6, 8).
(Abra-se um parêntesis: não se deverá deixar de reparar que os índices presentes no ‘’ são distintos daqueles
listados no ‘’. Isso não acontece por acaso, é claro: no ‘’, referem-se as linhas onde R=1, e, no ‘’, referem-se
as linhas onde R=0…)
A questão que é mister aprofundar agora é a seguinte: como se concluiu que, por exemplo, o identificador ‘13’
faz parte do ‘’? Dirá o leitor, e com razão: as sucessivas combinações de ‘0’s e ‘1’s nas colunas à esquerda
encontram-se ordenadas conforme a convenção enunciada aquando do 2º Projecto. Numerando consecutivamente,
de cima para baixo, essas combinações {vidé, à esquerda da Tabela, entre parêntesis: ‘0’, ‘1’, ‘2’, … até ‘15’},
confere-se qual o valor que ‘R’ assume para a combinação etiquetada por ‘13’ – e, porque se constata que, aí, R=1,
então é pacífico que, o ‘’ deverá comportar o número ‘13’…
Há, entretanto, que acentuar que o circuito tem apenas 4 variáveis… Isso viabiliza o escrever toda a Tabela de
Verdade numa única folha de papel… Mas é inevitável a pergunta: e se a saída do circuito depender de mais
entradas? Adiante-se desde já que, na continuação destas sessões, se irá considerar um circuito com 11 variáveis –
o que remete para uma Tabela com 211
=2048 linhas… E não se antecipa agradável a tarefa de a escrever toda para
discernir qual a combinação de ‘0’s e ‘1’s a que corresponde, seja, m27 ou M27…
Trata-se, pois, de inquirir: qual a combinação de ‘0’s e ‘1’s – e, por conseguinte, qual a expressão algébrica –
correspondente a algum mintermo ‘mi’ ou maxtermo ‘Mj’ genérico – ou, vice-versa, qual o índice em ‘mi’ ou ‘Mj’
correspondente à expressão algébrica de um dado mintermo ou maxtermo? E responder a isso sem ter que escrever
a Tabela “toda”!
É isso que se irá ver a seguir.
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 72 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 73 of 101
Sistemas de Numeração / Conversão mi/Mj Expressões Algébricas
Aquando do estabelecimento da convenção relativa ao preenchimento das colunas que representam as entradas
do circuito, vidé 2º Projecto, acentuou-se: cada coluna é a repetição “por-aí-abaixo” de ciclos contendo, cada um,
alguns ‘0’s logo seguidos do mesmo número de ’1’s...
O ciclo da coluna mais à direita, ‘A’, e que é ‘01’, contém 1 ‘0’ (e 1 ‘1’); o da coluna que lhe fica à esquerda,
‘H’, e que é ‘0011’, contém 2 ‘0’s; o da coluna à esquerda desta última, ‘P’, e que é ‘00001111’, contém 4 ‘0’s; e o
da coluna à esquerda desta última, ‘M’, e que é ‘0000000011111111’, contém 8 ‘0’s.
Por comodidade, escreveram-se ao lado esses valores {8, 4, 2, 1}, entre parêntesis, mesmo abaixo de cada
coluna… Esses valores não são quaisquer: são potências-de-2 consecutivas (23, 2
2, 2
1, 2
0); visto de outra maneira,
se se enumerar as sucessivas colunas por {k = 3, 2, 1, 0}, o valor sob cada coluna é, precisamente, 2k.
Convencionando que cada coluna tem um peso – que é o valor abaixo dela –, constata-se o seguinte: o número
de ordem de cada linha (‘0’, ‘1’, ‘2’, até ‘15’) é a soma dos pesos das colunas em que se encontram os ‘1’s. Na
prática, e porquanto tais pesos são potências-de-2, aquele número de ordem vem a ser uma soma de algumas
potências-de-2 (concretamente, as correspondentes às colunas em que a linha assume o valor ‘1’).
Eis alguns exemplos:
– seja a linha onde a combinação das entradas {M, P, H, A} é ‘0001’; somente a coluna ‘A’ exibe um ‘1’; posto
que ela tem peso 1, o resultado de acordo com o algoritmo acima é: 1=20=1;
– seja a linha onde aquela combinação é ‘0010’; somente a coluna ‘H’ exibe um ‘1’; posto que ela tem peso 2, o
resultado do algoritmo acima é: 2=21=2;
– seja a linha onde aquela combinação é ‘0100’; somente a coluna ‘P’ exibe um ‘1’; posto que ela tem peso 4, o
resultado do algoritmo acima é: 4=22=4;
– seja a linha onde aquela combinação é ‘1000’; somente a coluna ‘M’ exibe um ‘1’; posto que ela tem peso 8,
o resultado do algoritmo acima é: 8=23=8;
– seja a linha onde aquela combinação é ‘1100’; existem duas colunas {M e P} com ‘1’; tendo elas pesos 8 e 4,
respectivamente, o resultado do algoritmo acima é: 8+4=23+2
2=12;
– seja enfim a linha onde aquela combinação é ‘1011’; existem três colunas {M, H e A} com ‘1’; tendo elas
pesos 8, 2 e 1, respectivamente, o resultado do algoritmo acima é: 8+2+1=23+2
1+2
0=11.
(Abra-se um parêntesis: ao longo da disciplina “Sistemas Digitais”, é assaz frequente ter que se determinar a
correspondência entre qualquer uma das dezasseis combinações das entradas da Tabela ao lado e o respectivo
número de ordem (ou vice-versa) – pelo que convém que o leitor a saiba fazer mentalmente, num ápice!).
Compreendido o algoritmo para traduzir uma combinação de ‘0’s e ‘1’s no correspondente número de ordem, é
pacífico como fazer o contrário: dado um número de ordem, determinar a correspondente combinação de ‘0’s e
‘1’s. O ponto de partida é o seguinte: um número de ordem (de uma linha) é uma soma de algumas potências-de-2
– pelo que “tudo” se resume a determinar quais as potências-de-2 cuja adição resulta naquele número de ordem.
Seja, como exemplo, a determinação da combinação de ‘0’s e ‘1’s correspondente a 25. Então,
– a maior potência-de-2 não superior a 25 é 16=24; 25 excede 16 em 25-16=9;
– a maior potência-de-2 não superior a 9 é 8=23; 9 excede 8 em 9-8=1;
– a maior potência-de-2 não superior a 1 é 1=20; 1 excede 1 em 1-1=0.
Ou seja: 25 = 16 + 8 + 1 (= 24 + 2
3 + 2
0). De que se deduz: a combinação pretendida terá ‘1’ nas colunas cujos
pesos são {16, 8 e 1} – ou, o que é o mesmo, nas colunas numeradas {4, 3 e 0} (que são os expoentes das
potências-de-2 cuja soma perfaze 25) – e terá ‘0’ nas restantes: ‘11001’. Dela, é trivial escrever a expressão
algébrica do mintermo m25, vidé ao lado.
Seja agora, como exemplo, a determinação da combinação de ‘0’s e ‘1’s correspondente a 45. Procedendo como
no exemplo precedente, deduz-se 45 = 32 + 8 + 4 + 1 = 25 + 2
3 + 2
2 + 2
0. De que se deduz: a combinação
pretendida terá ‘1’ nas colunas de pesos {32, 8, 4 e 1} – ou, o que é o mesmo, nas colunas numeradas 5, 3, 2 e 0
(que são os expoentes das potências-de-2 cuja soma perfaz 45) – e terá ‘0’ nas restantes: ‘101101’. Dela, é trivial
escrever a expressão algébrica do maxtermo M45…
O algoritmo usado é trivial: pouco mais há a fazer que memorizar potências-de-2 e fazer subtracções… Mas
não é lá muito cativante, mormente se o número de ordem for muito grande… Há que investigar outro método…
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 74 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 75 of 101
Sistemas de Numeração / Intermezzo: Como contar?
Recapitulando: alguém precisa de registar uma quantidade, seja “quarenta e cinco”; esta expressão espraia-se
por dezasseis (!) caracteres, pelo que ninguém se admirará do esforço da humanidade no sentido de a traduzir
numa forma compacta… O leitor tê-la-á apreendido no banco da primária: simplesmente ‘45’, que já só envolve
dois dígitos. Ela está conforme ao assim denominado “Sistema de Numeração Decimal” – que consiste numa hábil
escolha entre 10 dígitos, a saber ‘0’, ‘1’, …, ‘9’. O desafio agora é: como escrever aquela mesma quantidade sob a
forma de uma escolha de entre, apenas, 2 dígitos: ‘0’ e ‘1’?
Por mor de curiosidade – que o saber não ocupa lugar –, a resposta irá emergir no seguimento de uma curta
incursão a alguns dos sistemas de numeração euro-asiáticos:
Sistema Unário:
Poderá o leitor imaginar o Fred Flintstone dirigir-se ao pedreiro local para lhe encomendar uma dúzia de
pedras lascadas… Como fará o pedreiro para a registar? Uma praxis verosímil será dispor, ao lado uns dos outros,
uma série de doze palitos (iguais)…
Este sistema é dito de unário – pois recorre a, somente, um símbolo (o palito) – e aditivo: quantidades maiores
volvem-se em adicionar mais palitos… Quiçá ainda restem hoje vestígios deste sistema: aquando do jogo (de
cartas) da sueca, é comum, no início, um dos jogadores traçar, num papel, quatro riscos verticais para simbolizar a
menor pontuação que uma equipa necessita acumular para ganhar… Mas, quando as quantidades em causa são
algo maiores, é claro que o sistema unário se revela ineficiente…
Sistemas M-ários:
A maneira óbvia de compactar a representação de quantidades é substituir conjuntos de palitos por algum outro
símbolo específico: o Sistema passa a suportar-se em vários símbolos. Adiante, revêm-se alguns sistemas assim:
Sistema sumério: são definidos 60 símbolos cuneiformes – para representar as quantidades ‘1’, …, ‘60’ (vidé
ao lado os que representam ‘1’ e ‘10’). Para representar quantidades maiores, justapõem-se alguns deles…
Sistema egípcio (cerca de 1600 aC): são definidos 7 hieróglifos – para representar as quantidades ‘1’, ‘10’,
‘100’, …, ‘1000000’ (vidé ao lado). Para representar outras quantidades, justapõem-se alguns desses símbolos, a
ordem sendo arbitrária (vidé ao lado uma das possíveis representações de ‘218’)…
Sistema ático (Grécia, século III AC): são definidos 6 símbolos – para representar as quantidades ‘1’, ‘5’,
‘10’, ‘100’, ‘1000’ , ‘10000’ (vidé ao lado). Para representar outras quantidades, justapõem-se alguns desses
símbolos, a ordem sendo arbitrária (vidé ao lado duas possíveis representações de ‘210’)…
Sistema romano: são definidos 7 símbolos – para representar as quantidades ‘1’, ‘5’, ‘10’, ‘50’, ‘100’ ,
‘500’, ‘1000’ (vidé ao lado). Para representar outras quantidades, justapõem-se alguns desses símbolos, a ordem
não sendo arbitrária (o leitor pode constatá-lo nas representações de ‘9’ e ‘11’ em relógios cujas horas são
etiquetadas com símbolos romanos: a justaposição de ‘I’ à direita de ‘X’ significa 10+1=11, mas a justaposição de
‘I’ à esquerda de ‘X’ significa 10-1=9)…
Sistema indo-árabe (século VI DC, tendo chegado à Europa no século X): são definidos 10 dígitos – para
representar ‘1’, ‘2’, ‘3’, ‘4’, ‘5’ , ‘6’, ‘7’, ‘8’, ‘9’ , e – novidade, que nenhum dos sistemas precedentes representa a
quantidade zero! – ‘0’. Para representar outras quantidades, justapõem-se alguns dígitos em um número; o Sistema
é aditivo – mas a quantidade que um dígito representa depende da sua posição no seio do número.
Como exemplos, vejam-se os casos de 253 e 532. Constata-se que 253=200+50+3 e 532=500+30+2, ou seja:
– em ‘253’, o ‘5’ representa 50; mas em ‘532’ o ‘5’ representa 500!
– em ‘253’, o ‘3’ representa mesmo 3; mas em ‘532’ o ‘3’ representa 30!
– em ‘253’, o ‘2’ representa 200; mas em ‘532’ o ‘2’ representa mesmo 2!
Estes exemplos ilustram que cada uma das posições dum número tem um peso específico. E desenvolvendo
253=2×100+5×10+3×1=2×102+5×10
1+3×10
0 e 532=5×100+3×10+2×1=5×10
2+3×10
1+2×10
0, ficam claros os
pesos em causa: a posição mais à direita tem peso ‘1’, a que lhe está logo à esquerda tem peso ‘10’, e continuando
para a esquerda, as posições têm pesos que são as sucessivas potências-de-10: ‘1’, ‘10’, ‘100’, ‘1000’…
(Para mais detalhes, sugere-se a consulta da Tese de Mestrado de Fernando Almeida, FCUP/2007)
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 76 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 77 of 101
Sistemas de Numeração / Sistemas de Numeração Posicional
Recapitulando: no Sistema indo-árabe, o valor representado por um número é a soma dos dígitos desse número
ponderados pelas sucessivas potências-de-10. Para um número com n dígitos, isso traduz-se na fórmula 0
01
12
22-n
2-n1-n
1-n 10d10d10d...10d10dValor
Ao facto de os pesos serem potências-de-10 não será alheio o estar o sistema indo-árabe suportado num
alfabeto de 10 dígitos {‘0’, ‘1’, …, ‘9’}. O que naturalmente leva a uma pergunta: e se, em vez de o alfabeto
conter, não 10, mas um outro número, seja b, de dígitos?
Precisamente, designa-se de Sistema de Numeração posicional de base ‘b’ um sistema suportado num alfabeto
de b símbolos com a seguinte propriedade: o valor representado por um número é a soma dos dígitos desse número
ponderados pelos pesos das posições que esses dígitos ocupam no número – pesos esses que são as sucessivas
potências-de-b: 0
01
12
22-n
2-n1-n
1-n bdbdbd...bdbdValor
Ao lado, listam-se as representações dos primeiros 19 inteiros (não-negativos) para quatro sistemas de
numeração posicionais, ditos de decimal, binário, octal e hexadecimal.
Para cada um deles, indica-se a respectiva base (respectivamente: 10, 2, 8 e 16), o nome genérico dos seus
símbolos, o respectivo alfabeto, e alguns pesos (potências-de-b). Por extenso,
– o alfabeto do sistema binário comporta dois símbolos: {‘0’ e ‘1’};
– o alfabeto do sistema octal comporta oito símbolos: {‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’};
– o alfabeto do sistema hexadecimal comporta dezasseis símbolos: {‘0’, …, ‘9’, ‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’}, o
que significa: para representar o algarismo dez, usa-se o hexadecimal ‘A’, para representar onze, usa-se ‘B’, etc…
O leitor poderá conferir que a lista de números na bem conhecida base-10 segue o seguinte “algoritmo”:
na coluna mais à direita, inscreve-se, de cima abaixo, os sucessivos dígitos do alfabeto: ‘0’, ‘1’, …, ‘9’;
esse ciclo – de comprimento 10 – é depois repetido por baixo, e novamente repetido…;
na coluna que lhe fica à esquerda, o ciclo tem comprimento 100: nele, ocorrem 10 ‘0’ (omitidos),
seguem-se-lhe 10 ‘1’, etc.;
na coluna que lhe fica à esquerda, o ciclo tem comprimento 1000: nele, ocorrem 100 ‘0’ (omitidos),
seguem-se-lhe 100 ‘1’, etc…
As listas de números nas demais bases seguem o mesmo “algoritmo”:
na coluna mais à direita, inscreve-se, de cima abaixo, os sucessivos símbolos do alfabeto (de b símbolos);
esse ciclo – de comprimento b – é depois repetido por baixo, e novamente repetido ad infinitum…;
na coluna que lhe fica à esquerda, o ciclo tem comprimento b2: nele, ocorrem b ‘0’s (omitidos), seguem-
se-lhe b ‘1’s, etc.;
na coluna que lhe fica à esquerda, o ciclo tem comprimento b3: nele, ocorrem b
2 ‘0’s (omitidos), seguem-
se-lhe b2 ‘1’s, etc…
Assim procedendo, constata-se que uma dada quantidade de objectos – seja dezoito – se representa, naquelas
bases, por, respectivamente, 18(10), 10010(2), 22(8) e 12(16). Note-se que, para não haver ambiguidade acerca da base
de numeração em que se encontra um número, ele é acompanhado duma referência – que vem a ser essa base entre
parêntesis (Ou seja: sem essa referência, desconhece-se a base em que estão escritos aqueles números: 18 poderia
estar na base 9, 10010 poderia estar na base 10, 22 poderia estar na base 3 e 12 poderia estar na base …)
Aqueles números ilustram claramente a fórmula geral acima (fazendo, é claro, as contas na conhecida base 10):
18(10) 1×101+8×10
0 = 10+8 = 18(10);
10010(2) 1×24+1×2
1 = 16+2 = 18(10);
22(8) 2×81+2×8
0 = 16+2 = 18(10);
12(16) 1×161+2×16
0 = 16+2= 18(10).
A terminar: a base 10 é aquela com que o leitor terá aprendido a lidar na primária… Já a base 2 é a que suporta
os Sistemas Digitais (inclusive os modernos computadores) – que, se tem visto, só reconhecem dois símbolos. Ela,
todavia, pois que eventualmente vem a traduzir-se em longas sucessões de ‘0’s e ‘1’s, é por demais incómoda para
os seres humanos – pelo que a praxis comum é compactá-la nas bases 8 e 16. É o que se verá a seguir…
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 78 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 79 of 101
Sistemas de Numeração / Conversão entre Bases
Os Sistemas de Numeração mais usados no contexto de Sistemas Digitais são os de base 10, 2, 8 e 16. E natural
é que se ponha a seguinte pergunta: dado um número que representa alguma quantidade numa dessas bases, como
obter o número equivalente (isto é: que representa essa mesma quantidade) em alguma outra dessas bases?
A este respeito, é trivial passar/converter da base 2 para as bases 8 ou 16, e vice-versa: números nestas duas
bases podem entender-se como representações comprimidas da representação na base 2. Vejam-se exemplos:
– Compressão de Binário em Octal ou Hexadecimal:
– seja um número escrito na base 2: 1011100(2); para o converter para a base 8, procede-se mentalmente à
repartição dos seus dígitos em grupos-de-3 (recorde: 8=23), da direita para a esquerda (e, se preciso, antepondo
‘0’s à esquerda); conclui-se substituindo cada trio de bits pelo seu equivalente na base 8 (vidé ao lado); – seja um outro número na base 2: 10110100110(2); para o converter para a base 16, procede-se mentalmente
à repartição dos seus dígitos em grupos-de-4 (recorde: 16=24), da direita para a esquerda (e, se preciso, antepondo
‘0’s à esquerda); conclui-se substituindo cada quarteto de bits pelo seu equivalente na base 16 (vidé ao lado): – Expansão de Octal ou Hexadecimal em Binário:
– seja um número escrito na base 8: 162(8); para o converter para a base 2, substitui-se cada dígito pelo trio
de bits que o representa na base 2 (e removem-se eventuais ‘0’s que venham a ocorrer à esquerda, vidé ao lado): – seja um número escrito na base 16: C03F(16); para o converter para a base 2, substitui-se cada símbolo pelo
quarteto de bits que o representa na base 2 (e removem-se eventuais ‘0’s que venham a ocorrer à esquerda): – Conversão de Octal em Hexadecimal ou vice-versa:
– como corolário: para converter um número escrito na base 8 para a base 16 (ou vice-versa), procede-se
primeiramente à sua expansão, para a base 2, e logo depois à sua compressão, para a outra base.
A passagem/conversão de qualquer base b para a base 10 logra-se como já se ilustrou: somam-se os dígitos
ponderados pelos pesos (potências-da-base b) das posições que ocupam no número… Isto é válido mesmo quando
o número tem parte “decimal”, vidé ao lado a conversão do número 351,3(7). A fórmula a aplicar é, como se intui:
...2-
2-1-
1-0
01
12
22-n
2-n1-n
1-n bdbdbdbdbd...bdbdValor
A passagem/conversão inversa – da base 10 para qualquer outra –, e no caso geral de o número dado ter partes
inteira e decimal, envolve dois algoritmos (cuja justificação é trivial); seja dado o número 2012,9765625(10)…
– para a parte inteira, 2012(10), recorre-se a divisões sucessivas pela nova base. Como exemplo, seja o caso
de se pretender convertê-lo para a base 8; faz-se o seguinte (vidé ao lado):
– divide-se 2012 por 8 – resultando o quociente 251 e o resto 4;
– divide-se esse quociente, 251, por 8 – resultando o quociente 31 e o resto 3;
– divide-se esse quociente, 31, por 8 – resultando o quociente 3 e o resto 7.
O valor representado por 2012(10) representa-se, na base 8, pelo último quociente seguido dos sucessivos restos
(pela ordem inversa em que foram sendo logrados): 3734(8).
– se se quiser converter 2012(10) para a base 16, recorre-se a divisões sucessivas – por 16! (vidé ao lado);
– se se quiser converter 2012(10) para a base 2, também se recorre a divisões sucessivas – por 2! – ou, mais
rápido, expande-se uma das representações a que se chegou (nas bases 8 ou 16) –, chegando-se a 11111011100(2);
– para a parte decimal, 0,9765625(10), recorre-se a multiplicações sucessivas pela nova base. Como exemplo,
seja o caso de se pretender convertê-lo para base 8; faz-se o seguinte (vidé ao lado):
– multiplica-se 0,9765625 por 8 – resultando uma parte inteira 7 e uma parte decimal 0,8125;
– multiplica-se essa parte decimal 0,8125 por 8 – resultando uma parte inteira 6 e uma parte decimal 0,5;
– multiplica-se essa parte decimal 0,5 por 8 – resultando uma parte inteira 4 e uma parte decimal 0.
O valor representado por 0,9765625(10) representa-se, na base 8, por um número cuja parte inteira é 0 e cuja
parte decimal vem a ser as sucessivas partes inteiras (pela ordem em que foram sendo logradas): 0,764(8) (Neste exemplo, uma multiplicação volveu-se numa parte decimal nula. Nem sempre isso sucede. Suponha-se que
0,9765625(10) é o valor exacto da intensidade de uma corrente… mas o amperímetro indica 0,97: há um erro – que advém de a
sua precisão ser 0,01=10-2
. As sucessivas multiplicações volvem-se num número interminável, 0,97(10)→0,76050…(8)! Donde a
pergunta: quando se deve parar? A precisão implícita no valor encontrado, 0,76050(8), é 8-5 0,00003; isto é, a mudança de
base melhorou a precisão – o que não pode ser: tem que se parar antes que a precisão advenha inferior a 0,01! Ora 8-1
=0,125,
8-2
=0,015 e 8-3
=0,0019… Ou seja: deve parar-se de multiplicar já quando se tiverem duas casas “decimais”: 0,76(8))
Deixa-se, é claro, ao leitor a justificação dos algoritmos acima – que ela é trivial a partir da fórmula acima…
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 80 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 81 of 101
Sistemas de Numeração / Já estamos prontos a resolver o problema
Recorde-se a questão enunciada na abertura desta sessão: qual a combinação de ‘0’s e ‘1’s – e, por conseguinte,
qual a expressão algébrica – correspondente a algum mintermo ‘mi’ ou maxtermo ‘Mj’ genérico? Ou, vice-versa,
qual o índice em ‘mi’ ou ‘Mj’ correspondente à expressão algébrica de um dado mintermo ou maxtermo? E
responder a isso sem ter que escrevinhar a Tabela de Verdade “toda”!
Neste momento, já se coleccionaram os conhecimentos necessários para uma resposta justificada. Com efeito,
ao leitor não terá certamente escapado a similaridade dos resultados logrados:
– pela convenção com que se preenchem as colunas à esquerda de uma Tabela de Verdade (vidé ao lado);
– pela fórmula a que obedece a Lista dos primeiros números inteiros (não-negativos) no sistema binário.
Em ambos – na Tabela e na Lista: a coluna mais à direita é a repetição do ciclo ‘01’; a coluna à sua esquerda é a
repetição do ciclo ‘0011’; a coluna à sua esquerda é a repetição do ciclo ‘00001111’; e a coluna à sua esquerda é a
repetição do ciclo ‘0000000011111111’.
Há que não olvidar, porém, o seguinte: no sistema binário, os ‘0’s e ‘1’s são dígitos numéricos, mas na Tabela
são bits, isto é, símbolos booleanos – que em vez de ‘0’ e ‘1’ bem poderiam ser ‘F’ e ‘V’ ou ‘I’ e ‘A’…
Mas fica nítida a vantagem de, em vez de se recorrer a tais ‘F’ e ‘V’, se preferir usar ‘0’s e ‘1’s: se se
interpretarem os ‘0’s e ‘1’s das colunas à esquerda da Tabela como dígitos numéricos, então as sucessivas linhas
(combinações das variáveis) vêm a ser as representações, em base 2, do respectivo número de ordem: 0, 1, 2...
(vidé ao lado). E, pelo exposto atrás, esse número de ordem acaba por ser a soma dos seus ‘1’s ponderados pelas
sucessivas potências-de-2 – que, da direita para a esquerda, são ‘1’, ‘2’, ‘4’, ‘8’,…
Seguem-se exemplos da questão acima, ambos pressupondo uma função de 6 variáveis {A, B, C, D, E, F}:
1. O primeiro versa ‘M45’: qual a sua expressão algébrica (sem escrever a Tabela de Verdade “toda”…)?
– O primeiro passo é converter 45(10) para a base 2 – o que advém célere pela sua conversão prévia para a base 8
(mediante divisões sucessivas por 8), e expandindo depois (para a base 2) o resultado obtido (vidé ao lado);
– Com isso, logra-se 101101(2). Daqui, é trivial deduzir a correspondente expressão algébrica: porquanto ‘M’
denota um maxtermo, será uma soma de todas as variáveis; nela, recorde-se, cada variável aparece na forma
normal ou complementar, consoante respectivamente essa variável for ‘0’ ou ‘1’ naquele número ‘101101’… O
resultado de tais considerandos será FEDCBA .
2. O segundo exemplo versa a questão contrária: qual a representação compacta de FEDCAB ?
– O primeiro passo é escrever a combinação de variáveis que corresponde àquela expressão. Porquanto ela é
um produto de todas as variáveis, trata-se um mintermo; neste, recorde-se, cada variável aparece na forma normal
ou complementar, consoante respectivamente essa variável for ‘1’ ou ‘0’… A combinação de variáveis será então
‘110101’.
– Interpretando-a como um número na base 2, 110101(2), há agora que convertê-lo para a base 10. O mais célere
será, por compactação, convertê-lo previamente para a base 8 – e, logo depois, aplicando a costumeira fórmula
(soma de potências-de-8), lograr o correspondente número na base 10; o resultado é 53. De que se conclui que a
expressão dada é o mintermo ‘m53’.
(Poderá parecer algo forçada a questão que motivou esta sessão sobre Sistemas de Numeração… – mas não o é:
nas sessões adiante, ir-se-á proceder (e justificar-se-á porquê) à violação deliberada da convenção que desde o
início presidiu à elaboração as Tabelas de Verdade: o preenchimento das colunas que representam as entradas do
circuito são a repetição “por-aí-abaixo” de ciclos contendo, cada um, alguns ‘0’s logo seguidos do mesmo número
de ’1’s... Ao cometer-se essa violação, o resultado é virem a ser outras as posições relativas das linhas da Tabela –
e natural é perguntar: aonde vai ‘parar’ a linha ‘tal’? É precisamente essa pergunta que motivou este intermezzo)
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 82 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 83 of 101
Método de Karnaugh I / 6aº Projecto
Esta sessão (e a próxima) versa o Método de Karnaugh – para simplificação de Funções Booleanas/Circuitos.
Como todas as outras sessões, ir-se-á desenrolar a partir de um Projecto concreto...
Considere um circuito com duas entradas, ‘A’ e ‘B’, em que se pode aplicar ‘0’ ou ‘1’. A saída do Circuito, ‘R’,
será ‘1’ se e só se o valor em ‘A’ for igual ou “maior” que o valor em ‘B’ (ou seja: se ‘A’ for ‘1’ ou ‘B’ for ‘0’).
A Tabela de Verdade encontra-se ao lado. A partir dela, trivial é deduzir a 1ª Forma Canónica (desdobrada por
três mintermos) e o subsequente logigrama, vidé ao lado. No sentido de chegar a um Circuito mais simples,
convém aplicar a Álgebra de Boole…
O “segredo” da simplificação, recorde-se, é procurar e associar dois termos algebricamente adjacentes, isto é:
dois termos que difiram numa só variável; num deles, ela aparece na forma Normal, e, no outro, aparece na Forma
Complementar; a sua aglutinação origina uma expressão que é precisamente a parte comum desses termos…
Analisando a expressão da 1ª Forma Canónica entre mãos, à procura de pares de termos adjacentes, oferecem-
se duas alternativas: associar os dois primeiros mintermos, ou associar os dois últimos.
– aglutinando os dois primeiros termos, e pondo B em evidência, e continuando a aplicar a Álgebra de Boole,
como se indica ao lado, chega-se a AB ;
– aglutinando os dois últimos termos, e pondo ‘A’ em evidência, e continuando a aplicar a Álgebra de Boole,
como se indica ao lado, chega-se também a AB ….
(Duas notas:
– no desenvolvimento apresentado, usa-se a Distributividade, a Complementariedade e, a propriedade de ‘+’ e
‘’ terem elementos neutros… mas o leitor é convidado a chegar à solução final em apenas dois “saltos”: usando a
Adjacência e a Redundância…
– ao invés de se ter “corrido” a escrever a 1ª Forma Canónica, poder-se-ia ter reparado que a Tabela de Verdade
de ‘R’ envolve um só ‘0’: a 2ª Forma Canónica promete ser bem mais simples de escrever! De facto, ela volve-se
em AB , precisamente a expressão obtida por simplificação da 1ª Forma Canónica…)
Comparando o logigrama inicial, desenhado a partir da 1ª Forma Canónica, com aquele para que remete a sua
simplificação, são patentes os ganhos logrados: requerem-se muito menos gates (menos 1 OR, menos 2 ANDs e
menos 1 NOT), e o próprio OR do logigrama simplificado comporta menos entradas que o OR do logigrama inicial
– e consequentemente são menores a superfície necessária para os implantar e a potência requerida para os
alimentar. Tudo apreciado, o custo é menor – e (neste caso) também é menor o atraso de propagação. Será então
compreensível dedicar algum tempo mais à simplificação de funções booleanas…
Até ao momento, a simplificação desenrolou-se tendo como suporte expressões algébricas… Mas, quiçá não
seja desperdício de tempo suportá-la sobre os assim designados Diagramas de Venn, vidé ao lado.
Em termos práticos: a primeira etapa é traçar um Universo rectangular, e, no seio dele, delimitar dois
subconjuntos/áreas que se sobreponham em parte, ‘A’ e ‘B’.
A segunda etapa é determinar os subconjuntos/áreas que representam os mintermos que perfazem a 1ª Forma
Canónica. Por exemplo, a área que representa BA volve-se no que está no Universo mas fora de ‘A’ e de ‘B’…
A terceira etapa é procurar e associar dois termos/subconjuntos adjacentes, isto é: duas áreas que tenham uma
fronteira comum. No caso, verifica-se que a área BA é adjacente a BA (é perfeitamente visível a linha em
que se encostam uma à outra) e também o é a BA …
– a aglutinação de BA e BA resulta na área B – que, atente-se à figura, tem uma fronteira comum com a
área BA ; então, podem aglutinar-se as duas áreas, o resultado vindo a ser a área AB ;
– a aglutinação de BA e BA resulta na área ‘A’ – que, atente-se à figura, tem uma fronteira comum com
área BA ; então, podem aglutinar-se as duas áreas, numa única área, AB …
Em apenas dois “saltos” gráficos, por conseguinte, se atinge a mesmíssima solução a que se chegou por
manipulações algébricas
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 84 of 101
.
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 85 of 101
Método de Karnaugh I / Mapas: Tabelas a Duas Dimensões
Da Tabela de Verdade de ‘R’, foi então possível chegar à expressão algébrica mais simples através de dois
métodos: por aplicação da Álgebra de Boole e por Diagramas de Venn. É hora de os confrontar; mas previamente,
e por mor de simplificação das asserções adiante, convém numerar as linhas da Tabela de 0-1-2-3, vidé ao lado.
O Diagrama de Venn patenteia que as áreas que foram sendo sucessivamente aglutinadas são adjacentes
fisicamente entre si, isto é: detêm uma fronteira comum! Concretamente, BA é fisicamente adjacente a BA ,
e o resultado da sua aglutinação (numa área maior,’A’) é adjacente fisicamente a BA .
E é natural a pergunta: acontecerá o mesmo na Tabela de ‘R’? A resposta é: nem sempre! De facto, também
BA vem a ser fisicamente adjacente a BA (remetem para as linhas ‘2’ e ‘3’, sem nenhuma linha entre ambas)
– mas o resultado da sua aglutinação já não é fisicamente adjacente a BA : entre as linhas ‘0’ e ‘2’ há uma linha!
Concluindo: mintermos, que nos Diagramas são fisicamente adjacentes entre si, talvez não o sejam na Tabela!
Como ultrapassar tal limitação? Comece-se por notar: a Tabela é uma representação a uma dimensão (é uma
coluna vertical); mas já os Diagramas são uma representação a duas dimensões (horizontal e vertical)… É lícito
suspeitar que aquela limitação desapareceria se se convertesse a Tabela num Mapa a duas dimensões…
Para tal, e em vez de associar, a ‘A’ e ‘B’, duas colunas, uma ao lado da outra, far-se-á o seguinte: continuará a
associar-se a ‘A’ uma coluna à esquerda, mas a ‘B’ passará a associar-se uma linha horizontal, no topo.
Assim procedendo, logra-se um Mapa (a duas dimensões), que acaba por ser um reticulado com 4 células, cada
uma remetendo para uma combinação particular das duas variáveis, ‘A’ e ‘B’. De facto, e – por mor de maior
clareza nas asserções adiante – etiquetando tais células pelos números {0, 1, 2 e 3}:
– a célula ‘0’ corresponde à combinação {A=0, B=0} (ou, mais compactamente, ‘00’): situa-se na intersecção
da linha em que A=0 com a coluna em que B=0; a Tabela de Verdade indica que, para essa combinação, R=1;
– a célula ‘1’ corresponde à combinação {A=0, B=1} (ou ‘01’) – para a qual, vidé a Tabela de Verdade, R=0;
– a célula ‘2’ corresponde à combinação {A=1, B=0} (ou ‘10’) – para a qual R=1;
– a célula ‘3’ corresponde à combinação {A=1, B=1} (ou ‘11’) – para a qual R=1.
Completa-se o Mapa inscrevendo em cada célula o valor que ‘R’ assume para a combinação de variáveis a que
ela corresponde… Os valores que ele irá conter são então precisamente os que constam na Tabela de Verdade –
com a diferença de que o Mapa se estende em duas dimensões, que não apenas a vertical…
(Por mor de comodidade, e concebendo ‘R’ como função de duas variáveis, R (A, B), convém associar a coluna
à esquerda a ‘A’ (a de maior peso) – e associar a linha de topo a ‘B’ (a de menor peso). Assim fazendo, advém
simples a transposição da Tabela para o Mapa: varre-se a Tabela, de cima abaixo – e os sucessivos valores são
inscritos no Mapa começando no canto superior esquerdo e indo da esquerda para a direita e de cima para baixo…)
E, tal como a cada ‘1’ na Tabela corresponde um mintermo de ‘R’, assim a cada ‘1’ no Mapa corresponde um
mintermo de ‘R’! Com uma nítida vantagem: mintermos algebricamente adjacentes – nomeadamente os pares
{ BA e BA } e { BA e BA } – correspondem no Mapa a pares de ‘1’s fisicamente adjacentes!
Para representar a aglutinação de mintermos, desenha-se uma oval que os cubra. Concretamente: para
representar a aglutinação das células {0, 2} (que correspondem aos mintermos BA e BA ), traça-se uma oval
– que ficará representando B ; e para representar a aglutinação das células {2, 3} (que correspondem aos
mintermos BA e BA ), traça-se uma oval – que ficará representando ‘A’.
Em termos práticos, por conseguinte, e construído o Mapa da função R (A, B),
– procura-se visualmente ‘1’s adjacentes (como são os das células {0 e 2}), e traça-se uma oval sobre eles;
– com isso, fica “de fora” o ‘1’ da célula ‘3’; reparando que ele é adjacente ao ‘1’ da célula ‘2’, traça-se uma
oval sobre eles;
– conclusão: os três ‘1’s no Mapa ficam cobertos por duas ovais. R pode então escrever-se como uma SOP – no
caso, um OR de dois termos de produto, correspondentes a essas duas ovais: AB .
(Em vez de se centrar a atenção sobre os ‘1’s, poderá antes olhar-se para os ‘0’s. Ora, existe um só ‘0’ – na
célula ‘1’; para o cobrir, basta uma oval, vidé ao lado. ‘R’ poderá então escrever-se como uma POS: AB ).
Atente-se: para chegar à solução, não foi preciso escrever nenhuma Forma Canónica – e muito menos usar as
“regras de simplificação” da Álgebra de Boole! Bastou desenhar ovais e escrever de imediato a solução!
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 86 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 87 of 101
Método de Karnaugh I / 6bº Projecto
O 6aº Projecto envolve somente duas variáveis – e natural é a dúvida: será que a adjacência gráfica ainda se
verifica para um maior número de variáveis? A resposta será investigada em torno de um outro Projecto, 6bº:
Considere um Circuito com três interruptores manipulados por outros tantos fulanos – sejam ‘A’, ‘B’ e ‘C’. A
saída, ‘Z’, será ‘1’ sse ‘B’ e ‘C’ escolherem o mesmo que ‘A’, ou ‘B’ e ‘C’ escolherem ambos o contrário de ‘A’.
Ao lado, está patente a Tabela de Verdade (cujas linhas, por mor de simplificação das asserções adiante, são
numeradas 0-1-…-7). A partir dela, deduz-se a 1ª Forma Canónica – com quatro mintermos; podem associar-se
dois a dois: { CBA e CBA } e { CBA e CBA }.
Da Tabela, pode traçar-se o correspondente Diagrama de Venn, vidé ao lado – onde é pacífico que cada um
desses pares de mintermos corresponde a pares de áreas adjacentes fisicamente.
A interrogação que se coloca é: corresponderão tais pares de mintermos a pares de linhas adjacentes na Tabela?
A resposta é clara: de maneira nenhuma! O par { CBA e CBA } remete para as linhas ‘0’ e ‘4’ – que não
são adjacentes; e o par { CBA e CBA } remete para as linhas ‘3’ e ‘7’ – que também não são adjacentes.
É hora de aplicar o procedimento já ensaiado no 6aº Projecto: transformar a Tabela de Verdade num Mapa a
duas dimensões… Em boa verdade, oferecem-se duas alternativas:
1a: continuar a associar, a ‘A’ e ‘B’, duas colunas à esquerda, uma ao lado da outra; mas associar a ‘C’ uma
linha horizontal, no topo. A transposição da Tabela para um tal Mapa, vidé ao lado, não acarreta qualquer
benefício: pares de mintermos algebricamente adjacentes não remetem para pares de células adjacentes no Mapa.
2a: continuar a associar, a ‘A’, uma coluna à esquerda; mas associar, a ‘B’ e ‘C’, duas linhas horizontais, no
topo, uma abaixo da outra. A transposição da Tabela para um tal Mapa, vidé ao lado, leva a que pares de mintermos
algebricamente adjacentes são agora mapeados em pares de células adjacentes: { CBA e CBA } são
mapeados nas duas células à esquerda, e { CBA e CBA } são mapeados nas duas células à direita.
(Por mor de comodidade – leia-se: para ser simples a transposição da Tabela para o Mapa –, e para o caso geral
de uma função depender de múltiplas variáveis, convém proceder assim: associar a coluna mais à esquerda à
variável de maior peso, e associar a linha de topo mais abaixo à variável de menor peso)
Para representar a aglutinação das células adjacentes que mapeiam CBA e CBA , traça-se uma oval –
que ficará representando CB ; e para representar a aglutinação das células adjacentes que mapeiam CBA e
CBA , traça-se uma oval – que ficará representando CB . A SOP mais simples que representa ‘Z’ é, por
conseguinte: CBCB .
(Em alternativa à aglutinação de mintermos, isto é, em vez de traçar ovais cobrindo os ‘1’s adjacentes do Mapa,
poder-se-ia antes ter aglutinado os maxtermos, isto é, traçar ovais cobrindo os ‘0’s adjacentes do Mapa… Isso teria
conduzido à POS mais simples que representa ‘Z’, vidé ao lado)
Parêntesis sobre terminologia:
– produtos de variáveis que se volvem em ‘1’ apenas para combinações das variáveis em que ‘Z’ é ‘1’ dizem-se
implicantes de ‘Z’; exemplos são-no: CBA , CBA e CB ;
(Se eles exibirem todas as variáveis, dizem-se mintermos de ‘Z’)
– somas de variáveis que se volvem em ‘0’ apenas para combinações das variáveis em que ‘Z’ é ‘0’ dizem-se
implicados de ‘Z’; exemplos são-no: CBA , CBA e CB ;
(Se eles exibirem todas as variáveis, dizem-se maxtermos de ‘Z’)
O percurso acima envolveu a exploração de duas alternativas na construção de um Mapa… Prevendo funções
de mais variáveis, é de temer que a exploração das múltiplas alternativas passíveis de conceber irá consumir muito
tempo… Donde a pergunta: qual a maneira de organizar o Mapa de modo que termos que são algebricamente
adjacentes se mapeiem em células fisicamente adjacentes?
É o que se irá abordar a seguir…
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 88 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 89 of 101
Método de Karnaugh I / Mapas de Karnaugh, a 3, 4 e 5 Variáveis
Qual a maneira de organizar o Mapa de modo que termos que são algebricamente adjacentes se mapeiem em
células fisicamente adjacentes? A resposta adiante segue a solução inventada por Karnaugh em 1953.
Na prática: associa-se, a até, seja, metade das variáveis, outras tantas colunas à esquerda; e associam-se, às
restantes, outras tantas linhas horizontais, no topo. Ao lado, exemplifica-se para 3, 4 e 5 variáveis; em particular,
no caso de 5 variáveis {A, B, C, D e E}, associam-se, a ‘A’ e ‘B’, duas colunas; e, a ‘C’, ‘D’ e ‘E’, três linhas.
(Não tem que ser assim: nomeadamente, no caso de 5 variáveis, poder-se-ia associar, a ‘A’, ‘B’, e ‘C’, três
colunas; e associar, a ‘D’ e ‘E’, duas linhas. Mas neste itinerário prefere-se usar a praxis acima)
Colunas e linhas devem ficar etiquetadas – com a designação das variáveis, seja ‘A’, ‘B’, ‘C’… Convém fazê-
lo com método. Para o concretizar, seja uma função Z (A, B, C, D e E). Às variáveis atribuem-se pesos (potências-
de-2; no caso: 16, 8, 4, 2, 1). A lista de variáveis preserva uma ordem: ‘A’ é a de maior peso – e as restantes têm
pesos sucessivamente decrescentes, até chegar a ‘E’, a de menor peso. Convém proceder do seguinte modo:
– associar a variável de maior peso (no caso: ‘A’) à coluna mais à esquerda; eventuais colunas à sua direita
devem ficar (da esquerda para a direita) associadas a variáveis de pesos sucessivamente decrescentes;
– associar a variável de menor peso (no caso: ‘E’) à linha no topo mais abaixo; eventuais linhas por cima
devem ficar (de cima para baixo) associadas a variáveis de pesos sucessivamente decrescentes.
Decidido que foi usar duas colunas e três linhas, etiquetadas {A, B} e {C, D e E}, o passo seguinte é preenchê-
las – obviamente, com ‘0’s e ‘1’s… O objectivo é explicitar todas as combinações que aquelas variáveis podem
assumir… Nisso, segue-se o assim denominado código de Gray ou código binário reflectido:
– na coluna e linha mais próximas do centro do Mapa (no caso, ‘B’ e ‘E’), escrevem-se um ‘0’ e um ‘1’; e, logo
após, reescreve-se esse par, mas invertido: um ‘1’ e um ‘0’. Por outras palavras: escreve-se o ciclo ‘01’, justapõe-se
um espelho, e logo depois a imagem reflectida desse ciclo, ‘10’. Se a coluna ou linha não advir toda ela preenchida
(como sucede com a linha ‘E’), justapõe-se um novo espelho e a imagem reflectida do que já se escreveu…
– na coluna e linha que lhe ficam imediatamente adjacentes (no caso, ‘A’ e ‘D’), escrevem-se tantos ‘0’s quanto
o tamanho do ciclo antes usado, que é 2; e, logo depois, outros tantos ‘1’s. Por outras palavras: escreve-se o ciclo
‘0011’ (e, na linha ‘D’, justapõe-se um espelho, e logo depois a imagem reflectida desse ciclo: ‘00111100’);
– e assim sucessivamente, até não ficar nenhuma coluna e linha por preencher…
Com o que as colunas {A, B} e linhas {C, D e E} ficam explicitando todas as combinações de ‘0’s e ‘1’s que
podem assumir as correspondentes variáveis – e dispostas de tal maneira que duas combinações que sejam vizinhas
entre si diferem em apenas um bit! Como exemplo, vejam-se as colunas {A, B}: 00→01→11→10.
A construção de Mapas de Karnaugh para menos (ou mais) variáveis é análoga, vidé ao lado… Entretanto, está
na hora de o leitor comparar o Mapa ao lado para 3 variáveis, com o Mapa concebido para a 2ª alternativa no
6bºProjecto: é clara a diferença das ordens por que se apresentam todas as (oito) combinações de ‘A’, ‘B’ e ‘C’!
Pelo que se adivinha algo mais complexa a transposição da Tabela de Verdade para um Mapa de Karnaugh…
Concretamente: em que célula do Mapa de Karnaugh é mapeada a linha ‘0’ da Tabela? E a linha ‘1’? etc…
Aborda-se adiante, com detalhe, como proceder para uma função de 3 variáveis – sendo implícito que para
funções de mais variáveis se trata simplesmente de generalizar esse procedimento.
– o ponto de partida é anexar (mentalmente), a cada variável, o respectivo peso: A→(4), B→(2), C→(1);
– para o que se segue, convém agora reparar que a Área Central do Mapa é um reticulado de 2 linhas por 4
colunas; a etapa seguinte é, precisamente, atribuir um peso a cada uma dessas colunas e linhas.
– seja, como exemplo, a quarta coluna; para todas as suas células, sucede {B=1 e C=0}; o peso da coluna será
a soma desses valores, ponderados pelos respectivos pesos (entretanto anexados às variáveis); concretamente, será
12+01=2 – e inscreve-se (mentalmente) este resultado na primeira célula da coluna; repetindo esse algoritmo
para todas as colunas, fica preenchida a primeira linha da Área Central do Mapa…
– considere-se, agora, a segunda linha; para todas as suas células, sucede {A=1}; o peso da linha será esse
valor ponderado pelo seu peso; no caso, será 14=4 – e inscreve-se este resultado na primeira célula da linha;
procedendo analogamente para todas as linhas, fica preenchida a primeira coluna da Área Central do Mapa…
– a etapa final é preencher as demais células: para cada uma, inscreve-se nela a soma dos pesos da linha e
coluna a que pertence; nomeadamente, na célula que fica na intersecção da coluna de peso 1 com a linha de peso 4
inscreve-se o resultado de 1+4=5…
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 90 of 101
O resultado alcançado indica precisamente onde ficam mapeadas as sucessivas linhas da Tabela de Verdade.
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 91 of 101
Método de Karnaugh I / Algoritmo de Karnaugh
É hora de usar os Mapas de Karnaugh para simplificar funções como sejam as soluções dos Projectos 3 e 4. O
ponto de partida são as respectivas Tabelas de Verdade, vidé ao lado.
1. A primeira etapa é construir o Mapa de Karnaugh para 3 variáveis – seguindo o método já descrito.
2. Segue-se o preenchimento do Mapa de Karnaugh de ‘A’ – com os valores que ‘A’ assume para as combinações
das variáveis. Para tal, repara-se na sua Tabela: tem ‘1’s nas linhas {5, 6 e 7}; explicitadas (mentalmente) no Mapa
de Karnaugh as células onde se hão-de mapear as linhas da Tabela, basta então inscrever ‘1’ apenas nas células {5,
6 e 7}… O preenchimento do Mapa de ‘V’ é análogo: reparando que a sua Tabela tem ‘0’s nas linhas {0, 1, 2 e 4},
bastará inscrever ‘0’ apenas nas células {0, 1, 2 e 4}…
3. É hora de proceder ao levantamento mental das associações de termos algebricamente adjacentes. Antes, porém,
abra-se um parêntesis, para compreender os cuidados tidos na construção dos Mapas de Karnaugh, a saber: células
algebricamente adjacentes (isto é, representando termos que diferem numa só variável: num deles, ela está na
forma complementada, e no outro está na forma normal) ficam fisicamente adjacentes! Pelo que determinar termos
algebricamente adjacentes volve-se doravante em procurar visualmente células fisicamente adjacentes!
Considerem-se, por exemplo, as células ‘5’ e ‘7’ de ‘A’ – fisicamente adjacentes e ambas contendo ‘1’. O que
elas “dizem” é que a 1ª Forma Canónica de ‘A’ inclui os mintermos RLE e ELR ; ora, estes são algebricamente
adjacentes: diferem apenas no tocante à variável ‘L’; então, podem ser aglutinados, resultando ER .
Idem para as células ‘7’ e ‘6’ de ‘A’ – também fisicamente adjacentes e contendo ‘1’. O que elas “dizem” é que
‘A’ inclui ELR e REL – que são algebricamente adjacentes; então, podem ser aglutinados, resultando EL .
Isto é: a célula ‘7’ é algebricamente adjacente às células ‘5’ e ‘6’. De facto, ela também é algebricamente
adjacente à célula ‘3’: ‘7’ e ‘3’ correspondem a ELR e RLE – que são algebricamente adjacentes. Todavia, elas
não podem ser aglutinadas – por uma simples razão: ‘A’ não inclui o mintermo RLE .
Concluindo: a célula ‘7’ é algebricamente adjacente a três células: {3, 5 e 6} – precisamente as células que lhe
são fisicamente adjacentes! Isto vale para todas as células de um Mapa de Karnaugh de 3 variáveis: qualquer uma
é algebricamente adjacente a outras três – precisamente as que lhe são fisicamente adjacentes!
(E asserções análogas valem para Mapas com mais variáveis: num Mapa de quatro variáveis, qualquer célula é
adjacente a outras quatro; e num Mapa de cinco variáveis, qualquer célula é adjacente a outras cinco)
Poderá o leitor contestar: reconhece que a célula ‘1’, por exemplo, é adjacente às três células {0, 3 e 5}; mas já
a célula ‘2’ parece que é adjacente a, apenas, duas células, {3 e 6}: qual é a terceira célula adjacente a ‘2’? A este
respeito, há que alargar o conceito de células fisicamente adjacentes. Recorde-se a menção a espelhos feita a
propósito do código binário reflectido. Células simétricas a um espelho serão doravante consideradas adjacentes.
Imaginando a construção do Mapa de Karnaugh de três variáveis, há um espelho que vem a ser inserido,
concretamente aquando do preenchimento da linha correspondente à variável de menor peso. Ora, em relação a
esse espelho, a célula ‘0’ é simétrica de ‘2’ – pelo que doravante também essas duas células se dirão adjacentes.
Isto dito, os pares de células de ‘A’ (com ‘1’s) que são fisicamente adjacentes vêm a ser: {5 e 7} e {7 e 6}; e os
pares de células de ‘V’ (com ‘0’s) que são fisicamente adjacentes vêm a ser: {0 e 4}, {0 e 1} e {0 e 2}.
4. Tendo discernido visualmente os pares de células fisicamente adjacentes, há que seleccionar, entre eles, quais os
necessários (e suficientes) para cobrir todos os ‘1’ de ‘A’ (ou todos os ‘0’s de ‘V’) – e, sempre que seleccionar um
deles, desenhar uma oval que os cubra. O Mapa de ‘A’ irá exibir duas ovais (e o de ‘V’ três ovais), vidé ao lado.
5. A etapa final é a escrita das correspondentes expressões algébricas.
Para o efeito, usa-se um método análogo ao usado para escrever Formas Canónicas; a diferença reside em que,
agora, há que saber escrever as expressões correspondentes, não a mintermos ou maxtermos, mas a ovais – que
representam aglutinações de mintermos ou maxtermos algebricamente adjacentes.
Seja o caso da oval cobrindo as células {5 e 7} de ‘A’; posto que contêm ‘1’, elas remetem para mintermos, isto
é: para produtos. Para ambas, E=1 e R=1; mas L=0 na célula ‘5’ e L=1 na célula ‘7’. Aquela oval irá então remeter
para um produto de todas as variáveis excepto aquela cujo valor se não mantém sempre o mesmo (que é ‘L’): irá
remeter para ER . Dito isto, será pacífico ao leitor escrever as expressões simplificadas de ‘A’ e de ‘V’…
Na próxima sessão, ir-se-ão refinar as últimas três etapas, em particular a penúltima, deveras crítica.
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 92 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 93 of 101
Método de Karnaugh II / 7aº Projecto
Até agora, Projecto a Projecto, e decidida a codificação das entradas e saídas, o que se fez depois foi escrever a
Tabela de Verdade… Na sessão anterior, a etapa seguinte foi transpô-la para um Mapa de Karnaugh… Mas, para
bom entendedor, na resolução de um Projecto genérico não é obrigatório começar por escrever a Tabela de
Verdade para depois a transpor para um Mapa de Karnaugh; tal como para as outras sessões, irá partir-se de um
Projecto concreto para exemplificar essa praxis (ficando o leitor desde já convidado a, partindo dos enunciados
dos Projectos 3 e 4, preencher directamente os respectivos Mapas, sem antes escrever as correspondentes Tabelas).
Considere um júri com quatro membros {B3, B2, B1, B0}; cada um tem à sua disposição um botão com que
aprova ou reprova o candidato… Se e só se a maioria estiver a favor da aprovação, uma lâmpada verde acende.
Em caso de empate, o presidente, ‘B3’, tem voto de qualidade. Pretende-se um circuito para controlar a lâmpada…
O Mapa de Karnaugh – para 4 variáveis {B3, B2, B1, B0} – encontra-se ao lado; como seria expectável,
– à esquerda, dispõem-se duas colunas, representando os dois membros do júri de maior índice, {B3, B2}
(ficando à esquerda o de maior índice, ‘B3’}; no topo, dispõem-se duas linhas, representando os dois membros do
júri de menor índice, {B1, B0} (ficando em baixo o de menor índice, ‘B0’};
– célula a célula, confere-se quais os “valores que aí tomam as variáveis”; ‘V’ volve-se ‘1’ (i.e., a lâmpada
verde acende) apenas em oito células: quando três ou mais das variáveis, ou ‘B3’ e alguma outra, forem ‘1’…
(Repare o leitor: assim procedendo, é irrelevante conhecer a numeração das células no seio do Mapa)
Conhecido o Mapa de Karnaugh, faz-se o levantamento mental das associações de termos adjacentes:
– associando verticalmente ‘1’s que se encontrem na mesma coluna, logram-se quatro ovais, vidé ao lado:
{7, 15}→ 012 BBB ; {9, 13}→ 013 BBB ; {11, 15}→ 013 BBB ; {10, 14}→ 013 BBB ;
– associando horizontalmente ‘1’s que se encontrem na mesma linha, logra-se cinco ovais, vidé ao lado:
{12, 13}→ 123 BBB ; {13, 15}→ 023 BBB ;{ 14, 15}→ 123 BBB ; {9, 11}→ 023 BBB ; {10, 11}→ 123 BBB
Estas nove ovais cobrem apenas ‘1’s; por outro lado, todos os ‘1’s acabam por ficar dentro de alguma oval.
Pelo que se pode inferir que a função pode exprimir-se como um OR dos termos acima (não necessariamente
todos)… Ao fazê-lo, porém, advém uma expressão em que alguns deles se poderão aglutinar:
– ovais verticais: 013 BBB + 013 BBB → 03BB ; 013 BBB + 013 BBB → 13BB ;
– ovais horizontais: 123 BBB + 123 BBB → 23BB ; 023 BBB + 023 BBB → 03BB ; 123 BBB + 123 BBB → 13BB .
Repare-se: 03BB corresponde à aglutinação de duas ovais adjacentes! Idem para 13BB e 23BB . Pretendendo-
se a expressão mais simples para a função, há então que refinar a praxis seguida até agora: após levantar
mentalmente as ovais correspondentes a pares de células adjacentes, há que investigar se algumas há que sejam
adjacentes entre si; encontradas duas ovais, traça-se uma oval que as cubra (e – muito importante! – doravante
ignoram-se as ovais que lhe deram origem)!
No caso entre mãos, as ovais cobrindo células adjacentes ficam então reduzidas a:
03BB ←{9, 11, 13, 15}; 13BB ←{10, 11, 14, 15}; 23BB ←{12, 13, 14, 15}; 012 BBB ←{7, 15};
Resumindo:
– a função assume ‘1’ em 8 células – o que significa 8 mintermos (que são produtos das 4 variáveis);
– todas elas se podem aglutinar em pares adjacentes – resultando 9 termos de produto com 3 variáveis;
– destes, alguns podem aglutinar-se – resultando 3 termos de produto com 2 variáveis.
Todos eles são produtos – que assumem o valor ‘1’ apenas para combinações de variáveis para as quais a
função também se volve em ‘1’ (Diz-se que a função cobre esses produtos). De acordo com a terminologia já
introduzida na precedente sessão, conclui-se então: a função tem um total de 20 (=8+9+3) implicantes.
As células podem aglutinar-se num total de quatro ovais que já se não podem aglutinar mais. Aos
correspondentes 4 implicantes dá-se nome de implicantes primos.
A solução final vem a ser uma selecção desses quatro implicantes primos: determinam-se, entre as
correspondentes (4) ovais, quais as necessárias e suficientes para cobrir todos os ‘1’s da função, vidé ao lado.
Adiante, aborda-se como, no sentido de chegar à solução mais simples, fazer adequadamente essa selecção.
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 94 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 95 of 101
Método de Karnaugh II / Estudo de caso SOP: 3 Variáveis
Para lograr a expressão mais simplificada para uma função, há que operar uma selecção apropriada, entre os
seus implicantes primos. A abordagem do método de Karnaugh para tal irá desenrolar-se em torno de casos
concretos. O primeiro caso é uma função de 3 variáveis, 012 B,B,BZ , cujo Mapa de Karnaugh se indica ao lado.
Pressuposto que se quer a expressão algébrica da função sob a forma de uma SOP, a primeira etapa é proceder
ao levantamento mental dos seus implicantes primos. Percorre-se o Mapa, linha a linha e coluna a coluna,
começando pelo canto superior esquerdo até terminar no canto oposto; e, para cada célula com um ‘1’, discernem-
se os implicantes primos que a cobrem e, mentalmente, para cada um, desenha-se a pertinente oval. No caso,
– seja a célula ‘0’; posto que existem 3 variáveis, ela terá certamente 3 células adjacentes, a saber: {1, 2 e 4};
posto que as células {2 e 4} contêm ‘0’, só existe uma oval possível (cobrindo a célula ‘0’): {0, 1}, vidé ao lado;
– considere-se agora a célula ‘1’; as células que lhe são adjacentes são: {0, 3 e 5}; mas só as células {0 e 5} é
que contêm ‘1’ – pelo que só existem duas ovais possíveis (cobrindo a célula ‘1’): {0, 1} e {1, 5};
– considere-se agora a célula ‘5’; as células que lhe são adjacentes são: {1, 4 e 7}; mas só as células {1 e 7} é
que contêm ‘1’ – pelo que só existem duas ovais possíveis (cobrindo a célula ‘5’): {1, 5} e {5, 7};
– considere-se enfim a célula ‘7’; as células que lhe são adjacentes são: {3, 5 e 6}; mas só a célula ‘5’ é que
contém ‘1’ – pelo que só existe uma oval possível (cobrindo a célula ‘7’): {5, 7}.
A cada oval corresponde uma expressão algébrica que se constrói de maneira parecida com a dos mintermos:
forma-se um produto de variáveis. Para cada variável: se ela for ‘1’ para todas as células dessa oval, ficará na
forma normal; se for ‘0’ para todas as células dessa oval, ficará na forma complementar; se não tiver sempre o
mesmo valor em todas as células dessa oval, ela será excluída desse produto.
Como exemplo de aplicação, veja-se a oval {1, 5}: a expressão algébrica será 01BB , pois {B2=0 na célula ‘1’,
mas B2=1 na célula ‘5’→exclui-se ‘B2’; B1=0→usa-se forma complementar; B0=1→usa-se forma normal}.
No total, por conseguinte, há a considerar três ovais/implicantes primos:
{0, 1}→ 12 BB ; {1, 5}→ 01BB ; {5, 7}→ 02BB
Serão necessários todos estes implicantes primos? Em caso contrário, quais a ignorar? A resposta irá basear-se
no seguinte: a solução tem que cobrir todos os ‘1’s, não pode nenhum ficar de fora!
A este respeito, existe uma diferença notável entre as células {1 e 5} e {0 e 7}: concretamente,
– veja-se o caso da célula ‘1’: existem duas ovais / implicantes primos ( 12 BB e 01BB ) cobrindo-a! E, para a
célula ‘5’, o mesmo se verifica: existem duas ovais / implicantes primos ( 01BB e 02BB ) cobrindo-a!
Isso significa uma certa liberdade na escrita da solução. Para cobrir a célula ‘1’, pode escolher-se entre
12 BB e 01BB ; e, para cobrir a célula ‘5’, pode escolher-se entre 01BB e 02BB ;
– veja-se agora o caso da célula ‘0’: só existe uma oval / implicante primo ( 12 BB ) cobrindo-a! E, para a
célula ‘7’, o mesmo se verifica: só existe uma oval / implicante primo ( 02BB ) cobrindo-a!
Isso significa que, no tocante às células {0, 7}, não há liberdade na escrita da solução. Para cobrir a célula
‘0’, não há outra escolha possível: tem que se escolher 12 BB . Idem para a célula ‘7’: tem que se escolher 02BB .
A um implicante primo que tem obrigatoriamente que fazer parte da solução – pois para alguma das células
que ele cobre não há outra maneira de a cobrir! –, dá-se o nome de implicante primo essencial.
(Acentue-se: o que se desenvolveu acima é um exercício puramente mental; porém, por mor de o leitor o
acompanhar, apresenta-se ao lado uma carta dos implicantes primos e das células que eles cobrem…)
Há então dois implicantes primos essenciais. Pode então começar-se já a escrever: V = 12 BB + 02BB +…
Os “…” com que ‘V’ finda significam que quiçá tenha que se adicionar algo mais… É o que se irá ver a seguir.
Em termos práticos, todavia, o que há a fazer é tão só isto: quando – e apenas quando – se discernir um
implicante primo essencial, há que, de imediato, traçar a correspondente oval no Mapa de Karnaugh. No caso,
– tendo analisado a célula ‘0’ – e descoberto que só há uma oval que a cobre – traça-se a oval {0, 1}!
– e tendo analisado a célula ‘7’ – e percebido que só há uma oval que a cobre – traça-se a oval {5, 7}!
Ao fazê-lo, porém, vêm a ficar cobertos todos os ‘1’s da função! E, porquanto se procura a expressão mais
simplificada para ‘V’, deve ignorar-se a oval {1, 5}…
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 96 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 97 of 101
Método de Karnaugh II / Estudo de caso SOP: 4 Variáveis
Na continuação do estudo do método de Karnaugh para conseguir a expressão mais simplificada para uma
função, aborda-se agora o caso de uma de 4 variáveis, D C, B, A,Z , vidé Mapa de Karnaugh ao lado.
Pressuposto que se quer a expressão algébrica da função sob a forma de uma SOP, a primeira etapa é percorrer
o Mapa; e, para cada célula com ‘1’, discernir os implicantes primos – sob a forma de ovais – que a cobrem…
– no tocante à célula ‘0’, ela é coberta por duas ovais: {0, 1, 3, 2} e {0, 2, 4, 6};
– no tocante à célula ‘1’, é coberta por outras duas ovais: {0, 1, 3, 2} e {1, 9};
– no tocante às células ‘3’ e ‘2’, são cobertas por outras duas ovais: {0, 1, 3, 2} e {3, 2, 7, 6};
– e assim por diante…
(Não esquecer: as asserções acima significam que doravante se ignoram as ovais {0, 1}, {3, 2}, {0, 2} e {1, 3},
pois estão cobertas por {0, 1, 3, 2}; idem para as ovais {4, 6}, {0, 4} e {2, 6}, pois estão cobertas por {0, 2, 4, 6};
e idem para as ovais {7, 6} e {3, 7}, pois estão cobertas por {3, 2, 7, 6})
Prosseguindo o varrimento das células com ‘1’, as conclusões podem ser listadas mentalmente numa carta dos
implicantes primos e das células que eles cobrem, vidé ao lado. Ora, é patente que nenhum dos implicantes primos
é essencial: qualquer uma das onze células com ‘1’ pode ser coberta por ao menos duas ovais!
Nenhum implicante primo ser essencial significa que não há nenhum implicante primo que tenha mesmo que
fazer parte da solução! A solução volver-se-á, então, numa sábia escolha: há que seleccionar, entre os implicantes
primos, o conjunto mais simples que cobre todas as células com ‘1’ do Mapa!
– as células com ‘1’ a cobrir são as seguintes: {0, 1, 2, 3, 4, 6, 7, 9, 12, 13, 15};
– pretendendo-se a expressão mais simples para a função, será natural começar por concentrar a atenção numa
célula que seja coberta por uma das ovais maiores (no caso, as que cobrem 4 células). Seja, nomeadamente, o caso
da célula ‘0’; ela é coberta pelas ovais {0, 1, 3, 2} e {0, 2, 4, 6}; escolhendo a primeira delas, far-se-á o seguinte:
– traça-se de imediato, no Mapa, uma oval cobrindo as células {0, 1, 3, 2}; e escreve-se ...BAZ ;
– com o que, doravante, só falta cobrir as células {4, 6, 7, 9, 12, 13, 15}; de novo, será natural centrar a atenção
numa célula coberta por uma das ovais maiores – o que sucede com as células {4 e 6}. Ora, a célula ‘4’ é coberta
por {0, 2, 4, 6} e a célula ‘6’ é coberta por {0, 2, 4, 6} e {3, 2, 7, 6}; qualquer destas ovais cobre duas células do
conjunto que falta cobrir – pelo que quiçá seja indiferente escolher uma ou outra… Optando por {0, 2, 4, 6}…
– traça-se de imediato, no Mapa, uma oval cobrindo as células {0, 2, 4, 6}; e escreve-se DABAZ ;
– com o que, doravante, só falta cobrir as células {7, 9, 12, 13, 15\}; para as cobrir, oferecem-se as seguintes
ovais: {3, 2, 7, 6}, {1, 9}, {4, 12}, {7, 15}, {12, 13}, {13, 9} e {13, 15}; o desafio é seleccionar, entre elas, o
conjunto mais simples que cobre aquelas cinco células que falta cobrir! Ora, relativamente a elas,
– {3, 2, 7, 6} cobre apenas a célula {7};
– {1, 9} cobre apenas a célula {9};
– {4, 12} cobre apenas a célula {12};
– {7, 15} cobre as células {7 e 15};
– {12, 13} cobre as células {12 e 13};
– {13, 9} cobre as células {9 e 13};
– {13, 15} cobre as células {13 e 15};
Uma escolha possível será {9 e 13}, {7, 15} e {4, 12} – ou seja: DCBBCDDCADABAZ
Há várias outras soluções possíveis. Ao lado, listam-se três, e o leitor poderá deduzir outras…
É hora de confrontar o caso presente com os Mapas de Karnaugh já discutidos:
– no Mapa do “7aº Projecto”, há 4 implicantes primos, todos essenciais – pelo que todos farão parte da solução;
– no Mapa do “Estudo de caso SOP: 3 Variáveis”, há 3 implicantes primos, dos quais dois são essenciais e o
restante é não essencial – e que acabou por ser ignorado na escrita da expressão algébrica da função;
– no Mapa do “Estudo de caso SOP: 4 Variáveis”, não é essencial nenhum dos nove implicantes primos –
acabando a solução por suportar-se em apenas cinco deles, e portanto ficando ignorados os restantes quatro.
Resta, então, o caso de um Mapa com implicantes primos essenciais e alguns não-essenciais, dos quais nem
todos sejam ignorados quando houver que escrever a expressão simplificada da função… É o que se vai abordar a
seguir…
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 98 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 99 of 101
Método de Karnaugh II / Estudo de caso SOP: 5 Variáveis
Considere-se a função de 5 variáveis ED,C,B,A,Z cujo Mapa de Karnaugh é dado ao lado.
A primeira etapa é percorrer o Mapa, começando pelo canto superior esquerdo até terminar no canto oposto…
No tocante à célula ‘0’, e havendo 5 variáveis, ela (como também qualquer uma outra) terá 5 células adjacentes;
são elas, é claro, as células {1 e 8}, mas também as células {2, 4 e 16} – porquanto cada uma, relativamente a
algum dos espelhos a considerar no Mapa (aliás ao lado assinalados), é simétrica da célula ‘0’.
Porém – e pressuposto que se deseja a expressão algébrica da função sob a forma de uma SOP – há que ter em
conta que nem todas elas comportam ‘1’: só há a considerar, como candidatas a aglutinar à célula ‘0’, o conjunto
{1, 2, 4 e 16}. A primeira dedução é: com a célula ‘0’ podem formar-se as ovais {0, 1}, {0, 2}, {0, 4} e {0, 16}.
(Abra-se um parêntesis… Posto que, na construção de uma SOP, são relevantes somente as células com ‘1’, é
comum operar uma simplificação no Mapa: deixam-se em branco as células com ‘0’, vidé ao lado)
Uma pergunta se põe agora: estará alguma daquelas quatro ovais coberta por uma oval mais gorda?
Veja-se a oval {0, 1}. A resposta àquela pergunta volve-se em encontrar alguma oval que lhe seja adjacente – e
o próprio leitor conseguirá descobrir por si que lhe são adjacentes as duas ovais {3, 2} e {16, 17}: com efeito, cada
uma destas, relativamente a algum dos espelhos, é simétrica de {0, 1}; pelo que se deve ignorar doravante a oval
{0, 1} – e só reter as ovais {0, 1, 3, 2} e {0, 1, 16, 17}. E a pergunta regressa: estará alguma destas coberta por
uma oval mais gorda? A resposta é: não – ou seja: {0, 1, 3, 2} e {0, 1, 16, 17} denotam implicantes primos!
Será algum essencial? Eis como o discernir: para cada um, verifica-se se alguma das suas células só pode ser
coberta por ele. Quanto a {0, 1, 3, 2}, constata-se: as células {0 e 1} são também cobertas por {0, 1, 16, 17}; ‘3’ é
também coberta por {3, 11}; e ‘2’ é também coberta por {3, 2, 19, 18}; ou seja: {0, 1, 3, 2} não é essencial..
Quanto a {0, 1, 16, 17}, constata-se: as células {0 e 1} são também cobertas por {0, 1, 3, 2}; ‘16’ é também coberta
por {16, 18}; e ‘17’ é também coberta por {17, 21}; ou seja: {0, 1, 16, 17} também não é essencial.
Veja-se agora a oval {0, 2}. Há duas ovais – concretamente, {6, 4} e {16, 18} – que lhe são adjacentes: cada
uma, relativamente a algum espelho, é simétrica de {0, 2}; pelo que se deve ignorar doravante {0, 2} – e só reter as
ovais {0, 2, 6, 4} e {0, 2, 16, 18}. E de novo há que perguntar: estará alguma destas ovais coberta por uma mais
gorda? A resposta é: sim! {16, 18, 22, 20} é adjacente a {0, 2, 6, 4}, e {6, 4, 22, 20} é adjacente a {0, 2, 16, 18} –
pelo que se deve ignorar doravante {0, 2, 6, 4} e {0, 2, 16, 18} – e só reter a oval {0, 2, 6, 4, 16, 18, 22, 20}. E, de
novo: estará ela coberta por uma mais gorda? A resposta é: não – ou seja: ela representa um implicante primo!
Qual a sua expressão algébrica? É EB – pois {B=0 e E=0 (nas 8 células da oval)→usa-se forma complementar;
mas ‘A’, ‘C’ e’ D’ não assumem sempre o mesmo valor naquelas 8 células →excluem-se ‘A’, ‘C’ e’ D’ }.
Parêntesis: Revendo os casos estudados, observa-se que ovais de 2, 4 ou 8 células representam implicantes onde
faltam, respectivamente 1, 2 ou 3 das variáveis da função; vice-versa, e generalizando: para lograr um implicante
onde faltam n variáveis da função, é necessário aglutinar 2n células, em que cada uma é adjacente a outras n.
Entretanto, convém inquirir: será ele essencial? Para o discernir, repete-se a praxis acima: verifica-se se ao
menos uma das suas células só pode ser coberta por ele. Constata-se: a célula ‘0’ é também coberta por {0, 1}; a
célula ‘2’ é também coberta por {2, 3}; a célula ‘6’ é também coberta por {6, 14}; mas quanto à célula ‘4’, não há
outra maneira de a cobrir – do que se infere: o implicante primo em causa é mesmo essencial! O que significa que
a expressão da função será ...EBZ – e, ipso facto, já não há lugar à interrogação “como cobrir as células {0,
2, 6, 4, 16, 18, 22, 20}?”. Para o salientar visualmente, traça-se de imediato sobre o Mapa a oval que as cobre –
ficando claro que, doravante, só há que discernir como cobrir as células {1, 3, 11, 14, 15, 27, 30, 31, 29, 17, 21}.
Deixa-se ao leitor a tarefa de as ir percorrendo – e concluir da existência dum implicante primo essencial mais:
{11, 15, 27, 31} – pois não há outro modo de cobrir a célula ‘27’. Pelo que será ...BDEEBZ – e, ipso
facto, já não há que inquirir “como cobrir as células {11, 15, 27, 31}?”. Para o salientar visualmente, traça-se a
oval que as cobre – clarificando que, doravante, só há que saber como cobrir as células {1, 3, 14, 30, 29, 17, 21}
com alguns dos (8) implicantes primos restantes. Quanto a estes, poderá o leitor mesmo deduzir que nenhum é
essencial, pelo que lhe resta operar uma selecção entre eles, vidé ao lado duas alternativas.
Seja permitido findar este estudo de caso com uma verdade de La Palisse: o desenvolvimento acima deverá ser
bastante para certificar o leitor que, para saber aplicar bem o algoritmo de Karnaugh, há que praticar bastante…
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 100 of 101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 101 of 101
Método de Karnaugh II / 7bº Projecto
Em todos os Projectos até agora abordados, e tendo decidido quais as entradas a ter em conta num circuito,
nunca houve dúvidas sobre qual deveria ser a sua saída – para qualquer que fosse a combinação dos valores
assumidos por aquelas entradas. Isso nem sempre acontece: há circuitos para os quais se verifica o que em
Sistemas Lógicos/Digitais se designa comummente de “Indiferenças” (Don´t care, no jargão anglo-saxónico).
Quiçá ajude perceber essa eventualidade concretizá-la através de um Projecto apropriado, vidé enunciado ao
lado.
É pacífico o preenchimento da Tabela de Verdade, vidé ao lado – onde é patente que ficaram três casos por
especificar; de facto, e pressuposta a codificação ao lado, qual a saída que o Circuito deverá produzir…
– para as combinações {S=0, G=1} – que devem ser entendidas como um Homem Grávido?
– e para as combinações {I=0, G=1} – que devem ser entendidas como Grávido com menos de 10 anos?
Essas combinações das entradas são, em termos práticos, inexpectáveis; então, não há que especificar a saída
do circuito para essas combinações: para quê fazê-lo, se correspondem a situações que na vida real se espera que
nunca irão ocorrer? Circuitos assim designam-se máquinas incompletamente especificadas; o mesmo se dirá de
circuitos em que, ao menos para uma combinação das entradas passível de ocorrer, a respectiva saída é irrelevante.
Para uma combinação de entradas assim – em que a saída do circuito é irrelevante –, a Tabela de Verdade é
preenchida com um ’X’. A especificação da função volve-se então em dois ‘’s: um listando os mintermos (isto é,
as combinações de entradas para as quais a função assume o valor ‘1’), e um outro listando as combinações para as
quais o valor da função é irrelevante. No caso,
1,3,5d0,4,7mA
O preenchimento do Mapa de Karnaugh é feito como habitualmente – a diferença sendo que, nas células
correspondentes a combinações para as quais o valor da função é irrelevante, se inscreve um ‘X’, vidé ao lado.
Uma questão óbvia se põe agora: como aplicar o algoritmo de Karnaugh, quando o Mapa comporta ‘X’s? A
resposta é: aplica-se exactamente como foi explicado – com o cuidado de tratar cada ‘X’ como um “joker”: se, por
mor de obter uma expressão mais simples para a função, convier tratá-lo como ‘1’, então ele é tratado como um ‘1’
(e se convier tratá-lo como ‘0’, então ele é tratado como um ‘0’).
No caso, e visando lograr a SOP mais simples,
– é óbvia a oval {0, 4}; mas há que perguntar: estará ela coberta por uma mais gorda? A resposta depende do
valor que se atribuir aos ‘X’s nas células {1, 5}: se eles forem tratados como ‘1’s, então é claro que existe uma
oval mais gorda – e por conseguinte remetendo para um implicante mais simples –, concretamente {0, 1, 4, 5}.
Quanto a esta, não há nenhuma oval mais gorda que a cubra – de que se conclui que representa um implicante
primo; pode aliás verificar-se que ele é essencial… Então, para o salientar visualmente, traça-se de imediato sobre
o Mapa a oval que as cobre.
– similarmente, que valor atribuir aos ‘X’s para cobrir a célula ‘7’ com uma oval o mais gorda possível? A
resposta é óbvia: se todos os ‘X’s forem tratados como ‘1’s, chega-se à oval {1, 3, 5, 7} – que obviamente
representa um implicante primo essencial.
A SOP mais simples será então: GIA .
Se, em alternativa, se pretender a POS mais simples, é óbvia a oval {2, 6}; mas há que perguntar: será possível
cobri-la com uma mais gorda? O leitor poderá por si deduzir que não: as ovais que lhe são adjacentes são {0, 4} –
que está preenchida com ‘1’s –, e {3, 7} – que comporta um ‘1’. Independentemente do valor a atribuir aos ‘X’s,
não é pois possível aglutinar {2, 6} com {0, 4} ou {3, 7}: a POS mais simples será então: GIA .
Materializada esta expressão num Circuito, nada impede que alguém lhe force nas entradas as combinações
impossíveis ({S=0, G=1} e {I=0, G=1}). Qual será então a saída do circuito? Não custa discerni-lo: será ‘1’…
Um parêntesis final: neste Projecto, os ‘X’s vieram todos a ser considerados como ‘1’s – mas essa não é a regra
geral: Projectos haverá onde dará mais jeito considerar alguns ‘X’s como ‘1’s (e os restantes como ‘0’s).