Circuitos Multiplicadores Array de Baixo Consumo de Potência

Propaganda
UNIVERSIDADE CATÓLICA DE PELOTAS
ESCOLA DE INFORMÁTICA
PROGRAMA DE PÓS-GRADUACÃO EM INFORMÁTICA
Circuitos Multiplicadores Array de Baixo Consumo
de Potência Aplicados a Filtros Adaptativos
por
Leandro Zafalon Pieper
Dissertação apresentada como
requisito parcial para obtenção do grau de
Mestre em Ciência da Computação
Orientador: Prof. Dr. Eduardo Antônio César da Costa
Co-orientador: Prof. Dr. Sérgio José Melo de Almeida
DM-2008/8-005
Pelotas, Agosto de 2008
2
AGRADECIMENTOS
Ao completar este trabalho, presto meus agradecimentos a todos que de alguma
forma contribuíram de forma direta ou indireta.
Agradeço a minha mãe e a minha namorada pelo incentivo dado.
Aos meus colegas de laboratório, meu sincero obrigado, pela companhia e auxílio.
Um especial agradecimento aos meus professores: orientador Prof. Dr. Eduardo
Antônio César da Costa e co-orientador Prof. Dr. Sérgio José Melo de Almeida, pelo
incentivo e ajuda ao longo desta jornada. Saibam 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 ................................................................................................................. 11
1.2 Objetivos................................................................................................................... 11
1.3 Metodologia............................................................................................................... 12
1.3.1 Ambientes de descrição e análise dos multiplicadores............................................ 12
1.3.2 Ferramenta automática de geração das descrições dos circuitos multiplicadores
(RAMAGT) ......................................................................................................................... 14
1.4 Principais contribuições do trabalho ...................................................................... 17
1.5 Sumário ..................................................................................................................... 17
2 POTÊNCIA E ATRASO EM CIRCUITOS CMOS................................................. 18
2.1 Fontes de Consumo de Potência em Circuitos CMOS .......................................... 18
2.1.1 Consumo de Potência Estática................................................................................. 19
2.1.2 Consumo de Potência de Curto-Circuito................................................................. 20
2.1.3 Consumo de Potência Dinâmica.............................................................................. 20
2.1.4 Consumo de Potência pela Atividade de Glitching ................................................. 21
3 OPERADORES ARITMÉTICOS EFICIENTES .................................................... 23
3.1 Estado da Arte de Circuitos Multiplicadores......................................................... 23
3.2 Operação de Multiplicação na Base 2m em Complemento de 2............................ 26
3.3 Multiplicador Booth Modificado............................................................................. 28
3.4 Somador do tipo Carry Save Adder (CSA)............................................................ 30
3.5 Circuitos Somadores Compressores ....................................................................... 32
3.6 Sumário ..................................................................................................................... 35
4 OTIMIZAÇÕES NOS BLOCOS DE MULTIPLICAÇÃO NA BASE 2m ............. 36
4.1 Técnicas para otimizações dos blocos de multiplicação m=4................................ 38
4.1.1 Otimização usando blocos de multiplicação m=2 e somadores RCA ..................... 38
4.1.2 Otimização usando blocos de multiplicação m=2 e somadores CSA...................... 39
4.1.3 Uso de blocos de multiplicação dedicados 4:2 e RCA............................................ 41
4.1.4 Análise Comparativa ............................................................................................... 42
4.2 Aplicação da segunda técnica (m=2 e CSA) a diferentes valores de m ................ 43
4
4.2.1 Análise comparativa entre multiplicadores com diferentes valores de m ............... 47
4.2.2 Análise comparativa entre circuitos multiplicadores array na base 2m e Booth
modificado ............................................................................................................... 52
4.3 Sumário ..................................................................................................................... 56
5 CIRCUITOS
SOMADORES
EFICIENTES
APLICADOS
AOS
m
MULTIPLICADORES ARRAY NA BASE 2 ................................................................ 57
5.1 Extensão dos Circuitos Somadores Compressores para Blocos 8:2 e 16:2 ......... 57
5.2 Aplicação dos Compressores a Multiplicadores Array na Base 2m ...................... 61
5.2.1 Análise Comparativa de Circuitos Multiplicadores Array na Base 2m Utilizando
Somadores Compressores........................................................................................ 64
5.3 Sumário ..................................................................................................................... 67
ESTUDO DE CASO: MULTIPLICADORES ARRAY NA BASE 2m
OTIMIZADOS APLICADOS A FILTROS DIGITAS............................................ 68
6.1 Filtros FIR com Coeficientes Fixos ......................................................................... 69
6.1.1 Aplicação dos Multiplicadores Array Otimizados em Arquiteturas Totalmente
Seqüenciais .............................................................................................................. 70
6.1.2 Aplicação dos Multiplicadores Array Otimizados em Arquiteturas Semi - Paralelas
71
6.2 Arquitetura de Filtro FIR com Coeficientes Adaptativos .................................... 75
6.2.1 Algoritmo Adaptativo LMS (Least Mean Square) .................................................. 76
6.2.2 Aplicação dos Multiplicadores Array Otimizados em Arquitetura Dedicada para o
Algoritmo LMS ....................................................................................................... 77
6.3 Sumário ..................................................................................................................... 79
6
7 CONCLUSÕES............................................................................................................ 80
7.1 Trabalhos futuros ..................................................................................................... 81
REFERÊNCIAS ............................................................................................................... 83
ANEXOS ........................................................................................................................... 88
5
LISTA DE FIGURAS
Figura 1.1
Metodologia para estimativa de área, atraso e potência dos circuitos
multiplicadores array na base 2m.................................................................... 13
Figura 1.2 Metodologia usada o desenvolvimento da ferramenta RAMAGT................. 15
Figura 1.3 Tela principal da ferramenta RAMAGT ........................................................ 16
Figura 1.4 Exemplo de descrições VHDL e BLIF geradas pela ferramenta RAMAGT . 16
Figura 2.1 Esquema de contribuição de glitches para dissipação de potência................. 22
Figura 3.1 Exemplo de multiplicação de 4 bits base-4(m=2) em complemento de 2 ...... 27
m
Figura 3.2 Estrutura geral para multiplicação na base 2 em complemento de 2 ............ 27
Figura 3.3 Exemplo de multiplicador array base 4 de 8 bits em complemento de 2 ...... 28
Figura 3.4 Exemplo de multiplicação de 8 bits usando o algoritmo Booth Modificado . 29
Figura 3.5 Exemplo de arquitetura Booth Modificado de 8 bits...................................... 30
Figura 3.6 Exemplo de um somador Carry Save ............................................................. 31
Figura 3.7 Exemplo de soma de números de 4 bits usando a estrutura Carry Save ........ 31
Figura 3.8 Estrutura de um circuito somador compressor 4:2 ......................................... 32
Figura 3.9 Um compressor 4:2 baseado em multiplexador ............................................. 34
Figura 4.1 Exemplo de estrutura do Operando I.............................................................. 36
Figura 4.2 Representação do bloco Tipo I de multiplicação m=2 ................................... 36
Figura 4.3 Bloco de multiplicação (m=4) Tipo I composto por blocos m=2 e RCA...... 39
Figura 4.4 Bloco de multiplicação (m=4) Tipo I composto por blocos m=2 e CSA ...... 40
Figura 4.5 Bloco de multiplicação (m=4) Tipo I composto por blocos de mult. 4:2....... 41
Figura 4.6 Exemplo completo de multiplicação de 8 bits com blocos m=4 otimizados
Tipo I, Tipo II e Tipo III................................................................................. 44
Figura 4.7 Exemplo de uma multiplicação de 16 bits com blocos de multiplicação m=8
otimizados....................................................................................................... 46
Figura 4.8 Bloco de multiplicação otimizado m=3 utilizando blocos dedicados 1:2 ...... 47
Figura 4.9 Gráficos com os resultados de área, atraso e consumo de potência dos
multiplicadores para diferentes valores de m ................................................. 51
Figura 4.10 Gráficos das simulações dos multiplicador para área, atraso e potência........ 55
Figura 5.1 Estrutura interna de um compressor 8:2 ......................................................... 59
Figura 5.2 Estrutura interna de um compressor 16:2 ....................................................... 60
Figura 5.3 Exemplo de multiplicação de 16 bits m=4 utilizando compressores 4:2........ 63
Figura 5.4 Estrutura de circuito multiplicador de 16 bits m=4 utilizando compressores 4:2
........................................................................................................................ 64
Figura 6.1 Exemplo de filtro FIR de 8 taps ..................................................................... 71
Figura 6.2 Parte operativa das implementações seqüenciais do filtro FIR ...................... 72
Figura 6.3 Parte Operativa das implementações semi-paralelas do filtro FIR................. 74
Figura 6.4 Elementos de um filtro FIR com coeficientes adaptativos ............................. 76
Figura 6.5 Arquitetura do hardware dedicado para o algoritmo adaptativo LMS .......... 78
6
LISTA DE TABELAS
Tabela 3.1
Tabela 4.1
Tabela 4.2
Tabela verdade de um compressor 4:2........................................................... 33
Resultados para multiplicadores m=2 ............................................................ 38
Resultados de Área, atraso e potência para multiplicadores array de 16 bits
na base 16....................................................................................................... 42
Tabela 4.3 Produto atraso-potência (AP)......................................................................... 43
Tabela 4.4 Possibilidades de otimizações dos blocos de multiplicação .......................... 46
Tabela 4.5 Resultados para multiplicadores m=3 ............................................................ 48
Tabela 4.6 Resultados para multiplicadores m=4 ............................................................ 48
Tabela 4.7 Resultados para multiplicadores m=5 ............................................................ 48
Tabela 4.8 Resultados para multiplicadores m=6 ............................................................ 49
Tabela 4.9 Resultados das simulações para m=8 Otimizado ........................................... 51
Tabela 4.10 Resultados das simulações dos Multiplicadores na base 2m e Booth
Modificado..................................................................................................... 53
Tabela 5.1 Tabela verdade de um compressor 8:2........................................................... 59
Tabela 5.2 Tabela verdade de um compressor 16:2......................................................... 61
Tabela 5.3 Número de linhas de somas de produtos parciais em multiplicadores nas
bases 16 e 256 ................................................................................................ 65
Tabela 5.4 Resultados para multiplicadores m=4 Otimizado 1 com o uso de
compressores.................................................................................................. 66
Tabela 5.5 Resultados para multiplicadores m=8 Otimizado com compressores ........... 66
Tabela 6.1 Resultados de área, atraso e energia normalizada por amostra para o filtro
seqüencial....................................................................................................... 72
Tabela 6.2 Resultados de área, atraso e energia normalizada por amostra para o filtro
semi-paralelo.................................................................................................. 75
Tabela 6.3 Valores de área, atraso e consumo de potência da arquitetura para o
algoritmo LMS .............................................................................................. 79
7
LISTA DE ABREVIATURAS E SIGLAS
ASICs
BLIF
CMOS
CSA
CSL
DSP
FIR
FPGA
LMS
MAC
NMOS
PDP
PLA
PMOS
RCA
SIS
SLS
VHDL
VHSIC
VLSI
Application Specific Integrated Circuit
Berkeley Logic Interchange Format
Complementary Metal Oxide Semiconductor
Carry Save Adder
C Scripting Language
Digital Signal Processing
Finite Impulse Response Filter
Field Programmable Gate Array
Least Mean Squares Algorithms
Multiplier/Accumulator
Negative Channel Metal Oxide Semiconductor
Power Delay Product
Programmable Logic Arrays
Positive Channel Metal Oxide Semiconductor
Ripple Carry Adder
Sequential Interactive Synthesis
Switch Level Simulator
VHSIC Hardware Description Language
Very High Speed Integrated Circuits
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, bem como a otimização dos blocos dedicados
de multiplicação, que permitem a operação de multiplicação na base 2m. 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 em diferentes bases, 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 no nível textual (nível de portas lógicas), onde circuitos multiplicadores de 16,
32 e 64 bits são comparados em termos de parâmetros de área, atraso e consumo de
potência utilizando os ambientes SIS (para valores de área e atraso) e SLS (para estimação
de valores de consumo de potência). Como estudos de caso, as diferentes arquiteturas de
circuitos multiplicadores propostas neste trabalho foram aplicadas em filtros digitais de
resposta finita ao impulso (FIR) e em arquitetura dedicada de algoritmo de filtragem
adaptativa LMS (Least Mean Square).
Palavras-Chave: multiplicadores array, Filtros digitais, baixa potência
9
Title: “Low-Power Array Multipliers Circuits for Adaptive Filters”
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 and the optimization of the dedicated multiplication structures that allow the
multiplication operation in the radix 2m. 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
different radices, leading to a reduction in the number of partial product lines, enabling
higher performance and power reduction in the multipliers. The 16, 32 and 64 bit width
multipliers were described in textual language (gate level), and the comparisons between
the multipliers are preformed in terms of area, delay and power consumption by using SIS
environment (for area and delay results) and SLS tool (for power consumption estimation).
In this work we have applied the proposed optimized multipliers in digital filtering
algorithms such as finite impulse response (FIR) and dedicated architecture for the LMS
(Least Mean Square) adaptive filtering.
Keywords: array multipliers, digital filters, 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, tem-se atualmente a ênfase crescente no projeto de circuitos
integrados de baixa potência e sistemas de alto desempenho e 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 que levam em consideração técnicas para o aumento de desempenho e
redução do consumo de potência, tais como o uso de circuitos somadores eficientes
(compressores) (WEINBERGER, 1981) e a otimização dos blocos dedicados de
multiplicação, que permitem a operação de multiplicação na base 2m. As novas arquiteturas
de circuitos multiplicadores foram implementadas em linguagem textual no formato BLIF
(Berkeley Logic Interchange Format) 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 em suas arquiteturas.
As novas arquiteturas de circuitos multiplicadores propostas são aplicadas em
estruturas dedicadas de filtros digitais, que incluem a filtragem de resposta finita ao
impulso (FIR – Finite Impulse Response) e algoritmo de filtragem adaptativa LMS (Least
Mean Square) (HAYKIN, 2002). Estes filtros foram escolhidos como estudos de caso, por
envolverem um bom número de operadores aritméticos em suas estruturas. Neste caso, as
diferentes arquiteturas de circuitos multiplicadores são aplicadas a estes filtros, onde são
reportados os resultados de área, atraso e consumo de potência destes circuitos. Os
principais resultados apresentados mostram a eficiência dos filtros FIR e adaptativo,
quando do uso dos multiplicadores otimizados propostos neste trabalho.
11
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 otimização dos blocos dedicados de multiplicação que permitem a
operação de multiplicação na base 2m. Os multiplicadores otimizados propostos são
aplicados em filtros digitais de resposta finita ao impulso e algoritmo de filtragem
adaptativa LMS.
1.2 Objetivos
O principal objetivo deste trabalho é implementar e analisar o desempenho de
diferentes arquiteturas de multiplicadores digitais de 16, 32 e 64 bits presentes na literatura.
São investigados circuitos multiplicadores paralelos, sendo estes chamados array Binário
na base 2m (COSTA, 2002). O uso de somadores eficientes do tipo compressores 4:2, 8:2 e
16:2 nas linhas de produtos parciais e a otimização dos blocos dedicados de multiplicação
m:m e 1:m também são 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 (desde m
= 2 – multiplicação na base 4 até m = 8 – multiplicação na base 256). A otimização destes
blocos permite explorar a principal característica do multiplicador array que é o aspecto da
regularidade. Assim, pode-se ter um circuito multiplicador regular com um reduzido
12
número de linhas de produtos parciais. Esta redução tem um impacto direto no aumento de
desempenho e redução do consumo de potência dos multiplicadores.
Uma ferramenta de geração automática dos circuitos multiplicadores, desenvolvida
no âmbito deste trabalho, chamada RAMAGT (JACCOTTET, 2008), permite a análise de
diferentes arquiteturas de multiplicadores com diferentes larguras de operandos e diferentes
bases de operação (desde 4 até 256). O objetivo desta ferramenta é a geração de uma
biblioteca de circuitos multiplicadores array com aspectos de aumento de desempenho e
redução do consumo de potência. Deve-se destacar que todas as técnicas propostas neste
trabalho estão agregadas à ferramenta de geração automática.
Como objetivo final deste trabalho, tem-se a aplicação dos multiplicadores
otimizados em arquiteturas dedicadas de filtros FIR e algoritmo de filtragem adaptativa
LMS.
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 (WESTE, 1994). A seguir são apresentados os principais ambientes de descrição,
análise e geração dos multiplicadores array na base 2m.
1.3.1 Ambientes de descrição e análise dos multiplicadores
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.1. A descrição do fluxo completo da metodologia utilizada neste trabalho, é apresentada
nos Anexos I e II. Inicialmente a descrição dos circuitos é realizada no formato BLIF
13
(Berkeley Logic Interchange Format) (BERKELEY, 2007), cujo objetivo é descrever uma
hierarquia do circuito no nível lógico na forma textual. Este formato é mapeado para uma
biblioteca que contém a funcionalidade das portas lógicas, além das informações de
capacitâncias e atrasos característicos.
(a)
(b)
Figura 1.1 – Metodologia para estimativa de área, atraso e potência dos circuitos multiplicadores array
na base 2m
Utiliza-se o ambiente SIS (SENTOVICH, 1992) para efeitos de síntese e simulação
dos circuitos, além de cálculos de área e atraso. Entretanto para estimativa do consumo de
potência dos circuitos, utiliza-se a ferramenta no nível de transistores SLS (GENDEREN,
1989).
Os valores de área são apresentados em termos do número de literais, onde 1 literal
corresponde aproximadamente a 2 transistores. Os valores de atraso são obtidos a partir do
modelo de atraso geral da biblioteca mcnc. Os valores do consumo de potência dos
circuitos são obtidos a partir da ferramenta SLS após a conversão do circuito do formato
BLIF para o formato no nível de transistores desta ferramenta. Os resultados de potência
são obtidos após a aplicação de 10000 vetores randômicos de excitação às entradas
primárias do circuito, de acordo com os resultados apresentados em (COSTA, 2002). Para
as simulações dos multiplicadores foi utilizada a tecnologia fishbone de 1.2 micrometros
14
(Sea of gates, CMOS, Semi-Custom, VDD=5V) (TUDELF, 2008). A ferramenta SLS simula
o comportamento do circuito ao longo do tempo. De acordo com os parâmetros do
transistor e suas interconexões, o atraso é calculado para as diferentes transições no
circuito. Neste cálculo, são utilizados os tamanhos dos transistores, as resistências de
interconexão e valores de capacitâncias. Para encontrar os tempos de subida e descida
assim como valores estáveis dos sinais. Os tempos de subida e descida são computados pela
interpretação de uma rede RC para cada nó do circuito. Desta forma, a dissipação média do
circuito é calculada considerando o atraso genérico de cada porta lógica do circuito.
A partir da descrição no formato BLIF dos circuitos, pode-se proceder à conversão
desta descrição para o formato VHDL (VHSIC – Very High Speed Integrated Circuits –
Hardware Description Language) (RUSHTON, 1998) utilizando um programa de
conversão especifico (blif2vhdl), como mostrado na Figura 1.1. Este fluxo possibilita a
prototipação dos circuitos multiplicadores voltada para FPGA (Field Programmable Gate
Array). Neste formato, realiza-se a síntese e a simulação das descrições dos multiplicadores
por intermédio do programa Quartus II (ALTERA, 2006) que utiliza componentes FPGA
da fabricante Altera (ALTERA, 2002). Os resultados de área, atraso e potência são obtidos
no próprio ambiente para o componente FPGA EP1S10B67C6 da família Stratix. Vale
ressaltar que este fluxo é utilizado neste trabalho, devido ao fato do hardware dedicado
para o algoritmo de filtragem adaptativa LMS estar descrito em linguagem VHDL. Neste
caso, os circuitos multiplicadores testados neste circuito são também descritos em VHDL.
1.3.2 Ferramenta automática de geração das descrições dos
circuitos multiplicadores (RAMAGT)
Com o aumento da complexidade dos sistemas digitais, torna-se cada vez mais
difícil a implementação de descrições textuais dos circuitos de forma manual. Em
particular, os circuitos multiplicadores desenvolvidos neste trabalho, apresentam uma
grande complexidade, principalmente para os casos onde se utiliza uma maior largura dos
operandos. Para contornar este problema, propõe-se neste trabalho uma ferramenta que
possa gerar automaticamente as descrições textuais dos circuitos multiplicadores array na
base 2m (JACCOTTET, 2008). A idéia desta ferramenta é gerar, de forma automática, as
15
descrições de multiplicadores na base 2m para qualquer largura de operandos (n bits) e para
m grupos de bits entre (m=2 – base 4 e m=8 – base 256).
A metodologia utilizada para o desenvolvimento da ferramenta RAMAGT é
mostrada no fluxo da Figura 1.2.
Figura 1.2 - Metodologia usada no desenvolvimento da ferramenta RAMAGT
Como pode ser verificado através da Figura 1.2, a ferramenta é implementada
usando duas linguagens de programação, uma delas é a C++ que gera arquivos executáveis
e a outra é chamada CSL (C Scripting Language) (KOCH, 2002) que é uma linguagem
interpretada que não necessita de compilação (OUSTERHOUT, 1998). A linguagem C++ é
utilizada para realizar a interface entre o usuário e o programa para estabelecer os
parâmetros da descrição a ser gerada automaticamente. As descrições dos blocos básicos de
multiplicação e soma dos circuitos estão dispostos em uma biblioteca onde, através da
linguagem CSL, ocorre a seleção e ligação destes blocos, conforme os parâmetros inseridos
pelo usuário. Outra característica desta ferramenta é a propriedade de poder gerar várias
descrições ao mesmo tempo, ou seja, pode-se abrir várias janelas da ferramenta
simultaneamente.
Na Figura 1.3 é mostrada a tela de seleção e inserção dos parâmetros da descrição
do multiplicador a ser gerado. Primeiramente é selecionado o valor do grupo de m (2 a 8).
O próximo passo é inserir a largura dos operandos do multiplicador e finalmente clicar no
botão “GERAR”. Os arquivos com as descrições geradas automaticamente são gravadas
16
em uma pasta especifica, tendo-se a possibilidade da inserção dos comentários da descrição
gerada. Isto pode ser realizado através da seleção do botão “NOTAS”.
Figura 1.3 - Tela principal da ferramenta RAMGAT
As descrições dos circuitos foram validadas na ferramenta SIS. Através da
ferramenta RAMAGT foi possível gerar automaticamente as descrições dos circuitos
multiplicadores na base 2m para 32 e 64 bits de uma forma rápida e confiável, pois a
geração de uma descrição leva em torno de um minuto. O aspecto da confiabilidade é
comprovado pelos testes preliminares efetuados nas descrições das bibliotecas.
Exemplos de descrições VHDL e BLIF, geradas automaticamente pela ferramenta
RAMAGT, de um multiplicador array de 4 bits é apresentado na Figura 1.4. Para
simplificar as figuras não são mostrados os sub-circuitos.
Figura 1.4 - Exemplo de descrições VHDL e BLIF geradas pela ferramenta RAMAGT
17
1.4 Principais contribuições do trabalho
Os principais aspectos deste trabalho estão baseados nas otimizações realizadas no
multiplicador array binário na base 2m apresentado em (COSTA, 2002). Para tal, as
seguintes contribuições são apresentadas:
•
desenvolvimento de uma ferramenta de geração automática parametrizável de
circuitos multiplicadores array Binário na base 2m nos formatos BLIF e VHDL;
•
implementação de circuitos multiplicadores array Binário na base 2m de 16, 32
e 64 bits com blocos dedicados de multiplicação otimizados. Estes blocos
dedicados estão presentes nos operandos do multiplicador. Foram realizadas
otimizações para blocos de multiplicação de m=2 até m=8.;
•
implementação de circuitos multiplicadores array Binário na base 2m de 16, 32 e
64 bits com circuitos somadores compressores 4:2, 8:2 e 16:2. Estes
compressores são utilizados para a redução do número de linhas de somas de
produtos parciais dos multiplicadores;
•
aplicação dos circuitos multiplicadores otimizados em arquiteturas dedicadas de
filtros FIR de coeficientes fixos e coeficientes adaptativos.
1.5 Sumário
Neste capitulo foram abordados os principais pontos motivacionais do trabalho. Os
objetivos e principais contribuições também foram apresentadas. Também foi apresentado
o fluxo da metodologia do trabalho, incluindo aspectos da ferramenta de geração
automática de multiplicadores array na base 2m de baixo consumo de potência. No próximo
capítulo serão abordadas as principais fontes de consumo de potência em circuitos CMOS.
18
2 POTÊNCIA EM CIRCUITOS CMOS
Neste capítulo são abordados os aspectos de consumo de potência e de propagação
em circuitos CMOS (Complementary Metal Oxide Semiconductor). São apresentados
alguns conceitos que envolvem as principais fontes de consumo de potência 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. Afinal
de contas, aquecimento e temperatura estão diretamente relacionados com a potência média
(NAJN, 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 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.
Neste capítulo são inicialmente apresentados alguns conceitos que envolvem as
principais fontes de consumo de potência em circuitos CMOS.
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.
19
Considerando as componentes acima, pode-se então especificar, de acordo com a
Equação 2.1, o consumo de potência total em circuitos CMOS:
PTOTAL = PSC + Pstatic + Pdin
(2.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 na porta 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 isto, para sinais de entrada com tempos de subida e descida finitos, é possível
se ter temporariamente um caminho direto de corrente que flui desde a fonte de tensão até
o terra.
A seguir são apresentados detalhes das principais fontes de consumo de potência em
circuitos CMOS.
2.1.1 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, 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.2.
20
Pstatic = I leakage .VDD
I leakage
 VTV

= I S  e T − 1




(2.2)
(2.3)
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 é visto na
Equação 2.3, onde IS é a corrente de saturação reversa, V é a tensão do diodo e VT=KT/q é
a tensão termal.
2.1.2 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 à 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 da fonte de alimentação 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.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.
21
A potência dinâmica ainda é a fonte dominante de consumo de potência, embora a
diferença vem se tornando menor em novas tecnologias que envolvem maiores escalas de
integração. (WILLIAMS, 1996). A componente de comutação dinâmica de dissipação de
potência (P ) em uma transição na saída de uma porta carregada por um capacitor C é
din
L
dada de acordo com a Equação 2.4 (CHANDRAKASAN, 1995), onde A é a atividade do nó
de saída, medida em eventos/segundo para uma carga/descarga completa.
Pdin =
(2.4)
1
1
2
2
C L AV DD = afC LVDD
2
2
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 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 f , então a potência é dada
clk
pela Equação 2.5.
Pdin =
1
2
C LVDD f clk
2
(2.5)
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 2.5.
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 (RABAEY,
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
22
atraso (PENZES, 2002). Desta maneira, um determinando nó de um circuito pode exibir
múltiplas transições em um único pulso de relógio 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 geração e propagação de sinais espúrios é mostrado na Figura 2.1.
Pode-se notar a geração de glitches na saída de uma porta e a propagação através de uma
porta. (FAVALLI, 1995)
Figura 2.1 – 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 Sumário
Este capítulo apresentou as principais fontes de consumo de potência em circuitos
digitais CMOS. Foram apresentadas as principais características das fontes de potência
estática, de curto-circuito e dinâmica, bem como aspectos de consumo de potência devido à
atividade de glitching Este estudo é importante, pois o principal foco deste trabalho é a
redução do consumo de potência dinâmica em circuitos multiplicadores array, pela redução
da atividade de chaveamento nos blocos dedicados de multiplicação e redução da atividade
de glitching ao longo da estrutura array do multiplicador. A seguir são apresentados os
principais operadores aritméticos somadores e multiplicadores explorados neste trabalho.
23
3 OPERADORES ARITMÉTICOS EFICIENTES
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
m
2 , foram 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 as suas implementações em layout.
Neste trabalho o principal objetivo é a otimização dos circuitos multiplicadores
apresentados em (COSTA, 2002). Para tal, são utilizadas técnicas que vão desde a
utilização de circuitos somadores eficientes, tais como Carry Save (CSA) e compressores,
até a otimização dos blocos dedicados de multiplicação, que permitem a operação de
multiplicação na base 2m. Estes novos circuitos multiplicadores são comparados com o
multiplicador estado da arte em termos de redução do consumo de potência, ou seja,
multiplicador Booth Modificado (KHATER, 1996). A seguir são apresentadas as principais
características do multiplicador array na base 2m. Também são mostrados alguns aspectos
do multiplicador Booth Modificado (alvo de comparação dos multiplicadores array
propostos neste trabalho), bem como as principais características dos somadores eficientes
usados para a otimização dos circuitos multiplicadores.
3.1 Estado da Arte de Circuitos Multiplicadores
Os circuitos multiplicadores para aplicações na área de 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
24
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
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), BaughWooley (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.
25
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;MILAR, 1992; GALLACHER,
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 2000a;
GOLDOVISKY, 2000). Em (YU 2000a), propõe-se um multiplicador Booth tipo CarrySave 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 (GOLDOVISKY, 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 cinco 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, 2002a), buscam-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, mostra-se que as novas
26
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.
Este trabalho de dissertação de mestrado busca tornar ainda mais eficientes as
arquiteturas de multiplicadores apresentadas em (COSTA, 2002) a partir da otimização dos
diferentes módulos de multiplicação dedicados que compõem a sua estrutura array, além da
utilização de circuitos somadores compressores que possibilitam uma grande redução nas
linhas de produtos parciais.
3.2
Operação
de
Multiplicação
na
Base
2m
em
Complemento de 2
Nesta Seção é apresentado um resumo das principais características do
multiplicador array na base 2m proposto em (COSTA, 2002). Esta arquitetura apresenta
como principais características a realização de operações em complemento de 2 e a
característica de apresentar a mesma regularidade de um multiplicador array convencional.
m
Para operações de uma multiplicação na base 2 , os operandos são divididos em
grupos de m bits. Cada um destes grupos pode ser visto como uma representação de um
m
m
digito em um base 2 . Conseqüentemente, a arquitetura de multiplicação na base 2 segue a
m
operação de multiplicação básica de números representados na base 2 . A operação nesta
base, em representação em complemento de 2, é mostrada na Equação 3.1.
W −1
A × B = A'×B − A' bw−1bW 2W −1 − aW −1 ∑ b j 2W −1+ j
m
−1
(3.1)
j =0
A Figura 3.1 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
27
multiplicação m x W. Nesta Figura, observam-se três tipos de multiplicação representados
por Tipo I, Tipo II e Tipo III. Estes módulos são mostrados na Figura 3.2.
Fig. 3.1 Exemplo de multiplicação de 4 bits base-4(m=2) em complemento de 2
m
Fig. 3.2 Estrutura geral para multiplicação na base 2 em complemento de 2
Para os W – m bits menos significativos dos operandos podem ser usadas
multiplicações sem sinal. Os módulos do 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 (operações de multiplicação em complemento de 2) é
requerido para qualquer tipo de multiplicação.
Na Figura 3.3 apresenta-se um exemplo concreto para uma multiplicação na base 4
(m = 2) e uma largura W = 8 bits. As estratégias utilizadas neste trabalho, propõem a
otimização dos blocos de multiplicação Tipo I, Tipo II e Tipo III e a redução do número de
linhas de produtos parciais para a redução do caminho crítico dos circuitos multiplicadores.
28
Figura 3.3 - Exemplo de multiplicador array base 4 de 8 bits em complemento de 2
3.3 Multiplicador Booth Modificado
Nesta Seção apresenta-se uma revisão sobre os aspectos de multiplicação do
algoritmo Booth Modificado. Este algoritmo tem um melhor desempenho do que o
29
algoritmo Booth original, pois opera na codificação na base 4, enquanto que o algoritmo
Booth original opera na base 2.
No Booth Modificado são gerados sinais de controle (0, +MD, +2MD, -MD e 2MD) , sendo MD é o termo multiplicando, a partir do operando do multiplicador para cada
grupo de 3 bits, como mostra o exemplo da Figura 3.4 para uma operação de 8 bits.
Figura 3.4 - Exemplo de multiplicação de 8 bits usando o algoritmo Booth Modificado
Um circuito multiplexador produz os produtos parciais, de acordo com o sinal de
controle codificado. Como se pode observar no exemplo da Figura 3.4, para reduzir o
número de produtos parciais no multiplicador Booth Modificado (KHATER, 1996), realizase uma operação em grupos de 3 bits no termo multiplicador (MR). Este termo é verificado
de 2 em 2 bits com sobreposição do terceiro bit. No algoritmo, considera-se um valor zero
virtual a direita do bit menos significativo. No algoritmo Booth também é utilizada a
técnica de extensão de sinal, para manter a regularidade da arquitetura (HWANG, 1979). A
Figura 3.5 apresenta a arquitetura de um multiplicador Booth Modificado de 8 bits.
30
Figura 3.5 - Exemplo de arquitetura Booth Modificado de 8 bits
Como pode ser visto na Figura 3.5, são necessários quatro circuitos operandos para
o cálculo dos termos dos produtos parciais. Esses circuitos são compostos por um
codificador e um multiplexador, que produzem o termo multiplicando de acordo com os 3
bits no termo multiplicador (MR). Os termos do produto parcial são deslocados pelos
circuitos somadores, que são também utilizados para produzir o resultado final.
Observa-se que as células Booth básicas não são simples circuitos somadores, como
nas arquiteturas array na base 2m. Ao contrário, as células do multiplicador Booth têm que
realizar operações de soma, subtração e deslocamento a esquerda dos bits do termo
multiplicando. Esta complexidade torna difícil a implementação de arquitetura Booth em
bases maiores do que 4.
3.4 Somador do tipo Carry Save Adder (CSA)
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 3.6.
31
Figura 3.6 - Exemplo de um somador Carry Save
Como pode ser observado na Figura 3.6, 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 3.7 mostra um exemplo de adição de seis números usando o somador
Carry Save (IMPERIAL, 2004)
Fig. 3.7 Exemplo de soma de números de 4 bits usando a estrutura Carry Save
Como é mostrado na Figura 3.7, 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
32
produz dois como saída, tal que
problema de computação
P+Q+ R
2∗C + S = P + Q + R .
para
2 ∗C + S
De fato, pode-se então converter o
sem esperar carry algum. Os módulos x2
mostrados na Figura 3.7 não requerem lógica adicional, sendo somente necessário a
conexão apropriada dos blocos. A soma final M + 2N representa uma soma normal de dois
números.
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. Neste trabalho, este somador é
utilizado na otimização dos blocos dedicados de multiplicação na base 2m .
3.5 Circuitos Somadores Compressores
Um dos objetivos deste trabalho é a aplicação de circuitos somadores eficientes nas
linhas de produtos parciais dos multiplicadores array para a aceleração da propagação de
carry ao longo das suas estruturas. Neste contexto, os circuitos compressores aparecem na
literatura como estruturas eficientes para a operação de soma, pois estes circuitos possuem
a capacidade de adicionar números com a mínima propagação de carry.
Em (WEINBERGER, 1981) foi apresentada uma estrutura de soma de números
chamada “4-2 Carry-Save module" na qual era possível a realização da soma simultânea de
quatro números. Esta estrutura foi posteriormente aperfeiçoada por (OKLOBDZIJA, 1996).
Esta estrutura contém uma combinação de células de somadores completos em conexão
truncada na qual possibilita uma rápida compressão dos produtos parciais. Como mostra a
Figura 3.8a, um compressor 4:2 possui cinco entradas e três saídas.
(a)
(b)
Figura 3.8 – Estrutura de um circuito somador compressor 4:2
33
As cinco entradas e a saída da soma possuem o mesmo peso (j), e as saídas Cout e
Carry possuem peso maior (j+1). Além disto, a saída Cout não é função de Cin. Com isto
não ocorre a propagação do carry. Para esta implementação as saídas da soma, do carry
intermediário e do carry (Carry) de saída (Cout) são expressas pelas Equações 3.2, 3.3 e 3.4
(PARHAMI, 1999).
S = [[( A ⊕ B ) ⊕ C ] ⊕ D ] ⊕ Cin
(3.2)
Cout = A.B + A.C + B.C
(3.3)
Carry = [( A ⊕ B ) ⊕ C ].(D + Cin ) + D.Cin
(3.4)
O compressor 4:2 descrito pelas equações acima possui um caminho critico dado
pela soma dos atrasos de quatro portas lógicas XOR conectadas em série, como mostra a
Equação 3.2. A Figura 3.8b mostra que este compressor pode ser implementado utilizando
dois somadores completos (full adders) em série, o que reforça o caminho crítico composto
pelas 4 portas lógicas XOR.
Tabela 3.1 - Tabela verdade de um compressor 4:2
A
B
C
D
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
1
Cout
0
0
0
0
0
0
1
1
0
0
1
1
1
1
1
Cin=0
Cin=1
Carry Sum Cout Carry Sum
0
0
0
0
1
0
1
0
1
0
0
1
0
1
0
1
0
0
1
1
0
1
0
1
0
1
0
0
1
1
0
0
1
0
1
0
1
1
1
0
0
1
0
1
0
1
0
0
1
1
0
0
1
0
1
0
1
1
1
0
0
0
1
0
1
0
1
1
1
0
1
0
1
1
1
34
A Tabela verdade de um compressor 4:2 é mostrada na Tabela 3.1. De fato, o
resultado de uma operação de soma usando compressor 4:2 será dado por: S+2(Cout +
Carry). Como pode ser visto em um exemplo da Tabela 3.1, com todos os valores de
entrada em nível lógico 1 (inclusive o termo Cin), o resultado será dado por 111 que é
equivalente a: [1+2(1+1)]=5.
Um aperfeiçoamento na estrutura de um circuito compressor 4:2, usando
multiplexador é mostrado na Figura 3.9 (OKLOBDZIJA, 1996). Esta estrutura possui um
caminho critico com seu valor de atraso máximo dado por três portas XOR, o que
representa um caminho crítico menor do que o mostrado na estrutura da Figura 3.8. Outra
vantagem deste tipo de estrutura é o fato de que o circuito multiplexador pode ser
otimizado no nível de transistores utilizando portas de transmissão. (PRASAD, 2001;
JIANG, 2004; RADHAKRISHNAN, 2000; GOPINEEDI, 2006)
Figura 3.9 - Um compressor 4:2 baseado em multiplexador
No capítulo 5 será mostrado o efeito da utilização destes circuitos compressores
para a redução do número de linhas de produtos parciais dos multiplicadores array na base
2m. Além disto, será mostrada a extensão do circuito compressor 4:2 para módulos de
operação 8:2 e 16:2.
35
3.6 Sumário
Neste capitulo foram apresentados os principais operadores aritméticos abordados
neste trabalho. Foram apresentadas revisões dos multiplicadores array na base 2m de
(COSTA, 2002) e multiplicador Booth Modificado. Também foram apresentadas as
principais características dos somadores Carry Save e Compressor 4:2. A extensão do
circuito compressor para estruturas maiores 8:2 e 16:2, bem como a utilização destes
somadores eficientes no multiplicador array na base 2m será apresentado no capítulo 5.
36
4.
OTIMIZAÇÕES
NOS
BLOCOS
DE
MULTIPLICAÇÃO NA BASE 2m
Como visto anteriormente, os multiplicadores array na base 2m agregam em seus
operandos três tipos de multiplicadores dedicados (Tipo I, Tipo II e Tipo III), que variam
de acordo com o tipo de operação realizada (multiplicações sem sinal e com sinal). A
Figura 4.1 mostra um exemplo de operando (operando I) com multiplicadores do Tipo I e
Tipo II.
Figura 4.1 – Exemplo de estrutura do Operando I
O bloco mais básico de multiplicação dos multiplicadores array na base 2m é o bloco
que opera na base 4 (m=2). Este bloco pode ser facilmente otimizado, tendo-se poucas
portas lógicas compondo o seu circuito. Para o bloco Tipo I, por exemplo, apenas oito
portas lógicas são necessárias para a sua implementação e a sua estrutura pode ser vista na
Figura 4.2. Os blocos de multiplicação Tipo II e Tipo III apresentam praticamente o mesmo
nível de complexidade.
Figura 4.2 - Representação do bloco Tipo I de multiplicação m=2
37
Embora os blocos que operam na base 4 sejam facilmente obtidos, esta mesma
característica não se aplica para operações em bases maiores do que quatro, onde o maior
número de entradas dos blocos de multiplicação dificultam otimizações manuais a partir de
mapas de Karnaugh (como é realizado para blocos m=2). Em (COSTA, 2002) os blocos de
multiplicação dedicados na base 16 (m=4) são gerados automaticamente pela ferramenta
SIS. Um arquivo texto com todas as entradas e saídas em PLA (Programmable Logic
Arrays) é sintetizado na ferramenta SIS. Este arquivo é mapeado em portas lógicas através
de uma biblioteca (mcnc.genlib) e finalmente convertido para o formato BLIF (Berkeley
Logic Interchange Format).
A Tabela 4.1 mostra resultados de área, atraso e consumo de potência para um
multiplicador array na base 4 utilizando blocos de multiplicação dedicados m=2. Nesta
Tabela, são mostrados resultados considerando blocos sintetizados na ferramenta SIS a
partir de descrição em PLA (Original) e considerando blocos otimizados a partir de mapas
de Karnaugh (Otimizado) (COSTA, 2002). Esta comparação é realizada para mostrar a
eficiência do processo de otimização dos blocos de multiplicação dedicados. Os resultados
mostrados na Tabela 4.1, e nas demais tabelas deste trabalho, são obtidos na ferramenta SIS
(área e atraso) e na ferramenta SLS (potência). Os multiplicadores são todos descritos no
formato BLIF. O resultado de área representa o número de literais, onde cada literal
corresponde a dois transistores. O atraso é dado de acordo com o atraso de cada porta
lógica presente no caminho crítico do multiplicador. A potência média é obtida na
ferramenta SLS, na tecnologia fishbone de 1.2 micrometros, onde se torna possível verificar
a atividade de glitching do circuito, visto que nesta ferramenta a estimação de potência é
realizada no nível de transistores. Para a estimação de potência são utilizados vetores
randômicos de 10000 pontos para todos os multiplicadores apresentados neste trabalho.
Este número de pontos é utilizado, pois representa um bom compromisso para a estimação
de potência, como apresentado em (COSTA, 2002).
Como pode ser observado na Tabela 4.1, o multiplicador de 16 bits que utiliza blocos
de multiplicação dedicados otimizados a partir de mapas de Karnaugh apresentam os
melhores resultados de área, atraso e consumo de potência. Embora este resultado aponte
para um caminho natural de otimizações para maiores bases, sem a síntese automática a
partir da ferramenta SIS, torna-se difícil a otimização destes blocos para bases maiores a
38
partir do uso de mapas de Karnaugh. Desta forma, surge a motivação deste trabalho, cujo
desafio a ser superado é a utilização de técnicas que possam otimizar os blocos de
multiplicação para grupos de multiplicação maiores do que m=2.
Tabela 4.1 - Resultados para multiplicadores m=2
Multiplicador 16 bits
Métricas
Original Otimizado Diferença Otim. vs. Orig. (%)
Área (literais)
5678
4602
-18,95
Atraso (ns)
231,70
227,80
-1,68
Potência (mW) 282,70
241,40
-14,61
A seguir são mostradas as técnicas de otimização dos blocos de multiplicação. Na
primeira parte são mostradas três diferentes técnicas aplicadas ao bloco de multiplicação
m=4 e os resultados são comparados com o multiplicador apresentado em (COSTA, 2002).
A seguir, a técnica que apresenta o melhor resultado é aplicada a blocos de multiplicação de
diferentes bases, cujos resultados são apresentados e comparados.
4.1 Técnicas para otimizações dos blocos de multiplicação
m=4
As técnicas de otimização apresentadas nesta Seção levam em consideração três
diferentes estratégias de implementação do bloco de multiplicação Tipo I na base 16 (m=4)
(PIEPER, 2008). Estas técnicas são naturalmente estendidas para os blocos do Tipo II e
Tipo III.
4.1.1. Otimização usando blocos de multiplicação m=2 e somadores
RCA
Nesta primeira alternativa o bloco de multiplicação na base 16 (m=4) utiliza na sua
estrutura, o bloco de multiplicação mais simples m=2. Os somadores do tipo Ripple Carry
(RCA) formam uma estrutura em árvore para a composição do bloco de multiplicação,
como mostra a Figura 4.3(b).
39
Figura 4.3 - Bloco de multiplicação (m=4) Tipo I composto por blocos m=2 e RCA
Um exemplo de multiplicação de dois números A e B sem sinal é mostrado na Figura
4.3(a). São utilizados três tipos de somadores, ou seja, somador completo (FA – Full
Adder), meio somador (HA – Half Adder) e um somador mais simples (representado por
2:1 na Figura 4.3), que faz a operação de soma do carry anterior com os dois bits do
operando. As letras utilizadas ao lado dos somadores são identificadores para os blocos
utilizados na Figura 4.3(b). Como pode ser visto na Figura 4.3(b), dois bits são
multiplicados de uma vez e grupos de dois bits das linhas parciais são somados para se
obter o resultado final. Uma última linha de somadores, do tipo RCA, faz a soma final dos
resultados parciais obtidos nas somas anteriores.
Como pode ser observado na Figura 4.3(b), somente um somador completo, três
meio-somadores e três somadores 2:1 são necessários para implementar a soma da linhas
dos produtos parciais. Neste bloco, o caminho crítico é composto pela soma dos atrasos de
um bloco de multiplicação (m=2) do Tipo I, um somador completo, dois meio somadores e
um somador 2:1, como pode ser observado através da linha pontilhada da Figura 4.3(b).
4.1.2. Otimização usando blocos de multiplicação m=2 e somadores
CSA
40
Nesta alternativa, utilizam-se os mesmos blocos de multiplicação da base 4 (m=2)
para compor o bloco de multiplicação do Tipo I na base 16. Porém, utiliza-se nesta
alternativa, o somador CSA (Carry Save Adder) para a soma das linhas parciais. Neste
somador, três números são somados simultaneamente, como mostrado anteriormente na
Seção 3.4. Em (FONSECA, 2005), os somadores CSA foram aplicados às linhas de
produtos parciais do multiplicador array na base 2m. Foram mostradas reduções de área,
atraso e potência no multiplicador, quando do uso de CSA. Neste trabalho, os somadores
CSA são utilizados para a composição da árvore de somas do módulo de multiplicação
dedicado m=4.
A Figura 4.4(a) mostra um exemplo de multiplicação de dois números sem sinal com
a respectiva indicação das somas dos produtos parciais gerados por cada bloco de
multiplicação na base 4. Pode-se notar que usando CSA três números podem ser somados
simultaneamente. A idéia básica é que estes três números possam ser reduzidos a dois,
como um compressor 3:2, mantendo os resultados da soma e do carry separados. Uma
última linha de soma do tipo RCA é responsável pela recombinação dos termos de soma e
carry gerados pela árvore de somadores CSA. A Figura 4.4(b) mostra o uso do somador
CSA na estrutura interna do bloco de multiplicação na base 16.
Figura 4.4 - Bloco de multiplicação (m=4) Tipo I composto por blocos m=2 e CSA
41
Como pode ser visto pela linha pontilhada da Figura 4.4(b), o caminho critico desta
técnica é composto pela soma dos atrasos de um bloco de multiplicação (m=2) do Tipo I,
um bloco de soma CSA, um meio somador e um somador completo. O fato de usar CSA
faz com que haja um bloco a menos de soma no caminho crítico em relação à técnica
anterior.
4.1.3. Uso de blocos de multiplicação dedicados 4:2 e RCA
Nesta alternativa, utiliza-se um bloco de multiplicação dedicado 4:2 para a
composição do bloco de multiplicação m=4. Devido ao maior número de entradas deste
bloco (6 entradas), foi utilizada uma metodologia similar à aplicada ao bloco original na
base 16, ou seja, a síntese automática do bloco de multiplicação dedicado 4:2 do Tipo I
através de uma descrição PLA. O bloco gerado é menos complexo do que um bloco de
multiplicação 4:4, pois este apresenta 44 portas lógicas contra as 385 portas lógicas de um
módulo de multiplicação 4:4. O exemplo de multiplicação de dois números sem sinal é
mostrado na Figura 5.5(a).
Figura 4.5 - Bloco de multiplicação (m=4) Tipo I composto por blocos de multiplicação 4:2
Como pode ser observado na Figura 4.5(b), a partir do uso de blocos de multiplicação
dedicados 4:2, torna-se necessário apenas uma linha de somadores do tipo RCA para a
soma dos produtos parciais.
42
O caminho crítico desta alternativa é composto por um bloco de multiplicação 4:2 e
uma linha de somadores RCA como é mostrado na linha pontilhada da Figura 4.5(b). Como
também deve ser observado nesta Figura, utiliza-se um bloco de soma dedicado (FA – 3
bit) para a soma simultânea de operandos de 3 bits.
4.1.4. Análise Comparativa
Nesta Seção, observam-se resultados de área, atraso e consumo de potência de um
multiplicador array na base 16 (m=4) de 16 bits utilizando as três alternativas para o bloco
de multiplicação na base 16 do Tipo I. Os multiplicadores com as três alternativas são
comparados ao multiplicador original, ou seja, o bloco de multiplicação 4:4 que é obtido a
partir da descrição em PLA e síntese automática na ferramenta SIS. Os principais
resultados são mostrados na Tabela 4.2.
Tabela 4.2 - Resultados de Área, atraso e potência para multiplicadores array de 16 bits na base 16
Alternativa
Área
%
Atraso (ns)
%
Potência (mW)
%
original
15932
-234,0
-214,09
-m=2 e RCA
7544 -52,65
204,8
-12,47
189,94
-11,28
m=2 e CSA
8612 -45,94
199,3
-14,83
190,42
-11,05
blocos 4:2 dedicados 7664 -51,89
200,3
-14,40
200,37
-6,41
Como pode ser observado na Tabela 4.2, os multiplicadores array que utilizam as três
alternativas propostas neste trabalho apresentam menores valores de área em relação à
versão original do multiplicador. Isto ocorre devido ao fato das três alternativas usarem
blocos de multiplicação dedicados mais simples. Também pode ser observado na Tabela
4.2 que a primeira alternativa (m=2 e RCA) apresenta a menor área entre as alternativas
analisadas. Isto devido ao fato desta estrutura utilizar blocos de multiplicação na base 4 e
somadores simples do tipo RCA.
Apesar do multiplicador com a segunda alternativa (m=2 e RCA) apresentar maior
área, este multiplicador apresenta o menor valor de atraso entre as estruturas estudadas,
como pode ser observado na Tabela 4.2. Isto ocorre devido a esta alternativa usar blocos
simples de multiplicação na base 4 e utilizar somadores CSA que são mais eficientes do
que os somadores RCA, como é mostrado em (PIEPER, 2007). O uso do somador CSA no
43
bloco de multiplicação da base 16 contribui para a redução da propagação de carry dentro
da estrutura, pois este transfere o carry na diagonal, como foi mostrado na Seção 3.4,
resultando assim na redução do caminho critico do circuito. De acordo com a Tabela 4.2, as
três alternativas são mais eficientes em termos de atraso do que a estrutura original. Na
verdade, foi observado que a complexidade do bloco original contribui para o aumento do
caminho critico na sua estrutura interna, o que lhe confere maior valor de atraso, como
mostrado na Tabela 4.2.
Como também pode ser observado na Tabela 4.2, os multiplicadores array binários
usando as três novas alternativas são mais eficientes em termos de consumo de potência
quando comparados com a estrutura original. Isto ocorre devido a estas três novas
estruturas apresentarem blocos mais simples e estruturas regulares as quais contribuem para
uma menor atividade de glitching dentro dos blocos de multiplicação. Em particular, o
multiplicador com a técnica m=2 e somador RCA no bloco dedicado de multiplicação é o
que apresenta a menor potência. Entretanto, deve-se observar que a diferença para a
segunda alternativa, que utiliza a técnica m=2 e somador CSA não é significativa.
De fato, quando se observa o produto atraso potência (PDP – Power Delay Product),
observa-se que a segunda alternativa é a que oferece a melhor relação, como pode ser
observado na Tabela 4.3. Desta forma, de acordo com os resultados apresentados na Tabela
4.3, define-se a segunda alternativa como a selecionada para a utilização em outros
multiplicadores com diferentes tamanhos de grupos de m bits, ou seja, operação em
diferentes bases.
Tabela 4.3 – Produto atraso-potência (AP)
Alternativa
Produto atraso-potência(ns.mW) (%)
original
50097,06
-m=2 e RCA
38899,71
-22,35
m=2 e CSA
37950,71
-24,24
blocos 4:2 dedicados
40134,11
-19,88
4.2 Aplicação da segunda técnica (m=2 e CSA) a diferentes valores de
m
De acordo com que foi mostrado na Seção anterior, conclui-se que as três alternativas
propostas são mais eficientes em termos de área, atraso e consumo de potência para o
multiplicador array binário de 16 bits comparando com a estrutura original.
44
Figura 4.6 - Exemplo completo de multiplicação de 8 bits m blocos m=4 otimizados Tipo I, Tipo II e Tipo III
45
Sendo que a segunda alternativa demonstrou o melhor resultado na relação atraso
versus consumo de potência. Desta forma, esta técnica é também aplicada a blocos de
multiplicação do Tipo II e III que são partes integrantes do bloco operando II do
multiplicador array. Também, esta técnica é aplicada a diferentes tamanhos de
multiplicadores (16, 32 e 64 bits) com diferentes grupos de m bits.
A Figura 4.6 mostra a segunda alternativa de otimização aplicada aos blocos de
multiplicação Tipo I, Tipo II e Tipo III, para um exemplo de multiplicação de 8 bits (A=-1
x B=-1). Observa-se que esta técnica pode ser facilmente aplicada aos três blocos de
multiplicação, tendo-se o mesmo caminho crítico para os três blocos, sendo este composto
por um bloco de multiplicação m=2, um somador CSA, um FA, um HA.
As linhas parciais são obtidas a partir de blocos de multiplicação dedicados de 4 bits
(m=4). A principal diferença entre as operações está na extensão de sinal que se faz
necessária nos blocos de multiplicação Tipo II e Tipo III, pois estes operam com números
com sinal.
A partir da otimização do bloco m=4 com a segunda alternativa proposta, pode-se
naturalmente estender esta técnica para diferentes blocos de multiplicação.
No caso do bloco na base 256 (m=8), pode-se obtê-lo a partir da utilização dos blocos
m=4, já previamente otimizados, como mostra o exemplo da Figura 4.7, para um exemplo
de multiplicação de 16 bits sem sinal.
Nota-se a hierarquia possível na implementação de blocos com diferentes valores de
m. Na verdade, a partir de estruturas mais simples, pode-se implementar estruturas mais
complexas.
No exemplo da Figura 4.7, um módulo m=8 pode ser obtido a partir de uma árvore de
blocos m=4, que por sua vez são construídos a partir de blocos mais simples m=2.
Esta característica abre uma perspectiva de exploração de espaço de projeto, onde
diferentes alternativas podem ser testadas antes da implementação final do circuito. Neste
caso, a técnica pode ser adaptada para diferentes valores de m, como mostra a Tabela 4.4.
46
Figura 4.7 - Exemplo de uma multiplicação de 16 bits com blocos de multiplicação m=8 otimizados
A Tabela 4.4 mostra também as diferentes possibilidades de implementação de blocos
de multiplicação a partir de blocos previamente otimizados. Na primeira coluna da Tabela
são indicados os valores dos blocos de multiplicação dedicados a serem implementados. A
segunda coluna representa o número de otimizações que foram implementadas para cada
valor de m. Finalmente, a terceira coluna da tabela mostra o tipo de otimização que utiliza
os blocos previamente implementados.
Tabela 4.4 - Possibilidades de otimizações dos blocos de multiplicação
Valor de m
3
4
5
6
8
Número de
Característica
Otimizações
1
Otimizado 1: bloco m=2 otimizado + blocos dedicados 1:2
Otimizado 1: blocos m=2 otimizado
2
Otimizado 2: bloco m=3 otimizado + blocos dedicados 1:3
Otimizado 1: bloco m=4 + blocos dedicados 1:4
2
Otimizado 2: bloco m=3 otimizado + bloco m=2 otimizado
Otimizado 1: bloco m=4 otimizado + bloco m=2 otimizado
3
Otimizado 2: bloco m=5 otimizado + blocos dedicados 1:5
Otimizado 3: blocos m=3 otimizados
1
Otimizado 1: blocos m=4 otimizados
47
Deve-se observar na Tabela 4.4 que, para cada valor de m, existe a possibilidade da
utilização de blocos irregulares 1:m, para os casos, onde há quebras na operação de
multiplicação. Esses blocos 1:m podem ser obtidos utilizando as mesmas técnicas
anteriormente mostradas na Seção 4.1.2, para implementações dos blocos de multiplicação
m=4 ou a partir de mapas de Karnaugh, quando a complexidade do bloco 1:m não for
elevado, como por exemplo, no bloco 1:3.
-
Figura 4.8 - Bloco de multiplicação otimizado m=3 utilizando blocos dedicados 1:2
A Figura 4.8 mostra um exemplo de multiplicação de 3 bits do Tipo I, onde se faz
necessária uma quebra dos blocos de multiplicação. Neste caso, serão utilizados blocos 1:2
do Tipo I, que são facilmente obtidos por mapas de Karnaugh que permitem a
simplificação destes blocos para simplesmente duas portas AND, como mostrado na Figura
5.8. Para o bloco de multiplicação m=3, apenas um bloco de multiplicação do Tipo I m=2,
um somador CSA e um somador 2:1 estão presentes no caminho crítico.
4.2.1 Análise comparativa entre multiplicadores com diferentes
valores de m
As Tabelas 4.5, 4.6, 4.7 e 4.8 mostram resultados de área, atraso e consumo de
potência de multiplicadores com diferentes blocos otimizados para tamanhos de operandos
48
de 16, 32 e 64 bits. Todos os multiplicadores são comparados com os multiplicadores
originais que são sintetizados na ferramenta SIS a partir de descrições PLA.
Tabela 4.5 -Resultados para multiplicadores m=3
bloco
Área (literais)
Atraso (ns)
Potência (W)
Original
8382
218,50
0,2315
16 bits
Otimizado 1 5117 -38,95(%) 227,30 3,87(%) 0,2031 -12,28(%)
Original
31849
448,50
1,6609
32 bits
Otimizado 1 18951 -40,50(%) 457,30 1,96(%) 1,5640 -5,83(%)
Original
130622
919,30
13,9721
64 bits
Otimizado 1 75581 -42,14(%) 928,10 0,96(%) 13,554 -2,99(%)
Tabela 4.6 - Resultados para multiplicadores m=4
Original
16 bits Otimizado
Otimizado
Original
32 bits Otimizado
Otimizado
Original
64 bits Otimizado
Otimizado
Área (literais)
14983
5102 -65,95(%)
6547 -56,30(%)
61935
20166 -67,44(%)
26115 -57,83(%)
251551
79862 -68,25(%)
104035 -58,64(%)
1
2
1
2
1
2
Atraso (ns)
Potência (W)
206,2
0,22925
205,70 -0,24(%) 0,15812 -31,03(%)
215,90 +4,70(%) 0,21694 -5,37(%)
431,4
1,4635
430,90 -0,12(%)
1,126 -23,06(%)
441,10 +2,25(%) 1,3981 -4,47(%)
881,3
10,3773
881,30 -0,06(%) 8,8869 -14,36(%)
891,50 +1,10(%) 10,046 -3,19(%)
Tabela 4.7 - Resultados para multiplicadores m=5
Original
16 bits Otimizado
Otimizado
Original
32 bits Otimizado
Otimizado
Original
64 bits Otimizado
Otimizado
1
2
1
2
1
2
Área (literais)
33452
6290 -81,20(%)
6821 -79,61(%)
131061
21177 -83,84(%)
23265 -82,25(%)
542804
80852 -85,10(%)
89204 -83,57(%)
Atraso (ns)
Potência (W)
234,5
0,37486
222,8 -4,99(%) 0,22263 -40,61(%)
218,7 -6,74(%) 0,18889 -49,61(%)
458,9
1,8387
447,2 -2,55(%) 1,392 -24,29(%)
443,1 -3,44(%) 1,2042 -34,51(%)
893,7
10,72
882 -1,31(%) 8,3658 -21,96(%)
887,9 -0,65(%) 7,5584 -29,49(%)
49
Tabela 4.8 -Resultados para multiplicadores m=6
Original
Otimizado
16 bits
Otimizado
Otimizado
Original
Otimizado
32 bits
Otimizado
Otimizado
Original
Otimizado
64 bits
Otimizado
Otimizado
1
2
3
1
2
3
1
2
3
Área (literais)
61758
5336 -91,36(%)
5276 -91,46(%)
5260 -91,48(%)
325885
21934 -93,27(%)
21569 -93,38(%)
21469 -93,41(%)
1505800
82136 -94,55(%)
80863 -94,63(%)
80236 -94,67(%)
Atraso (ns)
Potência (W)
322,7
0,5144
217,5 -32,60(%) 0,1975 -61,61(%)
234,5 -27,33(%) 0,2537 -50,68(%)
210,7 -34,71(%) 0,194 -62,29(%)
536,1
2,947
430,9 -19,62(%) 1,1736 -60,18(%)
447,9 -16,45(%) 1,6179 -45,10(%)
424,1 -20,89(%) 1,1174 -62,08(%)
973,1
15,7465
867,9 -10,81(%) 6,50823 -58,67(%)
884,9 -9,06(%) 8,42168 -46,52(%)
861,1 -11,51(%) 6,34854 -59,68(%)
Em relação aos resultados de área, observa-se a redução significativa em todos os
multiplicadores, que utilizam blocos de multiplicação otimizados em relação ao
multiplicador com bloco original. Isto ocorre devido ao fato dos circuitos otimizados
usarem circuitos mais simples com menos portas lógicas em relação à estrutura original.
Os valores de atraso apresentam variações de acordo com os valores de m utilizados
para a otimização dos módulos de multiplicação. Entretanto, deve-se observar nesta mesma
tabela que o aumento do número de bits reduz a diferença de atraso em relação ao
multiplicador com blocos de multiplicação originais. Isto se explica pelo aumento do
número de linhas de produtos parciais dos multiplicadores com o aumento do número de
bits, com correspondente aumento no caminho crítico e, conseqüentemente, aumento nos
valores de atraso.
Observa-se também que o aumento do valor de m reflete diretamente nas diferenças
entre os valores de atraso, em relação aos multiplicadores com bloco de multiplicação
original. Este fato é decorrente da complexidade dos blocos de multiplicação originais
variarem exponencialmente com o acréscimo do valor de m. Para os multiplicadores com
blocos m=6, por exemplo, as diferenças em atraso em relação aos multiplicadores originais
é significativa, como pode ser visto na Tabela 4.8. Isto ocorre devido ao fato destes blocos
m=6 originais serem bem mais complexo em relação aos demais blocos originais. Desta
forma, o impacto da otimização realizada neste bloco aparece de forma mais significativa
O aspecto da regularidade dos multiplicadores é um ponto importante que apresenta
um forte impacto nos valores de atraso. Deve-se observar que mesmo usando blocos m=3
50
na sua estrutura, os multiplicadores com blocos m=4 (Otimizado 2) apresentam maiores
valores de atraso em relação aos multiplicadores com os blocos originais, como pode ser
observado nos valores de multiplicadores na linha Otimizado 2 da Tabela 4.6. Para esta
alternativa, os multiplicadores utilizam quebra de blocos (blocos m=3 otimizados + blocos
dedicados 1:3). Esta quebra de regularidade afeta os valores de atraso dos multiplicadores,
fazendo com que estes apresentem maiores valores de atraso, quando comparados aos
multiplicadores com blocos originais. Entretanto, deve-se observar que este mesmo aspecto
não se aplica aos multiplicadores com blocos m=5 (que utilizam blocos 1:4) e m=6 (que
utilizam blocos 1:5). De fato, como os blocos originais m=5 e m=6 são bem mais
complexos, logo o impacto da utilização das estruturas 1:4 e 1:5 não compromete os
valores de atraso.
O fato de todos os blocos serem otimizados faz com que os multiplicadores de 16, 32
e 64 bits apresentem menor consumo de potência em relação aos multiplicadores com
blocos originais, como pode ser visto nas Tabelas 4.5, 4.6, 4.7 e 4.8. Isto se explica pelo
fato dos blocos otimizados apresentarem estruturas mais simples e menores caminhos
críticos, quando comparados aos blocos originais otimizados pela ferramenta SIS. Esta
estrutura mais simples dos blocos otimizados contribui para a redução da atividade de
glitching internamente nos blocos, o que por sua vez, contribui significativamente para a
redução do consumo de potência dos multiplicadores de 16, 32 e 64 bits.
Deve-se observar, entretanto, que os multiplicadores que utilizam a segunda
alternativa de otimização (Otimizado 2) nos blocos m=4 não apresentam uma diferença
significativa de consumo de potência em relação aos multiplicadores com blocos originais,
como pode ser visto na Tabela 4.7. Estes resultados reforçam o aspecto de que a utilização
desta alternativa nos blocos m=4 afetam de forma negativa o atraso (devido à utilização de
blocos 1:3), o que por sua vez compromete o consumo de potência dos multiplicadores que
utilizam esta alternativa arquitetural.
Como se pode notar dos resultados apresentados nas Tabelas 4.5, 4.6, 4.7 e 4.8, os
circuitos multiplicadores que utilizam os blocos de multiplicação na versão original,
apresentam um aumento de área exponencial com o aumento do valor de m. Desta forma,
as simulações dos circuitos tornam-se com alto custo computacional. Por exemplo, para o
circuito multiplicador na base 64 (m=6) de 64 bits são necessárias 161 horas para a
51
obtenção do resultado de estimativa de potência. Portanto, para os circuitos na base 256
(m=8) não foram realizada simulações com os circuitos multiplicadores na versão original.
A técnica de otimização empregada aos blocos de multiplicação (m=8) é a partir da
utilização de blocos m=4 otimizados, pois de acordo com as Tabelas 4.6 e 4.8 os
multiplicadores na base 16 (Otimizado 1) e base 64 (Otimizado 3) obtiveram os melhores
resultados de redução do valor de potência entre as otimizações estudadas. Além disto,
estas otimizações foram implementadas através de blocos dedicados de multiplicação
regulares, ou seja, sem a necessidade de quebra de operação de multiplicação (sem a
utilização de blocos 1:m). Para os circuitos multiplicadores na base 256 (m=8) são
utilizados os blocos de multiplicação m=4 Otimizado 1, que foram apresentados na Seção
4.1.2. Os resultados em termos de área, atraso e consumo de potência para o circuito
multiplicador m=8 Otimizado 1 são mostrados na Tabela 4.9. O impacto destes resultados
comparado com os multiplicadores utilizando valores menores de m, mostrados
anteriormente nas Tabelas 4.5, 4.6, 4.7 e 4.8 são mostrados nos gráficos da Figura 4.9, para
multiplicadores de 16, 32 e 64 bits.
Tabela 4.9 - Resultados das simulações para m=8 Otimizado
16 bits 32 bits 64 bits
Área (literais)
5772
22552 88080
Atraso (ns)
201,90 414,50 839,70
Potência (W) 0,19655 1,0152 5,2313
Atraso para multiplicadores para diferentes m
100000
1200
80000
1000
Atraso (ns)
Area (literais)
Área para multiplicadores para diferentes m
60000
40000
20000
800
600
400
200
0
0
16 bits
32 bits
Tamanho do Multiplicador
64 bits
16 bits
32 bits
Tamanho do Multiplicador
64 bits
52
Potência para multiplicadores para diferentes m
25
(m=2)
Potência (W)
20
(m=3)
15
(m=4)
10
(m=5)
(m=6)
5
(m=8)
0
16 bits
32 bits
64 bits
Tamanho do Multiplicador
Figura 4.9 - Gráficos com os resultados de área, atraso e consumo de potência dos multiplicadores para
diferentes valores de m
Os resultados na Tabela 4.9 mostram que apesar dos multiplicadores com m=8
estarem entre os que apresentam os maiores valores de área, entre os multiplicadores
otimizados, estes circuitos apresentam os menores valores de atraso e consumo de potência
para os multiplicadores de 32 e 64 bits, como mostram os gráficos da Figura 4.9. Isto se
explica pelo fato dos multiplicadores que utilizam blocos de multiplicação m=8 terem uma
redução significativa das suas linhas de produtos parciais.
Além disto, o fato dos módulos de multiplicação dedicados m=8 otimizados
apresentarem uma estrutura simples (a partir da utilização de blocos m=4), também
contribui para significativas reduções de valores de atraso e potência dos multiplicadores
array na base 256.
Esta diferença se torna mais significativa para circuitos com valores maiores de
operandos (64 bits), onde apenas 7 linhas de produtos parciais são necessárias na estrutura
array. Esta diferença do número de linhas de produtos parciais pode ser vista na Tabela 5.3.
4.2.2 Análise comparativa entre circuitos multiplicadores array na
base 2m e Booth modificado
Nesta Seção é apresentado uma comparação dos multiplicadores array na base 2m
com os blocos de multiplicação otimizados em relação ao multiplicador Booth Modificado.
Em (COSTA, 2002) foi mostrado que o multiplicador array nas bases 4 e 16 são mais
eficientes do que o multiplicador Booth. Entretanto, o multiplicador na base 16 utilizou
53
blocos dedicados de multiplicação originais (otimizados a partir de descrição PLA e síntese
automática na ferramenta SIS).
Além disso, o trabalho de (COSTA, 2002) levou em conta apenas comparações de
multiplicadores de 16 bits. Neste trabalho, apresenta-se uma extensão destas comparações
com multiplicadores de 16, 32 e 64 bits utilizando variados blocos de grupos de m bits
otimizados.
O multiplicador Booth opera na base 4, enquanto os multiplicadores array operam
nas bases 4 (m=2), 16 (m=4) e 256 (m=8). A Tabela 4.10 mostra os resultados de área,
atraso e potência para os multiplicadores analisados.
Tabela 4.10 - Resultados das simulações dos Multiplicadores na base 2m e Booth Modificado
Booth
m=2 Otimizado
16 bits m=4 Otimizado
m=8 Otimizado
Booth
m=2 Otimizado
32 bits
m=4 Otimizado
m=8 Otimizado
Booth
m=2 Otimizado
64 bits
m=4 Otimizado
m=8 Otimizado
Área (literais)
3708
4602 +19,43(%)
5102 +27,32(%)
5772 +35,76(%)
14596
18586 +21,47(%)
20166 +27,62(%)
22552 +35,28(%)
57876
74586 +22,40(%)
79862 +27,53(%)
88080 +34,29(%)
Atraso (ns)
233,7
227,8 -2,52(%)
205,7 -11,98(%)
201,9 -13,61(%)
474,7
478,2 +0,73(%)
430,9 -9,23(%)
414,5 -12,68(%)
959,2
979
+2,02(%)
881,3 -8,12(%)
839,7 -12,46(%)
Potência (W)
0,09525
0,06664 -30,04(%)
0,06013 -36,87(%)
0,06899 -27,57(%)
0,7046
0,43368 -38,45(%)
0,35525 -49,58(%)
0,32264 -54,21(%)
5,5183
3,1296 -43,29(%)
1,8405 -66,65(%)
1,7751 -67,83(%)
Como já abordado anteriormente em (COSTA, 2002), os multiplicadores array
apresentam maiores valores de área em relação ao multiplicador Booth, como pode ser
observado na Tabela 4.10. Isto devido ao fato das arquiteturas array apresentarem um
maior número de elementos lógicos nos blocos de multiplicação. Porém, os multiplicadores
array apresentam menor atraso em relação ao Booth Modificado, principalmente para m>2.
De fato, o multiplicador Booth necessita de um esquema de codificação e um
multiplexador, que são responsáveis por produzir o termo multiplicando, de acordo com os
3 bits no termo multiplicador. Estes circuitos apresentam uma maior complexidade, com
uma maior quantidade de interconexões e maior valor de atraso comparado ao módulo
multiplicador básico das arquiteturas array.
54
A complexidade destes circuitos aumenta com o aumento do número de bits, o que
compromete ainda mais o atraso do multiplicador Booth. Isto pode ser comprovado pelos
maiores valores de atraso apresentados pelos multiplicadores Booth de 32 e 64 bits
comparados com o multiplicador array na base 4, como pode ser visto na Tabela 4.10.
Deve-se observar nesta Tabela que os multiplicadores com blocos dedicados m=8
apresentam os menores valores de atraso. Isto se explica pelo fato destes multiplicadores
reduzirem mais o número de linhas de somas de produtos parciais, o que reduz o caminho
crítico. Além disto, estes blocos m=8 são implementados a partir de blocos m=4 otimizados
que apresentam complexidade reduzida.
Em (CALLAWAY, 1993) foi mostrado que uma das maiores fontes de dissipação
de potência em circuitos multiplicadores podem ser as transições espúrias (glitching) e
corridas lógicas que fluem através do array.
Desta forma, o maior número de interconexões presentes no multiplicador Booth é
responsável pela geração de uma significativa quantidade de atividade de glitching no
circuito, o que justifica um grande ganho em potência dos multiplicadores array que
operam na base 2m como pode ser observado na Tabela 4.10. Em particular, os
multiplicadores array com blocos de otimização m=8. Estes valores estão coerentes com os
menores valores de atraso apresentados pelos multiplicadores com estes blocos. Estes
menores valores de atraso têm um bom impacto na redução do consumo de potência dos
multiplicadores com blocos m=8, principalmente pelas características de regularidade
apresentadas por estes blocos, e grande redução das linhas de produtos parciais na estrutura
array dos multiplicadores. A Figura 4.10 mostra gráficos comparativos de valores de área,
atraso e consumo de potência dos multiplicadores apresentados na Tabela 4.10.
Pode-se visualizar através dos gráficos da Figura 4.10 que a área aumenta com o
aumento da largura do multiplicador, e que o multiplicador Booth modificado possui menor
área em comparação aos multiplicadores array na base 2m. Em termos de atraso os
multiplicadores array nas bases maiores do que 4 possuem melhores valores de atraso
devido a redução das linhas de soma dos produtos parciais comparados com o multiplicador
Booth modificado.
Em relação ao consumo de potência os multiplicadores array mostraram-se mais
eficientes pois estas arquiteturas possuem menor profundidade lógica o que reduz a
55
atividade de glichting ao longo do array com foi dito anteriormente. Com isto diferenças
significativas nos valores de consumo de potência podem ser verificadas quando são
comparados os circuitos multiplicadores Booth Modificado e o multiplicador array na base
256.
Atraso
1000
80000
800
Atraso (ns)
100000
60000
40000
20000
600
400
200
0
0
16 bits
32 bits
64 bits
16 bits
32 bits
Tamanho do Multiplicador
Tamanho do Multiplicador
Potência
Potência
0,12
0,1
0,08
0,06
0,04
0,02
0
Potência (W)
0,8
0,6
0,4
0,2
0
16 bits
32 bits
Tam anho do Multiplicador
Tam anho do Multiplicador
Potência
6
5
Potência (W)
Potência (W)
Area (literais)
Área
Booth
4
(m=2) Otimizado
3
(m=4) Otimizado
2
(m=8) Otimizado
1
0
64 bits
Tam anho do Multiplicador
Figura 4.10 - Gráficos das simulações dos multiplicador para área, atraso e potência.
64 bits
56
4.3 Sumário
Nesta Seção foram apresentadas as otimizações dos blocos de multiplicação
dedicados das arquiteturas do multiplicador array na base 2m. Resultados em termos de
área, atraso e consumo de potência foram mostrados, assim como uma comparação com o
multiplicador Booth Modificado. Concluiu-se que na maioria dos multiplicadores, a
redução do número de linhas de soma dos produtos parciais acarreta em significativas
reduções no atraso e no consumo de potência dos circuitos, principalmente para os
multiplicadores de 64 bits. Desta forma, torna-se importante a aplicação de circuitos
somadores compressores que podem reduzir ainda mais o número de linhas de somas de
produtos parciais. O próximo capítulo apresenta um estudo da aplicação de compressores
4:2, 8:2 e 16:2 nos multiplicadores array.
57
5
CIRCUITOS
APLICADOS
SOMADORES
AOS
EFICIENTES
MULTIPLICADORES
ARRAY NA BASE 2m
Na Seção 3.5 foi mostrada uma introdução sobre os somadores compressores, assim
como a apresentação da estrutura interna do compressor 4:2 (OKLOBDZIJA, 1996). Neste
capítulo, apresenta-se uma extensão dos circuitos compressores para maiores estruturas (8:2
e 16:2) e também a aplicação destes somadores compressores nas linhas de somas dos
produtos parciais dos multiplicadores array na base 2m.
5.1 Extensão dos Circuitos Somadores Compressores para
Blocos 8:2 e 16:2
Circuitos somadores compressores com maior taxa de compressão, ou seja, maiores
valores de somas simultâneas de operandos, podem ser construídos através do compressor
4:2.
A representação geral para o cálculo da soma simultânea de operandos, a partir de
circuitos compressores, é mostrada na Equação 5.1, onde m representa o tipo de compressor
a ser utilizado (neste trabalho 4:2, 8:2 ou 16:2), ai são as entradas primárias e l é o índice de
Cin e Cout. (ZIMMERMANN, 1999)
(5.1)
A estrutura de um somador compressor 8:2 construído a partir de compressores 4:2
é mostrado na Figura 5.1.
58
Figura 5.6 - Estrutura interna de um compressor 8:2
Através da estrutura do compressor 8:2 mostrado na Figura 5.1, verifica-se que o
bloco é composto por treze entradas, sendo oito delas primárias (A, B,C, D, E, F, G e H) e
cinco entradas de carry de entrada - Cin (Cin0, Cin1, Cin2, Cin3 e Cin4). A estrutura do
compressor também apresenta sete saídas, sendo duas primárias (Sum e Carry) e cinco para
carry de saída - Cout (Cout0, Cout1, Cout2, Cout3 e Cout4). Assim como no compressor
4:2, o compressor 8:2 tem suas entradas e a saída Sum com peso (j) e as saídas restantes
com peso (j+1), sendo que o resultado do valor da soma (R) é dado através da Equação 5.2.
R = Sum + 2(Cout0 + Couot1 + Cout2 + Cout3 + Cout4 + Carry)
(5.2)
A Tabela 5.1 - Tabela verdade de um compressor 8:2
Valor Entrada [j]
0
1
2
3
4
5
6
7
8
9
10
11
11
13
(Cout0 + Couot1 + Cout2 + Cout3 + Cout4 + Carry) [j+1]
Resultado Parcial
0
0
1
1
2
2
3
3
4
4
5
5
6
6
Sum (j)
R
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
2
3
4
5
6
7
8
9
10
11
12
13
59
Por exemplo, se todas as entradas estiverem em nível lógico 1, o resultado da soma
será: R = 1 + 2(1+1+1+1+1+1) = 13, conforme é verificado na Tabela 5.1, pois com a
entrada (j) igual a 13, a saída com peso (j+1) é igual a 6 e a saída Sum com peso j é igual a
1. A interpretação deste resultado está estabelecida no aspecto de que o valor 6 (mostrado
na coluna resultado parcial) multiplicado por 2 (peso j+1 =2) é somado ao valor de Sum de
valor igual a 1 (peso j = 1). O mesmo raciocínio é utilizado para os demais valores da
Tabela 5.1.
A partir do projeto de compressores 8:2, torna-se factível a utilização destes para a
expansão da estrutura para um maior número de somas simultâneas. Neste trabalho, utilizase os compressores 4:2 e 8:2 como base para o projeto de compressores 16:2. Este tipo de
estrutura possibilita a realização de somas de até dezesseis operandos simultaneamente. A
Figura 5.2 mostra o diagrama em blocos do compressor 16:2.
Figura 5.2 - Estrutura interna de um compressor 16:2
O compressor 16:2 é composto por 29 entradas, sendo dezesseis delas primárias (A,
B, C, D, E, F, G, H, I, J, L, M, N, O, P e Q) e treze entradas de carry de entrada - Cin
(Cin0, Cin1, Cin2, Cin3, Cin4, Cin5, Cin6, Cin7, Cin8, Cin9, Cin10, Cin11 e Cin12). A
estrutura também apresenta quinze saídas, sendo duas primárias (Sum e Carry) e treze para
carry de saída - Cout (Cout0, Cout1, Cout2, Cout3, Cout4, Cout5, Cout6, Cout7, Cout8,
Cout9, Cout10, Cout11 e Cout12). Assim como nos outros dois compressores apresentados,
60
o compressor 16:2 segue a mesma filosofia da utilização das suas entradas e a saída Sum
com peso (j) e as saídas restantes com peso (j+1), como mostra a Tabela 5.2.
Tabela 5.2 - Tabela verdade de um compressor 16:2
(Cout0 + … + Cout12 + Carry) [j+1]
Valor Entrada [j]
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Resultado Parcial
0
0
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10
11
11
12
12
13
13
14
14
Sum (j)
R
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Para a obtenção dos valores de soma, a partir dos valores de entrada, faz-se
necessário também o uso de uma expressão representativa, mostrada na Equação (5.3).
R = Sum + 2(Cout0 + …+ Cout12 + Carry)
(5.3)
61
Se todas as entradas estiverem em nível lógico 1, assim como as entradas de carry
de entrada (Cin), a soma deverá apresentar um valor igual a 29. Desta forma, de acordo com
a Equação 5.3: R= 1+2(1+1+1+1+1+1+1+1+1+1+1+1+1+1) = 29. Assim como para o
compressor 8:2, observa-se a influência dos pesos nos resultados apresentados na Tabela
5.2. Por exemplo, para o valor de entrada igual a 29, o resultado de soma é obtido a partir
do valor de saída igual a 14, que deve ser multiplicado por 2 (devido ao peso j+1), somado
ao valor Sum igual a 1 (devido ao peso j).
5.2 Aplicação dos Compressores a Multiplicadores Array
na Base 2m
No capitulo 4 verificou-se que a redução das linhas de soma dos produtos parciais
reduzem a profundidade lógica do circuito, e conseqüentemente, ocorre a redução do
atraso. Concluiu-se também que o consumo de potência é reduzido com o menor número de
linhas de somas nas arquiteturas dos multiplicadores array na base 2m, devido a menor
atividade de sinais espúrios ao longo da estrutura array. Essa redução das linhas de somas
dos produtos parciais pode ser obtida a partir da utilização de circuitos somadores
compressores, pois estes realizam a soma simultânea de vários operandos. O tipo de
circuito compressor a ser utilizado depende do número de operandos presente na estrutura
array do multiplicador. O número de blocos de operandos em circuitos multiplicadores
(n_op) é dado através da Equação 5.4, onde W é a largura do multiplicador e m é o grupo de
bits que são multiplicados simultaneamente.
n _ op =
W
m
(5.4)
Por exemplo, de acordo com a Equação 5.4, para um multiplicador de 16 bits
operando na base 16 (m=4), tem-se que n_op=4. Logo, estes quatro operandos podem ser
somados por circuitos somadores compressores 4:2. Desta forma, a condição inicial para a
introdução de circuitos compressores 4:2 nas arquiteturas dos multiplicadores, para a soma
das linhas dos produtos parciais, é que haja no mínimo quatro somas a serem realizadas na
62
estrutura array, ou seja, n_op≥4. Um exemplo de multiplicação de 16 bits em complemento
de 2 na base 16 é mostrado na Figura 5.3.
Figura 5.3 - Exemplo de multiplicação de 16 bits m=4 utilizando compressores 4:2
Através do exemplo de multiplicação apresentado na Figura 5.3, verifica-se que um
circuito compressor 4:2 pode substituir as quatro linhas de somas parciais presentes no
cálculo.
Através das indicações dos blocos de compressores assinalados na Figura 5.3, podese observar que são necessários vinte circuitos compressores 4:2 de um bit para efetuar a
soma dos quatro operandos que compõem os vinte bits mais significativos (incluindo a
extensão do sinal). Para os bits menos significativos, que apresentam o número de linhas de
operandos menor do que quatro, tem-se a utilização de diferentes estruturas de circuitos
somadores.
São utilizados somadores CSA para a terceira coluna de operandos (que envolve a
soma de três operandos) e somadores RCA para a segunda coluna (que envolve a soma de
dois operandos). A primeira coluna dos quatro bits menos significativos, já representa o
primeiro resultado final, que é obtido diretamente do bloco de multiplicação dedicado m=4.
A arquitetura geral do circuito multiplicador array de 16 bits na base 16 utilizando
compressores 4:2 é mostrada na Figura 5.4, onde os blocos de compressão 4:2 estão
agrupados de acordo com o exemplo mostrado na Figura 5.3.
63
Figura 5.4 - Estrutura de circuito multiplicador de 16 bits m=4 utilizando compressores 4:2
Verifica-se na Figura 5.4 que há uma linha de somadores RCA na estrutura do
multiplicador, e cada somador completo (FA) presente nesta linha, serve para realizar a
recombinação da saída Sum (peso j) do compressor 4:2 com o carry (peso j+1) proveniente
do bloco do compressor 4:2 anterior. Deve-se observar que não há propagação de carry
entre os blocos compressores 4:2, pois o carry de saída (Cout) não depende do carry de
entrada (Cin), de acordo com a Equação 3.3 – Seção 3.5. O caminho critico do circuito
multiplicador é estabelecido através da linha de somadores RCA, um bloco CSA e um
bloco Operando I, que agrega o circuito de multiplicação dedicado m=4.
Da mesma forma que os compressores 4:2, os compressores 8:2 e 16:2 podem ser
aplicados aos multiplicadores array na base 2m para a soma das linhas dos produtos
parciais. A condição inicial para a introdução destes compressores nas linhas de soma dos
produtos parciais é de se ter, pelo menos, oito ou dezesseis operandos no circuito
multiplicador, ou seja, o resultado da Equação 5.4 deve ser igual ou superior a oito ou
dezesseis (n_op≥8 ou n_op≥16), de acordo com o número de linhas de somas de produtos
parciais presentes na estrutura array do multiplicador.
Se, por exemplo, um multiplicador de 64 bits opera na base 16 (m=4), tem-se
somente uma linha de soma utilizando somadores compressores de 16:2 ou duas linhas de
somadores compressores 8:2, ou 4 linha de somadores compressores 4:2, ao invés de 15
linhas de produtos parciais utilizando somadores RCA. O número de linhas de
compressores em um circuito multiplicador array na base 2m é dado através da Equação
5.5, onde k representa o tipo de somador compressor (Ex. para um compressor 8:2 , k=8).
64
l _ comp(k ) : 2 =
(n _ op )
k
(5.5)
A Tabela 5.3 mostra o número de linhas de somas de produtos parciais necessário
para a composição dos multiplicadores array, utilizando somadores RCA (W/m-1) e
compressores 4:2, 8:2 e 16:2 (a partir da Equação 5.5, onde n_op é obtido a partir da
Equação 5.4). São mostrados exemplos para multiplicadores nas bases 16 e 256.
Tabela 5.3 – Número de linhas de somas de produtos parciais em multiplicadores nas bases 16 e 256
(m=4)
16 bits
(m=8)
(m=4)
32 bits
(m=8)
(m=4)
64 bits
(m=8)
RCA Compressor 4:2 Compressor 8:2 Compressor 16:2
3
1
--1
---7
2
1
-3
1
--15
4
2
1
7
2
1
--
5.2.1 Análise Comparativa de Circuitos Multiplicadores Array na
Base 2m Utilizando Somadores Compressores
Nesta Seção é realizada uma análise comparativa entre algumas arquiteturas de
circuitos multiplicadores otimizados, apresentadas no capitulo 4, utilizando diferentes
somadores compressores nas linhas de soma dos produtos parciais. Esta análise é efetuada a
partir de resultados de área, atraso e consumo de potência, seguindo a mesma metodologia
mostrada na Seção 1.3.1. Utiliza-se, para a aplicação dos circuitos compressores, os
circuitos multiplicadores array que operam nas bases 16 (m=4) e 256 (m=8). Estes circuitos
multiplicadores foram escolhidos, por apresentarem os melhores resultados de atraso e
potência, como mostrado anteriormente no Capítulo 4. O número de linhas de somas de
produtos parciais que se utiliza nos circuitos multiplicadores é apresentado na Tabela 5.3.
As Tabelas 5.4 e 5.5 apresentam resultados de área, atraso e potência de
multiplicadores de 16, 32 e 64 bits nas bases 16 e 256 utilizando os circuitos somadores
compressores 4:2, 8:2 e 16:2. Estes multiplicadores com compressores são comparados em
65
aos circuitos multiplicadores que utilizam somadores RCA, que necessitam de (W/m)-1
linhas de somas de produtos parciais. Para o multiplicador com bloco de multiplicação
m=4, utiliza-se a estrutura com o bloco dedicado de multiplicação Otimizado 1, pois este
apresentou os melhores resultados de atraso e potência.
Tabela 5.4 - Resultados para multiplicadores m=4 Otimizado 1 com o uso de compressores
W
Somador
RCA
Compressor 4:2
RCA
32 bits Compressor 4:2
Compressor 8:2
RCA
Compressor 4:2
64 bits
Compressor 8:2
Compressor 16:2
16 bits
Bloco de multiplicação dedicado m=4 Otimizado 1
Área
Atraso (ns)
Potência (W)
5102
205,7
0,158
5688 11,49(%) 205,8 0,05(%) 0,214 35,45(%)
20166
430,9
1,126
22076 9,47(%) 421,8 -2,11(%) 1,1145 -1,02(%)
22600 12,07(%) 411,4 -4,53(%) 1,3903 23,47(%)
79862
881,3
8,8869
85428 6,97(%) 828,3 -6,01(%) 4,5945 -48,30(%)
85516 7,08(%) 818,2 -7,16(%) 5,6863 -36,01(%)
92712 16,09(%) 821,6 -6,77(%) 7,1854 -19,15(%)
Tabela 5.5 - Resultados para multiplicadores m=8 Otimizado com compressores
W
Métrica
RCA
Compressor 4:2
RCA
32 bits Compressor 4:2
Compressor 8:2
RCA
Compressor 4:2
64 bits
Compressor 8:2
Compressor 16:2
16 bits
Bloco de multiplicação dedicado m=8 Otimizado
Área
Atraso (ns)
Potência (W)
X
X
X
X
X
X
X
X
X
22552
414,5
1,0152
23698 5,08(%) 412 -0,60(%) 1,3232 30,34(%)
X
X
X
X
X
88080
839,7
5,2313
91618 4,02(%) 818,8 -2,49(%) 5,6258 7,54(%)
92866 5,43(%) 815,4 -2,89(%) 6,5522 25,25(%)
X
X
X
X
X
X
De acordo com os resultados mostrados nas Tabelas 5.4 e 5.4, observa-se que o uso
dos compressores 4:2, 8:2 e 16:2 agrega maiores valores de área aos circuitos
multiplicadores de 16, 32 e 64 bits. Isto pode ser explicado devido ao fato dos circuitos
compressores 4:2 serem implementados com um maior número de portas lógicas em
relação a um somador completo presente no somador RCA. Enquanto que o compressor 4:2
de um bit utiliza 12 portas lógicas (2 multiplexadores com 4 portas cada e 4 portas XOR), o
somador completo é composto por 5 portas lógicas. Entretanto, observa-se uma redução no
66
atraso dos multiplicadores, quando do uso dos compressores, especificamente nos
multiplicadores de 32 e 64 bits. A redução do atraso é devido à maior redução do número
de linhas dos produtos parciais nestes circuitos multiplicadores. Em particular, esta redução
de atraso se torna mais visível nos multiplicadores na base 16 (m=4), pois estes apresentam
um maior número de linhas parciais em relação aos multiplicadores na base 256 (m=8).
Em relação ao consumo de potência, observa-se que só há redução do consumo de
potência nos multiplicadores quando há uma diferença significativa no número de linhas de
somas de produtos parciais. Neste caso, observa-se na Tabela 5.4 que há alguma redução de
potência no multiplicador de 32 bits na base 16 (m=4) com compressor 4:2. De fato, Isto se
explica pois neste multiplicador há a redução de sete linhas de soma de produtos parciais
(necessárias utilizando somadores RCA) para duas linhas de soma utilizando compressores
4:2. Para os multiplicadores de 16 bits não há ganhos de potência com o uso de
compressores, pois a diferença no número de linhas de somas de produtos parciais não é
significativa. Entretanto, para os multiplicadores de 64 bits, observa-se significativas
reduções no consumo de potência dos multiplicadores com o uso de compressores, o que
reforça o aspecto de que, obtém-se reduções significativas do consumo de potência dos
somadores, quando a redução do número de linhas de somas de produtos parciais é
significativo. Para o caso dos multiplicadores na base 256 não há uma redução deste
número de linhas de produtos parciais de forma tão significativa, em relação aos
multiplicadores com somadores RCA. Logo não há reduções no consumo de potência dos
multiplicadores na base 256 com o uso de compressores, como pode ser visto na Tabela
5.4.
Do que foi exposto acima, chega-se então a duas conclusões: i) só vale a pena usar
circuitos compressores nos multiplicadores quando estes agregam um maior número de bits
e operações em bases menores; ii) quando valer a pena utilizar os circuitos compressores
nos multiplicadores o mais indicado é o 4:2, pois este agrega uma estrutura mais simples
com reduzido caminho crítico, o que influencia de forma significativa na redução da
atividade de glitching e, consequentemente, na redução do consumo de potência.
67
5.3 Sumário
Nesta Seção foram apresentadas as estruturas dos somadores compressores 8:2 e
16:2, assim como a aplicação destas estruturas aos multiplicadores array na base 2m. Uma
análise comparativa em área, atraso e consumo de potência foi mostrada entre os
multiplicadores array que utilizam a soma dos produtos parciais através de somadores do
tipo RCA e as novas estruturas que utilizam compressores para a soma destas linhas
parciais. Verificou-se que ocorre redução nos valores de atraso e consumo de potência nos
circuitos multiplicadores, quando há uma redução significativa do número de linhas de
somas de produtos parciais (um número igual ou maior a cinco linhas). Na próxima Seção
são mostrados estudos de caso para os multiplicadores estudados neste trabalho.
68
6 ESTUDO DE CASO: MULTIPLICADORES
ARRAY
NA
BASE
2m
OTIMIZADOS
APLICADOS A FILTROS DIGITAIS
Nesta Seção, apresenta-se o uso das estruturas otimizadas dos multiplicadores array
na base 2m em dois estudos de caso: filtros com resposta finita ao impulso (FIR) com
coeficientes fixos e filtros FIR com coeficientes adaptativos. Para o filtro FIR com
coeficientes adaptativos, será utilizado o algoritmo LMS (Least Mean Square) como estudo
de caso.
As implementações apresentadas nesta parte do trabalho foram descritas no formato
BLIF e também em VHDL, conforme as metodologias discutidas na Seção 1.3.1. Estas
estratégias foram utilizadas em função das arquiteturas disponíveis para os testes do uso
dos multiplicadores. Para os filtros FIR de coeficientes fixos, utiliza-se o ambiente SIS e a
ferramenta SLS para as estimativas de área, atraso e consumo de potência. Para o filtro FIR
com coeficientes adaptativos, estes parâmetros são obtidos no nível FPGA na ferramenta
Quartus II da Altera. São aplicados nos filtros FIR com coeficientes fixos e adaptativos, os
circuitos multiplicadores otimizados m=2, m=4 e m=8 apresentados no capítulo 5. São
realizadas comparações de desempenho dos filtros utilizando os multiplicadores otimizados
e o multiplicador Booth Modificado, estado da arte em termos de consumo de potência. Os
filtros de coeficientes fixos e coeficientes adaptativos representam arquiteturas de 16 bits.
Os valores de consumo de potência para cada uma das arquiteturas são apresentados
em função da energia consumida por cada amostra. Este parâmetro é dado de acordo com a
Equação 6.1 (COSTA, 2002).
Energia _ por _ amostra =
(Pot.média ) × (nT )
n o _ de _ amostras
(6.1)
Na Equação 6.1, o parâmetro n corresponde ao número total de ciclos de relógio
para o processamento de uma amostra. Para as arquiteturas apresentadas nesta parte do
trabalho, utiliza-se um sinal aleatório com 10000 amostras Este número de amostras
representa um bom compromisso para as estimativas de consumo de potência das
arquiteturas, conforme mencionado anteriormente em (COSTA, 2002). O parâmetro T
representa o período mínimo de relógio para simulação. A potência média é calculada
69
utilizando-se a ferramenta SLS a partir do valor do período T. Como o período utilizado é o
mesmo para todas as arquiteturas. Dessa forma, este parâmetro pode ser suprimido da
Equação 6.1, e esta pode ser reescrita da forma mostrada na Equação 6.2, que passa a
representar o consumo de potência normalizada por amostra. O valor de período de relógio
utilizado nas simulações é T=300ns. Este valor é o pior caso apresentado pelas arquiteturas.
Para os barramentos de entrada e saída dos circuitos foi utilizado um valor de capacitância
igual a 10fF, que corresponde ao menor valor associado ao fan-in de uma porta lógica. As
máquinas de estado das arquiteturas seqüencial e semi-paralela dos filtros implementados
apresentam valores reduzidos de potência normalizada por amostra, não tendo desta forma,
contribuição significativa para o aumento de potência global nestas arquiteturas.
Potência _ normalizada _ por _ amostra =
(Pot.média ) × (n )
n o _ de _ amostras
(6.2)
6.1 Filtros FIR com Coeficientes Fixos
A operação de filtragem com resposta finita ao impulso (FIR) é realizada a partir do
processo de convolução das amostras dos dados de entrada com a resposta ao impulso
unitário. A saída y(n) de um filtro FIR de N-tap é dada pelo somatório dos pesos das
ultimas N amostras de dados de entrada (Onde x(n) é a n-ésima amostra), conforme mostra
a Equação 6.3. A estrutura de um filtro FIR na forma direta é mostrada na Figura 6.1.
N −1
y (n) = ∑ h[i ]x[n − i ]
i =0
(6.3)
70
Figura 6.1 - Exemplo de filtro FIR de 8 taps
As implementações apresentadas neste trabalho têm como alvo arquiteturas de 16
bits para um filtro FIR de 8ª ordem na forma direta. Isto devido ao fato destas arquiteturas
estarem disponíveis de trabalhos anteriores (COSTA, 2002), sendo desta forma, um bom
estudo de caso à aplicação dos circuitos multiplicadores otimizados propostos neste
trabalho. São apresentadas arquiteturas de filtros FIR totalmente seqüenciais e semiparalelas, ambas com a utilização de pipelinig (COS 2002c).
6.1.1
Aplicação
dos Multiplicadores Array Otimizados em
Arquiteturas Totalmente Seqüenciais
A primeira implementação de filtro FIR com coeficientes fixos aborda a arquitetura
totalmente seqüencial na forma direta, como mostrado na Figura 6.2. Os sinais de controle
CLK, Reset e Load, q2, q1, q0 são provenientes da máquina de controle. Esta é omitida para
a simplificação da Figura 6.2
Em uma implementação seqüencial, a idéia básica é reduzir os requisitos de
hardware pela reutilização do hardware tanto quanto possível. Neste caso, uma unidade de
controle é utilizada no sentido de introduzir um número de passos de controle e cada
produto no filtro FIR é calculado sequencialmente e adicionado à soma acumulada no
módulo acumulador.
Neste trabalho, apresenta-se uma arquitetura seqüencial na forma pipelined que é
representado por um circuito registrador presente entre a saída do multiplicador e a entrada
do somador, como pode ser visto na Figura 6.2 Esta técnica acarreta na redução do
consumo de potência pela redução da propagação da atividade de chaveamento (glitching)
produzido pelo circuito multiplicador (COSTA, 2002).
71
Figura 6.2 - Parte operativa das implementações seqüenciais do filtro FIR.
A Tabela 6.1 mostra os resultados de área, atraso e energia normalizada por amostra
para os filtros FIR com os multiplicadores otimizados e multiplicador Booth Modificado.
Tabela 6.1 -Resultados de área, atraso e energia normalizada por amostra para o filtro seqüencial
Filtro com o
Multiplicador:
Área
%
Booth
m=2 otimizado
m=4 otimizado
m=8 otimizado
6394
7288
7788
8458
--12,27
17,90
24,40
Período
Mínimo de
Relógio –
T(ns)
105,74
96,55
89,99
88,47
%
Energia
Normalizada por
Amostra
%
---8,69
-14,90
-16,33
573,90
331,24
270,74
317,74
---42,28
-52,82
-44,64
Como pode ser visto na Tabela 6.1, o filtro FIR seqüencial utilizando o circuito
multiplicador Booth apresenta o menor valor de área entre as alternativas de circuitos
analisados. Isto ocorre devido ao fato dos multiplicadores otimizados utilizarem mais portas
lógicas nos módulos dedicados de multiplicação. Desta forma, o uso destes multiplicadores
72
faz com que os filtros FIR apresentem maiores valores de área como mostrado na Tabela
6.1.
Em relação ao parâmetro de atraso, observa-se que os filtros com os
multiplicadores array na base 2m são mais eficientes em relação ao filtro com o
multiplicador Booth, como mostrado na Tabela 6.1. Outro ponto importante a ser
observado é que com o aumento de m os valores de atraso são menores. Isto ocorre devido
à redução do número de linhas de produtos parciais com o aumento de m, que reduz o
caminho crítico destes circuitos multiplicadores.
Valores significativos de redução do consumo de potência são obtidos nos filtros
FIR com o uso dos circuitos utilizando os multiplicadores array, como pode ser visto na
Tabela 6.1. Isto só confirma o fato de que os multiplicadores array otimizados apresentam
uma menor quantidade de atividade de glitching em relação ao multiplicador Booth, o que
representa uma grande redução em consumo de potência nestes multiplicadores. Desta
forma, a utilização dos multiplicadores array nos filtros FIR representa uma boa alternativa
para a redução do consumo de potência destes circuitos. Em particular, o filtro com o
circuito multiplicador m=4 otimizado apresenta o melhor resultado em termos de redução
do consumo de potência. Este aspecto reafirma os resultados obtidos e discutidos no
capitulo 4, em que o este multiplicador de 16 bits apresenta um ponto ótimo para a redução
do consumo de potência. Logo, o uso deste multiplicador no filtro FIR contribui para uma
significativa redução do consumo de potência deste circuito.
6.1.2 Aplicação dos Multiplicadores Array Otimizados em
Arquiteturas Semi - Paralelas
Apesar da possibilidade de aumento de desempenho na arquitetura totalmente
seqüencial pelo uso de pipelining, sua estrutura impõe uma restrição onde são necessários
oito ciclos de relógio para o processamento de cada amostra. Por outro lado, as arquiteturas
totalmente paralelas podem operar de forma mais rápida, mas ao custo de uma maior
quantidade de área devido à maior quantidade de hardware utilizada. Com o intuito de
possibilitar uma alternativa intermediária entre as implementações totalmente paralela e
totalmente seqüencial, uma arquitetura semi-paralela pode ser construída, sendo que os
73
requisitos de hardware são duplicados em relação a estrutura seqüencial. A arquitetura
semi-paralela tende a melhorar o desempenho do filtro em relação à arquitetura seqüencial
pela duplicação do hardware, possibilitando que duas amostras sejam processadas ao
mesmo tempo.
A parte operativa da arquitetura semi-paralela é mostrada Figura 6.3. Assim com na
arquitetura seqüencial, os sinais de clk, reset, load, q0 e q1 são provenientes da máquina de
controle, que é omitida para a simplificação da Figura 6.3. Na arquitetura semi-paralela,
duas amostras podem ser processadas simultaneamente, aumentando o desempenho do
filtro FIR devido ao fato de que o hardware pode operar na metade dos ciclos de relógio.
Desta forma, na arquitetura semi-paralela há o processamento de uma nova amostra a cada
quatro ciclos de relógio.
Figura 6.3 - Parte operativa das implementações semi-paralelas do filtro FIR.
Na forma pipelined são utilizados dois registradores nas saídas dos circuitos
multiplicadores, como mostra a Figura 6.3. Nesta figura deve ser observado que os
coeficientes são compartilhados entre dois circuitos multiplexadores, sendo cada grupo de
quatro coeficientes compartilhados por cada um destes circuitos.
74
A Tabela 6.2 apresenta resultados de área, atraso e energia normalizada por amostra
para filtros FIR semi-paralelos utilizando os multiplicadores otimizados propostos neste
trabalho e o multiplicador Booth Modificado.
Tabela 6.2 - Resultados de área, atraso e energia normalizada por amostra para o filtro semi-paralelo
Filtro com o
Multiplicador:
Área
%
Booth
m=2 otimizado
m=4 otimizado
m=8 otimizado
10539
12327
13327
14667
--14,50
20,92
28,14
Período Mínimo
de Relógio –
T(ns)
104,32
94,96
88,38
88,19
%
---8,97
-15,28
-15,46
Energia
Normalizada
por Amostra
483,72
265,94
227,42
283,00
%
-45,02
-52,98
-41,49
Na arquitetura semi-paralela são utilizados dois circuitos multiplicadores, pois os
recursos de hardware são duplicados em relação a uma arquitetura totalmente seqüencial.
Logo, os resultados de área, atraso e potência para estes filtros seguem a mesma tendência
dos resultados obtidos com os filtros FIR totalmente seqüenciais. Como pode ser observado
na Tabela 6.2, apesar dos filtros com os multiplicadores otimizados apresentarem maiores
valores de área, estes circuitos apresentam menores valores de atraso e significativos
menores valores de consumo de potência comparado com os filtros que utilizam o
multiplicador Booth.
Uma vez mais se observa que apesar do filtro com o multiplicador m=8 apresentar o
menor valor de atraso, o filtro com m=4 é o que apresenta o menor valor de consumo de
potência. Logo, na relação atraso versus potência, o filtro com m=4 é o que se apresenta
como a melhor alternativa, pois além de apresentar um reduzido consumo de potência, os
filtros com multiplicadores otimizados m=4 e m=8 apresentam praticamente os mesmos
valores de atraso, como pode ser visto na Tabela 6.2.
Deve-se observar que pelo fato de apresentarem praticamente o mesmo caminho
crítico, dado pelo multiplexador e pelo circuito multiplicador, a arquitetura totalmente
seqüencial e semi-paralela apresentam praticamente os mesmos valores de atraso, como
pode ser comparado nas Tabelas 6.1 e 6.2. Entretanto, os filtros semi-paralelos apresentam
menores valores de consumo de potência em relação aos filtros seqüenciais, como pode ser
comparado nas Tabelas 6.1 e 6.2. Isto se explica pelo fato de ser possível reduzir mais a
atividade de glitching, que tem um impacto maior na arquitetura semi-paralela, pois esta
75
utiliza o dobro do número de circuitos multiplicadores em relação à arquitetura totalmente
seqüencial.
De acordo com os resultados mostrados nesta Seção, conclui-se que a utilização de
circuitos multiplicadores array otimizados é uma boa opção para filtros FIR seqüencial ou
semi-paralelo se os requerimentos do projeto forem focados para o aumento de desempenho
e a redução do consumo de potência.
6.2
Arquitetura
de
Filtro
FIR
com
Coeficientes
Adaptativos
Existem diversas aplicações práticas que não podem ser resolvidas com sucesso
utilizando filtros com coeficientes fixos, ou pelo fato de não se ter informação suficiente
para projetar o filtro com coeficientes fixos ou pelo fato dos critérios do projeto mudarem
durante a operação. Uma grande parte destas aplicações pode ser resolvida por um tipo
especial de algoritmo chamado de algoritmo adaptativo. A característica principal dos
algoritmos adaptativos, que os distingue dos demais, é que estes podem modificar sua
resposta automaticamente para
melhorar seu
desempenho
durante a
operação
(MANOLAKIS, 2005).
Os sistemas adaptativos são formados por três módulos, conforme se verifica na
Figura 6.4.
Figura 6.4 -Elementos de um filtro FIR com coeficientes adaptativos
76
De acordo com a Figura 6.4, observa-se que a estrutura do filtro produz a saída a
partir de medições do sinal de entrada. A estrutura é fixa e seus parâmetros são ajustados
pelo algoritmo adaptativo. A saída do filtro adaptativo e a resposta desejada são
processadas segundo um critério de desempenho, de modo a avaliar a qualidade do
resultado em relação aos requisitos da aplicação. O algoritmo adaptativo utiliza o valor do
critério de desempenho, ou alguma função dele, e medições da entrada e da resposta
desejada para modificar os parâmetros do filtro, com o objetivo de melhorar seu
desempenho. Neste trabalho, utiliza-se o hardware dedicado do algoritmo adaptativo LMS
como estudo de caso para aplicação dos multiplicadores otimizados propostos.
6.2.1 Algoritmo Adaptativo LMS (Least Mean Square)
O algoritmo adaptativo LMS é caracterizado pela sua simplicidade e facilidade de
implementação. O algoritmo LMS é definido pelas Equações 6.3, 6.4 e 6.5.
e( n ) = d ( n ) − y ( n )
ω ( n + 1) = ω ( n ) + µ e ( n ) x ( n )
(6.4)
(6.5)
A Equação 6.4 , define o sinal de erro entre o sinal desejado d (n) e a saída do filtro
y (n) . A Expressão 6.5 é a equação de ajuste dos coeficientes dos filtros adaptativo, onde
µ é o passo de adaptação e x ( n ) é o vetor de amostras do sinal de entrada do processo.
O algoritmo LMS pode ser implementado sem utilizar operações de média, divisão,
raiz, ou diferenciação, e é elegante em sua simplicidade e eficiência (MANOLAKIS, 2006),
possuindo somente operações de somas, subtrações e multiplicações, como pode ser
observado nas Equações 6.3, 6.4 e 6.5. Devido a este fato, utiliza-se a arquitetura dedicada
para este algoritmo proposta em (ITTURRIET, 2008) como estudo de caso para aplicação
dos multiplicadores array otimizados propostos neste trabalho.
77
6.2.2
Aplicação
dos Multiplicadores Array Otimizados em
Arquitetura Dedicada para o Algoritmo LMS
A arquitetura proposta em (ITTURRIET, 2008) utiliza um hardware ponto fixo
dedicado, para o algoritmo adaptativo LMS. Esta arquitetura foi implementada em
linguagem VHDL. Logo, os resultados de área, atraso e consumo de potência apresentados
neste trabalho são voltadas à síntese em FPGA. A arquitetura dedicada para o algoritmo
LMS é mostrada na Figura 6.5.
Figura 6.5 - Arquitetura do hardware dedicado para o algoritmo adaptativo LMS (ITTURRIET, 2008)
Na Figura 6.5, a estrutura do hardware é composta por operadores aritméticos, além
de blocos multiplexadores, registradores com sinal de carga, blocos de normalização e
truncamento. Este circuito foi implementado para dois coeficientes. Logo, são utilizados
dois circuitos multiplicadores para o processamento das amostras, como pode ser observado
78
nos blocos de multiplicação X1 e X2 da Figura 6.5. Nestes módulos são aplicados os
multiplicadores array otimizados propostos neste trabalho. Pelo fato de filtro ser descrito
em VHDL, há a necessidade da conversão dos multiplicadores da linguagem de descrição
textual BLIF para VHDL. Isto é realizado de acordo com a metodologia apresentada na
Seção 1.3.1.
A Tabela 6.3 mostra os resultados do filtro adaptativo LMS utilizando as diferentes
arquiteturas dos circuitos multiplicadores estudados neste trabalho e o multiplicador Booth
Modificado. Os resultados obtidos são voltados para a síntese FPGA através da ferramenta
Quartus II da fabricante Altera. São utilizadas 10000 amostras de um sinal aleatório nas
entradas do filtro. São necessários de 7 ciclos de relógio para a obtenção do resultado na
saída do filtro para cada amostra. Os resultados em área são apresentados em função do
número de elementos lógicos (EL) necessários para implementação do circuito no
componente FPGA. O atraso é fornecido através do valor do caminho critico do circuito, e
o consumo de potência é dado em energia normalizada por amostra de acordo com a
Equação 6.2.
Tabela 6.3 - Valores de área, atraso e consumo de potência da arquitetura para o algoritmo LMS
Alternativas
Área(EL)
%
Booth
m=2 otimizado
m=4 otimizado
m=8 otimizado
1088
1590
1775
1905
--31,57
38,70
42,89
Período
Mínimo de
Relógio – T
(ns)
43,687
42,441
35,975
34,363
%
---2,85
-17,65
-21,34
Energia
Normalizada
por Amostra
352,28
300,06
289,77
297,17
%
--14,83
-17,75
-15,64
Diante dos valores apresentados para o hardware de ponto fixo para algoritmo LMS
apresentados na Tabela 6.3, verifica-se que as alternativas para o filtro com coeficientes
adaptativos que utilizam multiplicadores array na base 2m apresentam um maior número de
elementos lógicos. Isto segue a mesma linha de resultados mostrada na Seção anterior para
os filtros FIR. De fato, isto se explica pelo fato do hardware para o algoritmo LMS
representar um filtro FIR com coeficientes adaptativos. Logo, este aspecto deve ser
estendido aos valores de atraso e consumo de potência. Observa-se então, que assim como
para os filtros FIR de coeficientes fixos, os filtros FIR com coeficientes adaptativos
79
apresentam menores valores de atraso e consumo de potência quando do uso dos
multiplicadores array otimizados propostos neste trabalho, como pode ser observado na
Tabela 6.3. Em particular, o filtro com o multiplicador array otimizado m=8 é o mais
indicado para a métrica de desempenho e o filtro com o multiplicador array m=4 é o mais
indicado par aplicações que requeiram reduzido consumo de potência.
6.3 Sumário
Neste capítulo foi apresentado o uso das estruturas otimizadas dos multiplicadores
array na base 2m em dois estudos de caso: filtros com resposta finita ao impulso (FIR) com
coeficientes fixos e filtros FIR com coeficientes adaptativos. Os resultados obtidos
mostraram a eficiência dos filtros utilizando os multiplicadores com blocos de
multiplicação dedicados, com menores valores de atraso e potência quando comparados
com os filtros utilizando multiplicador Booth. A seguir são apresentadas as principais
conclusões deste trabalho e idéias para trabalhos futuros.
80
7 CONCLUSÕES
Neste trabalho foram apresentadas técnicas para a otimização do multiplicador
array na base 2m. Foram utilizadas técnicas para a otimização dos blocos de multiplicação
dedicados presentes nos operandos da estrutura array do multiplicador na base 2m. Estas
técnicas foram baseadas no uso de somadores CSA e blocos de multiplicação mais simples
na base 4 para a composição de blocos de bases maiores de operação (de 8 – m=3 até 256 –
m=8). Estes blocos foram aplicados em multiplicadores array de 16, 32 e 64 bits. Estes
multiplicadores foram gerados por uma ferramenta de geração automática de
multiplicadores array – RAMAGT, desenvolvida no âmbito deste trabalho. Foram
realizadas comparações com os multiplicadores que usavam blocos de multiplicação
originais, ou seja, os blocos obtidos a partir de descrições PLA e síntese automática com a
ferramenta SIS. Os resultados mostraram que os multiplicadores com blocos otimizados
são mais eficientes com significativas reduções de valores de área, atraso e consumo de
potência. Isto devido à estrutura mais simples e regular dos blocos de multiplicação
otimizados.
Os circuitos multiplicadores com blocos de multiplicação otimizados foram
comparados com o estado da arte em termos de redução do consumo de potência
(multiplicador Booth Modificado), e os resultados mostraram que, apesar de apresentarem
maiores valores de área, os multiplicadores com blocos de multiplicação dedicados
apresentam menores valores de atraso e potência, devido a maior regularidade e estrutura
mais simples dos multiplicadores array com estes blocos dedicados otimizados.
O estudo de somadores compressores de diferentes tamanhos para a soma
simultânea de vários operandos também foi alvo deste trabalho. Foi realizado um estudo da
aplicação de circuitos somadores compressores 4:2, 8:2 e 16:2 nos multiplicadores array de
16, 32 e 64 bits e os resultados mostraram que para multiplicadores de 32 e 64 bits há
possibilidade de reduções de atraso e consumo de potência, quando comparados com
multiplicadores utilizando somadores do tipo RCA.
Os circuitos multiplicadores com blocos de multiplicação otimizados foram
utilizados em arquiteturas dedicadas de filtros digitais. Arquiteturas dedicadas de filtros
com coeficientes fixos e coeficientes adaptativos foram utilizadas com estudo de caso para
81
o teste dos multiplicadores propostos no âmbito deste trabalho. Foram feitas comparações
com os filtros usando o multiplicador Booth modificado e os resultados mostraram a
eficiência dos filtros utilizando os multiplicadores com blocos de multiplicação dedicados,
com menores valores de atraso e potência quando comparados com os filtros utilizando
multiplicador Booth.
7.1 Trabalhos futuros
Os resultados obtidos neste trabalho abrem a perspectiva da continuidade deste
trabalho a partir de novas técnicas que possam ser aplicadas ao multiplicador array na base
2m, assim como o aprofundamento de comparações deste multiplicador com outras
arquitetura presentes na literatura. Desta forma, para a continuidade deste trabalho, as
seguintes idéias podem ser exploradas como trabalhos futuros:
•
Aplicação das diferentes técnicas de otimização dos blocos de multiplicação
apresentadas no capítulo 5 a outras codificações de operandos (ex.
codificação Híbrida);
•
Realização de uma análise dos circuitos multiplicadores em outras
ferramentas de simulação comerciais utilizando diferentes tecnologias. (ex.
Mentor Graphics, Cadence, etc.);
•
Ampliação da exploração do uso compressores nas linhas de somas de
produtos parciais do multiplicador array na base 2m. Em particular,
investigar a estrutura do compressor 5:2 presente na literatura;.
•
Aplicação das otimizações a outros blocos de multiplicação dedicados com
bases de operação maiores do que 256. Tentar observar o limite de ganhos
em desempenho e redução de consumo de potência que pode ser obtido
pelos multiplicadores array usando estes blocos;
•
Ampliação da biblioteca de circuitos digitais gerados pela ferramenta
RAMAGT, como por exemplo circuitos divisores, filtros digitais, etc.
•
Analise do uso dos multiplicadores otimizados em filtros de maiores
tamanhos de operandos (32 e 64 bits) e maior número de taps;
82
•
Ampliação do uso dos circuitos multiplicadores otimizados em outras
arquiteturas dedicadas (Transformada Rápida de Fourier, por exemplo);
•
Prototipação de alguns circuitos multiplicadores otimizados no nível físico.
83
REFERÊNCIAS
ALTERA, Corporation. Programmable Logic Device Family. Data Sheet, 2002
ALTERA. Quartus II Version 6.0 Handbook. [S.l.]: Altera Inc., 2006. v.I.
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.
BERKELEY, SIS: Sequential Interactive Synthesis. University of Califórnia. At
http://embedded.eecs.berkeley.edu/ . 2007
BOOTH, A. A Signed Binary Multiplication Technique. Journal of Mechanics and
Aplied Mathematics, [S.l.], n.4, p.236-240, June 1951.
CALLAWAY, T.; SWARTZLANDER, E. Optimizing multipliers for WSI. In. Annual
IEEE International Conference on Wafer Scale Integration. 1993
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ósGraduaçã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,
2002a.
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. 2002b. 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.
84
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.
GENDEREN, A. SLS: an efficient switch-level timing simulator using min-max voltage
waveforms. In: INTERNATIONAL CONFERENCE ON VERY LARGE SCALE
INTEGRATION, VLSI, 1989, Munich. Proceedings… New York: ACM, 1989.
p 79-88.
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.
GOPINEEDI, D. P.; Himannshu T.; Srinivas M. B. and Arabnaia H. R. Novel and efficient
4: 2 and 5: 2 Compressors with Minimum Number of Transistors Designed for LowPower Operations, Proceedings of the 2006 International Conference on Embedded
Systems & Applications, Las Vegas, Nevada, June 26-29, 2006
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.
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.
IMPERIAL, College of Londom,
http://www.ee.imperial.ac.uk, 2008
Adder
Circuits
–
Lecture
13
–
At.
ITTURRIET, F. P. Implementação de um Hardware Ponto Fixo para o Algoritmo
LMS. Trabalho Final de Conclusão de Curso. UCPel. 2008
JACCOTTET, D. P; ROSCHILD, J. M.; PIEPER, L. Z; COSTA, E.; ALMEIDA, S.
RAMAGT – Radix 2m Array Multipliers Automatic Generation Tool. XVII SIM –
South Symposium on Microelectronics. 2008
JIANG, Yingtao; A Novel Multiplexer-Based Low-Power Full Adder, IEEE
Transactions on Circuits and Systems – II, vol. 51, no. 7, July 2004.
KHATER, I.; BELLAOUAR, A.; ELMASRY, M. Circuit Techniques for CMOS LowPower High-Performace Multipliers. IEEE Journal of Solid-State Circuits, New York, v.
31, n.10, p.1535-1546, Oct. 1996.
85
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.
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.
KOCH, P. “C Scripting Language –Reference Manual
http://csl.sourceforge.net/csldoc/index.htm Last Revision: 2002
V.
4.4.0”.
At
LU, MI; Arithmetic and Logic in Computer Systems. 2004. John Wiley & Sons, Inc.
New Jersey. USA
MANOLAKIS, D. G. Statistical and adaptive signal processing. Norwood: Artech House,
2005.
MARTIN, Kenneth W. Digital Integrated Circuit Design, New York, New York – USA:
Oxford University Press, 2000.
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.
OKLOBDZIJA, V. G.; D. Villeger; Liu S. S.; A Method for Speed Optimized Partial
ProductReduction and Generation of Fast Parallel Multipliers Using and Alghoritmic
Approach, IEEE Transaction on Computers, Vol. 45, No. 3, March 1996.
OLIVEIRA, L. L.; Prototipação e Análise de Circuitos Multiplicadores Array de Baixo
Consumo. Dissertação de Mestrado. PPGEE. UFSM, RS. 2005
OUSTERHOUT, J. K. “Scripting: Higher Level Programming for the 21st Century” .
IEEE Computer Magazine. March 1998
PARHAMI, BEHROOZ. Computer Arithmetic: algorithms and hardware designs.
Oxford University Press. 1999.
86
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.
PIEPER, L. Z.; Multiplicadores Array de Baixo Consumo, Trabalho Individual.
PPGINF-UCPEL. 2007
PIEPER, L. ; COSTA, E; ALMEIDA, S.; BAMPI, S.; MONTEIRO, J. Efficient Dedicated
Structures for the Radix-16 Multiplication. Iberchip. XIV International Workshop.
México. 2008.
POPPEN, F. Low Power Design Guide. Oldenburg: Oldenburger Forschungs-Und
Entwicklungsinstitut Fur Informatik-Werkzeuge Und-Systeme-OFFIS, 2000.
PRASAD, K.; Parhi K. K.; Low-power 4-2 and 5-2 compressors, in Proc. of the 35th
Asilomar Conference on Signals, Systems and Computers, vol. I, pp. 129-133, 2001
RABAEY, Jan M. Digital Integrated Circuits – A Design Perspective, USA, Prentice
Hall, 1996.
RADHAKRISHNAN, D.; Preethy A.P.; Low Power CMOS Pass Logic 4-2 Compressor
for High-Speed Multiplication. Circuits and Systems . Proceedings of the 43rd IEEE
Midwest Symposium on Volume 3, Issue , 2000 Page(s):1296 - 1298 vol.3
RUSHTON, Andrew, VHDL for Logic Synthesis – Second Edition, John Wiley & Sons,
England, 1998.
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 Radix256. In: SIMPOSIUM ON COMPUTER ARITHMETIC, 15., 2001. Proceedings… Los
Alamitos: IEEE Computer Society, 2001. p.23-32.
SENTOVICH, E. et al. SIS: a System for Sequential Circuit Synthesis. Berkeley:
University of California, 1992.
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.
87
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.
TUDELFT, University of Technology. SoG CAD technologies At http://www.tudelft.nl/ .
2008
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 Electronics. Circuits and Systems, ICECS. 2001
WEINBERGER, A.; 4:2 Carry-Save Adder Module, IBM Technical Disclosure
Bulletin.,Vol.23, January 1981.
WESTE, 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
SIGNAL PROCESSING SYSTEMS, SIPS, 2000, Lafayette. Proceedings… Piscataway:
IEEE Signal Processing Society, 2000. p. 571-580.
ZIMMERMANN, R. Lectures notes on : Computer Arithmetic: Principles,
Architectures, and VLSI Design. Integrated Systems Laboratory. Swiss Federal Institute
of Technology (ETH). 1999
88
ANEXO I – Exemplo de descrição textual de um
multiplicador
Este anexo mostra um exemplo de descrição textual em BLIF de um circuito
multiplicador de 16 bits, que opera na base 4 (m=2). A descrição foi gerada
automaticamente pela ferramenta RAMAGT.
-- Multiplicador 16 bits m=2
.model mulbin16m2orig
.inputs A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 B15 B14 B13 B12 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0
.outputs S31 S30 S29 S28 S27 S26 S25 S24 S23 S22 S21 S20 S19 S18 S17 S16 S15 S14 S13 S12 S11 S10 S9 S8 S7 S6 S5 S4 S3 S2 S1
S0
.subckt operando1 A1=A1 A0=A0 B15=B15 B14=B14 B13=B13 B12=B12 B11=B11 B10=B10 B9=B9 B8=B8 B7=B7 B6=B6 B5=B5
B4=B4 B3=B3 B2=B2 B1=B1 B0=B0 S17=S0E15 S16=S0E14 S15=S0E13 S14=S0E12 S13=S0E11 S12=S0E10 S11=S0E9 S10=S0E8
S9=S0E7 S8=S0E6 S7=S0E5 S6=S0E4 S5=S0E3 S4=S0E2 S3=S0E1 S2=S0E0 S1=S1 S0=S0
.subckt operando1 A1=A3 A0=A2 B15=B15 B14=B14 B13=B13 B12=B12 B11=B11 B10=B10 B9=B9 B8=B8 B7=B7 B6=B6 B5=B5
B4=B4 B3=B3 B2=B2 B1=B1 B0=B0 S17=S1E17 S16=S1E16 S15=S1E15 S14=S1E14 S13=S1E13 S12=S1E12 S11=S1E11
S10=S1E10 S9=S1E9 S8=S1E8 S7=S1E7 S6=S1E6 S5=S1E5 S4=S1E4 S3=S1E3 S2=S1E2 S1=S1E1 S0=S1E0
.subckt operando1 A1=A5 A0=A4 B15=B15 B14=B14 B13=B13 B12=B12 B11=B11 B10=B10 B9=B9 B8=B8 B7=B7 B6=B6 B5=B5
B4=B4 B3=B3 B2=B2 B1=B1 B0=B0 S17=S2E17 S16=S2E16 S15=S2E15 S14=S2E14 S13=S2E13 S12=S2E12 S11=S2E11
S10=S2E10 S9=S2E9 S8=S2E8 S7=S2E7 S6=S2E6 S5=S2E5 S4=S2E4 S3=S2E3 S2=S2E2 S1=S2E1 S0=S2E0
.subckt operando1 A1=A7 A0=A6 B15=B15 B14=B14 B13=B13 B12=B12 B11=B11 B10=B10 B9=B9 B8=B8 B7=B7 B6=B6 B5=B5
B4=B4 B3=B3 B2=B2 B1=B1 B0=B0 S17=S3E17 S16=S3E16 S15=S3E15 S14=S3E14 S13=S3E13 S12=S3E12 S11=S3E11
S10=S3E10 S9=S3E9 S8=S3E8 S7=S3E7 S6=S3E6 S5=S3E5 S4=S3E4 S3=S3E3 S2=S3E2 S1=S3E1 S0=S3E0
.subckt operando1 A1=A9 A0=A8 B15=B15 B14=B14 B13=B13 B12=B12 B11=B11 B10=B10 B9=B9 B8=B8 B7=B7 B6=B6 B5=B5
B4=B4 B3=B3 B2=B2 B1=B1 B0=B0 S17=S4E17 S16=S4E16 S15=S4E15 S14=S4E14 S13=S4E13 S12=S4E12 S11=S4E11
S10=S4E10 S9=S4E9 S8=S4E8 S7=S4E7 S6=S4E6 S5=S4E5 S4=S4E4 S3=S4E3 S2=S4E2 S1=S4E1 S0=S4E0
.subckt operando1 A1=A11 A0=A10 B15=B15 B14=B14 B13=B13 B12=B12 B11=B11 B10=B10 B9=B9 B8=B8 B7=B7 B6=B6
B5=B5 B4=B4 B3=B3 B2=B2 B1=B1 B0=B0 S17=S5E17 S16=S5E16 S15=S5E15 S14=S5E14 S13=S5E13 S12=S5E12 S11=S5E11
S10=S5E10 S9=S5E9 S8=S5E8 S7=S5E7 S6=S5E6 S5=S5E5 S4=S5E4 S3=S5E3 S2=S5E2 S1=S5E1 S0=S5E0
.subckt operando1 A1=A13 A0=A12 B15=B15 B14=B14 B13=B13 B12=B12 B11=B11 B10=B10 B9=B9 B8=B8 B7=B7 B6=B6
B5=B5 B4=B4 B3=B3 B2=B2 B1=B1 B0=B0 S17=S6E17 S16=S6E16 S15=S6E15 S14=S6E14 S13=S6E13 S12=S6E12 S11=S6E11
S10=S6E10 S9=S6E9 S8=S6E8 S7=S6E7 S6=S6E6 S5=S6E5 S4=S6E4 S3=S6E3 S2=S6E2 S1=S6E1 S0=S6E0
.subckt operando2 A1=A15 A0=A14 B15=B15 B14=B14 B13=B13 B12=B12 B11=B11 B10=B10 B9=B9 B8=B8 B7=B7 B6=B6
B5=B5 B4=B4 B3=B3 B2=B2 B1=B1 B0=B0 S17=S7E17 S16=S7E16 S15=S7E15 S14=S7E14 S13=S7E13 S12=S7E12 S11=S7E11
S10=S7E10 S9=S7E9 S8=S7E8 S7=S7E7 S6=S7E6 S5=S7E5 S4=S7E4 S3=S7E3 S2=S7E2 S1=S7E1 S0=S7E0
.subckt halfadder_2Bits A1=S0E1 A0=S0E0 B1=S1E1 B0=S1E0 COUT=COUT0E0 S1=S3 S0=S2
.subckt fulladder_2Bits CIN=COUT0E0 A1=S0E3 A0=S0E2 B1=S1E3 B0=S1E2 COUT=COUT0E1 S1=F0E1 S0=F0E0
.subckt fulladder_2Bits CIN=COUT0E1 A1=S0E5 A0=S0E4 B1=S1E5 B0=S1E4 COUT=COUT0E2 S1=F0E3 S0=F0E2
.subckt fulladder_2Bits CIN=COUT0E2 A1=S0E7 A0=S0E6 B1=S1E7 B0=S1E6 COUT=COUT0E3 S1=F0E5 S0=F0E4
.subckt fulladder_2Bits CIN=COUT0E3 A1=S0E9 A0=S0E8 B1=S1E9 B0=S1E8 COUT=COUT0E4 S1=F0E7 S0=F0E6
.subckt fulladder_2Bits CIN=COUT0E4 A1=S0E11 A0=S0E10 B1=S1E11 B0=S1E10 COUT=COUT0E5 S1=F0E9 S0=F0E8
.subckt fulladder_2Bits CIN=COUT0E5 A1=S0E13 A0=S0E12 B1=S1E13 B0=S1E12 COUT=COUT0E6 S1=F0E11 S0=F0E10
.subckt fulladder_2Bits CIN=COUT0E6 A1=S0E15 A0=S0E14 B1=S1E15 B0=S1E14 COUT=COUT0E7 S1=F0E13 S0=F0E12
.subckt fulladder_n++_2Bits CIN=COUT0E7 A1=S0E15 A0=S0E15 B1=S1E17 B0=S1E16 S1=F0E15 S0=F0E14
.subckt halfadder_2Bits A1=F0E1 A0=F0E0 B1=S2E1 B0=S2E0 COUT=COUT1E0 S1=S5 S0=S4
.subckt fulladder_2Bits CIN=COUT1E0 A1=F0E3 A0=F0E2 B1=S2E3 B0=S2E2 COUT=COUT1E1 S1=F1E1 S0=F1E0
.subckt fulladder_2Bits CIN=COUT1E1 A1=F0E5 A0=F0E4 B1=S2E5 B0=S2E4 COUT=COUT1E2 S1=F1E3 S0=F1E2
.subckt fulladder_2Bits CIN=COUT1E2 A1=F0E7 A0=F0E6 B1=S2E7 B0=S2E6 COUT=COUT1E3 S1=F1E5 S0=F1E4
.subckt fulladder_2Bits CIN=COUT1E3 A1=F0E9 A0=F0E8 B1=S2E9 B0=S2E8 COUT=COUT1E4 S1=F1E7 S0=F1E6
.subckt fulladder_2Bits CIN=COUT1E4 A1=F0E11 A0=F0E10 B1=S2E11 B0=S2E10 COUT=COUT1E5 S1=F1E9 S0=F1E8
.subckt fulladder_2Bits CIN=COUT1E5 A1=F0E13 A0=F0E12 B1=S2E13 B0=S2E12 COUT=COUT1E6 S1=F1E11 S0=F1E10
.subckt fulladder_2Bits CIN=COUT1E6 A1=F0E15 A0=F0E14 B1=S2E15 B0=S2E14 COUT=COUT1E7 S1=F1E13 S0=F1E12
.subckt fulladder_n++_2Bits CIN=COUT1E7 A1=F0E14 A0=F0E14 B1=S2E17 B0=S2E16 S1=F1E15 S0=F1E14
.subckt halfadder_2Bits A1=F1E1 A0=F1E0 B1=S3E1 B0=S3E0 COUT=COUT2E0 S1=S7 S0=S6
.subckt fulladder_2Bits CIN=COUT2E0 A1=F1E3 A0=F1E2 B1=S3E3 B0=S3E2 COUT=COUT2E1 S1=F2E1 S0=F2E0
89
.subckt fulladder_2Bits CIN=COUT2E1 A1=F1E5 A0=F1E4 B1=S3E5 B0=S3E4 COUT=COUT2E2 S1=F2E3 S0=F2E2
.subckt fulladder_2Bits CIN=COUT2E2 A1=F1E7 A0=F1E6 B1=S3E7 B0=S3E6 COUT=COUT2E3 S1=F2E5 S0=F2E4
.subckt fulladder_2Bits CIN=COUT2E3 A1=F1E9 A0=F1E8 B1=S3E9 B0=S3E8 COUT=COUT2E4 S1=F2E7 S0=F2E6
.subckt fulladder_2Bits CIN=COUT2E4 A1=F1E11 A0=F1E10 B1=S3E11 B0=S3E10 COUT=COUT2E5 S1=F2E9 S0=F2E8
.subckt fulladder_2Bits CIN=COUT2E5 A1=F1E13 A0=F1E12 B1=S3E13 B0=S3E12 COUT=COUT2E6 S1=F2E11 S0=F2E10
.subckt fulladder_2Bits CIN=COUT2E6 A1=F1E15 A0=F1E14 B1=S3E15 B0=S3E14 COUT=COUT2E7 S1=F2E13 S0=F2E12
.subckt fulladder_n++_2Bits CIN=COUT2E7 A1=F1E14 A0=F1E14 B1=S3E17 B0=S3E16 S1=F2E15 S0=F2E14
.subckt halfadder_2Bits A1=F2E1 A0=F2E0 B1=S4E1 B0=S4E0 COUT=COUT3E0 S1=S9 S0=S8
.subckt fulladder_2Bits CIN=COUT3E0 A1=F2E3 A0=F2E2 B1=S4E3 B0=S4E2 COUT=COUT3E1 S1=F3E1 S0=F3E0
.subckt fulladder_2Bits CIN=COUT3E1 A1=F2E5 A0=F2E4 B1=S4E5 B0=S4E4 COUT=COUT3E2 S1=F3E3 S0=F3E2
.subckt fulladder_2Bits CIN=COUT3E2 A1=F2E7 A0=F2E6 B1=S4E7 B0=S4E6 COUT=COUT3E3 S1=F3E5 S0=F3E4
.subckt fulladder_2Bits CIN=COUT3E3 A1=F2E9 A0=F2E8 B1=S4E9 B0=S4E8 COUT=COUT3E4 S1=F3E7 S0=F3E6
.subckt fulladder_2Bits CIN=COUT3E4 A1=F2E11 A0=F2E10 B1=S4E11 B0=S4E10 COUT=COUT3E5 S1=F3E9 S0=F3E8
.subckt fulladder_2Bits CIN=COUT3E5 A1=F2E13 A0=F2E12 B1=S4E13 B0=S4E12 COUT=COUT3E6 S1=F3E11 S0=F3E10
.subckt fulladder_2Bits CIN=COUT3E6 A1=F2E15 A0=F2E14 B1=S4E15 B0=S4E14 COUT=COUT3E7 S1=F3E13 S0=F3E12
.subckt fulladder_n++_2Bits CIN=COUT3E7 A1=F2E14 A0=F2E14 B1=S4E17 B0=S4E16 S1=F3E15 S0=F3E14
.subckt halfadder_2Bits A1=F3E1 A0=F3E0 B1=S5E1 B0=S5E0 COUT=COUT4E0 S1=S11 S0=S10
.subckt fulladder_2Bits CIN=COUT4E0 A1=F3E3 A0=F3E2 B1=S5E3 B0=S5E2 COUT=COUT4E1 S1=F4E1 S0=F4E0
.subckt fulladder_2Bits CIN=COUT4E1 A1=F3E5 A0=F3E4 B1=S5E5 B0=S5E4 COUT=COUT4E2 S1=F4E3 S0=F4E2
.subckt fulladder_2Bits CIN=COUT4E2 A1=F3E7 A0=F3E6 B1=S5E7 B0=S5E6 COUT=COUT4E3 S1=F4E5 S0=F4E4
.subckt fulladder_2Bits CIN=COUT4E3 A1=F3E9 A0=F3E8 B1=S5E9 B0=S5E8 COUT=COUT4E4 S1=F4E7 S0=F4E6
.subckt fulladder_2Bits CIN=COUT4E4 A1=F3E11 A0=F3E10 B1=S5E11 B0=S5E10 COUT=COUT4E5 S1=F4E9 S0=F4E8
.subckt fulladder_2Bits CIN=COUT4E5 A1=F3E13 A0=F3E12 B1=S5E13 B0=S5E12 COUT=COUT4E6 S1=F4E11 S0=F4E10
.subckt fulladder_2Bits CIN=COUT4E6 A1=F3E15 A0=F3E14 B1=S5E15 B0=S5E14 COUT=COUT4E7 S1=F4E13 S0=F4E12
.subckt fulladder_n++_2Bits CIN=COUT4E7 A1=F3E14 A0=F3E14 B1=S5E17 B0=S5E16 S1=F4E15 S0=F4E14
.subckt halfadder_2Bits A1=F4E1 A0=F4E0 B1=S6E1 B0=S6E0 COUT=COUT5E0 S1=S13 S0=S12
.subckt fulladder_2Bits CIN=COUT5E0 A1=F4E3 A0=F4E2 B1=S6E3 B0=S6E2 COUT=COUT5E1 S1=F5E1 S0=F5E0
.subckt fulladder_2Bits CIN=COUT5E1 A1=F4E5 A0=F4E4 B1=S6E5 B0=S6E4 COUT=COUT5E2 S1=F5E3 S0=F5E2
.subckt fulladder_2Bits CIN=COUT5E2 A1=F4E7 A0=F4E6 B1=S6E7 B0=S6E6 COUT=COUT5E3 S1=F5E5 S0=F5E4
.subckt fulladder_2Bits CIN=COUT5E3 A1=F4E9 A0=F4E8 B1=S6E9 B0=S6E8 COUT=COUT5E4 S1=F5E7 S0=F5E6
.subckt fulladder_2Bits CIN=COUT5E4 A1=F4E11 A0=F4E10 B1=S6E11 B0=S6E10 COUT=COUT5E5 S1=F5E9 S0=F5E8
.subckt fulladder_2Bits CIN=COUT5E5 A1=F4E13 A0=F4E12 B1=S6E13 B0=S6E12 COUT=COUT5E6 S1=F5E11 S0=F5E10
.subckt fulladder_2Bits CIN=COUT5E6 A1=F4E15 A0=F4E14 B1=S6E15 B0=S6E14 COUT=COUT5E7 S1=F5E13 S0=F5E12
.subckt fulladder_n++_2Bits CIN=COUT5E7 A1=F4E14 A0=F4E14 B1=S6E17 B0=S6E16 S1=F5E15 S0=F5E14
.subckt halfadder_2Bits A1=F5E1 A0=F5E0 B1=S7E1 B0=S7E0 COUT=COUT6E0 S1=S15 S0=S14
.subckt fulladder_2Bits CIN=COUT6E0 A1=F5E3 A0=F5E2 B1=S7E3 B0=S7E2 COUT=COUT6E1 S1=S17 S0=S16
.subckt fulladder_2Bits CIN=COUT6E1 A1=F5E5 A0=F5E4 B1=S7E5 B0=S7E4 COUT=COUT6E2 S1=S19 S0=S18
.subckt fulladder_2Bits CIN=COUT6E2 A1=F5E7 A0=F5E6 B1=S7E7 B0=S7E6 COUT=COUT6E3 S1=S21 S0=S20
.subckt fulladder_2Bits CIN=COUT6E3 A1=F5E9 A0=F5E8 B1=S7E9 B0=S7E8 COUT=COUT6E4 S1=S23 S0=S22
.subckt fulladder_2Bits CIN=COUT6E4 A1=F5E11 A0=F5E10 B1=S7E11 B0=S7E10 COUT=COUT6E5 S1=S25 S0=S24
.subckt fulladder_2Bits CIN=COUT6E5 A1=F5E13 A0=F5E12 B1=S7E13 B0=S7E12 COUT=COUT6E6 S1=S27 S0=S26
.subckt fulladder_2Bits CIN=COUT6E6 A1=F5E15 A0=F5E14 B1=S7E15 B0=S7E14 COUT=COUT6E7 S1=S29 S0=S28
.subckt fulladder_n++_2Bits CIN=COUT6E7 A1=F5E14 A0=F5E14 B1=S7E17 B0=S7E16 S1=S31 S0=S30
.end
.model operando1
.inputs A1 A0 B15 B14 B13 B12 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0
.outputs S17 S16 S15 S14 S13 S12 S11 S10 S9 S8 S7 S6 S5 S4 S3 S2 S1 S0
.subckt mult_TipoI_2Bits A1=A1 A0=A0 B1=B1 B0=B0 S3=RP01 S2=RP00 S1=S1 S0=S0
.subckt mult_TipoI_2Bits A1=A1 A0=A0 B1=B3 B0=B2 S3=RP13 S2=RP12 S1=RP11 S0=RP10
.subckt mult_TipoI_2Bits A1=A1 A0=A0 B1=B5 B0=B4 S3=RP23 S2=RP22 S1=RP21 S0=RP20
.subckt mult_TipoI_2Bits A1=A1 A0=A0 B1=B7 B0=B6 S3=RP33 S2=RP32 S1=RP31 S0=RP30
.subckt mult_TipoI_2Bits A1=A1 A0=A0 B1=B9 B0=B8 S3=RP43 S2=RP42 S1=RP41 S0=RP40
.subckt mult_TipoI_2Bits A1=A1 A0=A0 B1=B11 B0=B10 S3=RP53 S2=RP52 S1=RP51 S0=RP50
.subckt mult_TipoI_2Bits A1=A1 A0=A0 B1=B13 B0=B12 S3=RP63 S2=RP62 S1=RP61 S0=RP60
.subckt mult_TipoII_2Bits A1=B15 A0=B14 B1=A1 B0=A0 S3=RP73 S2=RP72 S1=RP71 S0=RP70
.subckt halfadder_2Bits A1=RP01 A0=RP00 B1=RP11 B0=RP10 COUT=COUT0 S1=S3 S0=S2
.subckt fulladder_2Bits CIN=COUT0 A1=RP13 A0=RP12 B1=RP21 B0=RP20 COUT=COUT1 S1=S5 S0=S4
.subckt fulladder_2Bits CIN=COUT1 A1=RP23 A0=RP22 B1=RP31 B0=RP30 COUT=COUT2 S1=S7 S0=S6
.subckt fulladder_2Bits CIN=COUT2 A1=RP33 A0=RP32 B1=RP41 B0=RP40 COUT=COUT3 S1=S9 S0=S8
.subckt fulladder_2Bits CIN=COUT3 A1=RP43 A0=RP42 B1=RP51 B0=RP50 COUT=COUT4 S1=S11 S0=S10
.subckt fulladder_2Bits CIN=COUT4 A1=RP53 A0=RP52 B1=RP61 B0=RP60 COUT=COUT5 S1=S13 S0=S12
.subckt fulladder_2Bits CIN=COUT5 A1=RP63 A0=RP62 B1=RP71 B0=RP70 COUT=COUT6 S1=S15 S0=S14
.subckt bitsadder_2Bits CIN=COUT6 A1=RP73 A0=RP72 S1=S17 S0=S16
.end
.model operando2
.inputs A1 A0 B15 B14 B13 B12 B11 B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0
.outputs S17 S16 S15 S14 S13 S12 S11 S10 S9 S8 S7 S6 S5 S4 S3 S2 S1 S0
.subckt mult_TipoII_2Bits A1=A1 A0=A0 B1=B1 B0=B0 S3=RP01 S2=RP00 S1=S1 S0=S0
90
.subckt mult_TipoII_2Bits A1=A1 A0=A0 B1=B3 B0=B2 S3=RP13 S2=RP12 S1=RP11 S0=RP10
.subckt mult_TipoII_2Bits A1=A1 A0=A0 B1=B5 B0=B4 S3=RP23 S2=RP22 S1=RP21 S0=RP20
.subckt mult_TipoII_2Bits A1=A1 A0=A0 B1=B7 B0=B6 S3=RP33 S2=RP32 S1=RP31 S0=RP30
.subckt mult_TipoII_2Bits A1=A1 A0=A0 B1=B9 B0=B8 S3=RP43 S2=RP42 S1=RP41 S0=RP40
.subckt mult_TipoII_2Bits A1=A1 A0=A0 B1=B11 B0=B10 S3=RP53 S2=RP52 S1=RP51 S0=RP50
.subckt mult_TipoII_2Bits A1=A1 A0=A0 B1=B13 B0=B12 S3=RP63 S2=RP62 S1=RP61 S0=RP60
.subckt mult_TipoIII_2Bits A1=A1 A0=A0 B1=B15 B0=B14 S3=RP73 S2=RP72 S1=RP71 S0=RP70
.subckt halfadder_2Bits A1=RP01 A0=RP00 B1=RP11 B0=RP10 COUT=COUT0 S1=S3 S0=S2
.subckt fulladder_n++_2Bits CIN=COUT0 A1=RP13 A0=RP12 B1=RP01 B0=RP01 S1=G1 S0=G0
.subckt halfadder_2Bits A1=RP21 A0=RP20 B1=G1 B0=G0 COUT=COUT1 S1=S5 S0=S4
.subckt fulladder_n++_2Bits CIN=COUT1 A1=RP23 A0=RP22 B1=G1 B0=G1 S1=G3 S0=G2
.subckt halfadder_2Bits A1=RP31 A0=RP30 B1=G3 B0=G2 COUT=COUT2 S1=S7 S0=S6
.subckt fulladder_n++_2Bits CIN=COUT2 A1=RP33 A0=RP32 B1=G3 B0=G3 S1=G5 S0=G4
.subckt halfadder_2Bits A1=RP41 A0=RP40 B1=G5 B0=G4 COUT=COUT3 S1=S9 S0=S8
.subckt fulladder_n++_2Bits CIN=COUT3 A1=RP43 A0=RP42 B1=G5 B0=G5 S1=G7 S0=G6
.subckt halfadder_2Bits A1=RP51 A0=RP50 B1=G7 B0=G6 COUT=COUT4 S1=S11 S0=S10
.subckt fulladder_n++_2Bits CIN=COUT4 A1=RP53 A0=RP52 B1=G7 B0=G7 S1=G9 S0=G8
.subckt halfadder_2Bits A1=RP61 A0=RP60 B1=G9 B0=G8 COUT=COUT5 S1=S13 S0=S12
.subckt fulladder_n++_2Bits CIN=COUT5 A1=RP63 A0=RP62 B1=G9 B0=G9 S1=G11 S0=G10
.subckt halfadder_2Bits A1=RP71 A0=RP70 B1=G11 B0=G10 COUT=COUT6 S1=S15 S0=S14
.subckt fulladder_n++_2Bits CIN=COUT6 A1=RP73 A0=RP72 B1=G11 B0=G11 S1=S17 S0=S16
.end
.model mult_TipoI_2Bits
.inputs A1 A0 B1 B0
.outputs S3 S2 S1 S0
.gate nand2 a=A1 b=A0 O=I2349809
.gate inv1 a=B1 O=I2349810
.gate inv1 a=B0 O=I2349811
.gate nor3 a=I2349809 b=I2349810 c=I2349811 O=S3
.gate nor2 a=A0 b=I2349811 O=I2349759
.gate nor2 a=I2349759 b=I2349811 O=I2349744
.gate inv1 a=A1 O=I2349807
.gate nor3 a=I2349744 b=I2349807 c=I2349810 O=S2
.gate nand3 a=I2349811 b=A0 c=B1 O=I2349864
.gate xor a=A1 b=A0 O=I2349862
.gate nand2 a=I2349862 b=B1 O=I2349868
.gate nand2 a=I2349810 b=A1 O=I2349878
.gate nand2 a=I2349868 b=I2349878 O=I2349860
.gate nand2 a=I2349860 b=B0 O=I2349866
.gate nand2 a=I2349864 b=I2349866 O=S1
.gate inv1 a=A0 O=I2349808
.gate nor2 a=I2349808 b=I2349811 O=S0
.end
.model mult_TipoII_2Bits
.inputs A1 A0 B1 B0
.outputs S3 S2 S1 S0
.gate inv1 a=B1 O=II2350002
.gate nor2 a=B0 b=II2350002 O=II2349942
.gate nor2 a=B0 b=II2349942 O=II2349919
.gate inv1 a=A1 O=II2350000
.gate nor2 a=II2349919 b=II2350000 O=S3
.gate inv1 a=B0 O=II2350001
.gate inv1 a=A0 O=II2350004
.gate nor3 a=II2350001 b=II2350002 c=II2350004 O=II2349937
.gate xor a=B1 b=B0 O=II2350003
.gate nor2 a=II2349937 b=II2350003 O=II2349922
.gate nor2 a=II2349922 b=II2350000 O=S2
.gate nand3 a=II2350001 b=B1 c=A0 O=II2350063
.gate xor a=A1 b=A0 O=II2350061
.gate nand2 a=II2350061 b=B1 O=II2350067
.gate nand2 a=II2350002 b=A1 O=II2350083
.gate nand2 a=II2350067 b=II2350083 O=II2350059
.gate nand2 a=II2350059 b=B0 O=II2350065
.gate nand2 a=II2350063 b=II2350065 O=S1
.gate nor2 a=II2350001 b=II2350004 O=S0
.end
91
.model mult_TipoIII_2Bits
.inputs A1 A0 B1 B0
.outputs S3 S2 S1 S0
.gate inv1 a=B1 O=III2350227
.gate nor2 a=B0 b=III2350227 O=III2350220
.gate inv1 a=A1 O=III2350224
.gate nand3 a=III2350220 b=III2350224 c=A0 O=III2350321
.gate nand3 a=B1 b=III2350224 c=A0 O=III2350325
.gate nand2 a=III2350227 b=A1 O=III2350341
.gate nand2 a=III2350325 b=III2350341 O=III2350291
.gate nand2 a=III2350291 b=B0 O=III2350323
.gate nand2 a=III2350321 b=III2350323 O=S3
.gate xor a=A1 b=A0 O=III2350295
.gate inv1 a=B0 O=III2350228
.gate nand3 a=III2350295 b=III2350228 c=B1 O=III2350311
.gate nand3 a=B1 b=III2350224 c=A0 O=III2350315
.gate nand2 a=III2350227 b=A1 O=III2350335
.gate nand2 a=III2350315 b=III2350335 O=III2350293
.gate nand2 a=III2350293 b=B0 O=III2350313
.gate nand2 a=III2350311 b=III2350313 O=S2
.gate nand3 a=III2350228 b=A0 c=B1 O=III2350301
.gate xor a=A1 b=A0 O=III2350299
.gate nand2 a=III2350299 b=B1 O=III2350305
.gate nand2 a=III2350227 b=A1 O=III2350329
.gate nand2 a=III2350305 b=III2350329 O=III2350297
.gate nand2 a=III2350297 b=B0 O=III2350303
.gate nand2 a=III2350301 b=III2350303 O=S1
.gate inv1 a=A0 O=III2350225
.gate nor2 a=III2350225 b=III2350228 O=S0
.end
.model halfadder_2Bits
.inputs A1 A0 B1 B0
.outputs COUT S1 S0
.subckt halfadder A=A0 B=B0 COUT=COUT0 S=S0
.subckt fulladder CIN=COUT0 A=A1 B=B1 COUT=COUT S=S1
.end
.model fulladder_2Bits
.inputs CIN A1 A0 B1 B0
.outputs COUT S1 S0
.subckt fulladder CIN=CIN A=A0 B=B0 COUT=COUT0 S=S0
.subckt fulladder CIN=COUT0 A=A1 B=B1 COUT=COUT S=S1
.end
.model bitsadder_2Bits
.inputs CIN A1 A0
.outputs S1 S0
.subckt halfadder A=A0 B=CIN COUT=COUT0 S=S0
.gate xor a=A1 b=COUT0 o=S1
.end
.model fulladder_n++_2Bits
.inputs CIN A1 A0 B1 B0
.outputs S1 S0
.subckt fulladder CIN=CIN A=A0 B=B0 COUT=COUT0 S=S0
.subckt fulladder_n++ CIN=COUT0 A=A1 B=B1 S=S1
.end
.model fulladder_n++
.inputs CIN A B
.outputs S
.gate xor a=A b=B o=fio1
.gate xor a=fio1 b=CIN o=S
.end
.model fulladder
.inputs CIN A B
.outputs COUT S
.gate xor a=A b=B o=fio1
92
.gate xor a=fio1 b=CIN o=S
.gate and2 a=A b=B o=fio2
.gate and2 a=fio1 b=CIN o=fio3
.gate or2 a=fio3 b=fio2 o=COUT
.end
.model halfadder
.inputs A B
.outputs COUT S
.gate xor a=A b=B o=S
.gate and2 a=A b=B o=COUT
.end
ANEXO II – Fluxo de projeto para a obtenção dos circuitos
multiplicadores
O fluxo de projeto para a obtenção dos resultados de área e atraso (ferramenta SIS)
e estimativa de potência (ferramenta SLS) dos multiplicadores analisados neste trabalho, é
mostrado abaixo e está de acordo com a metodologia mostrada na seção 1.3.
A síntese e teste dos circuitos multiplicadores é realizada no ambiente SIS, assim
como a obtenção dos resultados de área e atraso do circuito. O procedimento para execução
destas tarefas é apresentado a seguir.
1) Simulação no ambiente SIS:
2) Obtenção de área (literais) e atraso (ns) do circuito multiplicador:
93
3) Mapeamento do circuito e geração do circuito “flat”, ou seja sem sub-circuitos em um
novo arquivo:
4) Retirar do arquivo multibin16m2origa.blif os caracteres “[“ e “]”, além da seguintes
linhas do inicio do arquivo:
.default_input_arrival 0.00 0.00
.default_output_required 0.00 0.00
.default_input_drive 0.10 0.10
.default_output_load 2.00
.default_max_input_load 999.00
5) Para obter os resultados de estimativa de potência é necessário a conversão dos formatos
BLIF para SLS através da ferramenta blif2sls:
[root@localhost mulbin16m2orig]# blif2sls mulbin16m2origa.blif mulbin16m2orig.sls
mcnc.genlib
>>> CONVERSÃO PARA O FORMATO SLS.
6) Retirar do inicio do arquivo mulbin16m2orig.sls os modelos das portas lógicas que foi
introduzido pelo conversor.
7) Criar um projeto no ambiente SLS:
94
[root@localhost mulbin16m2orig]# mkpr –o –p fishbone –l [nome do projeto]
8) Copiar todas as portas lógicas lógicas da biblioteca mcnc.genlib no formato SLS para
dentro da pasta do projeto que foi criada.
9) Dentro da pasta de projeto compilar todas as portas lógicas e o circuito através do
comando csls , por exemplo:
[root@localhost mulbin16m2orig]# csls and2.sls
[root@localhost mulbin16m2orig]# csls and3.sls
….
[root@localhost mulbin16m2orig]# csls mulbin16m2orig.sls
10) Verificar se todas os arquivos foram corretamente compilados através do comando:
[root@localhost mulbin16m2orig]# dblist
11) Comando para estimativa de potência de acordo com um vetor de dados de entrada ,
sintaxe: sls [nome do projeto] [vetor de entrada (.cmd)] 1> [arquivo de status]
[root@localhost mulbin16m2orig]# sls mulbin16m2orig VetBinRan16b.cmd 1> sim.diag
12) Após a simulação no arquivo sim.diag pode ser verificado se ocorreu algum erro de
simulação. A ferramenta cria três arquivos:
mulbin16m2orig.dis possui o valor estimado do consumo de potência da simulação;
mulbin16m2orig.out tabela com os valores de entrada e de saída das simulações;
mulbin16m2orig.res mostra a faixa dos tempos de simulação.
Download