Exemplo: FSM de Mealy o mesmo circuito anterior (detector de 1011) assunção: o valor de X muda logo após o a saída Y depende do estado actual e da entrada X INI INI S1 S1 S2 S3 S1 S1 S2 INI S1 S2 S3 X Y 0 1 1 0 1 1 1 0 0 1 0 1 1 é detectada a sequência 1011 em 4 estados consecutivos 146 Para ilustrar o processo de síntese de máquinas de estados com saídas de Mealy, considere-se uma máquina de estados com uma função semelhante à do exemplo anterior (detector da sequência 1011), excepto no que diz respeito aos instantes de tempo em que é considerado o valor da entrada X. No exemplo em que se projectou uma máquina de estados de Moore, pretendia-se detectar a sequência 1011 quando lida em X em 4 transições de relógio consecutivas. Considere-se agora que é garantido que o valor da entrada X apenas é modificado logo a seguir às transições do sinal de relógio (isto pode acontecer, por exemplo, se essa entrada for uma saída de outra máquina de estados que trabalhe com o mesmo relógio). Desta forma, o valor da entrada X é mantido fixo durante (quase) todo o tempo que dura um estado, o que permite especificar o problema de uma forma ligeiramente diferente: pretende-se que a saída Y seja 1 logo que seja detectado que na entrada X ocorreu a sequência 1011 em 4 estados consecutivos. Tal como mostra o diagrama temporal da figura, no estado em que X tem o último 1 da sequência a detectar, Y é colocado com 1 (primeira ocorrência do estado S3 do diagrama de estados do slide seguinte, representado por cima do sinal de relógio). Note-se que esse estado é atingido porque quando ocorre a transição do estado S2, o valor de X ainda é 1. Assim,no estado S3, a saída Y depende de um modo combinacional do valor da entrada X: se X=1 então Y=1, senão Y=0. Sistemas Digitais 2002/2003 - FEUP/DEEC - José Carlos Alves 146
Diagrama de estados Os valores das saídas em cada estado dependem dos valores das entradas durante esse estado. 0/0 INI 1/0 Esta mudança de estado ocorre quando X=1 X / Y Desenham-se associados às transições de estado. 0/0 0/0 S1 1/0 Apenas se altera a forma como é representado e construído o circuito que produz as saídas da FSM. S2 1/0 1/1 Y vale 0 quando 0 estado actual é S3 e X=0 0/0 S3 Y vale 1 quando 0 estado actual é S3 e X=1 147 Para representar o comportamento das saídas de uma máquina de Mealy já não possível associar os seus valores a cada estado. Como em cada estado as saídas dependem do valor das entradas, uma forma de representar os seus valores consiste em associa-los às transições de estado. Na verdade, isso não significa que as saídas sejam alteradas apenas quando ocorre essa transição de estado, mas define o seu valor para cada uma das condições de saída desse estado. No diagrama de estados da figura correspondente ao exemplo do slide anterior, o valor da saída Y no estado S3 vale 1 quando X=1 e vale zero quando X=0 (nos outros estados a saída Y vale zero, independentemente do valor da entrada X). Para simplificar o desenho de um diagrama de estados podem-se usar representações para as condições de transição de estado usando formas mais compactas do que as apresentadas antes. Uma notação possível consiste em representar, junto de cada transição de estado, uma lista de valores binários (ou don t care) numa ordem determinada que as entradas têm de satisfazer para que ocorra aquela transição de estado. Por exemplo, considerando duas entradas A e B, em vez de representar a condição de transição de estado A=1 e B=0 poder-se-ia escrever apenas 10 (uma vez estabelecido que a ordem de representação dos valores era AB). Em máquinas de Mealy, como os valores das saídas se representam junto das transições de estado pode-se escrever os valores para as saídas a seguir da condição de transição de estado, separado por /. Por exemplo, se a máquina de estados considerada tivesse duas saídas W e Z, então poder-se-ia representar, junto a cada ramo (transição de estado) os valores AB/WZ. Por exemplo: 01/11 10/01 E3 E1 E2 AB/WZ significa que, quando AB vale 10 ocorre a transição de estado de E1 para E2 e quando o estado actual é E1 e AB vale 10 as saídas WZ são 01; quando as entradas AB são 01 ocorre a transição de estado de E1 para E3 e quando o estado actual é E1 e as entradas AB são 01, as saídas WZ são 11. Para representar condições de transição de estado mais complexas pode-se escrever uma expressão booleana (função das entradas) junto de cada transição de estado, significando que essa transição ocorre quando essa expressão valer 1. Por exemplo, a condição de transição X=1 e Y=0 ou X=0 e Y=1 pode escrever-se X.Y +X.Y ou, usando o operador OU-Exclusivo, X Y. Sistemas Digitais 2002/2003 - FEUP/DEEC - José Carlos Alves 147
Tabela de transição de estados (FSM de Mealy) 0/0 INI 1/0 próximo estado e saída Y se X=0 próximo estado e saída Y se X=1 0/0 S2 0/0 1/0 S1 1/1 1/0 S*,Y S X=0 X=1 INI INI,0 S1,0 S1 S2,0 S1,0 S2 INI,0 S3,0 S3 S2,0 S1,1 0/0 S3 estado actual 148 Construído o diagrama de transição de estados representa-se a tabela de transição de estados, usando uma organização semelhante à que se apresentou para máquinas de Moore. No entanto, como agora as saídas não dependem apenas do estado actual, é necessário especificar qual é o seu valor para cada caso das entradas. Como mostrado na figura, o valor da saída representa-se junto a cada próximo estado, sendo assim uma função do estado actual e das entradas. Note que devem existir tantas colunas de próximo estado/saída quantas as combinações possíveis para as entradas. Por exemplo, numa máquina de estados com 3 entradas existirão 8 colunas, onde em cada uma (i.e. para cada combinação dos valores das entradas) se representa, para cada estado actual, o próximo estado e o valor correspondente das saídas. Sistemas Digitais 2002/2003 - FEUP/DEEC - José Carlos Alves 148
Tabela de transição de estados (com estados codificados) Usando a codificação de estados: estado presente próximo estado e saída Q1* Q0*,Y Q1 Q0 X=0 X=1 0 0 0 0,0 0 1,0 0 1 1 0,0 0 1,0 1 0 0 0,0 1 1,0 1 1 1 0,0 0 1,1 S Q1 Q0 INI 0 0 S1 0 1 S2 1 0 S3 1 1 Y é função de Q1, Q0 e X 149 Após ter a tabela de transição de estados com os nomes simbólicos dos estados, é definida uma codificação de estados e essa tabela é reescrita usando agora os códigos binários atribuídos a cada estado. Tal como foi visto para máquinas de Moore, esta tabela representa as funções de próximo estado dos flip-flops e das saídas, embora não esteja organizada na forma padrão de tabela de verdade. Sistemas Digitais 2002/2003 - FEUP/DEEC - José Carlos Alves 149
Síntese de S*(X,S) e Y(X,S) S S* Tabela de verdade: Q1 Q0 X Q1* Q0* Y 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 1 1 0 1 0 1 0 0 0 0 0 1 0 1 1 1 0 1 1 0 1 0 0 1 1 1 0 1 1 (...e o resto é igual ao usado para FSMs de Moore) Na mesma máquina de estados podem coexistir saídas de Mealy e de Moore O processo de especificação e síntese combina as duas formas anteriores: as saídas de Moore só dependem do estado presente as saídas de Mealy são função do estado presente e das entradas 150 Organizando a tabela de transição de estados numa de tabela de verdade padrão, obtemos as tabelas de verdade das funções que representam o próximo estado Q i *(Q i,x) e as saídas Y(Q i,x). A partir deste ponto o processo de síntese prossegue da mesma forma que foi visto para máquinas de Moore: escolhe-se o tipo de flip-flop a usar, em função dessa escolha obtêm-se as funções de excitação dos flip-flops (se forem usados flip-flops tipo D então as funções de excitação são iguais às funções de próximo estado) e determinam-se equações minimizadas para essas funções, usando por exemplo mapas de Karnaugh para obter equações mínimas na forma soma de produtos ou produto de somas. Note que a única diferença relativamente àquilo que foi estudado para máquinas de Moore, é que a função que produz as saídas é agora também uma função das entradas da máquina de estados. Podem também construir-se máquinas de estados que combinam saídas de Moore com saídas de Mealy. Neste caso, o processo de especificação e síntese combina as duas formas apresentadas, devendo ser tido em conta que ao representar as funções que produzem as saídas de Moore basta construir expressões que dependam do estado actual, mas para as saídas de Mealy é necessário considerar também a dependência das entradas. Sistemas Digitais 2002/2003 - FEUP/DEEC - José Carlos Alves 150
Codificação de estados Qual é o melhor conjunto de códigos? objectivo: minimizar o circuito lógico (# gates) Problema muito complexo (NP-completo) para obter a melhor solução é necessário verificar todas as hipóteses! os códigos atribuídos aos estados influenciam os circuitos que produzem o próximo estado os circuitos que produzem as saídas (de Moore ou Mealy) Isto é impraticável, mesmo para FSMs pequenas! 151 Como foi referido antes, uma fase muito importante do processo de síntese de máquinas de estados é a escolha de um conjunto de códigos binários para representar cada estado. Essa escolha pode ser feita considerando vários objectivos: minimizar o custo ou tamanho do circuito (por exemplo, minimizar o número de portas lógicas de duas entradas), maximizar a frequência máxima admissível para o sinal de relógio ou reduzir ao mínimo o consumo de energia. A satisfação simultânea de todos estes objectivos é muito complexa e por vezes impossível (por exemplo, poderá ser impossível conseguir que o circuito mais pequeno seja igualmente o mais rápido). O objectivo que, na generalidade das situações, se considera ser o mais importante é a complexidade do circuito traduzida, grosso modo, no número de portas lógicas necessário para construir o circuito. Como os códigos atribuídos a cada estado determinam as tabelas de verdade que representam as funções lógicas que produzem o próximo estado e as saídas, essa escolha é um factor determinante na complexidade final do circuito que realiza a máquina de estados. O problema de determinar o melhor conjunto de códigos binários a atribuir aos estados que conduza ao circuito mais simples é um problema classificado de NP-Completo. Isto significa que para obter a melhor solução é necessário verificar todas as soluções possíveis e escolher a melhor! Apesar de não ser impossível (na verdade esse número é finito), veremos que não é viável essa abordagem porque esse número de soluções é muito grande, mesmo para máquinas de estados com muito poucos estados. Sistemas Digitais 2002/2003 - FEUP/DEEC - José Carlos Alves 151
Codificação de estados (exemplo) FSM com 5 estados são necessários (no mínimo) 3 flip-flops com 3 flip-flops há 8 códigos binários existem () 8 = 56 grupos de 5 dos 8 códigos 5 existem 5!=120 formas diferentes de atribuir cada um dos 56 grupos aos 5 estados no total há 6720 codificações possíveis! e se forem usados 4 flip-flops? 152 Considere-se uma máquina de estados com apenas 5 estados. Para codificar os 5 estados é necessário, no mínimo, 3 flip-flops. Com 3 flip-flops podsem-se representar 8 códigos binários diferentes: 000, 001, 010, 010, 100, 101, 110 e 111. Esses 8 códigos binários podem ser combinados 5 a 5 de 56 formas diferentes (combinações de 8 elementos 5 a 5, dado por 8!/5!/3! - ver slide 125). Para cada uma dessas 56 combinações existem ainda 5!=120 formas diferentes de os atribuir aos 5 estados, o que equivale a permutar (ou baralhar) esses 5 códigos de todas as formas possíveis. O número total de codificações possível é 56 x 120 = 6720, e não é naturalmente praticável construir 6720 máquinas de estados para no final escolher aquela que gasta menos portas lógicas! Este número considera que só são usados 3 flip.flops. Se fossem usados 4 flip-flops teríamos um total de 4368 conjuntos de códigos diferentes (combinações de 16 elementos 5 a 5), e para cada um existiriam 120 possibilidades diferentes de os atribuir aos 5 estados, o que daria um total de 524160 codificações possíveis! Sistemas Digitais 2002/2003 - FEUP/DEEC - José Carlos Alves 152
Codificação de estados (exemplo) usando o menor número possível de FFs: nº estados nº FFs nº códigos nº codificações 2 1 1 2 3 2 4 24 4 2 1 24 5 3 56 6,720 6 3 28 20,160 7 3 8 40,320 8 3 1 40,320 9 4 11440 4,151,347,200 10 4 8008 29,059,430,400 11 4 4368 174,356,582,400 12 4 1820 871,782,912,000 gastando 1µs/solução seriam necessários 10 dias, 2 h, 9 min e 42 segundos! 153 Para se perceber a forma como estes números explodem, mostra-se nesta tabela o número de codificações possíveis para máquinas de estados que utilizem o menor número possível de flipflops. A coluna nº códigos representa o número de diferentes conjuntos de códigos que é possível ter para o número de estados e flip-flops indicado. Por exemplo, uma máquina de estados com apenas 12 estados teria mais de 800 mil milhões de codificações possíveis! Se pensarmos que um computador demoraria 1 micro-segundo a calcular e avaliar cada uma dessas soluções, seria necessário mais de 10 dias para resolver esse problema (e se o trabalho fosse feito à mão resolvendo um problema em cada 5 minutos, seriam necessários mais de 8 milhões de anos...) Sistemas Digitais 2002/2003 - FEUP/DEEC - José Carlos Alves 153
Codificação de estados Codificações simples (exemplo para 8 estados) binária (códigos binários por ordem natural) 000, 001, 010, 011, 100, 101, 110, 111 código Gray (troca 1 bit entre estados consecutivos) 000, 001, 011, 010, 110, 111, 101, 100 one hot (só um bit=1 para cada estado) 00000001, 00000010, 00000100, 00001000, 00010000, 00100000,... quase one hot (código 0, os outros one hot) 0000000, 0000001, 0000010, 0000100, 0001000, 0010000,... (é conveniente usar o estado 000...00 para estado inicial) 154 A forma mais simples de codificar estado consiste em atribui aos estados códigos binários na ordem natural: 000, 001, 010,... Naturalmente que essa ordem depende da ordem com que os estados são desenhados no diagrama de transição de estados ou na tabela de transição de estados e pode ser interpretada de forma variada por diferentes pessoas. Em situações onde ocorram sequências de transições de estados do tipo: 000 001 011 010 110 111 é conveniente usar códigos Gray entre esses estados, que tem a particularidade de entre códigos adjacentes apenas diferir um bit de cada vez (veremos mais à frente que esse princípio faz parte de um conjunto de regras que tendem a minimizar a complexidade dos circuitos lógicos). Outra codificação possível é designada one-hot: são usados tantos flip-flops quantos o número de estados, e cada estado é codificado com um código em que só existe um bit=1. Esta codificação gasta mais flip-flops do que o mínimo, mas geralmente conduz a maiores simplificações nas funções que produzem o próximo estado. Uma variante da codificação one-hot consiste em incluir o código 000...00, que é conveniente para representar o estado inicial. Desta forma gasta-se menos um flip-flop do que usando a codificação one-hot. Sistemas Digitais 2002/2003 - FEUP/DEEC - José Carlos Alves 154
Codificação de estados (regras práticas) estado inicial código fácil de forçar com um sinal de reset estados 000...00 ou 111...11, dependendo do tipo de FF se têm sinal de controlo reset (coloca em 0) ou set (coloca em 1) minimizar o número de bits que trocam entre transições ou maximizar o número de variáveis de estado que se mantêm entre estados que tenham muitas transições entre eles 101 000 001 010 melhor 100 000 001 011 011 100 101 010 5 transições em que trocam 2 bits 2 transições em que trocam 2 bits 155 No processo de codificação de estados devem ser aplicadas um conjunto de regras elementares, que se verifica tenderem a simplificar os circuitos resultantes. O estado inicial deve ser codificado com um código que seja fácil de forçar com os sinais de controlo dos flip-flops utilizados. Por exemplo, se foram usados flip-flops que tenham entrada de reset, deve ser escolhido como estado inicial o estado 00...00, que é facilmente colocado activando ao mesmo tempo o sinal de reset de todos os flip.flops. Se, pelo contrário, todos os flipflops tiverem uma entrada de preset (quando activada coloca a saída Q=1), então o estado inicial deve ser 11...111. A escolha dos códigos para cada estado deve ser feita em função da estrutura do diagrama de estados, por forma a minimizar o número de bits que trocam entre estados que tenham transições entre si. A aplicação desta regra tende a reduzir a complexidade dos circuitos lógicos que produzem o próximo estado. Segundo este critério, a solução da esquerda é pior do que a da direita porque tem mais transições entre estados que diferem entre si dois bits. Sistemas Digitais 2002/2003 - FEUP/DEEC - José Carlos Alves 155
Codificação de estados (regras práticas) se existirem mais códigos do que estados, escolher códigos que permitam minimizar as funções que produzem as saídas S S* Y INI 0 A... 1 B 1 C1... 0 C2 1 C3... 0 Q2Q1Q0 Q* Y 0 0 0 0 0 0 1... 1 0 1 0 1 0 1 1... 0 1 0 0 1 1 0 1... 0 Q2Q1Q0 Q* Y 0 0 0 0 1 0 0... 1 1 0 1 1 0 0 1... 0 1 1 1 1 0 1 1... 0 Y = Q2.Q1.Q0 + Q1.Q0 + Q2.Q0 Y = Q2 156 Em situações em que existam mais códigos do que estados, pode-se tentar organizar a codificação de estados de maneira a minimizar as funções lógicas que produzem as saídas. Se for possível escolher códigos de estados que façam bits de estado iguais a saídas, então essas saídas são iguais a esses bits de estado e não necessitam de qualquer circuito lógico adicional. No exemplo apresentado, os códigos de estado foram escolhidos de forma a que os valores de Q2 fossem coincidentes com os valores da saída Y (admite-se que o valor de Y para os códigos não usados é don t care). Desta forma obtém-se a saída Y sem ser necessário qualquer circuito lógico, ao contrário da primeira solução em que foram atribuídos códigos binários na ordem natural. Sistemas Digitais 2002/2003 - FEUP/DEEC - José Carlos Alves 156
Codificação de estados (regras práticas) usar mais FFs do que o mínimo para forçar a aplicação da regra anterior S S* Y Z INI 0 1 A... 1 0 B 1 0 C1... 0 1 C2 1 1 C3 1 1 SYC 0 1 END... 0 1 Q2Q1Q0 S* Y Z 0 0 0 0 1 0 0 1... 1 0 0 1 0 1 0 0 1 1... 0 1 1 0 0 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1... 0 1 Q3Q2Q1Q0 S* Y Z 0 0 0 0 0 1 1 1 0 0... 1 0 1 1 0 1 1 0 0 0 0 1... 0 1 1 0 0 0 1 1 1 0 0 1 1 1 0 0 1 0 0 1 0 0 1 1... 0 1 Y = Q2.Q1.Q0 + Q1.Q0 + Q2.Q1.Q0 Z = Q2 + Q1.Q0 + Q1.Q0 Y = Q3 Z = Q2 157 Se não for possível aplicar a regra anterior para todas as saídas, pode ser vantajoso acrescentar um flip-flop às variáveis de estado (neste case Q3). Note-se que aumentando o número de flipflops o circuito que produz o próximo estado fica mais complexo porque passa a ter 4 funções de excitação de flip-flops. No entanto, existe mais liberdade na escolha dos códigos de estados por forma tentar minimizar o número de trocas de bits entre estados, o que tendo a reduzir a complexidade de cada uma das funções de excitação. Esta situação mostra que, para reduzir a complexidade das funções lógicas que realizam as saídas é necessário complicar o circuito que produz o próximo estado, não sendo claro (antes de construir o circuito todo) qual será a opção que conduz ao circuito global mais simples. Sistemas Digitais 2002/2003 - FEUP/DEEC - José Carlos Alves 157
Codificação de estados (regras práticas) A codificação one-hot conduz (geralmente) a equações de excitação simples é conveniente se se pretender ter saídas que indiquem o estado actual necessita de mais flip-flops do que o número mínimo é melhor usar a codificação quase-one-hot para ter o estado inicial=0 Estas regras não garantem a obtenção de um circuito mínimo a aplicação de algumas regras pode ser contraditória por exemplo, escolher códigos que minimizem as funções que produzem as saídas pode implicar a ocorrência de muitas trocas de bits nas transições entre estados os resultados da aplicação de cada regra variam de caso para caso a experiência também conta! 158 O recurso à codificação one-hot (ou quase-one-hot) conduz, geralmente, a equações de excitação simples, mas as saídas (de Moore) são produzidas por portas OR cujas entradas são ligadas às variáveis de estado que representam os estados em que essas saídas são 1. Por exemplo, se 10 estados E9 a E0 são codificados com 10 flip-flops (Q9 a Q0) usando códigos one-hot (1000000000, 0100000000, 0010000000, etc), e se uma saída Z vale 1 nos estados E1, E4, E7 e E8, então será produzida por uma porta OR de 4 entradas, cujas entradas são as variáveis de estado Q1, Q4, Q7 e Q8. Finalmente, convém relembrar que estes conjunto de regras devem ser entendidas como recomendações que tendem a reduzir a complexidade dos circuitos resultantes, mas que não garantem de forma alguma circuitos minimizados. Os resultados dependem fortemente das características específicas de cada problema, sendo também muito importante a experiência do projectista em resultados atingidos anteriormente. Sistemas Digitais 2002/2003 - FEUP/DEEC - José Carlos Alves 158
Minimização de estados dois estados são equivalentes se: as saídas de Moore assumirem o mesmo valor as saídas de Mealy forem iguais para todas as combinações das entradas os próximos estados forem os mesmos, sob as mesmas condições de transição dois estados equivalentes podem reunir-se num só: Ymo: saída de Moore Yme: saída de Mealy... Ymo=1 S1 d1/0 10/1 S4 S3 AB/Yme... d1/0 S2... Ymo=1 10/1...... d1/0 S3 Ymo=1 S12... 10/1 S4...... 159 No processo de especificação de uma máquina de estados como um diagrama de transição de estados, um problema importante que deve ser resolvido consiste em reduzir ao mínimo o número de estados. Como foi visto anteriormente, cada estado deve ter implícita uma história dos valores anteriores das entradas, que determina quais devem ser os próximos estados em função dos valores das entradas nesse estado. Se dois estados representam exactamente o mesmo chamam-se estados equivalente e podem ser fundidos num único estado, reduzindo dessa forma o número de estados e a complexidade global do circuito. Dois estados são equivalentes se toda a informação que lhes está associada for igual: os valores para as saídas de Moore, os próximos estados sob iguais condições de transição de estado e os valores das saídas de Mealy para iguais condições das entradas. No exemplo apresentado, os estados S1 e S2 são equivalente e podem ser reunidos num único estado S12, para o qual convergem todas as transições de estados que anteriormente atingiam S1 e S2. Sistemas Digitais 2002/2003 - FEUP/DEEC - José Carlos Alves 159
Projecto de circuitos sequenciais (síncronos) Síntese de FSMs circuitos sequenciais com estrutura padrão máquinas de estados de Moore e Mealy aplica-se para projectar circuitos pequenos Projecto de circuitos complexos decomposição hierárquica de FSMs uma FSM comanda o funcionamento de outra(s) identificação de funções padrão já construídas podem ser usadas para criar circuitos muito complexos por exemplo um microprocessador 160 A metodologia de projecto de circuitos sequenciais síncronos pode ser aplicada para sintetizar circuitos de pequena complexidade. Não é praticável realizar à mão o projecto de máquinas de estados com muitos estados (algumas dezenas) seguindo o processo estudado, porque obrigaria à síntese de circuitos combinacionais com muitas entradas, que não podem ser facilmente minimizados aplicando as técnicas estudadas. Mesmo recorrendo a ferramentas computacionais para sintetizar máquinas de estados, não é desejável tratar circuitos muito complexos como uma única máquina de estados, o número de soluções possíveis cresce muito rapidamente com o número de estados. Por exemplo, é muito mais simples optimizar o projecto de duas máquinas de estados com 7 estados cada uma, do que uma única máquina de estados que tenha apenas 9 estados (compare-se o número de codificações possíveis de estados para ambos os casos, mostrada no slide 153!). Tal como foi visto para os circuitos combinacionais, o projecto de circuitos sequenciais (síncronos) complexos recorre à decomposição de um sistema complexo em sub-circuitos mais simples, que sejam mais fáceis de projectar, ou então que correspondam a funções tipo para as quais existam já circuitos estudados e optimizados que as realizem. Por exemplo, pode ser vantajoso partir uma única máquina de estados em duas ou mais máquinas de estados mais simples, com entradas e saídas ligadas entre si de forma a controlarem-se mutuamente. Existe um conjunto reduzido de funções padrão (a estudar nas próximas aulas) que podem ser usadas para construir circuitos sequenciais complexos. Assim, o primeiro passo na abordagem de projecto a um sistema digital sequenciais é tentar identificar partes desse sistema que possam ser realizadas com recurso a funções padrão (quer sequenciais quer combinacionais), para as quais existem já circuitos construídos e prontos a usar. Estes podem estar disponíveis como circuitos electrónicos integrados (por exemplo, os dispositivos da série 74xxx), ou então como componentes organizados numa biblioteca de uma aplicação computacionais para projecto de sistemas digitais. Sistemas Digitais 2002/2003 - FEUP/DEEC - José Carlos Alves 160
Projecto de circuitos sequenciais (síncronos) Um circuito sequencial síncrono todos os flip-flops têm o mesmo sinal de relógio circuitos lógicos combinacionais entre os FFs Modelo de um circuito sequencial síncrono entradas (síncronas ou assíncronas) D Q... D Q D Q saída combinacional saída síncrona (registada) clock 161 Antes de apresentar as funções padrão sequenciais mais importantes, é importante definir as características de circuitos sequenciais síncronos, que serão objecto de estudo nas próximas aulas. Um circuito sequencial síncrono é formado por blocos de circuitos combinacionais e flip-flops (para simplificar admitamos que são flip-flops do tipo D). Os circuitos combinacionais situam-se entre os flip-flops, que têm o mesmo sinal de relógio. Assim, quando ocorre a transição de relógio, todos os flip-flops, carregam para a sua saída Q aquilo que nesse instante está presente na sua entrada D, que é determinado pela função lógica do circuito combinacional que está a montante (i.e. antes). Por sua vez, os circuitos combinacionais têm por entradas as saídas Q de flip-flops ou as entradas do circuito. As saídas podem ser registadas se forem directamente saídas Q de flip-flops, ou saídas combinacionais de forem saídas produzidas por blocos de lógica combinacional. Também as entradas podem alimentar directamente as entradas D de flip-flops, ou serem entradas de blocos combinacionais. Num circuito síncrono é muito importante conhecer a relação temporal entre as entradas e o sinal de relógio. Uma entrada dita assíncrona varia ao longo do tempo sem apresentar qualquer relação temporal com o sinal de relógio. Isso quer dizer que pode trocar de valor lógico em qualquer instante, o pode por isso trocar ao mesmo tempo que o sinal de relógio tem a sua transição activa. Nesse caso os flip-flops podem cair em num estado meta-estável o que é indesejável para o funcionamento de qualquer circuito síncrono, já que desse estado podem saltar aleatoriamente para 0 ou para 1. Por exemplo, uma entrada controlada manualmente por um botão de pressão é uma entrada assíncrona (a menos que quem pressiona o botão esteja a ver o sinal de relógio!). Uma entrada diz-se síncrona quando as possíveis trocas de estado ocorrem sempre em instantes de tempo bem definidos em relação às transições do sinal de relógio (por exemplo, 150ns após o relógio ter passado de 0 para 1). Sistemas Digitais 2002/2003 - FEUP/DEEC - José Carlos Alves 161
Funções sequenciais padrão Registos armazenam vários bits em paralelo funciona como um flip-flop de vários bits Contadores percorrem uma sequência de estados cíclica binários, módulo M, aleatórios, crescente ou decrescente Registos de deslocamento deslocam os bits de uma palavra a cada tick do relógio conversão de dados série-paralelo e paralelo-série 162 As funções sequenciais padrão mais importantes são registos, contadores e registos de deslocamento (ou shift-registers). Um registo não é mais do que um conjunto de flip-flops com um sinal de relógio comum, podendo ser entendido como um flip-flop de vários bits. Tem por função armazenar uma palavra de vários bits, representando, por exemplo, um número inteiro com sinal, um caracter alfabético segundo o código ASCII ou a cor de um ponto elementar de imagem (pixel). Um contador é um circuito sequencial síncrono que percorre ciclicamente uma sequência determinada de estados e produzem num conjunto de saídas uma sequência de valores binários. Existem contadores binários que geram a sequência natural de todos os 2 N números binários de N bits, contadores módulo M que contam de 0 a M-1, contadores que geram sequências (pseudo- )aleatórias, contadores que contam para cima ou para baixo, etc. De uma forma geral, o diagrama de transição de estados de um contador apresenta uma sequência em anel, que pode ser quebrada por actuação em entradas de controlo (por exemplo, uma entrada de clear pode colocar o contador no estado 0000). Um registo de deslocamento é um registo que, para além de armazenar uma palavra de N bits, permite deslocar esses bits para a direita ou para a esquerda, sincronamente com as transições activas do sinal de relógio. Uma função muito importante realizada por registos de deslocamento é a conversão de dados em paralelo para dados em série ou vice versa, necessário em sistemas de comunicações digitais. Sistemas Digitais 2002/2003 - FEUP/DEEC - José Carlos Alves 162
Registos Um registo é um conjunto de flip-flops armazena uma palavra de vários bits construídos com flip-flops tipo D D2 D Q Q2 D1 D Q Q1 D[2:0] Q[2:0] D0 D Q Q0 163 Um registo não é mais do que um conjunto de flip-flops com um sinal de relógio comum. As saídas Q contêm o valor armazenado no registo e nas entradas D é colocado o conjunto de bits que na próxima transição do sinal de relógio será carregado para as saídas Q. Uma forma de representar um registo, especificando o número de bits das suas entrada e saída, consiste em identificar esses sinais com nomes do tipo D[2:0], onde o intervalo [2:0] identifica o número de bits (três neste caso), e onde os bits individuais são identificados por D[0], D[1] e D[2] (há várias formas alternativas de representar sinais lógicos com mais de um bit, mas iremos utilizar esta forma por ser a usada no sistema de projecto da Xilinx, utilizado nas aulas laboratoriais). A juntar a este conjunto básico de sinais, podem existir sinais de enable (só quando está activo é que Q é carregado com o que está em D), sinais de clear (quando activados as saídas Q são colocadas a zero, independentemente do estado do sinal de relógio) ou entradas de preset (quando é activada as saídas Q são colocadas em 1, independentemente do estado do sinal de relógio. Podem também existir entradas de reset síncrono (quando ocorrer a transição de relógio e reset estiver activo, as saídas Q passam para 0) ou entradas de set síncrono (quando ocorrer a transição de relógio e set estiver activo, as saídas Q passam para 1). Estes nomes podem variar de fabricante para fabricante ou entre diferentes ferramentas de projecto computacional, mas realizam as funcionalidades elementares descritas. Além disso, podem ser activas no nível lógico 0 ou 1,o que deve ser claramente descrito nas folhas de características dos componentes electrónicos ou nos manuais das ferramentas de projecto. Sistemas Digitais 2002/2003 - FEUP/DEEC - José Carlos Alves 163
Registos em CIs 74xxx (exemplos) 74x175: registo de 4 bits com clear assíncrono 74x175: registo de 6 bits com clear assíncrono 74x374: registo de 8 bits com saída de 3 estados 74x377: registo de 8 bits com enable CLR 1Q 1D 1Q 2Q 2D 2Q 3Q 3D 3Q 4Q 4D 4Q CLR 1D 2D 3D 4D 5D 6D 1Q 2Q 3Q 4Q 5Q 6Q OE 1D 1Q 2D 2Q 3D 3Q 4D 4Q 5D 6D 7D 8D 5Q 6Q 7Q 8Q EN 1D 1Q 2D 2Q 3D 3Q 4D 4Q 5D 6D 7D 8D 5Q 6Q 7Q 8Q 74x175 74x174 74x374 74x377 164 Alguns exemplo de registos que existem disponíveis como circuitos integrados da família 74xxx: o 74x175 é um registo de 4 bits, com entrada de clear activa com o nível lógico 0, dispondo das saídas Q e Q (note que nesta notação se considera que os sinais cujos nomes estão desenhados dentro do símbolo são todos activos com o nível lógico 1; assim, apesar de o sinal de clear CLR ser activo com o nível lógico 1, o círculo desenhado junto à entrada indica que o sinal externo é CLR e é por isso activo com o nível lógico 0). O 74x174 é um registo de 6 bits também com entrada de clear activa com 0, mas sem saídas negadas. O 74x374 é um registo de 8 bits com entrada de output enable activa com o nível lógico 0. Isto significa que as saídas de cada flip-flop são ligadas para o exterior através de um buffer de 3 estados, que é ligado quando a sua entrada de controlo for 0. Assim, quando a entrada output enable estiver com o nível lógico 1, as saídas apresentam um estado de alta impedância, que é um estado equivalente a estarem electricamente desligadas do resto do circuito. O 74x377 é um registo de 8 bits com entrada de enable activa com o nível lógico 0: quando ocorrer a transição activa de relógio e o enable estiver com 1, é mantido o valor anterior das saídas Q; se estiver com 0 é carregado para as saídas Q o valor presente nas entradas D correspondentes. Sistemas Digitais 2002/2003 - FEUP/DEEC - José Carlos Alves 164