Circuitos Multiplicadores Array de Baixo...

47
UNIVERSIDADE CATÓLICA DE PELOTAS ESCOLA DE INFORMÁTICA PROGRAMA DE PÓS-GRADUACÃO EM INFORMÁTICA Circuitos Multiplicadores Array de Baixo Consumo por Leandro Zafalon Pieper Trabalho Individual I TI-2007-1-01 Orientador: Prof. Dr. Eduardo Antônio César da Costa Co-orientador: Prof. Dr. Sérgio José Melo de Almeida Pelotas, julho de 2007

Transcript of Circuitos Multiplicadores Array de Baixo...

UNIVERSIDADE CATÓLICA DE PELOTASESCOLA DE INFORMÁTICA

PROGRAMA DE PÓS-GRADUACÃO EM INFORMÁTICA

Circuitos Multiplicadores Array de Baixo Consumo

porLeandro Zafalon Pieper

Trabalho Individual ITI-2007-1-01

Orientador: Prof. Dr. Eduardo Antônio César da CostaCo-orientador: Prof. Dr. Sérgio José Melo de Almeida

Pelotas, julho de 2007

2

AGRADECIMENTOS

Presto meus agradecimentos a todos que de alguma forma contribuíram de forma

direta ou indireta para a conclusão deste trabalho.

Aos meus colegas de laboratório, meu sincero obrigado, por sua companhia e

auxílio.

Agradeço também a minha mãe e a minha namorada pelo incentivo dado.

Um especial agradecimento aos meus professores, orientador Eduardo Antônio

César da Costa e co-orientador Prof. Sérgio José Melo, pelo incentivo e ajuda. Saibam

todos que vossa amizade, apoio e companheirismo foram fundamentais para o

desenvolvimento deste trabalho.

3

SUMÁRIO

LISTA DE FIGURAS.......................................................................................................... 5

LISTA DE TABELAS......................................................................................................... 6

LISTA DE ABREVIATURAS E SIGLAS ........................................................................ 7

RESUMO.............................................................................................................................. 8

ABSTRACT ......................................................................................................................... 9

1 INTRODUÇÃO ........................................................................................................... 10

1.1 Motivação .................................................................................................................. 111.2 Objetivos.................................................................................................................... 111.3 Metodologia............................................................................................................... 12

2 POTÊNCIA E ATRASO EM CIRCUITOS CMOS................................................. 13

2.1 Fontes de Consumo de Potência em Circuitos CMOS .......................................... 142.1.1 Consumo de Potência de Curto-Circuito ................................................................. 152.1.2 Consumo de Potência Estática................................................................................. 152.1.3 Consumo de Potência Dinâmica.............................................................................. 162.1.4 Consumo de Potência pela Atividade de Glitching................................................. 172.2 Análises de Atraso em Circuitos CMOS................................................................. 182.2.1 Análise Estática de Atraso....................................................................................... 182.2.2 Análise de Folga Temporal...................................................................................... 192.2.3 Análise Dinâmica do Atraso.................................................................................... 19

3 ARQUITETURAS DEDICADAS DE CIRCUITOS MULTIPLICADORES DE BAIXO CONSUMO .......................................................................................................... 20

3.1 Estado da Arte de Circuitos Multiplicadores......................................................... 203.2 Multiplicador Array Binário ................................................................................... 233.2.1 Operação de Multiplicação na Base 2m em Complemento de 2............................. 243.2.2 Multiplicador Array Binário Usando CSA e Pipeline ............................................. 263.3 Multiplicador Híbrido.............................................................................................. 313.3.1 Codificação de Operandos....................................................................................... 313.3.2 Código Híbrido........................................................................................................ 323.3.3 Multiplicação Híbrida em Complemento de 2 ........................................................ 343.3.4 Multiplicador Array Híbrido usando CSA e Pipeline ............................................. 35

4 RESULTADOS OBTIDOS......................................................................................... 37

4.1 Resultados de Área ................................................................................................... 374.2 Atraso......................................................................................................................... 38

4

4.3 Resultados de Potência............................................................................................. 40

5 CONCLUSÕES............................................................................................................ 42

REFERÊNCIAS ............................................................................................................... 43

5

LISTA DE FIGURAS

Figura 1 Metodologia para estimativa de área, atraso e potência dos circuitos............... 13Figura 2 Esquema de contribuição de glitches para dissipação de potência.................... 18Figura 3 Multiplicador Array Binário de 4 bits ............................................................... 23Figura 4 Exemplo de multiplicação de 4 bits base-4(m=2) em complemento de 2. ....... 25Figura 5 Estrutura geral para multiplicação na base 2m em compl. de 2 ......................... 25Figura 6 Ex. de multiplicador array base 4 de 8 bits em compl. de 2.............................. 26Figura 7 Ex. de um somador Carry Save ......................................................................... 27Figura 8 Ex. de soma de números de 4 bits usando a estrutura Carry Save .................... 27Figura 9 Ex. de multiplicação de 6 bits em compl. de 2 usando CSA............................. 28Figura 10 Ex. de multiplicador array de 8 bits em compl. de 2 base-4 usando CSA ........ 29Figura 11 Ex. de multiplicador array de 8 bits na base 4 em compl. de 2 com pipeline ... 30Figura 12 Conversão entre os códigos Binário e Híbrido................................................. 34Figura 13 Ex. de uma mult. de 4 bits na base 4 (m=2) em compl. de 2 com cód. Híbrido 35Figura 14 Ex. de multiplicação híbrida de 6 bits em compl. de 2 usando CSA ................ 35Figura 15 Ex. de multiplicador Híbrido de 8 bits na base 4 em compl. de 2 usando CSA 36

6

LISTA DE TABELAS

Tabela 1 Representação dos códigos Binário, Híbrido (m=2) e Gray em compl. de 2 .... 33Tabela 2 Número de transições para os códigos Binário, Híbrido (m=2) e Gray ............ 33Tabela 3 Valores de área para os multiplicadores (elementos lógicos)............................ 38Tabela 4 Valores de atrasos para os multiplicadores........................................................ 39Tabela 5 Valores de consumo de potência utilizando vetores senoidais (Dinâmico) ...... 40Tabela 6 Valores de consumo de potência utilizando vetores randômicos (Dinâmico)... 40

7

LISTA DE ABREVIATURAS E SIGLAS

ASICs Circuito de Aplicação EspecíficaCMOS Complementary Metal Oxide SemiconductorCSA Carry Save AdderDSP Digital Signal ProcessingFPGA Field Programmable Gate ArrayMAC Multiplicador Somador AcumuladorNMOS Negative Channel Metal Oxide SemiconductorPMOS Positive Channel Metal Oxide SemiconductorRCA Ripple Carry AdderVHDL VHSIC Hardware Description LanguageVHSIC Very High Speed Integrated CircuitsVLSI Very Large Scale Integration

8

Resumo

O objetivo principal deste trabalho é a implementação e análise de novas

arquiteturas de circuitos multiplicadores array digitais recentemente apresentados no meio

cientifico com diferentes técnicas de redução de potência, tais como a utilização de

eficientes estruturas de circuitos somadores, a técnica de codificação de operandos e a

técnica de redução do caminho crítico usando pipeline. A proposta de novas arquiteturas

consiste em operações de multiplicação em complemento de 2 e que mantenham a mesma

regularidade de um multiplicador array convencional. As arquiteturas podem operar com

números na base 2m, onde m representa o grupo de bits de multiplicação. Em um

multiplicador array convencional, onde a operação de multiplicação é realizada bit a bit, o

valor de m é igual a 1 (operação na base 2). Neste trabalho, são apresentadas novas

arquiteturas de multiplicadores que operam na base 4 (m=2) e na base 16 (m=4), o que

permite a redução do número de linhas de produtos parciais, com impactos diretos no

aumento de desempenho e redução do consumo de potência. A implementação dos

diferentes circuitos multiplicadores foi realizada em FPGA, onde circuitos multiplicadores

de 16 bits são comparados em termos de parâmetros de área, atraso e consumo de potência.

As diferentes arquiteturas de circuitos multiplicadores exploradas neste trabalho visam as

suas aplicações em circuitos dedicados para implementação de algoritmos adaptativos

usados na filtragem digital de sinais. Como parte integrante deste trabalho, apresenta-se

uma revisão bibliográfica sobre o estado da arte de técnicas de redução de consumo de

potência em diferentes topologias de circuitos multiplicadores.

Palavras-Chave: multiplicadores array, FPGA, codificação de operandos, baixa potência

9

Title: “Low-Power Array Multipliers Circuits”

Abstract

The main goal of this work is the implementation and analyzes of new array

multiplier architectures. These new architectures were recently presented in the scientific

community by including different power reduction techniques, such as the use of efficient

adder circuits, operand encoding and critical path reduction by using pipelining approach.

The new multipliers operate in 2´s complement and keep the same regularity presented by a

conventional array multiplier. The architectures operate in the radix 2m, where m represents

the group of bits multiplied at a time. In a conventional array multiplier, where the

multiplication is performed bit by bit, m assumes value equal 1 (radix 2 operation). In this

work, the new multiplier architectures operate in the radix-4 (m=2) and radix-16 (m=4),

leading to a reduction in the number of partial product lines, enabling higher performance

and power reduction in the multipliers. Area, delay and power consumption results are

presented for the multipliers using Quartus II FPGA Synthesis tool. In this work we intend

to apply the dedicated multiplier architectures in the implementation of adaptive algorithms

for digital signal filtering. As part of this work, it is presented a related work emphasizing

the state of the art of the main low power techniques applied to different types of multiplier

