monografia - circuitos sequenciais
TRANSCRIPT
SISTEMAS DIGITAIS 1
5 - Análise e síntese de circuitos sequenciais
síncronos de baixa complexidade
5.1 - Introdução
A análise de circuitos sequenciais (ou, aliás, de qualquer tipo de circuito) é o
processo de obter uma descrição do seu funcionamento a partir do exame do circuito -
exame esse feito sobre o diagrama lógico.
A síntese de um circuito é a tarefa inversa: partindo de uma descrição do
funcionamento (pretendido) para o circuito, construí-lo, ou seja, chegar ao diagrama lógico
de um circuito que exiba o funcionamento pretendido.
Tanto a análise como a síntese de circuitos sequenciais síncronos podem ser feitas
recorrendo a metodologias diversas - devendo todas elas fornecer processos sistemáticos
de obtenção dos objectivos pretendidos. Como existem circuitos com graus de
complexidade muito diferentes, um método aplicável a circuitos simples pode ser
impraticável quando aplicado a um circuito complexo …e um método adequado à análise
de circuitos complexos pode parecer deslocado e inútilmente trabalhoso se aplicado a um
circuito simples.
Por outro lado, as metodologias seguidas na síntese podem ser orientadas para a
utilização de módulos construtivos de relativa complexidade, ou, alternativamente, não
permitirem senão a utilização de dispositivos elementares - flip-flops e portas lógicas,
naturalmente os existentes sob a forma de circuitos integrados da família TTL (ou outra
família lógica).
Neste capítulo estudaremos metodologias adequadas a circuitos com um número
de variáveis de estado não superior a 6, e que produzem - quanto à síntese - apenas
soluções baseadas em dispositivos elementares: portas lógicas e flip-flops D e J-K. Estes
métodos são também aplicáveis à implementação com dispositivos programáveis - tais
como os PALs - que contêm internamente essas mesmas portas lógicas e flip-flops.
Estudaremos em 1º lugar o problema da análise de circuitos sequenciais e em
seguida o problema mais complexo da síntese de circuitos.
Circuitos síncronos vs. circuitos assíncronos
Neste capítulo apenas abordamos os circuitos síncronos (que na literatura também
aparecem designados por pulse-mode circuits ) , com exclusão dos circuitos assíncronos
(também chamados fundamental-mode circuits ).
Com efeito, a análise e síntese de circuitos assíncronos é extremamente mais
complexa do que as dos circuitos síncronos. Por esta razão, os circuitos assíncronos são
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 2
limitados a implementações de pequena complexidade, sendo a larga maioria dos circuitos
sequenciais projectados como circuitos síncronos.
Note-se que existem funções sequenciais que têm especificações de
funcionamento que podem ser cumpridas por um circuito assíncrono mas não por um
circuito síncrono. No entanto, trata-se geralmente de problemas muito delimitados (por
exemplo, dividir por 3 a frequência de um sinal de entrada), que podem ser considerados à
periferia de um circuito global - isto é, mesmo nos casos em que é necessário recorrer a
circuitos assíncronos, nem por isso se converte todo o projecto ao funcionamento
assíncrono, mas sim apenas as sub-funções imprescindíveis.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 3
Máquinas de estados finitos
Uma máquina de estados finitos é caracterizada essencialmente pelas seguintes
propriedades:
• Requisito finito de memória: o número de elementos de memória necessário para
determinar as saídas é finito.
• Propriedade do disparo externo: uma transição do estado interno nunca causa
uma subsequente transição nesse estado interno.
• Propriedade do relógio único: existe uma única entrada (designada por relógio)
que temporiza as mudanças de estado; todas as mudanças de estado ocorrem em
sincronismo com o relógio.
• Propriedade da vertente única: todas as variações de estado interno ocorrem em
resposta à transição de 0 para 1 em uma variável de entrada (essa variável de
entrada é o relógio ). A mudança de 1 para 0 nunca causa qualquer variação no
estado interno. (É claro que também haverá outros circuitos em que a vertente
activa é a 1->0; o que é esencial é que a vertente activa seja única).
Neste capítulo apenas examinaremos as Máquinas de estados finitos, as quais
constituem uma sub-classe da categoria mais lata dos circuitos sequenciais síncronos.
Num ou noutro exemplo aparecerão circuitos que utilizam as entradas assíncronas,
que existem em muitos flip-flops, para fins de inicialização. A operação dessas entradas
assíncronas é tratada à parte do funcionamento síncrono.
5.2 - Formas de descrição do funcionamento dos circuitos sequenciais
Diagrama de estados. Tabela de transição
A descrição do funcionamento de circuitos combinacionais é trivial: basta uma
simples tabela de verdade (da tabela de verdade podem ser obtidas as expressões lógicas
das variáveis de saída, que consituem uma outra forma válida de descrição do
funcionamento dos circuitos combinacionais).
Nos circuitos sequenciais as saídas dependem não só das entradas como também
do estado do circuito (relembre-se que o estado do circuito é definido pelo conjunto de
valores das saídas das células de memória que nele existem).
A descrição do funcionamento dos circuitos sequenciais é inerentemente mais
complexa: é necessário especificar todas as possíveis sequências de estados para o
circuito, bem como os valores das saídas que estão associados a esses estados - incluindo
o caso das saídas condicionais, que dependem não só do estado em que o circuito se
encontra mas também dos valores das entradas.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 4
A forma mais sugestiva de descrição do funcionamento dos circuitos sequenciais é
o diagrama de estados . No diagrama de estados, cada estado é representado por uma
oval etiquetada com a designação (ou símbolo)do estado , designação essa que pode ser
tão compactada como uma simples letra ou ser uma mnemónica que traduza algum
significado especial que o estado tenha.
As possíveis transições a partir de cada estado são representadas por "setas" que
partem desse estado e que apontam para outros estados (ou mesmo para o próprio estado,
quando representam a manutenção do estado).
Como é óbvio, aquilo que decide qual, a partir de um determinado estado, das
transições é que se efectiva é o conjunto dos valores das variáveis de entrada. Assim, cada
seta é etiquetada com a combinação de valores das variáveis de entrada que comandam a
transição representada pela seta.
A título de exemplo, vejamos o diagrama de estados de um circuito sequencial com
uma única (além da entrada de relógio) entrada "SEGUE", com o seguinte funcionamento:
- enquanto SEGUE = 1, percorre a sequência de estados A, B, C, D, A, …
- enquanto SEGUE = 0 mantém-se no mesmo estado
A
B
C
D
1
11
1
00
0
0
Fig.5.1
Neste diagrama de estados, os 1s e os 0s associados às setas são os valores da
variável de entrada SEGUE que comandam as transições representadas pelas setas.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 5
Num diagrama de estados para uma função com várias entradas, em vez de 0s e
1s aparecem (associados às transições) conjuntos de 0s e 1s (e eventualmente também
Xs, que correspondem ao caso de transições que são independentes de uma ou mais
variáveis) que representam as combinações de valores das várias entradas que comandam
cada uma das transições. Assim, é conveniente associar ao diagrama lógico uma legenda
que indique o formato com que são etiquetadas as transições.
O diagrama de estados também deve exprimir a dependência das saídas com as
entradas e com o estado. Dada a possibilidade das saídas dependerem não só do estado,
mas também das entradas, as saídas não são geralmente associadas com os estados mas
sim com as transições (o que deve ser entendido da maneira seguinte: os valores de saídas
que são associados a uma determinada transição são os valores que se verificam durante o
estado de partida dessa transição, quando as variáveis de entrada tomam os valores que
comandam essa mesma transição) . Também seria plausível associar os valores das saídas
com os estados, mas isso teria de ser feito sob uma forma condicional qualquer, como por
exemplo uma pequena tabela em que as variáveis independentes são apenas as entradas -
mas a convenção normalmente seguida é a de associar os valores das saídas às transições.
Vamos ver alguns exemplos que ilustram estas convenções de representação.
Em 1º lugar, vamos supôr que o circuito da figura acima deverá produzir as saídas X e Y,
de acordo com a seguinte lei:
Estado X Y
A
B
C
D
0 0
0 1
1 0
1 1
O diagrama de estados será o seguinte:
A
B
C
D
1/00
1/011/10
1/11
0/010/11
0/00
0/10
SEGUE / X YFormato:
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 6
Fig.5.2
Como neste caso as saídas não dependem directamente das entradas, mas sim
apenas do estado, aparecem combinações de saída iguais nas duas transições que partem
de cada estado.
Por vezes pode ser necessário associar mais do que uma etiqueta a uma seta que
represente uma transição.
É o caso do seguinte exemplo: suponhamos um circuito com dois estados A e B,
uma entrada E e uma saída S. No estado A, a saída S deve reflectir o valor da entrada E, e
no estado B a saída S deve estar incondicionalmente a 1.
O diagrama será o seguinte:
A
B
X / 1
E / SFormato:
0 / 0
1 / 1
Fig.5.3
Uma outra forma de representar o funcionamento de um circuito sequencial é a
tabela de transição ou tabela de estado seguinte. A tabela de transição é semelhante a
uma tabela de verdade, mas tem dois grupos de variáveis independentes - as entradas e o
estado presente - e dois grupos de variáveis dependentes - as saídas e o estado seguinte.
A tabela de transição referente à função que tem o diagrama de estados da Fig.5.2
será a seguinte:
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 7
Estado presente
Entradas
SEGUE
Estado seguinte
Saídas
X Y
A
B
B
A
0
1
C
C
D
D
0
1
0
1
0
1
A
B
C
D
B
C
D
A
0 0
0 0
0 1
0 1
1 0
1 0
1 1
1 1
A tabela de transição contém a mesma informação que o diagrama de estados,
mas sob uma forma não tão imediatamente apreensível.
O ponto de partida do trabalho de síntese é normalmente uma descrição verbal do
funcionamento do circuito, e o primeiro passo é a obtenção de uma primeira descrição
formal que corresponda a esse funcionamento. Para essa primeira descrição formal é
utilizado quase sempre um diagrama de estados, uma vez que é a representação mais
sugestiva para comparar com a descrição verbal.
Como já vimos, o estado de um circuito sequencial corresponde a uma combinação
de valores dos estados das células de memória (flip-flops, no caso de circuitos síncronos).
As saídas dos flip-flops representam as variáveis de estado e a combinação de valores das
variáveis de estado associada a um determinado estado é o código desse estado.
No diagrama de estados, bem como na tabela de transição, cada estado pode
aparecer referido pela sua designação ou (símbolo) ou pelo seu código de estado, ou ainda
pelas duas coisas.
Para completar a descrição, também é usual associar, quer ao diagrama de
estados, quer à tabela de transição, um diagrama de blocos global que serve para indicar
claramente quais as entradas e as saídas do sistema.
Na análise e síntese de circuitos sequenciais também tem relevância a tabela de
excitação. Esta tabela é semelhante à tabela de transição, mas em vez do estado seguinte
inclui os valores das entradas a aplicar aos flip-flops (que são portanto as variáveis de
excitação dos flip-flops) para a obtenção do estado seguinte.
A tabela de excitação para flip-flops D é igual à tabela de transição.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 8
5.3 - Análise de circuitos sequenciais síncronos
Como foi referido, a análise de circuitos sequenciais parte do exame do diagrama
lógico, e o resultado final será uma descrição do seu funcionamento - sob a forma de um
diagrama de estados e, eventualmente, de uma descrição verbal.
O primeiro passo será a leitura (a partir do diagrama lógico) das expressões das
funções de excitação, isto é, as funções aplicadas às entradas dos flip-flops. (A parte -
combinacional - do circuito que recebe as saídas dos flip-flops e as entradas, e que tem por
saídas as variáveis de excitação dos flip-flops é o descodificador de estado seguinte ).
A tabela de excitação pode então ser preenchida, e a partir desta, a tabela de
transição, ou então directamente o diagrama de estados. Por fim, o diagrama de estados
poderá sugerir uma descrição verbal da função do circuito.
EXEMPLO 1: Seja o circuito:
JA
KA
QA
QA
JB
KB
QB
QB
Relógio
S
1
1
Do diagrama lógico tiramos as funções de excitação :
JA = B . S KA = 1
JB= A . S KB = 1
E podemos então preencher a tabela de excitação, que aliás podemos combinar
com a tabela de transição numa tabela única:
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 9
Estado presente
QB(n)
QA(n)
S J B K B J A K A
Estado seguinte
QB(n+1)
QA(n+1)
0 0 0 0 1 0 1 0 0
0 0 1 0 1 1 1 0 1
0 1 0 0 1 0 1 0 0
0 1 1 1 1 1 1 1 0
1 0 0 0 1 0 1 0 0
1 0 1 0 1 0 1 0 0
1 1 0 0 1 0 1 0 0
1 1 1 1 1 0 1 0 0
Da tabela de transição desenha-se directamente o diagrama de estados.
Código de estado: formato Q QB A
0 0
0 1
1 0
1 1
0 1
1
X (indiferente)
X (indiferente)
Formato (transições): S
0
A descrição verbal poderia ser: o circuito tem um estado de partida com o código
(QB QA) 00. Quando a entrada S é 1, avança para o estado 01, depois para o 10 e
finalmente volta a 00. Em qualquer estado, com S = 0 volta ao estado 00.
Há um estado 11 que não faz parte da sequência principal.
A entrada S serve portanto de controlo para o avanço na sequência principal,
composta pelos estados 00, 01 e 10.
EXEMPLO2: Seja o circuito
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 10
JA
KA
QA
QA
JB
KB
QB
QB
JC
KC
QC
QC
CLR CLR CLR
Relógio
APAGA
Existe um sinal APAGA que está ligado às entradas assíncronas de CLEAR. Como o
efeito CLEAR é accionado quando a linha é posta a 0, conclui-se que o sinal APAGA, quando
a 0, coloca os 3 flip-flops a 0, assíncronamente.
Esta é a única funcionalidade assíncrona neste circuito - tudo o resto funciona
síncronamente.
Do diagrama lógico tiramos as funções de excitação (síncronas):
JA = QC KA = QC
JB = QA KB = QA
JC = QB KC = QB
Estas expressões permitem construir a tabela de excitação/transição :
Estado presente
QB(n)
QA(n)
J B K BJ A K A
Estado seguinte
QB(n+1)
QA(n+1)
0 0 0 1 0 1 1 0
0 0 0 1 0 1 0 0
0 1 0 1 1 0 1 0
0 1 0 1 1 0 0 0
1 0 1 0 0 1 1 1
1 0 1 0 0 1 0 1
1 1 1 0 1 0 1 1
1 1 1 0 1 0 0 1
QC(n)
0
1
0
1
0
1
0
1
J C K C
1 0
0 1
1 0
0 1
1 0
0 1
1 0
0 1
QC(n+1)
0
0
1
1
0
0
1
1
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 11
E daqui construimos o diagrama de estados. Tomemos o estado 100 (formato
QAQBQC) como ponto de partida; desenvolvendo a sequência, temos:
100
110
111
011
001
000
Esta sequência abarca apenas 6 dos 8 códigos de estado possíveis. Para completar
o diagrama de estados falta considerar os outros dois estados:
101
010
Falta apenas a descrição verbal do funcionamento do circuito. Do diagrama total, é
aparente que a sequência principal é a composta por 6 estados; pode ser até que a função
pretendida para o circuito corresponda apenas a essa sequência. No entanto, dado
existirem 3 flip-flops, há 8 estados possíveis, e os dois adicionais aparecem no diagrama de
estados completo.
Em relação à sequência que se presume ser a principal, podemos dizer que
funciona como um registo de deslocamento de 3 bits, em que o padrão existente em
QAQBQC se desloca uma casa para a direita em cada impulso do relógio. O registo é
recirculante, mas com negação no percurso de recirculação. Assim, quando está 1 em QC,
o estado seguinte de QA é 0.
Este tipo de funcionamento correponde aos twisted-ring counters, também
chamados contadores de Moebius.
Finalmente, podemos enumerar um conjunto de passos que pode servir de guia
para o processo de análise:
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 12
1º - Considerar separadamente as partes do circuito que dizem respeito ao funcionamento
síncrono e as que dizem respeito ao funcionamento assíncrono.
Para a parte respeitante ao funcionamento síncrono:
2º - Ler as funções de excitação (ou seja, as expressões das saídas do
Descodificador de estado seguinte).
3º - Construir a tabela de excitação e a tabela de transição.
4º - A partir da tabela de transição, desenhar o diagrama de estados.
Isto é feito escolhendo um estado de partida (preferivelmente aquele que, segundo
a tabela de transição, parecer o estado inicial) e em seguida ir marcando todos os
estados que estão na sequência daquele, tomando para cada estado todas as possíveis
hipóteses de estados seguintes. Para cada estado, existe um número máximo de
estados seguintes possíveis, número máximo esse que é igual a 2Ne, em que Ne é
o número de entradas do circuito - mas a tabela de transição poderá indicar que
vários desses estados seguintes possíveis são idênticos, ou seja, que determinado
circuito tem um nº de estados seguintes menor do que o máximo possível.
5º - Obter uma descrição verbal do funcionamento do circuito. Aqui, o mais
importante será identificar a "lógica" da sequência que o circuito segue. A
descrição verbal carece de sentido se não se conseguir identificar essa "lógica".
5.4 - Síntese de circuitos sequenciais
5.4.1 - Validação das especificações. Construção do primeiro diagrama de estados
Quase sempre, a especificação inicial de um circuito sequencial é uma descrição
verbal do funcionamento pretendido para o circuito.
Como a especificação de um circuito sequencial deve definir todas as possíveis
sequências de estados para o circuito, bem como os valores das saídas que lhe estão
associados, compreende-se que de uma descrição verbal surjam frequentemente
especificações incompletas, ou com incongruências (Em alguns casos é a falta de
pormenorização adicional que faz considerar incompletas as especificações: é por exemplo
o caso dos detalhes relacionados com a temporização dos sinais de entrada e de saída - se
os sinais são ou não sincronizados com um relógio, quais as restrições à sua temporização,
…).
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 13
Assim, o primeiro passo do trabalho de síntese é a validação das especificações
recebidas: devem ser completas e não conter incongruências. Quando o implementador de
um sistema digital concluir que as especificações são incompletas ou incongruentes, deve
apontar esses problemas ao especificador, que elaborará novas especificações. O trabalho
de síntese volta então ao princípio (este passo pode repetir-se várias vezes).
O segundo passo do trabalho de síntese é a obtenção de uma primeira descrição
formal do funcionamento do circuito, normalmente sob a forma de um diagrama de
estados - já que é a forma que mais directamente se obtém da descrição verbal.
Ora a detecção de especificações incompletas ou incongruentes também só pode
ser feita convenientemente com base no diagrama de estados. Assim, a validação das
especificações e a construção do diagrama de estados são feitos num só passo. A
obtenção, sem problemas, de um diagrama de estados claro é prova de que a
especificação, no que toca à sequência, não é incompleta nem tem incongruências.
Obtenção do diagrama de estados a partir de uma descrição verbal
A dificuldade de obtenção do diagrama de estados a partir da descrição verbal
varia não só com o grau de complexidade do problema, mas também com a maneira como
é feita a descrição verbal. Esta pode descrever o problema (aquilo que o circuito deve
fornecer em termos de funcionamento) ou uma solução já delineada para o problema (que
poderá ir ao ponto de ser uma "descrição do diagrama de estados"). Aliás, a especificação
propriamente dita será uma descrição do 1º tipo; quando a descrição é do 2º tipo, admite-
se que já foi dado algum passo para a resolução do problema.
Vamos começar por um exemplo particularmente simples e passar depois a casos
mais complexos. Veremos em secções posteriores que para uma mesma especificação é
possível obter vários diagramas de estados, todos eles correctos, mas alguns mais simples
do que os outros. Existem várias técnicas para a obtenção de diagramas de estados
"minimizados" mas por agora interessa-nos apenas obter um diagrama de estados
correcto.
EXEMPLO 1 : Uma função sequencial F é descrita verbalmente da seguinte maneira:
"O circuito admite apenas uma entrada INICIO (além da entrada de relógio).
Enquanto INICIO se mantiver a 0, o circuito deve percorrer encadeadamente uma
sequência de 4 estados A, B, C, e D.
A-> B -> C -> D -> A -> ……
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 14
(óbviamente, passando de estado a estado na vertente activa do relógio). Quando o sinal
INICIO fôr 1, o circuito deverá transitar para o estado A (ou manter-se lá). O circuito deve
apresentar uma saída S que estará sempre a 0, excepto no estado D, em que deverá estar
a 1 independentemente do valor da entrada INICIO.
O diagrama de estados será:
A
B
C
D
0 / 0
0 / 0
1 / 0
1 / 0
0 / 0
INICIO / SFormato:
1 / 0
X / 1
Neste exemplo foi especialmente fácil desenhar o diagrama de estados porque a
descrição verbal já definia completamente o diagrama de estados: tanto os estados
existentes, como as transições entre eles.
EXEMPLO 2 : Projectar um circuito que produza um pulso a 1 na saída S (com a duração de
um período de relógio) quando 3 valores sucessivos (isto é, os valores verificados nos
instantes de 3 vertentes activas do relógio sucessivas) - ou "amostras" - da entrada Z têm
um número ímpar de 1s (1 ou 3).
Após 3 impulsos de relógio (quer seja produzido pulso ou não), o circuito deve
voltar ao início e reiniciar o processo de teste.
Também faz parte da especificação o seguinte diagrama temporal, que define a
temporização da entrada Z e da saída S:
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 15
1º valor
Relógio
2º valor 3º valor 1º valor 2º valorZ
S
Possibilidade de pulso a 1
Neste caso não sabemos quais são os estados que o diagrama de estados deve
comportar - temos que os deduzir de alguma maneira.
Claramente, deverá existir um estado inicial, em que ainda não foi examinada
nenhuma amostra de Z - chamemos A a este estado. Deste estado, poderá haver
transições para um ou mais estados seguintes. Como o que decide para qual desses
estados é que o circuito transita é apenas o valor da entrada Z (que só pode assumir dois
valores: 0 ou 1) - existe um máximo de dois estados seguintes para o estado A . Sejam
eles B e C. Análogamente, para cada um de B ou C podem existir dois estados seguintes.
Sejam D e E os estados seguintes de B, e F e G os estados seguintes de C.
A
F G
C
D E
B
Z / SFormato:1 / 0
1 / 00 / 01 / 00 / 0
0 / 0
Quando o circuito passa a um dos estados B e C, já foi examinada a 1ª amostra de
Z e quando o circuito passa a um dos estados D, E, F ou G, já foi examinada a 2ª amostra
de Z.
Quando, encontrando-se o circuito num dos estados D, E, F ou G, é examinada a 3ª
amostra de Z (o que acontece na vertente de relógio nº3), o circuito já pode decidir se se
deve produzir pulso em S ou não. Com efeito, se o circuito está no estado D, sabe-se que
as duas primeiras amostras foram 00, se está no estado E sabe-se que as duas primeiras
amostras foram 01, etc.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 16
1º valor
Relógio
2º valor 3º valor 1º valor 2º valorZ
S
Estado A B CouD EF Gou
, ,
1 2 3 1' 2'
O pulso de saída é especificado como tendo a duração de um período de relógio.
Assim, é necessário dedicar um estado especial à produção do pulso (um estado com a
saída S incondicionalmente a 1).Para o caso de não ser produzido pulso, terá que haver um
estado "gémeo" com saída S incondicionalmente a 0. Seja H o 1º destes estados e I o 2º.
Qualquer destes estados ficará localizado entre as vertentes 3 e 1'.
Do diagrama temporal, vê-se que na sequência de teste anterior assumiu-se que o
estado A ficava localizado antes da vertente 1. Assim, os estados H e I estão em
sobreposição com o estado A, o que é óbviamente impossível.
Este problema fica resolvido se eliminarmos os estados H e I e em vez do estado A
tivermos dois estados A' e A" , idênticos no que toca às transições para os estados
seguintes, mas diferentes quanto ao valor da saída S: A' terá a saída S incondicionalmente
a 0 e A" terá a saída S incondicionalmente a 1.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 17
O diagrama de estados completo será:
A'
F G
C
D E
B
Z / SFormato:
1 / 0
1 / 00 / 01 / 00 / 0
0 / 0A"0 / 1
1 / 1
1 / 00 / 0
0 / 01 / 0 1 / 00 / 0 1 / 0
0 / 0
EXEMPLO 3 (Um caso de especificação incompleta) : Projectar um contador binário que
siga a sequência 0 - 1 - 2 - 0 - … enquanto a entrada de controlo LONGO estiver a 0 e que
siga a sequência 0 - 1 - 2 - 3 - 4 - 5 - 0 - … enquanto LONGO estiver a 1.
Ao desenhar o diagrama de estados, apercebemo-nos que a especificação não
define (nem pode dela ser depreendido de uma maneira clara) qual deve ser a evolução do
circuito nos seguintes casos:
estado 3, LONGO a 0
estado 4, LONGO a 0
embora se possa admitir que quando no estado 5, LONGO está a 0, é lógico que o estado
seguinte seja o 0. Nos dois casos anteriores, tanto se pode pôr a hipótese de deixar
completar a sequência longa, como a de voltar imediatamente ao estado 0.
0
1
2
5
4
3
?
?
Formato: LONGOX
X
1
0
0
0
1
1
X
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 18
Neste caso, o implementador teria de obter do especificador uma especificação
completa no que toca às transições a partir dos estados 3 e 4.
5.4.2 - Obtenção de diagramas de estados simplificados
Redução de estados
Para uma mesma função sequencial, podem definir-se vários diagramas de estados
- todos eles correctos - diferindo entre si pelo grau de complexidade.
Obviamente, interessa obter um diagrama de estados de complexidade mínima (ou
pouco acima da mínima), ou seja, com o número mínimo de estados, ou pouco além do
mínimo. Assim reduzir-se-á o mais possível a complexidade do circuito necessário para
implementar o diagrama de estados.
Mas não há nenhum processo sistemático de, a partir da descrição verbal, obter um
diagrama de estados com o número mínimo de estados - nem pode haver, pois a descrição
verbal é informal e pode ser dada sob várias formas.
Mas no processo de síntese existem dois pontos em que pode incidir um esforço de
simplificação do diagrama:
- O mais óbvio consiste em, após traçado um 1º diagrama de estados, pesquisar esse
diagrama tendo em vista a identificação de estados desnecessários. Isto é, tenta-se
encontrar pares de estados que sejam equivalentes (adiante se definirá
precisamente o que é que são estados equivalentes). De cada par de estados
equivalentes A e B, podemos eliminar um (seja p.ex. o B) , substituindo B por A.
Este processo é mais convenientemente levado a cabo sobre a tabela de
transição, e não sobre o diagrama de estados.
- O outro baseia-se no facto de que o conjunto dos estados mais não é do que uma
forma de memorização da informação necessária à execução da função. Assim,
reconhece-se que uma análise prévia da informação realmente essencial pode levar
à determinação do número mínimo de estados, bem como a um diagrama de estados
com esse número mínimo.
Vamos ver, para o caso do EXEMPLO 2 (pág.5.12) como se aplicaria o 1º método e
em seguida o 2º.
Redução de estados na tabela de transição
Antes de mais, convém definir rigorosamente estados equivalentes :
dois estados A e B são equivalentes se e só se:
- tem especificações de saída idênticas (isto é, para todas as possíveis
combinações de entradas, os valores das saídas são iguais num e noutro estado)
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 19
- e se os estados seguintes são os mesmos, ou equivalentes.
O método que vamos utilizar (existem outros métodos correntemente utilizados,
que não examinaremos) para a redução de estados na tabela de transição consiste no
particionamento dos estados em classes de estados "candidatos a equivalência". Em
seguida, examinam-se sucessivamente os vários estados em cada classe para verificar se
são realmente equivalentes.
Se no processo de verificação se concluir que dois ou mais estados pertencentes a
uma mesma classe não são equivalentes, haverá que fraccionar essa classe em duas ou
mais. Com o novo conjunto de classes, procede-se a nova verificação, e assim
sucessivamente até se ter concluido que cada uma das classes contém apenas estados
equivalentes.
O conjunto de classe inicial é constituido pelas classes o mais latas possível: isto é,
agrupam-se em cada classe todos os estados com a mesma especificação de saída.
Em relação ao problema que nos serve de exemplo, temos a seguinte tabela de
transição, em que à partida se podem definir as duas classes ? e ?:
Estado Presente Classe
EntradaZ
Estado Seguinte Classe
SaídaS
A'
A'
A"
A"
B
B
C
C
D
D
E
E
F
F
G
G
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
B
C
B
C
D
E
F
G
A'
A"
A"
A'
A"
A'
A'
A"
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
Análise do 1º conjunto de classes:
Há apenas duas classes: ? e ?
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 20
Podemos concluir que:
F e G não são equivalentes, porque p.ex. para Z = 1, os seus estados
seguintes são A" e A', que pertencem a classes diferentes
D e E não são equivalentes, por razão análoga
D e F não são equivalentes, por razão análoga
E e G não são equivalentes, por razão análoga
D e G são equivalentes, pois têm saídas e estados seguintes iguais
E e F são equivalentes, pois têm saídas e estados seguintes iguais
Concluimos que a classe ? tem de ser subdividida em pelo menos duas classes.
Chamemos ?1 à classe de D e G e ?2 à classe de E e F.
Nenhum dos estados D, E, F e G pode ser equivalente a A', pois D, E, F e G têm a
possibilidade de ter A" como estado seguinte (o que não acontece com A') e A" pertence a
outra classe (?). Logo, a classe ? tem de ter outra subdivisão, em que está A' - chamemos-
lhe ?3.
Nem B nem C podem ser equivalentes a D, E, F ou G pela mesma razão. Assim, B e
C devem estar noutra subdivisão de ? - por enquanto, devemos assumir que possa ser ?3.
Podemos então reescrever a tabela de transição, já com as sub-classes que
conseguimos determinar no 1º passo:
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 21
Estado Presente Classe
EntradaZ
Estado Seguinte Classe
SaídaS
A'
A'
A"
A"
B
B
C
C
D
D
E
E
F
F
G
G
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
B
C
B
C
D
E
F
G
A'
A"
A"
A'
A"
A'
A'
A"
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
Nesta 2ª tabela, podemos concluir que A' não pode ser equivalente a B ou a C,
nem B equivalente a C, porque os seus estados seguintes - para entradas iguais -
pertencem a classes diferentes.
Logo, a classe ?3 tem de ser subdividida em 3 classes, que designaremos por ?4, ?
5 e ?6.
O diagrama de estados obtido após a redução de estados será:
Z / SFormato:
1 / 0
1 / 00 / 0
1 / 00 / 0
0 / 0
0 / 1
1 / 1
0 / 01 / 01 / 0
0 / 0
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 22
Simplificação do diagrama de estados por análise da informação mínima
necessária
Continuando a utilizar o mesmo exemplo, concluimos que cada estado tem de
exprimir dois tipos de informação acerca da história anterior das entradas do circuito:
1 - quantas amostras é que já foram examinadas (em que passo é que se vai)
2 - qual é a paridade da parte da sequência que foi examinada até agora
Como a paridade pode ter dois valores, isto quer dizer que por cada amostragem
efectuada teremos dois estados. Podemos arranjar os estados por linhas - em que os
estados em cada linha pertencem ao mesmo passo - e por colunas - em que uma das duas
colunas é associada à paridade par e a outra à paridade ímpar.
Como já tínhamos visto anteriormente, são também precisos dois estados para o
estágio inicial em que ainda não foi examinada qualquer amostra.
Chamemos aos dois estados "iniciais" A e B (sendo B o que tem saída a 1). Os
estados A e B terão estados seguintes (em número de 2) iguais para valores de entrada
iguais.
Desses estados seguintes - ambos estão na situação de "1 amostra já examinada" -
um representa a situação "par" e outro a situação "ímpar".
Podemos desenhar um diagrama parcial:
A Z / SFormato:1 / 0
0 / 0
0 / 1
1 / 1
B
C D
Neste diagrama, C representa a situação "par" e D representa a situação "ímpar".
Os estados seguintes de C e D representarão o estágio de "duas amostras já examinadas"
e serão também em número de dois: um para a situação "par" (E) e outro para "ímpar" (F).
Como a ocorrência de um 1 muda a paridade da sequência e de um 0 conserva-a,
temos:
A Z / SFormato:1 / 0
0 / 0
0 / 1
1 / 1
B
C D
0 / 0
E F
1 / 0 1 / 0 0 / 0
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 23
Finalmente, a amostra final vai decidir se dos estados E ou F se transita para o
estado A ou para o B.
O diagrama final fica idêntico ao obtido após a redução de estados.
Este exemplo mostra que a análise cuidada do problema pode ser a forma mais
expedita de obter um diagrama de estados simplificado.
5.4.2 - Codificação dos estados
Após se ter chegado a um diagrama de estados satisfatório, o próximo passo é a
codificação de estados. A codificação de estados consiste em 1º lugar em determinar qual
o número de flip-flops necessário para a implementação da unidade de memória do circuito
- geralmente o expoente da menor potência de 2 (2N) que seja maior ou igual ao número
de estados do circuito (há no entanto funções em que a utilização de mais flip-flops
simplifica muito o descodificador de estado seguinte ou o descodificador de saída,
resultando num circuito globalmente mais simples).
O passo seguinte consiste em atribuir um código de N bits a cada um dos estados
do circuito. Ora essa atribuição tem uma incidência directa na complexidade do circuito
necessário para implementar o descodificador de estado seguinte. Haverá combinações de
códigos que resultam numa implementação mais compacta e económica, sendo de preferi-
las a outras que resultam em implementações mais complexas.
Não estudaremos nenhum processo sistemático para fazer com que a codificação
de estados resulte na minimização do descodificador de estado seguinte, mas vamos
enunciar um conjunto de regras que tendem a simplificar o descodificador de estado
seguinte. Não se deve, no entanto, dar um valor exagerado a estas regras, como se verá
mais adiante.
As regras podem ser enunciadas como se segue.
Tentar atribuir códigos adjacentes a estados:
1 que, para entradas iguais, têm o mesmo estado seguinte
2 que são os estados seguintes de um mesmo estado (neste caso a parte variável
dos códigos dos estados seguintes deverá reproduzir a parte variável das
combinações de entrada que a eles conduzem)
3 que têm especificações de saída iguais
Convém ter uma ideia da justificação das "regras" , de modo a poder apreciar o seu
valor.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 24
A 1ª regra tende a favorecer o aparecimento de grupos de adjacência nos
M. de K. de todas as variáveis de excitação para flip-flops D. A título de exemplo,
suponhamos que temos um sistema com 3 variáveis de estado A, B e C e 1 entrada Z.
Quando Z=1, o estado e é o estado seguinte dos estados a, b, c e d. Vamos supor que
utilizamos um mapa para escrever a codificação de estados e vamos codificar os estados a,
b, c e d da seguinte maneira:
a b
c d
C
B
Z
A
010 011
110 111
b
d
a
c
Neste mapa especial (que só serve para ajudar a prever as consequências da codificação), o formato de cada célula é o seguinte:
Tanto os valores das variáveis ABC como o estado referem-se ao estado presente. Notar que como a codificação dos estados não tem nada a ver com a variável de entrada Z (é independente da variável de entrada Z),cada estado aparece em 2 células que só diferem pelo valor de Z .
ABC
…
estado
000 000 001 001
011
111
101101100100
110
010
… … … …
… … … …
Supondo agora que a codificação do estado e acaba por ser 101, os M. de K. das
variáveis de excitação D aparecem como se segue:
C
A
B
Z
1 1
1 1
DA C
A
B
Z
0 0
0 0
DB C
A
B
Z
1 1
1 1
DC
Nos casos de DA e DC, que têm 1s para o estado e vê-se que realmente aparecem
grupos de adjacência de 1s (que é o que convém quando estamos a extrair a função na
FMSP). No caso de DB aparecem 0s agrupados, mas mesmo aqui não é difícil de imaginar
que isso vai tender a "empurrar" os eventuais 1s de DB para posições adjacentes.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 25
Enunciando a 2ª regra dum modo mais simples - "atribuir códigos adjacentes a
estados que são os estados seguintes de um mesmo estado" - podemos concluir que faz
aparecer grupos de adjacência nos mapas de excitação para as variáveis de
estado que têm ocorrências constantes nos vários códigos adjacentes. Por outras
palavras:
- Os estados seguintes, tendo códigos adjacentes, têm ocorrências constantes de
algumas variáveis de estado
- Nos mapas dessas variáveis em que a ocorrência constante é 1 (0), aparecem
(0s) nas células com o mesmo estado origem, que são células que só
diferem pelos valores das variáveis de entrada, tendo portanto "alguma"
adjacência.
Como exemplo, vamos supôr que temos um sistema com 3 variáveis de estado A,
B e C e uma entrada X e que os estados seguintes do estado (que virá a ter a codificação)
111 são os estados a e c.
C
A
B
Z
C
A
B
Z
1
DA C
A
B
Z
00
DB C
A
B
Z
01
DC
Mapa de estado seguinte
a c 1
Dando códigos adjacentes aos estados e por exemplo:
a c
a 101ABC ABC temos os mapas
de excitação:c 100
Como se vê, nos mapas de excitação das variáveis com ocorrências iguais nos
códigos adjacentes aparecem grupos de adjacência (embora não apareçam nos mapas das
variáveis que têm ocorrências diferentes dentro desses códigos).
A 2ª parte da 2ª regra (relativa às partes variáveis ) tem a ver com a simplificação
da dependência das funções de excitação com as entradas.
Quanto à 3ª regra, a sua justificação é análoga à apresentada para as duas
primeiras.
Das justificações apresentadas depreende-se que estas "regras" não devem ser
entendidas como de aplicação rigorosa. Cada uma delas tende a contribuir para simplificar
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 26
a implementação, mas não há garantia alguma de vir a obter um conjunto de expressões
mínimo. Aliás, as "regras" podem entrar em conflito: a aplicação de uma delas pode levar a
uma codificação que não esteja de acordo com outra das "regras".
Assim, optamos por aplicar as "regras" apenas nos casos mais óbvios, não
tentando esgotar todas as possibilidades de aplicação.
5.4.3 - Finalização da síntese de circuitos sequenciais
Mapas de excitação. Selecção de flip-flops
Desenho do diagrama lógico
Uma vez encontrado um diagrama de estados satisfatório e feita a codificação de
estados, faltam ainda alguns passos para que a síntese fique completa.
Após a codificação, é possível preencher uma tabela de transição codificada, que
serve também de tabela de excitação para a implementação com flip-flops D. Dessa tabela
de excitação preenchem-se os mapas de estado seguinte, que são mapas de Karnaugh
para o valor seguinte das variáveis de estado; esses mapas de estado seguinte são
idênticos aos mapas de excitação para flip-flops D.
Muitas vezes, o descodificador de estado seguinte resulta muito mais simples se
em vez dos flip-flops D forem utilizados flip-flops J-K (em circuitos integrados da série TTL,
os dois tipos de flip-flop mais divulgados são o D e o J-K, pelo que não interessa explorar a
possibilidade de implementação com outros tipos de flip-flop). Interessa portanto explorar a
opção da implementação com J-K, para o que se deve construir os respectivos mapas de
excitação : estes mapas obtêm-se dos mapas de estado seguinte através da tabela de
excitação característica dos flip-flops J-K.
Por fim, compara-se, em termos de complexidade, as implementações com flip-
flops D e com flip-flops J-K, com vista a escolher a mais conveniente.
Também é necessário sintetizar o descodificador de saída, o que se faz também
com recurso a mapas de Karnaugh.
O passo final é o desenho do diagrama lógico do circuito, incluindo os flip-flops, o
descodificador de estado seguinte e o descodificador de saída.
Exemplo
Vamos continuar a usar o exemplo cujo diagrama de estados está representado na
pág.5.17 e que se encontra repetido (mas com designações diferentes para os estados) na
figura seguinte:
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 27
A
F
D
E
C
Z / SFormato:
1 / 0
1 / 00 / 0
1 / 00 / 0
0 / 0
B0 / 1
1 / 1
0 / 01 / 01 / 0
0 / 0
O 1º passo para finalizar a síntese é a codificação de estados.
Vamos tentar aplicar as regras de codificação, sem no entanto o fazer de modo
exaustivo - apenas nas instâncias mais óbvias.
A 1ª regra indica que A e B devem ter códigos adjacentes.
Sejam A = 0 0 0 e B = 0 0 1
A 2ª regra indica que C e D devem ter códigos adjacentes. A "parte variável" deve
ser 0 para C (porque C é acedido, desde A ou B, com Z = 0) e 1 para D.
Sejam C = 0 1 0 e D = 0 1 1
A 2ª regra também indica que E e F devem ter códigos adjacentes. O critério da
"parte variável" não é conclusivo neste caso, pois p.ex. E é acedido de C com Z = 0, mas
de D é acedido com Z = 1.
Sejam E = 1 1 0 e F = 1 1 1
Podemos então preencher a tabela de transição codificada (que é também a tabela
de excitação para flip-flops D):
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 28
Estado presente
EntradaZ
Estado seguinte
SaídaS
A
A
B
B
C
C
D
D
E
E
F
F
0 0 0
0 0 0
0 0 1
0 0 1
0 1 0
0 1 0
0 1 1
0 1 1
1 1 0
1 1 0
1 1 1
1 1 1
0
1
0
1
0
1
0
1
0
1
0
1
C
D
C
D
E
F
F
E
A
B
B
A
0 1 0
0 1 1
0 1 0
0 1 1
1 1 0
1 1 1
1 1 1
1 1 0
0 0 0
0 0 1
0 0 1
0 0 0
0
0
1
1
0
0
0
0
0
0
0
0
Estados adicionais
1 0 0
1 0 1
0
1 0 1
1 0 0 1
0
1
X
X
X
X
X X X
X X X
X X X
X X X
X
X
X
X
…
…
Desta tabela podemos preencher os mapas de estado seguinte, que são também
os mapas de excitação para flip-flops D.
Z
DA
B
B
A
E
F
F
E
C
D
D
C
0 X 0 1
0 X 0 1
0 X 0 1
0 X 0 1
Z
DA
B
B
A
E
F
F
E
C
D
D
C
1 X 0 1
1 X 0 1
1 X 0 1
1 X 0 1
Z
DA
B
B
A
E
F
F
E
C
D
D
C
0 X 0 0
0 X 1 1
1 X 0 0
1 X 1 1
Z Z
Z
Dos mapas lêem-se as funções de excitação para flip-flops D:
D
Z ZZ
=
D =
D = + +
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 29
Estas funções seriam usadas se se optasse pela implementação com flip-flops D.
É possível que optando por flip-flops J-K, o descodificador de estado seguinte
resulte mais simples.
Para concluir se isso realmente se verifica, vamos preencher os mapas de excitação
para flip-flops J-K, a partir dos mapas de estado seguinte e da tabela de excitação
característica dos flip-flops J-K, que é:
Qn Qn+1-> J K
0 0 0 X
0 1 1 X
1 0 X 1
1 1 X 0
Onde se pode reparar que J é opcional quando o estado inicial é 1 e que é igual ao
estado final quando o inicial é 0. O K é opcional quando o estado inicial é 0 e é igual ao
complemento do final quando o inicial é 1.
Assim, para este exemplo os mapas de excitação para J-K serão:
Z
A
B
B
A
E
F
F
E
C
D
D
C
0 X 1
0 X 1
0 X 1
0 X 1
Z
KA
B
B
A
E
F
F
E
C
D
D
C
X X 1 X
X X 1 X
X X 1 X
X X 1 X
Z
JA
B
B
A
E
F
F
E
C
D
D
C
1 X X X
1 X X X
1 X X X
1 X X X
J X
X
X
X
1
1
Z
A
B
B
A
E
F
F
E
C
D
D
C
X X 0
X X 0
X X 0
X X 0
Z
JA
B
B
A
E
F
F
E
C
D
D
C
0 X 0 0
X X X X
X X X X
1 X 1 1
Z
KA
B
B
A
E
F
F
E
C
D
D
C
X X X X
1 X 0 0
0 X 1 1
X X X X
K1
1
1
1
Z
Z
Z
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 30
Falta ainda sintetizar a função de saída S.
Z
SA
B
B
A
E
F
F
E
C
D
D
C
0 X 0 0
1 X 0 0
1 X 0 0
0 X 0 0
O diagrama lógico para o circuito completo será:
J
K
Q
Q
J
K
Q
Q
Relógio
1
J
K
Q
Q
1
Z
S
5.4.4 - Síntese de circuitos sequenciais síncronos - Sumário
O procedimento de síntese de um circuito sequencial síncrono simples pode ser
sumarizado nos seguintes passos:
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 31
1 - Estudar as especificações do circuito, com o fim de compreender o comportamento
operacional pretendido.
Pode acontecer que nesta fase se conclua que as especificações fornecidas estão
incompletas ou que contêm incongruências. Nesse caso, as especificações devem
ser "devolvidas" ao especificador .
2 - Desenhar um diagrama-bloco do circuito, identificando os sinais de entrada e de
saída.
3 - Obter um primeiro diagrama de estados (a rever posteriormente), tentando evitar
estados "redundantes"
4 - Obter a partir do diagrama de estados uma tabela de transição "primitiva". Com o
auxílio desta tabela identificar estados redundantes que porventura restem.
5 - Eliminar do diagrama de estados quaisquer estados redundantes (identificados no
passo 5).
6 - Codificar os estados. Pode recorrer-se às "regras" enunciadas a seguir, que tendem a
conduzir (não garantem , tanto mais que as regras não são supostas serem aplicadas à
exaustão - o que seria extremamente moroso - e acontece mesmo que duas regras estejam
em conflito, sendo necessária uma escolha ou um compromisso) às realizações mínimas
para a lógica combinacional (descodificador de estado seguinte e descodificador de saída).
As regras podem sintetizar-se da seguinte forma:
Tentar atribuir códigos adjacentes a estados:
• que, para entradas iguais, têm o mesmo estado seguinte
• que são os estados seguintes de um mesmo estado (neste caso a parte variável
dos códigos dos estados seguintes deverá reproduzir a parte variável das
combinações de entrada que a eles conduzem)
• que têm especificações de saída iguais
7 - Obter a tabela de transição (colunas "estado presente", "entradas", "estado seguinte"
e "saídas")
8 - Obter M. de K. para as variáveis de excitação para flip-flops D. A partir deles obter
M. de K. para flip-flops JK. Obter M. de K. para as saídas.
9 - Seleccionar os flip-flops a utilizar e obter expressões simplificadas para as
variáveis de excitação e para as saídas.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 32
10 - Desenhar o diagrama lógico do circuito sequencial
À falta de melhor designação, referiremos este método como "método tradicional" .
5.5 - Auto-correcção nos circuitos sequenciais síncronos
Quando se faz a codificação de estados de um circuito sequencial, determina-se o
número de flip-flops como igual a (geralmente) N, sendo 2N a menor potência de 2 igual ou
superior ao número de estados do circuito. Há no entanto casos em que o nº de flip-flops é
ainda superior a este valor mínimo.
Assim, é vulgar que o número das possíveis combinações de valores das variáveis
de estado seja superior ao número de estados que constam do diagrama de estados
sintetizado para cumprir a função do circuito, gerando-se estados adicionais. Esses estados
adicionais deverão também constar num diagrama de estados completo.
EXEMPLO: Seja um contador binário 0-5. Como a sequência principal inclui apenas 6
estados e para codificar esses 6 estados serão necessárias 3 variáveis, que geram 8
combinações possíveis, há dois estados adicionais, cujo estado seguinte não é definido
pela especificação do contador.
000
001
010
011
100
101110
?
111
?
Como em princípio o circuito nunca se deve encontrar num destes estados
adicionais, as linhas da tabela de transição que lhes correspondem podem aparecer com
condições opcionais (X) nos códigos de estado seguinte, sendo estes Xs utilizados para a
máxima simplificação das expressões das funções de excitação.
Circuitos inicializados e não-inicializados
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 33
Em muitos casos, o circuito é feito arrancar (quando a alimentação é ligada) num
estado - considerado o estado inicial - da sequência de base do circuito, após o que o
circuito apenas transita de estado a estado dentro dessa sequência de base, sem nunca
aceder a qualquer um dos estados adicionais. O arranque num estado determinado é
conseguido com um circuito especial que detecta o estabelecimento da tensão de
alimentação e aplica pulsos às entradas assíncronas apropriadas dos flip-flops de modo a
colocá-los no estado desejado.
A necessidade da auto-correcção põe-se em casos em que não se pretende
implementar qualquer circuito de inicialização, mas antes se quer que o circuito (síncrono)
entre por si na sequência correcta, admitindo-se que isto só seja garantido ocorrer ao fim
de alguns ciclos de relógio. Com efeito, quando se liga a alimentação a um circuito com
flip-flops, o estado inicial destes está dependente de vários factores aleatórios (por
exemplo o ritmo de subida da tensão de alimentação) que fazem com que esse estado seja
imprevisível, podendo resultar numa combinação de valores correspondente a um dos
estados adicionais - serão então necessários alguns ciclos de relógio para entrar na
sequência correcta.
Diz-se de um circuito em que o descodificador de estado seguinte garanta que, seja
qual fôr o estado inicial, é atingida a sequência principal após um número finito de ciclos
de relógio, que tem a propriedade de auto-correcção .
EXEMPLO: O seguinte diagrama de estados corresponde a um contador binário 0-5 auto-
corrector.
000
001
010
011
100
101 110 111
EXEMPLO: O seguinte diagrama de estados corresponde a um contador binário 0-5 que
não é auto-corrector.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 34
000
001
010
011
100
101 110
111
Obtenção da auto-correcção
Uma maneira simples de obter a auto-correcção é desenhar à partida um diagrama
de estados em que se arbitram estados seguintes para os estados adicionais de maneira a
que o diagrama tenha auto-correcção …mas esta não será a opção mais optimizada.
Tendo em mente o objectivo sempre presente de optimizar a implementação das
funções digitais, interessa tentar conciliar a simplificação do descodificador de estado
seguinte possibilitada pelo aparecimento de Xs nas posições da tabela de transição (nas
linhas correspondentes aos estados adicionais) com o requisito da auto-correcção.
Um procedimento razoável é o seguinte:
• sintetizar as funções D utilizando todos os X's convenientes.
• desenhar o diagrama de estados e examinar todos os eventuais ciclos
indesejáveis (sequências que se fecham sobre si mesmas, que não sejam a
principal)
• alterando (X->0 ou X->1) apenas um dos mapas, fazer esses ciclos desembocar
no ciclo principal (começar pelas alterações óbviamente inevitáveis); depois de cada
uma das alterações (X->0 ou X->1), ver qual é a função mais simples que se pode retirar
do mapa, e verificar se todos os ciclos indesejáveis são já eliminados.
5.6 - Contadores
Os contadores são uma classe especial de circuitos sequenciais que se distingue
por o seu funcionamento básico não depender de entradas externas (para além da de
relógio) - antes seguindo uma sequência fixa de estados. Versões mais complexas
possuem sim entradas externas, mas estas servem só para escolher a sequência de
contagem, parar a contagem (manter o mesmo estado), inicializá-la com um valor de
partida, …
As utilizações mais vulgares de contadores são:
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 35
• contagem (no sentido comum) de impulsos ou ocorrências
• divisão de frequência
• geração de formas de onda faseadas (relógios ou enables faseados)
Outras aplicações (tais como p.ex. a geração de atrazos de tempo) geralmente são
implementadas utilizando um contador e lógica combinacional suplementar. Sob a forma
de CI existem contadores por vezes adequados apenas a uma das utilizações descritas,
mas também contadores que podem servir igualmente bem em qualquer um dos casos.
5.6.1 - Aplicações dos contadores
Contagem de impulsos ou ocorrências
Neste caso o que se pretende é que as saídas do contador percorram códigos
sucessivos de uma sequência de contagem pré-estabelecida (geralmente essa sequência
corresponde a um código numérico qualquer, sendo muito vulgares os contadores que
"contam" segundo o código binário natural).
A sequência de contagem de um contador binário (contadores binários são os que
contam segundo o código binário natural) de 4 bits tem o seguinte aspecto:
0001
Relógio
Saídas 0010 0011
Divisão de frequência
Por divisão de frequência entende-se a produção de uma saída cuja frequência seja
um submúltiplo da frequência de um sinal de entrada. Para um divisor por 8, a saída terá a
seguinte evolução temporal:
Relógio
Saída
1 2 3 4 5 6 7 8 1 2 3 4
Geração de formas de onda faseadas
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 36
Existem muitos circuitos síncronos em que são empregues vários relógios ,
geralmente com o mesmo período e uma relação de fase constante. Nesses circuitos,
alguns dos dispositivos são accionados por um relógio A, outros por um relógio B, …
Os vários relógios têm então as suas vertentes activas distribuídas ao longo de um
período global do sistema e o contador que têm por saídas esses relógios tem por sua vez
de ser accionado por um contador de período mais curto - igual ou submúltiplo da
separação entre dois relógios (de saída) que ocorram consecutivamente.
Um exemplo do tipo de formas de onda neste género de aplicação é apresentado
na figura seguinte:
Relógio
Saída 1
Saída 2
Saída 3
Saída 4
Um tipo de contadores muito utilizado na geração de ondas faseadas é o dos
contadores em anel (ring counters).
5.6.2 - Tipos de contadores
Contadores uni-modo são aqueles que não têm entradas externas além da de
relógio . Assim, os contadores uni-modo limitam-se a percorrer a sua sequência de
contagem, avançando em cada vertente activa do relógio.
Os contadores multi-modo possuem entradas externas (de controlo) que servem
para seleccionar a sequência de contagem (são vulgares os contadores up/down, que
permitem contar quer em sentido crescente, quer decrescente), parar a contagem,
inicializar (carregar ) o contador com um valor fornecido externamente, ou ainda fazer o
anulamento do estado do contador. As operações de carga e anulamento (nos contadores
disponíveis em CI) são algumas vezes feitas síncronamente (isto é, pondo as entradas de
controlo de maneira a fazer p.ex. a carga, a carga só é efectivada no próximo relógio) ou
assíncronamente (acção imediata assim que a entrada de controlo é posta no seu estado
asserido).
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 37
A maioria dos contadores modernos são síncronos (a menos de uma eventual
função de carga ou anulamento assíncrona) mas é muito utilizado um tipo especial de
contadores - os contadores ripple - que não são síncronos.
Os contadores mais vulgares seguem sequências de códigos numéricos. Há no
entanto contadores que seguem sequências especiais, tais como os contadores em anel
(ring counters). Destes, há dois tipos: os contadores em anel directo (standard ring
counters) e contadores em anel "torcido" (twisted ring counters).
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 38
5.6.2.1 - Contadores ripple
Os contadores ripple , embora construídos a partir de flip-flops (síncronos) não são
circuitos síncronos - com efeito, uma sua designação alternativa é a de contadores
assíncronos (estas designação é algo ambígua, porque também é possível construir
contadores com células assíncronas - contadores esses que com mais propriedade seriam
chamados de contadores assíncronos ).
Nos contadores ripple a entrada de relógio de todos os flip-flops excepto um é
accionada não por um sinal temporizador mas sim pelos sinais associados às próprias
variáveis de estado ou delas derivado. Assim, quando surge uma vertente activa do
relógio, nem todos os flip-flops comutam simultâneamente, antes há um "escoar" ou uma
"propagação" de comutações: em 1º lugar comuta o flip-flop que tem a entrada de relógio
ligada ao relógio própriamente dito, em 2º o flip-flop cuja entrada de relógio está
dependente da saída do 1º flip-flop, e assim por diante - o efeito pode ser comparado com
uma ondulação (em inglês ripple ) que se vai propagando num lago.
Resulta que os contadores ripple são caracterizados por mudanças de estado
afectadas por transitórios - que correspondem aos vários estágios da propagação da
comutação.
Se se pretender dispôr da saída estabilizada de um destes contadores durante uma
certa percentagem do período de relógio é necessário limitar a frequência deste a um valor
mais baixo do que seria possível com um contador síncrono - em que as saídas estabilizam
logo após um tempo de propagação "relógio->saída" de um flip-flop.
Vemos assim que um contador ripple é funcionalmente inferior a um contador
síncrono. A única razão de ser dos contadores ripple deriva de poderem ser implementados
com muito menos lógica combinacional - em muitos casos, nenhuma - do que os
contadores síncronos.
Esta simplicidade deriva de uma propriedade da sequência binária natural:
Um bit tem uma comutação (0->1 ou 1->0) do mesmo passo que o bit imediatamente
menos significativo tem uma comutação 1->0 (e só nesse caso).
Isso pode ser observado na sequência de 3 bits abaixo desenvolvida, sendo claro
que se verifica para qualquer número de bits.
Q2 Q1 Q0
0 0 0
0 0 1
0 1 0
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 39
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
0 0 0
Implementação de contadores ripple
A implementação preferencial dos contadores ripple é feita com base em flip-flops
T (ou J-K ligados em T). Os flip-flops mais divulgados são accionados pela vertente 0->1 do
relógio, pelo que para realizar um contador ascendente se liga a entrada de relógio de
cada flip-flop à saída Q do flip-flop "anterior" (isto é, o imediatamente menos significativo) e
para realizar um contador descendente liga-se a entrada de relógio de cada flip-flop à saída
Q do flip-flop "anterior".
Um contador ripple binário ascendente de 3 bits será construído como se segue:
T Q T T
Relógio
QA
QB
QC
"1" "1" "1"
Q
Q
Q
Q
Q
E um contador ripple binário descendente de 3 bits será:
T Q T T
Relógio
QA
QB
QC
"1" "1" "1"
Q
Q
Q
Q
Q
A realização com flip-flops J-K envolveria simplesmente a fixação da condição de
toggle , isto é: J=1 e K=1.
Os contadores ripple apenas podem seguir a sequência do código binário natural,
mas é possível construir p.ex. um contador decimal que conte:
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 40
0 , 1, 2 , … , 7 , 8 , 9 , 0, 1 , 2 , …
Um contador deste tipo é realizado recorrendo aos CLEARs (assíncronos) dos flip-
flops. Ao contador binário básico é acrescentado um circuito combinacional que assere o
CLEAR dos flip-flops quando a combinação de saída é 10 (1010 em binário). No entanto,
este processo não é fiável se não for garantido que os tempos de propagação dos flip-flops
estão muito próximos uns dos outros; com efeito, se um flip-flop reagisse ao CLEAR antes
do outro, faria desaparecer a condição 1010, o que terminaria a asserção do CLEAR.
Isto é mais uma confirmação de que os contadores ripple são funcionalmente
inferiores aos contadores síncronos.
5.6.3 - Contadores disponíveis em CI
7493A, 74LS93 - Ripple-clock binary counters
NOTA: ligando a saída QA à entrada INPUTB obtém-se um contador binário de 4 bits. Não
fazendo essa ligação temos um contador de 3 bits e um flip-flop T (com toggle
permanente, isto é, T=1) descomprometido que pode ser utilizado separadamente.
74163, 74LS163, 74S163 - Synchronous 4-bit binary counters
74163, 74LS163, 74S163 - Synchronous 4-bit binary counters (continuação)
Expansão de contadores síncronos
Se se dispuser apenas de CIs que implementem contadores básicos (sem entradas
além da de relógio) para construir um contador de mais bits é necessário acrescentar
lógica combinacional. Aliás, para que o contador resultante seja integralmente síncrono é
necessário que os CIs de contadores disponham pelo menos de um COUNT ENABLE . Num
contador, um COUNT ENABLE é uma entrada que quando no estado deasserido faz com
que o relógio seja inoperante (não faça avançar o contador) e que quando no estado
asserido "deixa" o contador funcionar normalmente.
A lógica combinacional deve garantir o cumprimento da seguinte propriedade da
sequência crescente em código binário natural:
"um bit (ou um grupo de bits) do código binário é incrementado
quando todos os bits menos significativos estão a 1"
Exemplo: contador de 12 bits construído a partir de 3 CIs de contador de 4 bits
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 41
Relógio
QA
QB
QC
QD
EnableQA
QB
QC
QD
EnableQA
QB
QC
QD
Enable1
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
Q8
Q9
Q10
Q11
Mas existem contadores que incluem já provisões para construir contadores de
mais bits sem recurso a lógica combinacional externa - é precisamente o caso do 74163.
Como se pode ver do diagrama interno, o 74163 já inclui o E que tivemos de acrescentar
externamente (a saída do E é o ripple carry output (RCO).
Um contador de 12 bits (funcionalmente equivalente ao que construímos
anteriormente) implementado com 74163s seria:
Relógio
QA
QB
QC
QD En. T
QA
QB
QC
QD
QA
QB
QC
QD
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
Q8
Q9
Q10
Q11
En. P1
1
Clear1
Load1
En. T
En. P1 Clear1
Load1
En. T
En. P1 Clear1
Load1
RCO RCO RCO
74163 74163 74163
Notar que o 74163 não tem um só ENABLE, mas sim dois: o ENT (ENABLE
"TRANSMIT") e o ENP (ENABLE PARALLEL). Para que o 74163 conte, é necessário que
ambos os ENABLEs estejam asseridos, mas só o ENT é que contribui para a saída RCO. O
ENT é apropriado para ser ligado à saída RCO do contador imediatamente menos
significativo, e o ENP é adequado para ser (ligando a todos os 74163s) utilizado com um
ENABLE global para um conjunto de 74163s.
5.6.4 - Síntese de contadores síncronos
Os contadores síncronos (e particularmente os uni-modo ) são circuitos simples,
cuja síntese é tratável pelo método "tradicional" já visto (e que é, relembremo-lo, apenas
adequado a circuitos de baixa complexidade)
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 42
Em relação aos passos que constituem o "método tradicional", a síntese de
contadores síncronos equivale a curto-circuitar certos deles, já que:
• o diagrama de estados é dado com a especificação
• a própria codificação de estados também geralmente faz parte da especificação,
já que é (geralmente) igual à sequência de contagem.
Isto porque geralmente não faz sentido utilizar um descodificador de saída
num contador: as saídas externas são as próprias saídas dos flip-flops.
Há no entanto uma excepção, que corresponde a sequências com códigos
repetidos. Seja por exemplo um contador com uma sequência de 5 códigos dos quais os
dois últimos são iguais:
0000 , 0001 , 0010 , 0011 , 0011 , 0000 , …
Neste caso é necessário utilizar um descodificador de saída e a codificação
de estados é diferente da sequência de contagem.
5.6.4.1 - Síntese de um contador "standard-ring"
Pretende-se sintetizar um contador "standard-ring" (contador em anel de sequência
"standard") de 4 bits. A sequência de contagem é:
QA
QB
QC
QD
1000
0001
0010
0100
1000
O contador deve ser auto-corrector.
Como na generalidade dos contadores, nos contadores em anel a síntese é feita no
pressuposto de que o descodificador de saída é nulo , isto é, as saídas finais são as
próprias saídas dos flip-flops. Como para um contador de anel de N bits o número de
códigos da sequência de contagem é sempre muito menor do que 2N, isto corresponde a
utilizar mais flip-flops do que o mínimo indispensável. No entanto, a poupança em lógica
combinacional mais do que compensa este gasto adicional de flip-flops.
O diagrama de estados básico (que não inclui os estados "adicionais") é:
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 43
0001
1000
0100
0010
E a tabela de transição virá:
QA
(n)Q
B
(n)Q
C
(n)Q
D
(n)Q
AQ
BQ
CQ
D
(n+1) (n+1) (n+1) (n+1)
0000 XXXX
1000
100 0
1
0
1
0
1
0
1
0
1
0
1
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
00
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
001
1000
XXXX
0100
XXXX
XXXX
XXXX
0010
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
0
E os mapas de estado seguinte (que são também os mapas de excitação para flip-
flops D):
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 44
0000X
00010
0011X
00101
01000
0101X
0111X
0110X
1100X
1101X
1111X
1110X
10000
1001X
1011X
1010X
AB
C
D
DA
0000X
00010
0011X
00100
01001
0101X
0111X
0110X
1100X
1101X
1111X
1110X
10000
1001X
1011X
1010X
AB
C
D
DB
0000X
00010
0011X
00100
01000
0101X
0111X
0110X
1100X
1101X
1111X
1110X
10001
1001X
1011X
1010X
AB
C
D
DC
0000X
00011
0011X
00100
01000
0101X
0111X
0110X
1100X
1101X
1111X
1110X
10000
1001X
1011X
1010X
AB
C
D
DD
DA
QB
=
DB
QC
=
DC
QD
= DD
QA
=
Selecção do tipo de flip-flops: como para flip-flops D já não há lógica adicional,
opta-se por utilizar flip-flops D.
Para esta implementação com flip-flops D, o diagrama de estados completo
(incluindo os estados adicionais) seria:
0001
1000
0100
0010
0111
1011
1101
1110
0011
1001
1100
0110
0101
1010
0000
1111
Sequência principal
O diagrama de estados evidencia que as funções de excitação tal como foram
sintetizadas fazem com que o contador não seja auto-corrector.
Conforme foi apontado anteriormente, para obter a auto-correcção vamos fazer
alterações em apenas um dos mapas de excitação, começando pelas alterações
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 45
claramente inevitáveis. Em seguida, redesenha-se o diagrama de estados para as
alterações efectuadas e verifica-se se já é auto-corrector. Caso não seja, fazem-se
correcções adicionais, e assim sucessivamente.
Vamos alterar apenas o mapa de DA. Como o estado 0000 transita para o próprio
estado 0000, é necessário alterar o valor da célula 0000, passando de 0 para 1.
Análogamente, como o estado 1111 transita para o próprio estado 1111, é necessário
alterar o valor da célula 1111, passando de 1 para 0.
O mapa e a expressão extraída são:
00001
00010
0011X
00101
01000
0101X
0111X
0110X
1100X
1101X
11110
1110X
10000
1001X
1011X
1010X
AB
C
D
DA
DA
QD
= QC
QA
. .
Com as novas funções de excitação, o diagrama de estados passa a ser:
0000
0001
1000
0100
0010
1111
1110
0110
0011
0101
1010
0111
1001
1100
1011 1101 Formato dos códigos de estado:
QD
QC
QB
QA
Como este diagrama de estados mostra que a implementação já garante a auto-
correcção, pode passar-se à fase de desenho do diagrama lógico.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 46
Q
Relógio
D
Q
D
D
QC
Q
D
C
QB
Q
D
B
QA
Q
D
A
5.6.4.2 - Síntese de um contador "twisted-ring"
A designação de "twisted-ring" ("anel torcido") provém de se poder imaginar a
operação destes contadores como se os bits circulassem num anel, anel esse que em
determinado ponto tem uma inversão. Outra designação para estes contadores é a de
"contadores de Moebius".
Pretende-se sintetizar um contador "twisted-ring" de 4 bits. A sequência de
contagem é:
QA
QB
QC
QD
0000
0001
0011
0111
0000
1111
1110
1100
1000
O contador deve ser auto-corrector.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 47
O diagrama de estados básico (que não inclui os estados "adicionais") é:
0000 1000
0001 1100
1110
11110111
0011
A tabela de transição é:
QA
(n)Q
B
(n)Q
C
(n)Q
D
(n)Q
AQ
BQ
CQ
D
(n+1) (n+1) (n+1) (n+1)
0000 0001
1000
100 0
1
0
1
0
1
0
1
0
1
0
1
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
00
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
000
XXXX
1000
XXXX
XXXX
XXXX
1100
0011
XXXX
XXXX
XXXX
0111
XXXX
1111
1110
0
E os mapas de estado seguinte (iguais aos mapas de excitação para flip-flops D):
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 48
00000
00010
00111
0010X
0100X
0101X
01111
0110X
11000
1101X
11111
11101
10000
1001X
1011X
1010X
AB
C
D
DA
00000
00010
00110
0010X
0100X
0101X
01111
0110X
11001
1101X
11111
11101
10000
1001X
1011X
1010X
AB
C
D
DB
00000
00010
00110
0010X
0100X
0101X
01110
0110X
11001
1101X
11111
11101
10001
1001X
1011X
1010X
AB
C
D
DC
00001
00010
00110
0010X
0100X
0101X
01110
0110X
11001
1101X
11110
11101
10001
1001X
1011X
1010X
AB
C
D
DD
DA
QB
=
DB
QC
=
DC
QD
=
DD
QA
=
Selecção do tipo de flip-flops: como para flip-flops D já não há lógica adicional,
opta-se por utilizar flip-flops D.
Para esta implementação com flip-flops D, o diagrama de estados completo
(incluindo os estados adicionais) seria:
0000 1000
0001 1100
1110
11110111
0011
0010 1001
0101 0100
1010
11010110
1011
Sequência principal Sequência fechada de estados adicionais
O diagrama de estados evidencia que as funções de excitação tal como foram
sintetizadas fazem com que o contador não seja auto-corrector.
Para obter a auto-correcção vamos fazer alterações em apenas um dos mapas de
excitação, começando pelas alterações claramente inevitáveis. Em seguida, redesenha-se
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 49
o diagrama de estados para as alterações efectuadas e verifica-se se já é auto-corrector.
Caso não seja, fazem-se correcções adicionais, e assim sucessivamente.
Vamos alterar apenas o mapa de DA, mas aqui não há "alterações óbviamente
inevitáveis", pois haverá muitas maneiras de quebrar o ciclo fechado de estados adicionais.
Já que este critério não é aplicável, vamos em vez dele considerar as alterações que
implicam menor complexidade adicional.
A expressão inicialmente extraída consta de apenas um grupo de 8, e para compôr
expressões alternativas podemos tomar a 1 Xs que anteriormente tinham sido tomados a
0, bem como tomar a 0 Xs que anteriormente tinham sido tomados a 1. Por ordem de
complexidade crescente, a solução que viria a seguir seria "dois grupos de 8", mas os
opcionais existentes no mapa não o permitem. Em segundo lugar, virá uma solução com
um grupo de 8 e um grupo de 4, que já é possível. Uma possibilidade é a seguinte:
00000
00010
00111
0010X
0100X
0101X
01111
0110X
11000
1101X
11111
11101
10000
1001X
1011X
1010X
AB
C
D
DA
QB
QC
QD
.
DA
= QB Q
CQ
D.+
Com as novas funções de excitação, o diagrama de estados passa a ser:
Formato dos códigos de estado:
QD
QC
QB
QA
0000 1000
0001 1100
1110
11110111
0011
0010
1001
0101
0100
1010
1101
0110
1011
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 50
Como este diagrama de estados mostra que a implementação já garante a auto-
correcção, pode passar-se à fase de desenho do diagrama lógico.
Q
Relógio
D
Q
D
D
QC
Q
D
C
QB
Q
D
B
QA
Q
D
A
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 51
9 - Condicionantes analógicas e de temporização
no projecto de sistemas digitais
9.1 - Introdução
O projecto digital caracteriza-se por uma extrema clareza de funcionamento: não
existem quaisquer interacções entre os seus elementos constituintes para além das
descritas pela lógica binária.
Em particular, o projecto de circuitos sequenciais síncronos faz com que o estado de
todas as células de memória, num período N do relógio, só dependa dos valores das
variáveis no período N-1, sendo irrelevante a temporização exacta das transições dos
sinais.
Mas esta limpidez de funcionamento está dependente de serem verificadas várias
circunstâncias:
- os valores de tensão e de corrente estarem dentro das gamas admissíveis para as
componentes utilizadas
- os parâmetros de temporização não excederem determinados limites
- as técnicas de síntese de circuitos serem correctas no sentido de garantirem
fiabilidade de funcionamento.
Paralelamente ao trabalho de projecto executado dentro do domínio digital, há assim
que levar a cabo um trabalho de verificação para assegurar que os pormenores analógicos
e de temporização permitem que o sistema funcione tal como assumido.
Este capítulo descreve, pois, uma série de problemas que potencialmente afectam a
fiabilidade dos pressupostos do funcionamento digital, e em particular, do funcionamento
dos circuitos sequenciais síncronos.
Critério worst-case
Na verificação de valores limite, utiliza-se sempre o critério worst-case, ou seja, o
critério do "caso pior". Este critério é a forma correcta de considerar os valores-limite
apresentados pelos fabricantes das componentes.
Um exemplo: para a ligação de uma memória RAM a um microprocessador, uma das
verificações a fazer é a de que a duração do pulso de escrita é adequada.
Suponhamos que as especificações relevantes são:
RAM (requisito) - duração do pulso de escrita - 200 ns mínimo
µP (prestações) - duração do pulso de escrita - 180 ns mínimo
- 220 ns típico
- 230 ns máximo
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 52
A verificação deve ser de que a duração mínima requerida pela RAM seja sempre
cumprida, e para que isso seja assegurado a 100% deve considerar-se o caso pior,
ou seja, o de um CI que exiba o pior dos tempos especificados pelo fabricante. Neste
caso, o valor "pior" da prestação do µP ("pior" quanto à satisfação do requisito da
RAM) é o mínimo, pelo que de acordo com o critério worst-case a RAM é rejeitada.
Assim, haverá casos em que os valores "típicos" satisfariam os requisitos de projecto,
mas em que os valores limite mais desfavoráveis já não satisfazem. Nesses casos, deve
rejeitar-se essa escolha de componentes, embora um sistema construído com elas tivesse
uma boa probabilidade de funcionar. Mas é claro que não são de aceitar projectos de
sistemas que funcionem "umas vezes sim, outras vezes não", ou que num lote de fabrico
apresentem por exemplo 60% de sistemas funcionantes e 40% de não-funcionantes.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 53
9.2 - Pormenores relacionados com o funcionamento síncrono
Vimos anteriormente que para que o andamento de um circuito sequencial se torne
independente do sequenciamento exacto das transições dos sinais, esse circuito deve ser
construido com células de memória "disparadas pelo bordo" (edge-triggered). Os flip-flops
"disparados pelo bordo" modernos têm um tempo de manutenção nulo ou práticamente
nulo. Por outro lado, mesmo para as células de memória das sub-famílias TTL mais rápidas
o tempo mínimo de propagação de relógio para a saída é sempre superior a 2 ou 3ns.
Assim, consegue-se a separação no tempo entre o intervalo em que o estado seguinte é
"calculado" (intervalo de amostragem) e o intervalo em que as saídas dos flip-flops
transitam para o estado seguinte (intervalo de transição) - o que está esquematizado na
Fig.9.1.
Relógio
Intervalo de amostragem
Intervalo de transição
Fig.9.1 - Funcionamento de base dos circuitos síncronos
9.2.1 - Dessincronização do relógio (clock skew)
Para desenhar a Fig.9.1 assumiu-se que o sinal de relógio era exactamente igual para
todas as células de memória, o que pode não se verificar em todos os projectos.
Por exemplo, quando a linha de relógio é comunicada a um número muito elevado de
entradas de CIs, torna-se necessário inserir um ou mais buffers para aumentar o fan-out.
A Fig.9.2 mostra um exemplo de uma situação que pode surgir nessas circunstâncias.
Um flip-flop B recebe a sua entrada de um flip-flop A cujo sinal de relógio provém de um
buffer que não é o mesmo que fornece o relógio do flip-flop B.
D QA
Relógio
D QB
…
…
…Fig.9.2 - Dois flip-flops com linhas de relógio distintas
Plausívelmente, os dois buffers não terão tempos de propagação exactamente iguais.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 54
Vamos assumir que o tempo de propagação do buffer que fornece o relógio do flip-flop B é
apreciávelmente mais longo do que o do buffer do flip-flop A, pelo que haverá uma
dessincronização nos instantes de ocorrência da vertente activa nos flip-flop A e B (skew).
Podemos então desenhar um diagrama correspondente ao da Fig.9.1.
Relógio
Intervalo de amostragem
Intervalo de transiçãoFlip
-flo
p A
Relógio
Intervalo de amostragem
Intervalo de transiçãoFlip
-flo
p B
Fig.9.3 - Intervalos de amostragem e de transição para os dois flip-flops
Como se vê da Fig.9.3, há sobreposição parcial do intervalo de transição do flip-flop A
e do intervalo de amostragem do flip-flop B. Isto quer dizer que será possível que o flip-flop
B, em vez de reagir ao estado anterior do flip-flop A (como seria correcto), possa reagir ao
novo estado para o qual o flip-flop A transitou. A possibilidade disto ocorrer corresponde a
uma defeito de projecto, o qual deve ser rejeitado.
Assim, quando fôr necessário introduzir buffers nas linhas de distribuição do relógio, a
solução preferencial é usar um único buffer de alto fan-out, ou - se um só buffer não fôr
suficiente - assegurar que todos os buffers estão equilibrados (isto é, têm tempos de
propagação muito próximos uns dos outros).
Outras razões para o aparecimento de dessincronização
Em sistemas que, embora não utilizando buffers múltiplos na distribuição do relógio,
apresentam pistas muito longas nesse percurso de distribuição, é a própria propagação do
relógio ao longo das linhas que cria a dessincronização.
Mas um caso em que a dessincronização é muito mais grave surge quando se utiliza a
técnica de gated clock (o que poderíamos traduzir por "relógio porteado"), o que veremos
a seguir.
9.2.2 - Primeiro exemplo de técnicas de projecto
infiáveis: relógio porteado (gated clock)
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 55
É muito frequente que certas funções (como por exemplo a contagem executada por
um módulo contador), que em princípio são executadas em todos os ciclos de relógio,
devam ser comandadas por um sinal de habilitação. Assim, num ciclo de relógio em que a
entrada de habilitação esteja asserida, o contador deverá contar, e num ciclo em que a
habilitação estiver deasserida, a vertente activa do relógio não deverá ter efeito.
Supondo que dispomos de um circuito que realiza a função desejada, mas de uma
maneira constante (isto é, não apresenta uma entrada de habilitação), uma solução
imediata para realizar um circuito com habilitação é fazer passar o relógio por uma porta E
de 2 entradas, cuja outra entrada é precisamente o sinal de habilitação. Na
Fig.9.4 representa-se um exemplo de um circuito assim obtido a partir de um contador sem
função de habilitação.
Fig.9.4 - Contador com habilitação obtido a partir de um contador sem habilitação
Mas verifica-se que este circuito não funciona fiávelmente! O sinal HAB, sendo
também oriundo de um sistema síncrono, terá comutações que ocorrem alguns
nanosegundos após a vertente activa (ascendente) de RLG. Como se vê na Fig.9.5, há dois
problemas no funcionamento deste circuito.
Fig.9.5 - Duas situações de erro (uma certa, outra provável) no circuito da Fig.9.4
Note-se que na Fig.9.5 se assumiu que o circuito que gera HAB apresenta um atrazo
pequeno mas sensível em relação à vertente activa de RLG mas para simplicidade
assumiu-se um atrazo nulo para a porta E. Os erros do circuito tanto podem ser de pulsos
demasiado estreitos aplicados à entrada de relógio do contador (por exemplo, muitos CIs
da sub-família LS-TTL requerem um largura mínima do impulso de relógio de 20ns, pelo
que é muito provável que o pulso designado como "pouco fiável" possa ou não ser eficaz)
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 56
como de pulsos além dos pretendidos.
Já o circuito da Fig.9.6 é um pouco superior ao anterior, pois se as portas utilizadas
forem mais rápidas do que o atrazo de relógio para saída do circuito que gera HAB não
haverá erros.
Fig.9.6 - Contador com habilitação (2ª alternativa)
A Fig.9.7 mostra o diagrama de tempos deste circuito, assumindo novamente que as
portas têm propagação instantânea.
Fig.9.7 - Diagrama temporal para o circuito da Fig.9.6
Pela Fig.9.7, concluir-se-ia que este novo circuito já é inteiramente fiável. Mas
considerando agora a situação real, que é a de haver atrasos de propagação nas portas,
chega-se à conclusão de que, embora não havendo certeza de erros, há probabilidade de
surgirem erros. Para investigar a possibilidade de erro, temos de considerar o que acontece
quando HAB tem transições 1->0 e 0->1, e considerar que o atraso de propagação da 1ª
porta NEG é à partida desconhecido, podendo ser inferior ou superior ao atraso da
transição de HAB em relação à vertente activa de RLG.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 57
RLG
HAB
Transição HAB 1->0
RLG
HAB . RLG
CLK (Contador)
RLG
HAB
Transição HAB 0->1
RLG
HAB . RLG
CLK (Contador)
Fig.9.8 - Diagrama temporal para as transiçoes de HAB no circuito da Fig.9.6
No diagrama da Fig.9.8, considera-se a possibilidade de o atraso de propagação na
porta NEG que gera RLG ser inferior, igual ou superior ao atrazo das transições de HAB em
relação à vertente activa do relógio. Verifica-se que na transição HAB 1->0, não há
qualquer possibilidade de erro, embora a vertente activa de CLK surja tanto mais cedo
quanto mais rápida fôr a porta NEG. Mas na transição HAB 0->1, se a porta NEG tiver um
atraso superior ao atraso do sinal HAB, haverá um pulso curto de CLK a 0, o que poderá
provocar a contagem do contador quando tal não era desejado. Conclui-se que este
circuito só funciona bem (e ainda assim , com pouca fiabilidade) se a porta NEG utilizada
fôr muito rápida, com um tempo de atraso inferior ao atraso mínimo de HAB em relação à
vertente activa do relógio.
A conclusão final é a de que os circuitos com relógio porteado são em geral
susceptíveis de erros. Embora não seja de todo impossível projectar um circuito com
relógio porteado isento de erros, a exploração de todos os detalhes de temporização
é laboriosa e pode sempre acontecer que uma situação que iludiu o exame possa vir
a causar erros.
Assim, considera-se que o recurso à técnica de relógio porteado é uma técnica
incorrecta, devendo a função de habilitação ser sempre implementada com recurso
a técnicas exclusivamente síncronas.
9.2.3 - Segundo exemplo de técnicas de projecto infiáveis:
uso incorrecto de entradas adicionais assíncronas
Já vimos que muitos CIs dirigidos ao funcionamento síncrono apresentam entradas
adicionais assíncronas. É por exemplo o caso das entradas PRESET e CLEAR em flip-flops D
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 58
e JK, e também da entrada CLEAR existente em alguns CIs de contadores síncronos. O uso
primário destas entradas assíncronas é no papel de entradas de inicialização: quando o
sistema é posto sob tensão, será produzido um pulso numa linha de inicialização, o qual
mediante ligação às entradas de inicialização relevantes permitirá estabelecer o estado
inicial de algumas ou mesmo de todas as células de memória do sistema.
Salvo em casos pontuais, as entradas adicionais assíncronas não devem ser utilizadas
para outros fins além da inicialização. Esses casos pontuais justificam-se quando se trata
de funções impossíveis de implementar com circuitos integralmente síncronos; e, nestes
casos, para assegurar a fiabilidade de funcionamento em circuitos assim construidos é
necessário fazer uma análise exaustiva dos detalhes temporais.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 59
7 - Métodos estruturados de projecto de sistemas digitais
7.1 - Introdução
7.1.1 - Insuficiências do método "tradicional"
Adequado só a circuitos de muito baixa complexidade
Projectámos até agora pequenos circuitos sequenciais, como detectores de
sequências, contadores, etc., que se caracterizavam por assumirem um pequeno número
de estados distintos e por terem um número modesto de entradas de controlo.
No projecto desses circuitos usámos fundamentalmente um método sistemático
de síntese, o método "tradicional" ou "convencional". Este método apoiava-se em
diagramas e tabelas de estados como ferramentas de representação de circuitos e era
apenas orientado para soluções em torno de flip-flops e circuitos combinacionais
implementados com portas. Como todos os métodos sistemáticos, compreende uma
sequência de passos de fácil apreensão, cuja aplicação disciplinada leva o projectista das
especificações ao circuito final de forma geralmente cómoda e expedita.
No entanto, o método "tradicional" ou "convencional" revela-se insatisfatório
quando o circuito a projectar, mesmo que dirigido à implementação com flip-flops, é
complexo. Com efeito, as ferramentas "tradicionais" ou "convencionais" de descrição de
funções e de circuitos - os diagramas de estados e as tabelas de estados - tornam-se de
aplicação penosa, senão de todo impraticável, quando o número de variáveis de estado e
de variáveis de entrada ultrapassa um limite reduzido (digamos, 4 variáveis de estado e 2
ou 3 variáveis de entrada).
Incapaz de utilizar blocos funcionais mais complexos
Muito mais importante é que mesmo as funções ainda moderadamente
complexas são mais convenientemente implementadas com recurso a módulos. Esses
módulos poderão ser, no caso do projecto orientado para os circuitos standard de famílias
como a TTL, os circuitos existentes na família utilizada, ou associações simples desses
circuitos (por exemplo um módulo de contador de 8 bits implementado com 2 circuitos
integrados de contador de 4 bits). O método "tradicional" simplesmente não contempla a
utilização de primitivas de implementação que não sejam os flip-flops e as portas lógicas
vulgares.
Mas não é só a questão de poder usar primitivas de implementação mais
complexas que dá importância ao conceito de módulo. Os módulos, numa visão mais
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 60
geral, traduzem a decomposição do problema de síntese de um circuito numa estrutura
de circuitos mais simples, em que as funções dos vários módulos, convenientemente
orquestradas por um módulo especial - o módulo controlador, ou controlador de sistema -
realizam a função global proposta. Assim, os módulos podem não estar directamente
associados com circuitos integrados existentes (Quando o projecto é orientado para
implementação com lógica programável, é claro que os módulos de acção nunca estão
directamente associados com as funções dos CIs existentes. Mas mesmo neste caso, as
funções estandardizadas existentes nas famílias lógicas servem muitas vezes de guia
para a definição das sub-funções a implementar como módulos, uma vez que fornecem
um reportório de ideias pré-estabelecidas de funções elementares em termos das quais
se pode estruturar a decomposição da função global).
7.1.2 - Métodos heurísticos
Uma aproximação muito vulgar ao problema de na implementação conseguir
utilizar as funções existentes em circuitos integrados é a de seguir métodos intuitivos ou
heurísticos. Com estes métodos, que se apoiam fundamentalmente na capacidade
criativa e na experiência adquirida do projectista, chega-se típicamente à solução final
por uma sequência de tentativas. Um bom conhecimento, por parte do projectista, dos
componentes existentes permite-lhe esboçar de imediato uma solução a partir das
especificações, tirando desde logo partido dos componentes mais complexos (verifica-se
que, regra geral, o custo total de um sistema é mais baixo quando se utilizam menos
circuitos integrados, embora para diminuir o número de circuitos integrados se utilizem
circuitos integrados mais complexos, logo mais caros - isto é, o benefício económico da
redução do número de circuitos integrados mais que compensa o custo mais elevado dos
circuitos mais complexos). Segue-se um ciclo de análise-correcção, repetido tantas vezes
quantas as necessárias, até que a solução satisfaça as especificações.
Estes métodos estão nos antípodas do que se entende por um método
sistemático, ou pelo menos estruturado.
A favor deles, argumenta-se que a tarefa proposta (pelo menos quanto ao
projecto orientado para circuitos integrados standard, da família TTL ou de outra) é
intrínsecamente incondutível a um método sistemático - com efeito, o objectivo é
seleccionar e interligar um conjunto de circuitos integrados de entre os disponíveis
comercialmente, de maneira a cumprir o proposto com o mínimo de circuitos integrados.
Obviamente, os circuitos integrados existentes não constituem um qualquer reportório
estruturado sistemáticamente, antes são o resultado de uma acumulação de funções, que
num momento ou noutro foram julgadas úteis na resolução de problemas correntes, e
logo comercializáveis com rentabilidade. Assim, um método que passe pela selecção de
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 61
circuitos destes com vista a implementar uma determinada função nunca pode ser
sistemático.
Mas contra os métodos heurísticos, argumenta-se também correctamente que:
- permitem que se caia numa situação de descontrolo do tempo de projecto, pois
os ciclos de análise-correcção podem repetir-se vezes sem fim
- a qualidade da solução (bem como o tempo de projecto) está exageradamente
dependente das características individuais do projectista
- a natureza indisciplinada do método poderá conduzir a implementações difíceis
de assegurar correctas, de compreender e por conseguinte pouco condutíveis a um
processo posterior de aperfeiçoamentos ou alterações (para satisfazer alterações ou
acrescentos nas especificações) bem como torna mais difícil a identificação de possíveis
avarias do sistema.
7.1.3 - Metodologias estruturadas de projecto
A metodologia estruturada de projecto, reconhecida que está a impossibilidade
de recorrer exclusivamente a métodos sistemáticos, propõe um referencial de projecto
com o fim de permitir a aplicação dos métodos heurísticos de forma ordenada e eficiente.
É inspirada na metodologia homónima seguida no desenvolvimento de programas, que
propõe que o desenvolvimento destes se faça do "topo para a base", por refinamentos
sucessivos, recorrendo no final a um conjunto restrito de "construções" modulares, com
interfaces bem definidos, fáceis de compreender e de verificar correctas.
Para frisar bem a diferença em relação aos métodos puramente heurísticos,
podemos dizer que:
- a metodologia estruturada confina os passos heurísticos aos pontos onde eles
são indispensáveis (veremos que esses pontos são fundamentalmente a partição de
funções e a escolha de componentes).
- a metodologia estruturada evita que o próprio método de projecto seja também
deixado à "inspiração" heurística.
Níveis de projecto
Como já se disse, cada técnica de projecto tem validade a um certo nível de
complexidade - por exemplo, o "método tradicional" é adequado ao projecto de circuitos
simples, com poucas variáveis de estado e poucas entradas.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 62
Para situar a "metodologia estruturada" (que iremos seguidamente desenvolver)
em relação aos outros níveis de projecto, diremos que os sistemas/funções a implementar
com esta metodologia são caracterizados por:
- uma complexidade suficientemente elevada para justificar a utilização de
funções como as encontradas nos circuitos MSI (multiplexers, adicionadores, contadores,
…) e LSI
- uma complexidade bastante abaixo da que exige o emprego de
microprocessadores e dos seus circuitos periféricos associados, para já não falar de
combinações de placas de circuitos baseados em microprocessadores (que é o caso de
um microcomputador pessoal, um sistema de controlo industrial, …).
Aliás, existem sistemas cuja complexidade justificaria o uso de um
microprocessador, mas que por outro lado apresentam requisitos de velocidade que são
incompatíveis com a implementação em microprocessador. Com efeito, para que um
microprocessador mude o estado de uma das linhas de um registo de saída
(normalmente implementados em circuitos associados ao microprocessador, mas que lhe
são externos) é necessário que sejam executadas várias instruções, e cada uma delas
desenrola-se ao longo de vários períodos do relógio do microprocessador.
Mesmo que o relógio do microprocessador pudesse ser tão rápido como o limite
máximo de frequência de circuitos TTL, as saídas do microprocessador teriam tempos de
reacção superiores por um factor de dez ou mais em relação a uma implementação
alternativa com circuitos TTL. Mas verifica-se que as frequências de relógio dos
microprocessadores mais vulgares ficam por valores da ordem das dez vezes inferiores
aos limites de frequência em TTL, pelo que a diferença de velocidade entre uma
implementação TTL e uma implementação com microprocessador pode chegar a um
factor de 100.
Assim, estes sistemas de complexidade já considerável, mas cujos requisitos de
velocidade não permitem o uso de microprocessadores são também candidatos ao
desenvolvimento com uma metodologia estruturada semelhante à que vai ser
apresentada neste capítulo.
Arquitectura de referência
Para a implementação dos sistemas deste nível de complexidade, empregaremos
uma arquitectura cujos elementos constituintes são:
- os vários módulos de acção, que são circuitos como contadores,
comparadores, etc., ou associações simples destes circuitos; cada módulo de acção
desempenha um papel bem definido e requer sinais de controlo (tais como os sinais LOAD
e COUNT ENABLE num contador síncrono) que lhe devem ser fornecidos por outro
circuito.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 63
- o módulo controlador que, fornecendo os sinais de controlo dos módulos de
acção, orquestra a operação de todo o sistema.
linhas de contrololinhas de controlo
linhas de informação
linhas de informação
Módulo controlador
Módulo de acção nº1
Módulo de acção nº2
Módulo de acção nº4
Módulo de acção nº3
Fig.1 - Arquitectura de referência
Como se vê na figura, o módulo controlador produz as linhas de controlo para os
módulos de acção e por outro lado pode receber de alguns destes linhas de informação
que irão influenciar a sua evolução.
A implementação de um sistema deste nível passa então pelo desenho de um
diagrama de blocos em que aparece um módulo controlador e vários módulos de acção.
Obviamente, especificadas à partida as funções que o sistema deverá cumprir haverá
várias maneiras alternativas de as particionar e atribuir aos diversos módulos de acção.
Assim, o diagrama de blocos exprime também as decisões feitas quanto à partição de
funções - não só entre os módulos de acção, mas também entre estes e o módulo
controlador, pois haverá sub-funções que tanto podem "residir" num módulo de acção
como no módulo controlador.
Os sistemas que vamos estudar serão integralmente síncronos a menos de
eventuais mecanismos de inicialização. Logo, o módulo controlador será um circuito
síncrono, bem como o serão os módulos de acção que sejam sequenciais.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 64
7.2 - Passos do projecto
7.2.1 - Estudo e validação das especificações
Embora possa acontecer que as especificações de um sistema sejam elaboradas
pela mesma pessoa (ou equipa) que o vai implementar, deve considerar-se que existem
duas entidades distintas - o especificador e o implementador - o que dá lugar a um ponto
definido do projecto que é a recepção das especificações.
Uma vez as especificações recebidas, a primeira fase do projecto é a de estudo e
validação das especificações, no sentido de determinar:
- se todos os pontos estão suficientemente claros e definidos
- se contêm incongruências
- se é possível uma formulação mais simples das funções a executar (acontece
amíude que o especificador produza uma formulação das especificações
desnecessáriamente complicada; o implementador, ao abordar o problema de uma forma
mais estruturada, poderá concluir - ou suspeitar - que as especificações são susceptíveis
de uma formulação mais simples)
Pode acontecer que as especificações não devam ser validadas (aceites), mas
sim devolvidas ao especificador para que proceda à sua reformulação ou clarificação.
7.2.2 - Partição funcional
Um dos passos fulcrais no projecto é a partição de funções, descrita por um
diagrama de blocos em que se definem os vários módulos de acção e os sinais que fluem
de uns para os outros e de/para o módulo controlador.
Os módulos de acção podem ser definidos sem ser em relação directa com os
circuitos integrados standard - particularmente quando o projecto fôr orientado também
para a utilização de PALs ou outros dispositivos programáveis - mas há conveniência em
escolher funções do tipo das encontradas nesses circuitos standard.
Este é claramente um passo desenvolvido segundo métodos heurísticos - o que
também pode trazer consigo um processo de tentativa e erro. Com efeito, é natural que à
1ª tentativa não se obtenha uma versão satisfatória, e que se pretenda explorar outras
possibilidades.
Este passo será ilustrado em exemplos.
7.2.3 - Definição da sequência de operações
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 65
Ao mesmo tempo que se faz a partição funcional, define-se a sequência de
operações a serem efectuadas pelos vários módulos de acção.
Um mesmo módulo pode executar diversas operações durante as várias fases do
funcionamento do circuito - por exemplo um contador pode ora fazer uma operação de
carregamento, ora de apagamento, ora de contagem.
A sequência de acções pode ser representada por um diagrama de fluxo. No
desenho do diagrama de fluxo, também é natural que à 1ª tentativa não se obtenha uma
versão satisfatória - mas essa 1ª tentativa deve ser entendida como um passo necessário
para fazer sobressair deficiências que serão corrigidas em tentativas posteriores.
7.2.4 - Implementação dos módulos de acção
Haverá casos em que este passo é de execução trivial. Isto acontece quando a
função do módulo de acção é cumprida por um circuito integrado standard. A situação é
práticamente idêntica quando a função do módulo corresponde a uma expansão de uma
função disponível em circuito integrado - poderíamos ter por exemplo uma função
"comparação de 2 palavras de 8 bits" mas dispôr de CIs de comparadores de apenas 4
bits. Nestes casos, é usual que os próprios CIs já incluam disposições para facilitar a
expansão, e a sua folha de especificações muitas vezes inclui exemplos de diagramas
para circuitos de expansão.
7.2.5 - Definição da sequência temporal dos sinais de controlo
Este passo corresponde a elaborar um diagrama temporal em que figuram os
sinais de controlo dos módulos de acção. É este diagrama temporal, em conjunção com o
diagrama de fluxo, que define as funções de saída do módulo controlador.
7.2.6 - Implementação do módulo controlador
Com base na implementação dos módulos de acção e na sequência temporal dos
sinais de controlo, é possível elaborar um diagrama de fluxo detalhado, que toma já
em conta as operações possibilitadas por cada módulo de acção e as entradas de
controlo efectivamente existentes.
O diagrama de fluxo detalhado pode diferir do diagrama de fluxo inicial por
várias razões:
a) Por vezes chega-se à conclusão de que algumas entradas de controlo dos
módulos de acção podem ser ligadas directamente a entradas externas do sistema.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 66
Neste caso, se bem que conceitualmente essas entradas de controlo dos módulos
de acção continuem a ser consideradas como saídas do módulo controlador (que para as
produzir se limita a "copiar" alguns dos seus sinais de entrada), não interessa que esses
sinais apareçam no diagrama de fluxo detalhado que vai servir para basear a síntese do
módulo controlador. Por este motivo, no diagrama de fluxo detalhado apenas aparecem
(como saídas do módulo controlador) as entradas de controlo dos módulos de acção que
efectivamente precisem de ser produzidas pela máquina de estados que constitui o
módulo controlador (sobre o uso do diagrama de fluxo detalhado, ver também 7.3.2).
b) É possível que a um bloco-acção complexo do diagrama de fluxo inicial
corresponda uma sequência de blocos-acção no diagrama de fluxo detalhado, por causa
de a acção complexa original dever ser executada como uma série de passos pelos
módulos de acção tal como foram implementados. É importante notar que o diagrama de
fluxo inicial é desenhado numa altura em que ainda não se sabe como serão
implementados os módulos de acção, ao passo que o diagrama de fluxo detalhado é
desenhado já após a implementação dos módulos de acção.
c) Mais raramente, ao implementar os módulos de acção podemos detectar pela
primeira vez a possibilidade de ocorrer uma qualquer situação de excepção, não prevista
na altura em que se desenhou o diagrama de fluxo inicial (um exemplo: num sistema que
faz operações aritméticas, pode acontecer que só na implementação dos módulos de
acção se detecte que existe a possibilidade de ocorrer ultrapassagem de capacidade -
overflow - dos dispositivos usados para a implementação) e as acções necessárias para
tratar essa situação devem ser incluidas no diagrama de fluxo detalhado.
Também pode acontecer o contrário: após a implementação concluir-se que uma
situação de excepção que tinha prudentemente sido prevista no diagrama de fluxo inicial
afinal nunca acontece.
Mas a verdade é que para não prejudicar o conceito de que o diagrama de fluxo
inicial é uma representação fiel (embora não totalmente detalhada) do funcionamento do
sistema, qualquer destes dois tipos de constatação deve dar origem a um redesenho do
diagrama de fluxo inicial. Assim, qualquer caso dos tipos mencionados em c) deve ser
considerado não como uma explicação para diferenças entre o diagrama de fluxo inicial e
o diagrama de fluxo detalhado, mas sim como razão suficiente para redesenhar o
diagrama de fluxo inicial e voltar atrás correspondentemente no processo de síntese.
Em sistemas relativamente simples, pode acontecer que o módulo controlador
seja um circuito muito simples, sintetizável pelo "método tradicional" - em que as
ferramentas de representação são o diagrama de estados e a tabela de transição, e as
ferramentas de síntese são os mapas (de Karnaugh) de estado seguinte e de excitação.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 67
Para circuitos levemente mais complexos, como ferramenta de representação
pode ser utilizado o diagrama de estados reduzido e como ferramentas de síntese os
mapas reduzidos de estado seguinte e de excitação (que estudaremos mais adiante).
Módulos controladores mais complexos podem ser sintetizados com base em
circuitos ROM, em circuitos especiais programáveis como os sequenciadores, ou no topo
de complexidade, com microprocessadores rápidos.
7.2.7 - Refinamento do projecto
Finalmente, e se bem que este aspecto não vá ser explicitado nos exemplos que
servirão de núcleo a este capítulo, é importante reconhecer que na prática corrente o
projecto de sistemas modulares é quase sempre sujeito a um processo de refinamentos
sucessivos.
Por exemplo, é bem provável a seguinte situação: após obter uma "partição
funcional" e "definição de sequência de operações" satisfatórios, o projectista passa à
"Implementação dos módulos de acção", e o contacto com os problemas deste passo de
projecto pode sugerir-lhe uma "Partição funcional" nítidamente superior (maior
simplicidade, etc.) à inicial.
Confrontado com uma situação deste tipo, o projectista pode ser tentado a
simplesmente desprezar o conceito de "partição funcional", e a iniciar um processo de
remanejamento dos módulos, à medida do que lhe parecer mais conveniente.
Este procedimento é incorrecto. O procedimento correcto será o seguinte: se o
projectista, ponderando as vantagens de uma nova "partição funcional", decidir que vale
a pena refazer a "partição funcional", deve voltar atrás no projecto até esse passo, e
refazer tudo desde aí.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 68
7.2.8 - Sequência de passos de projecto
Podemos então definir uma sequência de passos:
1 - Estudo e validação das especificações
Deve chegar-se a uma descrição perfeitamente clara das funções que se
pretende que o sistema execute. Essa descrição será apoiada num esboço de unidade
global para o sistema - com indicação de entradas e saídas - como se exemplifica na
figura a seguir:
Início
Sensor A
Sensor B
Sensor C
Relógio
Pré-aviso
Desactivação
Fig.2 - Exemplo de esboço de unidade global
Muitas vezes também é conveniente elaborar um diagrama temporal que
descreva as relações de temporização entre as várias entradas ou entre as entradas e as
saídas.
2 - Decomposição da unidade global esboçada em módulos de acção
e módulo controlador
A partição de funções deverá levar a uma definição clara das funções de cada
módulo de acção. Este é o critério fundamental na partição de funções, não se dando
importância, numa primeira fase, ao facto de as funções serem ou não implementáveis
directamente com os circuitos integrados disponíveis (pois a preocupação de procurar
circuitos que implementem directamente subfunções acaba por tender a influenciar a
definição dessas funções, prejudicando a clareza da estrutura do particionamento).
Ao mesmo tempo que se define um particionamento em módulos de acção
também se define um particionamento das tarefas no tempo. Assim, elabora-se ao
mesmo tempo o diagrama de blocos inicial e o diagrama de fluxo.
3 - Implementação dos módulos de acção
Cada módulo de acção é implementado com base nos circuitos integrados MSI
/LSI standard da família lógica que se está a utilizar, em flip-flops e portas lógicas, bem
como possívelmente em circuitos programáveis tais como PALs.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 69
4 - Estabelecimento das relações temporais dos sinais de controlo
Também com base na implementação dos módulos de acção é possível elaborar
um diagrama temporal para os sinais de controlo que eles requerem.
Podemos em seguida passar do diagrama de fluxo ao diagrama de fluxo
detalhado.
5 - Síntese do módulo controlador
Como já vimos, os métodos de implementação variam muito com o nível de
complexidade atingido. Nos casos mais simples bastarão as ferramentas tradicionais dos
diagramas de estados e dos mapas de estado seguinte e de excitação, mas utilizaremos
sempre - para uniformidade - o diagrama de estados reduzido.
7.3 - Ferramentas de projecto
7.3.1 - Diagramas de fluxo
Elementos
Os elementos de um diagrama de fluxo são os seguintes:
Denota usualmente a situação inicial, de partida
Denota ACÇÕES executadas neste ponto do fluxo
Denota DECISÕES de fluxo
Fig.3 - Elementos dos diagramas de fluxo
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 70
Na compreensão dos diagramas de fluxo é essencial reconhecer que a passagem
de um elemento ao seguinte não traduz necessáriamente eventos separados no tempo -
isto é, em períodos sucessivos do relógio.
Por exemplo, seja o seguinte diagrama de fluxo (este sistema é projectado para
encontrar o maior dos valores armazenados em 3 registos A, B e C. Compara em 1º lugar
A e B; o resultado desta comparação vai determinar qual a comparação seguinte):
A >B?
Comparar A com B
Comparar B com C
Comparar A com C
sim não
Durante a operação do circuito, a 2ª comparação (A<->C ou B<->C) será feita no
ciclo de relógio imediatamente a seguir ao ciclo utilizado para a 1ª comparação (A<->B);
isto é, a decisão de salto não ocupa nenhum ciclo de relógio.
O diagrama de fluxo inicial normalmente só tem sentido se associado a um
diagrama de blocos (partição de funções) pois as acções que aparecem no diagrama de
fluxo são específicas dos blocos de acção escolhidos.
7.3.2 - Diagrama de fluxo detalhado
O diagrama de fluxo detalhado está ligado com o processo de implementação
dos módulos de acção. Assim, as acções que figuram no diagrama de fluxo detalhado
referem-se já à implementação dos módulos de acção que foi feita.
Opção quanto ao que convém representar no diagrama de fluxo detalhado
O diagrama de fluxo detalhado é desenhado já com um conhecimento
pormenorizado dos requisitos dos módulos de acção em termos dos sinais de controlo
que realmente devem ser produzidos pelo módulo controlador. Pode acontecer que
algum, ou alguns, dos sinais de controlo para os módulos de acção possam ser gerados
simplesmente por ligação a sinais de entrada para o sistema (veremos que isto acontece
no 1º exemplo de aplicação que estudaremos).
Como o diagrama de fluxo detalhado vai servir fundamentalmente para basear o
projecto da máquina de estados que constitui o módulo controlador, põe-se a questão de
fazer uma opção quanto ao que é representado no diagrama de fluxo detalhado:
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 71
- ou todas as operações de todos os módulos do sistema
- ou apenas os comandos (concretizados no sequenciamento dos sinais de
controlo) emitidos pelo módulo controlador, deixando de fora acções dos módulos de
acção que não requeiram a emissão de comandos pelo módulo controlador.
Como um dos usos do diagrama de fluxo detalhado será o de permitir reconhecer
os estados que deverão figurar no diagrama de estados reduzido, consideramos a 2ª
opção do uso do diagrama de fluxo detalhado como indispensável. No caso de projectos
especialmente complexos, pode também utilizar-se o diagrama de fluxo detalhado para
pormenorizar todas as operações, produzindo-se então dois diagramas de fluxo
detalhados em que um inclui algumas operações além das que figuram no outro.
Blocos-acção com saídas condicionais
No desenho do diagrama de fluxo detalhado deve utilizar-se tanto quanto
possível o conceito de saídas condicionais, desde que isso não prejudique a clareza do
diagrama. Isto é, as estruturas do tipo das da esquerda, na Fig.4, devem ser substituidas
por um bloco do tipo do da direita (se a especificação não exigir que "Acção 1" e "Acção
2" sejam executadas em ciclos de relógio diferentes):
Teste ?Sim
Não
Acção 1
Acção 2
Acção 1
Acção 2? (Teste)
Fig.4 - Representação das saídas condicionais
A acção 2 está associada a saídas condicionais, o que é representado pelo "?".
Continua a ser necessário especificar qual o teste feito.
Esta substituição é importante, pois cada bloco-acção geralmente vai dar origem
a um estado, e a figura da esquerda poderia levar a que se incluisse um estado
desnecessário.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 72
7.3.3 - Diagrama de estados reduzido
O diagrama de estados reduzido (MDS diagram, de "Mnemonic-Documented
State diagram", na terminologia de "An Engineering Approach to Digital Design", W. I.
Fletcher, 1980) apresenta algumas diferenças de notação em relação aos diagramas de
estados convencionais.
Chamamos-lhe diagrama de estados reduzido porque se presta especialmente
bem ao preenchimento directo de mapas reduzidos.
É preferível ao diagrama de estados convencional porque este último resulta
excessivamente denso quando aplicado aos módulos controladores, para os quais na
maior parte dos casos se verifica que:
- existem muitas saídas (que são as entradas de controlo dos módulos de acção)
- é frequente que cada uma destas saídas esteja apenas asserida num ou em
poucos estados, mantendo-se deasserida em todos os outros estados (outras
variáveis estão quase sempre asseridas e só ficam deasseridas em um ou em
poucos estados)
- as saídas são muitas vezes condicionais (isto é, não são asseridas sempre que se
está num determinado estado, mas sim são asseridas em determinado estado
apenas quando as condições de entrada cumprem um certo critério).
- as decisões de transição de um estado para os possíveis estados seguintes são
muitas vezes tomadas com base no valor de apenas uma variável, mas essa
variável não é a mesma para todos os estados
Diferenças em relação ao diagrama de estados convencional
As diferenças do diagrama de estados reduzido em relação ao diagrama de
estados convencional são as seguintes:
- Os valores das saídas associados a cada estado são indicados por legendas
associadas ao próprio estado em vez de associadas aos arcos de transição que
emergem desse estado
- os valores das saídas condicionais, e também as condições que comandam as
transições, são descritos por expressões lógicas e não por enumeração das
condições de entrada para as quais são verdadeiras.
Exemplos de aplicação do diagrama de estados reduzido
Exemplo 1
O diagrama de estados convencional é particularmente pouco eficiente na
representação de saídas condicionais.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 73
Suponhamos um sistema com uma saída O1 e 3 entradas I1 I2 I3 e que do
estado A transita sempre para o estado B. No entanto, no estado A, O1 é uma saída
condicional e é 1 quando I1 I2 I3 = 010 ou quando I1 I2 I3 = 001. A representação
correspondente, em diagrama de estados convencional, seria:
A
B
1XX/0 011/0 000/0 010/1 001/1
Fig.5 - Exemplo 1 - diagrama de estados convencional
E no diagrama de estados reduzido, a representação é:
A
B
Fig.6- Exemplo 1 - diagrama de estados reduzido
Exemplo 2
Suponhamos um sistema com uma saída O1 e 3 entradas I1 I2 I3 e que do
estado A transita para o estado B quando I2 = 1 ? I3 = 1, e nos outros casos permanece
em A. No estado A, O1 é uma saída condicional e é 1 quando I2 I3 = 11. A
representação correspondente, em diagrama de estados convencional, seria:
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 74
A
B
X10/0 X01/0 X11/1
X00/0
Fig.7 - Exemplo 2 - diagrama de estados convencional
E no diagrama de estados reduzido, a representação é:
B
+
+
= .A
Fig.8 - Exemplo 2 - diagrama de estados reduzido
7.3.4 - Compactação da representação de saídas com comutações pouco
frequentes
Como se disse acima, nos módulos controladores muitas variáveis de saída estão
quase sempre deasseridas ou quase sempre asseridas. Assim, para maior compactação
(e também para maior clareza) emprega-se a seguinte notação:
Para representar o facto de que uma variável de saída O1 é asserida apenas
durante a permanência num estado A:
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 75
Oa
dA 1
Para representar o facto de que uma variável de saída O1 é asserida à
entrada num estado A e que permanece asserida em um ou mais dos
possíveis estados seguintes:
OaA 1
Para representar o facto de que uma variável de saída O1 é deasserida à
entrada num estado A e que permanece deasserida em um ou mais dos
possíveis estados seguintes:
OdA 1
Na figura seguinte compara-se esta forma de representação com a que tínhamos
vindo a utilizar. No diagrama da esquerda, representa-se (da maneira convencional) o
andamento de um sistema que percorre (incondicionalmente) 6 estados A, B, C, D, E, F e
que produz duas saídas (asseridas a 1) O1 e O2 ; O1 deve manter-se asserida durante
os estados B, C e D, e O2 deve estar asserida só durante a permanência no estado A. No
diagrama da direita representa-se o mesmo sistema, mas de acordo com a nova
convenção de representação; já que as variáveis só figuram nos estados em que sofrem
comutações, a representação ganha em clareza e resulta mais compacta.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 76
A
B
C
D
F
E
Formato: O1
O2
01
10
10
10
00
00A
B
C
D
F
E
Oa
d2
Oa1
Od1
Fig.9- Representação compactada das variáveis de saída
7.3.5 - Representação, no diagrama de estados reduzido e nos diagramas de
fluxo, para:
- variáveis de saída asseridas a 1
- variáveis de saída asseridas a 0
- variáveis de saída para as quais ainda não foi definido o valor de
asserção
No projecto modular de circuitos digitais é frequentemente vantajoso protelar a
decisão quanto ao valor de asserção dos sinais (ou melhor, de todos os sinais cujo valor
de asserção não seja pré-definido pelas especificações), até que se tenha feito a
implementação dos módulos de acção. Escolhendo os valores de asserção de acordo com
as implementações já realizadas, é possível conseguir economias de lógica
combinacional.
EXEMPLO:
Suponhamos um circuito em que, ao fazer a partição funcional, se definiu
um sinal Apagar, cujo papel é repôr a zero um contador que constitui um módulo
de acção. Nesta fase, não convém arbitrar o valor de asserção do sinal Apagar.
Suponhamos então que para a implementação desse módulo de acção se escolheu
o CI 74163, que dispõe de um sinal de entrada CLEAR*, asserido a 0. Tomando já
em conta esta implementação, é óbvio que se decidirmos que o sinal Apagar seja
asserido a 0 pouparemos no circuito a inclusão de um negador interposto entre o
módulo controlador (que gera o sinal Apagar) e a entrada CLEAR* do CI 74163.
Sendo assim, num estágio inicial do projecto poderemos estar a trabalhar apenas
com variáveis das quais ainda não se decidiu o valor de asserção (embora possa
acontecer que a própria especificação estabeleça já o valor de asserção de algumas das
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 77
variáveis). Num estágio mais avançado, o valor de asserção de mais algumas variáveis já
terá sido decidido.
Assim, no caso geral, teremos de representar:
- variáveis de saída asseridas a 1
- variáveis de saída asseridas a 0
- variáveis de saída para as quais ainda não foi definido o valor de asserção
Uma solução fácil seria representar só a asserção / deasserção dos sinais, sem
relação aos valores 0 e 1. Mas isto seria inconsistente com as decisões já tomadas, que
não seriam reflectidas na representação utilizada (quer seja um diagrama de fluxo, quer
um diagrama de estados).
Assim, utilizaremos nos diagramas de fluxo e nos diagramas de estados a
seguinte convenção:
Setas e , sem mais indicações, referem-se sempre a 0s e 1s.
Setas e indicam asserção e deasserção de um sinal, respectivamente.
Estes símbolos só deverão ser utilizados no caso de sinais para os quais ainda não se definiu o valor de asserção.
a
d
Assim, se CARGA fôr um sinal do qual ainda não está definido o valor de
asserção, o seguinte segmento de diagrama…
CARGAa
dEstado Y
indica que CARGA será asserido apenas durante o Estado Y.
Para o sinal APAGA* (relembrar que "*" denota um sinal asserido a 0) , que é
asserido a 0,
APAGA *a
dEstado Y
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 78
indica que APAGA* será asserido durante a permanência no estado Y.
Alternativamente (e mais correctamente, de acordo com a nossa convenção), isto poderia
ser representado por:
APAGA * Estado Y
7.3.6 - Representação, no diagrama de estados reduzido e nos diagramas de
fluxo, para:
- variáveis de entrada asseridas a 1
- variáveis de entrada asseridas a 0
- variáveis de entrada para as quais ainda não foi definido o valor de
asserção
O problema da representação dos três casos de variáveis também se põe em
relação às variáveis de entrada. Iremos utilizar a seguinte convenção:
Variáveis de entrada para as quais ainda não foi definido o valor de asserção
São escritas com o índice "a".
EXEMPLO:
A variável INICIO ainda não tem definido o seu valor de asserção.
O circuito transita de A para B se a variável INICIO estiver asserida e
mantém-se em A se a variável INICIO estiver deasserida.
A
B
INICIO a
INICIO a
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 79
Variáveis de entrada asseridas a 1
Variáveis de entrada asseridas a 0
São escritas sem o índice "a", e considera-se que as condições indicadas se
referem a 0s e 1s.
EXEMPLOS:
SALTA é uma variável asserida a 1. No seguinte diagrama, o circuito transita de
A para B se SALTA = 1 e permanece em A se SALTA = 0.
A
B
SALTASALTA
PERMANECE* é uma variável asserida a 0. No diagrama apresentado a seguir,
o circuito transita de A para B se PERMANECE* = 1 e continua em A se
PERMANECE* = 0
A
B
PERMANECE *
PERMANECE *
Em resumo:
De acordo com esta convenção, quer o sinal seja asserido a 1 , quer seja asserido
a 0 , a interpretação é em termos de "sinal está a 1".
No entanto, quando para o sinal ainda não se definiu o valor de asserção, a
interpretação é em termos de "sinal asserido"; para denotar o uso desta opção, sufixam-
se as mnemónicas dos sinais com o índice "a".
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 80
AQUIAQUI tenho que rever:
- os 2 exemplos do cap.7
- problemas resolvidos
- resolução dos pontos
- o trabalho prático
ver se o exemplo que tinha galho por causa do RCO depender do en.T fica melhor usando
o En. P
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 81
7.3.7 - Desenho do diagrama de estados a partir do diagrama de fluxo
detalhado
O diagrama de fluxo detalhado é obtido a partir dum reexame do diagrama de
fluxo inicial , feito à luz da implementação efectuada para os módulos de acção. O
próximo passo é o desenho do diagrama de estados.
Motivação para "contenção" do número de estados
Como o número de estados que constam do diagrama vai influenciar a
complexidade do circuito, ao desenhar o diagrama de estados deve-se procurar "conter"
o número de estados. Mas por outro lado, como já foi mencionado no capítulo 5
(relembrar por exemplo o caso dos contadores de anel), a redução do número de estados
para além de certo ponto "paga-se" com um aumento da complexidade do descodificador
de estado seguinte e do descodificador de saída. Assim, ao passarmos do diagrama de
fluxo detalhado para o diagrama de estados tentaremos reduzir o número de estados,
mas sem levar este propósito ao ponto de aumentar muito a complexidade da lógica
combinacional (por exemplo, um meio desaconselhável de reduzir o número de estados é
fazer um uso exagerado de saídas combinacionais - o que compromete a clareza do
diagrama de estados e pode acabar por redundar num custo de implementação maior por
causa da lógica combinacional requerida).
Correspondências entre estruturas do diagrama de fluxo detalhado e estruturas
do diagrama de blocos
Seria desejável definir relações consistentes de correspondência entre estruturas
do diagrama de fluxo detalhado e estruturas do diagrama de estados , pois isso permitiria
sistematizar totalmente o desenho do diagrama de estados.
Por exemplo, interessaria saber se a relação expressa pela figura seguinte se
verifica sempre:
A
ACÇÃO
TESTE?
Sim
Não TESTE
TESTEACÇÃO
Diagrama de fluxo detalhado
Diagrama de estados
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 82
Fig.10 - Exemplo de correspondência usual entre Diagrama de fluxo detalhado e
Diagrama de estados
Mas constata-se que não há regras rigorosas de correspondência. Pode apenas
dizer-se que na maioria dos casos:
1 - A um bloco-teste geralmente não corresponde um estado (mas sim o conjunto de arcos de transição emergentes de um determinado estado)
2 - A um bloco-acção geralmente corresponde um e só um estado
Mas em muitos casos estas correspondências não são verificadas. As excepções à
2ª correspondência ocorrem mais frequentemente, e no caso geral um bloco-acção pode:
- corresponder a um único estado
- corresponder a vários estados
- ou partilhar um estado em conjunto com vários outros blocos-acção
Aliás, as correspondências sistemáticas entre o diagrama de fluxo detalhado e o
diagrama de estados não podem existir porque a informação representada nestas duas
formas não é exactamente a mesma.
Com efeito, a informação temporal está quase totalmente ausente do diagrama
de fluxo detalhado, que apenas indica a ordem de execução das acções e testes, mas é
omisso quanto a:
- se as acções e os testes podem ou não ser simultâneos
- se é necessário interpôr "intervalos de espera" (um ou mais períodos de relógio)
entre
algumas das acções e dos testes
Pelo contrário, todos estes detalhes de temporização são explicitados no
diagrama de estados.
Assim, só se pode desenhar o diagrama de estados integrando a informação do
diagrama de fluxo detalhado com os pormenores de temporização explicitados no
diagrama temporal.
É o diagrama temporal que fornece a informação para por exemplo:
- fazer corresponder vários estados a um único bloco-acção se a acção
aparecer no diagrama temporal desagregada em várias acções elementares
consecutivas.
Notar que isso já não deve poder acontecer aos blocos-acção do diagrama de
fluxo detalhado, porque aí as acções já devem estar desagregadas em acções
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 83
elementares. No entanto, intervalos entre acções, exigidos pelos dispositivos
(p.ex. uma memória RAM, que veremos no próximo capítulo) podem ainda não
estar explicitados no diagrama de fluxo detalhado, e têm de aparecer no
diagrama de estados.
- fazer corresponder um único estado a vários blocos-acção consecutivos
se o diagrama temporal indicar que podem ser simultâneos.
- fazer até corresponder um único estado a vários blocos-acção que têm
interpostos blocos-decisão se o diagrama temporal indicar que as acções podem
ser simultâneas e se fôr considerado conveniente que algumas saídas passem a
condicionais (só transformando saídas incondicionais em condicionais é que se
consegue reunir num único estado acções correspondentes a blocos-acção que
tinham entre si blocos-teste).
Veremos em seguida exemplos que ilustram estas considerações.
7.3.8 - Exemplos de desenho do diagrama de estados
1º exemplo - um caso de correspondências "normais" (cada bloco-acção
corresponde a um estado, e os blocos-teste não correspondem a nenhum
estado)
Numa determinada fase do funcionamento de um sistema, pretende-se ligar um
motor (sinal Ligar), mas só após ter decorrido um intervalo de espera, correspondente a
um certo número ("Limite") de ciclos de relógio.
Para isso implementou-se um módulo de acção designado por Contador de
espera, que dispõe de duas entradas de controlo: Apaga, que põe a contagem a zero, e
Incr, que faz a contagem avançar. O diagrama de fluxo detalhado e o diagrama temporal
são mostrados a seguir:
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 84
Apaga
Incr
Cont. = Limite ?
Ligar
SimNão
Apaga
Relógio
CONTAGEM 0 1
Incr
Lim - 1
Detecção de contagem no limite
Lim
Ligar
Lim + 1
Fig.11 - Diagrama de fluxo detalhado e diagrama temporal
Neste caso, o diagrama de estados mais natural é o da figura seguinte (seria
possível que fazendo as variáveis Incr e Ligar condicionais se conseguisse suprimir o
estado B, mas isso seria feito em prejuízo da clareza do diagrama e com provável
acréscimo do custo de implementação):
B
Cont._Lim
Incr
Cont._Lim
A Apaga
C Ligar
Apaga
Relógio
CONTAGEM 0 1
Incr
Lim - 1
Detecção de contagem no limite
Lim
Ligar
Lim + 1
Estados B B B B CA
Fig.12- Diagrama de estados e diagrama temporal
Notar que se redesenhou o diagrama temporal, mas agora com a adição do
andamento dos estados do circuito - isto é uma boa verificação de que o diagrama de
estados está correcto face ao funcionamento pretendido.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 85
2º exemplo - um caso em que a um só bloco-acção correspondem vários estados
Suponhamos que se pretende escrever uma série de células de memória
consecutivas numa memória RAM estática.
O diagrama de fluxo inicial e o diagrama de fluxo detalhado estão representados
na Fig.13 (considera-se que a incrementação do endereço é obtida asserindo o sinal Incr,
e a escrita é efectuada pulsando a 0 um sinal WE*):
Incr
End. = último ?
SimNão
WE*
Incrementar endereço
End. = último ?
SimNão
Escrever na memória
Fig.13- Diagrama de fluxo e diagrama de fluxo detalhado
No entanto, as memórias RAM estáticas exigem um intervalo de tempo desde o
instante de estabilização dos endereços até ao início da escrita, e outro intervalo desde o
fim da escrita até ao instante em que os endereços mudam. Esses intervalos não estão
explicitados no diagrama de fluxo detalhado , em que normalmente só aparecem acções,
não intervalos entre acções.
Para este sistema, e dada a necessidade dos intervalos, o diagrama de estados
poderia ser:
End_é_último
A Incr
B
C
D
WE*
End_é_último
Fig.14- Diagrama de estados
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 86
Como a passagem pelo estado B faz passar um ciclo de relógio, o intervalo desde
o instante em que os endereços são incrementados até ao início da escrita é cumprido. A
passagem por D garante o cumprimento do outro intervalo.
3º exemplo - um caso em que a blocos-teste correspondem estados
Suponhamos um problema de detecção de sequência (semelhante ao exemplo 2
da secção 5.4.1); pretende-se que sempre que seja detectada a sequência 101 (isto é,
em 3 ciclos sucessivos do relógio) numa linha Bit, seja produzido um pulso a 1 numa
saída Ident.
O diagrama de fluxo detalhado e um possível diagrama de estados são
apresentados na figura a seguir:
bit = 1?
Sim
Não
bit = 0?
Sim
Não
bit = 1?
Sim
Não
Ident
Bit = 1
A
B
C
D
Bit = 0
Bit = 0
Bit = 1
Bit = 1
Bit = 0
Ident
Fig.15- Diagrama de fluxo detalhado e diagrama de estados
Neste caso, a cada bloco-teste acabou por corresponder um estado.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 87
4º exemplo - um caso em que por recurso a saídas condicionais é possível (mas
não aconselhável) reduzir o número de estados
Imaginemos um sistema que realiza multiplicações de dois dados A e B através
do algoritmo de adição múltipla (isto é, a um total inicializado a zero o valor A é somado
B vezes). Uma nova operação é desencadeada sempre que uma entrada de controlo
NovoProduto, síncrona com o relógio, passa de 0 a 1. Considera-se que os factores A e
B são automáticamente carregados em registos quando NovoProduto vai de 0 a 1 e que
o registo de B é decrementável (sinal Decr). As operações de adição são executadas ao
ritmo de uma por ciclo de relógio se o sinal Somar estiver a 1. A inicialização do registo
Total é uma operação síncrona que é executada quando o sinal Inic está a 1. O
diagrama de fluxo inicial é o indicado na figura a seguir.
NovoProduto=1
?
Sim
Não
Inicializar Total a zero
Somar A a Total
Decrementar B
B = 0
?
Sim
Não
NovoProduto=0
?
Sim
Não
NOTA: o teste final (" NovoProduto = 0 ?") é introduzido porque NovoProduto pode ainda continuar a 1 quando acabarem as somas relativas ao produto anterior. Se este teste não fosse feito, a continuação de NovoProduto a 1 seria tomada como uma nova passagem de 0 a 1 e um novo produto seria executado, o que seria incorrecto.
Fig.16- Diagrama de fluxo detalhado
Ambos os diagramas de estados da Fig.17 estão correctos, e o da Fig.17 b) tem 2
estados em vez dos 4 estados do da Fig.17 a). Mas o diagrama de Fig.17b) perde muito
em clareza, e é possível que tenha um custo de implementação mais elevado. Neste
caso, considerar-se-ia mais recomendável o diagrama de estados da Fig.17 a).
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 88
ANovoProduto
SOMAR
NovoProduto
B
CB_Zero
B_Zero
DECR
DNovoProduto
NovoProduto
INIC ANovoProduto
NovoProduto
INIC = NovoProduto
SOMAR C
B_Zero
DECR
= B_Zero
= B_Zero
. NovoProdutoB_Zero+NovoProduto
Fig.17-a) Fig.17-b)
7.4 - Primeiros exemplos de aplicação
EXEMPLO 1
Especificação
Pretende-se implementar um circuito sequencial que compare palavras de 8 bits
X (que lhe vão sendo fornecidas) a uma palavra Y (que foi préviamente memorizada pelo
circuito). A comparação considera-se positiva (devendo a saída IGUAL ficar a 1) se
deslocando recirculantemente a palavra Y um número adequado de vezes se conseguir
uma palavra igual à X.
O circuito tem uma entrada síncrona COMPARA que indica que foi fornecida uma
nova palavra X e que deve ser desencadeada a comparação.
Outra entrada síncrona - NOVOPADRÃO - indica que o padrão de comparação Y
passa a ser uma nova palavra NovoY fornecida externamente. Considera-se que
NOVOPADRÃO nunca é asserido enquanto está a decorrer uma comparação.
A saída IGUAL deve entrar em validade o menor número possível de ciclos de
relógio após ter sido asserido COMPARA e manter-se em validade pelo menos até
COMPARA ser novamente asserido (após ter sido deasserido depois do fim do processo
de comparações).
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 89
O sinal COMPARA é síncrono com o relógio do sistema e a palavra X está válida
durante todo o tempo em que COMPARA estiver asserido. COMPARA está asserido
durante pelo menos 10 ciclos de relógio (o que se considera suficiente para que todo o
processo de comparação se desenrole com COMPARA asserido).
Na operação de carregamento, o sinal NOVOPADRÃO é síncrono com o relógio e
o valor de NovoY está válido durante todo o tempo em que NOVOPADRÃO estiver
asserido.
Os sinais COMPARA, NOVOPADRÃO e IGUAL são asseridos a 1.
1º PASSO - Estudo e validação das especificações
Sendo a palavra-padrão Y = { Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 }
e a palavra a comparar X = { X7 X6 X5 X4 X3 X2 X1 X0 }
o sinal IGUAL é 1 quando:
{ X7 X6 X5 X4 X3 X2 X1 X0 } = { Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 }
ou também quando:
{ X7 X6 X5 X4 X3 X2 X1 X0 } = { Y0 Y7 Y6 Y5 Y4 Y3 Y2 Y1 }
ou quando:
{ X7 X6 X5 X4 X3 X2 X1 X0 } = { Y1 Y0 Y7 Y6 Y5 Y4 Y3 Y2 }
………………
O sinal IGUAL podia ser gerado combinatorialmente, se o circuito fizesse em
simultâneo as 8 comparações:
{ X7 X6 X5 X4 X3 X2 X1 X0 } COM { Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 }
{ X7 X6 X5 X4 X3 X2 X1 X0 } COM { Y0 Y7 Y6 Y5 Y4 Y3 Y2 Y1 }
{ X7 X6 X5 X4 X3 X2 X1 X0 } COM { Y1 Y0 Y7 Y6 Y5 Y4 Y3 Y2 }
………………
Um circuito assim seria extremamente gaspilhador, exigindo 64 comparadores
elementares (de 1:1 bit), ou então 16 circuitos integrados 7485.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 90
Assim, o que se pretende é um circuito que faça sucessivamente as
comparações:
{ X7 X6 X5 X4 X3 X2 X1 X0 } COM { Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 }
{ X7 X6 X5 X4 X3 X2 X1 X0 } COM { Y0 Y7 Y6 Y5 Y4 Y3 Y2 Y1 }
{ X7 X6 X5 X4 X3 X2 X1 X0 } COM { Y1 Y0 Y7 Y6 Y5 Y4 Y3 Y2 }
………………
óbviamente só podendo apresentar um resultado válido após 8 ciclos de
comparação (que necessitarão cada um de um ciclo de relógio).
Os diagramas temporais que explicitam as relações de temporização entre
entradas e saídas do circuito são os seguintes:
Compara
X
IGUAL
Dado X
Saída anterior
1 2 3 4 5 6 7 8
Válido
Relógio
9
…
NOTA: neste ponto do projecto ainda não se pode definir a altura exacta em que o sinal IGUAL ficará válido, pois isso depende da implementação que vamos fazer.
NOTA: a numeração indica o número de ocorrência da vertente após a asserção do sinal COMPARA
10
Fig. 18 - Diagrama temporal para o processo de comparação
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 91
NovoPadrão
NovoY
Relógio
Válido
Fig. 19- Diagrama temporal para o carregamento de novo padrão de comparação
O esboço da unidade global, com indicação de entradas e saída, está na Fig.20.
8
X
8Novo Y
Compara
NovoPadrão
Relógio
Circuito de
comparação
IGUAL
Fig. 20 - Esboço da unidade global
2ºPASSO - Decomposição da unidade global em módulos de acção e
módulo controlador
O problema principal é o de comparar a palavra X com versões sucessivamente
deslocadas da palavra Y. Para fazer cada comparação podemos utilizar um comparador
combinacional de 8 bits (que constituirá pois um dos módulos de acção) mas é necessário
um dispositivo capaz de:
- fazer os deslocamentos sucessivos da palavra Y
- preservar o valor de Y para um futuro ciclo de comparações
Isto pode ser conseguido com um registo de deslocamento, recirculante, de 8
bits. Esse registo deve ter a capacidade de carregamento em paralelo.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 92
O processo de comparação deve ser concluído após 8 ciclos, o que pode ser
controlado pelo próprio módulo controlador ou então por um contador de ciclos que
constitui um outro módulo de acção. Seguimos esta segunda opção.
Finalmente, é necessário memorizar a ocorrência de uma (qualquer) comparação
elementar positiva, o que leva a um outro módulo de acção. Este módulo deve ser capaz
de ser posto a um estado inicial e de memorizar a ocorrência de uma comparação
positiva, em qualquer um dos 8 passos.
Diagrama de blocos - partição funcional
8
X
8Y C
om
pa
rad
or
de
8 b
its
Reg. de deslocamento de 8 bits recirculante
Novo Y
Ca
rre
ga
De
slo
ca
Módulo controlador
Compara
NovoPadrão
Relógio
Relógio
CP
Memorização de comparação
positiva
Inicialização
JáHouveIgual
Relógio
Contador de ciclos
Ap
ag
a
Fim
De
Co
nta
ge
m
IGUAL
Habilitação
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 93
Fig.21 - Diagrama de blocos que exprime a partição funcional
O módulo Memorização de comparação positiva dispõe de uma entrada de
controlo Habilitação, que quando asserida permitirá a memorização e quando
deasserida não permitirá a memorização. Este módulo pode então ser controlado de
maneira a memorizar a "ocorrência de comparação positiva" apenas nas alturas em que
isso fôr desejado.
Como é óbvio, este diagrama de blocos corresponde a uma determinada maneira
(que é apenas uma de várias possíveis) de resolver o problema, e que deve ser
documentada por um diagrama de fluxo.
Diagrama de fluxo
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 94
NovoPadrão?Sim
Não
Não
Início
Contador de Ciclos <- 0
Mem. de Comp. Pos. <- 0
Carrega Novo Y
Compara ?
X = Y ?Sim
NãoMem.Comp <- 1
Incrementa CONT. CICLOS
desloca Y
CONT. = 8 ?Não
Compara ?
Não
Sim
Sim
Sim
Fig. 22 - Diagrama de fluxo inicial
Notar que no fim do diagrama há um ciclo de espera pela condição "COMPARA
deasserido". Este ciclo de espera é necessário porque se se passasse imediatamente à
situação inicial a eventual continuação da asserção de COMPARA (relembrar que a
especificação diz "COMPARA está asserido durante pelo menos 10 ciclos de relógio")
funcionaria como nova asserção e desencadearia novo ciclo de comparação.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 95
3º PASSO - Implementação dos módulos de acção
Comparador de 8 bits
A0A1A2
7485
A3
A=BB0B1B2B3
A>Bin
A=Bin
A<Bin
X0X1X2X3
Y0Y1Y2Y3
A0A1A2
7485
A3
B0B1B2B3
X4X5X6X7
Y4Y5Y6Y7
01
1
1
1
1
0
A>Bin
A=Bin
A<Bin
02
2
2
1
0
A=B2
X = Y
Fig.23 - Módulo "Comparador de 8 bits"
Registo de deslocamento recirculante de 8 bits
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 96
QA QB QC QD
Y0 Y1 Y2 Y3
A B C D
y0 y1 y2 y3
S1 S0
QA QB QC QD
Y4 Y5 Y6 Y7
A B C D
y4 y5 y6 y7
S1 S0
Clear
Left Sh. S.Inp.Right Sh. S.Inp.
Clock
74194 "1" "1"Left Sh. S.Inp.Right Sh. S.Inp.
Clock
74194
"1"Clear
"1"
NovoY
S0S1 Carreg. 1 1
Desl.Dir. 0 1 Conglto 0 0
S1 S0
Fig.24- Módulo " Registo de deslocamento recirculante de 8 bits"
Memorização de comparação positiva
É um circuito síncrono de memória de um bit, com lógica combinacional
adicional.
As funções a serem cumpridas por este módulo são as seguintes:
- inicialização síncrona (passagem a 0 incondicional, quando o sinal Inicialização
estiver asserido)
- passagem a 1 condicional (caso CP=1; CP é o resultado de cada comparação),
quando o sinal Habilitação estiver asserido
- manutenção do valor quando Habilitação estiver deasserido, e também
quando Habilitação estiver asserido, mas CP estiver a 0.
Temos assim uma especificação verbal do estado seguinte da célula de memória
utilizada neste módulo. Optando pela implementação com um flip-flop Q, podemos
preencher imediatamente uma tabela de verdade para a entrada D (vamos utilizar uma
tabela de verdade reduzida em Q, que é a saída do flip-flop; por outro lado, vamos
começar por supôr que ambas as variáveis Inicialização e Habilitação são asseridas a
1, e só depois decidiremos se há conveniência em fazer qualquer delas asserida a 0):
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 97
Inicialização Habilitação CP D
1 X X 0
0 0 X Q
0 1 0 Q
0 1 1 1
E daqui podemos preencher o respectivo mapa de Karnaugh e extrair a
expressão minimizada:
CPHabilitação
Inicialização
Q Q 1 Q
0 0 0 0
Habilitação . CP . Inicialização
Q . Inicialização
InicializaçãoD = ( Q + Habilitação . CP ) .
Como a variável Inicialização (que tínhamos inicialmente suposto asserida a 1)
aparece complementada nesta expressão, podemos arbitrar que essa variável é asserida
a 0 e economizar uma porta de negador.
CLR
PRD Q
"1"
"1"CP
Inicialização*
Relógio
Habilitação
Fig.25 - Módulo "Memorização de comparação positiva"
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 98
Contador de ciclos
Utilizaremos um contador síncrono, preferívelmente um que já conheçamos - que
é o caso do 74163. Como podemos ver do Diagrama de fluxo, as operações que o
Contador de ciclos deverá fazer são o apagamento e a contagem. Aliás, para simplificar o
controlo deste módulo, podemos admitir que ele conte em todos os ciclos de relógio
excepto aqueles em que faz o apagamento .
A operação CLEAR (apagamento) do 74163 é síncrona e sobrepõe-se a todas as
funções comandadas pelas outras entradas de controlo; a entrada Clear é asserida a 0.
Assim, a operação correspondente ao sinal de controlo Apaga (do diagrama de blocos /
partição funcional) pode ser obtida por simples ligação do sinal Apaga à entrada Clear do
74163, mas Apaga será então um sinal asserido a 0, pelo que a sua mnemónica correcta
será Apaga* (como ficou estabelecido no 2º Capítulo, os sinais asseridos a 0 terão a sua
mnemónica acrescida do sufixo "*"; os fabricantes de CIs preferem muitas vezes assinalar
a asserção a 0 por meio de uma barra de negação aposta à mnemónica - é por isto que o
sinal aparece designado por Clear no diagrama de pinos apresentado pelo fabricante). As
outras entradas de controlo deverão receber valores fixos de maneira a que quando
Apaga* estiver deasserido o contador conte normalmente; as ligações fixas serão então:
ENABLE P , ENABLE T …a 1
Load …a 1
O diagrama deste módulo será pois o seguinte:
QA
QB
QC
QD
Clear
Relógio
Apaga *74163
Load"1"
En P En T
"1"
"1"A B C D
"1"
Circuito combinacional
FimDeContagem
Fig.26- Módulo "Contador de ciclos"
A contagem a que corresponde o sinal FimDeContagem ainda não foi
determinada (será escolhida como a mais conveniente em termos da simplicidade do
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 99
módulo controlador) - fica indicado apenas que há um "circuito combinacional" para este
efeito.
4º PASSO - Estabelecimento das relações temporais dos sinais de controlo.
O módulo Comparador de 8 bits não necessita de sinais de controlo - pois é
suposto estar sempre no mesmo modo de funcionamento.
O módulo Memorização de comparação positiva recebe do módulo
controlador duas linhas de controlo: Inicialização* e Habilitação.
Inicialização*, de acordo com o diagrama de fluxo, deve ser asserido após
COMPARA passar a asserido, mas apenas durante um período de relógio.
Habilitação deve em seguida ser asserido durante 8 períodos de relógio para
permitir a memorização de eventuais comparações positivas com as versões de Y
sucessivamente deslocadas. Aliás, o início da asserção de Habilitação pode ocorrer já no
período de relógio em que Inicialização* é asserido.
Finalmente, tanto Inicialização* como Habilitação devem permanecer
deasseridos até que COMPARA seja novamente asserido.
O módulo Contador de ciclos deve receber a entrada Apaga* asserida pelo
menos durante um período de relógio antes que comece o processo de comparações;
isto, para que quando começa o processo de comparações o contador esteja sempre na
posição de partida, que é a contagem 0.
O seguinte diagrama indica o funcionamento obtido se se identificar o sinal
Apaga* com o sinal COMPARA (este sinal Apaga* está ligado à entrada Clear do 74163,
pelo que é asserido a 0).
Compara
1
Relógio
1 2 3 4 5 6 7 80 9 …Saídas do contador
2 3 4 5 6 7 8 9 10
Fig.27 - Evolução das saídas do "Contador de ciclos"
Verifica-se (relembre-se que no 74163 a operação de apagamento tem
precedência sobre a operação de contagem - isto é, quando CLEAR está asserido, o
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 100
74163 é colocado a 0000 na próxima vertente activa do relógio, independentemente do
estado das outras entradas de controlo) que o contador começa em 0 e indica sempre o
número de ciclos de relógio ocorridos após a asserção de Compara, o que satisfaz a
função atribuida a este módulo - assim, o sinal Apaga* pode simplesmente ser ligado à
entrada COMPARA. Note-se no entanto que tomando rigorosamente o conceito de
módulo controlador e módulos de acção isto seria interpretado como sendo o módulo
controlador a fornecer ao circuito de Contador de ciclos um sinal de controlo que "só por
acaso" é igual ao sinal COMPARA.
Registo de deslocamento recirculante - Em primeira análise, pareceria que
este módulo devesse operar em três modos de funcionamento:
- deslocamento: durante os 8 períodos de relógio em que há as comparações
- carregamento: quando é asserido o sinal NovoPadrão
- congelamento: durante o resto do tempo
Este último modo de funcionamento serviria para fazer com que o estado do
Registo de deslocamento Y fosse sempre o mesmo quando se dá início a uma
sequência de comparação.
Na realidade, o modo de congelamento não é necessário. Com efeito, é
indiferente o facto de a palavra Y, em relação à palavra originalmente carregada, ter
menos ou mais deslocamentos - como haverá comparações com as 8 versões deslocadas
recirculantemente, o resultado final é independente do deslocamento que a palavra já
tivesse no início do processo. Assim, sendo indiferente o número de deslocamentos entre
duas sequências de comparação, este módulo pode estar sempre no modo deslocamento
excepto quando faz um carregamento.
Neste momento, estamos em condições de desenhar um diagrama temporal para
os sinais de controlo:
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 101
Compara
1
Relógio
1 2 3 4 5 6 7 80 9 10Saídas do contador
Inicialização*
Habilitação
1 2 3 4 5 6 70Número de comparações já memorizadas
2 3 4 5 6 7 8 9 10
0 8
Fig.28- Diagrama temporal para os sinais de controlo
gerados pelo "Módulo Controlador"
Em relação a este diagrama, notar que o sinal Apaga* não é referido, visto se ter
concluido que bastava ligá-lo à entrada COMPARA.
Este diagrama também já permite determinar a que contagem do Contador de
ciclos é que deve corresponder a asserção do sinal FimDeContagem. Com efeito, o sinal
FimDeContagem servirá para que o Módulo controlador proceda à comutação de uma
ou mais das suas saídas, e do diagrama vê-se que a comutação em questão é a
deasserção do sinal Habilitação. Assim, essa contagem deve ser a presente no período
de relógio imediatamente anterior a essa comutação, e que é a contagem 9. Como a
contagem 9 é a primeira que cumpre o critério:
QD QC QB QA = 1 X X 1
o circuito combinacional que produz FimDeContagem pode ser o seguinte:
QA
QDFimDeContagem
Finalmente, também se nota que no diagrama não figuram as linhas de controlo
para o Registo de deslocamento recirculante, uma vez que este estará sempre no modo
de deslocamento - excepto quando se der uma operação de carregamento.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 102
No diagrama de blocos inicial (partição funcional) referem-se, em relação ao
módulo Registo de deslocamento recirculante, dois sinais de controlo: Carrega e
Desloca (subentendia-se, naturalmente, que quando ambos os sinais estão deasseridos
não há nenhuma operação - ou antes, há a operação "congelamento").
Posteriormente, no passo "Implementação dos módulos de acção", verificou-se
que as entradas de controlo nos circuitos integrados utilizados (74194) eram S1 e S0,
que comandam as seguintes operações:
S1 S0 Operação
1 1 Carregamento
0 1 Deslocamento para a direita
0 0 Congelamento
NOTA: poder-se-ia incluir neste módulo um circuito combinacional que realizasse
a transformação dos sinais Carga e Desloca para os sinais S1e S0, de maneira a
construir um módulo Registo de deslocamento recirculante totalmente condizente com a
especificação inicial. Mas é óbvio que o mais correcto é reformular a especificação inicial
deste módulo, que tinha originalmente sido feita na "Partição de funções" ainda com
completo desconhecimento dos custos de implementação do módulo.
Também se concluiu que só eram necessárias as duas operações Carregamento
e Deslocamento. Assim, a entrada S0 deve estar sempre a 1 e a entrada S1 passa a ter a
função Carregamento / Deslocamento* (isto é: a 1 comanda o carregamento, e a 0 o
deslocamento).
Logo, o diagrama temporal para a operação de carregamento é o apresentado na
figura seguinte:
NovoPadrão
NovoY
Relógio
Válido
Carregamento / Deslocamento * ( S1 )
Fig.29 - Diagrama temporal para a operação de carregamento
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 103
De onde se vê que o sinal S1 pode ser produzido por simples ligação à entrada
NovoPadrão. Também aqui, à luz do conceito de módulo controlador e módulos de
acção isto seria interpretado como sendo o módulo controlador a fornecer ao circuito de
Registo de deslocamento recirculante um sinal de controlo que "só por acaso" é igual ao
sinal NovoPadrão.
Diagrama de fluxo detalhado
Este diagrama de fluxo detalhado dirá respeito apenas à máquina de estados
incluída no Módulo Controlador.
Não
Início
Compara ?
Habilitação
FimDeContagem ?Não
Não
Sim
Sim
Sim
Inicialização *
Compara ?
Fig.30- Diagrama de fluxo detalhado
Nota-se que este diagrama vem bastante simplificado em relação ao diagrama de
fluxo inicial. Com efeito, constatou-se anteriormente que algumas das acções que
constavam do diagrama de fluxo inicial podiam ser comandadas pelas entradas externas
do sistema, sem que fosse necessário serem produzidos pela máquina de estados do
Módulo Controlador.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 104
5º PASSO - Síntese do módulo controlador
Do diagrama de fluxo detalhado produz-se imediatamente o diagrama de estados
reduzido para a máquina de estados que constitui o Módulo Controlador.
Compara
Compara
Habilitação
Inicialização*
FimDeContagem
FimDeContagem
Compara
Compara
Habilitação
Fig.31 - Diagrama de estados reduzido
Existem 4 estados, que são codificáveis com 2 variáveis de estado.
Embora fosse possível utilizar Mapas de Karnaugh convencionais (há 2 variáveis
de estado e 2 variáveis de entrada: Compara e FimDeContagem, o que permite aplicar
Mapas de Karnaugh de 4 variáveis), vamos utilizar mapas reduzidos nas variáveis
Compara e FimDeContagem.
Podemos fazer uma codificação arbitrária:
Estado Variáveis
? ?
A 0 0
B 0 1
C 1 0
D 1 1
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 105
Mapas de excitação para flip-flops D
0
Compara
1
1
D
D = . + . + . Compara
Compara0
D
D = .
. Compara
Compara FimDeCont. FimDeContagem +
+ ( . + . )
= + . Compara
= .
. Compara
. FimDeContagem +
+
Mapas de excitação para flip-flops JK
Dos mapas D tiram-se imediatamente os mapas para JK:
0 X
1
J
X
Compara
0
X
K
X
J = K = . Compara
X
J
Compara FimDeCont
Compara1
K
X
X X
K = + ComparaJ = . Compara +
. FimDeContagem+
Não há grande diferença de complexidade entre a implementação D e a
implementação J-K. Arbitráriamente, optamos pela implementação D.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 106
Mapas para o descodificador de saída
Temos que sintetizar duas saídas incondicionais: Inicialização* e Habilitação.
Inicialização* deve ser asserido no estado B, mas o nível de asserção é o 0. Habilitação
deve ser asserido no estado B e no estado C; o nível de asserção é o 1.
1 1
0
Inicialização*
1
Inicialização* = +
0 1
1
Habilitação
0
Habilitação = . . +
Diagrama do circuito do módulo controlador
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 107
Relógio
D Q
Q
D Q
Q
Compara
Inicialização *
HabilitaçãoFimDeContagem
Fig.32 - Diagrama lógico do módulo controlador
Como se vê, é um circuito de complexidade já considerável, que no entanto foi
"cómodamente" desenvolvido graças à metodologia estruturada de projecto.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 108
EXEMPLO 2
Especificação
Pretende-se construir um circuito Controlador para uma Máquina de vender
chocolates que funciona com moedas de 10ESC, 20ESC, 50ESC e 100ESC, e que poderá
fornecer chocolates com diversos preços de acordo com a escolha feita pelo cliente.
Controlador
Sensor de moedas
Mecanismo de fornecimento
Moeda
Relógio
Relógio
AceitaMoedas
Fornece
M4
M3
M2
M1
Selector
S4
S3
S2
S1
Botão
Selecção
Fig.34- Diagrama de blocos do sistema completo
O cliente, após ter introduzido moedas suficientes, selecciona o chocolate que
quer e carrega num botão que assere o sinal BOTÃO. O módulo Selector fornece um
código que é igual ao preço do chocolate escolhido a dividir por 10.
O módulo Sensor de moedas emite um pulso MOEDA sempre que uma moeda
seja introduzida, sendo esse pulso de duração igual a um ciclo de relógio:
Moeda
Relógio
Ao mesmo tempo, produz nas linhas M4 M3 M2 M1 o código binário
correspondente ao valor da moeda dividido por 10: 0001 para uma moeda de 10ESC,
0010 para uma moeda de 20ESC, etc.
Quando fôr asserido o sinal BOTÃO e já tiverem sido introduzidas moedas
suficientes (se o cliente por acaso se enganar colocando moedas a mais perde o que
introduziu a mais), o Controlador deve asserir a saída FORNECE durante 1 ciclo de
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 109
relógio. Se o sinal BOTÃO fôr asserido quando ainda não há moedas suficientes, o
Controlador não deve fazer nada, mas deve manter em memória o total já introduzido.
Enquanto estiver a ser fornecido um chocolate é óbvio que não deve ser
novamente asserido o sinal FORNECE . É o próprio módulo Mecanismo de
fornecimento que impede a aceitação de moedas no módulo Sensor de moedas
durante a fase de fornececimento.
Assim, no projecto do Controlador não é necessário tomar medidas para evitar
que o sinal FORNECE seja novamente asserido durante a fase de fornecimento.
1º PASSO - Estudo e validação das especificações
O sistema a desenvolver é na realidade um subsistema de um sistema maior.
Concordantemente com a metodologia estruturada de projecto, não são relevantes para o
projecto do Controlador os detalhes de implementação dos outros módulos do sistema
global (tais como o Selector, Sensor de Moedas, …), nem tão pouco as interacções
entre esses módulos (por exemplo entre o Selector e o Mecanismo de Fornecimento).
Podemos desenhar os diagramas que explicitam as relações de temporização
entre entradas e saídas:
Para a introdução de cada moeda…
Moeda
M1 … M4
Relógio
Válido
e para o fornecimento…
Botão
Relógio
Fornece
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 110
Quanto ao esboço de unidade global, basta extraí-lo do diagrama de blocos do
sistema geral:
Fornece
Controlador
MoedaRelógio
M4
M3
M2
M1
S4
S3
S2
S1
Botão
Fig.35- Entradas e saídas do sistema a desenvolver
2º PASSO - Decomposição da unidade global em módulos de acção e
módulo controlador
À medida que forem sendo recebidas moedas, o montante total deve ir sendo
registado. Isso poderá ser feito por um circuito acumulador (um acumulador é constituído
pela associação de um somador e de um registo; a saída do somador é comunicada ao
registo cuja saída, por sua vez, fornece uma das parcelas do somador).
O acumulador constituirá portanto um dos módulos de acção.
A saída do acumulador será comunicada a um comparador em que o outro
termo de comparação será o valor S4 S3 S2 S1 . Assim, o 2º módulo de acção será o
Comparador.
Diagrama de blocos - partição funcional
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 111
Módulo controlador
Moeda
Botão
Fornece
Acumulador
M1 … M4
So
ma
Ap
ag
aT1…T4
Comparador
S1…S4
TsupS
Fig.36- Partição funcional
O Comparador, funcionando sempre no mesmo modo de operação, não necessita
de qualquer sinal de controlo. Fornece um sinal TsupS que indica que a palavra T é igual
ou superior à palavra S.
O Acumulador necessita de um sinal Apaga para poder ser posto a zero no início
da operação do circuito e necessitará também de um sinal Soma que, quando
deasserido, fará com que o Acumulador mantenha o seu valor - este modo de operação
será utilizado nos ciclos de relógio em que o sinal Moeda está deasserido.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 112
Diagrama de fluxo
Moeda ?Sim
Não
Início
Acumulador <- 0
Acum. <- Acum. + ValorMoeda
Fornece
Botão ?Sim
NãoValorSuficiente ?
Sim
Não
Fig.37- Diagrama de fluxo inicial
A estrutura de teste final parece um pouco confusa e pode com vantagem ser
substituída pela estrutura seguinte:
Fornece
Botão
Sim
Não
ValorSuficiente ?E
Fig.38- Alternativa preferível para o segmento final do diagrama de fluxo
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 113
3º PASSO - Implementação dos módulos de acção
Acumulador
O acumulador representado na figura seguinte foi projectado heurísticamente
(aliás, a única maneira de projectar circuitos com CIs standard). Como se vê do diagrama,
resulta mais económico considerar como asseridos a 0 os sinais Apaga* e Hab*.
Q4 Q3 Q2 Q1
Registo D 74377
D4 D3 D2 D1
Enable
3 2 1
74283
B4 B3 B2 B1
4
A4 A3 A2 A1
Relógio
M4 M3 M2 M1
C0
"0"
Hab *
Apaga *
T4 T3 T2 T1
Fig.39- Implementação do módulo "Acumulador"
Note-se que a definição dos sinais de controlo para o Acumulador ficou diferente
do que tinha sido inicialmente estabelecido no "Diagrama de blocos - partição funcional".
Com efeito, há um sinal Hab* em vez do sinal Soma e para a operação de apagamento é
necessário que os dois sinais Hab* e Apaga* estejam asseridos.
Como é despropositado complicar o circuito do Acumulador apenas para que
fique de acordo com uma especificação feita numa fase inicial, o mais correcto aqui é
corrigir o Diagrama de blocos para que considere estes sinais e não os inicialmente
definidos. O sinal Hab* habilita então a operação de acumulação e a de apagamento.
Comparador
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 114
S4
B3 B2 B1 B0 A3 A2 A1 A0
A=B
A>B
A<B
in
in
in
"1"
"0"
7485
A=B
S3 S2 S1
A<BA>B"0"
T4 T3 T2 T1
TsupS*
Fig.40 - Implementação do módulo "Comparador"
Também aqui se conclui que o sinal de saída é mais económicamente produzido
se fôr asserido a 0.
4º PASSO - Estabelecimento das relações temporais dos sinais de controlo
Os únicos sinais de controlo referidos na partição funcional são Hab* e Apaga*.
Além destes sinais de controlo, o Módulo controlador também produz o sinal de saída
Fornece.
Botão
Relógio
Fornece
Apaga *
Moeda
Hab *
Início de nova operação
Fim da operação anterior
Fig.41 - Diagrama temporal para os sinais de controlo
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 115
Verifica-se que nenhum dos sinais Fornece, Apaga* e Hab* pode ser
directamente obtido graças aos sinais de entrada, pelo que todos têm de ser gerados
pela máquina de estados do Módulo Controlador.
Diagrama de fluxo detalhado
Moeda ?Sim
Não
Início
Hab*
Fornece
Botão
Sim
Não
ValorSuficiente ?E
Apaga*
Hab*
Fig.42 - Diagrama de fluxo detalhado
5º PASSO - Síntese do módulo controlador
Do diagrama de fluxo detalhado produz-se imediatamente o diagrama de estados
reduzido para a máquina de estados que constitui o Módulo Controlador.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 116
B
C
Hab*
Apaga*
Hab*
Fornece
Botão . TsupS* Botão . TsupS*
= Moeda
Fig.43- Diagrama de estados do módulo controlador
Existem 3 estados, que são codificáveis com 2 variáveis de estado.
Vamos utilizar mapas reduzidos nas variáveis Botão e TsupS*.
Podemos fazer uma codificação arbitrária:
Estado Variáveis
? ?
A 0 0
B 0 1
C 1 1
Mapas de excitação para flip-flops D
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 117
0
Botão.TsupS *
X
D
D = . . Botão
0
. TsupS*
1 X
D
D =
01
Dada a simplicidade conseguida na implementação D, não vale sequer a pena
explorar a implementação JK.
Como a existência de 2 variáveis de estado faz com que exista um estado
adicional, ?? = 10, é necessário verificar se a máquina de estados tem a capacidade de
auto-correcção para a eventualidade de "arrancar" nesse estado.
De acordo com as expressões implementadas, para ?? = 10 temos:
D? = 0 D? = 0
ou seja, há uma transição incondicional para o estado A, o que mostra que o
circuito será auto-corrector.
Mapas para o descodificador de saída
Temos que sintetizar três saídas: Apaga*, Hab* e Fornece.
Apaga* deve ser asserido incondicionalmente no estado A.
Hab* deve ser asserido no estado A (incondicionalmente) e no estado B
(condicionalmente).
Fornece deve ser asserido incondicionalmente no estado C, e o nível de
asserção é o 1.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 118
0 X
Hab*
1
Hab* = +
Moeda
. Moeda
0 X
Apaga*
1
Apaga* =
1
0 X
Fornece
1
Fornece =
0
Diagrama lógico do módulo controlador
Relógio
D Q
Q
D Q
Q
Apaga *
Moeda
Botão
TsupS*
Fornece
Hab *
Fig.44- Diagrama lógico para o módulo controlador
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 119
Por outro lado, há muitas funções susceptíveis de implementação com circuitos
integralmente síncronos, mas em que pareceria que a utilização das entradas adicionais
assíncronas levaria a uma solução mais simples (ou de obtenção menos trabalhosa).
Mas a utilização indiscriminada das entradas adicionais assíncronas traz normalmente
problemas de fiabilidade, como se demonstra no exemplo a seguir.
O circuito da Fig.9.9 é um contador binário de 3 bits, que percorre a sequência
(QCQBQA) :
… 000 001 010 011 100 101 110 111 000 …
J Q
Q
A
A
Q
Q
B
B
Relógio
K
J
K
Q
Q
C
C
J
K
1
Fig.9.9 - Contador binário de 3 bits
O circuito é particularmente simples, utilizando apenas uma porta E além dos flip-
flops. Imaginemos agora que a sequência que se pretende implementar é a sequinte:
… 000 001 010 011 100 101 000 …
isto é, a sequência anterior encurtada. Pareceria que uma solução imediata para obter um
contador com esta sequência seria fazer uma adaptação com base no circuito anterior,
utilizando as entradas Clear dos flip-flops.
J Q
Q
A
A
Q
Q
B
B
Relógio
K
J
K
Q
Q
C
C
J
K
1
Clear Clear Clear
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra
SISTEMAS DIGITAIS 120
Fig.9.10 - Adaptação do circuito anterior
O circuito da Fig.9.10 detecta a ocorrência da combinação QCQBQA = 110, para o que
aliás basta detectar QCQB = 11, pois QCQBQA = 110 é a primeira contagem que verifica
QCQBQA = 11X.
Quando se verificar QCQB = 11, é asserida a entrada Clear de todos os flip-flops, o
que em princípio provoca a passagem de todos eles a 0. Mas suponhamos que o flip-flop
C e a porta NE são muito rápidos (isto é, têm tempos muito inferiores aos máximos
especificados pelo fabricante), ao passo que o flip-flop B é muito lento (isto é, tem tempos
muito perto dos máximos especificados pelo fabricante). Então, pode acontecer que QC
passe a 0, e provoque a deasserção do Clear, ainda antes de o flip-flop B ter tido tempo de
reagir.
Também pode acontecer que o contador, ao transitar de QCQBQA = 011 para
QCQBQA = 100, apresente uma saída transitória QCQBQA = 110 ou QCQBQA = 111, o que
provocaria a asserção transitória do Clear. Este pulso de Clear, embora curto, pode ser
suficiente para provocar a passagem a 0 de um ou mais flip-flops.
A conclusão final é a de que os circuitos em que se utilizam as entradas
adicionais assíncronas (para outros fins além da simples função de incialização) são
susceptíveis de erros de funcionamento. O aparecimento desses erros depende de
combinações particulares das velocidades de operação dos circuitos, mas a
possibilidade existe.
Considera-se que o recurso às entradas adicionais assíncronas, em casos em
que é possível uma solução totalmente síncrona, é uma técnica incorrecta. As
entradas adicionais assíncronas devem ser exclusivamente reservadas para a
função de inicialização e para a implementação de funções inerentemente
assíncronas.
Departamento de Engenharia Electrotécnica – Instituto Superior de Engenharia de Coimbra