• Nenhum resultado encontrado

Síntese de máquinas de estados. Equação característica de flip-flops

N/A
N/A
Protected

Academic year: 2021

Share "Síntese de máquinas de estados. Equação característica de flip-flops"

Copied!
14
0
0

Texto

(1)

119 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Equação característica de flip-flops

• Q* representa o próximo valor para Q

• Q* é função de Q e das entradas de controlo:

– flip-flop tipo D: Q* = D

• copia para Q o que está em D

– flip-flop tipo T: Q* = T.Q+T.Q

• se T=0 mantém Q, se T=1 troca o estado de Q

– flip-flop tipo JK: Q* = Q.J+Q.K

• se J=K=0 mantém Q; se J=K=1 troca o valor de Q; se

J=1 e K=0 coloca Q=1; se J=0 e K=1 coloca Q=0

A equação característica de um flip-flop descreve de que forma é modificado o valor na sua saída Q quando o sinal de controlo (relógio) comuta de zero para um. O próximo valor da saída Q designa-se por Q* e pode ser representado como uma expressão booleana das suas entradas e do valor actual da saída Q no instante em que ocorre a transição do sinal de relógio.

Num flip-flop do tipo D, a equação característica é Q*=D, o que significa que quando ocorre a transição do sinal de relógio de zero para um (transição positiva), a saída Q fica com o valor lógico que está nesse instante presente na entrada D.

Num flip-flop do tipo T (Toggle), o próximo valor para a saída Q depende do seu estado anterior e do valor presente na entrada T, e pode ser descrita pela equação característica Q*=T’.Q+T.Q’ (se T=0 é mantido o estado anterior e se T=1 a saída Q troca de estado). No flip-flop JK o próximo valor para a saída Q também depende do seu estado anterior, e o seu comportamento pode ser descrito pela equação característica Q*=Q’.J+Q.K’ Como acontece em circuitos combinacionais, as (eventuais) alterações dos valores lógicos das saídas acontece algum tempo após a transição do sinal de relógio que lhe dá origem. Apesar desse tempo ser muito pequeno (dependendo da tecnologia da implementação, o tempo de propagação de um flip-flop tipo D pode situar-se na ordem de dezenas de pico-segundos até alguns nano-pico-segundos), no preciso instante em que ocorre a transição de relógio o valor presente na saída Q é ainda o valor anterior, sendo apenas mudado para o próximo valor, definido pela equação característica, pouco tempo depois.

120 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Síntese de máquinas de estados

• Exemplo:

– circuito com uma entrada X e saída Y

– Y=1 quando é detectada em X a sequência 1011

– o valor de X é “lido” nas transições 0

->

1 de CLK

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

Y X CLK

O processo de síntese de um circuito sequencial síncrono (ou máquina de estados finitos) segue um conjunto de passos que podem ser mais ou menos automatizados por ferramentas computacionais de apoio ao projecto (ferramentas EDA – Electronic Design Automation). Uma fase muito importante e que, na generalidade das situações, não pode ser feita por computadores consiste em traduzir uma especificação informal (normalmente numa linguagem natural --- Português) do funcionamento pretendido para uma máquina de estados, para uma descrição formal que estabeleça rigorosamente e de forma não ambígua as relações entre as entradas, estados e saídas. Uma vez construída essa descrição formal, o

procedimento a seguir para construir um circuito digital que realize essa funcionalidade consiste em aplicar uma sequência de passos bem definida, que faz uso da síntese de circuitos combinacionais, estudada nos capítulos anteriores.

Para apresentar o procedimento de síntese de FSMs (Finite State Machines), será seguido um exemplo de um circuito sequencial síncrono com uma entrada X e uma saída Y, cujo funcionamento pode ser descrito da seguinte forma: “a saída Y deve ser 1 quando o valor de X em 4 transições positivas de relógio (de zero para 1) consecutivas for igual a 1011, e deve ser 0 no caso contrário”. O diagrama temporal apresentado na figura ilustra o comportamento desejado, para um exemplo de uma sequência de valores presentes na entrada X. Para que não ocorram ambiguidades na interpretação do valor da entrada X, admite-se que essa entrada troca de valor lógico em instantes de tempo bem afastados das transições de relógio, por forma a que sejam satisfeitos os tempos de setup e de hold dos flip-flops.

(2)

121 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Diagrama de transição de estados

INI S1 S2 S3 OK X=1 X=1 X=1 X=1 X=1 X=0 X=0 X=0 X=0 X=0 estado transição entre estados