circuits.

Keywords: array multipliers, FPGA, operand encoding, low power

10

1. Introdução

A rápida e crescente inovação em dispositivos VLSI (Very Large Scale Integration)

impulsiona a utilização das tecnologias de fabricação aos seus limites, dentre as quais a

verificação da dissipação de potência é um dos problemas de maior preocupação.

Equipamentos portáteis, como notebooks, telefones celulares, handhelds, aparelhos

biomédicos portáteis, entre outros, necessitam de um alto desempenho e baixo consumo de

potência. Neste contexto, aspectos de baixa dissipação de potência, exigem a pesquisa de

novas arquiteturas confiáveis que possam ser testadas e fabricadas e que levem em

consideração as necessidades de sistemas eletrônicos portáteis e de funções diversas

(COSTA, 2002). Na verdade, a ênfase crescente no projeto de circuitos integrados de baixa

potência em sistemas de alto desempenho que levem em consideração aspectos como

densidade de integração, velocidade de operação e freqüência de relógio.

Este trabalho consiste na implementação de novas arquiteturas de circuitos

multiplicadores com diferentes grupos de bits utilizando eficientes estruturas de circuitos

somadores e a técnica de redução do caminho crítico usando pipeline. As novas arquiteturas

de circuitos multiplicadores foram implementadas em FPGA (Field Programmable Gate

Array) e apresentam como principal características a regularidade e redução de caminhos

críticos e transições espúrias que são propagadas ao longo do array, tornando possível a

redução do consumo de potência nas arquiteturas de multiplicadores.

As novas arquiteturas de circuitos multiplicadores propostas serão testadas em

estruturas dedicadas de filtragem adaptativa (HAYKIN, 2002). A técnica de filtragem

adaptativa é aplicada atualmente em um grande número de problemas de engenharia. Por

exemplo, esta técnica tem sido explorada com sucesso em diversos sistemas de

comunicação, tais como adaptação de antenas, equalizadores de canais para transmissão de

dados, cancelamento de eco em telefonia de longa distância, cancelamento de interferência,

estimação espectral, análise e síntese de voz e, dentre as aplicações mais recentes, no

cancelamento de eco acústico. Nestas mais diversas aplicações, a redução do consumo de

potência é um fator importante a ser explorado. Desta forma, neste trabalho uma das

maneiras de exploração da redução do consumo de potência em filtragem adaptativa é a

11

aplicação de novas arquiteturas de circuitos multiplicadores que possam atuar de forma

eficiente neste processo de filtragem.

1.1 Motivação

Na área de Processamento Digital de Sinais (Digital Signal Processing-DSP) os

circuitos que implementam os diversos algoritmos, incluem um elevado número de

operadores aritméticos. Dentre estes operadores, os circuitos multiplicadores são

responsáveis por uma parte significativa do consumo de potência global no processamento

dos sinais digitais. Desta forma, a proposta de novas arquiteturas de circuitos

multiplicadores de alto desempenho e baixo consumo contribui para o projeto de circuitos

mais eficientes nestas áreas de aplicação.

Diante do quadro exposto, surge a motivação em analisar em diferentes níveis de

abstração os circuitos multiplicadores apresentados em (COSTA, 2002) com diferentes

técnicas de redução do consumo de potência, como a utilização de eficientes estruturas de

circuitos somadores e a técnica de redução do caminho crítico usando pipeline.

Neste trabalho os diferentes circuitos multiplicadores são testados e validados nos

níveis FPGA (PHILLIPS, 1996), a partir das ferramentas Quartus II da Altera (ALTERA,

2007).

1.2 Objetivos

O principal objetivo deste trabalho é implementar e analisar o desempenho de

diferentes arquiteturas de multiplicadores digitais de 16 bits presentes na literatura. São

investigados 2 diferentes tipos de multiplicadores paralelos, sendo estes chamados array

Binário e array Híbrido (COSTA,2002). O uso de somadores eficientes do tipo Ripple

Carry (RCA) (HARTLEY, 1995) e Carry Save (CSA) (KIM, 1998) nas linhas de produtos

parciais e usando a técnica pipeline para aumento de desempenho dos multiplicadores

também é alvo deste trabalho.

A análise comparativa dos resultados foi efetuada considerando as métricas de área,

atraso e consumo de potência para multiplicadores com diferentes grupos de bits (m = 2 –

multiplicação na base 4 e m = 4 – multiplicação na base 16).

12

As arquiteturas destes operadores aritméticos estão apresentadas em (COSTA,

2002) e são exploradas neste trabalho, assim como novas arquiteturas são analisadas.

Neste trabalho é explorado o aspecto da regularidade apresentado pelas novas

arquiteturas de multiplicadores array. Nesta proposta trabalho este aspecto é levado em

consideração a partir da implementação destas arquiteturas no nível FPGA onde os

resultados são obtidos para um determinado componente da família Stratix da fabricante

Altera, através da ferramenta Quartus II. Uma pesquisa bibliográfica foi realizada nos

multiplicadores do estado da arte onde são analisadas as topologias utilizadas nestes

circuitos para aumento de desempenho, assim como as técnicas para reduzir o consumo de

potência.

1.3. Metodologia

Para cada uma das fontes de consumo de potência de um circuito integrado, existem

várias técnicas visando a sua estimativa de modo eficiente considerando os diversos fatores

que definem os seus modelos. No presente trabalho, o enfoque é o consumo de potência

dinâmica, pois este representa a maior parcela de consumo de potência de um circuito

integrado (WEST, 1994).

O procedimento completo de um projeto que envolve a análise de potência de um

circuito consiste inicialmente em estabelecer um nível de descrição da arquitetura do

circuito a ser analisada. Esta descrição fornece para a ferramenta de análise de potência

uma lista de todos os diferentes módulos que têm de ser analisados bem como suas

complexidades. O diagrama da metodologia utilizada neste trabalho é mostrado na Figura

1.

A descrição dos circuitos é realizada no formato VHDL (VHSIC – Very High Speed

Integrated Circuits – Hardware Description Language) (RUSHTON, 1998). Com este

formato é realizada a síntese e simulação dos circuitos por intermédio do programa Quartus

II que utiliza componentes FPGA da fabricante Altera. Os resultados de área, atraso e

potência são obtidos no próprio ambiente para o componente FPGA EP1S10B67C6 da

família Stratix.

13

Figura 1 – Metodologia para estimativa de área, atraso e potência dos circuitos

Com esta metodologia, pode-se comparar os resultados obtidos no nível lógico em

(COSTA, 2002) com os resultados obtidos no nível FPGA. Para tal, utiliza-se o mesmo

conjunto de vetores de entrada dos multiplicadores para se ter uma comparação justa entre

os resultados de consumo de potência obtidos. Neste trabalho foram utilizados 100 vetores

senoidais e aleatórios. A principal característica explorada nos vetores senoidais é o

impacto da correlação dos dados no consumo de potência. Também se explora a

característica de aleatoriedade dos sinais no consumo de potência.

2. Potência e Atraso em Circuitos CMOS

Neste capítulo serão abordados os aspectos de consumo de potência e atraso de

propagação em circuitos CMOS (Complementary Metal Oxide Semiconductor). Serão

apresentados alguns conceitos que envolvem as principais fontes de consumo de potência e

atraso em circuitos CMOS (OLIVEIRA, 2005).

O custo de produtos eletrônicos para o consumidor associados com o encapsulamento

e resfriamento dos chips impõem limitações severas à dissipação média de potência.

Aquecimento e temperatura estão diretamente relacionados com a potência média (NAJM,

1994). De fato, um outro fator de interesse do projetista de circuitos integrados além da

dissipação de potência são problemas de temperatura dos dispositivos. Com a redução do

14

tamanho dos dispositivos, a densidade dos transistores tende a aumentar, gerando o

aumento do número de componentes dissipando potência por unidade de área. Além disso,

a redução do tamanho provoca a redução do atraso de propagação, permitindo a operação

dos circuitos em freqüências mais altas, o que por sua vez leva a um aumento do consumo

de potência.

Inicialmente serão apresentados alguns conceitos que envolvem as principais fontes

de consumo de potência em circuitos CMOS. Também serão abordados os principais

aspectos que envolvem a análise de atraso de propagação de circuitos.

2.1. Fontes de Consumo de Potência em Circuitos CMOS

Existem três componentes que estabelecem a quantidade de potência dissipada em

circuitos CMOS (WEST, 1994):

• dissipação estática de potência devido à corrente de fuga ou outras correntes

que fluem continuamente pela fonte de potência do circuito;

• o consumo de potência de curto-circuito, que ocorre devido à corrente direta

da fonte de alimentação para o terra durante o processo de comutação de uma

porta lógica;

• dissipação dinâmica de potência devido à corrente de comutação durante a

carga e descarga das capacitâncias de saída.

Considerando as componentes acima, pode-se então especificar, de acordo com a

Equação (1), o consumo de potência total em circuitos CMOS:

dinstaticSCTOTAL PPPP (1)

onde PSC é a potência de curto-circuito, Pstatic representa a parcela devida ao

consumo estático e Pdin é a potência dinâmica.

A principal razão para a popularidade da lógica CMOS é que as portas tradicionais

não possuem consumo estático quando suas saídas não estão comutando entre os níveis

lógicos. Entretanto, para qualquer saída de uma porta CMOS que tenha o seu valor lógico

alterado, haverá uma potência dissipada no gate dos transistores (MARTIN, 2000). A razão

inicial para esta dissipação de potência é o movimento de cargas elétricas para carregar e

descarregar capacitâncias de carga externas e capacitâncias parasitas internas. Em adição a

