101
Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 1 of 101

PartI_all, de um documento da ist

Embed Size (px)

DESCRIPTION

Muito boa brochura que explica muito bem alguns conceitos sobre sistemas digitais

Citation preview

Page 1: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 1 of 101

Page 2: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 2 of 101

Page 3: PartI_all, de um documento da ist

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.

Page 4: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 4 of 101

Page 5: PartI_all, de um documento da ist

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)

Page 6: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 6 of 101

Page 7: PartI_all, de um documento da ist

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ó!

Page 8: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 8 of 101

Page 9: PartI_all, de um documento da ist

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.

Page 10: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 10 of 101

Page 11: PartI_all, de um documento da ist

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...

Page 12: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 12 of 101

Page 13: PartI_all, de um documento da ist

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...

Page 14: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 14 of 101

Page 15: PartI_all, de um documento da ist

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

Page 16: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 16 of 101

Page 17: PartI_all, de um documento da ist

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...

Page 18: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 18 of 101

Page 19: PartI_all, de um documento da ist

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.

Page 20: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 20 of 101

Page 21: PartI_all, de um documento da ist

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ó…

Page 22: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 22 of 101

Page 23: PartI_all, de um documento da ist

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.

Page 24: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 24 of 101

Page 25: PartI_all, de um documento da ist

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?

Page 26: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 26 of 101

Page 27: PartI_all, de um documento da ist

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.

Page 28: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 28 of 101

Page 29: PartI_all, de um documento da ist

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…

Page 30: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 30 of 101

Page 31: PartI_all, de um documento da ist

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…

Page 32: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 32 of 101

Page 33: PartI_all, de um documento da ist

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

Page 34: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 34 of 101

Page 35: PartI_all, de um documento da ist

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.

Page 36: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 36 of 101

Page 37: PartI_all, de um documento da ist

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);

Page 38: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 38 of 101

Page 39: PartI_all, de um documento da ist

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.

Page 40: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 40 of 101

Page 41: PartI_all, de um documento da ist

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.

Page 42: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 42 of 101

Page 43: PartI_all, de um documento da ist

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…

Page 44: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 44 of 101

Page 45: PartI_all, de um documento da ist

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…

Page 46: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 46 of 101

Page 47: PartI_all, de um documento da ist

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…

Page 48: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 48 of 101

Page 49: PartI_all, de um documento da ist

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)

Page 50: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 50 of 101

Page 51: PartI_all, de um documento da ist

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!

Page 52: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 52 of 101

Page 53: PartI_all, de um documento da ist

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…

Page 54: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 54 of 101

Page 55: PartI_all, de um documento da ist

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.

Page 56: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 56 of 101

Page 57: PartI_all, de um documento da ist

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

Page 58: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 58 of 101

Page 59: PartI_all, de um documento da ist

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…

Page 60: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 60 of 101

Page 61: PartI_all, de um documento da ist

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.

Page 62: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 62 of 101

Page 63: PartI_all, de um documento da ist

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.

Page 64: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 64 of 101

Page 65: PartI_all, de um documento da ist

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…

Page 66: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 66 of 101

Page 67: PartI_all, de um documento da ist

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).

Page 68: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 68 of 101

Page 69: PartI_all, de um documento da ist

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…

Page 70: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 70 of 101

Page 71: PartI_all, de um documento da ist

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.

Page 72: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 72 of 101

Page 73: PartI_all, de um documento da ist

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…

Page 74: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 74 of 101

Page 75: PartI_all, de um documento da ist

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)

Page 76: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 76 of 101

Page 77: PartI_all, de um documento da ist

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…

Page 78: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 78 of 101

Page 79: PartI_all, de um documento da ist

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…

Page 80: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 80 of 101

Page 81: PartI_all, de um documento da ist

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)

Page 82: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 82 of 101

Page 83: PartI_all, de um documento da ist

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

Page 84: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 84 of 101

.

Page 85: PartI_all, de um documento da ist

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!

Page 86: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 86 of 101

Page 87: PartI_all, de um documento da ist

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…

Page 88: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 88 of 101

Page 89: PartI_all, de um documento da ist

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…

Page 90: PartI_all, de um documento da ist

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.

Page 91: PartI_all, de um documento da ist

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.

Page 92: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 92 of 101

Page 93: PartI_all, de um documento da ist

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.

Page 94: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 94 of 101

Page 95: PartI_all, de um documento da ist

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}…

Page 96: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 96 of 101

Page 97: PartI_all, de um documento da ist

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…

Page 98: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 98 of 101

Page 99: PartI_all, de um documento da ist

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…

Page 100: PartI_all, de um documento da ist

Vitor M. P. Vargas / IST Sistemas Digitais (Part I) Page 100 of 101

Page 101: PartI_all, de um documento da ist

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).