You are on page 1of 8

Projecto de Máquinas de Estado com Codificação 1-hot

José A. Soares Augusto Julho 2009 - V1.0
Resumo Apresenta-se uma breve exposição sobre o projecto de Máquinas de Estado (MEs) de acordo com a técnica de codificação 1-Hot (1H), sendo focadas as diferenças principais entre estas máquinas e as MEs projectadas com o recurso às técnica e codificação clássicas. São desenvolvidos alguns exemplos e sugeridas referências apropriadas para um estudo mais aprofundado do assunto.

1

Introdução

O projecto de MEs pela técnica clássica exige que seja utilizado um número de flip-flops, NF , que satisfaça a condição NE ≤ 2 NF (ME clássica) onde NE é o número de estados da máquina. A codificação destes estados é, muitas vezes, realizada casuisticamente quando não há requisitos de projecto adicionais. Porém, a codificação dos estados tem sido estudada no âmbito da redução do consumo de energia nos circuitos: na medida em, que no mundo real, as probabilidades de transição entre estados variam significativamente, é desejável que os estados adjacentes às transições mais prováveis tenham o menor número possível de bits a diferir nas respectivas codificações. Recorde que nos circuitos digitais CMOS o dispêndio de energia é proporcional ao número de transições entre os níveis H e L, pois o consumo de energia é praticamente nulo quando os sinais permanecem estáticos. Na técnica de projecto 1H utiliza-se um número de flip-flops (FFs) igual ao número de estados da máquina, ou seja NE = NF (ME do tipo 1-hot)

o que de imediato indica que a técnica 1H é muito mais exigente em termos do número de FFs utilizados e que, obviamente, ela só será viável para realizar MEs de pequena ou média dimensão. Porém, o uso de muitos FFs é contrabalançado pela economia conseguida na complexidade da lógica combinatória, poupança essa que conduz a uma maior rapidez de execução da ME. Além disso é evidente na codificação 1H que, em qualquer mudança de estado, apenas dois bits da codificação mudam pois as NE codificações são (1,0,0,...,0,0), (0,1,0,...,0,0), (0,0,1,...,0,0), ... (0,0,0,...,1,0), (0,0,0,...,0,1). Assim, a codificação 1H dos estados pode ser feita aleatoriamente sob o ponto de vists do consumo de energia.

2

A máquina de estados “1-hot”

Como se disse, a ME realizada segundo a técnica 1H utiliza um número de FFs igual ao número de estados. Este aspecto está directamente ligado à sua codificação.

1

logic. n. ’xst’ é a sigla de Xilinx Synthesis Technology. 2. Para uma máquina com NE estados designados por S0 . aquele que possui um comportamento mais simples de entender (os outros tipos de FF comuns são o JK e o T). ou clear (CLR). S M . querendo esta atribuição indicar que na transição aplicável (0→1 ou 1→0) do clock o FF lê. Esta codificação é completamente independente das transições.1 Codificação de estados 1H Uma particularidade desta técnica de projecto é a codificação: a cada estado está associado um único FF com saída igual a ’1’. Naquela tabela os Q j representam as saídas dos FFs. Com efeito. Outra vantagem das máquinas 1H é a seguinte: se forem usados flip-flops do tipo D.2 O flip-flop do tipo D O flip-flop D é o preferido para projectar máquinas 1-hot pela razão já mencionada. talvez.. A denominação deste FF tem a ver com o facto de D ser a primeira letra de “Data” (o FF carrega o bit presente na entrada). o FF D é o “melhor” no que respeita à síntese manual da ME (para uma ferramenta de projecto automática é irrelevante qual o flip-flop utilizado!) O diagrama lógico do flip-flop D edge-triggered pelo flanco descendente do relógio (C) e com um reset. escreve-se Q n +1 ⇐ D n para descrever o funcionamento do flip-flop D. O código pode ser alterado trivialmente para fazer com que o FF seja sensível ao flanco ascendente do relógio (o que consiste em trocar negedge C por posedge C). onde M = NE − 1. para colocar uma entrada de set. O diagrama e o código foram directamente retirados da documentação da Xilinx2 .. o valor D n presente na sua entrada D no final do anterior período de tempo. entradas e saídas sa máquina. e saída. Retirados do ducumento xst. Assim. é mostrado na fig. Podemos pois associar naturalmente um FF a cada estado da máquina.. 1. Este flip-flop é. Os estados são denominados Sk . como é habitual... S1 . o projecto da lógica de colagem1 é feito por inspecção do diagrama de transição de estados sem haver a necessidade de simplificar funções lógicas complexas.S0 S1 S2 ··· SM Q0 1 0 0 ··· 0 Q1 0 1 0 ··· 0 Q2 0 0 1 ··· 0 ··· ··· ··· ··· ··· ··· QM 0 0 0 ··· 1 Tabela 1: Codificação dos estados nas máquinas 1-hot. Nessa mesma figura encontra-se o código de descrição em Verilog. a codificação de estados 1-hot é aquela mostrada na tabela 1. No código em Verilog que descreve o flip-flop D a linha que implementa a função do componente é 'else Q = D'. estando os restantes NE − 1 flip-flops com as saídas a ’0’. . para acrescentar um clock enable.pdf que acompanha as várias versões do sistema de desenvolvimento ISE da Xilinx. etc. assíncrono e activo a High. onde são também visíveis as suas entrada. e os Q j são as saídas dos flip-flops. D. 2 1 Glue 2 . e armazena durante o período de tempo n + 1 que se está a iniciar. 2.. Q.

