Você está na página 1de 77

Traduzido do Inglês para o Português - www.onlinedoctranslator.

com

Lógica programável e de direção

quando tu tiveres eliminado


o impossível, o que resta, por mais improvável que seja, deve ser a
verdade.

- Senhor arthur conan doyle

Introdução

No Capítulo 3, você aprendeu os métodos para realizar funções booleanas como redes multiníveis. Uma rede
multinível reduz potencialmente a complexidade da fiação da implementação de uma função booleana Você também
conheceu nossa primeira porta complexa, a porta AND-OR-Invert. Neste capítulo, você aprenderá sobre blocos de
construção personalizáveis e complexos que podem realizar funções booleanas com menos componentes e fios:

- Projeto com estilos de implementação de circuitos estruturados baseados em memórias e lógica de array
programável. Apresentamos PALs/PLAs e ROMs, que são blocos de construção digitais de propósito geral
particularmente úteis que podem ser personalizados para implementar funções específicas. Eles são usados para
implementar funções complexas em muito pouco espaço.

- Projete com blocos de construção lógicos diferentes das portas lógicas tradicionais. Neste capítulo,
apresentamos vários novos componentes: multiplexadores, seletores, decodificadores e demultiplexes.
São funções booleanas que geralmente são mais fáceis de visualizar como redes de comutação do que
tabelas ou portas lógicas. Você aprenderá os métodos de design para usá-los em sistemas digitais. Além
disso, veremos as portas tri-state e open-collector, classes de lógica cujas saídas são sempre 0 e 1.

- Problemas de palavras. Desenvolveremos um procedimento de design para transformar descrições em


inglês em implementações de hardware e ilustraremos o método com vários estudos de caso.

Índice

4.1.Matrizes programáveis de lógica Ga teste


4.2.Além do Gat Lógico Simples es
4.3.Problema de palavra lógica combinacional EM
Revisão do Capítulo W
Exercício s

[Tabela de Conteúdo s[]Próximo] [Anterior]

Este arquivo foi atualizado pela última vez em 13/07/96 às


21:42:49. randy@cs.Berkeley.edu ;
[Início] [Próximo] [Anterior ]

4.1 Matrizes Programáveis de Portas Lógicas

Os fabricantes de circuitos integrados (t IC) têm tido um sucesso fenomenal em empacotar milhões de elementos de
comutação de transistores em microcomputadores. Vemos como esta tecnologia pode ser explorada para reduzir a
contagem de componentes do sistema digital nesta seção.

4.1.1 Motivação para Lógica Programável

A chave é encontrar blocos de construção lógicos que sejam de propósito geral o suficiente para serem usados em muito
projetos. É fácil identificar blocos de construção geralmente úteis com estruturas primitivas, como um punhado de
implementações de uma estrutura AND-OR-Invert. Mas esses blocos de construção reduzem a contagem de componentes
apenas uma quantidade modesta. Poderíamos obter uma redução significativa se pudéssemos usar um bloco de
construção que contivesse o equivalente a centenas de portões. Mas como deve ser esse bloco de construção?

A solução engenhosa para este dilema é organizar as portas AND e OR(goarteNsOR ou NAND)s em uma estrutura de
array generalizada cujas conexões podem ser personalizadas ou programadas para implementar funções específicas
Esses blocos de construção lógicos de propósito geral são chamados (PpArL matriz osgramável
logic) ou PLAs (matriz lógica programável)ys.

4.1.2 PALs e PLAs

A Figura 4.1 mostra um diagrama de blocos geral para um componente lógico de array. Esses componentes são
dispositivos de entrada/múltiplas saídas, normalmente organizados em um subarranjo AND e um subarranjo
OR. O subarray AN mapeia as entradas em termos de produtos específicos, dependendo da conexão
programada OR subarray pega esses termos e os OU juntos para produzir a soma final de produtos expre

ExemploUm dispositivo PLA pode implementar uma coleção modesta de funções de complexidade considerável.
Essa complexidade é determinada pelo número de entradas, o número de produtos (tneurmsber de portas AND) e o
número de saídas (tsnumber of OR gate) que o PLA pode - Apoio, suporte.
Por exemplo, um ar lógico programável em campo TTL típico (raFyPLA) pode ter 16 entradas, 48 termos de produto e 8
saídas. Em um pacote com 24 pinos de dados, este PLA contém o equivalente a quarenta e oito portas AND de entrada e
oito portas OR de 48 entradas. Quando você considera que um pacote SSI de 12 pinos de dados oferece apenas quatro
portas de 2 entradas, você pode ver a eficiência real do pacote de lógica de matriz.

Suponha que você queira implementar as seguintes equações booleanas, definaUMA ed


, Bpara
, randC:

Podemos caracterizá-los pelo número de varia(bUMAle,B s,C),o(s) termo(s) exclusivo(s) do produtoUMA, , , ,


), e a(s) função(ões)F0,F1,F2,F3). Estes correspondem ao número de entradas para a matriz AND
o número de saídas do AND arr(aw y que são as entradas para o OR ar)ra, y e o número de
saídas da matriz OR. Para implementar essas funções, você deve usar um dispositivo PLA de 3
entradas, 5 termos de produto e 4 saídas.

Uma maneira conveniente de descrever as funções é por meio de uma matriz de personalidade, uma pequena
reformulação da tabela, mostrada na Figura 4.2. Ele descreve quais literais de entrada devem ser conectados a cada
porta AND do produto desejado ter(m1 = variável declarada,=0variável complementada,=-sem conexão)n, e quais
deles devem ser combinados em OR para formar o ou(t1pu= final tsconnect o termo do produto para OR, 0 = sem
conexão)n. As linhas determinam os termos do produto; colunas representam entradas e saídas. Um termo produ
participa de mais de uma função se houver mais de um 1 em sua linha nas colunas de saída da matriz de
personalidade.

Na Figura 4.2, é fácil ver que, , eUMAsão usados por mais de uma função.

Representação equivalente ao portãoA Figura 4.3 e a Figura 4.4 mostram diagramas equivalentes de porta do
implementação de nossas funções de exemplo em lógica de matriz programável.
A Figura 4.3 mostra a matriz antes da programação, com todas as conexões possíveis entre as entradas e pré-
cabeadas "de fábrica". Você personaliza o array usando um dispositivo de hardware chamado programm
Os detalhes do processo de programação dependem do circuito integrado específico. Uma técnica
frequentemente u coloca fusíveis entre todas as entradas possíveis para um portão e o próprio portão. Um
fusível é uma conexão elétrica especialmente projetada para quebrar ou "explodir" sob alta corrente. Ao colocar
uma alta corrente nos fusíveis selecionados, o hardware do programador interrompe essas conexões. O
programador analisa suas equações booleanas para determinar quais fusíveis devem ser queimados e quais
devem estar sozinhos. A Figura 4.4 mostra o mesmo array após ter sido personalizado.

A Figura 4.5 fornece uma notação comumente usada para representar a topologia da lógica de array. Você deve
interpretar os fios únicos que entram nas portas AND e OR como representando várias entradas. Os X representam
os locais dos fusíveis.
ExemploAgora vamos considerar o projeto de um gerador de funções de três entradas. O circuito
deve implementar as funções lógicas AND, OR, NAND, NOR, XOR e XNOR:
A Figura 4.6 mostra como esta coleção de funções é implementada em um PLA. oUMAteBrC mãe snd são
compartilhado entre mais de uma função de saídaUMAioBn.Cé usado para implementarFt1, E, eF5, XOR, enquanto
é usado porF4, NOR, eF6, XNOR.

4.1.3 A diferença entre PLAs e PALs

A Figura 4.5 implica que os subarrays AND e OR podem ser personalizados da maneira que o design desejar.
Dispositivos com essa generalidade são chamados de lógica programável a(rP raLyAss).

No entanto, nem toda lógica programável suporta programação total. Por exemplo, os dispositivos de log de
matriz programável de memórias monolíticas (icPAL) têm uma matriz AND programável, mas o
as conexões entre os termos do produto e portas OR específicas são conectadas. O número de entradas de produto
para uma porta OR geralmente é limitado a 2, 4, 8 ou 16.

Há uma troca fundamental em dispositivos PAL entre a complexidade das funções em termos de termos de
produto por porta OR e o número de funções independentes que o dispositivo pode implementar. Quanto
maiores os fan-ins da porta OR, menos saídas funcionais do PAL.

Por exemplo, uma família PAL pode incluir três dispositivos alternativos, cada um com 16 entradas e 16 termos pro,
mas diferindo em sua organização de matriz OR: quatro portas OR com 4 entradas cada, duas portas OR com 8
entradas cada e uma porta OR com 16 entradas. Os subarrays AND permanecem completamente programados A
Figura 4.7 mostra uma organização PAL de 4 entradas/4 termos de produto/2 saídas com uma escolha fixa particular
do array OR. Nesse caso, as portas OR são limitadas a dois termos de produto cada.

A principal diferença entre PLAs e PALs é que os primeiros podem aproveitar os termos de produção compartilhados
e os últimos não. Vamos pensar novamente no projeto do gerador de função do subse anterior Como nenhum termo
de produto pode ser compartilhado entre as saídas PAL, as funções precisam de um PAL que possa calcular 16
termo(s) de produto duplicados.d. Um PLA precisa calcular apenas 14 termos de produto, o número de termos
exclusivos. Para dispositivos com recursos internos comparáveis, um PLA deve ser implementado uma coleção de
funções mais complexa do que um PAL se muitos termos do produto forem compartilhados.

Por outro lado, o PLA será mais lento devido às resistências relativas das conexões programáveis e
cabeadas. As conexões programáveis baseadas em fusíveis têm maior resistência do que as conexões
com fio do suporte. Assim, os sinais passam por duas conexões programáveis no PLA, incorrendo em
atrasos piores do que a única conexão programável no PAL.

4.1.4 Exemplos de Projeto

Examinamos dois exemplos de projeto diferentes nesta subseção, um conversor de código e um comparador de
magnitude. Eles ilustram as várias alternativas para implementar a lógica combinacional em termos de PALs,
PLAs ou lógica multinível.
Conversor de código BCD para GrayNeste exemplo, projetaremos um conversor de código que mapeia um número B de 4 bits
em um número de código Gray de 4 bits. Cada número em uma sequência de código Gray difere de seu predecessor em
exatamente 1 bit. O circuito tem quatro entradasUMAvocêB ss,CD, representando o número BCD, e
quatro saídas,W X Y Z, a palavra de código Gray de 4 bits.

A tabela verdade e os K-maps para a lógica de tradução são mostrados na Figura 4.8 e na Figura 4.9, respectivamente

Os principais implicantes estão circulados na Figura 4.9, resultando nas seguintes equações reduzidas:
Como não há termos de produto compartilhados, essas funções são mais adequadas para uma implementação PAL

A implementação é mostrada na Figura 4.10.

O PAL contém quatro portas OR de 4 entradas. Você pode ver que muitas das portas AND estão sendo desperdiçadas
A mesma função poderia ser implementada com um PLA menos complexo, mas seria mais lento.

A abordagem lógica programável implementa as funções em um único pacote de circuitos integrados,


considerando uma implementação equivalente com portas TTL discretas. Vamos nos restringir apenas a
portas NAND e inversores.

O circuito de porta discreta resultante é mostrado na Figura 4.11.

A figura incluía uma lista de peças no canto inferior direito. Nós rotulamos portas do mesmo pacote com o mesmo
número. O circuito usa 15 portas particionadas em cinco pacotes. Claramente, a abordagem da lógica do programa
tem uma grande vantagem. Claro, apenas uma das quatro portas do pacote 5 está sendo u deixando três portas que
poderiam ser usadas por outros circuitos.

Comparador de magnitude de dois bitsNossa próxima tarefa é projetar um circuito comparador. O circuito recebe t
nsB=CD
números binários de 2 bits como entradas, denotadosUMAbByandCD, e calcula as quatro funçõesUMA
(EQ),AB¦CD(NE),AB<CD(LT),eAB>CD(GT).
A Figura 4.9 mostra os K-maps para as quatro funções com implicantes primos em caixa. Isso produz as
seguintes equações reduzidas para as funções de saída:

As funções usam 14 termos de produto, dos quais 2 te(rmsand ) são usados duas vezes. Como os termos do produto são
compartilhados, uma implementação baseada em PLA é mais atraente do que o método baseado em PAL. O PLA
programado é mostrado na Figura 4.10.
Esta implementação de chip único se compara muito favoravelmente com uma implementação multichip formada
usando portas TTL SSI.

Não é incomum que uma implementação PAL ou PLA substitua 5 a 15 pacotes TTL de 10 a 30 gat. É por isso que
muitos projetos do mundo real fazem uso extensivo de dispositivos lógicos programáveis. É uma maneira eficaz de
reduzir a contagem de componentes de uma implementação e, portanto, seus custos de fabricação,

[Início] [Próximo] [Anterior ]

Este arquivo foi atualizado pela última vez em 13/07/96 às


21:42:49. randy@cs.Berkeley.edu ;
[Início] [Próximo] [Anterior ]

4.2 Além das Portas Lógicas Simples

Os Capítulos 2 e 3 concentraram-se no projeto de funções lógicas combinatórias com portas simples. P e


PLAs são um método eficiente de pacote de IC para projetar com portas simples.

Nesta seção, vamos além das portas simples, concentrando-nos em como fazer uso de blocos de construção lógicos
de nível superior e mais complexos. A ideia é fazer mais trabalho, ou seja, computar uma função mais complexa sem
aumentar o número de conexões com o mundo exterior. Esses componentes lógicos são frequentemente chamados
de integração de média escala ou MSI. Um componente MSI típico implementa uma função que exigiria de 10 a 100
portas discretas para fazer a mesma coisa. Se você puder usar esses componentes como blocos de construção
lógicos de propósito g, geralmente poderá obter uma implementação com um pacote menor. Como exemplos
desses tipos de componentes, examinaremos as funções do multiplexador/seletor e as funções do desmultiplexador

Também veremos duas classes de blocos de construção que não se comportam exatamente como portas lógicas. A função
da primeira classe de componentes nem sempre pode ser descrita facilmente como equações lógicas. Devemos pensar
sobre eles em termos de redes de comutação. Exemplos desses tipos de circuitos incluem portas de transmissão CM e
memorando somente leitura (riR esOMs).

A segunda classe é diferente de portas simples porque têm valores de saída diferentes de Estas são portas tri-
state e de coletor aberto. Começamos examinando os comutadores de transistor de forma mais detalhada.

4.2.1 Lógica de comutação e direção

A Seção B.4 no Apêndice B descreve o comportamento elétrico básico dos transistores MOS e como eles podem ser
combinados para formar portas lógicas padrão. Nesta subseção, examinamos formas alternativas de implementar funções
lógicas como redes de elementos de comutação CMOS, com base em portas de transmissão CMOS.

As redes de comutação fornecem uma alternativa às portas discretas para a construção de sistemas
digitais. Eles operam direcionando entradas para saídas por meio de uma rede de caminhos de comutação
em vez de computar uma função booleana. Você já viu isso antes no Capítulo 2. A rede de comutação para
portas padrão como NAND e NOR roteiam 0 ou 1 para a saída sob o controle do data inp

Para redes de comutação de uso geral, o componente primitivo é a porta de transmissão CMOS. construído a partir de um
interruptor normalmente aberto (transisto cnhMOS)r conectado em paralelo com um interruptor normalmente fechado
(transisto pMOS)r, com sinais de controle complementares. A Figura 4.14 mostra a chave, o transistor e as representações
esquemáticas da porta de transmissão. Uma porta de transmissão está passando igualmente por 0 ou 1 quando um sinal
de controle externo é ativado.
As portas de transmissão não são equivalentes em função a nenhuma das portas lógicas que você encontrou Elas não
estão disponíveis para designers de lógica TTL, apenas para aqueles que projetam diretamente na tecnologia CMOS