15

isto, para sinais de entrada com tempos de subida e descida finitos, é possível que um

caminho de corrente direto entre a fonte de tensão e o terra seja formado temporariamente

enquanto que esteja ocorrendo uma alteração na saída.

A seguir são apresentados detalhes das 3 principais fontes de consumo de potência

em circuitos CMOS.

2.1.1. Consumo de Potência de Curto-Circuito

O consumo de potência de curto-circuito ocorre quando flui uma corrente diretamente

da fonte de alimentação para o terra. Isto ocorre quando um circuito CMOS estático é

chaveado por um sinal de entrada com tempos de subida e descida não-zero, com os

transistores tipos PMOS (Positive Channel Metal Oxide Semiconductor) e NMOS

(Negative Channel Metal Oxide Semiconductor) conduzindo simultaneamente por um curto

intervalo de tempo. Este consumo de potência devido a corrente de curto-circuito contribui

com aproximadamente 10% do valor de consumo de potência total (POPPEN, 2000), mas

pode tornar-se substancial, particularmente se a entrada mudar de maneira lenta, ou seja, se

os tempos de subida ou descida dos sinais de entrada dos circuitos são altos. Na realidade,

não é correto assumir valores de tempo de subida e descida como sendo nulos para as

formas de onda de entrada (RABAEY, 1996). Como resultado disto, é criado um caminho

para a corrente diretamente de para o terra em um curto período de tempo durante a

comutação, onde os transistores PMOS e NMOS estão conduzindo simultaneamente.

2.1.2. Consumo de Potência Estática

Correntes de fuga ou outras correntes que fluem continuamente pela fonte de

potência causam a dissipação de potência estática. Idealmente, o consumo de potência

estática de um circuito CMOS é nulo. Entretanto há sempre uma corrente de fuga presente.

Esta contribuição no consumo total de potência torna-se um fator de preocupação à medida

que a tecnologia de processo de semicondutores atinge valores abaixo de 0.1μm (KIM,

16

2003). Estudos demonstram que para o caso de um circuito inversor, utilizando tecnologia

de 70nm, submetido a simulações operando a 125ºC, as correntes de fuga podem chegar a

contribuir em 49% no consumo de potência total do circuito (KIM, 2002). Correntes de

fuga podem ocorrer quando um transistor está no estado desligado e outro transistor ativo

carrega (up/down) o dreno em relação ao potencial de substrato. A potência estática total é

o produto da corrente de fuga do dispositivo e da fonte de tensão, dada pela equação (2).

DDleakagestatic VIP . (2)

1TV

V

Sleakage eII(2.1)

onde VDD é a tensão de alimentação do circuito e Ileakage é a corrente de fuga que é

dada pela equação característica do diodo de polarização reversa conforme é dado na

equação 2.1, onde IS é a corrente de saturação reversa, V é a tensão do diodo e VT=KT/q é a

tensão termal.

2.1.3. Consumo de Potência Dinâmica

A dissipação dinâmica ocorre durante o processo de comutação dos transistores

PMOS e NMOS devido à corrente de curto-circuito e pelo processo de carga e descarga da

capacitância de saída. A potência dinâmica aparece com um maior valor percentual

contribuindo com 85% da parcela do consumo total. (STAN, 1997). A componente de

comutação dinâmica de dissipação de potência (Pdin

) em uma transição na saída de uma

porta carregada por um capacitor CL

é dada de acordo com a equação (3)

(CHANDRAKASAN, 1995),

22

2

1

2

1DDLDDLdin VafCAVCP

(3)

onde A é a atividade do nó de saída, medida em eventos/segundo para uma carga/descarga

completa. No caso de projetos síncronos, a atividade A não é simplesmente f (freqüência),

mas em geral uma probabilidade de atividade normalizada a (menor do que 1 para modelo

17

de atraso zero) é computada como função da estatística de entrada e modelos lógicos, pois

nem todos os nós mudam em um determinado ciclo de relógio. Se, em um circuito, uma

simples transição é realizada a cada ciclo de relógio na taxa fclk

, então a potência é dada

pela equação (4).

clkDDLdin fVCP 2

2

1

(4)

Entretanto, há casos em que a transição do sinal ocorre em diferentes taxas de

freqüência, tendo-se que considerar o valor do número de transições por ciclo de relógio ou

o fator de atividade a de transição dos nós, como mostrado na equação (3).

2.1.4. Consumo de Potência pela Atividade de Glitching

A dissipação de potência dinâmica também é influenciada por sinais espúrios

(glitching), característico de sistemas com lógicas complementares em cascata (GOWAN,

1998). A principal razão para a ocorrência do efeito de glitching recai sobre o fato de que as

portas lógicas possuem um atraso de propagação do sinal diferente de zero (RABEY,

1996). Na realidade, o atraso de propagação finito de um bloco lógico para o próximo, pode

causar transições espúrias, chamadas de glitches ou hazards. Estas transições espúrias

dificultam a estimação da energia de circuitos síncronos. A principal razão para isto recai

no fato de que os glitches são muito dependentes do atraso do circuito e, desta maneira,

qualquer tentativa de se estimar a energia consumida, precisa incluir um modelo preciso de

atraso (PENZES, 2002). Desta maneira, um determinando nó de um circuito pode exibir

múltiplas transições em um único pulso de clock antes de estabelecer de fato o valor lógico

correto.

Esta atividade de chaveamento extra contribui para a dissipação total de energia com

cerca de 20% do valor global, mas pode chegar até a 70% da energia consumida no circuito

no caso de somadores combinacionais (SHEN, 1992).

Um esquema da contribuição de glitches para a dissipação de potência em um circuito

digital é mostrado na Figura 2. Podemos ver a geração de glitches na saída de uma porta e a

propagação através de uma porta. (FAVALLI, 1995)

18

Figura 2 – Esquema de contribuição de glitches para dissipação de potência.

Observa-se que o instante de chaveamento do sinal de entrada de uma porta pode

causar níveis lógicos falsos em sua saída, contribuindo para a geração de glitches. A

propagação destes sinais é uma função da profundidade lógica do circuito contribuindo

fortemente para o aumento do consumo de potência.

2.2 Análises de Atraso em Circuitos CMOS

A verificação de atraso tem por objetivo avaliar se as restrições de velocidade de

operação impostas ao projeto estão sendo alcançadas. Ainda, a verificação de atraso

preocupa-se com a estimação do atraso crítico dos circuitos e com a máxima freqüência de

operação, no caso de circuitos temporizados (GUNTZEL, 2000). Tipicamente, a primeira

tarefa de uma análise de atraso é determinar os atrasos em todos os caminhos do circuito.

O resultado desta análise é verificar o caminho crítico do projeto, ou maior atraso. De

acordo com esta informação, estabelece-se a velocidade máxima na qual o circuito irá

operar. Como qualquer outro tipo de verificação, a precisão do teste do atraso é

completamente dependente da precisão dos modelos de circuito adotados.

2.2.1. Análise Estática de Atraso

A análise estática de atraso faz a verificação do atraso do circuito pela adição de

atrasos de propagação ao longo de caminhos entre elementos sensíveis ao clock em um

circuito. Nesta técnica, as somas são confrontadas com as restrições de atraso especificadas

para cada caminho do circuito. Devido a sua orientação para caminhos, as ferramentas de

19

análise estática de atraso podem determinar e reportar estatísticas de atraso tal como o

número total de caminhos, atrasos entre pinos em um caminho e os caminhos mais críticos

do circuito (ALTERA, 2006). Devido ao fato da análise estática de atraso não realizar uma

simulação funcional, os requerimentos para a construção de modelos são relativamente

simples, sendo que apenas informações de atraso para cada parte do projeto são necessárias,

tais como atrasos entre pinos e restrições de freqüência. Desta forma, vetores de teste e

modelos funcionais não são necessários desde que a análise não avalia o atraso em termos

de funções lógicas (ALTERA, 2006).

2.2.2 Análise de Folga Temporal

A análise de folga temporal (slack analysis) compara o atraso entre caminhos de

dados que terminam em dispositivos síncronos e seus correspondentes caminhos de clock

(ALTERA, 2006). Sinais de dados e de clock que se propagam ao longo destes caminhos

precisam ser sincronizados, caso contrário, ocorrem violações nas restrições de atraso. Este

tipo de análise verifica as restrições de atraso enquanto perfaz estes caminhos, determina se

ocorrem quebras nas restrições, e calcula o máximo período de tempo pelos quais caminhos

de dados podem tanto causar ou evitar violações. Se a diferença entre o período

especificado nas restrições de atraso e aquele calculado pela ferramenta como necessário

para o circuito resultar em um valor negativo, indica que uma violação realmente ocorreu,

enquanto que um valor positivo estabelece que a violação não ocorreu.

2.2.3. Análise Dinâmica de Atraso

A análise dinâmica verifica o atraso do circuito pela aplicação de vetores de teste que

são projetados para detectar violações de atraso. Esta aproximação é uma extensão da

simulação e garante que o atraso do circuito é testado em um contexto funcional. Este tipo

de teste apresenta como resultado, erros de atraso que funcionalmente existem no circuito e

prevê erros que ocorram em caminhos não usados do circuito. Para testar o atraso do

circuito utilizando condições de pior caso, as ferramentas de análise dinâmica de atraso

avaliam o circuito utilizando o mínimo e máximo atraso de propagação para cada

componente no projeto (ALTERA, 2006). Para disponibilizar uma análise efetiva do pior

20

caso, a ferramenta precisa determinar quando aplicar um atraso mínimo ou máximo