(quando CLK ) condição de transição entre estados nome do estado valor da saída em cada estado Y=1 Y=0 Y=0 Y=0 Y=0

Q: qual é a “história” que cada estado representa?

estado inicial chama-se INI

O projecto de uma FSM começa pela especificação do seu comportamento como um

diagrama de transição de estados. Esta representação gráfica deve descrever de forma

rigorosa quais são os estados da máquina da estados, sob que condições ocorrem as transições entre estados, e de que forma as saídas dependem dos estados e das entradas. Um diagrama de transição de estados desenha-se com círculos representando estados e arcos dirigidos (setas) entre os estados que representam as transições entre estados (note que uma transição entre estados ocorre quando o sinal de relógio muda de zero para um). Os estados devem ser designados por nomes simbólicos, que tenham alguma relação com aquilo que o estado representa. Por exemplo, o estado INI quer dizer que é o estado inicial em que a máquina de estados inicia o seu funcionamento (será visto mais tarde como se pode garantir essa condição inicial num circuito digital). Vamos convencionar que o estado inicial é identificado por um nome especial como INI, INIT ou INICIO.

Associado a cada estado deve também representar-se o valor das saídas pretendido em cada estado. No nosso exemplo, o valor da saída Y apenas depende do estado actual, valendo 1 apenas no estado OK e zero nos restantes. Veremos mais tarde que também existem máquinas de estados em que os valores das saídas são representados associados às transições de estado.

Associada a cada transição entre estados representa-se a condição sob a qual deve ocorrer aquela mudança de estado. Como no exemplo apresentado apenas existe uma entrada X, todas as condições de transição de estado são expressas como condições do valor de X (i.e. X=1, X=0 ou eventualmente X=don’t care). Por exemplo, o estado a seguir ao estado INI será o próprio estado INI se X=0 ou o estado S1 se X=1. Quando o próximo estado não depende dos valores das entradas, então diz-se que essa transição não tem condição (ou é incondicional) e não há condição de transição de estado associada a essa transição. Seguindo o diagrama de transições de estado apresentado, pode-se ver que a saída Y só será 1 quando em 4 mudanças de estado consecutivas ocorrer X=1011.

122 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Significado de cada estado

(no exemplo apresentado)

• Cada estado resume os valores anteriores de X:

– INI: não foi detectado nada de interesse (inicial)

– S1: foi detectado X=1

– S2: foi detectada a sequência 10 na entrada X

– S3: foi detectada a sequência 101 na entrada X

– OK: foi detectada a sequência 1011 Y=1

• E se as sequências não forem sobrepostas?

– sempre que detecta 1011 esquece tudo: estado INI

Como foi visto antes, cada estado tem associada uma história que traduz a informação relevante que interessa preservar entre estados, relativa aos valores que ocorreram anteriormente nas entradas.

O estado INI é o estado inicial em que se assume que a máquina de estados começa o seu funcionamento. Como tal, quando o estado presente é INI, isso significa que não interessa quais foram os valores anteriores da entrada X (ou seja, não há história dos valores anteriores de X).

O estado S1 é atingido quando é lido o primeiro 1 na entrada X. Assim, pode-se dizer que o estado S1 representa: “já foi encontrado um 1 na entrada X”. Note que como a sequência que se pretende detectar é 1011, este mesmo estado representa também que foi encontrada uma sequência de uns, já que nessa situação apenas é relevante para a sequência a detectar que foi encontrado o ultimo 1 (é esse o significado da transição do estado S1 para o estado S1 quando X=1).

O estado S2 é atingido quando no estado S1 é encontrado um zero, perfazendo assim os dois primeiros bits da sequência a detectar (10). Pode-se então dizer que este estado tem associada a história: “já foram encontrados os dois bits iniciais da sequência: 10”. Como o bit a seguir deve ser um, se no estado S2 for lido zero em X, o próximo estado deve ser o estado INI já que 2 zeros seguidos não fazem parte da sequência a detectar (ir para o estado INI quer dizer esquecer toda a história dos valores anteriores em X).

O estado S3 significa que foram detectados os 3 primeiros bits da sequência pretendida: 101. Se o próximo bit lido em X for 1, então o próximo estado será OK que significa “sequência

detectada”, activando por isso a saída Y com 1. Se, quando ocorrer a transição relógio no

estado S3, a entrada X for igual a zero, o próximo estado deve ser S2 porque os dois últimos bits lidos em X foram 10 e representam os dois bits iniciais da sequência que se pretende detectar; se no estado OK ocorrer X=1 então apenas interessa memorizar que foi encontrado o primeiro bit da sequência, devendo por isso o próximo estado ser o estado S1.