. Considere.. Este raciocínio pode ser generalizado para as restantes transições e FFs. excepto para o último deles cuja saída Q L será ligada à entrada D0 . O estado ’. 1: À esquerda.’ representa todo o conjunto de estados situados entre S2 e S L . 2: Diagrama de transições de um contador módulo L + 1. .. Parece pois claro que para implementar o contador como uma máquina 1H basta ligar a saída Q j dum dado flip-flop à entrada D j+1 do flip-flop seguinte. output Q. O seu diagrama de transição de estados é um “anel” com transições incondicionais a serem feitas de cada estado S j para o estado seguinte. por exemplo. a passagem do estado S1 para o estado S2 : em termos da codificação específica da máquina 1H ela corresponde à transição de ’. fechando assim o anel. reg Q. A excepção é o último estado. carregando este FF 2 com ’1’. Todos os restantes FFs nesta transição. isto é conseguido no circuito lógico se a saída Q1 do FF 1 estiver ligada à entrada D2 do segundo flip-flop.module f l o p (C .) Para prosseguir com o raciocínio de projecto pertinente às máquinas 1H convém recordar o funcionamento do FF D. D..3. 2. seriam carregados com ’0’. 3.0010’ para ’. S0 (fig.1 Um contador básico Vamos começar por projectar um contador simples de módulo L + 1. S j+1 . Fig.3 Projecto de máquinas 1H A melhor maneira de atacar este assunto é recorrer a exemplos. CLR. 2. a respectiva descrição (template) em Verilog. always @( negedge C or posedge CLR) begin i f (CLR) Q = 1 ’ b0 . CLR . Este flip-flop memoriza o bit que está presente na entrada D no instante de transição do relógio.. diagrama lógico de um flip-flop do tipo D. 3 . in p ut C . de onde é feita a transição para o estado inicial. Ora bem. incluindo o FF número 1... end endmodule Fig. Q ) .. S L . 2. Esta implementação é mostrada na fig. D. e l s e Q = D.0100’. À direita.