baseada nas ligações e se outros tipos de restrições estão sendo avaliados.

3. Arquiteturas Dedicadas de Circuitos Multiplicadores de Baixo

Consumo

Entre os operadores aritméticos, os circuitos multiplicadores são os mais comuns em

muitas operações envolvendo multiplicação e acumulação (MAC), como os algoritmos da

área de Processamento Digital de Sinais (DSP), por exemplo. Nos circuitos DSP, os

multiplicadores são os responsáveis pela maior parte do consumo de potência (COSTA,

2002). Diante disto, apresenta-se o interesse na aplicação de técnicas que possam reduzir o

consumo de potência dos circuitos multiplicadores. Novas arquiteturas de circuitos

multiplicadores de baixa potência do tipo array, que operam em complemento de 2 na base

2m, foram recentemente apresentadas em (COSTA, 2002). A principal característica destes

novos multiplicadores é a redução da atividade de chaveamento e operação em diferentes

codificações de dados. Outro aspecto a ser destacado é a regularidade dos circuitos, que

facilita além das suas implementações em layout. Neste trabalho foi executada a aplicação

de outras técnicas de redução de potência, como pipelining e a utilização de somadores

inteligentes.

A seguir são apresentadas as principais características das arquiteturas de

multiplicadores alvo deste trabalho, bem como uma revisão bibliográfica sobre o estado da

arte em circuitos multiplicadores.

3.1. Estado da Arte de Circuitos Multiplicadores

Os circuitos multiplicadores para aplicações na área DSP necessitam de alto

desempenho, baixo consumo de potência e execução de operações de multiplicação com

sinal. Neste contexto, os multiplicadores mais rápidos são os paralelos. Entre estes, os

multiplicadores Wallace (WALLACE, 1964) estão entre os mais rápidos. Entretanto, estes

multiplicadores não apresentam boa regularidade, o que compromete os seus consumos de

potência. Por outro lado, um multiplicador Booth (BOOTH, 1951) apresenta um bom

21

aspecto de regularidade, além da redução das linhas de produtos parciais, o que representa o

estado da arte em operações de multiplicação com aspecto de baixo consumo de potência.

Devido à sua complexidade e grande utilização nos mais diversos algoritmos, uma

grande quantidade de trabalhos de pesquisa têm sido desenvolvida, visando o projeto de

eficientes e regulares arquiteturas de circuitos multiplicadores com operações em

complemento de 2. Esquemas de multiplicação tais como bi-section (LU, 2004), Baugh-

Wooley (BAUGH, 1973) e Hwang (HWANG, 1979) propõem a implementação de

arquiteturas em complemento de 2, utilizando módulos repetitivos com padrões de

interconexão uniformes. Entretanto, neste tipo de arquitetura não é permitida uma

implementação eficiente, devido à forma irregular utilizada do tipo árvore-array. O mesmo

aspecto da falta de regularidade na estrutura de multiplicação é observado em

(PEKMESTZI, 1999), onde é apresentado um esquema de multiplicador baseado em

multiplexador. Em (WANG, 2001) é observado um avanço desta técnica, onde a

arquitetura exibe um layout mais regular do que o apresentado em (PEKMESTZI, 1999).

Apesar da arquitetura apresentar reduções em área da ordem de 40%, só são observadas

reduções em atraso e consumo de potência após a utilização de circuitos somadores mais

eficientes.

As técnicas descritas acima têm sido aplicadas a multiplicadores array

convencionais, cuja operação é realizada bit a bit e algumas vezes a regularidade da

arquitetura não é preservada.

Um novo tipo de array para um multiplicador paralelo baseado em diferentes

agrupamentos de bits de produtos foi proposto em (NAKAMURA, 1986). Neste trabalho, o

esquema proposto necessita de aproximadamente metade das células quando comparado

aos multiplicadores array convencionais. Apesar do bom desempenho apresentado, a

complexidade do circuito aumenta consideravelmente devido aos circuitos contadores

utilizados na unidade de adição. Para um multiplicador na base 4, por exemplo, faz-se

necessária a utilização de 16 vezes mais hardware em relação a um multiplicador array

binário convencional.

Para aumentar o desempenho dos multiplicadores, considerando aspectos de

regularidade e redução do consumo de potência, têm sido propostos projetos de circuitos

baseados na técnica de recodificação de Booth (SAM, 1990;MILLAR, 1992;

22

GALLAGHER, 1994; CHERKAUER, 1996; SEIDEL, 2001). Nestes trabalhos são

propostos multiplicadores Booth de alto desempenho baseados em operações em maiores

bases de operação. Entretanto, estes circuitos exibem pouca regularidade e não são

indicadas reduções no consumo de potência.

Trabalhos de pesquisa direcionados a redução do consumo de potência a partir do

multiplicador Booth, operando em bases maiores, são apresentados em (YU 2000;

GOLDOVSKY, 2000). Em (YU 2000), propõe-se um multiplicador Booth tipo Carry-Save

Array para baixa potência. Neste trabalho, mostra-se que é possível obter uma redução de

18% em potência. Entretanto, não é apresentada nenhuma melhora em termos de

desempenho. Em (GOLDOVSKY, 2000), apresenta-se um multiplicador que utiliza

codificadores Booth na base 4, que são otimizados para geração dos produtos parciais. São

apresentados resultados com reduções de área, atraso e consumo de potência e com um

esquema de codificação altamente otimizado no nível de transistores. Em (SHAH, 2000) há

uma comparação entre 5 diferentes tipos de multiplicadores de 32 bits em diferentes

métricas de desempenho. O multiplicador combinado Booth-Wallace modificado

apresentou melhores resultados em atraso e consumo de potência entre os multiplicadores

apresentados neste trabalho.

De acordo com (GALLAGHER, 1994), apesar de o algoritmo Booth proporcionar

uma maior simplicidade para a implementação da sua arquitetura, torna-se difícil projetar

arquiteturas para operar em bases maiores do que 4, devido a complexidade em pré-

computar, no termo multiplicador, um crescente número de múltiplos do termo

multiplicando. Em (MILLAR, 1992; SEIDEL, 2001) são propostos multiplicadores Booth

de alto desempenho baseados em operação em maiores bases. Entretanto, estes circuitos

exibem pouca regularidade e não são indicadas reduções no consumo de potência.

Em (COSTA, 2002; COSTA, 2002b) busca-se os mesmos objetivos do

multiplicador Booth, ou seja, alcançar melhores desempenhos e menores consumos de

potência a partir da redução dos termos dos produtos parciais, mantendo-se a mesma

regularidade de um multiplicador array. Nestes trabalhos foi mostrado que as novas

arquiteturas propostas podem ser estendidas a operações de multiplicação em bases maiores

utilizando menos níveis lógicos e, desta forma, apresentando menos transições espúrias e

menor consumo de potência.

23

3.2. Multiplicador Array Binário

Na operação de um multiplicador tipo array Binário, os produtos parciais são

realizados de forma paralela. A multiplicação de números binários positivos é realizada da

mesma forma em que a operação é realizada com números decimais. Um multiplicador tipo

array traduz estas expressões diretamente para hardware, como pode ser observado na

Figura 3 para W = 4bits. Como pode ser observado na Figura 3, têm-se as W linhas de

produtos parciais, cada uma composta de produtos de níveis de W bits, que pode ser

arranjada em uma simples e regular estrutura do tipo array. Cada produto de bit é

simplesmente uma porta lógica AND.

Figura 3 - Multiplicador Array Binário de 4 bits

Como observado na Figura 3, no multiplicador array a operação é realizada pela

soma de produtos parciais em seqüência. Os produtos parciais são obtidos com portas

lógicas AND a partir das operações 1xW. O bit menos significativo do produto é produzido

no lado direito da estrutura array e já representa o primeiro resultado de multiplicação. Os

demais resultados são obtidos a partir das somas das linhas de produtos parciais.

24

3.2.1. Operação de Multiplicação na Base 2m em Complemento de 2

Embora a estrutura do multiplicador array binário mostrada na Figura 3 apresente

um bom aspecto de regularidade, esta arquitetura não leva em consideração operações de

multiplicações com sinal nas quais são comuns em muitas aplicações no processamento de

sinais. Além disso, esta estrutura apresenta uma grande profundidade lógica, devido ao

elevado número de linhas de somas de produtos parciais presentes. Este aspecto pode

comprometer o desempenho do multiplicador e o consumo de potência, devido às elevadas

atividades de chaveamento e sinais espúrios (glitching) presentes.

Neste trabalho, procura-se mostrar diferentes alternativas arquiteturais de circuitos

multiplicadores que podem suprir as desvantagens apresentadas no multiplicador da Figura

3. As novas arquiteturas apresentadas realizam operações em complemento de 2 e possuem

a mesma regularidade do multiplicador array convencional mostrado na Figura 3. Todos os

bits nos produtos parciais são tratados como bits sem sinal, exatamente como um

multiplicador array normal, exceto para o último bit de todas as linhas do produto parcial e

todos os bits da última linha. As operações de multiplicação são realizadas na base 2m.

Para operações de uma multiplicação na base 2m, os operandos são divididos em

grupos de m bits. Cada um destes grupos pode ser visto como uma representação de um

digito em um base 2m

. Conseqüentemente, a arquitetura de multiplicação base 2m

segue a

operação de multiplicação básica de números representados na base 2m. A operação base 2

m

em representação em complemento de 2 é mostrada na equação 5.

1

0

11

1

11 22''

W

j

jWjW

W

m

Ww babbABABA(5)

A Figura 4 ilustra uma operação com operadores de W = 4 bits na representação