Então, por que se preocupar com portões de transmissão? Eles são interessantes porque algumas funções digitais importantes
podem ser implementadas em muito menos transistores se usarmos portas de transmissão. Estes são geralmente divertidos que
podem ser reformulados em termos de redes de direção, como s(hm s sobre isso no Capítulo 7 e
antes
se para

circuitos multiplexadores/desmultiplexadores, que abordaremos na Seção 4.2.2.

Portão de Transmissão CMOSAs portas de transmissão fornecem uma maneira eficiente de construir a lógica de
direção. Lógica de direçãocircuitossão circuitos que roteiam entradas de dados para saídas com base nas configurações
dos sinais de controle. Como exemplo de tal circuito, considere o seguinte. O circuito tem dois dadosEU0 inp
anutds,
EU1, uma única saídaZt, e uma entrada de controleSt. A função dirigirEUs0 paraZquandoSé 0 eEU1 aZquandoSé
1.

Chamamos isso de função seletora ou multiplexador. Funciona como um interruptor em um pátio ferroviário. Duas partes
independentes de trilha devem ser mescladas em uma única trilha. De maneira semelhante, muitas vezes precisamos mesclar
caminhos de sinal na lógica digital.
A lógica de direção implementa o seletor conforme mostrado na Figura 4.15.S Wih
sesserted, o mais baixo
porta de transmissão conduz e a porta superior nãoEU.1Sugerido paraZ. QuandoSfica inativo, a porta
de transmissão superior conduz e a porta inferior quebra a conexãoEUti0onis. Assim dirigido paraZ.
Essa função de multiplexador ou seletor será descrita com mais detalhes na próxima subseção.

Fazemos duas observações sobre a lógica de direção. Primeiro, para qualquer combinação das entradas de controle, t deve
ser pelo menos um caminho condutor de uma entrada para a saída. Em outras palavras, os nós de saída sempre serão
acionados por alguma entrada. Não deve ser deixado flutuando. Em segundo lugar, nunca deve haver mais de um caminh
condutor entre as entradas e uma saída. Se mais de um caminho pudesse existir, os caminhos poderiam tentar direcionar
nó de saída para o lógico 1 enquanto outro o direcionava para o lógico 0. O conflito resultante não produziria nem um
lógico 1 nem um lógico 0 no nó de saída.

Damos um segundo exemplo de lógica de direção na Figura 4.16. Esta rede dirige seu únicoZin1piu pésSpara
é afirmado umZd0 quandoSé não declarado. Essa função é chamada de demultiplexador porque executa a operação
reversa de um multiplexador. Multiplexadores e demultiplexadores são usados para implementar múltiplas
conexões entre componentes, conforme mostrado na Figura 4.16.
A figura mostra os caminhos de conexão entreUMA eeanndZeBeS. Quando as configurações de controle são alteradas
os caminhos conectamUMAparaSeBparaZ. Mais uma vez, a estrutura se parece com os interruptores em um pátio
ferroviário.

Há um problema no circuito da Figura 4.16. Viola uma de nossas condições para uma rede funcionando
corretamente. Quando Sé afirmadoEU, é direcionado paraZ1, mas que valor é colocado na saídaZp0u?t
Infelizmente, a saídaZt0 não é 0 nem 1, mas flutua. O mesmo problema existeZs1fowrhenSé não
declarado. Uma solução com o comportamento correto é dada na Figura 4.16.

Quando a entrada dirigeZ to1, um portão de transmissão adicional orienta umZ00.toFazemos algo semelhante
para saídaZ1 quando a entrada direcionaZpara0.

Um exemplo de lógica de direção complexaAgora estamos prontos para ver um exemplo de projeto mais complexo do
que a lógica de direção pode fazer. Vamos examinar uma função chamada circuito Tally. Um circo TallyNitin hp
asuts
(EU1,EU2, ,EUn) eN+1 saídas (Zero, Um,N , ). O circuito conta o número de suas entradas que são um
lógica 1. Apenas uma das saídas é ativada a qualquer momento: se nenhuma das entradas for 1, a saída Zero será
ativada; se um for 1, então a saída Um será afirmada e assim por diante.
A Figura 4.19 fornece a tabela verdade e a implementação em nível de porta para uma função Tally de entrada
única. É a entrada únicaEUt1 e as duas saídas Zero e Um. A tabela verdade deixa claro que Zero é sim o
complemento deEUf1 e Um é idêntico tEUo1.

Como implementaríamos essa função com lógica de direção? Lembre-se de que a lógica de direcionamento é um bom
roteamento de entradas para saídas sob a direção dos sinais de controle, portanto, devemos repensar a definição de
circuito Tally nesses termos. Embora possa parecer contra-intuitivo no início, na lógica de direção é bastante aceitável usar
sinais de dados para controlar as portas de transmissão.

A Figura 4.20(a) mostra a rede de comutação para uma função Tally de entrada única implementada a partir de porta
de transmissão. As entradas são 0 aEUd1 1is, usado como sinal de controle, e as saídas são rotuladas como Z e One.
Cada saída é conectada a duas portas de transmissão controladas por sinais complementares que garantem que a
rede esteja bem formada: não é possível que ambas as portas de transmissão estejam conduzindo ao mesmo tempo
se seus sinais de controle forem complementares.

Chamaremos a parte superior de porta de transmissão "direta" e a inferior de porta de transmissão "diagonal".
Dependendo da configuração dos sinais de controle, as entradas podem ser direcionadas diretamente pela rede ou
podem ser deslocadas diagonalmente. Os caminhos de direção podem ser vistos mais claramente em t
diagrama de blocos da Figura 4.2(0b).

QuandoEU1 não é afirmado, as portas diretas estão conduzindo e as portas diagonais não. T a entrada 0
direciona para a saída Um enquanto 1 direciona para Zero. Isso é mostrado na Figura 4.21.

QuandoEU1 é afirmado, o contrário é o caso. As portas retas são não condutoras, enquanto as portas
diagonais conduzem. Isso faz com que um 1 seja direcionado para a saída Um e um 0 para a saída Zero é
mostrado na Figura 4.22.

A implementação do portão de transmissão é significativamente mais complexa do que a implementação do portão


simples, portanto não oferece nenhuma vantagem real. No entanto, torna-se mais atraente quando aumentamos o
número de insumos. Vamos voltar nossa atenção para um circuito Tally de duas entradas. A tabela verdade e logi
A implementação do portão é dada na Figura 4.23.

A implementação da porta de transmissão baseia-se no projeto do gabinete de entrada única para o circuito de duas
entradas. Em essência, decompomos um circuito Tally de duas entradas em duas entradas de rede de entrada única
em cascata para o segundo estágio são as saídas Zero e Um do primeiro estágio. A implementação da transmissão
ga é dada na Figura 4.(2a4). Figura 4.24 (b) dá sua representação em diagrama de blocos.
Os quatro casos diferentes das duas entradas e os caminhos resultantes através da rede de comutação são
mostrados na Figura 4.25. A Figura 4.(2a5) mostra o que acontece quando ambas as entradas são 0. As portas
retas são habilitadas, definindo a saída Zero para 1 e as saídas Um e Dois para 0.
A Figura 4.25(b) mostra a situação em queEUn 1 é 0 eEU2 é 1. O primeiro estágio passa enquanto o
segundo estágio desloca-se diagonalmente. Os sinais intermediários Um e Zero são ajustados para 0 e 1, respectivamente
e estes são deslocados para cima pelo segundo estágio. A saída One do segundo estágio é ativada enquanto as saídas th e
Zero são 0.

A Figura 4.25(c) ilustra o que acontece quandoEUe1nis 1 eEU2 é 0. A rede se comporta simetricamente. As saída
intermediárias Um e Zero lêem 1 e 0, respectivamente; estes são passados diretamente através do segundo
estágio.

O caso final é mostrado na Figura 4(.2d5) , quando ambas as entradas são 1. Todas as portas diagonais de
transmissão estão habilitadas. As saídas Um e Zero no primeiro estágio são acionadas para 1 e 0, respectivamente.
são deslocados mais uma vez pelo segundo estágio, produzindo 1, 0, 0 nas saídas Dois, Um e Zero.

A implementação da porta de transmissão ainda parece mais complicada do que a abordagem usando portas
discretas. Mas qual método é mais eficiente no transistor? A rede de comutação utiliza 2 portas invertidas e 10
portas de transmissão: um total de 24 transistores. O método do portão na verdade usa 26 transistores! como o
contamos. A porta NOR de duas entradas é implementada com quatro transistores. Assumimos que a porta AND
é implementada com um inversor e uma porta NAND de duas entradas, para mais seis transistores, a porta XOR
consiste na verdade de quatro portas NAND de duas entradas interconectadas. São 16 transistores a mais. O
total é 26. Assim, a rede de comutação utiliza menos transistores do que a rede de portas implementa a mesma
função. A vantagem seria ainda mais pronunciada para um circuito de três ou quatro Tally.

4.2.2 Multiplexadores/Seletores

A seguir, examinamos dois tipos muito importantes de blocos de construção digitais. Eles estão muito no sp da lógica de
direção descrita. Um multiplexador/seletor escolhe uma das muitas entradas para direcionar para sua saída sob a direção
de suas entradas de controle. Se a entrada para um circuito pode vir de vários lugares, o multiplexador é uma maneira
possível de afunilar as múltiplas fontes seletivamente para uma única entrada. Em contr, o demultiplexador pega sua única
entrada de dados e a direciona para uma de suas muitas saídas sob as entradas de controle de direção. Este é um bloco de
construção útil para distribuir uma saída para um dos vários não diferentes, desde que apenas um deles seja acionado a
qualquer momento.

Mais formalmente, um multiplexador, om rux, é uma rede lógica combinacional com 2n entradas de dados ntcso
, controle

entradas e uma saída de dados. Dependendo das configurações das entradas de controle, uma única entrada de
dados é selecionada e direcionada para a saída. Os 0's e 1's nas entradas de controle formam o índice binário de
th que deve ser conectado à saída. Como um multiplexador não faz nada além de selecionar uma conexão de
entrada para a saída, os termos multiplexador e seletor são usados alternadamente.

Um demultiplexador, oudemux, direciona sua entrada de dados para exatamente uma de suas muitas saídas. Este
é o inverso do multiplexD r.ecoderé outro nome para o componente. Usamos o último termo quando
entrada de dados é considerada um sinal especial usado para habilitar um dos muitos componentes semelhantes. Isso é útil, por
exemplo, em um sistema de memória para permitir que um dos vários chips de memória coloque seus fios de dados
compartilhados.
A Figura 4.26 mostra como esses componentes podem ser usados em um subsistema somador simples. Existem
fontes para cada um dos inp do somadorUMAutasndBe dois destinos para a soma resultante. A entrada de controleS
a escolhe entre o inpUMA ut0sandUMA1, enquantoSb seleciona entreBn0 eB1. Por exemplo, para
= 0 eSb = 1. Colocando o sinal apropriadoS
adicionarUMA0 aB1, seríamosSta osn, a soma pode ser
conectado a um dos aceno de saídaSe
0 ouS1.

Conceito geralA Figura 4.27 fornece uma tabela verdade "funcional" à esquerda e uma tabela tru mais convencional à direita
para um multiplexador com duas entradas de dadosEU0tsa, ndEU1, e uma entrada de controleUMA t,. Ambos
comunicar a mesma informação, mas a tabela verdade funcional é muito mais fácil de escrever. Ele comunica a ideia
de que estamos passando uma entrada selecionada para a saída, independente do valor da entrada. Reapresentado
como uma equação booleana, o multiplexador de duas entradas pode ser descrito como

SeUMAé deixado não declarado, a saída é acionadaEU0b.ySeUMAé afirmadoEU,1 é direcionado para a saída.

Os multiplexadores são descritos pelo número de entradas de dados, pois você pode inferir o número de entradas de controle a
partir disso. Assim, um multiplexador 2:1 possui duas entradas de dados, uma saída de dados e uma entrada de controle,
enquanto um multiplexador 4:1 possui quatro entradas de dados, uma saída e duas entradas de controle. A Figura 4.28 contém
diagramas de blocos para multiplexadores 2:1, 4:1 e 8:1. As equações booleanas para os multiplexadores 4:1 e 8:1 generalizam a
partir da equação para o multiplexador 2:1:

A expressão mais geral para o multiplexador, baseada na forma de mintermo do Capítulo 2, é


Implementações alternativasComo vimos na subseção anterior, existem duas maneiras de implementar a função
multiplexadora 2:1: portas lógicas ou portas de transmissão. Essas alternativas generalizam para funções com maior
número de entradas.

As equações booleanas nos dão diretrizes para a implementação da porta lógica.

A Figura 4.29 apresenta o esquema da porta para o multiplexador 4:1. O circuito requer quatro 3-inp(utog etes
n/D
) t, uma porta de 4 entradas e duas inverter(rosne para cada entrada de controle)u,ta total de sete
para cada entrada de dados

portas discretas. Supondo que eles sejam implementados na lógica CMOS, o circuito requer 36 transistores de transistores para
cada uma das quatro portas de 3 entradas, 8 transistores para a porta de 4 entradas e 2 transistores para cada um dos dois
inversores. Um multiplexador 8:1 requer oito portas de 4 entradas, uma porta de 8 entradas e três portas inversoras. (86
transistores). Em bibliotecas de portas padrão, como o catálogo TTL, o maior multiplexador é limitado a 16 entradas. Isso se deve
em parte à limitação da embalagem (nwse precisa de 16 pinos de dados, 4 pinos de controle, 1 saída
pino e energia e terra, um total de 23 p ) em parte para fan-ins limitados do circuito interno (tr1y6-
portas OR de entrada são difíceis de encontrar devido a problemas elétricos devido a alta)f.an-ins

Compare isso com a implementação do portão de transmissão da Figura 4.30.

Quando a entrada de controleUMAareiaBestão ambos em 0, as portas de transmissão na primeira linha conduzemEU0 não é
dirigido para a saídaZt. O portão de transmissão no controle da segunda linhaUMA d abnyd o portão no terceiro
linha controlada porBtambém estão conduzindo, mas nenhum caminho completo é estabelecido entre umZ p.uItf e
UMAé 0 eBé 1, a segunda linha de portas de transmissão é ligada, steEU1erçãoZ g. Outra transmissão
portas também estão conduzindo, mas há apenas um caminho completo das entradas para a saídaUMA 1he
uti.sW
eBé 0, o caminho através da terceira linha de portas está conduzindo e, quando ambas as entradas de controle estão
conduzindo, o caminho para a saída passa pela quarta linha. Para o multiplexador 4:1, são necessárias apenas oito
portas de transmissão e dois inversores, totalizando 20 transistores. Para funções como o multiplexador, as portas
de transmissão fornecem uma implementação mais eficiente do transistor do que g discreto

É possível construir umNn:1 multiplexador de vários multiplexadores com menos entradas. A Figura 4.31 mostra uma
implementação de um multiplexador 8:1 de dois multiplexadores 4:1 e um multiplexador 2:1. O primeiro sta
seleciona uma entrada do ranEUpercorrerEU3 e um deEU4 aEU7 usando a entrada de controleBareia C. O
multiplexador de segundo estágio seleciona qual saída do primeiro estágio deve ser fechada para a entrada de
controle de saída finalUMA.
Esta não é a única maneira de construir um multiplexador 8:1, como mostra a Figura 4.32.

Faz uso de quatro multiplexadores 2:1 e um multiplexador 4:1. ControlesCO igcnhaol está entre as entradas pares ou
ímpares dos multiplexadores 2:1. O sinal de controle restanteUMA naalsn,dB, escolha entre as saídas
dos multiplexadores de primeiro nível.

Mesmo que a biblioteca de componentes o limite a multiplexadores com um número restrito de entradas, essas técnicas podem ser
usadas para construir multiplexadores complexos a partir de blocos de construção de multiplexadores mais primitivos

Multiplexador como um bloco de construção lógicoOs multiplexadores certamente fornecem uma função útil para implementar a
seleção de sinal, mas ainda não mostramos como um multiplexador implementa um bloco de construção de lógica de propósito geral.
Na verdade, um multiplexador é uma maneira de implementar uma tabela verdade diretamente no hardware. Um multiplexador às
vezes é chamado de tabela de consulta de hardware.

Considere a função F(UMA,B,C) =m0 +m2 +m6 +m7. Podemos implementá-lo diretamente por um 8:1
multiplexador como mostrado na Figura 4.33.
As variáveis de entradaUMA,B, eCestão conectados às entradas de seleção do multiplexador. Nós simplesmenteEUiwtiore1
se a função incluir mintermi. Todas as outras entradas são definidas como 0. Para o exemplo EU0le, ,EU2,EU6, eEU7 são
definido como 1, enquantoEU1,EU3,EU4, eEU5 são definidos como 0.

Para ver como isso funciona, vamos considerar o cUMAas=eB=C=0. Isso corresponde ao mintem rm
0. Dado
essas entradas de seleção, o multiplexador irá selecionarEUe0cat ndFé definido como 1. SeUMA=B=0 eC=1, entãoEU1 é
selecionado e Fé definido como 0. Isso continua para todas as outras combinações das entradas.

Podemos usar um multiplexador ainda menos complexo para implementar essa função. Podemos usar duas variávei
digamosUMAeB, para as entradas de seleção e conecte as entradas de dados do multiplexador a 0, 1 e a terceira
variávelCou seu complemento.

Considere a tabela verdade paraFr dado na Figura 4.34. está organizado de forma tF haist dividido em grupos de
linhas que compartilham os mesmos valoresUMAoafndB.Fpode então ser expresso como 0, 1 ou uma funçãoCnforf cada um
dos quatro grupos de linhas definidos pelos valoresUMAoafndB. Isso é equivalente a reescreverF g como

Já podemos implementarFt com um multiplexador 4:1, conforme mostrado na Figura 4.36.


A estratégia apresentada aqui é fácil de generalizar. Por selnect1invgariables como entradas de controle para um multiplexador
de 2n entradas, podemos implementar qualquer função booleana voaf riables. Cada escolha de valores para o n-1 variáveis
seleciona exatamente duas linhas da tabela verdade. As duas linhas da tabela verdade possuem exatamente os quatro valores
possíveis, conforme mostrado na Figura 4.36.

Se as linhas da tabela verdade forem ambas 0 ou ambas 1, a entrada será a constante 0 ou 1, respectivamente. Caso
contrário, as linhas da tabela verdade correspondem à variável ou seu complemento, e a entrada deve ser conectada à
variável ou seu complemento, respectivamente.

Como outro exemplo, considere a funçãoG íonUMA,B,C,D)cujo K-map é dado na Figura 4.36.

