Anais do 14O Encontro de Iniciação Científica e Pós-Graduação do ITA – XIV ENCITA / 2008 Instituto Tecnológico de Aeronáutica, São José dos Campos, SP, Brasil, Outubro, 20 a 23, 2008. TÉCNICAS DE PROJETO DE CIRCUITOS DIGITAIS DE BAIXO CONSUMO Yuri Sá Scaramussa Divisão de Engenharia Eletrônica – Instituto Tecnológico de Aeronáutica – IEEA – ITA Praça Marechal Eduardo Gomes, 50 – CEP 12228-900 – São José dos Campos – São Paulo – Brasil. Bolsista PIBIC-CNPq [email protected] Duarte Lopes de Oliveira Divisão de Engenharia Eletrônica – Instituto Tecnológico de Aeronáutica – IEEA – ITA Praça Marechal Eduardo Gomes, 50 – CEP 12228-900 – São José dos Campos – São Paulo – Brasil. [email protected] Resumo. Na atualidade, muitos sistemas digitais são descritos por uma arquitetura composta de uma rede de controladores síncronos e datapaths. Eles são alimentados por bateria e são implementados na tecnologia VLSI e/ou FPGAs (Field Programmable Gate Array). Como a bateria deve ter uma vida longa útil, a redução do consumo de energia é a tarefa mais importante no projeto destes sistemas. Para reduzir a potência dissipada, diversas estratégias foram propostas na literatura, seja para o controlador, como para o datapath. Neste artigo apresentamos as diferentes técnicas para redução da potência dissipada e propomos um método para síntese de controladores síncronos de baixo consumo. O nosso método sintetiza controladores síncronos que usam latches sincronizados como elementos de memória. Palavras chave: estimação de consumo de potência, síntese lógica de baixo consumo, chaveamento de relógio, assinalamento de estados, latch sincronizado. 1. Introdução Com o avanço da microeletrônica, cada vez mais sistemas digitais de alta complexidade são projetados. Muitos destes sistemas têm como característica comum serem alimentados por bateria e estão voltados para diferentes aplicações, tais como: comunicação sem fio, computador portátil, aeroespacial (satélite, mísseis, etc), aviação, automobilística, médica, etc. Por serem alimentados por bateria é desejável que ela tenha uma vida longa útil, portanto, a dissipação de potência é um parâmetro muito importante no projeto destes sistemas (Devadas, 1995, Weng, 2003). Tradicionalmente, os circuitos digitais são implementados com componentes que são construídos com a tecnologia CMOS. A potência dissipada nos componentes CMOS segue a seguinte expressão (Najm, 1994): PTM=1/2.C.V2DD.f.N + Qsc.VDD.f.N + Ifuga.VDD (1) Onde: PTM é a potência total média dissipada, VDD é a tensão de alimentação, f é a freqüência de operação, o fator N é atividade de chaveamento, isto é, o número de transições na saída de uma porta, e o fator QSC e C são respectivamente a quantidade de carga e a capacitância (Najm, 1994). Na equação (1), o primeiro termo representa a potência dissipada dinâmica. O segundo termo representa a potência dissipada relacionado com a corrente de curto. O terceiro termo representa a potência dissipada estática relacionada com a corrente de fuga. Na tecnologia CMOS estática a maior fração da potência dissipada ocorre durante a atividade de chaveamento dos eventos (potência dinâmica) (Najm, 1994). A dissipação da potência media na porta g pode ser simplificada ao primeiro termo de (1): Pmédia-g=1/2.Cg.V2DD.f.Nmédia-g (2) As técnicas de redução da potência dinâmica são aplicadas nos diferentes níveis do projeto digital (Devadas, 1995). Na síntese de circuitos digitais síncronos as propostas de redução de potência estão sendo feitas no nível lógico que são: controle lógico do relógio (gated-clock) (Benini, 1996, 1997; Wu, 2001), Flip-Flops que atuam nas duas margens do clock (Strollo, 1999; Zhao, 2007), decomposição (Monteiro, 1996,2002), assinalamento de estados (Baccheletta, 2000) e minimização lógica (Iman, 1995; Tseng, 1997). Na síntese de alto nível as propostas que estão sendo feitas são: temporizar registradores (“retiming”) (Maheshwari, 1998) e pré-computação (Monteiro,1996). Em um sistema digital, a parte seqüencial é a maior contribuidora na dissipação de potência. Estudos realizados indicam que o relógio destes sistemas consome uma grande porcentagem (15% a 45%) da potência do sistema (Devadas, 1995). Assim, a potência do circuito, pode ser grandemente reduzida se reduzirem à atividade do relógio. Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008 , Neste artigo apresentamos os principais elementos de consumo de potência na tecnologia CMOS, duas técnicas de estimação de potência, diferentes técnicas de redução de potência e propomos um método para síntese de controladores síncronos (máquinas de estado finito – MEF) de baixo consumo. O nosso método parte de uma especificação síncrona que deve satisfazer a restrição do fluxo de estado. Os nossos controladores são implementados na arquitetura alvo latch sincronizado standard (ver Fig.1 a versão Mealy). O uso do latch como elemento de memória permite reduzir área, consumo de energia e aumentar a velocidade. Comparando com os flip-flops, os latches consomem menos energia, possuem menos transistores e o seu tempo de propagação é menor (Strollo, 1999). E n tra d a s Lógica de Excitação Latc hes D C lk C lk Q Lógic a de S aída V ariáv eis de E s tado Figura 1. Arquitetura alvo: Latch sincronizado standard modelo Mealy. O nosso artigo está estrutura na seguinte forma. Na seção 2 apresentamos os conceitos de estimação de potência; na seção 3 um resumo das técnicas de redução de potência no nível físico; na seção 4 apresentamos as principais técnicas de redução na síntese lógica e lógica de alto nível; na seção 5 apresentamos o nosso método, ilustrando com um exemplo. Finalmente na seção 6 as nossas conclusões. 2. Estimação de potência Para o projetista de circuitos digitais de baixo consumo, o conhecimento da potencia consumida no circuito é um fator importante, porque define as características da bateria e principalmente define as técnicas de redução de potência que melhor se enquadram no problema, isto é, que obtêm um melhor desempenho. A seguir, apresentamos um estudo sobre as fontes de consumo de potência em circuitos digitais (Yeap, 1998). 2.1. Fontes de consumo Carga e descarga de capacitâncias é a fonte de dissipação de potência mais significativa na parte dinâmica do circuito. Algumas vezes capacitores são fabricados intencionalmente para se alcançar operações não digitais como um atraso (“delay”) no sinal ou compartilhar uma carga. No entanto, a maioria dos circuitos CMOS não necessita de capacitores. Nesses casos, a capacitância se forma devido a efeitos parasitas de interconexões de fios e transistores. Assim, a estimação e análise da capacitância parasita são importantes não só para se medir o atraso no sinal como também o consumo de potência. Correntes reversas são um fenômeno natural dos elementos compostos de semicondutores. Em circuitos com transistores MOS, há duas maiores fontes de corrente reversa: 1) junção PN reversamente polarizada e 2) corrente reversa associada a portadores minoritários gerados termicamente de um transistor que teoricamente estaria desligado. Em circuitos VLSI atuais, a potência consumida pelas correntes reversas ainda é uma fração pequena (aproximadamente 10%). A redução da mesma é alcançada normalmente por técnicas específicas e aumento da tecnologia (Devadas, 1995; Yeap, 1998). Corrente estática é uma corrente causada por um fluxo de corrente DC de Vdd para o terra quando o “pull-up” e “pull-down” estão ambos conduzindo e a saída da porta não é transitória. Via de regra os circuitos CMOS não tem corrente estática. Por isso, circuitos com potência dissipada devido a corrente estática devem ser detectados e prontamente descartados pois: i) quando presente, a corrente estática é a maior fonte de potência dissipada; ii) corrente estática está freqüentemente associado com funcionamento incorreto e/ou imprevisível do circuito. 2.2. Técnicas de estimação de potência Estimação de potência, por simulação e por probabilidade são as principais técnicas de estimação (Monteiro, 1996; Yeap,1998). 2.2.1. Estimação de potência por simulação As simulações podem ser usadas para estimar potência em vários níveis. Simuladores de circuito como SPICE tem uma precisão muito boa, mas não podem ser aplicados a uma análise de um chip completo. Simulações lógicas podem analisar o desempenho de um chip completo, mas não tem uma precisão muito boa e algumas vezes são muito lentos. Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008 , Logo, como nenhuma técnica de simulação é aplicável em todos os níveis, é usada uma metodologia para verificar e refinar o resultado. Por exemplo, um projetista pode começar com simulações no nível de hardware para obter um valor inicial de potência consumida. Em seguida, utiliza uma simulação no nível de porta lógica para refinar. Verifica que o resultado está insatisfatório, modifica o design e verifica novamente. SPICE opera resolvendo uma grande matriz de correntes nodais usando Leis de Kirchoff. Os componentes básicos do SPICE são elementos primitivos do circuito como resistores, capacitores, indutores, fontes de voltagem e corrente. Elementos mais complexos como diodos e transistores são construídos de elementos básicos. SPICE oferece vários modos de simulação, mas o mais útil para simulação de estimação de potência é a análise transiente. Essa análise envolve a parte DC do circuito no tempo zero e em seguida faz pequenos incrementos no tempo para simular o comportamento dinâmico do circuito. Os modelos usados no SPICE geralmente são derivados de processos de caracterização. Cada dispositivo é descrito por dúzias de parâmetros. Normalmente, os modelos são calibrados por medições físicas feitas do chip a ser medido. A maior vantagem do SPICE é sua precisão e versatilidade. Pode ser usada para estimar potência dinâmica, estática e a potência dissipada pela corrente reversa. Modelos de transistores diferentes existem e podem normalmente representar fenômenos de nível baixo. No entanto, exigem um grande recurso computacional, tornando-a ineficaz no nível de hardware. 2.2.1.1. Simulação no nível de porta lógica A ferramenta de simulação no nível de porta lógica mais popular é a simulação lógica dirigida a evento. Eventos são mudanças lógicas de zeros - uns de rede no circuito em um ponto de tempo particular. Quando uma troca é realizada na entrada de uma porta, ele pode disparar outro evento na saída da porta depois de certo tempo. A maioria dos simuladores voltados para portas lógicas também suporta outros estados lógicos como “desconhecido”, “don’t care” e “alta impedância”, para ajudar o projetista a simular o circuito de forma mais realista. Verilog e VHDL são duas linguagens populares para esse tipo de simulação. O princípio básico dessas ferramentas é realizar a simulação lógica para obter informação da atividade de trocas de zeros – uns. Em seguida, usa essa informação para obter informação de dissipação de potência no circuito. A maior vantagem é que a equação P=CV²f pode ser computada de forma precisa e rápida. Numa simulação nãológica como SPICE, a noção de freqüência de um nó não é bem definida, pois ela tem uma forma de onda analógica que é potencialmente não periódica e não digital. Em simulação lógica, a atividade de troca em cada nó pode ser monitorada e sua freqüência determinada. 2.2.2. Estimação de potência por análise probabilística Nesse caso, um sinal lógico é visto como um processo aleatório de valor zero ou um, como certa característica estatística. Nós não sabemos o momento exato em que ocorre uma transição. Ao invés disso, nós só encontramos e propagamos diversas características estatísticas do sinal, e dessas características estima-se a potência dissipada. Como um sinal lógico só consiste de uma forma de onda com voltagens zero ou um, a forma mais precisa descrever um sinal lógico é gravar todas as transições do sinal no tempo exato que ocorreram. Mas como para fins de cálculo apenas usa-se a freqüência do sinal, apenas registrando esse dado é possível estimar a potência dissipada. Essa é a grande diferença entre estimação por análise probabilística e por simulação. A grande vantagem dessa técnica é a eficiência computacional, já que o número de quantidades estatísticas a serem analisadas geralmente é de uma ordem menor que o número de eventos a serem simulados. A grande desvantagem é a baixa precisão em alguns casos. Estimação de potência por análise probabilística é uma ferramenta importantíssima atualmente para o design VLSI. Define-se freqüência f a metade do número de transições em um determinado período dividido por esse período. Quando o período não é especificado, define-se freqüência: lim T →∞ N (T ) 2T A probabilidade estatística p é a porcentagem do tempo que o sinal passa em alta (valor 1). Essa é uma característica fundamental. Para estimar a potência consumida, calcula-se as características {pn,fn} das n entradas, e então usando um modelo matemático, propagar as características estatísticas por todo o circuito. A potência dissipada é então estimada por essas características propagadas em cada “fan-out”. Para refletir o comportamento real do circuito, o modelo para ser usado na propagação deve ser desenvolvido cuidadosamente. Em circuitos lógicos simples, o modelo para propagação a ser empregado é bastante simples. Se a probabilidade de duas entradas de uma porta AND sejam p1 e p2, a probabilidade da saída é então p1 p2. A fórmula geral para uma álgebra booleana é fácil. Seja y=f(x1,...xn) , por Shannon, pode-se dizer que: Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008 , y = xi f xi + xi f x Logo i . P ( y ) = P ( xi ) P ( f xi ) + P ( xi ) P ( f x ) i Por exemplo, seja y=abc+c (ver Fig. 2), P(y)=P(a)P(b+c)+P( a )P(c)=P(a)P(b)+P(c)-P(a)P(b)P(c). Figura 2. Circuito lógico. 3. Redução de potência no nível físico No nível físico, duas importantes estratégias para a redução de potência, são: redução da tensão de alimentação e redução da capacitância. 3.1 Redução da tensão de alimentação A redução da escala de tensão é a maneira mais efetiva de redução de consumo, já que, conforme explicitado anteriormente, a potência dinâmica de um sistema é quadraticamente proporcional à voltagem fornecida pela fonte. Num circuito CMOS, reduzir a voltagem da fonte implica numa redução na velocidade do circuito. Infelizmente, tecnologia sub-microns como usados em sistemas VLSI atuais, são saturados na velocidade, o que faz com que abaixo de certas voltagens, o circuito apresente um atraso muito grande. A Fig. 3 mostra a relação tensão e atraso em um circuito CMOS[Yeap, 1998]. Conforme explicitado, a redução da voltagem para valores abaixo de 2 V provoca uma queda abrupta na velocidade. Além disso, o aumento da tensão da fonte para valores acima de 3V tem pouco impacto no desempenho. Figura 3. Redução de tensão: CMOS Logo, a abordagem lógica é a redução da voltagem para valores próximos a 3 V. Além disso, quando a redução no consumo de potência é a meta principal, é interessante reduzir a voltagem em determinadas regiões pagando o preço em velocidade. Assim, uma técnica utilizada é a de se alterar a arquitetura do circuito, fazendo com que tarefas sejam executadas paralelamente em voltagens menores. Logo a perda de velocidade é compensada pelo aumento de hardware. O ponto negativo é o aumento da área do circuito. 3.2. Redução da capacitância Foi visto anteriormente a dependência direta da potência dinâmica com a capacitância. A capacitância de uma porta de um CMOS consiste principalmente da capacitância das portas dos transistores (depende da tecnologia e da quantidade de portas), capacitância dos fios que conectam as portas e a capacitância parasita dos transistores. Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008 , Atualmente, na maioria dos circuitos, cerca de 50% da capacitância é devida as portas, 40% devida aos fios e 10% a capacitância parasita. Em circuitos de alta tecnologia, os fios estão sendo responsáveis pela maior parte da capacitância, pois em circuitos muito pequenos os fios ficam muito próximos um dos outros, gerando uma capacitância “cross-talk”. Assim, como a redução da capacitância não só reduz a potência consumida como aumenta a velocidade e reduz a área do circuito, essa parece ser uma alternativa atraente. No entanto, como a capacitância está ligada apenas à potência dinâmica, se houver pouca atividade, reduzir a capacitância irá reduzir muito pouco o consumo de potência. Além disso, circuitos com a mínima capacitância geralmente tem baixo consumo de potência, circuitos de mínimo gasto de potência não necessariamente têm a mínima capacitância (existem técnicas envolvendo um aumento pequeno da capacitância aliado á circuitos redundantes para redução do consumo de potência). 4. Redução de potência na síntese lógica 4.1 Chaveamento de relógio Chaveamento de relógio (“clock gating”) é uma técnica para que o circuito desative o clock de porções do mesmo que não estão sendo utilizados para determinada tarefa. É o método muito usado para redução de em sinais com clock. Uma máquina de estados finitos com chaveamento de clock é adquirida modificando a estrutura conforme a Fig. 4a. Define-se um novo sinal chamado função de ativação (fa) cujo objetivo é parar seletivamente o clock local na máquina de estados finita, quando a máquina em questão não estiver sendo usada. A estrutura modificada está sendo mostrada na Fig. 4b. O bloco “L” representa um Latch, transparente quando o clock global está baixo. Perceba que a presença do latch é necessária para um comportamento apropriado, pois a função de ativação pode ter glitches que não podem ser propagados para a porta AND quando o clock global estiver em alta. Também perceba que o atraso devido à computação lógica da função de ativação em uma parte crítica do circuito existente, e seu efeito deve ser computado durante a verificação do tempo. Figura 4. a) Clock único, máquina de estados finito baseada em flip-flop; b)Versão gated-clock do mesmo circuito. O funcionamento do circuito é ilustrado nas Fig. 5a,b. Assumindo que a função de ativação fa se torna válido antes da subida do clock global, com o sinal fa em baixa e o latch transparente. Se o sinal fa se torna alto, a próxima elevação do clock global não vai passar pela porta AND e máquina de estados finita não vai ser ativada. Observar que quando o clock global estiver em alta, o latch não vai ser transparente. Figura 5. Diagrama temporização: a) uma simples porta AND usada b) um Latch e uma parte AND sendo usadas Pode-se observar que nesse caso, só há variação na saída se o sinal de Enable estiver em alta. As Fig. 6 e 7 mostram respectivamente o circuito lógico e a sua simulação. Figura 6. Circuito lógico. Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008 , Figura 7. Simulação: diagrama de temporização. 4.2. Mapeamento Tecnológico Mapeamento tecnológico envolve um mapeamento de um bloco lógico usando células de uma determinada biblioteca. Para redução de consumo, é necessário observar: - Nós internos de células de bibliotecas normalmente tem menor capacitância que os nós externos - O tamanho da porta tem um grande impacto na potência consumida - A menor potência encontrada por mapeamento nem sempre coincide com o menor delay ou área 4.3. Transformações Algébricas Essa técnica consiste em usar propriedades algébricas para encontrar um circuito com um consumo de potência menor com a mesma implementação de um dado circuito. As propriedades mais populares usadas para redução de potência são as de comutativa, associativa e distributiva. Um ponto a se notar é que no nível de porta lógica, muitas operações algébricas como AND, OR, NAND e XOR, são comutativas, ou seja, suas entradas podem ser trocadas sem afetar sua funcionalidade. Baseando-se então na capacitância e na taxa de chaveamento dos sinais externos, as entradas das portas podem ser trocadas, de forma a conectar a porta de menor capacitância com a rede de maior taxa de chaveamento, reduzindo assim a taxa de consumo. As propriedades associativa e distributiva de operadores no nível de porta lógica como AND, OR e XOR, e também operadores a nível RT (register transfer), como somadores e multiplicadores são usadas em uma transformação para redução de potência chamada de decomposição (Monteiro, 1996). A Fig. 8 ilustra o exemplo e a Fig. 9 a sua simulação. Figura 8. Circuito lógico. Figura 9. Simulação: diagrama de temporização. Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008 , Nesse caso, vê-se que a entrada de maior atividade afeta mais o circuito (a) do que o (b), tanto diretamente (sendo entrada das portas na esquerda) como indiretamente (como se pode observar pelas saídas auxiliares). 4.4. Assinalamento de estados Sabe-se que a especificação de comportamento de uma máquina de estados finitos é visto de forma típica num gráfico de transições de estados. O projetista do circuito tem liberdade de decidir o número de variáveis de estado e a codificação de cada estado. Essa liberdade pode ser usada de forma a aperfeiçoar sua implementação, de forma similar à técnica de manipulação algébrica. A dissipação de potência das linhas de estado e dos flip-flops podem ser modelados numa formulação matemática simples. Intuitivamente pensa-se é que a potência pode ser minimizada quando a freqüência de transições na linha de estados for reduzida. Isso pode ser atingido selecionando códigos de estados que minimizam o número de diferença de bits entre estados que tem maior probabilidade de sofrerem transições. Em outras palavras, quando uma transição entre dois estados for provável, tentaremos escolher códigos similares para os dois estados. No entanto, apenas reduzir a freqüência de transições na linha de estados em uma máquina de estados finitos não garante redução na potência total dissipada, pois à parte computada na parte combinatória não foi contabilizada. Por isso, o algoritmo deve contabilizar a lógica combinatória. Inicialmente, deve-se calcular a probabilidade de transição de estados, que é o limite do valor da atividade de transição média quando o tempo de observação tende ao infinito. Lembrando-se que a probabilidade de transição é fortemente dependente do estado inicial, a distribuição de probabilidade pode ser computada simulando a MEF em um contexto (isso pode ser feito modelando matemática a máquina de estados finito em uma cadeia de Markov). Após computador as probabilidades, as transformações a serem feitas podem ser relacionadas: • Eliminar todos estados inalcançáveis, se houver. • Calcular as probabilidades. • Remover todos os “self-loops” usando um peso representando sua probabilidade de transação total • Juntar todos as múltiplas mudanças entre dois estados (nos dois sentidos) em uma única mudança com um peso igual à soma de todas as probabilidades das múltiplas mudanças. Após realizarmos isso, pode-se pensar em como escolher o código de cada estado. A idéia principal é reduzir o número de mudança de variáveis de estado quando a MEF transita entre dois estados adjacentes. Idealmente, a cada transição só se mudaria uma variável de estado. 4.5. Flip-flops ativados em margem dupla Essa técnica consiste em utilizar flip-flops que são ativados tanto na subida quanto na descida do clock. Logo, para um mesmo processamento, esse circuito precisaria da metade do clock. No entanto, sua aplicabilidade em circuitos de baixa potência atualmente é difícil, pois essa técnica aumenta em muito a complexidade do circuito, o que indica maior consumo de potência, o que ás vezes é maior do que a economia devido à redução de clock. Assim, os estudos atuais nessa área estão no sentido de se tentar propor flip-flops ativados em margem dupla mais simples. A Fig. 10 mostra flip-flops com diferentes ativações. (a) (b) Figura 10. Exemplos de flip-flops possíveis. 5. Redução de potência na síntese de alto nível 5.1 Retiming Retiming é uma transformação que tem grande potencial para otimização de circuitos seqüenciais. Consiste basicamente em mover dispositivos de armazenamento entre nós para melhorar a desempenho sem mudar o Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008 , comportamento da entrada-saída, sem afetar a parte combinatória do circuito. A nível RTL esses dispositivos podem ser latchs ou flip-flops. Além de poder reduzir o consumo de potência, essa técnica pode ser aplicada para diversas outras funções como reduzir o clock e reduzir a área total do circuito. Retiming pode reduzir a potência dissipada num circuito, pois como registradores podem filtrar glitches, re-alocar registradores irá afetar o número de transições das saídas. Além disso, realocar registradores também pode reduzir a capacitância vista pelas portas. Uma técnica para reduzir o consumo de potência é procurar os nós que, ao terem um flip-flop inserido em sua saída, têm sua atividade de transição reduzida. Os nós são escolhidos baseados na quantidade de glitches presentes em sua saída e na probabilidade dos glitches se propagarem em seus fan-outs. 5.2. Pré Computação Pré-computação é uma técnica que consiste basicamente em “desligar” módulos inteiros do circuito quando não usados. O primeiro passo para a otimização é a síntese de uma lógica de pré-computação, que computa os valores das saídas para um conjunto de condições de entrada. Se os valores das saídas podem ser pré-computados, o circuito lógico original pode ser “desligado” no próximo ciclo e não vai ter nenhuma atividade. Como a economia de energia do circuito “desligado” pode ser até mesmo superada pela energia consumida na pré-computação, a seleção de um bom conjunto de condições de entrada para o qual os valores da saída são computados é essencial. Além disso, a précomputação aumenta a área total do circuito e pode aumentar até mesmo o clock. As Fig. 11 e 12 mostram respectivamente um exemplo e a sua simulação. Pode-se observar pelas saídas auxiliares que essa técnica reduz drasticamente o número de transições (nesse caso, 6 entradas só se propagariam caso as 2 primeiras fossem iguais). Figura 11. Circuito lógico. Figura 12. Simulação: diagrama de temporização. 6. Máquinas de estado finito síncronas baseadas em latches Os controladores síncronos na maioria dos casos são descritos por uma máquina de estado finito síncrona (MEFS). Elas são implementadas por exemplo, na arquitetura baseada em flip-flops e lógica combinatória. Flip-Flops são elementos de memória que possuem dois termos de temporização significativos no calculo de desempenho do controlador, que são: tempo de setup e tempo de propagação [Unger, 1986]. Os esquemas de flip-flops mostram que o sinal de relógio atua em diversos transistores gerando um alto consumo de energia [Strollo,1999; Zhao, 2007]. Projeto de controladores síncronos de alto desempenho tem problemas sérios no tratamento do sinal de relógio, por exemplo: skew clock [Mayers, 2001]. Controladores síncronos de alto desempenho muitas das vezes são implementados em arquiteturas baseadas em latches sincronizados e lógica combinatória, que elimina o problema de “skew clock”. Estes controladores operam com sinais de relógio com múltiplas fases, não simétricos e não sobrepondo a parte alta [Bartllet, Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008 , 1991; Champernowne, 1990]. Outra estratégia para síntese de controladores síncronos é através do paradigma assíncrono [Mayers, 2001]. Este paradigma parte de especificações baseadas em fluxo de dados que não é familiar aos projetistas do mundo síncrono [Mayers, 2001]: Tabela de fluxo de estados primitiva, Grafo modo rajada (Burst-Mode Specification) e Grafo de transição de sinais (Signal Transition Graph). Nesta seção apresentamos o nosso método de síntese de controladores síncronos que permite implementar MEFS com somente latches sincronizados, usando sinal de relógio de uma única fase. Esta implementação é obtida no paradigma assíncrono mas parte de uma especificação familiar aos projetistas do mundo síncrono. 6.1. Especificação: Grafo de transição de estados (GTE) A especificação GTE é uma forma formal e popular de descrever MEFS, onde os vértices representam estados e as arestas representam transições de estado. Os sinais de entrada são rotulados nas transições de estado como sinais de nível. Os sinais de saída são de nível, seja rotulado na transição (modelo Mealy) ou seja no estado (modelo Moore). O GTE não possui nenhuma restrição alem de ter um número finito de estados e transições de estado. O nosso método aceita GTE que satisfaz o lemma 6.1. Lemma 6.1 (sem prova). Seja G um GTE, onde {A1, A2,...,AN} é o conjunto de vértices (estados) de G e {E1,E2,..,EM} é o conjunto de arestas (transições de estados) rotuladas de G. Cada aresta Ei ∈ G é rotulada com o vetor de sinais de entrada Wi. Seja um vértice Ai ∈ G e as arestas Ej, Ek ∈ G tal que Ej incide em Ai e Ek emerge de Ai. Se 1) ∀ Ei ∈ G temos que em Ei há o rotulo Wi e 2) Wj∩Wk=∅ então a especificação GTE pode ser implementada na arquitetura Latch sincronizado standard. Para ilustrar o lemma 6.1, as Fig. 13a,b mostram respectivamente a especificação GTE e a tabela de transição de estados no modelo Moore. Os vetores dos sinais de entrada nas transições de estado AÆB e BÆC são WAB[ab=00] e WBC[ab=00]. Como WAB∩WBC≠∅, portanto o GTE não satisfaz o lemma 6.1. A Fig. 14 mostra o GTE que satisfaz o lemma 6.1 Figura 13. Especificação com lemma 6.1 não satisfeito: a) GTE; b) Tabela de transição de estados. Figura 14. Especificação GTE: lemma 6.1 satisfeito. 6.2. Método de síntese O nosso método segue o procedimento clássico da síntese das máquinas de estado finito assíncronas (máquinas de Huffman) (MacCluskey, 1986; Nowick, 1993). Ele é composto de 4 passos: 1. Se a especificação GTE satisfaz o lemma 6.1, ir para o passo 2, caso contrário pare. 2. Realizar a minimização de estados, onde um par de estados pode ser fundido se o estado final satisfaz o lemma 6.1 (MacCluskey, 1986; Katz, 2003). 3. Realizar a codificação livre de corrida critica para a MEFS minimizada (Nowick, 1993). 4. Obter as equações de excitação livre de risco lógico e as equações de saída na arquitetura alvo (Nowick, 1993). Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008 , 6.3. Exemplo A Fig. 14 é uma especificação GTE modelo Moore, que será usada para ilustrarmos o nosso método. Esta especificação satisfaz o lemma 6.1 e está minimizada (passos 1 e 2). As Fig. 15a e 15b mostram respectivamente as Tabelas de Transição de Estados, a não codificada e a codificada livre de corrida crítica (passo 3). As Fig. 16a e 16b mostram os mapas de Karnaugh para as equações de excitação livre de risco lógico para D1 e D2. As Fig. 17a e 17b mostram os mapas de Karnaugh para as equações de saída Z1 e Z2 (passo 4). A Fig. 18 mostra o circuito lógico na arquitetura latch sincronizado. Estados ac 00 01 11 10 A B A A D Q1 Q2 ac 00 00 01 01 11 10 00 10 00 B B C C B 01 01 11 11 01 C C C C D 11 11 11 11 10 D C C A D 10 11 11 00 10 (a) (b) Figura 15. Tabela de transição de estados: a) não codificada; b) codificada livre de corrida. Q1 Q2 ac ac 00 01 11 10 00 01 11 10 00 0 0 0 1 00 1 0 0 0 01 0 1 1 0 01 1 1 1 1 11 1 1 1 1 11 1 1 1 0 10 1 1 0 1 10 1 1 0 0 Q1 Q2 (a) (b) Figura 16. Mapas de Karnaugh: a) Lógica de excitação D1; b) lógica de excitação D2. (a) Figura 17. Mapas de Karnaugh: a) Lógica de saída Z1; b) lógica de saída Z2. (b) a c Z2 D1 Q 1 Latc h Q1 C LK D 2 Q2 Latc h C LK Q2 Z1 C LK Figura 18. Circuito lógico. 7. Conclusões Neste artigo apresentamos os conceitos de estimação de potência, como também diferentes técnicas de redução de potência dissipada para circuitos digitais usando a tecnologia CMOS. Neste artigo também apresentamos um método para síntese de controladores síncronos, que parte de uma especificação GTE baseada em fluxo de estados. A Anais do XIV ENCITA 2008, ITA, Outubro, 20-23, 2008 , arquitetura alvo do nosso método usa latches sincronizados como elementos de memória. O uso de latches permite reduzir área, potência dissipada e tempo de ciclo dos controladores síncronos. 8. Agradecimentos Agradecemos ao CNPq pelo apoio financeiro (bolsa PIBIC) e Leonardo Romano pelas discussões proveitosas sobre estimação de consumo de potência. 9. Referências Devadas, S.and Malik, S., 1995, “A Survey of Optimization Techniques Targeting Low Power VLSI Circuits,” Proc. 32nd ACM/IEEE DAC, pp.242-247. Weng, Li-Chuan, Wang, X. J. and Liu, B., 2003, “A Survey of Dynamic Power Optimization Techniques”, Proc. Of the 3rd IEEE Int. Workshop on System-on-Chip for Real-Time Applications, pp. 48-52. Najm, F., 1994, “A Survey of Power Estimation Techniques in VLSI Circuits,” IEEE Trans. On VLSI Systems, vol. 2, no. 4, December, pp.446-455. Benini, L. and Micheli, De G., 1996, “Automatic Synthesis of Low-Power Gated-Clock Finite-State Machines”, IEEE Trans. on CAD of Integrated Circuits and Systems, Vol.15, No.6, June, pp.630-643. Benini, L. 1997, “In Automatic Synthesis of Sequential Circuits for Lower Power Dissipation,” PhD Thesis, Stanford University. Strollo, G. M. et al., 1999, “Power Dissipation in One-Latch and Two-Latch Double Edge Triggered Flip-Flops,” Proc. 6th IEEE Int. Conf. on Electronic, Circuits and Systems, pp.1419-1422. Zhao, P., McNeely, J., et al., 2007, “Low-Power Clock Branch Sharing Double-Edge Triggered Flip-Flops” IEEE Trans. On VLSI Systems, vol. 15, no.3, March, pp.338-345. Wu, Q., Pedram, M. and Wu, X., 2001, “Clock-Gating and Its Application to Low Power Design of Sequential Circuits”, IEEE Trans. On Circuits and Systems-I: Fundamental Theory and Applications, vol. 47, no.103, March, pp.415-420. Baccheletta, P., et al., 2000, “Low-Power State assignment Techniques for Finite State Machines”, IEEE Int. Symposium on Circuits and systems, Geneva, Switzeriand, May, pp.641-644. Iman, S. and Pedram, M., 1995, “Two-level Logic Minimization for Low Power,” IEEE/ACM Conf. Int. on CAD Digest of Technical Papers, pp.433-438. Nowick, S. M., 1993, “Automatic Synthesis of Burst-Mode Asynchronous Controllers,” PhD thesis, Stanford University. Monteiro, J., 1996, “In A Computer-Aided Design Methodology for Low Power Sequential Logic Circuits,” PhD Thesis MIT. Monteiro, J. and Oliveira, A. L., 2002, “Implicit FSM Decomposition Applied to Low-Power Design”, IEEE Trans. on VLSI Systems, Vol. 10, No. 5, October, pp.560-565. Yeap, G., 1998, “In Practical Low Power Digital VLSI Design,” Ed. Kluwer Academic Pub. Maheshwari, N., 1998, “In Fast algorithms for retiming large digital circuits,” PhD Thesis, Iowa State University. Tseng, J.-Mou and J.-Yang Jou, J.-Yang, 1997, “A Power-Driven Two-Level Logic Optimizer. Proc. Of the ASP-DAC, pp.113-116. MacCluskey, E. J., 1986, “Logic Design Principles With Emphasis on Testable Semicustom Circuits,” Prentice-Hall. Katz, R. H., 2003, “Contemporary Logic Design,” The Benjamin/ Cummings Publishing Company, Inc., 2a edition. Champernowne, A. F. et al., 1990, “ Latch-to-Latch Timing Rules,” IEEE Trans. on Computers, vol.19, no.6, June, pp.798-808. Unger, S., 1986, “Clocking Schemas for High-Speed Digital Systems,” IEEE Trans. on Computers, vol. c-35, no. 10, October, pp.880-895. Bartlett, K. and Borriello, G., 1991, “ Timing Optimization of Multiphase Sequential Logic,” IEEE Trans. on CAD, vol.10, no. 1 January, pp.51-62. Mayers, C. J., 2001, “Asynchronous Circuit Design,” Wiley & Sons, Inc.