binária utilizando a base 4 (m = 2). Para o exemplo mostrado, os termos do produto parcial

são obtidos pela multiplicação de cada grupo de m bits dos termos multiplicador e

multiplicando. Desta forma, cada linha do produto parcial é processada para uma

multiplicação m x W.

25

Fig. 4. Exemplo de multiplicação de 4 bits base-4(m=2) em complemento de 2.

Para os W – m bits menos significativos dos operandos podem ser usadas

multiplicações sem sinal. Os módulos de produtos parciais à esquerda e o último abaixo do

array necessitam ser diferentes para efetuar operações com sinal.

Para esta arquitetura, três tipos de módulos são necessários, como é mostrado na

Figura 5.

TIPO I são os módulos sem sinal. Módulos TIPO II executam operações de um

número sem sinal por um número em complemento de 2. Finalmente, o módulo TIPO III é

requerido para qualquer tipo de multiplicação.

Fig. 5. Estrutura geral para multiplicação na base 2m

em complemento de 2.

Na Figura 6 apresentamos um exemplo concreto para uma multiplicação na base 4

(m = 2) e uma largura W = 8 bits.

26

Fig. 6. Exemplo de multiplicador array base 4 de 8 bits em complemento de 2.

3.2.2. Multiplicador Array Binário Usando CSA e Pipeline

O somador Carry Save (CSA) (KIM, 1998) tem a característica de efetuar a soma de

três números simultaneamente. A idéia básica é que três números possam ser reduzidos

para dois, como um compressor 3:2, como mostra o exemplo da Figura 7.

27

Figura 7 - Exemplo de um somador Carry Save

Como pode ser observado na Figura 7, somente na recombinação do carry com a

soma é utilizado um somador onde o carry é propagado. Apenas na última linha de soma é

que existe a propagação normal do carry a partir da utilização de somadores do tipo Ripple

Carry. A Figura 8 mostra um exemplo de adição de seis números usando o somador Carry

Save.

Fig. 8. Exemplo de soma de números de 4 bits usando a estrutura Carry Save

Como é mostrado na Figura 8, o somador Carry Save é apresentado como um bloco

com três entradas e duas saídas. Neste caso, os somadores completos (full-adder) não

dependem de outras somas para efetuar sua operação. Cada somador recebe três números e

produz dois como saída, tal que RQPSC 2 . De fato, pode-se então converter o

problema de computação RQP para SC 2 sem esperar carry algum. Os módulos x2

mostrados na Figura 8 não requerem lógicas, sendo somente necessário a conexão

apropriada dos blocos. A soma final M + 2N representa uma soma normal de dois números.

28

O somador Carry Save se torna bastante rápido devido ao fato de simplificar as

saídas de carry ao invés de propagar para a esquerda, com isto aplicamos este somador nas

linhas de produtos parciais dos circuitos multiplicadores para a aceleração da propagação

de carry ao longo do array.

A operação de multiplicação em complemento de 2 usando o somador Carry Save

para a adição dos termos de produtos parciais, para operações com W = 6 bits usando base

4 (m = 2), é mostrado na Figura 8. Para o exemplo mostrado, os termos de produtos parciais

são obtidos multiplicando cada grupos de 2 bits do multiplicador pelos termos do

multiplicando. Assim, cada linha de produto parcial é computada como uma multiplicação

62 , como descrito na Figura 9. O produto final para a multiplicação na base 4 é obtido

somando cada grupo de 2 bits dos termos de produto parcial na forma Carry Save como

apresentado na Figura 9.

Como pode ser observado, somente na recombinação final do carry e da soma

existe a propagação de carry. Na soma com propagação de carry, os dois bits mais

significativos podem ser desprezados, pois nunca ocorre overflow na operação de soma dos

bits mais significativos. Note que os dois primeiros termos de produtos parciais possuem

uma extensão de sinal. Para manter a regularidade do array, a técnica de extensão de sinal é

usada com bits extras nas linhas de produtos parciais.

Fig. 9. Exemplo de multiplicação de 6 bits em complemento de 2 usando CSA.

O multiplicador array Binário usando o somador Carry Save, utiliza o mesmo

número de linhas de produtos parciais do multiplicador com somador Ripple Carry

mostrado na Figura 5, ou seja, 3 linhas de produtos parciais para um exemplo de 8 bits.

Entretanto, diferente do multiplicador com RCA, onde o carry se propaga entre os módulos

29

de cada linha de soma parcial, o multiplicador com CSA propaga o carry na diagonal, o que

provoca um aumento de desempenho na estrutura array. Contudo, deve-se observar que

mesmo com somadores CSA na sua estrutura, o multiplicador array necessita de uma linha

adicional de somadores Ripple Carry para recombinação dos resultados de carry e da soma

do bloco CSA anterior.

Fig. 10. Exemplo de multiplicador array de 8 bits em complemento de 2 base-4 usando CSA

Como pode ser observado na Figura 10, os termos das duas primeiras linhas de

produtos parciais são agrupados em uma linha composta por seis módulos de somadores (o

sexto módulo é necessário para adicionar o último módulo de soma de cada operando). A

maioria destes módulos de somadores nas linhas de produtos parciais é composta de meio

somadores, devido ao fato da propagação de carry se dar para a próxima linha de produto

parcial.

30

A regularidade das arquiteturas implementadas neste trabalho permite a aplicação de

outras técnicas de redução de potência. Neste trabalho, apresenta-se a implementação de

uma versão pipelined das novas arquiteturas, como forma de redução do caminho crítico e

redução de transições espúrias que são propagadas através do array. As linhas pontilhadas

da Figura 11 mostram a versão pipelined do multiplicador array na base 4 para operandos

de 8 bits.

Fig. 11. Exemplo de multiplicador array de 8 bits na base 4 em complemento de 2 usando

pipeline.

Como pode ser observado na Figura 11, o aspecto da regularidade da arquitetura

permite a introdução de duas camadas de registradores distribuídas ao longo do array.

Desta forma, para este exemplo, as operações são efetuadas em 3 ciclos de relógio. Para os

multiplicadores array na base 2m, com W bits, são utilizadas (W/m)-2 camadas de

registradores. Assim, as operações são realizadas em (W/m)-1 ciclos de relógio.

31

3.3 Multiplicador Array Híbrido

Em (COSTA, 2002) foi apresentada uma nova arquitetura de circuito multiplicador

operando em um código diferente do Binário. Para este novo circuito foi dado o nome de

multiplicador Híbrido. A principal característica do circuito multiplicador operando neste

código é a possibilidade de redução da atividade de comutação em grupos de m bits dos

operandos. A seguir apresenta-se uma revisão bibliográfica sobre a importância da

codificação de operandos para a redução da atividade de chaveamento, bem como as

principais características do código Híbrido. Finalmente, apresenta-se a estrutura do

multiplicador array operando nesta codificação em complemento de 2 com técnicas de

pipeline e utilizando somador CSA.

3.3.1. Codificação de Operandos

Em (STAN, 1997) é apresentada uma visão geral de técnicas de redução de potência

para comunicação global de dados em circuitos CMOS VLSI, usando métodos de

codificação, onde é mostrado que cada uma das técnicas utilizada tem por objetivo reduzir

o consumo de potência em barramentos de dados, a partir da redução da atividade de

chaveamento dos dados transmitidos.

Um das técnicas que tem sido proposta para reduzir a atividade de chaveamento em

barramentos é a codificação One-Hot (CHANDRAKASAN, 1995). Esta técnica representa

um esquema de codificação redundante com o mapeamento bit a bit das palavras de dados

de n-bits a serem enviadas para as palavras de dados de m-bits a serem transmitidas. A

principal desvantagem desta técnica é a quantidade de linhas de barramentos necessárias

que é proporcional a 2n.

A codificação Limited-Weight (STAN, 1997a) oferece um caminho direto de

controlar o fator de atividade em barramentos simplesmente pela redução do número de 1’s

lógicos transmitidos nos barramentos.

No método de codificação Bus-Invert (STAN, 1995) a distância de Hamming é

medida entre duas palavras consecutivas no barramento. Se a distância de Hamming entre a

próxima palavra e a palavra atual é menor ou igual a n/2 (onde n representa o número de

32

bits), a palavra é transmitida na sua forma original. De outra forma, a palavra é invertida

antes da sua transmissão.

As técnicas Transition Coding e Bit Prediction são utilizadas para a redução do

número de transições observadas nos barramentos de dados e endereços (STAN, 1997a). A

técnica Bit Predicition é usada em alguns barramentos que exibem padrões de bit muito

regular. A principal idéia é utilizar esta técnica em barramentos de endereços que exibem

uma alta taxa percentual de endereços seqüenciais.

Uma das mais promissoras técnicas de codificação que pode ser utilizada na redução

da atividade de chaveamento é o código Gray (MEHTA, 1996), pois este código apresenta

a mudança de apenas um bit entre palavras consecutivas. Desta forma, para sinais altamente

correlacionados, a atividade de chaveamento pode ser significativamente reduzida.

Como mencionado acima, existe um grande número de técnicas que apontam para

codificação de dados no sentido de reduzir a atividade de chaveamento nos barramentos.

Essas técnicas têm sido aplicadas a barramentos de endereços, onde os dados são altamente

seqüenciais. No nosso trabalho, aplica-se a técnica de codificação de operandos a

operadores aritméticos que possam operar diretamente em uma codificação diferente da

Binária. Em (COSTA 2002b; COSTA, 2002c) é apresentada uma codificação Híbrida que

possui o compromisso entre a mínima dependência lógica da codificação Binária e a