(3)

123 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Tabela de transição de estados

INI S1 S2 S3 OK X=1 X=1 X=1 X=1 X=1 X=0 X=0 X=0 X=0 X=0 Y=1 Y=0 Y=0 Y=0 Y=0 S* S X=0 X=1 Y INI INI S1 0 S1 S2 S1 0 S2 INI S3 0 S3 S2 OK 0 OK S2 S1 1 estado actual próximo estado se X=0 próximo estado se X=1 valores da saída

Tendo criado o diagrama de transição de estados, o passo seguinte consiste em construir uma

tabela de transição de estados, fazendo uso dos nomes simbólicos que foram atribuídos a

cada estado. A tabela de transição de estado é formada por uma coluna que representa o estado actual (coluna S) onde se representam todos os estados, e várias colunas (representadas genéricamente por S*) que especificam quais são os próximos estados em função do estado actual e dos valores possíveis para as entradas. Note que devem existir tantas colunas destas quantas as combinações possíveis para as entradas da máquina de estados - o exemplo apresentado apenas tem uma entrada pelo que só existem duas colunas de próximo estado, uma quando X=0 e outra quando X=1. No caso em que os valores das saídas apenas dependem do estado actual, então representa-se numa terceira coluna (coluna Y) o valor das saídas em cada estado.

A tabela de transição de estado não acrescenta qualquer informação ao diagrama de transição de estados, mas é fundamental para prosseguir no processo de síntese de um circuito sequencial síncrono que realize a função pretendida.

124 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Modelo da máquina de estados

variáveis de estado (guarda o estado) Y X S CLK Y(S) S*(X,S) S*

(modelo de Moore: a saída só depende do estado presente)

Como foi já apresentado antes, considera-se um modelo para o circuito sequencial síncrono formado por 3 blocos fundamentais: memória de estado, lógica do próximo estado e lógica das saídas.

O primeiro bloco é realizado por elementos de memória, tipicamente flip-flops do tipo D (também podem ser usados flip-flops do tipo T ou JK). Este bloco é o único componente sequencial do circuito, já que os outros dois blocos são realizados por circuitos combinacionais, estudados no capítulo anterior da disciplina. Sincronamente com as transições de um sinal de controlo (relógio), este bloco coloca na saída S (estado actual), o valor do próximo estado S* especificado pelo bloco S*(X,S).

O bloco que determina o próximo estado realiza uma função do estado actual S e das entradas X e determina qual é o próximo estado S*, que será guardado na memória de estado quando ocorrer a próxima transição de relógio.

Finalmente, o bloco Y(S) é responsável por definir o valor das saídas Y para cada um dos estados. Este modelo de máquina de estados designa-se por modelo de Moore e caracteriza-se por as saídas caracteriza-serem uma função lógica combinacional do estado precaracteriza-sente e por isso não dependerem directamente das entradas.

Note que as funções S*(X,S) e Y(S) estão completamente especificadas na tabela de transição de estados, embora ainda de uma forma simbólica (i.e. usando os nomes que foram atribuídos a cada estado). O passo seguinte para construir um circuito digital que implemente este modelo consiste em (i) codificar os estados em binário, (ii) especificar o tipo de elemento de memória a utilizar e (iii) projectar os circuitos lógicos que realizam as duas funções combinacionais Y(S) e S*(X,S).

(4)

125 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Codificação de estados

• Os estados devem ser codificados em binário

– o estado presente é armazenado numa memória

– a memória de estado é realizada com flip-flops

• podem ser flip-flops tipo D, T ou JK

• devem ser usados mecanismos para garantir o estado inicial – usando flip-flops com controlo de set ou reset assíncrono

– codificar N estados requer log

2

(N) flip-flops

– no nosso exemplo são necessários 3 flip-flops

• de quantas maneiras é possível codificar os 5 estados?

– a escolha do “melhor” conjunto de códigos é um problema

muito complexo.

A tabela de transição de estados anterior estabelece as funções de próximo estado e das saídas com base nos nomes simbólicos que foram escolhidos para os estados. Para que se possa especificar expressões booleanas que realizam estas funções, é necessário representam cada estado por um código binário, traduzindo assim a tabela de transição de estados numa tabela de verdade.

Para codificar N estados é necessário, no mínimo, um número de bits igual ao menor inteiro não inferior a log2(N), e com isso um número igual de flip-flops para implementar a memória de estado. No nosso exemplo temos 5 estados, bastando por isso 3 flip-flops para codificar esses 5 estados. No entanto, como há 8 códigos diferentes de 3 bits, coloca-se o problema de escolher o conjunto de 5 códigos a utilizar, e depois determinar qual desses 5 códigos deve ser usado para codificar cada estado. Este problema designa-se genericamente por