Como é uma função de quatro variáveis, pode ser implementado por um multiplexador de oito entradas. Vamos ver
UMA,B, eCcomo entradas de controle. Isso imediatamente divide o K-map em oito pares de entradas do K-map, cada
uma compartilhando valores comuns para as três entradas de controle. Cada par pode ser substituído pela função
apropriada da variável restanteD bl,eas mostrado no modelo de tabela verdade da Figura 4.36. EU
essência, estamos reescrevendo a equação:

O multiplexador que realiza esta função é mostrado na Figura 4.38.


Um multiplexador 8:1 está disponível em um único pacote TTL. Agora vamos supor que um inversor adicional seja
necessário para formar o complementoDo, entregando no máximo dois pacotes para implementar a função. Usando os
métodos usuais para formar uma soma minimizada de produtos implementadosF io, nwoef get

Isso requer cinco portas de 3 entradas e uma porta de 5 entradas mais quatro inversores, um total de 10 portas disponívei
talvez de três a quatro pacotes TTL. Internamente, o multiplexador pode usar muito mais portas, mas em t de pacotes TTL
(ou elementos de biblioteca de células padrão ) tso uso de um bloco de construção complexo como o
multiplexador pode ser mais eficiente.

Componentes do Multiplexador TTLQuando você examina catálogos de componentes digitais reais, os dispositivos
encontrados são ligeiramente diferentes daqueles descritos até agora. As versões do catálogo possuem uma ou mais co-
entradas cuja finalidade é habilitar o dispositivo para operação.

A Figura 4.39 contém formas esquemáticas para os multiplexadores TTL 74157 e 74158 quad 2:1. As saídas
i e dos quatro multiplexadores são rotuladas com os índices de 1 a 4. O inpUMAutasnadrBe, e a saída éS.
Os quatro multiplexadores compartilham o mesmo select(liSnE eL). A SEL desempenha o mesmo papel que
entrada de controleUMAna Figura 4.27. oUMAentradas orientam para thS e sai se SEL for 0, e thBe é dirigir para o Sde
se SEL for 1. Observe que o 74158 possui saídas lógicas baixas/negativas ativas. Uma entrada selecionada em uma lógica 1 (
afirmado em log positivo) ic será exibido como uma lógica (0 afirmado em log negativo) ic

A entrada restante é o sinalG al Este é um sinal de habilitação compartilhado entre todos os multiplexadores em t
pacote. A notação de bolha nos diz que a habilitação está ativa baixa: o dispositivo é habilitado quando um 0
(afirmado em log negativo) icis colocado emG. Para o 74157, um dispositivo desabilitado tem todas as suas saídas driv low
(não declaradas em log)ic positivo. O oposto é verdadeiro para o 74158: quando está desabilitado, todas as saídas são
direcionadas para hig(não afirmado em log negativo ) i.cEste comportamento é resumido na tabela de verdade
da Figura 4.39.

4.2.3 Descodificador/Desmultiplexador

Um demultiplexador é o oposto de um multiplexador: uma única entrada é fechada para exatamente uma das saídas
também é um excelente dispositivo para gerar sinais mutuamente exclusivos. Considere a seguinte situação de
projeto. Temos vários subsistemas digitais, cada um dos quais implementa sua própria função particular. O sistema
geral é projetado para que apenas um deles esteja ativo em um determinado momento. Agora vamos supor que cad
subsistema tenha um sinal especial de "habilitação" que indica que ele foi selecionado para executar sua função.
Vimos exatamente esses sinais nos componentes do multiplexador que acabamos de descrever

Um demultiplexador é exatamente o dispositivo correto a ser usado nessa situação. Primeiro, configuramos o demultiplexador
para o valor declarado do sinal de habilitação. Em seguida, acionamos as entradas de controle do demultiplexador com o índice
do sinal de saída a ser direcionado da entrada. Este sinal transporta o sinal de habilitação para o subsistema selecionado,
enquanto as saídas restantes são deixadas sem confirmação. Quando usado dessa maneira, o demultiplexador t é
frequentemente chamado de decodificador.

Conceito geralUm decodificador/desmultiplexador recebe como entrada um único dado (sinal inaplicável) en sinais de
controle e usa o último para ativar uma das 2n linhas de saída. Por exemplo, um decodificador/desmultiplexador 1:2
tem duas entradasG s, (ativar) eS(select)t e duas saídasO , 0 eO1. O Booleano
equações para as saídas são as seguintes:

ludeeotef rmine qual dos dois


SeGé deixado não declarado, ambas as saídas estão em 0. Caso contrário, o vaS
as saídas serão elevadas. As equações para os decodificadores 2:4 e 3:8 são uma generalização óbvia

Um decodificador/desmultiplexador normalmente é nomeado pelo número de sinais de controle e pelo número de sinais
ou (por exemplo, 1:2, 2:4, 3):8. Compare isso com a nomenclatura do multiplexador: o número de entradas de dados e o
número de saídas de dados (exemplo uftosr, 2:1, 4:1, 8):1.

Implementações alternativas
A Figura 4.41 fornece uma implementação em nível de porta de um decodificador 1:2. Os dois inpG ut,sinal
estareenable,
e um sinal de controle Selecione. Quando Select é unasseGrtiesdg, atado a Output0 e Output1 é direcionado
para 0 Quando Select é afirmado, ocorre o oposto.Gstse:ers
pt para Output1 e Output0 é definido como 0 G. iIsf
não declarada, ambas as saídas são deixadas não declaradas, não importa qual seja o valor de Select. Podemos dizer que o
decodificador t tem uma alta ena ativa (a saída selecionada é uma lógica 1 whG enis afirmado em log)ic positivo
e usa portas AND para sua implementação.

Esta não é a única maneira de construir tal decodificador. A Figura 4.41 mostra o mesmo implemento de função
com portas NOR. Nesse caso, o sinal de habilitação,aisl, ativo baixo. Se Select for unassert(eldogic 0/positive
logic) e for asserted(logic 0/negative logi)c, então Output0 é afirmado em lógica positiva. Quando Sele é ativado
se também for ativado, Output1 será ativado. Mais uma vez, nio ft afirmou, ambos
saídas são deixadas não declaradas.

A implementação de decodificadores com maior número de linhas e saídas selecionadas generaliza a partir do
decodificador.

A Figura 4.41 apresenta duas implementações, uma com portas AND e outra com portas NOR, para um 2:4
de Os inversores geram as quatro combinações possíveis das duas linhas de seleção: ; , ;
, ; e , . Para determinados valores das linhas selecionadas, apenas uma dessas combinações será b
afirmou. Cada combinação é inserida em uma das portas AND, junto com o enabG le. iW
nphuetnGé
declarada, a saída associada a uma combinação declarada será direcionada para 1. Todas as outras saídas
será conduzido a 0.

Observe que a implementação NOR requer os complementos das combinações de linha selecionadas, como w
um sinal ativo de habilitação baixa.l Por exemplo, na implementação AND, as entradas para a porta são
, , eG. No caso NOR, estes se tornam , , e .

Como você pode esperar, também é possível implementar a lógica do decodificador e do demultiplexador usando portas de
transmissão CMOS. Afinal, um decodificador simplesmente direciona o sinal de habilitação para as configurações corretas de
linha de seleção de base de saída. Você já deve ter visto essa implementação na Figura 4.16. Simplesmente sG substituir

porEUe Selecione paraSr para ter uma implementação de switch do decodificador.

Para o decodificador 1:2, a implementação do gate é menos eficiente do transistor do que a implementação do
switch de transmissão. As duas portas NOR e o inversor usam 10 transistores enquanto as quatro transmissio
usam apenas 8 transistores. Claro, o inversor alimenta outros dois transistores na segunda abordagem

Agora vamos considerar o decodificador 2:4.


A Figura 4.42 mostra sua implementação de porta de transmissão. O caminhoGde cada uma das quatro saídas
passa por duas portas de transmissão. Cada caminho é controlado por uma combinação diferente das linhas S. Um
caminho é desabilitado se uma ou ambas as portas de transmissão não estiverem conduzindo. Observe que cada saída CA
também está conectada a duas portas de transmissão paralelas cujas entradas são 0. Estes são sinais complementares de
controle para a porta de transmissão imediatamente acima delas. Assim, se o caminho superior for interrompido, um dos
caminhos inferiores conduzirá. Esta garantiaG s tw
será direcionado para o nó de saída
se o caminho superior conduz e será direcionado para um 0 lógico, caso contrário. A figura mostra os caminhos
condutores para os nós de saída quando Sele=ctS0elect1= 0. Esta implementação requer 16 portas de transmissão e
inversores, totalizando 36 transistores. A implementação da porta discreta, quatro NOR de 3 entradas e dois
inversores, precisou de apenas 28 transistores. Para esta função, a porta de transmissão implementa uma
abordagem inferior à porta discreta.

Decodificador/Demultiplexador como um bloco de construção lógicoUm decodificador também pode ser visto como um "gerador
de minterm". A Figura 4.43 mostra um diagrama de blocos de um decodificador 3:8 onde as linhas selecionadas são rotuladas como
sinaisUMA,B,C. Cada saída pode ser rotulada com a combinação de linha de seleção que faz com que essa saída seja declarada. Por
exemplo, suponha que o controle siUMA B Csão definidos como 0, 1 e 0, respectivamente. º
g,na,lsand
corresponde ao minterm e a saída 2 está habilitada. Em outras palavras, se as entradas correspondem a
mintermmi então a saída do decodificadori será a única saída declarada.

Embora o decodificador não tenha a intenção de ser um bloco de construção de lógica combinacional de uso geral, ele pode ser
usado dessa maneira. Qualquer função expressa em forma de soma de produtos nvoavreiarbles podem ser
implementado por um decodificador:2n em conjunto com portas OR.

Para ver como isso pode ser feito, vamos considerar as três funções a seguir das variáveis
booleanasUMA,B,C,D:

É mais conveniente reexpressar as funções como


F1 já está na forma de soma canônica de produtos. ParaFg2eitnto forma de soma canônica de produtos,
expandimos o termoabcpara dois termos de 4 variáveisUMA:BC+ABCD. Por fim, representamosFt3 como o
complemento da funçãoUMA nBCD, que está na forma apropriada de soma de produtos.

A Figura 4.44 mostra como implementar essas funções usando um 4:16 deFc1odisera.sserted sempre que qualquer um de
seus três mintermos são afirmados. Por conexãoUMAti,nB g, C,eDpara as linhas de seleção do decodificador, a saída
O5 (BD),O3 (CD),ouO15 (ABCD)será afirmado se as entradas corresponderem aos mintermos desejados.F1 pode
então ser implementado por uma porta OR conectada a essas saídas do decodificador. Por ex seUMA=B=C=D=0
a saída do decodificador Ot0 é afirmado umFd1 não é afirmado. MasUMAse =B=C=D=1,
a saída do decodificadorOt15 é afirmado e nãoFw1 é afirmado.

De forma similar,F2 pode ser implementado por uma porta OR de três entradas conectada ao decodificadorOo1u2tp(uUMAtsB
), O14 (abc),eO15 (ABCD).F3 é implementado por um inversor acionado porO decodificador th1e5

resultado.

Esta abordagem para implementar a lógica é mais vantajosa para funções de variáveis adormecidas relativamente pequenas
(decodificadores de mais de quatro entradas selecionadas não estão disponíveis em um único p)acaknadgae pequeno número d
mintermos por função.

Componentes do decodificador/desmultiplexador TTL


A Figura 4.45 mostra dois componentes do decodificador TTL, os decodificadores/desmultiplexadores duplos de 2
linhas a 4 linhas 74139 e o decodificador/desmultiplexador 74138 de 3 linhas a 8 linhas. Começamos discutindo o 7
Um exame minucioso do esquema indica que a habilitação é baixa, assim como as saídas do decodificador por meio
de . Isso significa que um 741(3º 9e entrada é alta) terá todas as suas saídas
em uma lógica 1. Quando estiver habilitada (da entrada é baixa), exatamente uma dessas saídas será acionada para baixo, ou
seja, afirmada em lógica negativa, enquanto as saídas restantes vão para o nível alto. A seleçãoUMAinapnudtsB,, determine qual
saída é afirmadaB d:=UMA=0,S0 é afirmadoB; = 0,UMA=1,S1 é afirmadoB; = 1,UMA=0,S2 é
afirmadoB; = 1,UMA=1,S3 é afirmado. A seleção de alta ordem bB é é umUMAé o bit de baixa ordem. o
A função é descrita pela tabela verdade na Figura 4.45.