característica de baixo chaveamento apresentado pela codificação Gray. Em (COSTA

2002b; COSTA, 2002c) esta codificação é aplicada a circuitos multiplicadores. No nosso

trabalho estaremos estendendo o estudo da aplicação desta codificação a novas arquiteturas

de multiplicadores. A seguir são apresentadas as principais características do código

Híbrido, bem como a estrutura do circuito multiplicador array utilizando esta codificação.

3.3.2. Código Híbrido

A idéia de manipular os operandos em grupos de m-bits e codificar cada grupo

usando o código Gray pode ser usada para operandos que operem em representação de

complemento de 2. A Tabela I mostra o código Híbrido em complemento de 2 para um

número de 4 bits e m = 2.

33

Tabela 1 - Representação dos códigos Binário, Híbrido (m=2) e Gray em complemento de 2Decimal Binário Híbrido

(m=2)Gray

0 0000 0000 00001 0001 0001 00012 0010 0011 00113 0011 0010 00104 0100 0100 01105 0101 0101 01116 0110 0111 01017 0111 0110 0100-8 1000 1100 1100-7 1001 1101 1101-6 1010 1111 1111-5 1011 1110 1110-4 1100 1000 1010-3 1101 1001 1011-2 1110 1011 1001-1 1111 1010 1000

O código Híbrido apresenta um compromisso entre a mínima dependência das

entradas de dados apresentada pelo código Binário e a característica de baixa atividade de

chaveamento apresentada pelo código Gray. A Tabela 2 apresenta o número de transições

dos códigos Binário, Gray e Híbrido para uma determinada seqüência de contagem.

Tabela 2 - Número de transições para os códigos Binário, Híbrido (m=2) e GrayNúmero de Transições DiferençasNúmero de bits

Binário Gray Híbrido(m=2) Híb→Bin Hib→Grayn=4 bits

(0,1,...,15,0) 30 16 20 -33,3 % +25%

n=8 bits(0,1,...,255,0) 510 256 340 -33,3% +32,8%

n=16 bits(0,1,...,65535,0) 131070 655326 57380 -33,3% + 33,3%

Pode ser observado na Tabela 2, o código Híbrido apresenta um valor percentual

intermediário entre os códigos Binário e Gray em termos de número de transições. Desta

forma, para sistemas onde a capacitância chaveada no barramento de dados é significativa e

onde os dados apresentam um alto grau de correlação, a utilização do código Híbrido pode

34

reduzir o consumo de potência em até cerca de um terço em relação ao código Binário

(COSTA, 2002). O número de transições para seqüências de contagem, como apresentadas

na Tabela 2, é calculado de acordo com as equações (6), (7) e (8), para os códigos Binário,

Gray e Híbrido respectivamente (COSTA, 2002).

212.__ no Bintransden (6)