codificação de estados e é um problema muito complexo para o qual não existem meios

eficazes de obter as codificações que conduzem ao circuito digital mais pequeno, mais rápido ou mais económico em termos de energia consumida. Note que para cada codificação de estados que se adopte, a tabela de transição de estados traduz-se nas tabelas de verdade das funções combinacionais que produzem o próximo estado e as saídas que terão realizações com diferentes complexidades.

No caso geral, tendo uma máquina de estados com N estados e M códigos possíveis para atribuir a esses estados, teremos um número total de escolhas diferentes que é dado por:

formas diferentes de escolher N códigos dos M possíveis. Depois de decidir quais são os códigos a utilizar, é necessário atribuir um desses códigos a cada estado, podendo isso ser feito de N! formas diferentes (número de permutações dos N códigos). Fazendo as contas para o nosso exemplo muito simples, conclui-se que existem 6720 formas diferentes de codificar aqueles 5 estados usando apenas 3 flip-flops! E qual dessas soluções conduzirá ao circuito mais simples?!

N!(M-N)! M!

126 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Codificação de estados

• codificando os estados em binário:

variáveis de estado Y X CLK S* circuitos combinacionais: Y=F(S) S*=G(X,S) flip-flops edge-triggered (tipo D, T ou JK) reset S

Apesar de não existirem regras determinísticas que garantam a codificação óptima de estados, há várias regras empíricas que geralmente tendem a minimizar a complexidade dos circuitos (a apresentar mais à frente).

Uma vez estabelecidos os códigos binários que representam cada estado, as funções Y(S) e S*(X,S) podem ser descritas como funções booleanas, já que estabelecem relações entre saídas binárias (Y e S*) e entradas também binárias (S e X): Y é função dos 3 bits que representam o estado actual e S* é uma função dos 3 bits que representam o estado actual e também da entrada X.

As variáveis de estado são realizadas como elementos de memória do tipo flip-flop edge

triggered, que trocam de estado sempre que no sinal de relógio (CLK) ocorra uma transição