correspondente ao último estado) deverá ser associada uma saída da máquina. para j = 0. 4: Diagrama de transição de estados de uma máquina (do tipo Moore) cuja entrada é U e saída é Y .Fig. Se. Assim. Como existe uma entrada que condiciona as transições. 4. 2. Para ilustrar o que se disse. se Q B for a saída do flip-flop associado ao estado S_B e DC e QC forem respectivamente a entrada e a saída do flip-flop associado a S_C. à saída do flip-flop correspondente a esse estado (Y = Q L no presente exemplo). as equações de excitação dos flip-flops não serão formalmente tão simples como as do contador (que consistiam simplesmente em D j = Q j−1 . O projecto total consiste em levar a cabo este exercício para todos os estados. porém. a representação lógica daquele frase é DC = Q B U + Q C U = ( Q B + Q C ) U 4 . 4. como consequência da codificação de estados usada nas máquinas 1H.3. terá de ser utilizado um descodificador de 1-hot para binário (ou BCD) ligado às saídas dos L + 1 flip-flops. Este contador não conta em binário. Como é que se chega a ele? A resposta é: “partindo do estado S_B e a entrada U ser igual a ’1’ ou partindo do (próprio) estado S_C e a entrada U ser igual a ’1’ “ (nesta frase as operações lógicas foram realçadas a negrito). O “truque” para projectar rapidamente as máquinas numa codificação 1-hot é o seguinte: “focados” num dado estado.2 Máquina 1H com uma entrada e uma saída Vamos agora discutir e realizar o projecto 1H da máquina mostrada na fig. 3: Realização do contador módulo L + 1 com um “anel” de flip-flops D. e D0 = Q L ). Esta resposta é dada apenas pelas setas que representam as transições. Y . com o propósito de dar a indicação pretendida. for necessário “contar” todos os números. comecemos por observar o estado S_C da máquina da fig. Se for necessário detectar um ou mais valores da contagem (por exemplo o valor L. faz-se a pergunta: “como é que atinjo este estado?” A resposta lógica a esta pergunta é a função que excita a entrada do flip-flop associado àquele estado. Fig.

sem o ter o ónus associado aos FFs adicionais. e apenas um dos 23 = 8 estados possíveis não é utilizado. por exemplo.Fig. conclui-se que quando existem muitos recursos disponíveis é normalmente possível utilizar uma máquina 1H. 3 Vantagens e desvantagens das máquinas 1-hot Como “não há bela sem senão”. Logo: DB = Q A U Finalmente. Estes dispositivos dispõem de uma capacidade fixa (medida em “portas equivalentes”). ou um milhão de portas lógicas (actualmente há FPGAs com capacidade superior a 10 milhões de portas!) Concretizando o raciocínio. quer o circuito em implementação seja equivalente a 10. mas serão necessários apenas 7 FFs se ela for projectada da forma clássica (pois 100 < 27 = 128). pelo que ¯ D A = ( Q A + Q B + Q C )U e como uma daquelas saídas vale ’1’. 1000. descrito mais adiante. As ligações dos terminais R. À cabeça das desvantagens vem o número exagerado de FFs necessário para realizar máquinas de acordo com a metodologia 1H: 1 flip-flop por cada estado! Se.) O projecto lógico final encontra-se na figura 5. Este só pode ser atingido a partir do estado S_A quando a entrada é U = 1 . por hipótese. um SEU – Single Event Upset – despoletado pelo choque de uma partícula cósmica com um componente). Outro problema – comum a todas as máquinas de estado. se pretender implementar uma máquina com 100 estados. Com a codificação clássica usa 3 FFs. podemos simplificar D A para ¯ DA = U (no projecto desta ME com o ISE da Xilinx. pelo que apenas relativamente a ele terá de 5 . iremos precisar de 100 FFs na codificação 1H. esta simplificação não é feita. sem excepção. as máquinas 1H apresentam vantagens e desvantagens relativamente às MEs com codificação clássica. onde se omitiram as ligações do Reset (R) e do relógio (CLK). – é prever o que irá acontecer quando a máquina transita para um estado não utilizado devido a um acontecimento imprevisto (como. suponha que quer projectar uma máquina com 7 estados. No caso das máquinas 1H. mais rápida do que uma máquina clássica. Passemos ao estado S_B. transita-se para o estado S_A sempre que VU = 0 . onde cada estado é codificado com um bit a ’1’ e os restantes a ’0’. S e CLK dos flip-flops não são efectuadas para manter a “clareza” na figura. independentemente do estado actual. Este aspecto é mitigado no projecto com FPGAs. se um ’0’ passar indevidamente ’1’ a máquina poderá eventualmente nunca mais retornar a um estado qualquer válido! Mais concretamente. 5: Implementação 1-hot da máquina de estados da figura anterior.

A ferramenta de síntese ISE da Xilinx cria por defeito máquinas de estado 1-hot. que também divulgam templates para a especificar máquinas de estados (do tipo 1-hot ou com outra codificação). O código que se segue é uma adaptação da template de uma máquina de estados 1-hot existente na ferramenta: module ME1H(CLK. Aqui a rapidez está associada à frequência máxima de relógio. Consulte o documento xst. Por esta razão. Isto é conseguido com os templates disponibilizados no documento xst. PDAs. estudando as transições que partem desse estado após ter projectado a lógica. A recuperação do mau funcionamento é dependente das entradas e da lógica de transição da máquina. – a potência é directamente proporcional à frequência. É sempre interessante descrever a codificação e a síntese da ME especificada na fig. ou é dispendiosa (satélites.. Recorde que na tecnologia CMOS não existe consumo de energia quando os sinais digitais estão estáticos3 . Pode escolher as codificações Gray. regra geral. funcionam mais rapidamente do que a ME clássica equivalente.. Pode consultar uma referência bibliográfica focando este assunto que é indicada no final do documento.pdf e no menu da ferramenta.pdf para saber detalhes. quando os circuitos são fabricados em tecnologia CMOS – e isso acontece com a maioria dos circuitos digitais na actualidade. Numa máquina 1H apenas dois bits da codificação de estados mudam em cada transição (um deles passa de ’1’ para ’0’ e o outro faz a transição oposta).. Ora bem. mas poderão ocorrer problemas resultantes da optimização feita pelas ferramentas de síntese: por vezes estas consideram aquela lógica extra como redundante e. Na tecnologia CMOS pode escrever-se. Johnson. Porém. 4 com o ISE Webpack 6. 4 Realização de máquinas 1-hot em Verilog O ISE da Xilinx dispõe de opções que permitem ao projectista realizar máquinas de estado 1-hot. relógios. nenhum sistema pode funcionar avariado ad eternum. como a Altera. Nas FPGAs a velocidade também variará consoante o modelo e o fabricante. “leitores de MP3”. próteses auditivas. quase de certeza será muito mais rápida no ASIC. RST . Por exemplo. Uma vantagem das máquinas 1H é que. e atendendo a que a lógica combinatória é habitualmente pouco complexa. Y ) . de forma geral 2 P ∝ f Ctot VDD onde VDD é a tensão de alimentação e Ctot é a capacidade parasita total associada aos nós do circuito. incluindo as FPGAs.3. existe uma economia de potência nas máquinas 1H comparativamente às ME clássicas.03i (a versão que está instalada no laboratório). O projectista pode adicionar lógica para resolver esta situação. etc. a não ser que o utilizador indique especificamente que pretende sintetizar outro tipo de máquina4 . Quando o cálculo da potência tem de ser preciso têm de ser levados em conta factores associados ao funcionamento pormenorizado do circuito: a capacidade em cada nó e a actividade do sinal nesse nó. Finalmente.precaver-se para o eventual funcionamento “erróneo”. U. 6 . O mesmo acontece com ferramentas de outros fabricantes.). eliminam-na do projecto... dos quais apenas 7 são utilizados: os 121 estados não utilizados terão de ser escrutinados relativamente às respectivas transições. Isso acontece com os circuitos incluídos em sistemas em que a energia está racionada. dá-se uma última perspectiva sobre este assunto: não é raro que a potência dispendida pelo circuito seja relevante. pois se muitos sistemas reais apresentam alguma tolerância ao funcionamento temporário sob avaria (principalmente se a avaria persistir apenas num período de tempomuito curto). se uma mesma ME for implementada simultaneamente num ASIC e numa FPGA. com codificação 1-hot usará 7 FFs que representam 27 = 128 estados. pura e simplemente. Compact. que também depende da tecnologia de fabrico em que a ME é implementada. f . 3 4 Despreza-se aqui a pequeníssima contribuição devida às correntes de fuga nos transístores MOS. A problemática do não retorno a estados válidos tem importância prática. apesar de usarem mais flip-flops. pacemakers. telemóveis.

SB e SC. parameter SA = 3 ’ b001 . 1− hot assign Y = s t a t e [ 1 ] . else case ( s t a t e ) SA : i f (U) s t a t e <= SB . o que se deve a um “bug” da ferramenta). RST . else s t a t e <= SA . A excitação de DB é feita pela porta AND visível no circuito global. 7 . reg [ 2 : 0 ] s t a t e . concretamente. input CLK. Em baixo. else s t a t e <= SA . else s t a t e <= SA . endcase endmodule Como aspecto notável neste código temos a definição de três parâmetros (parameter). o circuito correspondente ao blococombinatório esquerdo do circuito de cima (excitação de DC ) e o circuito correspondente ao bloco combinatório direito (excitação de D A ) . 4 com as ferramentas da Xilinx. state. 6. No topo encontra-se o circuito total (no extremo direito não está desenhada a ligação vertical entre a saída do FF e o “fio” solto. O módulo tem dois processos: o primeiro é uma simples atribuição (assign) da saída Y da máquina à saída do FF correspondente ao estado SB. SA.Fig. e implementa os 3 FFs da máquina. simultaneamente. baseia-se num case em que as opções correspondem aos estados da máquina e. correspondentes à codificação dos três estados com 3 flip-flops. o que indica ao compilador que é uma máquina 1H. O outro processo está envolto num always. São usados 3 flip-flops: à esquerda está o FF correspondente ao estado C. SC = 3 ’ b100 . SB : i f (U) s t a t e <= SC . s a i d a ) always@ ( posedge CLK or posedge RST ) // P r o c e s s o 2 − Maq . O registo de estados. implementa as transições do diagrama de estados. constitui a saída Y da máquina. // P r o c e s s o 1 ( combinatorio . SC : i f (U) s t a t e <= SC . output Y . U. SB = 3 ’ b010 . e s t a d o s i f ( RST ) s t a t e <= SA . ao centro está o FF correspondente ao estado A. tem três bits. da esquerda para a direita. // cod . O resultado da síntese encontra-se na fig. estão respectivamente o diagrama de blocos do módulo. 6: Síntese da ME descrita pelo diagrama da fig. Este processo é simplesmente um “curto-circuito” entre Y e a saída daquele FF. e à direita aquele associado ao estado B que.

O artigo Goulson-1994 (http://www. 8 . por exemplo.trilobyte. dá-se o caso de ser fácil projectar manualmente MEs 1-hot de pequena ou média dimensão. por defeito sintetizam as máquinas de estado de acordo com esta técnica. 5 Conclusão A codificação 1-hot tem vantagens e desvantagens.pdf). No entanto. Isto está de acordo com a nossa indicação no Verilog de que o reset da máquina corresponde ao estado A. na medida em que reputadas ferramentas. Referimos dois deles.com/verilogfaq/files/jhld099401. Regra geral esta codificação produz máquinas mais rápidas e. mas faz o preset do FF associado ao estado A (que é o FF ao centro do diagrama geral da ME mostrado no topo da fig.pdf) é frequentemente citado quando está em causa a escrita de descrições sintetizáveis de máquinas de estado usando HDLs (VHDL ou Verilog). a inicialização realizada pelo sinal RST faz o clear dos FFs associados aos estados B e C.bawankule. tais como o ISE da Xilinx. como bónus.Referimos apenas alguns aspectos importantes na síntese que são visíveis naquela figura. Pela observação ¯ do circuito inferior direito conclui-se que a simplificação que fizemos para D A . Referências Na Internet podem ser encontrados artigos sobre este assunto. as vantagens parecem levar a melhor. mais concretamente D A = U não é aqui reproduzida.com/pdf/golson_pldcon93. O mesmo autor também escreveu este outro artigo especificamente sobre máquinas 1-hot: Golson-1993 (http://www. Sobre a problemática dos estados não válidos pode consultar. este artigo de Kassel e Kastensmidt. Por outro lado. 6).