no Graytranden 2).(__ (7)

12

122).(__

m

nmo Hibtransden

(8)

Outra característica apresentada pelo código Híbrido m = 2 é a facilidade de mudança

de representação para o código Binário, como mostra o exemplo da Figura 12. Desta forma,

o processo de codificação/decodificação dos dados utiliza um hardware de reduzida

complexidade com uma porta EXOR ligada a cada grupo de m = 2 bits. Neste caso, o

código Híbrido também pode ser utilizado como método de codificação para os

barramentos de endereços.

Figura 12 – Conversão entre os códigos Binário e Híbrido

3.3.3. Multiplicação Híbrida em Complemento de 2

A Figura 13 apresenta um exemplo de multiplicação de 4 bits em código Híbrido na

base 4 (m = 2). Como pode ser observado, a operação de multiplicação nesta base consiste

na aplicação direta do código Gray a cada grupo de 2 bits. Desta forma, a operação de

multiplicação é realizada na base 4. Outro ponto importante a ser destacado na Figura 13 é

a técnica de extensão de sinal que é representado por 10, pois caracteriza o número decimal

-1 em código Gray.

35

Fig. 13 – Exemplo de uma multiplicação de 4 bits na base 4 (m=2) em complemento de 2 utilizando o

código Híbrido

3.3.4. Multiplicador Array Híbrido usando CSA e Pipeline

A operação de multiplicação híbrida em complemento de 2 usando o somador Carry

Save para adição dos termos de produtos parciais, para operadores com W = 6 bits usando

base 4 (m = 2), é ilustrado na Figura 14. A etapa de utilização de somadores do tipo CSA é

idêntica à anteriormente mostrada na Figura 10 para operação de multiplicação com

operandos binários. Deve-se observar, entretanto, que a extensão do sinal é através do valor

10 que representa -1 no código Híbrido.

Fig. 14. Exemplo de multiplicação híbrida de 6 bits em complemento de 2 usando CSA

36

Da mesma forma como anteriormente mostrado na multiplicação com array binário,

na multiplicação híbrida usando o somador Carry Save, módulos de somadores do tipo

Ripple Carry são utilizados somente na soma final da soma em árvore, como pode ser visto

na Figura 15 para um exemplo de W = 8 bits. Uma simples adição usando propagação é

somente necessária no último passo para reduzir dois números para um simples número,

produto final. Os módulos: Tipo I, II e III, efetuam multiplicações em código Híbrido. Os

somadores efetuam adições em código Binário, visto que a conversão de código Híbrido

para Binário e vice-versa, é facilmente realizada, como anteriormente mostrado na Figura

11.

Fig. 15. Exemplo de multiplicador array Híbrido de 8 bits na base 4 em complemento de 2 usando CSA

Os circuitos multiplicadores na forma pipeline são úteis no caso do throughput

aritmético ser mais importante do que a latência. Isto devido ao fato da introdução de

registradores ao longo do array reduzir a quantidade de atividade de chaveamento

desnecessária. Um multiplicador utilizando pipeline pode realizar mais operações por

37

segundo e operar com uma taxa de relógio mais elevada do que um multiplicador que não

utiliza esta técnica. Logo este tipo de multiplicador pipelined é desejável para aplicações

aritméticas de alto desempenho. (ASATO, 1990)

O multiplicador array Híbrido com uso de pipeline apresenta uma estrutura

semelhante à mostrada na Figura 11 para uma multiplicação binária. A diferença consiste

na utilização dos códigos Híbrido nos módulos básicos. Outra diferença a ser destacada é a

técnica de extensão de sinal em código Híbrido. Da mesma forma que o multiplicador array

Binário, as operações são efetuadas em 3 ciclos de relógio. Para os multiplicadores array na

base 2m, com W bits, são utilizadas (W/m)-2 camadas de registradores. Desta forma, as

operações são realizadas em (W/m)-1 ciclos de relógio.

A introdução de registradores ao longo do circuito aumenta a área

significativamente, tendo, entretanto, reduções em valores de atraso e consumo de potência.

(COSTA, 2002)

4. Resultados Obtidos

Nesta Seção, são apresentados os resultados das simulações dos circuitos

multiplicadores array Binário e Híbrido de 16 bits com grupos de 2 e 4 bits apresentados na

Seção anterior. São feitas comparações em área, atraso e consumo de potência dos

multiplicadores utilizando somadores RCA e CSA em suas estruturas. Também são

mostrados os resultados destas estruturas com o uso de pipeline. As simulações foram

realizadas com a ferramenta Quartus II da Altera e sintetizados para o FPGA da família

Stratix de modelo EP1S10B672C6. Os resultados de área são apresentados em termos do

número de elementos lógicos do elemento FPGA. Os resultados de atraso são mostrados

em relação ao caminho crítico dos circuitos. Para obtenção dos valores de consumo de

potência são utilizados 100 vetores dos tipos senoidal e aleatório.

4.1 Resultados de Área

A Tabela 3 mostra os valores de área para os multiplicadores Binário e Híbrido m=2

e m=4 com somadores RCA e CSA e com o uso de pipeline.

38

Tabela 3. Valores de área para os multiplicadores (elementos lógicos)

Multiplicadores RCA CSA RCA e Pipeline CSA e pipelineBinário (m=2) 782 925 852 972Hibrído (m=2) 740 917 824 930Binário(m=4) 1.244 1285 1.323 1385Híbrido(m=4) 2.706 2.799 2820 2904

Como pode ser observado na Tabela 3, os multiplicadores com m=4 apresentam os

maiores valores de área. Isto se deve à maior complexidade dos módulos de multiplicação

na base 16. No caso do multiplicador Híbrido, este aspecto se torna mais significativo, pois

os módulos de multiplicação em código Híbrido utilizam um maior número de portas

lógicas para a sua implementação.

A Tabela 3 também mostra que todos os multiplicadores que utilizam somadores do

tipo CSA apresentam maiores valores de área comparado com os multiplicadores que

utilizam somadores RCA. De fato, deve-se observar que um somador CSA apresenta em

sua última linha uma estrutura de soma do tipo RCA, que é responsável pela recombinação

do resultado da soma anterior com o carry propagado ao longo da estrutura. Isto faz com

que a estrutura interna do somador CSA apresente um maior número de somadores

completos (full adders) e meio somadores (half adders).

A inserção de linhas de pipeline nos circuitos multiplicadores também contribui

para o aumento de área, como pode ser visto na Tabela 3. Isto devido à utilização de vários

circuitos registradores que formam as várias linhas de pipeline presentes nos

multiplicadores.

4.2 Atraso

Para os circuitos multiplicadores analisados, sem as linhas de pipeline, os valores de

atraso podem ser obtidos a partir do parâmetro (tpd) da ferramenta Quartus II, que mede o

maior atraso da entrada até a saída do circuito (ALTERA, 2006). Em relação aos circuitos

com linhas de pipeline, utilizam-se registradores que habilitam os dados para as suas saídas

a partir de sinal de clock. Para este caso, visto a ferramenta Quartus II não fornecer o

parâmetro tpd, utiliza-se o período (T) como parâmetro para medição do desempenho dos

39

circuitos multiplicadores com pipeline. A Tabela 4 mostra os valores de atraso para os

circuitos multiplicadores com somadores RCA e CSA e com a utilização de pipeline.

Tabela 4. Valores de atrasos para os multiplicadores

Multiplicadores RCA(ns)(tpd)

CSA (ns)(tpd)

RCA e Pipeline(ns) - T

CSA e pipeline (ns) - T

Binário(m=2) 52.623 47.317 14.853 12.541Hibrído(m=2) 53.044 49.382 15.206 13.851Binário(m=4) 44.802 43.009 16.216 15.945Hibrído(m=4) 61.214 59.101 22.564 21.954

Como pode ser observado na Tabela 4, os multiplicadores com somadores CSA

apresentam redução nos valores de atraso quando comparados com as suas estruturas

originais que utilizam o somador RCA para m=2 e m=4. Isto ocorre devido ao fato do

somador CSA ter a capacidade de realizar operações de soma em paralelo, sem depender da

propagação do carry dentro dos blocos de soma. Deve-se observar na Tabela 4 que esta

redução do atraso com somadores CSA também ocorre para os circuitos utilizando pipeline,

o que comprova a eficiência deste tipo de somador para aumento do desempenho dos

circuitos multiplicadores.

Observa-se que as arquiteturas dos multiplicadores Binário (m=2 e m=4)

apresentam menores valores de atraso em relação aos multiplicadores em código Híbrido.

Isto ocorre devido ao multiplicador Híbrido possuir uma maior complexidade dos blocos

básicos de multiplicação, como dito anteriormente.

A Tabela 4 mostra que o multiplicador Binário (m=4) possui os menores valores de

atraso com somadores RCA e CSA sem pipeline. Isto ocorre devido à menor quantidade de

linhas de termos de produtos parciais apresentadas por este circuito. Desta forma, este

aspecto (menor quantidade de linhas de produtos parciais) compensa a maior complexidade

apresentada pelos módulos de multiplicação básicos, contribuindo para a redução do

caminho crítico deste tipo de estrutura. O mesmo aspecto não se verifica para os

multiplicadores Híbridos m=4 sem pipeline, onde os módulos de multiplicação são um

pouco mais complexos e a redução de linhas de produtos parciais não se torna suficiente

para aumentar o desempenho destas estruturas.

40

Observa-se pelos resultados da Tabela 4 que para os multiplicadores com pipeline,

os circuitos Binário e Híbrido utilizando m=2 apresentam os menores valores de atraso. Isto

mostra que o componente FPGA consegue mapear de forma mais eficiente para a sua

estrutura interna os circuitos multiplicadores m=2, quando da utilização de pipeline.

4.3 Resultados de Potência

As Tabelas 5 e 6 apresentam os valores obtidos nas simulações para o consumo de

potência com vetores senoidais (explorando o aspecto de correlação dos dados) e vetores

randômicos. Os valores apresentados nestas tabelas mostram a parcela de potência

dinâmica fornecida pela ferramenta Quartus II. Esta parcela foi selecionada para ser

apresentada, pois representa a parcela que mais contribui para o consumo de potência total

dos circuitos.

Tabela 5. Valores de consumo de potência utilizando vetores senoidais (Dinâmico)

Multiplicadores RCA (mW) CSA (mW) RCA e Pipeline (mW)

CSA e pipeline (mW)

Binário (m=2) 390.14 317.32 155.37 151.13Híbrido (m=2) 396.67 372.78 156.63 152.35Binário (m=4) 266.26 263.54 187.46 185.02Híbrido (m=4) 362.80 359.02 223.50 220.98

Tabela 6. Valores de consumo de potência utilizando vetores randômicos (Dinâmico)

Multiplicadores RCA (mW) CSA (mW) RCA e Pipeline (mW)

CSA e pipeline (mW)

Binário (m=2) 503.12 410.13 205.81 201.66Híbrido (m=2) 523.02 464.66 206.91 202.50Binário (m=4) 321.61 319.41 230.97 228.54Híbrido (m=4) 438.87 434.47 283.39 281.54

Uma comparação inicial entre os valores apresentados nas Tabelas 5 e 6 mostra que

o aspecto da correlação dos dados nos vetores senoidais, contribui para o menor consumo

de potência apresentado por todos os circuitos multiplicadores. Outro aspecto a ser

destacado nas Tabelas 5 e 6 é que o uso de somadores CSA nos multiplicadores Binário e

Híbrido (m=2 e m=4) contribui para a redução do consumo de potência destes circuitos.

41

No caso dos multiplicadores sem pipeline, observa-se que o multiplicador Binário

m=4 apresenta o menor valor de potência entre os multiplicadores. Este resultado está em

conformidade com o menor valor de atraso apresentado por esta estrutura e também o

menor valor de sinais espúrios, devido à menor quantidade de linhas de soma de produtos

parciais.

Observa-se pelos resultados apresentados nas Tabelas 5 e 6 que o uso de pipeline

nas estruturas dos circuitos multiplicadores oferece uma redução significativa do consumo

de potência nos circuitos multiplicadores. De fato, a introdução de registradores ao longo

da estrutura array dos circuitos multiplicadores contribui para a redução da atividade de

glitching (sinais espúrios), que é responsável por uma parcela significativa do consumo de

potência em circuitos multiplicadores.

Observa-se pelos resultados mostrados nas Tabelas 5 e 6 que os circuitos

multiplicadores m=2 com pipeline apresentam menores valores de consumo de potência.

Este resultado está em conformidade com os valores de atraso apresentados na Tabela 4 e

reforçam o aspecto de que o componente FPGA consegue mapear para a sua estrutura

interna, de uma forma mais eficiente, os circuitos multiplicadores m=2 com pipeline.

42

5. Conclusões

Neste trabalho foram apresentadas novas estruturas de circuitos multiplicadores

array operando nas bases 4 (m=2) e 16 (m=4). Foram utilizadas nos multiplicadores,

algumas técnicas para o aumento de desempenho e redução do consumo de potência, como

a utilização de somador CSA, codificação de operandos e pipeline. Através dos resultados

mostrados, foi possível verificar a eficiência das novas arquiteturas de circuitos

multiplicadores utilizando o somador CSA para a redução do consumo de potência e

também redução do atraso dos circuitos. A utilização de pipeline também se mostrou

eficiente para as reduções de atraso e consumo de potência dos circuitos multiplicadores.

Entretanto, o uso de pipeline resulta no aumento da área (número de elementos lógicos) nos

circuitos multiplicadores, devido à introdução de registradores em suas estruturas do tipo

array.

Outro ponto abordado neste trabalho foi a possibilidade de operação dos circuitos

multiplicadores em diferentes bases. Neste aspecto, observou-se que o multiplicador

Binário operando na base 16 se mostrou mais eficiente em termos de atraso e consumo de

potência. Isto devido ao menor número de linhas de somas de produtos parciais. Entretanto,

quando do uso da técnica pipeline, observou-se que os circuitos multiplicadores operando

na base 4 são mapeados de forma mais eficiente para a estrutura interna do FPGA, o que

contribui para os seus menores valores de atraso e consumo de potência.

Finalmente, foi possível explorar neste trabalho a utilização da técnica de

codificação de operandos nos circuitos multiplicadores, com os mesmos operando em

código Híbrido. Observou-se que em termos de FPGA, estes multiplicadores não se

mostraram mais eficientes do que os multiplicadores Binários. Entretanto, devido à

proximidade dos resultados de potência entre os multiplicadores Binário e Híbrido,

principalmente com o uso de pipeline, estimulam novas comparações de consumo de

potência entre estes multiplicadores em outros níveis de abstração (nível lógico e nível de

transistores).

43

REFERÊNCIAS

ALTERA, Corporation at http://www.altera.com/ . 2007

ALTERA, Corporation. Programmable Logic Device Family. Data Sheet, 2002

ALTERA. Quartus II Version 6.0 Handbook. [S.l.]: Altera Inc., 2006. v.I.

ASATO, C.; DITZEN, C.; DHOLAKIA, S. A Data-Path Multiplier with Automatic Insertion of Pipeline Stages. IEEE Journal of Solid-State Circuit. New York., v.25, p. 383-387, 1990.

BAUGH, C. R.; WOOLEY, B. A.; A two’s complement Parallel Array Multiplications Algorithm. IEEE Trans. Computers, vol. C-22, No. 1-2. December 1973, p. 1045-1047.

BENINI, L. et al. System-Level Power Optimization of Special Purpose Applications: the beach solution. In: INTERNATIONAL SYMPOSIUM ON LOW POWER AND ELETRONIC DESIGN, ISLPED, 1997, Monterey. Proceedings… New Youk: ACM, 1997. p. 24-29

BHAVNAGARWALA, A. el tal. Minimum Total Power Methodology for Projecting Limits on CMOS GSI. IEEE Transactions on Very Large Scale Integration (VLSI) Systems, New York, v.8, p. 235-251, June 2000.

BOOTH, A. A Signed Binary Multiplication Technique. Journal of Mechanics and Aplied Mathematics, [S.l.], n.4, p.236-240, June 1951.

CHANDRAKASAN, A.; BRODERSEN, R. Low Power Digital CMOS Design. Kluwer Academic Publishers, 1995.

CHERKAUER, B.; FRIEDMAN, E. A Hybrid Radix-4/Radix-8 Low Power, High Speed Multiplier Architecture for Wide Bit Widths. In: IEEE INTERNATIONAL SYMPOSIUM ON CIRCUITS AND SYSTEMS, ISCAS, 1996. Papers. Piscataway: IEEE, 1996. v.4, p.53-56.

COSTA, E. A. C. da. Operadores Aritméticos de Baixo Consumo para Arquiteturas de Circuitos DSP. 2002. Tese (Doutorado em Ciência da Computação) — Programa de Pós-Graduação em Computação - UFRGS, Porto Alegre, RS.

COSTA, J. Monteiro, and S. Bampi. A New Architecture for Signed Radix-2m Pure Array Multipliers. In IEEE International Conference on Computer Design, pages 112-117, 2002b.

44

COSTA, E.; MONTEIRO, J.; BAMPI, S. A New Architecture for 2’s Complement Gray Enconded Array Multiplier. In: SYMPOSIUM ON INTEGRATED CIRCUITS AND SYSTEMS DESIGN, SBCCI, 15.,Sept. 2002c. Proceedings.. Artigo aceito.

COSTA, E.; MONTEIRO,. J.; BAMPI, S. Power Optimization Using Coding Methods on Arithmetic Operators. In: IEEE INTERNATIONAL SYMPOSIUM ON SIGNALS CIRCUITS AND SYSTEMS, SCS, 2001. Iasi. Proceedings… Piscataway: IEEE CAS Society, 2001. p. 505-508c.

FAVALLI, M.; Analysis of Glitch Power Dissipation in CMOS ICs. In: INTERNATIONAL SYMPOSIUM ON LOW POWER ELECTRONICS AND DESIGN, ISLPED, 1995, Dana Point. Proceedings… New York: ACM, 1995. p. 123-128.

GALLAGHER, W. L.; SWARTZLANDER, E. E. Jr., High Radix Booth Multipliers Using Reduced Area Adder, In. Signals, Systems and Computes Conference, 1994.

GOLDOVSKY, A. et al. Design and Implementation of a 16 by 16 Low-Power Two’s Complement Multiplier. In: IEEE INTERNATIONAL SYMPOSIUM ON CIRCUITS AND SYSTEMS, ISCAS, 2000. Papers. Piscataway: IEEE, 2000. v.5, p.345-348.

GOWAN, M. K.; Biro, L. L.; Jackson, D. B. Power Considerations in the Design of the Alpha 21264 Microprocessor, Design Automation Conference, p. 726 – 731, Jun. 1998.

GÜNTZEL, J. A. Functional Timing Analysis of VLSI Circuits Containing Complex Gates. 2000. 182f. Tese (Doutorado em Ciência da Computação) – Universidade Federal do Rio Grande do Sul, Porto Alegre, 2000.

HARTLEY, R.; PARHI, K. Digit-Serial Computation. Dordrecht: Kluwer Academic, 1995.

HAYKIN, S. Adaptive Filter Theory, 4. ed. Englewood Cliffs, NJ: Prentice-Hall, 2002.

HWANG, K. Computer Arithmetic: Principles, Architecture and Design. New York: John Wiley and Sons, 1979.

KHATER, I.; BELLAOUAR, A.; ELMASRY, M. Circuit Techniques for CMOS Low-Power High-Performace Multipliers. IEEE Journal of Solid-State Circuits, New York, v. 31, n.10, p.1535-1546, Oct. 1996.

KIM T., W. Jao and S Tjiang. Arithmetic Optimization using Carry-Save adders. In 35th Design Automation Conference, pages 433-438,1998.

KIM, C.H.; ROY, K. Dynamic VTH Scaling Scheme for Active Leakage Power Reduction, Design, Automation and Test in Europe Conference and Exhibition, Proceedings, Paris – France p. 163 – 167, Mar. 2002.

45

KIM, N. S.; Blaauw, D.; Mudge, T. Leakage Power Optimization Techniques for Ultra Deep Sub-Micron Multi-Level Caches, International Conference on Computer Aided Design ICCAD-2003. p. 627 – 632, Nov. 2003.

LU, MI; Arithmetic and Logic in Computer Systems. 2004. John Wiley & Sons, Inc. New Jersey. USA

MARTIN, Kenneth W. Digital Integrated Circuit Design, New York, New York – USA: Oxford University Press, 2000.

MEHTA, H.; OWENS, R.; IRWIN, M. Some Issues in Gray Code Addressing. In: GREAT LAKES SYMPOSIUM ON VERY LARGE SCALE INTEGRATION, 1996, Ames. Proceedings… New York: ACM, 1996. p. 178-181.

MILLAR, B.; MADRID, P.; SWARTZLANDER, E. A Fast Hybrid Multiplier Combining Booth and Wallace/DADDA Algorithms. In: MIDWEST SIMPOSIUM ON CIRCUITS AND SYSTEMS, 35., 1992, Washington. Proceedings… Piscataway: IEEE CAS Society, 1992. v.1, p.158-165.

NAJM, F.N. A Survey of Power Estimation Techniques in VLSI Circuits, IEEE Transactions on Large Scale Integration (VLSI) Systems, Urbana – IL, USA, p. 446 – 455, Dec. 1994.

NAKAMURA, S. Algorithm for Iterative Array Multiplication. IEEE Transactions on Computers, Washington, v.35, n.8, p. 713-719, Aug. 1986.

OLIVEIRA, L. L.; Prototipação e Análise de Circuitos Multiplicadores Array de Baixo Consumo. Dissertação de Mestrado. PPGEE. UFSM, RS. 2005

PEKMESTZI, K. Multiplexer-Base Array Multipliers. IEEE Transactions on Computes, New York, v. 48, n.1, p.15-23, Jan 1999.

PENZES, P. L.; Martin, A. J. An energy Estimation Method for Asynchronous Circuits with Application to an Asynchronous Microprocessor, Design, Automation and Test in Europe Conference and Exhibition, Paris, France, p. 640 – 647, March 2002.

PHILLIPS, C. and K. Hodor. Breaking the 10K FPGA Barrier Calls for an ASIC-Like Design DStyle. In Integrated System Design, 1996.

POPPEN, F. Low Power Design Guide. Oldenburg: Oldenburger Forschungs-Und Entwicklungsinstitut Fur Informatik-Werkzeuge Und-Systeme-OFFIS, 2000.

RABAEY, Jan M. Digital Integrated Circuits – A Design Perspective, USA, Prentice Hall, 1996.

RUSHTON, Andrew, VHDL for Logic Synthesis – Second Edition, John Wiley & Sons, England, 1998.

46

SAM, H.; GUPTA, A. A Generalized Multbit Recoding of Two’s Complement Binary Numbers and Its Proof with Application in Multiplier Implementations. IEEE Transactions on Computers, New York, v.39, n.8, p.1006-1015, July 1990.

SEIDEL, P.; MCFEARIN, L.; MATULA, D. Binary Multiplication Radix-32 and Radix-256. In: SIMPOSIUM ON COMPUTER ARITHMETIC, 15., 2001. Proceedings… Los Alamitos: IEEE Computer Society, 2001. p.23-32.

SHAH, S.; Al-Khalili, A.J.; Al-Khalili, D. Comparison of 32-bit Multipliers for Various Performance Measures, The 12th International Conference on Microelectronics, November 2000.

SHEN, A.; Ghosh, A.; Devadas, S.; Keutzer, K. On Average Power Dissipation and Random Pattern Testability of CMOS Combinational Logic Networks, International Conference on Computer-Aided Design ICCAD-92, Santa Clara, CA – USA, p. 402 – 407, Nov. 1992.

STAN, M.; BERLESON, W. Bus-Invert Coding for Low-Power I/O. IEEE Transactions on Very Large Scale Integration (VLSI) Systems, New York, v.3, n.1, p. 49-58, Mar. 1995.

STAN, M.; BURLESON, W. Low-Power Encodings for Global Communication in CMOS VLSI. IEEE Transactions on VLSI Systems, Mar. 1997.

STAN, M.; BURLESON, W. Limited-weight Codes for Low-Power I/O. IEEE International Workshop on Low Power Design, Abril, 1997a.

VEENDRICK, H. Short-Circuit Dissipation of Static CMOS Circuits and Its Impact on the Design of Buffer Circuits, IEEE Journal of Solid-State Circuits, New York –USA, v. 19, p. 468 – 473, Aug. 1984

WALLACE, C. A Sugestion for Fast Multiplier. IEEE Transactions on Eletronic Computes, [S.l.], v.13, p. 14-17, Feb. 1964.

WANG, Y. JIANG, Y.; SHA, E. On Area-Efficient Low Power Array Multipliers. In: IEEE International Conference on Eletronics, Circuits and Systems, ICECS, 8., 2001, Malta. Preoceedings… Piscataway: IEEE CAS Society, 2001. p. 1429-1432

WEST, N. H. E.; ESHRAGHIAN, K. Principles of CMOS VLSI Design – A Systems Perspective. Santa Clara, CA – USA: AT&T, 1994.

WILLIAMS, T.W. DENNARD, R.H. KAPUR, R. MERCER, M.R. MALY, M. Iddq test: sensitivity analysis of scaling, Test Conference, Washington, DC – USA, p. 786 – 792, Oct. 1996.

YU, Z.; WASSERMAN, L.; WILSON, A. A Painless Way to Reduce Power by Over 18% in Booth-Enconded Carry-Save Array Multipliers for DSP. In: WORKSHOP ON

47

SIGNAL PROCESSING SYSTEMS, SIPS, 2000, Lafayette. Proceedings… Piscataway: IEEE Signal Processing Society, 2000. p. 571-580.