de zero para um (ou de um para zero se essa entrada for activa na transição negativa). Como foi já referido atrás, uma máquina de estados deve ter mecanismos que garantam um estado inicial bem definido. Isso pode ser feito mediante o recurso a flip-flops que possuam sinais de controlo que quando são actuados permitem colocar a saída Q em zero (reset) ou 1 (set) independentemente do estado do sinal de relógio (por esta razão se chamam sinais de controlo assíncronos já que provocam uma mudança da saída Q de forma não síncrona com as transições do sinal de relógio.

(5)

127 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Tabela de transição de estados

(com os estados codificados)

Q2* Q1* Q0* Q2 Q1 Q0 X=0 X=1 Y 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1

Adoptando a codificação de estados:

INI 0 0 0 S1 0 0 1 S2 0 1 0 S3 0 1 1 OK 1 0 0 S Q2 Q1 Q0

estado presente próximo estado

Estabelecendo a codificação de estados apresentada e substituindo os nomes dos estados pelos códigos respectivos, obtém-se uma tabela de transição de estados codificada, onde as transições de estados são agora apresentadas apenas em termos dos zeros e uns que representam cada estado.

Como foram considerados 3 bits para representar cada estado, serão usados 3 flip-flops para a memória de estado, designados por Q2, Q1 e Q0. Assim, o estado presente é representado por um conjunto de valores de Q2,Q1 e Q0, e o próximo estado é dado pelo conjunto dos próximos valores para Q2,Q1 e Q0 que se representam por Q2*,Q1* e Q0*. Por exemplo (3ª linha da tabela), quando Q2,Q1 e Q0 é igual a 010 (estado S2) e X=0, os próximos valores para Q2,Q1 e Q0 deverão ser 000, e se X=1 então esses valores deverão ser 011 (estados INI e S3, respectivamente).

Esta tabela determina assim quais os valores lógicos que, em cada transição de relógio, devem ocorrer em cada flip-flop (Q2*,Q1* e Q0*) , em função do estado actual (Q2,Q1 e Q0) e da entrada X.

128 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Síntese de S*(X,S) e Y(S)

Tabela de verdade:

Q2 Q1 Q0 X Q2* Q1* Q0* Y 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 1 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 0 0 0 1 0 1 1 0 0 1 0 0 1 1 1 0 1 0 . . . 1 1 1 1

e estes valores?

S

S*

A tabela anterior pode ser reescrita numa forma mais conveniente como uma tabela de verdade, em que para cada uma das 10 combinações de estado actual e valor de X é listado o valor pretendido para o próximo estado e saídas. Note que esta tabela não acrescenta nada à tabela anterior, apresentando a mesma informação com uma organização diferente. Como são usados 3 flip-flops e a máquina de estado apenas tem 5 estados, existem 3 códigos de estado que não são utilizados (os códigos 101, 110 e 111). No entanto, para que a tabela fique completamente especificada é necessário definir que valores deve (ou pode!) assumir o próximo estado e as saídas para os códigos que não fazem parte dos estados possíveis para a máquina de estados considerada.

Existem várias abordagens para completar essa secção da tabela, mas iremos apenas considerar duas soluções. A primeira consiste em considerar nesses casos que o próximo estado é sempre o estado inicial (INI, com código 000). Isso garante que, se por alguma razão os flip-flops de estado ficarem com um desses códigos, a máquina de estados retomará o seu funcionamento normal a partir do estado INI. Esta opção designa-se normalmente o critério do risco mínimo. Naturalmente que em funcionamento normal nenhum desses 3 estados surge como próximo estado dos estados “normais”, pelo que uma possível transição para um dos estados não especificados pode apenas ocorrer em situações anómalas. Isso pode acontecer devido, por exemplo, a interferências electromagnéticas externas (por exemplo, uma perturbação da alimentação ou uma forte radiação electromagnética), durante os instantes iniciais da alimentação eléctrica do circuito (se não houver um reset global, cada

flip-flop pode iniciar com um ou zero, dependendo de variados factores) ou mesmo em

funcionamento normal motivado pela ocorrência de estados meta-estáveis (por exemplo, se a entrada X trocar de valor num instante muito próximo da transição de relógio, os flip-flops podem ficar num estado meta-estável durante algum tempo, “caindo” depois para zero ou 1 de forma aleatória.

A outra opção consiste simplesmente em considerar que esses estados nunca serão estados actuais e por isso o próximo estado e as saídas podem ser indiferentes (critério do custo mínimo).

(6)

129 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Usando flip-flops tipo D

Q2 Q1 Q0 X D2 D1 D0 Y 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 1 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 0 0 0 1 0 1 1 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 . . . . . . 1 1 1 1 0 0 0 0

como Q*=D:

como estes estados nunca ocorrem, pode-se completar a tabela de verdade com zeros

Adoptando o critério do risco mínimo, a tabela de transição de estados é completada com zeros nos próximos estados dos estados não especificados.

A tabela anterior estabelece uma relação entre os próximo valores nos flip-flops e os valores actuais. Dependendo do tipo de flip-flop que seja utilizado, assim será diferente a funções lógicas a construir que permitem obter esses próximos valores. A situação mais simples consiste em utilizar flip-flops do tipo D, cuja equação característica é Q*=D (o valor na entrada D é o próximo valor na saída Q. Assim, as chamadas funções de excitação dos

flip-flops determinam os valores que, em cada estado, devem ocorrer nas suas entradas D de

forma a obter os próximos valores Q* (o próximo estado) estabelecidos pela tabela anterior. Mas como, com flip-flops tipo D temos Q*=D então as funções Qi*(Q2,Q1,Q0,X) e Di(Q2,Q1,Q0,X) são iguais.

Esta tabela define completamente as funções lógicas (combinacionais) que, em cada estado e para cada valor da entrada X, estabelece os valores necessários para as entradas D de cada

flip-flop por forma a obter o próximo estado pretendido.

Note que a saída Y não depende da variável X, já que só é uma função do estado presente representado por Q2,Q1 e Q0.

130 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Minimizando as funções lógicas

Q2 Q1 Q0 X 00 01 00 01 11 10 Q2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 11 10 Q1 Q0 X

D2

D2=Q2.Q1.Q0.X Q2 Q1 Q0 X 00 01 00 01 11 10 Q2 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 11 10 Q1 Q0 X

D1

D1=Q2.Q1.Q0.X + Q2.Q1.Q0.X + Q2.Q0.X

Recorrendo a mapas de Karnaugh para simplificar as funções lógicas D2, D1, D0 e Y obtêm-se as equações de excitação dos flip-flops nas formas soma de produtos mínimas.

(7)

131 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

continuando a minimizar...

Q2 Q1 Q0 X 00 01 00 01 11 10 Q2 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 11 10 Q1 Q0 X

D0

D0=Q1.Q0.X+Q2.Q0.X+Q2.Q1.X Q2 Q1Q0 0 1 00 01 11 10 0 0 0 0 1 0 0 0 Q2 Q1

Y

Y=Q2.Q1.Q0 Q0

(Y só depende do estado actual Q2Q1Q0)

Note que, como Y não depende da variável X, basta representar essa função num mapa de Karnaugh de 3 variáveis.

132 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Circuito lógico

Q D CLK Q D CLK Q D CLK X CLK Y Q2 Q1 Q0 D2 D1 D0 Q2 Q1 Q0

Finalmente, realizando as funções lógicas encontradas para Y, D2, D1 e D0 como circuitos do tipo AND-OR, e ligando de forma adequada os flip-flops obtém-se o circuito final que implementa a máquina de estados pretendida.

(8)

133 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Estados não especificados

• A máquina de estados apenas tem 5 estados

– usando 3 flip-flops, há 3 estados não usados

• com a codificação adoptada são 101, 110 e 111

– qual deve ser o próximo estado para estes estados?

• uma hipótese é o estado INI (estado 000 no nosso caso)

– garante-se que a máquina de estados nunca “encrava”! – foi a solução adoptada no exemplo

• admitindo que nunca ocorrem, S* pode ser indiferente

– definem-se valores indiferentes na tabela de verdade – conduz a um circuito (potencialmente) mais simples – e se a máquina de estados “cair” num destes estados?

risco

mínimo

custo

mínimo

No circuito anterior foi usado o critério do risco mínimo, garantindo que se for atingido um dos 3 estados não especificados a máquina de estados retomará sempre o seu funcionamento normal “saltando” para o estado INI.

Uma alternativa a esta opção consiste em admitir que esses estados nunca ocorrem mesmo, de forma que para esses casos o próximo estado pode ser qualquer coisa. Para isso basta considerar que o próximo estado é indiferente, preenchendo d (don’t care) na tabela de transição de estados e nas funções de excitação dos flip-flops. Como se viu no estudo da síntese de circuitos combinacionais, a ocorrência de termos indiferentes aumenta as possibilidades de simplificação e conduz a circuitos lógicos potencialmente mais simples do que se esses valores fossem fixados em zeros ou uns. No entanto, antes de concluir o projecto é imprevisível saber o comportamento do circuito se um desses estados for atingido, embora isso possa ser determinado uma vez obtidas as equações simplificadas de excitação dos

flip-flops.

134 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Projecto com custo mínimo

Q2 Q1 Q0 X D2 D1 D0 Y 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 1 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 0 0 0 1 0 1 1 0 0 1 0 0 1 1 1 0 1 0 d d d d . . . . . . 1 1 1 1 d d d d

com flip-flops tipo D:

como estes estados nunca ocorrem, considera-se indiferente o próximo estado

(9)

135 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Projecto com custo mínimo

Q2 Q1 Q0 X 00 01 00 01 11 10 Q2 0 0 0 0 0 0 1 0 d d d d 0 0 d d 11 10 Q1 Q0 X

D2

D2=Q1.Q0.X Q2 Q1 Q0 X 00 01 00 01 11 10 Q2 0 0 0 1 0 1 0 1 d d d d 0 1 d d 11 10 Q1 Q0 X

D1

D1=Q1.Q0.X + Q2.X + Q0.X

Obtêm-se as expressões mínimas na forma soma de produtos que, como esperado, são mais simples do que as que se obtiveram usando o critério de risco mínimo.

136 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Projecto com custo mínimo

Q2 Q1 Q0 X 00 01 00 01 11 10 Q2 0 1 1 0 0 1 0 0 d d d d 0 1 d d 11 10 Q1 Q0 X

D0

D0=Q1.X+Q0.X Q2 Q1Q0 0 1 00 01 11 10 0 0 0 0 1 d d d Q2 Q1

Y

Y=Q2 Q0

(Y só depende do estado actual Q2Q1Q0)

Tal como o próximo estado, também o valor da saída Y pode ser considerado indiferente. Neste caso a função mínima para Y resume-se a Q2.

(10)

137 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Circuito lógico - mínimo custo

Q D CLK Q D CLK Q D CLK X CLK Y Q2 Q1 Q0 D2 D1 D0 Q2 Q1 Q0

Finalmente, obtém-se o circuito lógico resultante da aplicação do critério do custo mínimo, que é francamente mais simples do que o circuito sintetizado usando o critério do mínimo risco.

138 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Projecto com flip-flops JK

Q2 Q1 Q0 X Q2* Q1* Q0* J2 K2 J1 K1 J0 K0 Y 0 0 0 0 0 0 0 0 d 0 d 0 d 0 0 0 0 1 0 0 1 0 d 0 d 1 d 0 0 0 1 0 0 1 0 0 d 1 d d 1 0 0 0 1 1 0 0 1 0 d 0 d 1 0 0 0 1 0 0 0 0 0 0 d d 1 0 d 0 0 1 0 1 0 1 1 0 d d 0 1 d 0 0 1 1 0 0 1 0 0 d d 0 d 1 0 0 1 1 1 1 0 0 1 d d 1 d 1 0 1 0 0 0 0 1 0 d 1 1 d 0 d 1 1 0 0 1 0 0 1 d 1 0 d 1 d 1 1 0 1 0 d d d d d d d d d d . . . . . . . . . 1 1 1 1 d d d d d d d d d d Q Q* J K 0 0 0 d 0 1 1 d 1 0 d 1 1 1 d 0

O projecto com flip-flops do tipo JK segue um procedimento semelhante e geralmente conduz a circuitos lógicos mais simples do que quando são usados flip-flops do tipo D. Na verdade um flip-flop JK é mais complexo do que um flip-flop tipo D, o que (empiricamente) explica que as funções de excitação sejam mais simples para JK do que para D.

Como cada flip-flop JK tem duas entradas de controlo (J e K), é necessário construir duas funções de excitação para cada um: Ji(Q2,Q1,Q0,X) e Ki(Q2,Q1,Q0,X). No entanto, dada a funcionalidade deste tipo de flip-flop, estas funções surgem com muitos termos indiferentes o que conduz geralmente a funções lógicas muito simples.

Da equação característica do flip-flop JK (Q*=Q’.J+Q.K’) pode-se construir uma tabela que define os valores a colocar em J e K para que, dado um valor em Q seja obtido um determinado próximo valor para Q. Assim, se Q=0 e o próximo valor pretendido para Q é Q*=0, então as entradas JK podem ser 00 (significa manter o valor de Q) ou 01 (colocar Q com zero), o que quer dizer que podem ser J=0 e K=d; se Q=0 e Q*=1, as entradas podem ser J=1 e K=d; se Q=1 e Q*=0 deve ser JK=d1 e se Q=1 e Q*=1 deve ser JK=d0. Recorrendo a esta tabela, torna-se simples construir as tabelas que representam as funções de excitação dos

(11)

139 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Expressões mínimas para J2 e K2

Q2 Q1 Q0 X 00 01 00 01 11 10 Q2 0 0 0 0 0 0 1 0 d d d d d d d d 11 10 Q1 Q0 X

J2

Q2 Q1 Q0 X 00 01 00 01 11 10 Q2 d d d d d d d d d d d d 1 1 d d 11 10 Q1 Q0 X

K2

J2=Q1.X.Q0 K2=1

Obtendo as expressões mínimas na forma soma de produtos para as funções J2 e K2...

140 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Expressões mínimas para J1 e K1

Q2 Q1 Q0 X 00 01 00 01 11 10 Q2 0 0 0 1 d d d d d d d d 1 0 d d 11 10 Q1 Q0 X

J1

Q2 Q1 Q0 X 00 01 00 01 11 10 Q2 d d d d 1 0 1 0 d d d d d d d d 11 10 Q1 Q0 X

K1

J1=Q0.X+Q2.X K1=Q0.X+Q0.X ... para J1 e K1...

(12)

141 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Expressões mínimas para J0 e K0

Q2 Q1 Q0 X 00 01 00 01 11 10 Q2 0 1 1 d 0 1 d d d d d d 0 1 d d 11 10 Q1 Q0 X

J0

Q2 Q1 Q0 X 00 01 00 01 11 10 Q2 d d 0 1 d d 1 1 d d d d d d d d 11 10 Q1 Q0 X

K0

J0=X K0=Q1+X

... e para J0 e K0 (note que a função Y(Q2,Q1,Q0) não é alterada!)...

142 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Circuito com flip-flops JK

Q J CLK Q Q X CLK Y Q2 Q1 Q0 J2 J1 J0 Q2 Q1 Q0 K J CLK K J CLK K K2 1 K1 K0

(13)

143 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Projecto com flip-flops tipo T

Q2 Q1 Q0 X Q2* Q1* Q0* T2 T1 T0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 0 0 1 0 1 1 1 1 0 0 1 1 1 1 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 1 1 0 1 0 d d d d d d . . . . . . . . . 1 1 1 1 d d d d d d Q Q* T 0 0 0 0 1 1 1 0 1 1 1 0

O projecto de máquinas de estados recorrendo a flip-flops do tipo T (toggle) segue um processo semelhante ao dos exemplos anteriores. Dada a equação característica dos flip-flops do tipo T, pode-se construir uma tabela que descreve o valor necessário na entrada de controlo T para que ocorra cada uma das 4 possíveis transições de estado (resumindo, se o estado anterior é mantido T=0, se troca o estado então T=1). Com base nessa tabela definem-se os valores para as entradas de controlo dos flip-flops T2, T1 e T0 necessários para provocar as transições especificadas.

Recorrendo a mapas de Karnaugh obtêm-se expressões mínimas soma de produtos para T2, T1 e T0, sendo imediato o desenho do circuito lógico correspondente.

144 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Minimizando as funções T2, T1 e T0

Q2 Q1 Q0 X 00 01 00 01 11 10 Q2 0 0 0 11 10 Q1 Q0 X

T2

T2=Q2+X.Q1.Q0 0 0 0 1 0 d d d d 1 1 d d Q2 Q1 Q0 X 00 01 00 01 11 10 Q2 0 0 1 11 10 Q1 Q0 X

T1

T1=Q2.X+Q1.Q0.X+Q1.Q0.X+Q1.Q0.X 0 1 0 1 0 d d d d 1 0 d d Q2 Q1 Q0 X 00 01 00 01 11 10 Q2 0 1 1 11 10 Q1 Q0 X

T0

0 0 1 1 1 d d d d 0 1 d d T0=Q0.X+Q1.X+Q0.X

Recorrendo a mapas de Karnaugh, obtêm-se as expressões mínimas soma de produtos para as funções T2, T1 e T0.

(14)

145 FEUP/DEEC - Sistemas Digitais

http://www.fe.up.pt/~jca/feup/sd

Modelo de FSM de Mealy

variáveis de estado (guarda o estado) Y X S CLK Y(X,S) S*(X,S) S*

No modelo de Mealy as saídas dependem de estado actual e das entradas As saídas podem ser alteradas durante o tempo de um estado

No exemplo anterior, a saída Y apenas dependia do estado actual, pelo que o circuito que a produzia tinha como entradas apenas as variáveis de estado que representam o estado actual. A este modelo chama-se modelo de Moore e apresenta a característica de as saídas apenas poderem trocar de valor quando ocorre uma mudança de estado, sendo por isso mantidas constantes ao longo do tempo que dura um estado, mesmo se as entradas forem modificadas ao longo desse tempo.

Se as saídas dependerem directamente das entradas, tal como mostra o modelo da figura, então o seu valor em cada estado é também função do valor das entradas Y(X,S). Isto quer dizer que, durante o período de tempo correspondente a um estado, os valores das saídas podem alterar-se, ao contrário do que acontecia em máquinas de estados que sigam o modelo de Moore.

O processo de projecto de máquinas de estados segundo o modelo de Mealy segue o mesmo caminho que o ilustrado para máquinas de Moore, excepto no que diz respeito à

Referências

Documentos relacionados

De seguida, vamos adaptar a nossa demonstrac¸ ˜ao da f ´ormula de M ¨untz, partindo de outras transformadas aritm ´eticas diferentes da transformada de M ¨obius, para dedu-

XIII - participação em reuniões/atividades técnico-científicas de grupo de pesquisa: até dois créditos, correspondendo à carga horária cumprida e atestada pelo coordenador do

Assim, cada ente poderá, por meio da sua competência tributária, por meio dos tributos, determinar a forma que for mais interessante para estimular a proteção ambiental, a exemplo, da

Tratam os autos ora analisados acerca de auditoria de conformidade designada pela Portaria nº 290/19, com a finalidade de apurar supostas impropriedades

A Comissão Nacional de Proteção Civil, na qualidade de órgão de coordenação em matéria de proteção civil e ao abrigo das alíneas f) e i), do n.º 2, do artigo 36.º da Lei

Visando sempre a geração de resultados finalísticos, o PAM, Projeto de Acesso a Mercados, quer ser a “porta de entrada” ou “ponta dos processos”

Se o candidato classificado deixar de comparecer à matrícula da chamada regular, ou não apresentar a documentação exigida, nas datas estabelecidas no cronograma

Silva, Francisco da Conceição, arquiteto, 1922-1982 / arquitetura de veraneio / summerhouses (seasonal dwellings) / projetos de arquitetura / architectural drawings (visual works)