O 74138 vem com três entradas de habilitaçãoGut,s, e ; três entradas selecionadasUMA,,B, eC; e oito
saídas através de . Mais uma vez, duas das entradas de habilitação e todas as saídas estão ativas em nível baixo. O 74138 é
habilitado quandoGn está em um lógico 1 enquanto ambos e são 0.Cé a seleção de ordem superior bUMA isto,

é o bit de baixa ordem. A função é resumida pela tabela verdade na Figura 4.45.

Muitas vezes, podemos combinar multiplexadores e decodificadores padrão para construir multiplexadores e blocos de des aind
maiores. A Figura 4.46 mostra dois métodos alternativos para implementar um multiplexador 32:1. Na Figura (a) , simplesmente
selecionamos entre as saídas de quatro multiplexadores 8:1 com um multiplexador 4:1. Alternativamente, como na Figura 4.4(6b
podemos usar um decodificador 2:4 para habilitar um dos quatro multiplexadores 8:1. Um multiplexador desabilitado sempre
produzirá um 0. Assim, as quatro saídas podem ser combinadas em OR para obter a função múltipla. As saídas do decodificador
de baixo ativo correspondem aos sinais de habilitação de baixo ativo nos multiplexadores para uma correspondência de bolha
adequada.
Assim como com multiplexadores, é possível construir decodificadores maiores em cascata de decodificadores menores
A Figura 4.47 mostra uma estratégia possível, implementada com um decodificador 2:4 e quatro decodificadores 3:8. um
único sinal ativo de habilitação baixa habilita diretamente o decodificador 2:4. Ele é invertido para fornecer os sinais de
habilitação ativos aos quatro decodificadores 3:8. As saídas baixas ativas do decodificador 2:4 são conectadas aos sinais de
habilitação dos decodificadores de segundo nível. Apenas um dos decodificadores 3:8 está habilitado, baseado na seleção
das entradas S4 e S3. E somente uma das saídas deste decodificador será habilitada, com base nas entradas de seleção S2,
S1 e S0.

4.2.4 Tri-State versus Open Collector Gates

Os multiplexadores nos permitem construir circuitos nos quais mais de um sinal pode ser direcionado para um
determinado w sob a influência de sinais de controle. Isso é importante, porque na maioria das tecnologias não é
possível amarrar mais de uma porta ao mesmo fio sem resultados terríveis. Se um portão tenta puxar a linha
enquanto outro o puxa ativamente para 1, uma batalha se inicia na qual um ou ambos os portões provavelmente
"cairão". Esta configuração de circuito faz um caminho de resistência relativamente baixa entre a energia e o terra,
levando a correntes perigosamente altas dentro das portas. Agora examinamos alternativas ao múltiplo para
compartilhar um nó de circuito entre várias saídas.
Saídas de três estadosAté agora, vimos apenas dois valores lógicos possíveis: 0 e 1. Um terceiro valor que
encontramos durante o projeto é o valor don't-care, denotado por X. Claro, qualquer realização de um circu
envolvendo don't- os valores de cuidado na saída os mapeia em alguma atribuição de 0's e 1's. Portanto, nunca
encontraremos um valor não importa em um circuito real.

Além de 0 e 1, encontramos um terceiro valor de sinal em sistemas digitais: o estado de alta impedância, geralmente
denotado pelo símbolo Zeu. Quando a saída de um portão está em uma alta impedância s( ttahtaet é, um valor muito alto,
essencialmente infinita, existe resistência entre a fonte de alimentação e as linhas de aterramento e, mesmo
assim, a porta foi desconectada da saída. Portas que podem ser colocadas em tal estado são portas de estado c:
elas podem produzir como saídas os três valores 0,Z1 além do seu convencional
. , Inan
entradas, um tri-state tem mais uma entrada chamada habilitação de saída. Quando esta entrada é desativada, a
saída do seu estado de alta impedância e a porta são efetivamente desconectadas do fio de saída. Quando o habilitar
é ativado, a saída do portão é determinada por suas entradas de dados.

Por exemplo, a tabela verdade de um buffer gate de três estados é mostrada na Figura 4.48.

Quando o sinal de saída enab(leOE) não é afirmado, não importa qual seja a entrada, a saída wZi.ll be
Quando a entrada OE é ativada, o buffer simplesmente passa sua entrada para a saída.

A Figura 4.49 fornece uma forma de onda de temporização para um buffer com uma saída tri-state. A entradaUMA sinais de
0 a 1 e vice-versa entre a unidade de tempo 0 e 100. O sinal OE é afirmado entre as unidades de tempo 25 e uma saída de alta
impedância é representada por uma forma de onda padronizada, conforme mostrado na figura. Quando OE Festá em seu estado
de alta impedância, independentemente do valor muitas
UMAe. C vezes OE é altoF, gera o mesmo valor
como o apresentadoUMAno

Aplicação de Portões de Três EstadosVamos considerar o fragmento de circuito mostrado na Figura 4.50, construído a
partir de buffers tri-state (com habilitação ativa alta) e um inversor convencional.
O sinal de controle SelectInput determina qual Input0 ou Input1 dirige para a saídaF ut: infode
Select-Input é 0, então Input0 dirigeFt; se for 1, então Input1 orienta tFem vez disso.

O circuito funciona da seguinte maneira. Um buffer tri-state passa sua entrada para sua saída quando o sinal de
habilitação de saída é elevado. Caso contrário, a saída é alta imped(adniscceonnecte)d. O tristate Input1 é controlado
por SelectInput, enquanto controla a porta Input0. Quando SelectInput fica alto
o tri-state Input1 está habilitado e o tri-state Input0 está desabilitado, efetivamente desconectado do
nó de saídaF. Quando SelectInput fica baixo, as funções são invertidas e agora o tri-state Input1 é
desabilitado/desconectado e o tri-state Input0 aciona o nó de saída.

Para complicar um pouco as coisas, suponha que construímos um circuito funcionalmente idêntico a partir da inversão
buffers de estado com habilitação baixa ativa. Os portões de três estados geralmente vêm nessa forma mais complicada

A Figura 4.51 mostra o circuito revisado. Isso nos oferece uma boa oportunidade para testar nosso entendimento de
lógica positiva e negativa, tanto para dados quanto para sinais de controle.

Os inversores tri-state agora têm sinal de habilitação de saída baixa ativa.aWQuando o sinal de habilitação baixa ativa
é direcionado para 1, a saída é de alta impedância e, quando é direcionado para 0, a saída se torna o
complemento da entrada. SelectInput é agora a polaridade lógica errada para habilitar o tri-stat Input1 é
um sinal de controle lógico positivo, mas o portão espera lógica negativa. Isso é facilmente corrigido por
um inversor entre SelectInput e o sinal para o tri-state Input1. Agora, quando SelectInput é afirmado em
lógica positiva, o inversor mapeia-o em um sinal afirmado em lógica negativa, permitindo assim
buffer de três estados. A relação entre SelectInput e a habilitação do tri-state Input0 é completa. Se
SelectInput não é afirmado em lógica positiva, ele é afirmado em lógica negativa, e já está na forma
desejada para controlar o tri-state Input0.

A segunda complexidade da Figura 4.51 é que os dados de entrada são complementados pela porta tri-state
reverter para lógica positiva, podemos colocar um inversor de segundo estágio entre os tri-states e a saída F.

A Figura 4.52 mostra uma implementação de rede de comutação de um portão tri-state inversor com
habilitação baixa ativa. Parece muito com a implementação CMOS de um inversor, mas com uma diferença
crítica. Chaves controladas pelo sinal de habilitação de saída e seu complemento isolam a saída n Vamos
supor que o sinal esteja na lógica 1, não afirmado na lógica negativa. Então o transistor pMOS controlado
por é não condutor e o transistor nMOS controlado por seu complemento também é não condutor. Isso
deixa a saída não Fdfeloating. Agora vamos supor que o sinal é conduzido
baixo, tornando-se afirmado na lógica negativa. Os interruptores controlavam um bn
yd seu complemento são agora
ambos fechados e conduzindo.EUSe for uma lógica 1,Festá ligado a 0;EUse é 0, entãoFestá ligado a 1.

O princípio de usar portas tri-state para conectar seletivamente uma entrada a um fio de saída generaliza a conexão
nsinais de entrada para o mesmo fio de saída. Para lanr,gtehis representa uma economia considerável em portões.

A Figura 4.53 mostra uma maneira de implementar um multiplexador com um decodificador e portas tri-state. Baseado em
valores deS1 eS0, apenas um dosD3,D2,D1, ouD0 será conectado ao fio de saída compartilhado.

Saídas de coletor abertoHá mais uma maneira de implementar várias conexões simultâneas para um único fio. A
idéia é fornecer uma porta que só pode puxar sua saída para 0. Se a saída for b, a tensão no fio é deixada flutuando.
Para que isso se comporte adequadamente, o fio de saída deve ser conectado a um resistor que o puxe para uma
tensão lógica 1 se nenhuma das portas conectadas estiver tentando puxar o baixo. O resistor é escolhido para ser
grande o suficiente para que possa ser facilmente superado pelas resistências de pull-down de quaisquer portas
conectadas. Essas portas são chamadas de portas de coletor aberto.

A Figura 4.54 mostra o circuito de nível de chave para uma porta NAND de coletor aberto. A saída é 0 somente
quandoUMAeBambos são afirmados. Caso contrário, o nFodisflutuando. O resistor irá puxá-lo para uma tensão
lógica 1.

A Figura 4.55 mostra duas portas NAND de coletor aberto no que é chamado de configuração "wired-AND". Quando
ambas as entradas para a porta NAND são 1, a saída é baixa eFnoisdp eufórico baixo. Na outra entrada
configurações, a saída do portão flutua e é puxada para 1 pelo resistor.

A saída de coletor aberto está ativa somente nos casos em que a porta NAND não está ativa! A configuração é
chamada de wired-AND porque o efeitoFt é exatamente como se ambas as portas NAND tivessem sido colocadas em
AND juntas: se uma das portas tiver uma saída 0 ou bo(ththdaot is, ambas as entradas para a porta ar)e, 1 entãoF
estará em 0; somente quando ambas as portas têm suas saídas asserFteadtia s lógica 1 (ou seja, qualquer entrada
combinação diferente de ambas as entradas a) t. 1Isso é claramente mostrado no diagrama de tempo da Figura 4.56.
Mostramos um circuito possível para implementar um mux na Figura 4.57.

, sdS0,
O decodificador mapeia suas duas entradas de seleçãoS u1tsa em uma de suas quatro saídas para ser declarada ativa
baixo. Observe que as entradas de dados,, , e , também são baixas ativas. Suponha que o decodificador selecione a
porta OR superior (é direcionado para 0) e também é asserte(dactive low) . A porta OR puxa o compartilhado
fio baixo, e o inversor afirma a saídaFalto potencial. Se não for afirmado, o fio compartilhado
permanece alto e a saída é baixada.

Podemos pensar no fio compartilhado pelas portas OR como ativo baixo. Um sinal é afirmado no fio puxando-o para
baixo. O pull-up fornece um valor padrão não declarado. Ele puxa o fio para cima se nenhum dos portões o puxa par
baixo. O inversor pendurado no fio restaura o sinal para lógica positiva. Este é um uso comum com nós de circuito de
coletor aberto: eles são projetados para serem ativos em baixa, com inversores convertendo sinais de volta para lógi
positiva quando necessário.

Em geral, portas de coletor aberto e portas tri-state são usadas para os mesmos tipos de funções. Mas tr
são mais econômicos porque não requerem o resistor externo. Eles substituíram amplamente os portões
do coletor em designs modernos.

Componentes TTL Tri-State e Open-Collector


A Figura 4.58 mostra dois componentes de buffer tri-state TTL diferentes. O buffer octal 74240 com três saídas de
estado é organizado em duas seções independentes de 4 bits, cada uma com sua própria habilitação, saídas de
dados de entrada de dados. As entradas de habilitação são , as entradas de dados são 1A1-1A4 e 2A1-2A4, e as oito
saídas da são - e - . Os sinais de habilitação estão ativos baixos enquanto as saídas estão invertidas. Por
exemplo, saída é alta impedância quando a habilitação é alta. Quando desce, é conduzido para o
complemento do valor na entrada 1A1.

A função do 74244 é idêntica à do 74240, exceto que as saídas não são invertidas novamente, as
habilitações são baixas ativas. Uma lógica 1 produz alta impedância na saída 1Y1. Quando é conduzido
para 0 lógico, 1Y1 recebe qualquer valor lógico colocado em 1A1.

Os portões de coletor aberto estão disponíveis em pacotes semelhantes aos dos portões discretos convencionais. Os
componentes 7406 e 7407 contêm seis buffers inversores e não inversores de coletor aberto, respectivamente. Os
componentes 7426 e 7433 contêm quatro portas NAND e NOR de 2 entradas, respectivamente.

4.2.5 Memórias Somente Leitura

Talvez a forma definitiva de lógica de tabela de consulta seja a memória somente leitura, ou ROM. Uma ROM nada
mais é do que um circuito que implementa uma matriz bidimensional de 0's e 1's. Os elementos internos st da ROM
são ajustados para seus valores uma vez e depois disso são apenas (yTrheiasdis. não completamente verdadeiros
porque algumas tecnologias, chamadas EPROM ou ROM programável apagável, permitem que o conteúdo seja
apagado e reescrito posteriormente. de apagamento leva minutos ou até horas, deve pensar em qualquer tipo de
ROM como algo que você escreve com pouca frequência e lê m ) oEsatlcyh. fileira

da matriz é chamada de palavra e é selecionada pelas entradas de controle, que são chamadas de endereço. O
número de colunas na matriz é chamado de largura de bits ou tamanho da palavra. O número de palavras e os
tamanhos w de ROMs disponíveis comercialmente são quase sempre potências de 2.

Conceito geral
A Figura 4.59 fornece uma visão do diagrama de blocos de uma ROM. A ROM contém seu próprio decodificador interno que
mapeia as linhas de endereço em linhas de seleção de palavras. Cada linha seleciona uma palavra ROM exclusiva, que por sua ve
é bloqueada nas linhas de saída. Como sabemos de nossa discussão sobre decodificadores, as linhas de seleção correspondem a
cada um dos mintermos únicos das variáveis nas linhas de endereço. Isso não é muito diferente dos termos do produto
formados pela matriz AND de um PAL. Pelo menos conceitualmente, uma ROM é como um PAL wa totalmente decodificado e
array. Há uma linha de palavras para cada combinação possível de termos de produto de variáveis inp nas linhas de endereço.

A Figura 4.60 mostra a ROM com mais detalhes. TnO decodificador de endereço h-ienput afirma uma das 2n linhas de
seleção. Estes também são chamados de linhas de palavras. Cada fio vertical, representando uma saída da ROM, é
chamado de linha de bits. Você pode pensar nas linhas de bits como sendo conectadas a inversores de coletor aberto. Um
transistor controlado pela linha de palavras puxa para baixo a linha de bits se um zero deve ser armazenado nessa palavra
Se não houver transistor pull-down para essa palavra e linha de bits, um é armazenado em seu lugar. Com base no local
dos pull-downs, o wordi contém o valor 0011 enquanto o wordj armazena 1010.

A Figura 4.61(a) mostra um diagrama de blocos de uma ROM de 8 palavras por 4 bits de largura. Uma ROM é frequentemente usada para
armazenar as tabelas de verdade de um conjunto de funções, como no conteúdo de amostra da ROM da Fig(ub re) .4.61
As variáveis sobre as quais as funções são definidas, nesteUMAc, umBs,e eC, forma o endereço. Dependendo de
seus valores, a linha apropriada da tabela verdade e a ROM correspondente são selecionadas. Cada função de saída
está associada a uma coluna ou posição de bit na ROM. Se a função for verdadeira para essa combinação de entrada
um 1 será armazenado na palavra selecionada na posição do bit para essa função. Caso contrário, um 0 é
armazenado. Examinando a Figura (4b.6 ) 1, obtemos o seguinte conjunto de valores booleanos
equações para as saídas:

ROMs versus PALs/PLAsLembre-se da Figura 4.8, que mostra uma tabela verdade para um mapeamento de circuito
convencional de BCD para código Gray. Para implementar isso como uma memória somente leitura, precisamos de 4
endereços (16 palavras) por ROM de 4 bits. Cada linha da tabela verdade é mapeada para um local de ROM contendo uma
palavra de código Gray de 4 bits, endereçada pela palavra de entrada em código BCD de 4 bits. Entradas não importadas,
como as configurações de entrada 1010 a 1111, não têm nenhuma vantagem especial na redução da necessidade de
hardware na implementação, uma vez que a ROM vem com localizações para essas palavras, quer armazenemos 1's ali ou
não.

Os conversores de código são usados para traduzir de uma representação de dados para outra. Por exemplo, um ca
usa códigos binários padrão para seus cálculos internos. Mas pode converter esses códigos em BCD f entrada/saída e
exibição.

As conversões de código são uma aplicação particularmente ideal para ROMs, uma vez que a maioria, se não todas as entradas de
combinações, precisam ser geradas de qualquer maneira e o decodificador pode fazer isso com bastante eficiência. Então, como você
vai entre uma ROM e uma implementação baseada em PAL/PLA?

A resposta depende da estrutura das funções que estão sendo implementadas. Isso pode ser quantificado por (1) o
número de termos de produtos exclusivos que devem ser gerados para implementar toda a diversão de saída (2) o
grau em que esses termos podem ser compartilhados entre várias funções de saída (n3s), um thned

número de termos que devem ser colocados em operação OR juntos para implementar uma determinada função de saída.

PLAs são eficazes quando o número de termos exclusivos é pequeno e um determinado termo é gerado no A
array pode ser compartilhado entre várias saídas (uthtsis contribui para manter baixo o número de termos
exclusivos) . Você deve se lembrar que as estruturas PAL/PLA nem sempre fornecem saídas suficientes do array AND
se você precisar gerar muitos termos. E os PALs são limitados no número de termos que contribuem para a realizaçã
de qualquer função de saída única. Levará mais tempo para projetar um circuito com PAL ou PLA, pois são necessário
métodos de minimização para reduzir o número de termos e maximizar o número de termos que podem ser
compartilhados.

As ROMs são eficazes quando o número de termos exclusivos é grande. Você pode reduzir seu tempo de projeto b
não há necessidade de realizar a minimização: o tamanho da ROM é determinado apenas pelo número de entradas e
saídas, não pelo número de termos do produto. No entanto, o tamanho da ROM dobra com cada entrada adicional,
então é melhor que as funções de saída sejam de uma forma que exija todos os termos de produção possíveis para
que essa abordagem faça sentido.

No exemplo de código BCD para Gray, 10 de 16 mintermos foram necessários, sendo o resto não importa. A
minimização de Bo reduziu o número de literais nos termos, mas não o número de termos únicos, que ainda são 10.
Esta é uma boa dica de que uma implementação baseada em ROM é provavelmente a melhor.

Componentes ROMROMs vêm em uma variedade de tamanhos e larguras de palavras. O limite superior é
representado pela EPROM 27512, que fornece 216 palavras de 8 bits, ou meio milhão de bits ROM em um único
pacote de 28 bits!

Como exemplo, vamos nos concentrar na palavra 2764 8( 129123) por ROM de 8 bits, cujo símbolo esquemático é
mostrado na Figura 4.62.

O componente 2764 possui 13 linhas de endereço, para identificar cada uma das 8192 palavras possíveis, e 8 linhas
de saída tri-s, uma para cada bit da palavra ROM. Existem quatro entradas adicionais para controle. Os ou são
habilitados por um sinal de habilitação de saída baixa ativa. O componente também vem com uma entrada ativa de
seleção de chip baixo (t ). Isso pode ser usado para cascatear ROMs menores/mais estreitas para formar memórias
maiores/mais amplas. Veremos como isso pode ser usado em um momento. Como as EPROMs são programadas por
pulsos el, uma entrada adicional coloca a ROM no modo de programação em vez de readin(gmo)d,e enquanto a
entrada final (VPP) fornece a fonte de alta tensão necessária usada durante a programação.
processo. Fora da estação de programação PROM real, essas entradas são conectadas à fonte de alimentação

A Figura 4.63 mostra como as linhas de seleção de chip podem ser usadas para construir uma memória maior.
Suponha que t deve construir uma memória com 214 por 16 bits de largura usando a EPROM 2764. Tal subsistema
tem linha de endereço(sA13:A0) e 16 linhas de dados(sD15:D0). Um sinal adicional permite a saída de todo o
subsistema.

Por ter o dobro da largura e o dobro do número de palavras de um único 2764, precisaremos de quatro delas para
implementar o subsistema. Esses componentes são rotulados de U0 a U3. A figura de linhas grossas denota barramentos,
vários fios logicamente relacionados que compartilham uma função comum. Por exemplo, b são usados para transmitir
dados relacionados e bits de endereço. Esta é uma notação abreviada usada para evitar desenhar linhas de sinal
individuais.

O bit de endereço de ordem superior, A13, seleciona entre a ROM 8192 mais alta (waodrddrsesses 8192 a
16383) e as 8192 palavras inferiores (endereços s de 0 a 81) 9.1 A linha de endereço A13, se baixa, habilita U1 e
U0. Se alto, habilita U3 e U2. As linhas de endereço restantes, A12:A0, são conectadas diretamente às entradas
da linha de endereço t dos chips ROM, assim como o sinal de habilitação de saída. A saída da ROM será acionada
somente se o chip for selecionado e a saída estiver habilitada. Como as saídas são tri-statement e os chips ROM
superior e inferior nunca são ativados ao mesmo tempo, é perfeitamente aceitável conectar as saídas juntas. U3
e U1 estão conectados a D15:D8, enquanto U2 e U0 estão conectados a D7:D0.

[Início] [Próximo] [Anterior ]

Este arquivo foi atualizado pela última vez em 13/07/96 às


21:42:49. randy@cs.Berkeley.edu ;
[Início] [Próximo] [Anterior ]

4.3 Problemas de Palavras Lógicas Combinacionais

Nesta seção, veremos alguns estudos de caso que ilustram a "arte" de mapear especificações de circuitos
em realizações de nível de porta. Às vezes, os problemas podem parecer mais quebra-cabeças do que
qualquer coisa relacionada ao design digital. A arte está em entender o problema e formular a solução; a
implementação pode ser muito simples.

4.3.1 Procedimento de Projeto

Ao lidar com problemas de palavras, recomendamos seguir um "procedimento" padrão para extrair os pontos-
chave e restrições do problema e formular sua solução. Nosso método consiste nas seguintes etapas. Primeiro,
tente entender o problema. Em segundo lugar, reformulá-lo em termos de uma representação digital padrão.
Terceiro, decida como você implementará seu projeto. E por último, siga um algoritmo de implementação
adequado para a abordagem de implementação escolhida. Não é possível g algoritmo preciso para algumas
dessas etapas; você precisará confiar na prática e na experiência. Vamos l cada um deles com mais detalhes.

Etapa 1: entenda o problemaA primeira coisa que você deve fazer é entender o problema. Não há
uma abordagem única para entender uma declaração de problema complexo. Problemas de
palavras são inerentemente difíceis porque são apresentados em declarações imprecisas, prolixas,
ambíguas e confusas. No mundo real do design, a função que está sendo projetada pode não ser
particularmente bem compreendida ou claramente definida. O ponto de partida é com o
comportamento de entrada/saída do objeto que está sendo projetado. Você consegue identificar a
entradas, saídas e sinais de controle? Como os sinais de controle operam nas entradas geram as
saídas? Se o problema fornecer exemplos de comportamentos de saída com base em determinado
fluxo de entrada, certifique-se de entender como essas saídas são derivadas das entradas. Às vezes
é útil desenhar um diagrama, relacionando entradas, saídas e controle,

Por exemplo, suponha que você seja solicitado a projetar um circuito lógico para controlar uma luz de corredor, com um
interruptor de luz em cada extremidade do corredor. Deve ser possível acender a luz em qualquer extremidade do corredor,
depois caminhar pelo corredor e apagá-la na outra extremidade.

Você começa identificando as entradas e saídas. As entradas são os dois interruptores de luz e a saída a luz.
Vamos chamar o switcheUMAareiaB. Às vezes você só precisa fazer suposições iniciais razoáveis. Vamos supor
que quando o interruptor de luz está na posição para baixo a entrada é 0, e o interruptor está para cima a
entrada é 1. A luz está acesa quando a função lógica é 1. Caso contrário, está desligada.
Vamos supor que o sistema comece com os dois interruptores de luz na posição para baixo. Claramente, a luz deve estar
desligada quando ambos os interruptores estão desligados. Quando um interruptor sobe, a luz deve acender. Na outra
extremidade do corredor, colocar o segundo interruptor na posição para cima deve desligar a luz.

Portanto, se ambos os interruptores estiverem ligados, a luz está apagada. O que acontece quando você volta pelo corredor? Pu
um interruptor para baixo, a luz deve acender. Colocar o interruptor distante para baixo deve desligar a luz.

Etapa 2: Formular em uma representação padrãoUma vez que tenhamos uma ideia do que a combinação de um
circuito lógico deve fazer, devemos descrevê-lo mais formalmente. Representações de design digital são formas
precisas de representar um sistema digital. Para problemas de palavras de lógica combinacional, as representações
apropriadas são quase sempre equações booleanas ou tabelas-verdade. Essas representações capturam
relacionamentos entre entradas, controle e saída como declarações algébricas ou como tabulações de entrada/
comportamento. O principal desafio é extrair essas relações da declaração de palavras do problema

Para o exemplo da luz do corredor, simplesmente tabule as condições de entrada. Quando ambos os interruptores estão na
mesma posição, a luz está desligada. Quando estão em posições diferentes, a luz está acesa.

Etapa 3: escolha uma implementaçãoUma equação booleana ou uma tabela verdade é uma representação
abstrata do sistema digital. O próximo passo é mapear isso em algo mais concreto, como portas lógicas. Antes
de implementar o sistema, entretanto, você deve tomar uma decisão crítica de projeto: você deve escolher a
tecnologia para implementação. Os tipos de opções disponíveis são portas discretas de rede combinatória de
dois níveis ou PALs/PLAs, redes multinível, memórias como ROMs, redes de portas de transmissão ou uso de
"lógica de porta complexa" como portas AND-OR-Invert. A escolha detalhada geralmente é baseada em
economia ou desempenho, mas pode ser limitada pelo tipo de tecnologia disponível. Por exemplo, se você tiver
apenas componentes TTL, as redes de portas de transmissão são praticamente eliminadas.

O circuito de luz de hall é bastante simples de implementar com um pequeno número de portas discretas.

Etapa 4: aplicar o procedimento de designO último passo é talvez o mais mecânico. Você formulou a solução
em termos de equações booleanas ou tabelas verdade, escolheu uma abordagem de implementação e agora
deve seguir o algoritmo para mapear sua representação digital em uma implementação real. Para redes de dois
níveis, você aplicará as técnicas do Capítulo 2 para derivar um circuito com o menor número de termos de
produto. A abordagem é a mesma se o alvo da implementação for portas discretas ou lógica programável. Para
um projeto baseado em ROM, apenas a tabela é necessária; não há necessidade de minimizar sua descrição
lógica primeiro. Se você escolher uma abordagem de implementação multinível, sua melhor aposta é usar
ferramentas de projeto auxiliadas por computador para fatorar as equações Boolea em sua melhor forma para
minimizar as contagens de portas e literais.

O circuito de luz do hall pode ser implementado com uma única porta XOR.

Introdução aos estudos de casoNas seções a seguir, abordaremos quatro estudos de casos de problemas de palavras
diferentes, aplicando a abordagem de quatro etapas que acabamos de descrever. O primeiro problema é uma aplicação
simples de controle de processo. Você deve determinar as condições Booleanas específicas, conforme indicado por
condição dos sensores de luz de entrada, que caracterizam a condição das hastes em uma linha de montagem.
Quando a condição da haste direita é detectada, a lógica deve gerar um sinal para mover um braço mecânico. Este
estudo de caso é uma aplicação do decodificador: o circuito lógico combinacional deve mapear os sinais de entrada
codificados e os sinais de saída especificados para os efeitos desejados. Nesse caso, o circuito deve iluminar certos
segmentos de um display de luz de sete segmentos com base nas entradas. O terceiro problema descreve uma funçã
lógica que implementa várias funções lógicas diferentes de suas entradas. Este tipo de sistema pode ser usado em um
microprocessador simples. As saídas são definidas como funções lógicas combinatórias das entradas e sinais de
controle. O último problema apresenta um subsistema digital que recebe uma entrada de 8 bits e desloca i número d
posições. Acompanhe e tente os problemas de design por conta própria. Em seguida, compare sua solução com as
apresentadas. A sua pode ser melhor do que as soluções que mostramos.

Um problema simples de controle de linha de processo

Varas de comprimento variável (± 10%) viajam um de cada vez na direção de seu eixo mais longo em um transportador
cinto. Um braço mecânico empurra as hastes que estão dentro do específico (a±tio5n%) da correia para um lado. Um
segundo braço empurra as hastes que são muito longas para o outro lado. As hastes muito curtas permanecem no Use
três barreiras de luz (fonte leve + fotocélula) como sensores e projete os circuitos combinatórios que ativam os dois braços

Passo 1: Entenda o problema.


Em um problema como este, é importante certificar-se de que você entendeu o problema específico. Suponha que o
comprimento perfeito seja de 100 polegadas. Todas as hastes estarão dentro de 10% desta especificação, ou de 90 a 110
polegadas de comprimento. As hastes "muito longas" são mais longas que o comprimento especificado em mais de 5%
mais de 105 polegadas, mas menor ou igual a 110 polegadas. Estas hastes são supostamente empurradas para um lado
da correia transportadora. As hastes "muito curtas" são mais de 5% mais curtas do que o comprimento desejado - maior
ou igual a 90 polegadas, mas inferior a 95 polegadas. Estes são destinos permanecem no cinto. As hastes na faixa de 95
105 polegadas estão "dentro das especificações" e serão empurradas para o outro lado por um segundo braço. Uma
imagem deve tornar isto mais ob(vS ioeues.Figura 4.6)4.

Em seguida, vamos identificar as entradas e saídas. As únicas entradas que temos são as leituras do
três sensores de luz. As saídas são os sinais que acionam os dois braços de posicionamento. Como
não foi explicitamente declarado no problema, vamos supor que as barreiras de luz operem lendo
ou quando o feixe de luz é ininterrupto e um 1 quando é acionado pela haste de passagem. As saída
de entrada são bastante diretas. A questão-chave do projeto é como organizar o posicionamento do
sensores para que possamos distinguir entre as três classes diferentes de hastes. Chamaremos as
barreiras de luzUMA,B, eCe organizá-los para que o senCassim é o primeiro a ser
tropeçado pela haste de passagem, thBpt, e finalmenteUMA. Vamos fazer uma suposição crítica: vamos corrigir
a colocação da barreiraUMAr e arranjar barrieBrsandCpara poder decidir sobre a vara
comprimento quando a haste quebra a barreira de luzUMAr.aA
A segunda suposição é que as hastes são
adequadamente espaçadas na esteira transportadora, pelo menos um comprimento máximo de haste, de modo que nunca seja
possível interpretar duas hastes acidentalmente como uma única haste.
Ao redesenhar ligeiramente a Figura 4.64, desta vez incorporando as barreiras de luz, fica um pouco mais
claro onde colocarBeeCpara distinguir os tipos de haste. Consulte a Figura 4.65.

Usaremos barreiraBpara identificar hastes que são muito curtas e barraCrietro detecta aqueles que são demasiado
grandes.Bdeve ser colocado longe o suficiente para UMAmso que uma haste muito curta triUMA p mas nãoB. Desta forma,
UMAeBdevem ser separados pelo comprimento especificado menos 5%. Para nosso específico hipotético de 100
polegadas, isso significa queUMAeBdevem ser colocados a 95 polegadas de distância.
Agora devemos colocar barrieCr para detectar as hastes que são muito longas. Vamos colocá-lo a uma distância
que a especificação mais 5% de UMA(105 polegadas em nosso exemplo)le. As barreiras agora distinguem
entre os três casosUMA . Iifs tropeçou, mas nãoBt ouC, então a haste está claramente muito sho( rUMA tBC=
100). SeUMA,B, eCsão acionados simultaneamente, a haste é muito lo( nUMAgBC=111). Esta
condição ativa o braço para mover a haste para um lado da correia. O caso restante é haUMA passar por
Bsendo tropeçado, mas nãoCt (abc=110). Então a haste está dentro da especificação desejada. Esta é a
condição para mover a haste para o outro lado da correia.
Isso representa apenas três das oito configurações de barreira possíveis. Por causa de nossa primeira
suposição, que tomaremos nossa decisão assim que bUMA arirsietr iggered, a haste ainda deve ser
em trânsito se a configuração da barreiraUMA éBC=0XX. Como também assumimos que as hastes são
C,= 101, nunca pode ocorrer.
separados por um comprimento máximo de haste, o cond de entrada restanteUMAistoBion

Etapa2: Formule o problema em termos de uma tabela verdade ou outra representação de projeto adequada
Neste ponto, a maior parte do trabalho duro foi feito. Uma tabela-verdade resumida, derivada da
discussão acima, aparece na Figura 4.66.

etapa 3: Escolha a tecnologia de implementação.


A lógica real é realmente bastante simples, então podemos implementá-la como lógica de porta direta.
Passo 4: Siga o procedimento de implementação. A condição "muito longa" é representada pela funçãoF=
abc. A condição "dentro da especificação" é representada pela funçãoG tio=n . Estes podem
ser implementado através de duas portas AND de 3 entradas.

Controlador de exibição de BCD para sete segmentos

Você deve projetar um circuito combinacional que mapeie um dígito BCD de 4 bits para os sinais que controlam como
exibição de segmento. O elemento de exibição contém sete d(iL) emissores de luz oE
dess). Quando o
linha de controle de LED apropriada é ativada, o segmento de LED associado acende. Assumimos que as entradas do
driver estão ativas alto (a maioria dos componentes reais do driver de LED estão realmente ativos) .low Caso
contrário, o segmento de LED está desligado. Os sete segmentos são controlados independentemente; não há
quanto ao número de segmentos que podem ser iluminados ao mesmo tempo. A Figura 4.67 mostra o display de set
segmentos e suas configurações exibindo cada um dos 10 dígitos BCD possíveis.

Passo 1: Entenda o problema.


Comece perguntando a si mesmo o que o circuito deve fazer. Quais são as entradas e saídas Existem
quatro sinais de entrada, representando o dígito BCD de 4 bits. Deve haver sete saídas para cada um dos
segmentos de LED que devem ser controlados. Neste ponto, pode ser útil desenhar o diagrama de
blocos, com as entradas e saídas claramente identificadas. Um diagrama de blocos de alto nível é g na
Figura 4.68.
Em sistemas mais complexos, você pode aplicar uma abordagem de dividir e conquistar para quebrar os
blocos de alto nível em blocos menores e mais primitivos que são mais fáceis de entender. Neste caso, a
decomposição é razoavelmente direta: cada linha de controle de segmento de LED é uma função booleana
das quatro entradas.
Passo 2: Formule o problema em termos de uma tabela verdade ou outra representação de projeto
adequada Para um problema como este, é melhor tabular os valores de entrada com as saídas desejada
Por exemplo, a representação BCD para o dígito 0 deve fazer com que os segmentos de LED 0, 1, 2, 3, 5
sejam iluminados. Assim, associado à combinação de entrada 0000, ativaríamos os sinais de controle C0
C5, deixando C6 indefinido. Para a combinação de entrada 0001, os segmentos 1 e 2 são ativados,
enquanto os segmentos 0 e 3 a 6 são deixados de fora. Na tabela, a entrada para 00 C1 e C2 são ativadas
enquanto as saídas restantes são deixadas sem ativação. Desta forma, em toda a tabela de verdade.
Como os dígitos BCD consistem nos padrões de bits de 0000 a 1001, as saídas associadas aos padrões de
entrada restantes podem ser deixadas como não importa. Isso deve reduzir a complexidade de nossa
implementação real. A tabela verdade completa é mostrada em Fi 4.2.

etapa 3: Meta de implementação


Agora devemos decidir sobre nossa tecnologia de implementação. Se optarmos por implementar o syst com uma
memória somente leitura, podemos parar agora. Tudo o que precisamos fazer é colocar a tabela verdade de F 4.2 em
uma ROM de 16 palavras por 7 bits (tal ROM provavelmente não existe, mas você deve ser capaz de
).
encontrar uma ROM de 2n por 8 bits
Suponha que seu chefe lhe diga que uma ROM programável é muito cara para ser usada neste
subsistema. Você deve ter notado o componente 74LS48 no catálogo TTL. Este controlador de exibição d
BCD para sete segmentos implementa em um único pacote MSI. Na verdade, o catálogo contém várias
implementações alternativas de pacote único para esta função. Infelizmente, seu chefe não gosta da
maneira como esses decodificadores exibem o dígito "6", então você terá que implementar seu
decodificador do zero. Essa função, com suas sete saídas, é complexa o suficiente para que uma
implementação de porta discreta provavelmente exija algumas portas e pacotes para ser realizada.
Portanto, vamos decidir que o alvo é uma estrutura PAL ou PLA, e nosso objetivo é realizar essa função
em um único pacote. Obviamente, precisaremos de uma rede de dois níveis minimizada.

Passo 4: Procedimento de implementação

Como o destino é uma rede de dois níveis, podemos usar as técnicas de K-map da ferramenta Chapter CAD
como o expresso diretamente. Como esse problema em particular envolve apenas ma de quatro variáveis,
vamos examinar as duas abordagens. Acontece que, mesmo em um problema relativamente simples, como o
espresso, ainda é muito melhor do que nossas técnicas de lápis e papel!
Método K-MapO método K-map requer sete K-maps de 4 variáveis, um para cada coluna da tabela-verdade A
essa altura, deve ser natural para você preencher o K-map da tabela-verdade. Os mapas mostrados na Figura
4.7(0a) a(g) . Nós fomos em frente e encaixotamos os principais implicantes, tirando vantagem do não se
importa sempre que possível. Leia a partir da Figura 4.70, as equações para as saídas de controle do segmento
de LED se tornam:

Precisaríamos de um PAL de quatro entradas e sete saídas com pelo menos quatro termos de produto por saída para
implementar essa função. Um P16H8 PAL, por exemplo, tem recursos suficientes para implementá-lo: dez entradas
externas mais seis entradas de feedback (mais sobre isso no Capítulo, saídas diretas e sete termos de produto por saída O
P14H8 PAL mais simples não pode fazer o trabalho. Tem 14 entradas e oito saídas, mas apenas duas das saídas são
computadas como OR de quatro termos de produto, enquanto as seis saídas restantes têm apenas t termos de produto
cada.
Veja as Figuras 4.72 e 4.73 para os mapas de programação PAL.
Suponha que a implementação de destino seja para uma estrutura PLA em vez de uma PAL. O fator limitante no
PLA é o número de termos de produto exclusivos para implementar as saídas. Estes correspondem ao nu de
"fios" horizontais na matriz de circuitos PLA. Temos quinze termos de produto únicos nas equações acima. Um
componente PLA típico pode lidar com dezesseis entradas, oito saídas e quarenta e oito termos de produção
(por exemplo, veja a Figura 4.70 para a programação F100 PLA) m . ap
Método de otimização de lógica de dois níveisO arquivo de entrada de café expresso é fornecido na Figura 4.74. A saída
espress é mostrada na Figura 4.75. Isso mapeia para o seguinte conjunto de equações booleanas:
Notavelmente, o espresso parece ter criado expressões mais complexas para as saídas do método K-map. No
entanto, uma inspeção mais detalhada revela que o número de termos de produtos exclusivos diminuiu de 15
para apenas 9. Embora as expressões individuais agora tenham mais termos de produtos, o maior
compartilhamento de termos entre as saídas. Lembre-se de que o tamanho do PLA é determinado prim pelo
número de termos exclusivos do produto, portanto, o melhor design é aquele com menos termos.

O compartilhamento de termos não oferece assistência para uma implementação baseada em PAL, uma vez que a topologia de um PA
impossibilita o compartilhamento de termos entre as diferentes funções de saída (tiN oo
ntse. que esta afirmação não é
verdadeiro para as estruturas lógicas programáveis mais complexas que abordaremos em Cha)ptIenrf7a.ct,
aumentando o número de termos por saída, o método espresso pode nos forçar a usar um PAL com mais do
que o realmente necessário (é possível pedir espresso para realizar sua otimização com base em uma saída
individual, e essa abordagem deve ser seguida se a tecnologia de implementação for PAL) .

A Figura 4.76 mostra o mapa de programação para uma implementação de PLA.


Método de otimização multinívelComo isso se compara a uma solução multinível, como uma que poderia ser
produzida usando misII? A lógica multinível não é adequada para implementação PAL ou PLA, então vamos dar uma
olhada nas implementações de portas discretas, para comparar misII e espresso. Primeiro, vamos examinar a
complexidade da solução derivada do espresso com um pouco mais de detalhes. O número de literais é 63. T número
de portas é (7uma porta OR para cada saída)upt lus 8(uma porta AND para cada termo de produto único exceto o
termo simples UMA)mais 3 (um inversor para a entradaB s,C,D),para um total de 18 portas. Cada
a saída está no segundo nível da rede, experimentando dois a três atrasos de porta.

A execução de um script misII padrão no arquivo de entrada espresso produz o seguinte conjunto de eq(un ao
tio
dezenas que

otimização de mão pode apostar)te:r

XeSsão termos intermediários inseridos na rede lógica por misII. Isso rende um total de 52
litros e 33 portas (uma para cada saídaCs0 atéC6,XeS, mais sete inversores incluindo, , e
). sEm termos de atraso, a saída mais lentaCt i1s, uma vez que é uma função oC6,
, mais 17 outros termos de produto
que é uma função oCf 5, que por sua vez é uma função oCf4.C4 já experimenta três atrasos de portão
pois é uma função oSf. Desta formaC1 experimenta 9 ou 10 atrasos de portão! Embora o misII tenha feito um trabalh
admirável ao reduzir o número de wi(reass medido pelo número de lite)ra, list não se saiu tão bem na redução da
contagem de portas, e sua implementação será um pouco mais lenta do que o two-le realização derivada do express
A principal razão é que esta versão do misII ainda não é sofística o suficiente para fazer uso de condições não-
preocupadas. A lição importante aqui é entender a limitação das ferramentas de projeto assistido por computador
que você está usando.

Uma Unidade de Função Lógica

Você deve projetar uma rede lógica que tenha duas entradas de dados UMAuatsn,dB, e três entradas de controleCs,0,C1,
eC2. A rede deve implementar a função lógicaFiosnespecificado na Figura 4.77.

Componentes deste tipo encontram ampla aplicação em caminhos de dados de microprocessadores, para computar uma variedade de
funções lógicas bit a bit de dois operandos.

Passo 1: Entenda o problema. A especificação do problema menciona três controles (emCp0u, ts C1,C2),
duas entradas de dados (UMA,B),e uma única função de saída (nF).Desta forma,Fé uma função lógica
combinacional dessas cinco variáveis.

Passo 2: Formular o problema em termos de tabela-verdade ou outra representação de projeto adequada, a


coisa natural a fazer a seguir é criar uma tabela-verdade de cinco variáveis, em preparação para resolver um
K-map de cinco variáveis. Em termos de representação da tabela verdade, não há realmente distinção entre
controle e entradas de dados. Começamos listando as 32 combinações diferentes de cinco variáveis. N vamos
particionar a tabela verdade em oito grupos de quatro linhas cada. Cada grupo representa uma configuração
un das três entradas de controle (ts000 a 11)1, e cada linha dentro do grupo representa uma configuração
exclusiva da entrada de dadosUMAtsandB(00 a 1)1. Desde o primeiro grupo da tabela verdade (C0C1C2 = 000
representa a função constante 1, preenchemos todas as quatro linhas com um 1. O sec group(C0C1C2 = 001)
a função OR. Nós preenchemos a primeira linha (AB=00) com um 0 e o
restantes três linhasAB=01, 10, 11) com 1. Continuando desta forma, podemos completar o
resto da tabela. Isso é mostrado na Figura 4.78.

etapa 3: Escolha uma tecnologia de implementação.


A escolha básica é implementar a função com uma abordagem orientada a portas ou com memórias.
Observe que usar legados discretos (toer mesmo programmab) não é a única abordagem "orientada ao
portão". Uma implementação baseada em um multiplexador pode valer a pena considerar. Veja o
diagrama na Figura 4.79.

Poderíamos ter chegado a esta implementação sem sequer derivar a tabela verdade de ste Em grande
parte, a decisão de implementação depende de dois fatores: tempo de projeto versus custo do
componente. Projetos baseados em ROM geralmente requerem menos tempo para projeto e
implementação Por um lado, um projeto baseado em ROM começa com a mesma tabela verdade que um
projeto de porta discreta tem a vantagem de não precisarmos minimizar a função. No entanto, um
pacote ROM é cinco vezes mais caro que um pac de porta discreta (koafgceourse, isso depende do
número de bits na ROM). Do lado positivo, a função pode ser implementada em uma única ROM, mas sã
necessários vários pacotes para implementá-la usando portas discretas.
Por exemplo, o projeto baseado em multiplexador da Figura 4.79 requer quatro pacotes TTL: quatro NAND de
entrada, quatro NOR de 2 entradas, dois XOR de 2 entradas e um múltiplo de 8:1 (os xienrverters podem ser
formados a partir de NAND, NOR ou XOR gat)e.sSe o diferencial de custo for um fator de 5, o projeto baseado
em multiplexador ainda é mais barato que o ROM. No entanto, o design baseado em multiplexador ocupa
mais área de circuito do que o baseado em ROM, com mais oportunidades para erros de fiação e falhas de
componentes. Se o custo for o critério primordial, escolheremos a lógica empacotada. Mas que requer menos
pacotes, o design de porta discreta ou o design do multiplexador? O projeto de nível de porta minimizado não
pode ser avaliado sem realizar a minimização do K-map que faremos a seguir.

Passo 4: Siga o procedimento de implementação.


Para continuar a análise, minimizaremos o K-map da função. Isso é mostrado na Figura 4.7 e
a função foF r acaba por ser uma equação bastante simples:

Em lógica empacotada como TTL, isso requer cinco ga(tefosur 3 entradas, um 4 entradas) t, mais cinco
inversores. Isso pode ser implementado em três pacotes TTL (ag oe
pacote nse de três portas de 3 entradas,
um pacote de duas portas de 4 entradas e um pacote de seis inv) e, rste ortshere é um pouco
vantagem para a abordagem do portão.
Observe que a função pode ser simplificada ainda mais, assumindo que as portas XOR estão disponíveis
: Ainda precisamos de cinco inversores e mais cinco portas: três de 3 entradas, uma de 2-
entrada e um XOR de 2 entradas. Desta vez, precisamos de quatro pacotes: um pacote de três portas de 3 entrada
um pacote de quatro portas de 2 entradas, um pacote de duas portas XOR de 2 entradas e um pacote de seis
inversores. Essa simplificação na verdade aumenta os custos de implementação, a menos que os portões restante
possam ser usados para outros fins.

Se o critério for a área do circuito e não o custo, o vencedor claro é o implemento baseado em ROM, pois requer
um único pacote. Em um estilo de design de matriz de portas, a versão de 10 portas provavelmente é a vantagem
da área. Isso ocorre porque seria difícil implementar uma ROM de 32 palavras em uma área equivalente usando as
estruturas de portas primitivas disponíveis em uma matriz de portas típica.

Um shifter de barril de oito entradas


Um deslocador de barril é um subsistema digital que pode deslocar qualquer número de posições de bits de uma só vez. Em um único
através do shifter, a entrada pode girar de 0 a 7 posições. Deslocadores de barril são úteis para operações de extração de bits
implementadas com suporte em muitos conjuntos de instruções de computador.

Para ser mais preciso, você deve projetar um subsistema digital que implemente a seguinte função. subsistema tem
oito entradas de dadosDts7,,D6, ,D0, oito saídas de dadosO,7,O6, ,O0, e três entradas de controle, S2,S1,S0. As
entradas de controle especificam o número de posições para deslocar a entrada para a esquerda. As entradas que
"caem no final" são giradas em torno dos bits de baixa ordem da saída.

Por exemplo, quemSn2 =S1 =S0 = 0, as entradas são simplesmente bloqueadas diretamente para a saídaO pu
7t=
s:
D7,O6 =D6, ,O1 =D1,O0 =D0. QuandoS2 =S1 = 0,S0 = 1, os bits de entrada são deslocados uma posição para
a esquerda:O7 =D6,O6 =D5, ,O1 =D0,O0 =D7. Observe queD7 é girado para a posição de saída 0. QuandoS2
=S1 =S0 = 1, a entrada é deslocada sete posições para a esquerda, com o b de ordem superior envolvendo a
posição de saída de ordem inferiorO n7s:=D0,O6 =D7, ,O1 =D2,O0 =D1. Este é o
o mesmo que mudar uma posição para a direita, com as entradas passando das posições de baixo para
alto.

Passo 1: Entenda o problema.


O subsistema consiste em oito funções de saída, cada uma dependendo de 11Si2 S :S0,D7,
n,pu1ts,
D6, ,D0. Provavelmente a maneira mais fácil de entender o comportamento do subsistema é tabular os
valores das saídas em função das configurações de controle. Isso é mostrado na Figura 4.81.

As entradas se deslocam para a esquerda em um número crescente de posições à medida que o índice
binário das co entradas aumenta. As entradas giram da esquerda para a direita da tabela.
Passo 2: Formule o problema em termos de uma tabela verdade ou outra representação de projeto adequad
Neste ponto, é melhor descrever cada uma das saídas em termos das 11 entradas:

etapa 3: Escolha a tecnologia de implementação.


Passo 4: Siga o procedimento de implementação.
Para este estudo de caso, combinaremos a discussão da escolha da implementação e do procedimento que
produz a implementação. As opções básicas de implementação são portas discretas, componentes MSI, lógic
programável ou redes de comutação. Vamos começar com um portão discreto
implementação. Um exame minucioso das equações booleanas deve nos dizer que há uma pequena
chance de simplificar as funções. Todas as combinações deStihienputs são necessários para cada
função, e cadaD hj aparece em exatamente um termo de produto. Não há como explorar o
teorema da união. Isso significa que uma implementação de porta discreta exigirá oito portas ga de 4 entradas e
uma porta de 8 entradas por função, para uma contagem total de sessenta e quatro portas de 4 entradas e oito
portas de entrada. Isso requer 40 pacotes: 32 para os portões de 4 entradas e 8 para os portões de 8 entradas.
abordagem baseada em portas discretas não parece muito promissora.
Uma alternativa é usar componentes MSI, como multiplexadores ou decodificadores. Não é demais ver que cada
saída pode ser implementada por um multiplexador 8:1. Basta usar a entrada de controle para selecionar uma das
oito entradas de dados. Tudo o que temos a fazer é conectar as entradas de dados conforme especificado na tabel
da Figura 4.81. Essa implementação requer apenas oito pacotes, uma economia considerável em relação à
abordagem de porta discreta.
Podemos implementar o subsistema com um único pacote se usarmos uma ROM ou um PAL/P com recursos
programáveis suficientes. Como as funções possuem 11 entradas, a ROM requer 2048(211) por palavras de 8 bits
Para usar um PAL, precisamos de um componente com 11 entradas, 8 saídas, termos de produto por saída da port
OR. Uma rápida olhada nas funções de saída deve convencê-lo de que elas não compartilham os termos do
produto. Portanto, não há nenhuma vantagem particular em usar um PLA.
A alternativa final de implementação é desenvolver alguma forma de rede de comutação. Esta deve ser uma
abordagem razoável, já que o câmbio é uma aplicação natural da lógica de direção. Dependendo das
configurações do sinal de controle, as entradas serão direcionadas para as saídas apropriadas.

A Figura 4.83 mostra um


estrutura de comutação construída a partir de conjuntos ortogonais de fios conectados por transisto nMOS
Os "pontos cruzados" são implementados conforme mostrado pelo corte à direita da figura. A estrutura tem
capacidade de conectar qualquer entrada a qualquer saída, dependendo de qual transistor ga
estão ligados. Muitas vezes é chamado de interruptor de ponto cruzado.
Por exemplo, se os pontos cruzados diagonais forem habilitados peloS s0
ig0n0a,l entãoDeu estou conectado a
Oeu. Para implementar o comportamento do barril shifter, precisamos de uma estratégia para distribuir os contra
corretos para os interruptores apropriados na matriz.
Dentro do switch crosspoint, usaremos o sig totalmente decodificadoS n0a0ls0 atéS111 derivados
das oito configurações possíveis do inp de controleSu2t,sS1, eS0. Não é muito difícil ver como
implementar as conexões de controle restantes. Os interruptores diagonais implementam a função
de mudança de barril quando S =S1 =S0 = 0. Os interruptores imediatamente abaixo da diagonal
n2
conectarD6 aO7,D5 aO6, ,D0 aO1. Esta é quase a funcionalidade correta fSo2r =S1 = 0, S0 = 1.
Além disso, tudo o que precisamos é poder conectarDe7cttoO0. Isso é possível pela chave no
canto superior direito do array, conforme mostrado na figura. O conjunto de interruptores é
controlado pelo sinal decodificadoSa0l01.

A Figura 4.83 mostra o esquema de conexão crosspoint com o conjunto completo de sinais de controle
distribuídos pela estrutura. Para deslocar 0 bits, o siS g0n0a0l controla os transistores ao longo do
diagonal principalS. 001, o sinal para deslocamento de 1 bit, é dividido em duas diagonais, uma abaixo do mai
diagonal e uma acima. Usamos essa estratégia para cada um dos sinais de controle restantes. Com o aumento da
distância de deslocamento, o próximo sinal de controle é direcionado para a diagonal imediatamente abaixo à
esquerda daqueles controlados pelo sinal anterior. Por exemplo, os interruptores controlados por S010 estão
imediatamente abaixo e à esquerda dos interruptores de controleSd00b1y. Claramente, a implementação do switc
é mais eficiente. Requer apenas 64 transis(tpolruss a decode) r, embora o roteamento do sinal seja bastante
complexo. Caso não seja possível implementar o subsistema diretamente a nível de comutadores de transistor, a
melhor alternativa é utilizar uma ROM ou PAL para completar
implementação em um único pacote de circuitos integrados.

Resumo do estudo de casoNesta seção, você seguiu um procedimento de design de quatro etapas para mapear a especificação de palavras de um circuito lógico

combinacional em uma implementação real. Primeiro, você entende a especificação do problema identificando entradas, saídas e seus relacionamentos. Uma imagem ou

diagrama muitas vezes é uma ajuda indispensável para o processo de compreensão do problema. Segundo, você mapeia sua compreensão do problema em uma tabela-

verdade ou coleção de equações booleanas. Sem colocar o design em uma dessas formas, você terá dificuldade em usar as técnicas aprendidas no Capítulo deste capítulo

para derivar uma implementação. Terceiro, você escolhe sua tecnologia de implementação: portas programáveis discr, projetos baseados em memória ou talvez

abordagens alternativas baseadas em múltiplas outras lógicas de direcionamento. A escolha depende de muitas coisas: custo, disponibilidade de ferramentas CAD ou

programadores hardwa, área de circuitos. Projetos baseados em memória requerem uma tabela verdade. Os projetos orientados a portas começam com tabelas verdade o

equações booleanas, mas exigem um procedimento de minimização para uma implementação eficiente. Com a disponibilidade das ferramentas apropriadas de projeto

assistido por computador, isso não deve representar um grande problema, no entanto. A quarta e última etapa é aplicar o procedimento apropriado para obter a

implementação: o método K-map ou uma ferramenta CAD como espress uma rede lógica de dois níveis, fatoração booleana ou uma ferramenta como Com a disponibilidad

das ferramentas apropriadas de projeto assistido por computador, isso não deve representar um grande problema, no entanto. A quarta e última etapa é aplicar o

procedimento apropriado para obter a implementação: o método K-map ou uma ferramenta CAD como espress uma rede lógica de dois níveis, fatoração booleana ou uma

ferramenta como Com a disponibilidade das ferramentas apropriadas de projeto assistido por computador, isso não deve representar um grande problema, no entanto. A

quarta e última etapa é aplicar o procedimento apropriado para obter a implementação: o método K-map ou uma ferramenta CAD como espress uma rede lógica de dois

níveis, fatoração booleana ou uma ferramenta comoeuesim EUpara uma rede multinível.

[Início] [Próximo] [Anterior ]

Este arquivo foi atualizado pela última vez em 13/07/96 às


21:42:49. randy@cs.Berkeley.edu ;
[Início] [Próximo] [Anterior]

Revisão do Capítulo

O tema deste capítulo foi como construir sistemas digitais com blocos de construção lógicos mais complexos do
que as portas discretas dos Capítulos 2 e 3. Começamos com PALs e PLAs, particularmente as implementações
de lógica AND-OR definidas sobre múltiplas entradas e saídas. PALs e PLAs têm a importante capacidade de
serem programáveis: as conexões entre as portas podem ser conectadas "sob demanda" para implementar um
função específica.

ROMs são outra forma de lógica programável, implementando uma coleção de funções colocando t tabelas verdade em
uma matriz de elementos de memória. PLAs são atraentes quando há um alto grau de sh entre os termos de produto das
múltiplas funções de saída. No entanto, um método de minimização de dois níveis é crítico para usar PLAs (ou PALs) de
forma eficaz. Projetos baseados em ROM não exigem nada mais do que uma tabela de verdade, mas uma ROM não
explora condições de não-interesse ou termos de produto compartilhados entre a diversão de saída

Examinamos a lógica do switch com mais detalhes. Construir a lógica a partir de transistores individuais torna possív
implementar algumas funções de uma maneira mais eficiente do que com portas discretas. Dispositivos lógicos
Steerin, como multiplexadores e demultiplexadores, são exemplos de lógica dessa forma. Mesmo funções complexas
como o circuito Tally, podem ser implementadas de forma eficiente ao convertê-las em termos de sinais de dados
roteados através de uma rede de switches.

Também analisamos implementações de portas discretas de multiplexadores/seletores e demultiplexadores/dec e


descrevemos métodos para construir lógica de propósito geral a partir de tais blocos de construção.

Algumas portas lógicas não estão restritas às saídas 1 e 0. Uma porta tri-state tem um terceiro estado que é c
alta impedância e tem o efeito de se desconectar do nó do circuito de saída. Um portão com saídas de coletores
só pode conduzir sua saída para 0; em condições em que sua saída seria 1, o o realmente "flutua". Um nó de
circuito conectado a uma saída de coletor aberto também deve ser conectado a um resistor ascendente. Isso
garante que o nó será tratado como um lógico 1 quando nenhum dos conectados estiver direcionando o nó par
um lógico 0.

Fechamos este capítulo examinando problemas de palavras combinacionais. O procedimento é entender a declaração de
palavras do problema e então formulá-la em termos de uma representação de projeto adequada como uma tabela-
verdade. Uma vez que uma estratégia de implementação foi determinada - por exemplo, escolher quem implementar o
circuito em termos de uma ROM, log de dois níveis (IPcAL ou PLA), ou lógica multinível - o
método de projeto de lógica combinacional apropriado é app(lR ieOd Programação M, K-maps, ferramentas CAD para
simplificação) para obter a realização do circuito.

Leitura adicional
Livros sobre design digital com dispositivos programáveis surgiram apenas nos últimos anos.
Alford, Programmable Logic Designer's Guide, Sams and Co., Indianapolis, IN, 1989, oferece uma discussão
sobre tecnologia programável e métodos de projeto. O Capítulo 3 descreve a ampla gama de dispositivos
programáveis atualmente disponíveis, incluindo estruturas lógicas mais gerais do que PALs e Outro bom
livro sobre lógica programável é G. Bostock, Programmable Logic Devices: Technolo and Applications,
McGraw-Hill, Nova York, 1988. O Capítulo 2 descreve a tecnologia de processamento e circuito eletrônico de
dispositivos programáveis. O Capítulo 4 cobre o projeto lógico com PROMs, PLAs e PALs.

O manual padrão sobre componentes PLD é a 4ª edição do Monolithic Memories' Programmable


Logic Handb, Monolithic Memories, Inc., Santa Clara, CA, 1985. O livro contém muitas informações
sobre peças PLD da empresa que inventou o conceito.

A seção sobre lógica de comutação neste capítulo é baseada no texto pioneiro de C. Mead e L. Conw Introdução
ao Projeto de Sistemas VLSI, Addison-Wesley, Reading, MA, 1979, especialmente os Capítulos 1 3. Um tratament
mais moderno do CMOS VLSI e sua aplicação a circuitos de comutação e lógica de porta convencional pode ser
encontrada no livro de ED Fabricius, Introduction to VLSI Design, McGraw-Hill, Ne York, 1990. O conceito básico
de comutadores MOS é apresentado no Capítulo 1, com uma descrição mais detalhada do MOS implementaçõe
de circuitos Tally, NAND, NOR, AOI e multiplexadores no Capítulo 8.

[Início] [Próximo] [Anterior ]

Este arquivo foi atualizado pela última vez em 13/07/96 às


21:42:49. randy@cs.Berkeley.edu ;
[Topo] [Próximo][Anterior ]

Exercícios

1. (PALs e PLA)s Nosso estudo de caso de problema de terceira palavra descreveu uma "unidade de função" lógica
que calculou as oito funções combinacionais do inp , OUB,UMANANDB,UMA
UMAuatsndB: constante 1UMA
XORB,UMAXNORB,UMAEB,UMANEMB, e constante 0. Mostre como implementar isso usando uma matriz lógica
programável (ycom cinco entradas e uma saída)ut Desenhe a matriz AND e a matriz OR e indique quais
conexões devem ser feitas para implementar a função. Para cada saída da matriz AN, indique ao longo do fio o
termo do produto que está sendo implementado.

2. (PALs e PLA)s Mostra como implementar o decodificador de LED de BCD para sete segmentos usando um
como o da estrutura P16H8: 10 entradas, 8 saídas de porta OR e 7 termos de produto por OR ga a notação
abreviada desenvolvida em Seção 4.1.

3. (Transmission Gate) sUm circuito codificador de prioridade tem entradas e saídas numeradas de N. A
operação do -circuito é definida como segue. Determine a entrada de número mais alto que é afirmada.
Somente a saída com o mesmo índice que a entrada de número mais alto que é declarada sho declarada. Se
nenhuma das entradas for ativada, todas as saídas lerão um 0. Uma tabela verdade para um circuito codificador
de prioridade dois i é mostrada na Figura Ex4.3.

Implemente um circuito codificador de prioridade de duas entradas usando apenas inversores discretos e portas NAND.

Implemente a mesma função que (ia n), exceto usando portas de transmissão CMOS e
inversores. Contando transistores, qual implementação é mais eficiente para transistores?

4. (Transmission Gate) sConsidere a descrição do circuito a seguir, geralmente chamado de gerador de função. O
circuito tem duas entradas de dadosUMAtsa, ndB, quatro entradas de controleG , 0,G1,G2, eG3, e um
resultadoF.Fé definido como Descreva como "programar" esta função para
implementar as 10 funções a seguirUMA: EB,UMAOUB,UMANANDB,UMANEMB, 0, 1,UMA,B,UMAXORB,
eUMAXNORBcolocando os valores apropriados emG suas entradas.

Implemente esta função usando portas de transmissão CMOS e inversores (oHndentro apenast.: Usar

as entradasUMAeBcontrolar as portas de transmissão; considere como encaminhar o


Geu para a saídaF.)

5. (Switch Logic Implementatio)nMostra como implementar uma porta AND-OR-Invert de duas entradas por
duas pilhas com um número mínimo de transistores nMOS e pMOS.

6. (Multiplexadores vs. Demultiplexadores Defina e diferencie brevemente os seguintes termos: decodificador,


demultiplexador, multiplexador. Mencione o número de entradas, saídas, habilitar e selecionar bits qualquer.

Usando portas AND e OR, projete um circuito para portar uma única entrada de dados para uma das quatro
linhas de saída, determinada pelo índice codificado em binário nas duas linhas de controle. Qual das peças
acima você projetou?
Repita a etapa(b) usando uma "rede de comutação" de transistor em vez de portas AND e OR.
Compare a implementação da porta discreta com a implementação da porta de transmissão. Dê
uma vantagem e uma desvantagem de cada uma das abordagens.

7. (Implementação do Multiplexador A função do multiplexador 2:1 tem duas entradas de dadosUMA utasndB, uma seleção
entrada de controleS, e uma única saída de lógica positivaZutthat funciona da seguinte forma. WhS enis não declarado, entrada
UMAé fechado para a saída. QuandoSé afirmado, inpuBt é fechado para a saídaZt. Desenhe esquemas que
implementam a função multiplexadora usandoogapenasos seguintes componentes:

Inversão de buffers tri-state e inversores convencionais.


Portas NAND de coletor aberto, inversores convencionais e resistores pull-up. Repita as
partes (sa) e (b) para um multiplexador de quatro entradasS . 1,S0 = 00 portasUMAparaZ;S1,S0 =
01 portõesBparaZ;S1,S0 = 10 portasCparaZ;S1,S0 = 11 portasDparaZ.

8. (Lógica do Multiplexador) Implemente a função (UMA,B,C,D,E) = usando um

multiplexador e nenhuma outra lógica. As constantes lógica 1, lógica 0 e as variáveis, mas não seus
complementos, estão disponíveis.

9.(Multiplexer Logic) Implemente a função de somador de 2 bits (ou seja, numbe binário de 2 bitsUMArBmais número
binário de 2 bitsCDproduz resultado de 3 bitstXYZ)usando três multiplexadores 8:1. Mostre sua tabela verdade e ho
você derivou as entradas para os multiplexadores.

10.(Multiplexer Logic) Como os multiplexadores 32:1 não existem nos catálogos de componentes padrão, projete
uma rede multiplexadora de dois estágios que realize a função de seis variáveis

(UMA,B,C,D,E,F)
= Sm(3,7,12,14,15,19,23,27,28,29,31,35,39,
44, 45,46,48,49,50,52,53,55,56,57,59 )

Quantos pacotes TTL são usados?


Quantos pacotes TTL são necessários para implementar esta função usando inversores
convencionais e portas NAND em uma rede de dois níveis?

11. (Multiplexer Logic) Você está trabalhando para uma empresa que produz clones de computadores de nomes famosos.
Sua tarefa é copiar o circuito mostrado na Figura Ex4.11, que é um componente do computador. Por causa das leis de
direitos autorais, seu chefe é muito enfático para que o novo circuito não se pareça com o antigo. Além disso, a empresa
atacadista de eletrônicos do cunhado do seu chefe tem um acordo especial com o multipl. Portanto, o chefe quer que você
use apenas multiplexadores 4:1 em seu circuito.

12. (Implementação do Decodificador)nDemonstre como implementar um decodificador 6:64 usando decodificadores genéricos
2:4 a 4:16.

13. (Implementação do decodificador)nVimos como implementar decodificadores usando portas AND e portas N
Mostrar como implementar a tabela verdade do decodificador 74138 4:16, incluindo a lógica de habilitação de
três entradas,G1, , , usando apenas portas NAND e inversores.

14.(Implementação do decodificador nUm decodificador junto com uma porta OR conectada ao seu terminal de
saída pode ser usado na síntese de redes combinacionais.

Implemente a função (A,B,C,D) = (não


necessariamente minimizado para) meditar um decodificador 4:16 e uma porta OR -fan-in muito grande.
Compare o número resultante de CIs com uma solução usando apenas portas discretas.

15. (Método de Implementação)sDada a seguinte função na soma de produtos para(rm não


necessariamente minimizar)d:
Implemente a funçãoFusando
Um multiplexador 8:1.
Um decodificador 4:16 com uma porta OR de 16 entradas.
Uma ROM de 16 palavras.
Uma estrutura do tipo PLA usando a notação da Seção 4.1.
(Método de implementação)sDada uma função booleana de quatro entradas (n,UMA,B,C,D) =Sm (
0,3,5,7,11,12,13,1)5Implemente a função usando um multiplexador 16:1. Implemente usando um
multiplex 8:1 (eruseD, pois os dados MUX inserem umUMAd,B,Ccomo entradas de controle MUX).

Implemente a função usando um multiplex 4:1 (eH r.int:LugarUMAeBnas entradas selecionadas.


Suponha que , estejam disponíveis e use uma porta OR para formar uma das entradas do
multiplexador.)
Implemente a função usando um decodificador 4:16 e uma porta OR.

16.(Método de implementação)sDada a função(UMA,B,C,D) = ( +B) ( +C+D) (UMA+ +D) na forma de


produto minimizado de somas e o não-cuidadoDs=et{M0,M2,M9,M10} , faça o seguinte: Escreva na
forma de produto canônico de somas.

Escreva na forma de soma canônica de produtos.


Escreva na forma de soma minimizada de produtos.
Mostre como implementar com uma única porta AND-OR-Invert de três pilhas por três entradas.
Mostre como implementar com um multiplexador 8:1.
(Método de implementação)sDadas as três funçõesXs,S,
eZ, definido porX(UMA,B,C,D) =Sm(1,2,3,5,7,9,11,13,1)5,S(UMA,B,C,D) =PM
(2,3,4,5,6,7,8,10,12,1)4, eZ(UMA,B,C,D) =Sm(0,1,2,3,5,7) , Encontre a soma mínima de produtos
para cada uma dessas funções. Quantos termos de produtos exclusivos existem em sua
resposta?
Encontre uma forma alternativa de soma de produtosX porS, eZque minimiza o número de
termos de produto exclusivos para implementar todas as três funções simultaneamente. Quantos termos de
produtos exclusivos você encontra nesta implementação?
Mostre como implementar sua solução para p(ab rt) em uma estrutura PLA.

17. (Método de Implementação)sConsidere a implementação de um circuito com quatro entradas de dadosUMAu, ts


B,, C,D, duas saídas,FeG, e duas entradas de controle e . O diagrama de blocos e a tabela verdade funcional são
mostrados na Figura Ex4.19.
Assuma isso , , ,e Estão disponíveis. ImplementarFt eGusando portas AND e OR
só.
Assuma isso , , ,e Estão disponíveis. Desenhe o esquema implementando as funções
usando portas NAND e buffers tri-state não inversores com solução ena(bYleosu.r) baixa
ativa não deve ser uma simples reformulação de sua resposta para (rap)a.)rt
Suponha que , , , e estão disponíveis. Desenhe os esquemas que implementam FeanntdG
usando apenas portas NAND de coletor aberto e inversores convencionais.
ImplementoFeGusando apenas portas de transmissão.

18. (Implementação baseada em ROM) nProjete um esquema para um subsistema de memória somente leitura de tamanho
65536 palavras por 8 bits de largura, usando 2764 ROMs de 8K por 8 bits.

Use um único decodificador 3:8 e inversores.


Use um único decodificador 2:4 e inversores. Existe uma maneira inteligente de usar as entradas de
habilitação de saída para a ROM, bem como as linhas de seleção de chip?

19. (Word Problem)s Uma rede lógica tem quatro entradas(sInput0, Input1, Input2, Inpu)t3e duas saídas(Output0,
Output)1. Pelo menos uma das entradas é sempre declarada alta. Se uma determinada linha de entrada tiver lógica 1
aplicada a ela, os sinais de saída codificarão seu índice em binário. Por exemplo, se Input2 estiver ativado, a saída lê
Outp=ut1, Output0= 0. Se duas ou mais entradas estiverem na lógica 1, a saída será definida de acordo com qual
entrada tem o maior in(dInepxut3 > Input2 > Input1 > Inpu )t0.

Preencha a tabela verdade para esta função.


Preencha K-maps para Output1 e Output0 e encontre a expressão booleana para a
soma mínima de implementação de produtos.

20.(Word Problem)s Você deve implementar um multiplicador combinacional. Possui duas entradas de 2 bits e um
saída de bits. A primeira entrada de 2 bits é representada pela variaUMAb,leBs; a segunda entrada de 2 bits é
e,X,são
representada porC,D. As saídas S,ZC, do bit mais significativo para o menos.

Complete uma tabela verdade que descreva o comportamento funcional do multiplicador.


Encontre a soma mínima de formulários de produtos para as saídas usando o método K-map.

21. (Palavra Problema)s Ann-input majority function afirma sua saída sempre que mais da metade de suas entradas
são afirmadas. Você deve implementar uma função de maioria de sete entradas, que irá declarar sua saída sempre
que quatro ou mais de suas entradas forem declaradas. Não entre em pânico só porque esta é uma função de sete
variáveis. Construa-o como uma função multinível cujas subfunções têm menos de seis variáveis. diagrama de
blocos, ele se parece com a Figura Ex4.23.

Os circuitos #1 e #2 registram o número de suas entradas que são ativadas, fornecendo a contagem em saídas
binárias (V,Ssão o bit mais significativoC s;,Zsão os menos significativos b)it.sCom base nessas segundas
entradas de nível,Qdetermina se mais de quatro ou mais entradas originais são 1.

Encontre a soma minimizada dos produtos para o circuito(#c1ircuit #2 é idêntico)l. As


funçõesVeCdeve parecer familiar. O que eles implementam? Complete uma tabela verdade
de cinco variáveis para o circuito #3.
Encontre a soma mínima dos produtos da forma fQ ou usando o método K-map.
Encontre o produto mínimo das somas da forma fQou usando o método K-map.

22. (Word Problem)s Você deve projetar um conversor que mapeia um código binário de 4 bits em um código Gra de
4 bits. A sequência de código Gray de 4 bits é definida da seguinte forma: 0000, 0001, 0011, 0010, 0110, 0111, 0 1100,
1101, 1111, 1110, 1010, 1011, 1001, 1000. Forneça a tabela verdade e mostre como implemente o conversor de
código como um circuito ROM e como um circuito PLA.

23.(Estudo de Caso)sQuão perto as hastes podem ser colocadas na esteira transportadora sem invalidar a
solução do Estudo de Caso 1?

24. (Estudo de caso)sVerifique se as equações misII para o decodificador de LED BCD para sete segmentos são
mapeadas para o mesmo local que as equações para café expresso. Isso pode ser feito expandindo as equações
em dois níveis de soma de produtos e preenchendo K-maps de quatro variáveis da equação
assim derivado. Como os K-maps se comparam com os da Figura 4.70?

25. (Case Studie)sDesejamos estender o decodificador de display LED de BCD para sete segmentos para se tornar um
decodificador de display LED hexadecimal. As representações do LED dos dígitos hexadecimais 0, 1, 2, 3, 4, 5, 6, 7, 9 são
exatamente as mesmas dos dígitos BCD equivalentes. A Figura Ex4.27 mostra como o segmento di deve ser iluminado par
denotar a escavação hexadecimal UMAit(s1010),B(1011),C(1100),D(1101),E(1110),
eF(1111). Obtenha a soma minimizada de implementações de produtos para as entradas de exibição.

Mostre como implementar a lógica para o projeto estendido como um PLA com quatro entradas e sete saídas
Desenhe o array AND e o array OR e indique quais conexões devem ser feitas para implementar a função. Para
cada saída da matriz AND, indique ao longo do fio o termo do produto que está sendo implementado.

26. (Estudo de Caso) Projete para o nível da porta uma unidade de função aritmética e lógica com base no círculo do Estud
de Caso 3. As modificações na especificação são as seguintes. Nós adicionamos uma adiçãoCumaeueunentrada e uma
saída extraCtFora.Quando a entrada de controleC s0C1C2 = 000,Fgera a funçãoUMAmaisB
maisCineCouté o resultado de transporte da adição binária. O resto da configuração do sinal de controle
gera as mesmas funções que bef(oC réo.uté um não se importa com isso) e.
27. (Estudo de caso)sNa tabela de funções para o deslocamento do barril (eFr igura 4.81), os dados de entrada giram da
direita para a esquerda. Como a implementação muda se os dados forem girados da esquerda para a direita inst Sua
resposta deve considerar os estilos de implementação da porta lógica e da porta de transmissão.
28. (Circuito Tally) Examine a tabela verdade para a função Tally de duas entradas (ioFnigure 4.23) com muito
cuidado. Existe uma maneira de implementar as três saídas sem usar um XOR( gHumadentrotet:?Pense em uma
maneira de implementar a saída Um em termos das funções Zero e Dois. esta implementação revisada do nível de
porta se compara com a implementação do switch?

[Topo] [Próximo][Anterior ]

Este arquivo foi atualizado pela última vez em 13/07/96 às


21:42:49. randy@cs.Berkeley.edu ;

Você também pode gostar