Upload
vongoc
View
214
Download
0
Embed Size (px)
Citation preview
FilterAdapt
Filtros adaptativos de coeficientes variáveis
Paulo Alexandre Cristóvão Santa Rosa Pereira
Dissertação para obtenção do Grau de Mestre em
Engenharia Electrotécnica e de Computadores
Júri
Presidente: Prof. Marcelino Bicho dos Santos
Orientador: Prof. Paulo Ferreira Godinho Flores
Co-Orientador: Prof. José Carlos Alves Pereira Monteiro
Vogal: Prof. Fernando Manuel Duarte Gonçalves
Abril 2012
III
AGRADECIMENTOS
Agradeço a todas aquelas pessoas que ajudaram à execução desta
dissertação, e todos os outros trabalhos e projectos que surgiram ao longo do
mestrado.
Agradeço ao meu orientador, Professor Paulo Ferreira Godinho Flores, por
todo tempo, paciência e ajuda.
Agradeço aos meus amigos pela ajuda, pelo apoio e pelo conforto.
Agradeço à minha família, em especial aos meus pais e irmão, aos quais privei
de muito tempo e atenção nestes últimos anos da minha vida académica.
V
ABSTRACT
This work presents a study on different parallel architectures to implementation of 2 digital filters
FIR in the same structure. Will be study parallels architectures FIR with multipliers or with
addition, subtraction and shifts. The architectures are automatically generated by a tool
developed for this work. The tools automatically generate synthesizable VHDL files necessary
to the FIR filters function.
Will be presented four architectures with multipliers, one with multipliers NxN, other with
multipliers NxM and two architectures that shared the multipliers. One of the architecture
maximize the share of multipliers and other that implement half filter with sharing multipliers. By
maximize the sharing of multipliers , we obtain better results in area and power.
In the architectures with adders, subtractors and shifts, will be present six architectures, were
two of them share the operators (adders and subtractors). In these two architectures, we
developed two algorithms to optimize architecture which share the operands (adders and
subtractions), a heuristic algorithm and another that use linear programming.
By comparing the area, power and delay, for a different input signal (8, 16 and 32 bits), the
architecture with multipliers needed more area and power than the others architecture, but for
small size of signal input they are the most faster. The architecture that use linear programming
present the best results in area and power.
KEYWORKS
FIR architectures; MCM; ILP; area; power; delay time.
VII
RESUMO
Esta dissertação para a obtenção do grau de Mestre apresenta um estudo de diferentes
arquitecturas para a implementação de dois filtros digitais FIR na mesma estrutura. Vão ser
estudadas arquitecturas paralelas com multiplicadores e com somadores, subtractores e
deslocamentos. As arquitecturas são geradas automaticamente pela ferramenta desenvolvida
neste trabalho. A ferramenta gera todos os ficheiros VHDL sintetizáveis necessários para o
funcionamento dos filtros FIR.
Vamos apresentar quatro arquitecturas com multiplicadores, uma com multiplicadores NxN,
outra com multiplicadores NxM e duas arquitecturas que partilham os multiplicadores, uma que
maximiza a partilha dos multiplicadores e outra que implementa metade do filtro com partilha
dos multiplicadores. Ao maximizar a partilha dos multiplicadores, conseguimos obter melhores
resultados na área e potência.
Nas arquitecturas com somadores, subtractores e deslocamentos, serão apresentadas seis
arquitecturas, em que duas partilham os operadores (somadores e subtractores). Nestas duas
arquitecturas foram desenvolvidos dois algoritmos para optimizar a partilha. um algoritmo de
procura heurístico e outro que utiliza a programação linear.
Ao comparar a área, potência e tempo de atraso, para diferentes tamanhos do sinal de entrada
(8,16 e 32 bits), as arquitecturas com multiplicadores precisam de mais área e potência que as
arquitecturas com somadores e subtractores, mas para pequenos sinais de entrada, são mais
rápidas. A arquitectura que utiliza a programação linear apresenta os melhores resultados na
área e potência.
PALAVRAS-CHAVE
Arquitecturas FIR; MCM; ILP; área; potência; tempo de atraso.
IX
ÍNDICE
Lista de Figuras ............................................................................................................................ XI
Lista de Tabelas ......................................................................................................................... XIII
1. Introdução .............................................................................................................................. 1
1.1. Enquadramento ............................................................................................................. 1
1.2. Objectivos ...................................................................................................................... 2
1.3. Organização da dissertação .......................................................................................... 3
2. Filtros digitais configuráveis .................................................................................................. 5
2.1. Introdução ...................................................................................................................... 5
2.2. Vantagens ..................................................................................................................... 5
2.3. Filtros digitais ................................................................................................................. 6
2.4. Filtros configuráveis....................................................................................................... 8
2.5. Etapas no projecto de filtros digitais .............................................................................. 9
2.6. Especificações dos filtros utilizados ............................................................................ 10
3. Arquitecturas para filtros FIR com multiplicadores .............................................................. 13
3.1. Processo para juntar dois filtros FIR ........................................................................... 14
3.2. Optimização dos multiplicadores ................................................................................. 29
3.3. Partilha dos multiplicadores ........................................................................................ 32
3.3.1. Agrupando todos os Coeficientes ....................................................................... 33
3.3.2. Agrupando metade do filtro ................................................................................. 34
3.4. Resultados ................................................................................................................... 36
3.4.1. Área ..................................................................................................................... 38
3.4.2. Potência ............................................................................................................... 39
3.4.3. Tempo de atraso ................................................................................................. 40
4. Arquitectura para filtros FIR paralela com adições e deslocamentos ................................. 41
4.1. Implementação das arquitecturas ............................................................................... 43
4.1.1. Arquitecturas sem partilha dos somadores ......................................................... 43
4.1.2. Arquitectura com partilha dos somadores ........................................................... 46
4.2. Resultados ................................................................................................................... 58
4.2.1. Área ..................................................................................................................... 58
4.2.2. Potência ............................................................................................................... 59
X
4.2.3. Tempo de atraso ................................................................................................. 60
5. Geração e sintese de arquitecturas para filtros FIR ............................................................ 61
5.1. Ficheiro com os coeficientes do filtro .......................................................................... 61
5.2. Opções da ferramenta ................................................................................................. 62
6. Arquitecturas com Multiplicadores VS Arquitecturas com Somadores ............................... 69
6.1. Melhor Área ................................................................................................................. 69
6.2. Melhor Potência ........................................................................................................... 70
6.3. Melhor Tempo de Atraso ............................................................................................. 71
6.4. Classificação e resumo dos resultados ....................................................................... 71
7. Conclusões e Trabalho Futuro ............................................................................................ 75
7.1. Conclusão .................................................................................................................... 75
7.2. Trabalho Futuro ........................................................................................................... 77
Referências ................................................................................................................................. 79
Anexo A ....................................................................................................................................... 80
A – Resultados para os filtros FIR01 e FIR02 ......................................................................... 80
Anexo B ....................................................................................................................................... 81
B – Resultados para os filtros FIR06 e FIR07 ......................................................................... 81
Anexo C ....................................................................................................................................... 83
C – Resultados para os filtros FIR05 e FIR09 ........................................................................ 83
Anexo D ....................................................................................................................................... 84
Script ....................................................................................................................................... 84
XI
LISTA DE FIGURAS
Figura 2.1: Esquema de funcionamento de um filtro digital .......................................................... 5
Figura 2.2: Estrutura da Forma directa ......................................................................................... 8
Figura 2.3: Estrutura da forma transposta .................................................................................... 8
Figura 2.4 – Diagrama de processos a realizar para a implementação de filtros ......................... 9
Figura 3.1 – Diagrama de blocos da arquitectura com multiplicadores em paralelo .................. 13
Figura 3.2 – Diagrama de blocos da arquitectura de 2 filtros com multiplicadores em paralelo 14
Figura 3.3 – Diagrama de blocos com partilha do bloco acumulador. ........................................ 15
Figura 3.4 – Diagrama do bloco acumulador para o exemplo .................................................... 17
Figura 3.5 – Gráfico com as áreas do somador/subtractor e somador para 8,16,24 e 32 bits. . 18
Figura 3.6 – Gráfico com a potência consumida do somador/subtractor e somador para 8,16,24
e 32 bits. ...................................................................................................................................... 18
Figura 3.7 – Gráfico com o tempo de atraso do somador/subtractor e somador para 8,16,24 e
32 bits. ......................................................................................................................................... 19
Figura 3.8 – Diagrama de blocos com 2 multiplicadores ............................................................ 20
Figura 3.9 – Diagrama de blocos com 1 multiplicador e negação do sinal. ............................... 20
Figura 3.10 – Gráfico da área ocupada por 2 multiplicadores e 1 multiplicador com 1 conversor.
..................................................................................................................................................... 20
Figura 3.11 – Gráfico da potência consumida por 2 multiplicadores e 1 multiplicador com 1
conversor. .................................................................................................................................... 21
Figura 3.12 – Gráfico do tempo de atraso por 2 multiplicadores e 1 multiplicador com 1
conversor. .................................................................................................................................... 21
Figura 3.13 - Diagrama de blocos do deslocamento do 3 .......................................................... 23
Figura 3.14 – Etapa do processo para a optimização dos multiplicadores. ............................... 23
Figura 3.15 – Diagrama de blocos com a optimização dos multiplexeres .................................. 25
Figura 3.16 – Diagrama de blocos de 2 filtros FIR...................................................................... 27
Figura 3.17 – Diagrama de blocos de multiplicadores em paralelo ............................................ 29
Figura 3.18 – Gráfico da área ocupada pelo multiplicador nxn e nxm........................................ 30
Figura 3.19 – Gráfico da potência do multiplicador nxn e nxm. .................................................. 31
Figura 3.20 – Gráfico do tempo de atraso pelo multiplicador nxn e nxm.................................... 31
Figura 3.21 – Diagrama de Venn ................................................................................................ 32
Figura 3.22 – Diagrama de blocos da arquitectura FIR com multiplicadores partilhados em
paralelo (multiplicador c/ mux) .................................................................................................... 33
Figura 3.23 – Diagrama de blocos da arquitectura FIR paralela com multiplicadores partilhados
V2 (multiplicador c/ mux v2). ....................................................................................................... 36
Figura 3.24 – Gráfico com as áreas do bloco MCM com multiplicadores................................... 38
Figura 3.25 – Gráfico com as potências do bloco MCM com multiplicadores ............................ 39
Figura 3.26 – Gráfico com o tempo de atraso do bloco MCM com multiplicadores ................... 40
Figura 4.1 – Diagrama de blocos com partilha ........................................................................... 42
XII
Figura 4.2 – Diagrama de blocos com mínimo de operações em série...................................... 42
Figura 4.3 – Diagrama de blocos com dois MCM´s e dois blocos acumuladores(2 MCM 2
Blocos registos) ........................................................................................................................... 44
Figura 4.4 - Diagrama de blocos com dois MCM´s e um bloco acumulador (2 MCM 1 Bloco
registo) ......................................................................................................................................... 45
Figura 4.5 – Diagrama de blocos com um MCM e um bloco acumulador (1 MCM 1 Bloco
registo) ......................................................................................................................................... 46
Figura 4.6 – (a) Diagrama de blocos dos coeficientes 303x e 117x. (b) Diagrama de blocos do
resultados de partilhar os coeficientes 303x e 117x. .................................................................. 47
Figura 4.7 – Etapas efectuadas pelo algoritmo no emparelhamento dos coeficientes parciais . 48
Figura 4.8 – Área ocupada por vários componentes. ................................................................. 52
Figura 4.9 - Gráfico com as áreas do bloco MCM com somadores, subtractores e
deslocamentos ............................................................................................................................ 58
Figura 4.10 - Gráfico com as potências do bloco MCM com somadores, subtractores e
deslocamentos ............................................................................................................................ 59
Figura 4.11 - Gráfico com os tempos de atraso do bloco MCM com somadores, subtractores e
deslocamentos ............................................................................................................................ 60
Figura 5.1 – Exemplo de um ficheiro contendo os coeficientes e termos parciais do filtro. ....... 61
Figura 5.2 – Especificação do multiplicador genérico NxN. ........................................................ 64
Figura 5.3 – Especificação do multiplicador genérico NxM. ....................................................... 64
Figura 5.4 – Especificação do somador genérico. ...................................................................... 65
Figura 5.5 – Especificação do subtractor genérico. .................................................................... 65
Figura 5.6 – Especificação do somador/subtractor genérico. ..................................................... 65
Figura 5.7 - Especificação do registo genérico. .......................................................................... 66
Figura 5.8 – Especificação do multiplexer genérico.................................................................... 66
Figura 5.9 – Especificação do negador de sinal genérico. ......................................................... 66
Figura 5.10 – Excerto do bloco acumulador para os filtros 6 e 7 ao nível do bloco. .................. 67
Figura 5.11 – Exemplo do nível do bloco para um somador e para os dois tipos de
multiplicadores (NxN e NxM). ...................................................................................................... 67
Figura 5.12 – Exemplo do nível algoritmo para um somador e para os dois tipos de
multiplicadores (NxN e NxM). ...................................................................................................... 67
Figura 5.13 – Fluxograma da ferramenta .................................................................................... 68
Figura 6.1 – Gráfico com as arquitecturas com a área menor. ................................................... 69
Figura 6.2 – Gráfico com as arquitecturas com a potência menor ............................................. 70
Figura 6.3– Gráfico com as arquitecturas com o tempo de atraso menor .................................. 71
XIII
LISTA DE TABELAS
Tabela 2.1 Especificações dos filtros .......................................................................................... 10
Tabela 2.2 – Resposta ao escalão unitário e largura do sinal de saída face ao sinal de entrada
..................................................................................................................................................... 11
Tabela 3.1 – Número de multiplexeres nos filtros de teste ......................................................... 26
Tabela 3.2 – Multiplicadores a implementar nos filtros de teste ................................................. 28
Tabela 3.3 – Multiplicadores a implementar para todos os filtros. .............................................. 28
Tabela 3.4 – Total de bits nas saídas dos multiplicadores ......................................................... 30
Tabela 3.5 – Multiplicadores a implementar com e sem partilha ................................................ 34
Tabela 3.6 – Ajuste dos coeficientes dos dois filtros .................................................................. 35
Tabela 3.7 – Reajuste dos coeficientes dos filtros ...................................................................... 35
Tabela 3.8 – Coeficientes a implementar na arquitectura com partilha do multiplicador ........... 36
Tabela 3.9 – Tabela com o número de multiplicadores e negadores de sinal a implementar em
cada arquitectura ......................................................................................................................... 37
Tabela 4.1 – Cálculo dos coeficientes usando o MCM ............................................................... 41
Tabela 4.2 – Coeficientes parciais do filtro 6 e 7. ....................................................................... 49
Tabela 4.3 – As 6 etapas efectuadas aos filtros 6 e 7. ............................................................... 49
Tabela 4.4 – Declive dos vários tipos de componentes .............................................................. 52
Tabela 4.5 – Matriz de custo ....................................................................................................... 55
Tabela 4.6 - Valores dos pares de filtros para variações da barreira de decisão ....................... 57
Tabela 5.1 – Opções da ferramenta desenvolvida neste trabalho. ............................................ 62
Tabela 5.2 – Tabela com as diferentes opções de arquitectura. ................................................ 63
Tabela 6.1 – Classificação e resumo dos filtros para um sinal de entrada de 8 bits. ................. 72
Tabela 6.2 – Classificação e resumo dos filtros para um sinal de entrada de 16 bits. ............... 72
Tabela 6.3 – Classificação e resumo dos filtros para um sinal de entrada de 32 bits. ............... 73
1
CAPÍTULO 1
1. INTRODUÇÃO
1.1. ENQUADRAMENTO
Os processadores digitais de sinais são microprocessadores com características próprias que
podem ser programados e operam em tempo real, e têm a capacidade em repetir em extrema
velocidade instruções complexas (como por exemplo a MPYA: “Multiply and Accumulate
Previous Product”). O processamento de sinais (DSP) tem registado um número crescente de
aplicações nos últimos anos. Este facto está ligado à evolução do desempenho deste tipo de
processadores e à evolução das ferramentas computacionais de apoio ao desenvolvimento de
sistemas de processamento de sinal.
Entre os sistemas de processamento digital de sinais mais comuns, inclui-se os filtros do tipo
FIR e IIR, e o cálculo da Transformada de Fourier (FFT). A implementação destes, baseia-se
em operações numéricas de multiplicação e adição, envolvendo coeficientes constantes e
amostras do sinal a processar. Os filtros digitais são os blocos mais utilizados em
processamento de sinais digitais. Na maioria das vezes, os filtros são realizados por DSP´s ou
por processadores genéricos. No entanto, para terem um menor consumo de energia e serem
mais rápidos, recorre-se à implementação directa por hardware. Assim, em muitas aplicações,
para comunicações de alta velocidade e/ou de baixo consumo de energia, os filtros são
implementados directamente em hardware. No entanto, como a implementação directa em
hardware, recorre a muitas multiplicações, que apresenta custos muito elevados em termos de
área, atraso e energia consumida. Assim, ao longo desta última década foram desenvolvidas
várias técnicas de optimização de modo a reduzir a área, a energia consumida e o tempo de
atraso do circuito.
A realização de filtros digitais envolve converter uma dada função de transferência numa
adequada estrutura para filtros. Os filtros digitais podem ser divididos em duas classes: filtro de
resposta impulsiva finita (FIR1) e filtro de resposta impulsiva infinita (IIR
2). Os filtros FIR são
caracterizados por serem não recursivos, logo são estáveis e podem ter fase linear, enquanto
os filtros IIR sendo recursivos, não se pode garantir a estabilidade e não têm fase linear, mas
são mais fáceis de sintetizar e necessitam de um número menor de coeficientes que os filtros
FIR para a mesma resposta em frequência. Diagrama de blocos ou fluxogramas são muitas
vezes utilizadas para descrever as estruturas para filtros e mostrar o procedimento
1 FIR – Finite Impulsive Response.
2 IIR – Infinite Impulsive Response.
2
computacional para a implementação dos filtros digitais. A estrutura a usar depende se o filtro é
FIR ou IIR. As duas estruturas geralmente mais utilizadas são a forma directa e a transposta.
Um dos critérios mais importantes na implementação dos filtros FIR directamente em hardware
é satisfazer a característica do filtro que depende dos seus coeficientes. De modo a melhorar o
desempenho dos filtros digitais, diminuindo a sua complexidade não só reduz a área e a
energia consumida dos filtros, mas também resulta em arquitecturas mais rápidas [1]. As
operações de multiplicação por múltiplas constantes, (“Multiple Constant Multiplier”) ou MCM,
são muito comuns nos filtros digitais. Uma das arquitecturas para a implementação dos filtros
FIR directamente em hardware, consiste na substituição dos multiplicadores por adições,
subtracções e deslocamentos. Deste modo, a implementação dos filtros é menos complexa, do
que o projecto com multiplicadores. Existem várias técnicas que permitem a redução dos
somadores/subtractores, outras na melhor partilha dos coeficientes e por fim, um dos critérios
não menos importantes na implementação dos filtros digitais, o tempo de atraso.
Os filtros digitais são desenhados como objectivo de cumprir a resposta em frequência
estipulada. Os coeficientes são calculados para cumprir as características do filtro digital. Nos
filtros digitais, para mudar a sua característica é necessário alterar o conjunto de coeficientes
que descreve o filtro. Uma arquitectura que pode mudar os parâmetros do filtro é uma
arquitectura configurável. Uma arquitectura FIR configurável tem a vantagem de ter vários
filtros diferentes implementados num só circuito de forma optimizada. Estes tipos de filtros
podem ser aplicados em sistemas de som e imagem, onde existem muitas normas, o que
implica diferentes conjuntos de coeficientes. Por exemplo, pode ser aplicado a um sistema que
opere na Europa ou na América e que tenha de eliminar a frequência da tensão eléctrica, em
que a frequência é diferente, 50 Hz e 60 Hz respectivamente.
1.2. OBJECTIVOS
Os objectivos para a realização deste trabalho são:
O estudo de arquitecturas paralelas de filtros FIR configuráveis. Serão estudadas as
arquitecturas com multiplicadores e arquitecturas com adições, subtracções e
deslocamentos.
Estudar e analisar os resultados provenientes de todas as arquitecturas. Será feita uma
comparação entre as arquitecturas, de modo a eleger as arquitecturas com melhor
desempenho na área ocupada, na energia consumida e o tempo de atraso.
Usando somente a multiplicação por múltiplas constantes com adições, subtracções e
deslocamentos e as arquitecturas similares de outros autores, serão feitas uma
comparação entre as áreas, energia e frequência máxima de funcionamento.
3
Para o estudo de arquitecturas paralelas de filtros FIR configuráveis, foi criada uma aplicação
para gerar de forma automática as diferentes arquitecturas.
1.3. ORGANIZAÇÃO DA DISSERTAÇÃO
A dissertação encontra-se organizada com o objectivo de permitir expor de forma sistematizada
os aspectos teóricos e práticos considerados mais relevantes no estudo de arquitecturas FIR
paralelas configuráveis.
No Capítulo 2 apresenta-se uma breve introdução sobre os filtros FIR, sobre as suas
vantagens, fundamentos teóricos, estruturas mais utilizadas, e no fim do capítulo abordam-se
os filtros configuráveis, servindo de base para os capítulos seguintes.
No Capítulo 3 descrevem-se quatro arquitecturas FIR configuráveis paralelas com
multiplicadores, os critérios utilizados para a sua implementação, as diferenças entre elas. Será
apresentado os resultados obtidos por síntese e uma breve conclusão.
No Capítulo 4 serão apresentadas seis arquitecturas FIR configuráveis paralelas usando
apenas somadores/subtractores e deslocamentos. Serão apresentados os esquemas,
resultados obtidos através da síntese, e uma breve conclusão.
No Capítulo 5 descrevem-se as características do programa elaborado para a geração
automática de arquitecturas FIR configuráveis. Será explicado o seu funcionamento, todas as
opções tomadas ao longo do projecto.
No Capítulo 6 compara-se todas as arquitecturas apresentadas nos capítulos anteriores.
No Capítulo 7 resumem-se os principais aspectos a reter e as principais conclusões obtidas
com a realização deste trabalho. No fim referem-se algumas possibilidades a explorar em
futuros desenvolvimentos do trabalho contemplado nesta dissertação.
5
CAPÍTULO 2
2. FILTROS DIGITAIS CONFIGURÁVEIS
2.1. INTRODUÇÃO
Todas as recentes contribuições no domínio da filtragem digital, muitas delas propiciadas pelos
grandes avanços nas tecnologias da microelectrónica, ainda que inovadoras na abordagem,
suportam-se basilarmente na teoria do processamento de sinal desenvolvida nos anos 60,
particularmente no que respeita à análise do comportamento dos sistemas discretos.
O projecto e implementação em tempo real de filtros digitais em hardware é um processo
exigente face à diversidade de opções que colocam em cada fase do processo. No mundo
tecnológico em que vivemos, estamos interessados em medir sinais que variam com o tempo.
O processamento desses sinais, requer que primeiro sejam convertidos na forma digital. Para
tal, os sinais devem ser inicialmente amostrados, respeitando o Teorema da Amostragem.
Depois de amostrar o sinal, os valores são quantizados, ou seja, são atribuídos valores
discretos para um sinal cuja amplitude varia entre valores pré-definidos. Assim, os sinais
podem ser lidos pelo DSP como valores numéricos. No DSP são feitos os cálculos necessários
para fazer a filtragem, multiplicando o sinal de entrada por constantes e somando os produtos
resultantes.
Figura 2.1: Esquema de funcionamento de um filtro digital
2.2. VANTAGENS
A utilização de filtros digitais no processamento de sinais traz inúmeras vantagens em relação
aos filtros analógicos.
Os filtros digitais têm um papel muito importante em DSP;
6
Os filtros digitais em comparação com os filtros analógicos são preferíveis em mais
aplicações, por exemplo, compressão e transmissão de dados, áudio digital,
processamento de sinais biomédicos, voz e imagem e cancelamento do eco em
telefones;
Os filtros digitais podem ter características que não são possíveis nos filtros
analógicos, como uma verdadeira resposta de fase linear;
Ao contrário dos filtros analógicos, o desempenho dos filtros digitais não varia com as
mudanças ambientais, por exemplo as variações de temperatura. Isto elimina a
necessidade de calibrar o filtro periodicamente;
A resposta à frequência dos filtros digitais podem ser automaticamente ajustáveis, se
utilizados em filtros adaptativos;
Vários sinais de entrada ou canais podem ser filtrados por um único filtro, sem
necessidade de ser replicado em hardware;
Ambos os dados filtrados e não-filtrados podem ser guardados para uma utilização
futura nos filtros digitais;
O avanços tremendos na tecnologia VLSI é uma grande vantagem para o fabrico de
filtros digitais para torna-los mais pequenos, consumir menos potência e manter o
baixo custo;
Na prática, a precisão atingida nos filtros analógicos é restrita. Com os filtros digitais a
precisão só é limitada pela escolha do número de bits;
Os filtros digitais podem ser usados em muito baixas frequências, que se encontram
em muitas aplicações biomédicas por exemplo, onde o uso de filtros analógicos é
impraticável. Também os filtros digitais podem ser feitos para funcionar em uma ampla
faixa de frequências com uma simples mudança na frequência de amostragem.
2.3. FILTROS DIGITAIS
Os filtros digitais podem ser divididos em duas classes: filtro de resposta impulsiva finita (FIR3)
e filtro de resposta impulsiva infinita (IIR4). Existem grandes diferenças entre as duas classes:
Resposta da fase: os filtros FIR podem ter uma resposta da fase exactamente linear.
Isto implica que não existe distorção na fase do sinal provocado pelo filtro. Esta é um
requerimento muito importante em muitas aplicações. A fase dos filtros IIR é não-linear;
Estabilidade: Os filtros FIR são não-recursivos, logo são sempre estáveis. A
estabilidade nos filtros IRR nem sempre pode ser garantida;
Erros de quantização: O efeito de usar um número limitado de bits para implementar
filtros, que pode provocar ruído na saída, é muito menos grave nos FIR do que no IIR;
3 FIR – Finite Impulsive Response.
4 IIR – Infinite Impulsive Response.
7
Número de Coeficientes: O filtro FIR precisa de mais coeficientes do que o filtro IIR.
Para uma dada específica resposta de amplitude, o filtro FIR necessita de mais tempo
de processamento. Contudo, existem técnicas que podem melhorar significamente a
eficiência da implementação dos filtros FIR;
Transformação dos filtros analógicos: Os filtros analógicos podem ser facilmente
transformados num filtro IIR equivalente com especificações similares. Isto não é
possível com os filtros FIR que não têm uma contrapartida analógica. Contudo, com os
filtros FIR é muito fácil sintetizar filtros com uma resposta em frequência arbitrária;
Síntese: Em geral, os filtros FIR são algebricamente mais difíceis de sintetizar, se no
suporte para CAD não estiver disponível.
Os filtros digitais não recursivos têm uma implementação em hardware simples e eficaz,
definidos pela seguinte equação:
k
k knxhny ][.][ (1)
Em que x[n] é o sinal de entrada, y[n] o sinal de saída e hk os coeficientes do filtro. Este
processo é uma convolução do sinal de entrada com os coeficientes do filtro. Na
implementação do filtro, o somatório é limitado ao número de coeficientes do filtro. Pelo facto
de um filtro ser um sistema causal, o sinal de saída não pode depender de valores futuro do
sinal de entrada. Assim, a Equação 1 torna-se para o respectivo filtro FIR:
1
0
][.][N
k
k knxhny (2)
Também de pode descrever os filtros FIR pela sua Função de Transferência, usando a
Transformada Z:
1
0
.][N
k
k
k zhzT (3)
Na implementação de filtros digitais FIR, a estrutura escolhida pode ser importante para o
desempenho do mesmo. Utilizando a Equação (2), obtém-se a implementação na forma directa
que consiste na soma de sucessivas entradas atrasadas, multiplicadas pelos coeficientes dos
filtros. Na Figura 2.2 representa-se esquematicamente a estrutura do filtro quando
implementado na forma directa, em que z-1
representa o atraso do sinal de entrada e h(N)
representa os diferentes coeficientes do filtro. Para a forma transposta, Figura 2.3, invertem-se
todos os sinais da forma directa e substituem-se os nós divergentes, por nós convergentes
(somadores). Os nós onde se convergem sinais representam a soma dos sinais convergentes.
8
Figura 2.2: Estrutura da Forma directa
Figura 2.3: Estrutura da forma transposta
A forma directa ou transposta dos filtros FIR são canónicas, em que cada uma usa
exactamente N multiplicadores, N - 1 somadores, N - 1 registos e têm uma latência mínima de
N - 1 ciclos de relógios. Em muitas aplicações de filtragem ter a latência mínima é o factor mais
importante [3].
A forma transposta tem uma grande capacitância no sinal de entrada, que pode limitar o seu
desempenho, e o mais importante, geralmente exige uma área maior do que a da forma
directa. Uma das razões para o valor da área ser maior, é porque o tamanho da palavra dos
registos é normalmente superior ao tamanho da palavra do sinal de entrada. Isto acontece,
porque os registos estão no caminho da acumulação. Por outro lado, na forma directa o
caminho crítico aumenta com o tamanho do filtro. A forma transposta tem a vantagem de ter
um menor período de relógio, visto que o caminho crítico é a operação multiplicador-somador.
Neste trabalho será usado a forma transposta em todas as arquitecturas, por ter um menor
período de relógio.
2.4. FILTROS CONFIGURÁVEIS
Nos dias de hoje, é usual a utilização de generalizados sistemas de filtragem implementados
em circuitos digitais nas mais variadas aplicações, som, imagem, vídeo, etc. A resposta em
frequência desejada dos filtros variam com a aplicação/utilização a que destinam, resultando
em coeficientes diferentes. Existem sistemas que precisam de ter nos seus circuitos a
capacidade de escolher o filtro que se melhor adapta a cada situação. Em geral, sempre que
haja necessidade de processar sinais resultantes de ambientes com características
desconhecidas a utilização dum filtro adaptativo constitui uma solução atractiva quando
9
confrontada com os resultados obtidos pela utilização dum sistema desenhado pelos métodos
convencionais. O uso de filtros adaptativos permite estender as capacidades de
processamento de sinal que não seriam possíveis de outra forma. Actualmente este tipos de
sistemas são aplicados com sucesso em campos tão diversos como as comunicações, o
controlo, a engenharia biomédica, etc [2].
O filtro adaptativo desenha-se de forma automática, baseando-se num algoritmo recursivo para
ajuste dos seus parâmetros, com o intuito de minimizar uma função de custo. Em geral,
começa com um conjunto de parâmetros que demonstra desconhecimento do ambiente. Se
este for estacionário os parâmetros do filtro convergem, a cada iteração, para a solução óptima
do filtro de Wiener [2]. Num ambiente não estacionário o algoritmo adaptativo possibilita ao
filtro a capacidade de seguimento, conseguindo acompanhar as variações da característica do
sinal ao longo do tempo, desde que estas sejam suficientemente lentas.
O estudo realizado neste trabalho baseia-se no conceito de um filtro alterar as suas
características, não por usar um algoritmo recursivo, mas sim por seleccionar um de vários
filtros já implementados. Quero isto dizer, que em vez de obter uma solução óptima, como nos
filtros adaptativos, teremos um sistema com vários filtros FIR implementados, podendo ser o
utilizador ou um programa, a escolher o filtro que se adapta melhor ao processamento em cada
momento. Neste trabalho, todas as arquitecturas FIR foram desenvolvidas tendo em conta a
realização de dois filtros diferentes.
2.5. ETAPAS NO PROJECTO DE FILTROS DIGITAIS
Figura 2.4 – Diagrama de processos a realizar para a implementação de filtros
O diagrama de blocos da Figura 2.4 mostra todas etapas utilizadas para o estudo de
arquitecturas de filtros FIR configuráveis. A primeira etapa começa pelas especificações dos
filtros, onde são definidas as suas características, como a banda de passagem, a banda de
atenuação, a frequência de corte, ripple, etc. Estas especificações são inseridas no Matlab, que
gera os coeficientes para os filtros. Os coeficientes gerados são ainda convertidos no Matlab
10
em representação binária com o número de bits a desejar. A terceira etapa consiste na geração
das expressões para as arquitecturas com somas e deslocamentos. Apesar de nas
arquitecturas com multiplicadores só são necessários os coeficientes dos filtros, com a
introdução da terceira etapa, é possível abordar outros aspectos, com vista a optimizar a
arquitectura. As gerações do MCM para os dois filtros são efectuadas separadamente (zona a
tracejado). Mas no decorrer deste trabalho será abordada o estudo de uma união destes
blocos, ou seja, juntar os coeficientes dos dois filtros antes de executar a terceira etapa. As
primeiras 3 etapas explicadas anteriormente não fazem parte do âmbito deste trabalho.
Neste trabalho vamos focar-nos nas últimas etapas envolvidas no processo de implementação
de filtros (zona a sombreado na Figura 2.4). As arquitecturas estudadas serão explicadas no
Capítulo 3 e no Capítulo 4, usando respectivamente multiplicadores ou somas e deslocamento.
A síntese é executada depois da geração das arquitecturas em VHDL através da ferramenta
desenvolvida. Todo processo de geração das arquitecturas e sua síntese será explicado no
Capítulo 5. Os relatórios dos resultados provenientes da síntese das arquitecturas vão
aparecer ao longo dos Capítulos 3, 4, e 6, onde se comparam as arquitecturas apresentadas.
2.6. ESPECIFICAÇÕES DOS FILTROS UTILIZADOS
Para o teste e recolha de resultados das diferentes arquitecturas que serão apresentados nos
capítulos 3, 4 e 5 utilizaram-se 9 filtros passa-baixo diferentes com as características que se
encontram apresentadas na Tabela 2.1. Os filtros diferem entre si pelo número de coeficientes,
banda de passagem e banda de atenuação.
Tabela 2.1 Especificações dos filtros
Filtro Banda de Passagem Banda de Atenuação Nº. Coeficientes Coeficiente maior (bits)
1 0,20 0,25 121 8
2 0,10 0,25 101 10
3 0,15 0,25 30 12
4 0,20 0,25 81 12
5 0.24 0,25 121 12
6 0,15 0,25 60 14
7 0,15 0,20 60 14
8 0,10 0,15 60 14
9 0,10 0,15 100 16
As características dos filtros FIR dependem exclusivamente dos conjuntos dos coeficientes que
os definem. No entanto, um filtro com muitos coeficientes nulos (por exemplo, filtro 1 e 2), terá
11
um melhor desempenho em termos de área e potência do que qualquer outro filtro (por
exemplo, o filtro 9 que não tem nenhum coeficiente nulo). O número de coeficientes também
influencia o desempenho do filtro a implementar, visto que um filtro com muitos coeficientes
tem um custo maior na área e na potência do circuito. No entanto, o tamanho dos coeficientes
(número de bits) também influencia o seu desempenho. A representação dos coeficientes dos
filtros em binário, no caso de os bits dos coeficientes serem superiores aos bits do sinal de
entrada, tem implicações nas arquitecturas FIR, podendo ter um decréscimo da frequência de
funcionamento. Por exemplo, o filtro 9 tem um coeficiente com 16 bits, que no cálculo do filtro
terá um impacto maior que o coeficiente do filtro 1, que no máximo tem coeficientes com 8 bits.
A Tabela 2.2 apresenta a resposta estacionária ao escalão unitário dos filtros, que corresponde
à soma de todos os coeficientes ao fim de N ciclos, sendo N o número de coeficientes. Na
Tabela 2.2 também é possível ver a influência do número de bits do sinal de entrada no sinal
de saída.
Tabela 2.2 – Resposta ao escalão unitário e largura do sinal de saída face ao sinal de entrada
Filtro Resposta ao
escalão unitário
Número de bits do sinal de saída
Sinal de entrada
com 8 bits
Sinal de entrada
com 16 bits
Sinal de entrada
com 32 bits
1 566 18 26 42
2 2928 20 28 44
3 8182 21 29 45
4 9188 22 30 46
5 9420 22 30 46
6 32762 23 31 47
7 32704 23 31 47
8 49236 24 32 49
9 196594 26 34 50
Como foi dito anteriormente, este trabalho estuda/analisa a implementação simultânea de 2
filtros. Com 9 filtros disponíveis para a implementação é possível obterem-se 36 combinações
de 2 filtros para cada arquitectura. Tendo em conta que serão apresentadas pelo menos 10
arquitecturas alternativas (que pretendemos estudar com sinais de 8, 16 e 32 bits), teríamos
resultados de 3x360 circuitos. A representação e análise de todos estes resultados seria
penoso e não seria possível detalhar todos os pormenores das arquitecturas apresentadas
neste trabalho.
Por isso, foram escolhidos apenas 3 pares de filtros, com algumas características distintas. O
primeiro par, o filtro 1 e 2, porque são os filtros que têm um maior número de coeficientes
nulos. O segundo par tem os filtros 6 e 7, visto que são muito semelhantes. Pela Tabela 2.1 e
Tabela 2.2, observa-se que têm o mesmo número de coeficientes, a resposta ao escalão
12
unitário é semelhante e a largura do sinal de saída são iguais. Por último, o terceiro par, os
filtros 5 e 9, porque têm características muito diferentes. O filtro 5 tem o maior número de
coeficientes (com nenhum nulo), enquanto o filtro 9 tem a máxima resposta ao escalão unitário.
13
CAPÍTULO 3
3. ARQUITECTURAS PARA FILTROS FIR COM
MULTIPLICADORES
Os multiplicadores são o elemento chave em muitos sistemas de alto desempenho, como os
filtros FIR, microprocessadores, processadores de sinais digitais, etc. O desempenho do
sistema, na maioria dos casos é determinado pelo desempenho do multiplicador, porque
geralmente é o elemento mais lento do sistema. Neste capítulo vamos abordar várias
arquitecturas FIR configuráveis com multiplicadores e possíveis optimizações.
As operações de multiplicação por múltiplas constantes (ou Multiple Constant Multiplication,
MCM), que realizam a multiplicação de um conjunto de constantes conhecidas por um sinal,
são as principais operações que limitam o desempenho em muitas aplicações em DSP, tais
como os filtros digitais FIR. [10]
As arquitecturas para filtros FIR com multiplicadores desenvolvidos neste trabalho têm como
objectivo a junção de 2 filtros. Podemos dividir estas arquitecturas em dois blocos, o bloco
Acumulador, composto pelos registos e somadores, e o bloco MCM, que pode ser composto
por multiplicadores ou adições, subtracções e deslocamentos. A Figura 3.1 apresenta uma
arquitectura para um filtro FIR com multiplicadores. Podemos observar os dois blocos referidos
anteriormente. A arquitectura da Figura 3.1 é a representação em diagrama de blocos da
estrutura na forma transposta dos filtros FIR da Figura 2.3. O sinal x(n) entra no bloco MCM,
saindo o resultado da multiplicação de x(n) pelas constantes do filtro. Estas saídas vão entrar
nos somadores, que realizam a soma com os valores acumulados, do ciclo anterior que estão
guardados em registos. A saída correspondente à última soma é a saída do filtro.
Figura 3.1 – Diagrama de blocos da arquitectura com multiplicadores em paralelo
14
3.1. PROCESSO PARA JUNTAR DOIS FILTROS FIR
A forma mais simples de juntar 2 filtros seria duplicar o diagrama de blocos da Figura 3.1. Esta
arquitectura seria composta por 2 blocos MCM, um para casa filtro, e 2 blocos de
acumuladores. Para escolher o modo de filtragem, ou seja qual o filtro aplicado ao sinal de
entrada é necessário inserir um multiplexer na saída. Com esta arquitectura é possível uma
junção de 2 filtros, como podemos ver na Figura 3.2. Esta figura apresenta dois filtros
independentes, em que não existe nenhuma partilha entre os dois. Cada filtro tem o seu bloco
MCM e o bloco acumulador, que possibilita uma rápida mudança no modo de filtragem
seleccionada. Os filtros encontram-se sempre em funcionamento, mesmo que as suas saídas
não são utilizadas num dado modo de filtragem.
Figura 3.2 – Diagrama de blocos da arquitectura de 2 filtros com multiplicadores em paralelo
A duplicação da arquitectura de um filtro FIR para criar uma arquitectura de dois filtros FIR,
parece ser a mais elementar, mas não é muito eficiente. Uma das desvantagens desta
arquitectura é possuir vários blocos acumuladores a ocupar a área, sendo apenas usado uma
delas. Um filtro com N coeficientes, precisa de N-1 registos e somadores. Com dois blocos
acumuladores, precisa-se de 2N-2 registos e somadores. Outra das razões da desvantagem de
ter dois blocos acumuladores é o facto de os dois filtros estarem sempre em funcionamento.
Com os dois filtros sempre em funcionamento, existirá sempre transições dos sinais nos blocos
acumuladores. Isso provocará um aumento excessivo da energia consumida nesta
arquitectura.
A solução para este problema é a junção dos dois blocos acumuladores. Assim, surge uma
nova arquitectura com dois blocos MCM com multiplicadores e um bloco acumulador. Nesta
nova arquitectura, só é realizada a acumulação de resultados de um dos filtros, o que diminui a
energia consumida. Com a partilha do bloco acumulador, consegue-se também diminuir a área
15
ocupada por esta arquitectura. A Figura 3.3 ilustra a optimização que foi efectuada na
arquitectura anterior, Figura 3.2.
Figura 3.3 – Diagrama de blocos com partilha do bloco acumulador.
Para partilhar o bloco acumulador, foram inseridos multiplexeres numa das entradas dos
somadores, de forma a permitir escolher os coeficientes do filtro e consequentemente a
filtragem realizada. Ao partilhar o bloco acumulador surge um problema relacionado com o
número de coeficientes dos filtros. Na arquitectura anterior, cada bloco acumulador
correspondia ao número de coeficientes de cada filtro, logo os filtros podiam possuir um
número diferentes de coeficientes. Nesta nova arquitectura se os filtros não tiverem o mesmo
número de coeficientes, o número de registos e somadores corresponde ao filtro que tiver mais
coeficientes. Se o filtro maior ocupa todas as entradas dos somadores, o filtro menor fica com
uma folga, podendo deslocar-se entre os somadores garantindo que nas outras entradas temos
o valor zero. Foi procurada a melhor solução, de modo a acomodar o filtro mais pequeno no
filtro maior. Se o filtro mais pequeno for inserido no início, ou seja ocupando os primeiros
somadores, vai criar um atraso na sua resposta em frequência, o que é indesejável. Centrar os
dois filtros também teria o mesmo problema com a resposta em frequência, visto que se
continuava a inserir atrasos. Note-se que, quer se encoste ao inicio ou ao centro o filtro menor,
a resposta vai ter sempre atrasos indesejáveis. Por isso, a solução encontrada é inserir o filtro
menor encostado ao fim do filtro maior. Assim, garantimos que os dois filtros têm as respostas
em frequência para que foram implementados.
Ao contrário do número de registos necessários implementar nas arquitecturas FIR
configuráveis que depende do filtro maior, o seu respectivo tamanho depende do pior caso do
coeficiente a implementar. Os registos e somadores iniciais, são mais pequenos que os finais,
como é óbvio, porque se trata de ir acumulando o resultado de somas ao longo do tempo. É
claro que para cada situação, o tamanho, em bits, dos registos e somadores têm um valor
16
máximo. Esse valor depende dos coeficientes dos dois filtros de modo a prevenir erros de
truncatura. Portanto, o filtro menor pode influenciar o tamanho do bloco acumulador.
Numa situação mais genérica, sendo { } e { } os conjuntos
de coeficientes do filtro 1 e filtro 2 respectivamente com N e M coeficientes. Admitamos por
simplicidade que N > M.
Seja d a diferença entre o número de coeficientes dos dois filtros:
(4)
O filtro mais pequeno é reajustado, e inserindo zeros nas posições iniciais, ou seja, de “0” até
d. O filtro mais pequeno é reajustado da seguinte forma:
(5)
Note-se que no final C’ tem o mesmo tamanho do conjunto K. No entanto, os primeiros d
coeficientes são nulos e os restantes coeficientes sofrem um deslocamento de d posições.
Assim, o número de bits necessário à saída de cada somador e respectivo registo, bsi é dado
por:
(6)
Em que bki e bci correspondem ao número de bits do somador necessário para cada filtro i e
bsi-1 o número de bits do somador do momento i-1.
É possível optimizar ainda mais o bloco de registos e somadores. No caso em que c’i = ki, com
c’i e ki diferentes de zero, prescinde-se do multiplexer antes dos somadores. E se c’i = ki = 0,
prescinde-se do multiplexer e do somador, ficando uma ligação registo-registo. Também
podem existir caso em que c’i = c’i+t e ki = ki+t, o que representa a duplicação do mesmo
multiplexer. Nestes casos, são retirados todos os multiplexeres duplicados. Para mostrar as
equações e as optimizações apresentadas, considere-se o seguinte pequeno exemplo e a
respectiva arquitectura a implementar:
{ } { }
A arquitectura vai ser composta por 4 registos (N-1), 4 somadores (N-1) e 5 multiplexeres (N).
O filtro C sofre um deslocamento de duas posições. Assim, o novo filtro C’ fica:
{ }
Considerando que o sinal de entrada são 8 bits, calculando os bits necessários para cada
registo e somador, pela equação (6), temos:
17
{ }
{ }
{ }
De seguida, as optimizações que se podem fazer no exemplo:
Na posição i=2, não se insere multiplexer nem somador, porque os dois coeficientes
são nulos;
Na posição i=3, não se insere multiplexer, porque os coeficientes são iguais;
Na posição i=0 e i=4, os multiplexeres são iguais, logo um deles é retirado.
Com as optimizações, a arquitectura final é composta por 4 registos, 3 somadores e 2
multiplexeres. A Figura 3.4 apresenta o bloco acumulador para o exemplo anterior.
Figura 3.4 – Diagrama do bloco acumulador para o exemplo
Estas optimizações permitem-nos diminuir a área ocupada e a energia consumida das
arquitecturas FIR. O número de registo nos filtros digitais FIR é inalterado, sendo sempre igual
a N-1, enquanto o número de somadores é sempre menor ou igual ao número de registos. O
número de multiplexeres a implementar no pior caso é igual ao número de somadores, logo
pode ser inferior ao número de registos.
Como foi referido anteriormente, a arquitectura da Figura 3.3 tem a grande vantagem de
partilhar o bloco acumulador, que permite reduzir a área ocupada e a energia consumida à
custa de introdução de multiplexeres. No entanto, um dos problemas que nos deparamos com
esta arquitectura é o facto de os coeficientes poderem ser positivos e negativos. No caso de
um coeficiente na posição i do filtro 1 ter sinal diferente do filtro 2, é necessário substituir no
bloco acumulador o somador por um somador/subtractor. Existem dois modos de proceder
nesta situação, ou utilizar um somador/subtractor, ou usar na mesma o somador e tratar a
inversão do sinal no bloco MCM. Foram testados os dois modos num circuito composto por um
registo na entrada e outro na saída e no meio um somador ou um somador/subtractor, para um
sinal de entrada de 8, 16, 24 e 32 bits. Serão apresentados os resultados da área ocupada,
potência e tempo de atraso. A síntese de todas as descrições VHDL das arquitecturas geradas
18
foi feita com a ferramenta design_vision do sofware Synopsys com a biblioteca c35_corelib
da tecnologia AMS 0,35 µm. A síntese foi efectuada com uma frequência de relógio de 20 MHz
(50 ns). Para os resultados de potência foram considerados uma comutação dos sinais de
entrada à frequência de relógio com uma probabilidade estática de 50%.
Figura 3.5 – Gráfico com as áreas do somador/subtractor e somador para 8,16,24 e 32 bits.
O somador/subtractor é um circuito constituído por um somador e um multiplexer. Logo, a área
ocupada é sempre superior à área ocupada por um somador. A Figura 3.5 apresenta os
resultados para diferentes sinais de entrada. O somador/subtractor precisa entre 32,7% e 35%
mais de área que um somador. Se utilizar um somador/subtractor num filtro com N coeficientes,
a área do bloco acumulador sofrerá um aumento significativo.
Figura 3.6 – Gráfico com a potência consumida do somador/subtractor e somador para 8,16,24 e 32 bits.
0
10000
20000
30000
40000
50000
60000
70000
8 16 24 32
Área (um2)
adder subb
adder
0
200
400
600
800
1000
1200
8 16 24 32
Potência (uW)
adder subb
adder
19
Com uma área maior, o somador/subtractor também precisa de uma potência maior. A potência
do somador/subtractor é superior, entre os 17,5% e os 21,6% face à potência necessária do
somador.
Figura 3.7 – Gráfico com o tempo de atraso do somador/subtractor e somador para 8,16,24 e 32 bits.
Ao contrário dos gráficos da área e da potência, em que a diferença entre o somador/subtractor
e o somador mantinha-se linear, o que acontece no tempo de atraso é diferente. Apesar de o
tempo de atraso do somador/subtractor ser ligeiramente superior ao tempo de atraso do
somador, a diferença tem tendência a diminuir com o aumento dos bits do sinal de entrada. Por
exemplo, para um sinal de 8 bits, temos uma diferença de 6,8% entre o somador/subtractor e o
somador, mas com o aumento dos bits do sinal de entrada, a diferença diminui, tendo valores
de 4.7%, 1,9% e 1,5%, para 16, 24 e 32 bits, respectivamente.
Com estes resultados, concluiu-se que o uso de somadores/subtractores no bloco acumulador
podia prejudicar o desempenho do filtro. Assim, só serão usados somadores no bloco
acumulador, por terem uma área, potência e tempo de atraso menores que o
somador/subtractor.
A desvantagem de utilizar somente somadores no bloco acumulador tem a ver com o sinal dos
coeficientes. Haverá caso em que iremos ter coeficientes de sinais opostos nas entradas dos
multiplexeres. Assim, é necessário passar os coeficientes que têm de ser negativos para a sua
representação negativa em complemento para 2, possibilitando o uso de somadores no bloco
acumulador. Nos multiplicadores, isso é uma tarefa fácil, porque basta inserir o complemento
para 2 do respectivo coeficiente numa das entradas. O problema que surge é se tivermos os
simétricos dos coeficientes. A maneira mais simples de abordar o assunto seria utilizar dois
multiplicadores, em que um multiplicava o sinal de entrada pelo coeficiente positivo e o outro
multiplicador era utilizado para o coeficiente negativo. Assim, teríamos os dois resultados,
como podemos ver na Figura 3.8. Outra alternativa, de maneira a utilizar um menor número de
0.00
2.00
4.00
6.00
8.00
10.00
12.00
14.00
8 16 24 32
Tempo (ns)
adder subb
adder
20
multiplicadores, seria multiplicar o sinal de entrada pelo coeficiente positivo e depois negar o
sinal do resultado, como apresenta a Figura 3.9.
Figura 3.8 – Diagrama de blocos com 2
multiplicadores
Figura 3.9 – Diagrama de blocos com 1
multiplicador e negação do sinal.
São duas soluções diferentes para o mesmo problema. A primeira tem a desvantagem de
utilizar dois multiplicadores, mas a vantagem de o caminho critico ser o multiplicador mais
lento, enquanto a segunda solução tem a vantagem de ter um único multiplicador, mas o
caminho crítico é composto pelo multiplicador e o bloco da negação do sinal. Apesar de
realçadas as desvantagens e vantagens de cada solução, é difícil prever qual a solução óptima
para o nosso problema. De maneira a dissipar as dúvidas, recorreu-se a várias sinteses das
duas soluções, para determinar a área ocupada, a potência consumida e o tempo de atraso. O
circuito a sintetizar é composto por um registo na entrada, o modelo a testar e dois registos na
saída, para um sinal de entrada de 8, 16 e 32 bits. A síntese foi efectuada com uma frequência
de relógio de 20 MHz (50 ns).
Figura 3.10 – Gráfico da área ocupada por 2 multiplicadores e 1 multiplicador com 1 conversor.
68
232
850
46 140
474
0
200
400
600
800
1000
8 16 32
Milh
are
s
Área (um2)
2 multiplicadores 1 multiplicador e 1 negador de sinal
21
O facto de utilizar dois multiplicadores ocupa uma área superior a um multiplicador e um
negador de sinal. A Figura 3.10 mostra a grande desvantagem de utilizar dois multiplicadores
em vez de apenas um multiplicador e um negador de sinal para o cálculo de coeficientes
simétricos. Pela Figura 3.10 podemos verificar que a diferença entre as duas soluções aumenta
com o número de bits do sinal de entrada. Para um sinal de entrada de 32 bits, área ocupada
por dois multiplicadores chega a ser aproximadamente o dobro da área ocupada por um
multiplicador e um negador de sinal. Em termos de área, a solução com um multiplicador e um
negador de sinal seria a melhor solução.
Figura 3.11 – Gráfico da potência consumida por 2 multiplicadores e 1 multiplicador com 1 conversor.
A potência tem a mesma tendência da área. A solução com dois multiplicadores precisa de
uma potência superior que a outra solução. A Figura 3.11 mostra a grande diferença entre as
duas soluções. A potência do negador de sinal é muito inferior a um multiplicador, o que
provoca a grande diferença entre as duas soluções. Na solução de um multiplicador e um
negador de sinal, 70 a 80% da potência pertence ao multiplicador. Para 8 bits a diferença entre
as duas soluções é mínima, mas para 32 bits, ultrapassa do dobro. Em termos de potência, a
solução com um multiplicador e um negador de sinal seria a melhor solução.
Figura 3.12 – Gráfico do tempo de atraso por 2 multiplicadores e 1 multiplicador com 1 conversor.
0.56
1.47
4.53
0.43 0.91
1.94
0.00
1.00
2.00
3.00
4.00
5.00
8 16 32
Potência (mW)
2 multiplicadores 1 multiplicador e 1 negador de sinal
9.52
17.17
29.23
12.29 17.89
33.42
0
10
20
30
40
8 16 32
Tempo de atraso (ns)
2 multiplicadores 1 multiplicador e 1 negador de sinal
22
A grande desvantagem de utilizar um multiplicar e um negador de sinal é o caminho crítico.
Pela Figura 3.12 podemos constatar que esta solução tem um tempo de atraso superior há
solução de dois multiplicadores. A solução mais rápida, com dois multiplicadores, consegue no
melhor caso reduzir o caminho crítico em 22.5%. Em termos do tempo crítico, a solução com
dois multiplicadores seria a melhor solução.
Tendo em conta os resultados, em que a solução de um multiplicador e um negador de sinal
ocupa uma área menor, uma potência mais baixa, mas precisa de um tempo de atraso maior
seria a solução mais indicada para o nosso problema. A única vantagem de utilizar dois
multiplicadores é o tempo de atraso, porque tanto na área ocupada e na potência, tem
resultados muito superiores há outra solução. Em todas as arquitecturas com multiplicadores,
em caso de haver coeficientes simétricos, foi usado o modelo com um multiplicador e um
negador de sinal.
Até este momento, tem-se explorado as possíveis melhorias somente no bloco acumulador.
Melhorias que permitiram diminuírem a área, potência e tempo de atraso nas arquitecturas FIR.
No entanto, a parte mais crítica nestas arquitecturas FIR não é o bloco acumulador mas o
bloco MCM, onde os multiplicadores têm uma grande influência no desempenho do filtro,
apresentando-se como um maior desafio na tentativa de reduzir a área e a potência
consumida. A intenção é diminuir o número de multiplicadores ou o seu tamanho. Qualquer das
situações nos permite diminuir a área e a potência das arquitecturas FIR.
Uma das grandes vantagens de se utilizar os filtros digitais FIR em processamento de sinais
tem a ver com a possibilidade da sua fase ser linear. Se o filtro tiver a fase linear, não é
necessário implementar todos os multiplicadores, bastando implementar metade (pois os
coeficientes da outra metade são iguais). Mas para os filtros que não têm fase linear, também é
possível reduzir o número de multiplicadores. Uma das opções que se tomou anteriormente foi
utilizar um multiplicador e um negador de sinal se houver coeficientes simétricos, em vez da
utilização de dois multiplicadores. Assim, podemos reduzir o número de multiplicadores a
implementar, reduzindo a área e a potência.
Se diminuir o número de multiplicadores é benéfico para as arquitecturas FIR, também se
aplica ao tamanho deles. Um multiplicador com o tamanho mais pequeno permite diminuir a
área, energia e o tempo de atraso. Para diminuir o tamanho dos multiplicadores, os
coeficientes pares foram transformados em coeficiente impar. Assim, consegue-se reduzir o
número de bits das multiplicações pelo sinal de entrada.
Um exemplo desta situação, em que usando o coeficiente 3, conseguimos ter os coeficientes 6,
12 e o 24, como mostra a Figura 3.13.
23
Figura 3.13 - Diagrama de blocos do deslocamento do 3
Se tivéssemos um filtro com estes coeficientes (3, 6, 12, 24) só era necessário implementar um
multiplicador. Ao multiplicar o sinal de entrada por 3, para os restantes resultados só é preciso
aplicar deslocamentos.
Outro modo de diminuir os multiplicadores a implementar nas arquitecturas FIR é retirar os
coeficientes “0” e “1”. Sendo o “0” o elemento absorvente da multiplicação e “1”, o elemento
neutro da multiplicação, não é preciso implementar multiplicadores para estes coeficientes. Por
fim, depois de todas as optimizações, retiram-se todos os coeficientes repetidos, diminuindo o
número de multiplicadores a implementar. Para ilustrar melhor todas as etapas das
optimizações efectuadas no bloco MCM, a Figura 3.14 mostra todo o processo que é efectuado
para cada filtro antes da sua implementação.
Figura 3.14 – Etapa do processo para a optimização dos multiplicadores.
1ª Etapa •Passar todos os coeficientes pares para impares
2º Etapa •Retirar coeficientes repetidos
3ª Etapa •Retirar os coeficientes "0" e "1"
4ª Etapa
•Se houver coeficientes simétricos, retirar os coeficientes que são negativos.
6 = 3 << 1
12 = 3 << 2
24 = 3 << 3
3 12
6
24
24
Com a optimização dos multiplicadores, conseguimos diminuir a área, potência e tempo de
atraso das arquitecturas FIR configuráveis. Depois de explicado que um coeficiente pode ser
decomposto em um coeficiente mais pequeno e com um deslocamento, é possível ainda
melhorar outro sector da arquitectura FIR. Quando falámos dos multiplexeres que antecedem
os somadores do bloco acumulador, inicialmente os valores das entradas nos multiplexeres
seriam os coeficientes sem nenhuma optimização. Como o caminho crítico das arquitecturas
FIR tem de passar obrigatoriamente pelos multiplexeres, é possível diminuir o tempo do
caminho critico e a área. Os valores que os multiplexeres recebem nas suas entradas é o
resultado da multiplicação do coeficiente pelo sinal de entrada e que no fim sofre um
deslocamento. Assim, para dois coeficientes que sofram deslocamentos (sejam pares) ou um
deles seja nulo, a implementação do multiplexer pode ser optimizada. É de salientar, se o
coeficiente for impar, o deslocamento é nulo. Se tivermos dois sinais e diferentes, para
obter 2 constantes pares temos:.
(14)
Consideramos que byp corresponde ao número de bits do sinal yp e bMux corresponde ao
número de bits necessário para cada multiplexer. Antes da optimização, o número de bits
necessário para o multiplexer seria:
(
) (15)
Todos os sinais do multiplexer têm o mesmo tamanho. Esta optimização consiste em passar os
deslocamentos dos sinais de entrada do multiplexer, para o sinal de saída do mesmo. O
deslocamento que é transferido para o sinal de saída corresponde ao mínimo de
deslocamentos dos sinais de entrada. Assim garantimos que o valor continua a ser o correcto.
Seja tmin o deslocamento mínimo entre os dois sinais de entrada.
(16)
No caso de um dos sinais de entrada for zero:
(17)
O tmin corresponde ao número de bits em que podemos diminuir o tamanho do multiplexer.
Note-se que quando um dos coeficientes é impar, tmin é sempre zero pelo que esta optimização
não resulta. O novo tamanho do multiplexeres representado por:
(18)
Os sinais de entrada também sofrem alterações.
(19)
Ao sinal de saída do multiplexer terão agora de ser adicionados os deslocamentos retirados
aos sinais de entrada para obter o sinal correspondente ao coeficiente par (Muxres).
(21)
25
Com um exemplo, podemos demonstrar esta optimização. Sejam o par de coeficientes 96 e
512 e um sinal de entrada tem 8 bits. O passo seguinte é decompor os coeficientes em
impares, equação (14).
Como os coeficientes são diferentes de zero, para o cálculo do deslocamento mínimo usamos
a equação (16):
O tamanho do multiplexer, equação (18) e os sinais de entrada, equação (20):
Os novos sinais de entrada, equação (19):
Agora aplicamos a equação (21):
(21)
Com esta optimização é possível diminuir o tempo de atraso, área e potência. A Figura 3.15
representa a optimização efectuada aos multiplexeres. Do lado esquerdo temos a versão
normal e do lado direito a versão optimizada. Como podemos reparar o multiplexer do lado
direito é menor que do lado esquerdo.
Figura 3.15 – Diagrama de blocos com a optimização dos multiplexeres
26
As optimizações apresentadas que envolvem os multiplexeres permitem diminuir a área,
potência e o tempo de atraso das arquitecturas FIR. Os efeitos das variações vão depender
dos pares de filtros. Para mostrar o impacto das optimizações nos multiplexeres, foi criada a
Tabela 3.1 que constam o número de multiplexeres e a soma de todos os bits dos
multiplexeres em cada par de filtros, antes e depois das optimizações.
Tabela 3.1 – Número de multiplexeres nos filtros de teste
Filtros Nº de multiplexeres Soma bits dos multiplexeres
Antes Depois (reduz) Antes Depois (reduz)
Filtro 1 e 2 121 75 (38%) 953 940 (1.4%)
Filtro 6 e 7 60 30 (50%) 500 489 (2.2%)
Filtro 5 e 9 121 121 (0%) 2057 1973 (4.1%)
Os resultados da Tabela 3.1 são muito diferentes de cada par de filtros. O facto de o par de
filtros ter o mesmo número de coeficientes, filtro 6 e 7, permite-nos diminuir o número de
multiplexeres em 50%. Os restantes pares, todos com tamanhos diferentes torna-se difícil
atingir tal valor. O filtro 1 e 2 ainda conseguem reduzir o número de multiplexeres em 38%,
muito devido aos coeficientes nulos e unitários, mas para os filtros 5 e 9 são necessários todos
os multiplexeres. Apesar de nos filtros 5 e 9 não se conseguir reduzir o número de
multiplexeres, mas são utilizados mais pequenos dado de o número de bits do multiplexer foi
reduzido. A diminuição de 4,1% da soma de todos os bits dos multiplexeres supera os
restantes pares de filtros.
Se repararmos na arquitectura da Figura 3.3, a principal característica é a partilha do bloco
acumulador, tem duas unidades MCM, uma para cada filtro. Uma das desvantagens de ter dois
blocos MCM é se existirem coeficientes comuns nos dois filtros que não são partilhados. A
optimização que se realizou foi unir os dois blocos MCM. Ao unir os dois blocos, estaremos a
partilhar os coeficientes dos filtros e todos os multiplicadores repetido serão retirados da
arquitectura. O diagrama de blocos da Figura 3.16 apresenta a arquitectura final para a
implementação de filtro digitais FIR configuráveis.
27
Figura 3.16 – Diagrama de blocos de 2 filtros FIR.
Com a união dos blocos dos multiplicadores dos dois filtros, podemos ter uma redução dos
multiplicadores. Se houver menos multiplicadores, a área e a potência diminuem. O diagrama
de blocos da Figura 3.16 é utilizado em todas as arquitecturas com multiplicadores em paralelo.
As características da área e potência das arquitecturas FIR dependem muito do número de
multiplicadores a implementar. Quando partimos de um conjunto de coeficientes para um filtro
digital, ficamos com uma ideia do número de multiplicadores a implementar, e todas as etapas
executadas neste trabalho tinham como objectivo diminuir o número de multiplicadores e o seu
tamanho. O tamanho também é importante para o desempenho do filtro. Quando mais
pequeno for o multiplicador, menor é o tempo de atraso, mas também diminui a área e a
potência do mesmo.
Foram descritas várias optimizações, tanto no bloco acumulador como no bloco MCM. No
entanto, nunca foram apresentados que efeitos tinham as optimizações na redução do número
de multiplicadores a implementar nas arquitecturas FIR. Utilizando a arquitectura da Figura
3.16, foi feito um resumo do número de multiplicadores que são implementados nos pares de
filtros de teste. Na Tabela 3.2 apresenta-se o número de coeficientes de cada filtro, os
coeficientes resultantes depois de aplicadas as optimizações das etapas da Figura 3.14 e o
número final de multiplicadores a implementar pelo par de filtros nas arquitecturas FIR.
28
Tabela 3.2 – Multiplicadores a implementar nos filtros de teste
Pares
de
Filtros
Coeficientes
FIR 1
Coeficientes
FIR 2
Nº. de
multiplicadores
no FIR 1
(reduz)
Nº. de
multiplicadores
no FIR 2
(reduz)
Multiplicadores
comuns entre
os 2 filtros
Total de
multiplicadores
implementados
(reduz)
1 e 2 121 101 10 (91.7%) 17 (83.2%) 5 22 (18.5%)
6 e 7 60 60 20 (66.7%) 29 (51.7%) 3 46 (6.1%)
5 e 9 121 100 34 (71.9%) 45 (55.0%) 9 70 (11.4%)
Podemos observar o resultado das optimizações efectuadas nos pares de filtros de teste. A
redução do número de multiplicadores é notória nos pares de filtros em relação ao número de
coeficientes. Com as optimizações efectuadas no bloco MCM é possível reduzir o número de
multiplicadores a implementar individualmente em cada filtro. Os filtros que contenham nos
seus coeficientes muitos valores nulos ou unitários atingem uma maior redução, como no caso
do filtro 1 e 2. Com a implementação dos pares de filtros também é possível reduzir o número
de multiplicadores, apesar de ocorrer uma menor redução. Estas optimizações permitem que
um pequeno leque de multiplicadores abrange um grande conjunto de coeficientes.
Na Tabela 3.3 foi feito um resumo de todos os filtros, para perceber melhor o impacto das
optimizações na redução do número de multiplicadores nas arquitecturas FIR. A parte inferior
da tabela representa o número de multiplicadores por pares de filtros a implementar nas
arquitecturas FIR, a diagonal corresponde ao número de coeficientes de cada filtro e por fim,
na parte superior da tabela a redução resultante de unir os dois filtros face ao número inicial
dos multiplicadores.
Tabela 3.3 – Multiplicadores a implementar para todos os filtros.
fir01 fir02 fir03 fir04 fir05 fir06 fir07 fir08 fir09
fir01 12 18.5% 20.0% 15.8% 15.9% 10.0% 10.3% 7.9% 7.3%
fir02 22 17 9.4% 13.3% 21.6% 10.8% 13.0% 4.4% 12.9%
fir03 20 29 15 9.3% 10.2% 2.9% 4.5% 4.7% 5.0%
fir04 32 39 39 28 19.4% 12.5% 10.5% 7.1% 6.8%
fir05 37 40 44 50 34 13.0% 11.1% 8.1% 11.4%
fir06 27 33 34 42 47 20 6.1% 2.1% 7.7%
fir07 35 40 42 51 56 46 29 5.3% 5.4%
fir08 35 43 41 52 57 47 54 28 0.0%
fir09 51 54 57 68 70 60 70 73 45
Como podemos observar na Tabela 3.3 só existe um caso em que não ocorre uma redução
nos multiplicadores. No entanto, nos restantes pares de filtros, existe uma variação nas
reduções entre os 2,1% e os 21,6%. No âmbito geral, os filtros que contenham mais
29
coeficientes para a sua implementação não necessitam obrigatoriamente de mais
multiplicadores que os filtros que tenham menos coeficientes
3.2. OPTIMIZAÇÃO DOS MULTIPLICADORES
É muito usual nas arquitecturas FIR com multiplicadores em paralelo ser necessário que cada
coeficiente tenha o seu multiplicador independente. O tamanho do multiplicador, em número de
bits, fica definido pelo maior operando, ou seja, pelo maior número de bits entre o sinal de
entrada e o coeficiente. Num multiplicador genérico (NxN), os dois operadores têm o mesmo
tamanho. No entanto, se um dos operandos for mais pequeno (número de bits) este tem de ser
dimensionado para o tamanho do operador maior, de modo a efectuar a multiplicação. Depois
da multiplicação o resultado tem de ser outra vez redimensionado, se os operadores não
tiverem o mesmo tamanho. Ao utilizar o multiplicador genérico, a probabilidade de desperdício
de bits do resultado da operação é grande.
Por exemplo, o coeficiente for o +3, que em binário é representado por “011” e o sinal de
entrada for de 8 bits, o resultado da multiplicação tem o tamanho de 16 bit, que equivale ao
dobro do tamanho do sinal maior usando um multiplicador genérico (NxN). Mas ao multiplicar o
sinal de entrada de 8 bits por um “+3”, o número máximo de bits do resultado não ultrapassa os
11 bits, logo os restantes bits não têm informação útil pelo que podem ser eliminados. Na
Figura 3.17, temos um exemplo em que os coeficientes 3, 19, 47 e 127 são multiplicados por
um sinal de entrada com 8 bits, sendo feita o redimensionamento dos sinais depois da
multiplicação de forma a eliminar os bits desnecessários.
Figura 3.17 – Diagrama de blocos de multiplicadores em paralelo
30
Na Figura 3.17 pode-se ver em grande parte dos casos conseguimos reduzir o número de bits
do resultado se redimensionamos o resultado após a multiplicação para a dimensão
necessária.
Uma maneia de evitar este redimensionamento, consiste em usar um multiplicador com as
dimensões NxM, em que N pode ser diferente de M. No caso do multiplicador NxN, o resultado
terá sempre em 2N bits, enquanto no multiplicador NxM, o resultado tem a dimensão N+M bits.
O desperdício de bits do resultado da multiplicação NxN em vez da operação necessária NxM
é sempre igual a |N – M|. Na Tabela 3.4 é apresentado a diferença de utilizar um multiplicador
NxN e NxM no que respeita ao número de bits do resultado para o filtro que usamos.
Tabela 3.4 – Total de bits nas saídas dos multiplicadores
Filtros Total de bits com
multiplicador NxN
Total de bits com multiplicador NxM
(reduz)
Bits do sinal
de entrada 8 bits 16 bits 32 bits 8 bits 16 bits 32 bits
1 e 2 364 704 1408 322 (11.5%) 498 (29.3%) 850 (39.6%)
6 e 7 870 1472 2944 772 (11.3%) 1140 (22.6%) 1876 (36.3%)
5 e 9 1372 2240 4480 1200 (12.5%) 1760 (21.4%) 2880 (35.7%)
Note-se que com o aumento do sinal de entrada, a redução de bits aumenta, devido a no
multiplicador NxN, na maioria dos casos é o sinal de entrada que define o tamanho do
multiplicador. Utilizar o multiplicador NxM permite diminuir o tamanho dos multiplicadores, o
que vai influenciar o desempenho das arquitecturas dos filtros FIR. Para apurar melhor as
diferenças entre os dois multiplicadores, foi realizada um estudo para saber os valores da área
ocupada, potência e tempo de atraso. Para isso foram implementados vários multiplicadores
pelas constantes 7, 15, 31, 63, 127, 255 e 511 por um sinal de entrada com 8 bits.
Figura 3.18 – Gráfico da área ocupada pelo multiplicador nxn e nxm.
36 36 36 36 36 43
52
22 25 29 32 36 39
43
0
20
40
60
7 15 31 63 127 255 511
Milh
are
s
Área (um2)
mult_nxn mult_nxm
31
A Figura 3.18 mostra a área ocupada pelos multiplicadores NxN e NxM para vários sinais de
entrada. Um multiplicador genérico é composto maioritariamente por Half adders e Full adders.
O número de somadores existentes num multiplicador depende do tamanho (bits) das suas
entradas, ou seja, um multiplicador NxN precisa de N2 somadores. O número de somadores no
multiplicador NxM é sempre inferior ou igual ao multiplicador NxN (N.M ≤ N2). Por isso, como
podemos ver na Figura 3.18, a área do multiplicador NxN é superior ao multiplicador NxM.
Quanto maior for a diferença entre o N e M, maior será a diferença entre a área dos dois
multiplicadores.
Figura 3.19 – Gráfico da potência do multiplicador nxn e nxm.
A Figura 3.19 representa a potência de cada multiplicador. O multiplicador NxM possui uma
potência menor que o NxN. Ocorre uma maior transição de sinais no multiplicador NxN, o que
provoca um aumento de potência no seu circuito. A diferença entre os dois multiplicadores vai
diminuindo quando o M se aproxima de N.
Figura 3.20 – Gráfico do tempo de atraso pelo multiplicador nxn e nxm.
740 797 851 901 946 1126
1337
631 720 803 881 946 1024 1106
0
500
1000
1500
7 15 31 63 127 255 511
Potência (uW)
mult_nxn mult_nxm
7.77 7.77 7.77 7.77 7.77 8.38 9.17
6.44 7.00 7.72 7.75 7.77 8.14 8.44
0
2
4
6
8
10
15 31 63 127 255 511
Tempo de atraso (ns)
mult_nxn mult_nxm
32
A Figura 3.20 representa o tempo de atraso de cada multiplicador. Com uma área e uma
potência menor, o multiplicador NxM consegue ainda ser o mais rápido, como podemos ver na
Figura 3.20. A tendência do tempo de atraso segue os valores da área e da potência, quando
M tende para N, a diferença tende para zero. Quanto mais pequeno for o M, mais rápido é o
multiplicador. Isto acontece, porque o multiplicador NxM tem um caminho critico menor que o
NxN.
A substituição do multiplicador NxN por multiplicador NxM adaptado ao sinal de entrada a cada
coeficiente reduz a área, a potência e o tempo de atraso nas arquitecturas FIR. No capítulo dos
resultados, serão mostradas o comportamento destes dois multiplicadores nas arquitecturas
FIR configuráveis.
3.3. PARTILHA DOS MULTIPLICADORES
No tópico anterior ficou mostrado que a implementação de arquitecturas FIR com
multiplicadores NxM é mais eficientes que o uso dos multiplicadores tradicionais (NxN). Daqui
para a frente, todas as arquitecturas FIR com multiplicadores, têm implementado o
multiplicador NxM. No entanto, o uso de multiplicadores é sempre um custo elevado para a sua
implementação em hardware.
Com a implementação de arquitecturas FIR com 2 filtros, temos a liberdade de explorar novas
formas de elaborar e optimizar os filtros. No sentido de diminuir o número de multiplicadores a
implementar nas arquitecturas FIR, fez-se um estudo de como partilhá-los entre os dois filtros.
Nas arquitecturas FIR estudadas neste trabalho, os dois filtros implementados nunca são
usados simultaneamente, possibilitando a partilha dos multiplicadores. Os coeficientes dos dois
filtros podem partilhar os mesmos multiplicadores, diminuindo a área ocupada das
arquitecturas FIR. Podemos representar esta situação como um Diagrama de Veen, Figura
3.21.
Figura 3.21 – Diagrama de Venn
33
A partilha dos multiplicadores só é possível se os coeficientes forem diferentes entre os dois
filtros. A Figura 3.21 mostra como é possível partilhar os coeficientes dos dois filtros de modo a
reduzir o número de multiplicadores a implementar nas arquitecturas FIR.
3.3.1. AGRUPANDO TODOS OS COEFICIENTES
Com o Diagrama de Venn da Figura 3.21 ficamos com uma ideia de como agrupar os
coeficientes para minimizar o número de multiplicadores. Agrupar um coeficiente do grupo de
FIR 1 com o grupo de FIR 2, permite-nos partilhar os multiplicadores. Isto só é possível, porque
o filtro tem um modo de funcionamento e que apenas um dos filtros está a funcionar. Os
coeficientes que pertencem apenas ao filtro FIR 1, nunca vão ser necessários para o
funcionamento do filtro FIR 2 e vice-versa. A excepção são os multiplicadores dos coeficientes
comuns aos dois filtros. Estes não podem ser partilhados por serem usados em ambos os
filtros, logo são usados multiplicadores independentes.
Dado que os filtros nem sempre têm o mesmo número de coeficientes, portanto nem sempre
será possível emparelhar todos, logo serão implementados como os coeficientes comuns entre
os dois filtros, em multiplicadores independentes.
Figura 3.22 – Diagrama de blocos da arquitectura FIR com multiplicadores partilhados em paralelo
(multiplicador c/ mux)
Na Figura 3.22, o Ci corresponde aos coeficientes do FIR 1, e o Ki os coeficientes do FIR 2.
Pela figura podemos constatar a partilha dos multiplicadores entre os dois filtros. O
multiplicador que se encontra isolado, implementa um coeficiente comum ou um coeficiente
que não tenha par para partilhar o multiplicador. A ordem como são agrupados os coeficientes
34
também é fundamental para esta arquitectura. Os coeficientes que partilham os multiplicadores
são os mais pequenos. Esta decisão deve-se pelo motivo que nesta arquitectura o caminho
critico passar por dois multiplexeres. O multiplexer antes dos somadores, não pode ser
alterado, mas o multiplexer que escolhe os coeficientes a multiplicar pelo sinal de entrada, tem
o seu tamanho baseado nos coeficientes. Se tivermos os coeficientes mais pequenos do filtro a
partilhar, o multiplexer é menor, o que diminui o caminho critico. Os coeficientes que não
tenham par, ou seja, os coeficientes maiores serão implementados em multiplicadores
independentes.
A Tabela 3.5 apresenta os multiplicadores a implementar, com e sem partilha. Como veremos
mais à frente ao partilhar os multiplicadores, reduz.se a área e a potência consumida, mas
aumenta-se o caminho crítico do filtro. O facto de termos dois multiplexeres no caminho crítico,
limita a frequência de funcionamento do filtro. Por isso, será apresentada outra arquitectura que
partilha os coeficientes, mas permite aumentar a frequência de funcionamento.
Tabela 3.5 – Multiplicadores a implementar com e sem partilha
Filtros Multiplicadores a implementar
Sem partilha Com partilha (reduz)
1 e 2 22 17 (22.7%)
6 e 7 46 29 (37.0%)
5 e 9 70 45 (35.7%)
3.3.2. AGRUPANDO METADE DO FILTRO
Para melhorar a frequência de funcionamento, o caminho crítico não deve conter dois
multiplexeres. Dos dois multiplexeres da arquitectura da Figura 3.22, o que é maior e
consequentemente tem o tempo de atraso superior, é o que se encontra antes do bloco
acumulador. De maneira a diminuir o tempo de atraso, surgiu uma nova arquitectura que
prescinde desse multiplexer, ficando apenas os multiplexeres dos multiplicadores. Assim, a
saída dos multiplicadores liga directamente ao somador. Como temos dois filtros, tem de haver
um modo de poder escolher que filtro está a operar. Pelo facto de os multiplicadores terem um
multiplexer numa das entradas, permite-nos escolher o filtro. Isso implica, que tenha de existir
um multiplicador por cada somador. Deste modo, o número de multiplicadores tem de ser igual
ao número de somadores do filtro maior.
O facto de esta arquitectura necessitar de um multiplicador por par de coeficiente, tem à partida
um pior desempenho que as outras arquitecturas já estudadas. Se os filtros não tiverem fase
linear, no pior caso o número de multiplicadores é igual ao número de somadores. Para
ultrapassar isto, esta arquitectura só pode ser aplicada a filtros que tenham a sua fase linear.
Com a fase linear, só é necessário implementar metade do filtro. Nesta arquitectura não é
35
possível utilizar todas as optimizações efectuadas nos multiplicadores. A única optimização
efectuada aos multiplicadores nesta arquitectura foi passar os coeficientes pares para impares,
para utilizar as optimizações dos multiplexeres. Mas, a optimização dos multiplexeres, a que
permite passar os deslocamentos dos sinais de entrada para a saída foi alterada e levou-se
mais além, no sentido de realizar os deslocamentos o mais tarde possível. Os deslocamentos
são realizados depois dos multiplicadores. Assim, conseguimos reduzir a área dos
multiplexeres e dos multiplicadores.
A organização dos coeficientes dos dois filtros é fundamental para esta arquitectura. Para filtros
com o mesmo número de coeficientes o agrupamento dos coeficientes é trivial. Mas, para filtros
com tamanhos diferentes é necessário definir uma forma de agrupar os coeficientes. Assim, o
filtro mais pequeno ajusta-se aos extremos do filtro maior, em que o primeiro e o último
coeficiente de cada filtro formam o par. O filtro mais pequeno vai ficar com uma zona indefinida
no meio. Nessa zona, em que o filtro mais pequeno não contém coeficientes não é preciso
implementar multiplexeres, bastando multiplicar o sinal de entrada pelos coeficientes do filtro
maior.
Por exemplo, para implementar esta arquitectura, com os coeficientes C do FIR 1 e os
coeficientes K do FIR 2.
C = {-2670, 0, 6544, 6544, 0, -2670}
K = {0, 112, -42, 656, 2048, 656, -42, 112, 0}
Dado que |K| é maior que |C|, temos de dividir o FIR 2 (com menos coeficientes) a meio, para
ajustar aos extremos do FIR 1, conforme a Tabela 3.6:
Tabela 3.6 – Ajuste dos coeficientes dos dois filtros
FIR 1 -2670 0 6544 6544 0 -2670
FIR 2 0 112 -42 656 2048 656 -42 112 0
O objectivo é implementar metade do filtro (dado que é simétrico), em que são precisos 5
multiplicadores, 3 deles partilhados. Os multiplicadores partilhados utilizados são do tipo NxM
de forma a reduzir o tamanho dos multiplicadores. No entanto, antes de realizar as
multiplicações interessa-nos passar os coeficientes pares para impares.
Tabela 3.7 – Reajuste dos coeficientes dos filtros
FIR 1 -1335<<1 0 409<<4
FIR 2 0 7 <<4 -21<<1 41<<4 1<<11
Assim, os multiplicadores necessários são mais pequenos, conforme representados na Tabela
3.7. A redução dos multiplexeres e dos multiplicadores acontece quando o par de coeficientes
sofre um deslocamento, ou se um deles for nulo. O deslocamento vai ser realizado depois do
multiplicador. A Tabela 3.8 mostra as melhorias feitas à Tabela 3.7.
36
Tabela 3.8 – Coeficientes a implementar na arquitectura com partilha do multiplicador
FIR 1 -1335 0 409<<3
FIR 2 0 7 -21 41 1
Deslocamentos depois
do Multiplicador 1 4 1 4
11(não usa
multiplicador)
Como podemos ver pela Tabela 3.8, conseguimos reduzir o tamanho dos multiplexeres e dos
multiplicadores. Há caso, em que podemos prescindir de utilizar os multiplicadores, em que
neste exemplo, é o caso do multiplicador que não tem par, visto que o sinal a multiplicar
corresponde a um deslocamento de 11 posições do sinal de entrada. Na Figura 3.23
apresenta-se a implementação desta arquitectura.
Figura 3.23 – Diagrama de blocos da arquitectura FIR paralela com multiplicadores partilhados V2
(multiplicador c/ mux v2).
Nota-se que o multiplexer no bloco acumulador aparece se ao dividir os filtros a metade, estas
não forem do mesmo tamanho. Assim, ficamos com multiplicadores que só operam um
coeficiente de um dos filtros. Portanto quando queremos realizar a filtragem com o filtro mais
pequeno tem que ter forma de eliminar os coeficientes indesejáveis do filtro maior. Para
resolver a situação, inseriu-se um multiplexer, que faz saltar T registos, sendo T a diferença
entre a metade dos dois filtros, ficando os dois filtros, com os resultados correctos.
3.4. RESULTADOS
37
Nesta secção iremos apresentar os resultados dos blocos MCM com multiplicadores, a área
ocupada, a potência e o tempo de atraso.
Como foi dito anteriormente, o número de multiplicadores a implementar nas arquitecturas FIR
tem implicações no seu desempenho. Quando maior for o número de multiplicadores, implica
uma área ocupada e uma potência maior. Mas, o tempo de atraso está associado, não há
quantidade de multiplicadores, mas ao tamanho deles. O facto de ter mais multiplicadores, não
implica que o atraso seja maior. Na Tabela 3.9 apresenta-se o número de multiplicadores e
negadores de sinal que cada arquitectura implementa para cada par de filtros.
Tabela 3.9 – Tabela com o número de multiplicadores e negadores de sinal a implementar em cada
arquitectura
Filtros
Arquitecturas
Multiplicador NxN
ou
Multiplicador NxM
Multiplicador com
maximização da
partilha
Multiplicador com
partilha de metade do
filtro
Mult Neg Mult Neg Mult Neg
1 e 2 22 7 17 7 44 0
6 e 7 46 4 29 4 30 0
5 e 9 70 12 45 12 60 0
Como era de esperar, a arquitectura que maximiza a partilha dos multiplicadores, tem o menor
número de multiplicadores a implementar para cada par de filtros. As arquitecturas sem partilha
dos multiplicadores apresentam os mesmos resultados, visto o que diferencia uma da outra é o
tipo de multiplicador a implementar (3.2). Também podemos reparar que a arquitectura que
maximiza a partilha dos multiplicadores só implementa, em média, 66% dos multiplicadores da
arquitectura sem partilha (3.3.1). Para atingir os 50%, os filtros teriam de conter o mesmo
número de coeficientes a implementar, o que não acontece em nenhum dos pares de filtros
estudados. A arquitectura que partilha metade do filtro (3.3.2) é a única que depende do
tamanho dos filtros (coeficientes). Esta arquitectura precisa no máximo de implementar metade
do filtro em multiplicadores. Tanto a arquitectura sem partilha e a que maximiza a partilha
implementam o mesmo número de negadores de sinal. Isto é compreensível, visto que nestas
arquitecturas utilizam o mesmo algoritmo para a optimização dos coeficientes a implementar na
arquitectura. Como a arquitectura que partilha metade do filtro tem multiplicadores com
coeficientes positivos e negativos, não necessita de negadores de sinal.
Sintetizando as arquitecturas dos filtros FIR paralelos configuráveis com multiplicadores, foi
possível extrair os resultados das áreas ocupadas, potência e tempo de atraso para cada
38
arquitectura. A síntese foi realizada para sinais de entrada com 8, 16 e 32 bits. Só serão
mostrados os resultados referentes a 32 bits, sendo os que os restantes encontram-se em
anexo e em geral seguem a mesma tendência. O script usado para a síntese encontra-se em
anexo.
3.4.1. ÁREA
A área nas arquitecturas FIR paralelas, o bloco MCM ocupa uma área superior a 50% de todo
o filtro. Logo, uma diminuição do número de multiplicadores, deve implicar uma redução da
área ocupada. As arquitecturas aqui estudadas, não são compostas unicamente por
multiplicadores, tendo todas multiplexeres, que em geral são em maior número que os
multiplicadores, nalgumas delas contêm ainda negadores de sinal. Na Figura 3.24, é
apresentado os resultados da área ocupada pelo bloco MCM após a síntese para um sinal de
entrada de 32 bits.
Figura 3.24 – Gráfico com as áreas do bloco MCM com multiplicadores
Na Figura 3.24 apresenta-se a área ocupada pelo bloco MCM com multiplicadores para os
filtros usados como benchmarks. Pela análise da Figura 3.24, a arquitectura que maximiza a
partilha é a que ocupa menos área. Um resultado esperado, visto que é a arquitectura que
implementa menos multiplicadores. A escolha do tipo de multiplicador a utilizar também pode
influenciar a área. Utilizar o multiplicador NxN no bloco MCM implica ocupar uma área maior do
que utilizar o multiplicador NxM. A arquitectura que partilha metade do filtro consegue ser a
arquitectura com a área ocupada menor, se e só se, o número de multiplicadores a
implementar nas outras arquitecturas for superior a metade do número de coeficientes do filtro
maior. Nos restantes caso, é sempre superior à outra arquitectura que partilha os
2.71
6.94
10.78
1.37 2.55
4.32
1.36 2.35
4.18
2.14 2.47
5.10
0
2
4
6
8
10
Fir01 e Fir02 Fir06 e Fir07 Fir05 e Fir09
Milh
õe
s
Área (bloco MCM)
Multiplicador NxN Multiplicador NxM
Multiplicador c/ mux Multiplicador c/ mux v2
39
multiplicadores. Como seria de esperar a arquitectura com o multiplicador NxN é a que ocupa
maior área, valor que é reduzido se substituirmos na mesma arquitectura os multiplicadores por
NxM.
3.4.2. POTÊNCIA
A potência necessária para fornecer as arquitecturas FIR não depende unicamente do número
de multiplicadores implementados. A frequência em que ocorre a transição dos sinais nos
componentes representa uma grande percentagem na potência total do circuito. Para puder
comparar as arquitecturas FIR com multiplicadores, todos os dados de potência foram obtidos
para uma frequência igual para todos os filtros que abrangesse a frequência de funcionamento
da arquitectura mais lenta.
Figura 3.25 – Gráfico com as potências do bloco MCM com multiplicadores
Na Figura 3.25 apresenta-se a potência de cada arquitectura para os filtros usados como
benchmarks. Observando a Figura 3.25 reparamos que a diferença da potência entre as várias
arquitecturas que utilizam os multiplicadores NxM não varia muito. No geral, a arquitectura que
maximiza a partilha dos multiplicadores é a que apresenta uma menor potência de consumo.
Como sempre, a arquitectura que utiliza o multiplicador NxN é a que precisa de uma potência
maior, muito por culpa dos bits em excesso dos resultados.
252
780
1022
151 234
423
150 216
403
177 202
453
00
200
400
600
800
1,000
Fir01 e Fir02 Fir06 e Fir07 Fir05 e Fir09
mW
Potência (bloco MCM)
Multiplicador NxN Multiplicador NxM
Multiplicador c/ mux Multiplicador c/ mux v2
40
3.4.3. TEMPO DE ATRASO
A frequência máxima de funcionamento das arquitecturas depende muito dos componentes
que encontram no caminho crítico. Um tempo de atraso de um multiplicador é muito superior ao
tempo de atraso de um somador ou de um multiplexer. Como em todas as arquitecturas o
caminho crítico contém um multiplicador, ao longo deste trabalho certas optimizações foram
realizadas de maneira a diminuir o tamanho (bits) dos multiplicadores de modo a diminuir o
tempo de atraso.
Figura 3.26 – Gráfico com o tempo de atraso do bloco MCM com multiplicadores
Na Figura 3.26 apresenta-se o tempo de atraso de cada arquitectura para os filtros usados
como benchmarks. Existem 3 arquitecturas (as duas que não partilham multiplicadores e a que
partilha metade do filtro) quem contêm no seu caminho crítico no bloco MCM um multiplexer e
um multiplicador. Estas 3 arquitecturas apesar de terem um caminho crítico parecido têm
tempos de atraso diferentes devido à localização dos multiplexeres. Ao sintetizar os
multiplicadores, pelo facto de um dos operandos ser conhecido (os coeficientes do filtro)
permite uma melhor optimização dos mesmos, possibilitando um caminho critico menor. Esta
situação ocorre nas arquitecturas com multiplicadores NxM. Assim, o bloco MCM com
multiplicadores NxM é a arquitectura mais rápida. Nas arquitecturas que partilham os
multiplicadores, ter os multiplexeres antes dos multiplicadores (arquitectura c/mux v2) beneficia
o caminho critico. A arquitectura com multiplicadores NxN apresentam o mesmo tempo crítico
em todos os blocos MCM, porque é sempre implementado o multiplicador 32x32.
27.1 26.9 27.2
18.6 20.4
22.1 21.8
25.3
28.7
23.7 23.4 25.9
00
05
10
15
20
25
30
Fir01 e Fir02 Fir06 e Fir07 Fir05 e Fir09
Tempo (bloco MCM)
Multiplicador NxN Multiplicador NxM
Multiplicador c/ mux Multiplicador c/ mux v2
41
CAPÍTULO 4
4. ARQUITECTURA PARA FILTROS FIR PARALELA
COM ADIÇÕES E DESLOCAMENTOS
O problema de projectar filtros digitais tem recebido grande atenção durante a última década,
como os filtros requerem um grande número de multiplicadores, levam a área, potência
consumida e tempo de atraso excessivos, mesmo se forem implementados em circuito
integrado. As mais recentes propostas concentram-se na redução da área dos filtros
substituindo as operações de multiplicação por coeficientes constantes por adições,
subtracções e deslocamentos. Como os deslocamentos são gratuitos em termos de hardware,
o problema do projecto pode ser definido como a minimização do número de operações de
adição/subtracção para implementar as multiplicações dos coeficientes.
Os algoritmos propostos para a optimização do número de operações no projecto de filtros
digitais podem ser catalogados em duas classes: eliminação de expressões comuns (CSE) e a
técnica do grafo. Nos algoritmos CSE, as constantes são representadas na forma digital
canónica com sinal (CSD) ou no mínimo dígito com sinal (MSD). A representação em MSD é
obtida através da representação em CSD tirando o requerimento de não haver dois dígitos
consecutivos não-zeros [11].
Existem vários algoritmos para os nossos problemas de encontrar o número mínimo de
operações para o cálculo dos coeficientes, uns que permitem maximizar a partilha dos termos
parciais [11], ou o número mínimo de operações em série [12].
As constantes são representadas numa representação numérica, geralmente, na canónica
digital com sinal (CSD) e no mínimo digital com sinal (MSD). Ambas as representações CSD e
MSD usam um sistema digital com sinal com o conjunto digital {1,0,1}, onde 1 significa -1 e tem
a propriedade que o número de não-zeros é mínimo.
Tabela 4.1 – Cálculo dos coeficientes usando o MCM
Coeficientes
[11] [12]
Expressão Operações
em série Expressão
Operações em
série
3
1
1
42
7
2
1
15
3
1
Na Tabela 4.1, vemos a diferença que existe de calcular os mesmos coeficientes de utilizando
algoritmos/objectivos diferentes. Enquanto partilhando os recursos, aumentamos a cadeia em
série, que provoca um tempo de atraso maior, por outro lado temos os somadores mais
pequenos. No mínimo número de operações em série consegue ter todos os resultados no
mesmo período de tempo, mas implica uma área maior. No algoritmo que minimiza o número
de operações em série também pode haver partilha de recursos.
Pelas expressões da Tabela 4.1, podemos construir os diagramas para as duas situações, que
se encontram na Figura 4.1 e Figura 4.2.
Figura 4.1 – Diagrama de blocos com partilha
Figura 4.2 – Diagrama de blocos com mínimo
de operações em série
Estas figuras ilustram o que foi explicado anteriormente, referente a dois métodos para calcular
os coeficientes. Na partilha de recursos, são precisos 3 somadores em série para calcular o
15x, que no outro modo, é necessário 1. Não se pode afirmar que uma solução é melhor que a
outra, porque uma tem uma área menor, e a outra é mais rápida. Cada uma tem características
diferentes destinadas a aplicações diferente, que varia com o projecto em causa. Neste
43
trabalho, e como estamos a comparar com as arquitecturas com multiplicadores, que são
indiferentes a estes processos de operações, o algoritmo utilizado nas arquitecturas com
adições e deslocamentos privilegia a frequência de funcionamento do filtro, ou seja, minimiza o
número de operações em série.
A estrutura das arquitecturas de filtros FIR com somas e deslocamentos, não são muito
diferentes da estrutura das arquitecturas com multiplicadores. O bloco acumulador é idêntico às
duas arquitecturas. A grande diferença está no bloco responsável pela multiplicação dos
coeficientes pelo sinal de entrada. Assim, muitas das decisões que foram tomadas nas
arquitecturas com multiplicadores, também se aplicam nestas arquitecturas:
Todas as optimizações realizadas no bloco acumulador, para redução do número de
somadores e multiplexeres;
No bloco MCM em caso de coeficientes negativos, será aplicado o modelo somador
seguido do negador de sinal;
4.1. IMPLEMENTAÇÃO DAS ARQUITECTURAS
A implementação das arquitecturas com adições e deslocamentos com dois filtros tem como
objectivo, melhorar os resultados apresentados pelas arquitecturas com multiplicadores. Tal
como nas arquitecturas com multiplicadores, nas arquitecturas com adições e deslocamentos
também podem ser implementadas de várias maneiras. Serão estudadas arquitecturas sem
partilha e com partilha de somadores.
4.1.1. ARQUITECTURAS SEM PARTILHA DOS SOMADORES
Uma das estruturas mais simples de implementar quando se pensa juntar dois filtros, é
semelhante à que já foi apresentada no âmbito das arquitecturas com multiplicadores. Na
Figura 4.3 apresenta-se esta arquitectura em que cada filtro tem o seu bloco acumulador e o
bloco MCM, terminando com um multiplexer, para escolher qual o filtro a utilizar.
44
Figura 4.3 – Diagrama de blocos com dois MCM´s e dois blocos acumuladores(2 MCM 2 Blocos registos)
Esta é a primeira arquitectura MCM proposta. Apesar de ser muito simples, esta arquitectura
tem muitas desvantagens. A energia necessária para esta arquitectura é elevada, porque os
dois filtros estão sempre em funcionamento. Pelo facto de ter também dois blocos
acumuladores, tem uma área elevada. Os resultados desta arquitectura serão exibidos no final
deste capítulo. A arquitectura com 2 MCM´s e 2 blocos acumuladores pode ser melhorada.
Uma das opções consiste na partilha do bloco acumulador.
No sentido de reduzir a área e a potência consumida face à arquitectura estudada
anteriormente, desenvolveu-se uma arquitectura em que o bloco acumulador é partilhado. Esta
arquitectura apresentada na Figura 4.4, diminui a área e a potência consumida face à
arquitectura estudada anteriormente. Como aconteceu na arquitectura com multiplicadores,
também é necessário implementar multiplexeres antes dos registos/somadores. Note-se que,
todas as optimizações efectuadas no bloco acumulador nas arquitecturas com multiplicadores
podem ser aplicadas nas arquitecturas com adições e deslocamentos.
45
Figura 4.4 - Diagrama de blocos com dois MCM´s e um bloco acumulador (2 MCM 1 Bloco registo)
Como veremos na apresentação dos resultados no final do capítulo a implementação desta
arquitectura apresenta uma menor área e menos potência do que a arquitectura anterior. No
entanto, a implementação dos multiplexeres implica um aumento do caminho crítico do circuito.
A arquitectura com dois MCM e um bloco acumulador representada na Figura 4.4 pode ser
melhorada. Nota-se que com esta arquitectura se os dois MCMs tiverem termos parciais, ou
coeficientes iguais, eles iriam ser implementado em duplicado. Isto acontece, porque os dois
MCM´s são implementados separadamente.
Aproveitando a estrutura da arquitectura anterior, e unindo os 2 MCMs, num único bloco,
obtemos uma nova arquitectura. A arquitectura com um MCM e um bloco acumulador, Figura
4.5, apresenta o resultado das várias optimizações efectuadas nas arquitecturas anteriores.
Deste modo, com a união dos dois MCMs, retiram-se os coeficientes repetidos, diminuindo a
área ocupada e a potência consumida.
46
Figura 4.5 – Diagrama de blocos com um MCM e um bloco acumulador (1 MCM 1 Bloco registo)
Quando se fala da união dos dois blocos MCM, é preciso clarificar que ao executar o algoritmo
que cria o MCM, que está fora do contexto deste trabalho, é calculada a melhor solução para
cada filtro separadamente, ou seja, a solução para o FIR1 e para o FIR2 são independentes. É
por isso, que ao unir os dois filtros, podem existir coeficientes comuns. Alternativamente
podemos pensar que só temos um filtro, mas com todos os coeficientes. Assim, ao executar o
algoritmo obtemos a melhor solução para a união dos dois filtros. No fim deste capítulo, serão
mostrados os resultados das duas opções usando a arquitectura com um MCM e um bloco
acumulador.
4.1.2. ARQUITECTURA COM PARTILHA DOS SOMADORES
As arquitecturas paralelas para filtros FIR com adições e deslocamentos também possibilitam a
partilha dos somadores como na arquitectura FIR com multiplicadores. Apesar da área nas
arquitecturas FIR com adições e deslocamentos representarem apenas 30% do filtro (os
restantes 70% são do bloco acumulador) e em contraste com os 50% nas arquitecturas FIR
com multiplicadores é ainda possível reduzir a área do bloco MCM partilhando somadores. Um
dos problemas de partilhar os somadores, é a inserção dos multiplexeres. Na arquitectura FIR
com multiplicadores, a substituição de um multiplicador por um multiplexer apresenta um ganho
em termos de área e potência, porque a área de um multiplexer é muito inferior a um
multiplicador. Na arquitectura com somas e deslocamentos isso já não acontece nos
somadores. A área de um somador é equivalente à área de dois multiplexeres. Como os
coeficientes são compostos pela soma de dois termos parciais, no pior caso são precisos dois
multiplexeres por somador. Por isso, é preciso ter atenção quando ocorre uma união de dois
somadores. Existem coeficientes que podem partilhar um dos termos parciais. No entanto, é
preciso um algoritmo para descobrir a melhor solução para a partilha dos somadores dos
47
coeficientes. A solução que permite diminuir a área consiste na substituição de um somador
por um multiplexer. Haverá casos em que isso não será possível, em que será necessário
implementar dois multiplexeres. Foram desenvolvidos dois algoritmos distintos, para a procura
da melhor solução de emparelhamento dos somadores. Um dos algoritmos consiste numa
heurística de procura com o objectivo de emparelhar o máximo de somadores com um único
multiplexer, enquanto o outro algoritmo recorre a modelo de programação linear que
transformando o problema num conjunto de restrições e uma função de custo para minimizar a
área do circuito. A Figura 4.6 representa o resultado de partilhar o mesmo operador para os
coeficientes 303x e 117x.
Figura 4.6 – (a) Diagrama de blocos dos coeficientes 303x e 117x. (b) Diagrama de blocos do resultados
de partilhar os coeficientes 303x e 117x.
4.1.2.1. USANDO O ALGORITMO HEURISTICO DE PROCURA
Uma das soluções para o emparelhamento de coeficientes parciais das arquitecturas FIR foi
um algoritmo heurístico de procura. Antes de explicar o funcionamento do algoritmo, existem
alguns parâmetros que ainda não foram explicados ao longo deste trabalho. Os coeficientes
parciais, que provêem dos coeficientes dos filtros, podem ser tratados como um grafo
direccionado. Como o grafo não pode conter ciclos, temos dígrafo acíclico. Os vértices do grafo
são representados pelos coeficientes parciais. O grau de entrada de cada vértice não excede o
2, enquanto o grau de saída pode ser variado, logo o grafo não é balanceado. O nível a que se
encontra cada vértice corresponde à soma de todos os vértices anteriores, contado com o
próprio vértice. No emparelhamento dos coeficientes parciais, o nível a que cada vértice se
encontra é fundamental para o algoritmo desenvolvido. Outra das características a ter em conta
é na possibilidade de haver emparelhamento de coeficientes parciais com sinais diferentes.
Neste caso, todos esses pares serão rejeitados pelo algoritmo, evitanda a implementação de
somadores/subtractores.
48
O algoritmo pode ser dividido em 6 etapas distintas resumidas na Figura 4.7. A primeira etapa
é encontrar todos os coeficientes parciais comuns aos dois filtros. Estes coeficientes não
podem ser partilhados, por serem utilizados em ambos os filtros. Cada coeficiente comum será
implementado num somador independente. A segunda etapa consiste em emparelhar os
coeficientes parciais que tenham um dos termos parciais idênticos. No entanto, limitou-se esta
etapa a coeficientes que estejam no mesmo nível, evitando as alterações do nível, que
acontece quando se junta coeficientes de níveis diferentes. Esta alteração do nível não
prejudica o funcionamento do filtro, mas pode provocar um aumento de área, porque os
coeficientes parciais com níveis mais altos geralmente precisam de somadores maiores, pois
calculam valores maiores (logo maiores numero de bits) que, em geral, somadores do mesmo
nível têm uma diferença menor do número de bits. Mas, como podem existir termos parciais
iguais mas de níveis diferentes, a terceira etapa trata desses casos. Note-se que na segunda e
terceira etapa, em termos de hardware, foi feita a substituição de um somador por um
multiplexer.
Depois destas etapas, já não existem coeficientes parciais que sejam calculados com um
operando igual, logo, todos os emparelhamentos que se seguem, para a substituição de um
somador são necessários dois multiplexeres. Na quarta etapa, são efectuados todos os
emparelhamentos possíveis, do mesmo nível. A justificação da limitação é a mesma da etapa
2. Na quinta etapa, serão emparelhados todos os restantes coeficientes parciais de níveis
diferentes. Ao fim desta etapa, foram realizadas todos os possíveis emparelhamentos entre os
dois filtros. Como os dois filtros podem não conter o mesmo número de coeficientes parciais,
na sexta etapa são implementados em somadores independentes os coeficientes parciais do
filtro que restaram.
Figura 4.7 – Etapas efectuadas pelo algoritmo no emparelhamento dos coeficientes parciais
Para mostrar todas as etapas, foram utilizados os filtros 6 e 7 para o exemplo. Na Tabela 4.2
apresentam-se os coeficientes parciais de cada filtro e o nível a que se encontram. O cálculo
dos coeficientes parciais foi obtido usando o algoritmo de [12], e sendo o nível depois calculado
pelo algoritmo desenvolvido.
1ª Etapa
•Encontrar todos os
coeficientes comuns aos dois filtros
•Implementação dos mesmos
em somadores independentes
2ª Etapa
•Emparelhar todos
coeficientes que contenham um dos termos
parcais idênticos, mas
têm de estar no mesmo nivel
•Implementação dos pares que cumprem as
condições
3ª Etapa
•Emparelhar todos
coeficientes que contenham um dos termos
parcais idênticos
•Implementação dos pares que cumprem as
condições
4ª Etapa
•Emparelhar todo os
coeficientes que contenham
os termos parciais
diferentes, mas têm de estar no
mesmo nivel
•Implementação dos pares que cumprem as
condições
5ª Etapa
•Emparelhamento dos restantes coeficientes
parciais
•Implementação dos restantes
pares
6ª Etapa
•Implementação dos restantes coeficientes
parcias quem nao contenham
par
49
Tabela 4.2 – Coeficientes parciais do filtro 6 e 7.
Filtro 6 Filtro 7
Coeficientes Parciais Nível Coeficientes Parciais Nível
7>>0 = -1<<0 +1<<3 1 33>>0 = +1<<0 +1<<5 1
17>>0 = +1<<0 +1<<4 1 7>>0 = -1<<0 +1<<3 1
9>>0 = +1<<0 +1<<3 1 3>>0 = +1<<0 +1<<1 1
3>>0 = +1<<0 +1<<1 1 51>>0 = +3<<0 +3<<4 2
29>>0 = +1<<0 +7<<2 2 13>>0 = +1<<0 +3<<2 2
21>>0 = +1<<2 +17<<0 2 71>>0 = +1<<6 +7<<0 2
87>>0 = -9<<0 +3<<5 2 25>>0 = +1<<0 +3<<3 2
37>>0 = +1<<0 +9<<2 2 39>>0 = +1<<5 +7<<0 2
113>>0 = +1<<0 +7<<4 2 49>>0 = +1<<0 +3<<4 2
225>>0 = +1<<0 +7<<5 2 111>>0 = -1<<0 +7<<4 2
765>>0 = -3<<0 +3<<8 2 125>>0 = +1<<7 -3<<0 2
293>>0 = +1<<8 +37<<0 3 113>>0 = +1<<0 +7<<4 2
335>>0 = -1<<0 +21<<4 3 217>>0 = -7<<0 +7<<5 2
419>>0 = +7<<6 -29<<0 3 377>>0 = -7<<0 +3<<7 2
479>>0 = +29<<0 +225<<1 3 53>>0 = +7<<3 -3<<0 2
621>>0 = -9<<4 +765<<0 3 387>>0 = +3<<0 +3<<7 2
1335>>0 = -9<<0 +21<<6 3 55>>0 = -1<<0 +7<<3 2
409>>0 = +37<<3 +113<<0 3 79>>0 = -33<<0 +7<<4 2
819>>0 = +1<<0 +409<<1 4 43>>0 = +1<<2 +39<<0 3
623>>0 = +1<<1 +621<<0
4 543>>0 = +71<<3 -25<<0 3
661>>0 = +71<<2 +377<<0 3
567>>0 = -1<<0 +71<<3 3
557>>0 = +111<<2 +113<<0 3
411>>0 = -33<<0 +111<<2 3
1887>>0 = +111<<0 +111<<4 3
1571>>0 = +3<<0 +49<<5 3
3449>>0 = +3<<10 +377<<0 3
681>>0 = +71<<3 +113<<0 3
2155>>0 = +33<<6 +43<<0 4
De seguida foram aplicados as várias etapas do algoritmo aos filtros 6 e 7, como podemos ver na Tabela 4.3. Nesta tabela mostra-se o resultado de juntar os pares de coeficientes do filtro FIR 6 e FIR 7 em cada uma das etapas e a variação do número de somadores e multiplexeres.
Tabela 4.3 – As 6 etapas efectuadas aos filtros 6 e 7.
Coeficiente Parcial Nível Etapas Somadores Multiplexer
Filtro 6 Filtro 7 Filtro 6 Filtro 7
+3 1
Etapa 1
+1 0
-7 1 +1 0
+113 2 +1 0
+17 +33 1 1
Etapa 2
+1 +1
+29 +13 2 2 +1 +1
+37 +25 2 2 +1 +1
+225 +49 2 2 +1 +1
-765 -125 2 2 +1 +1
-335 -567 3 3 +1 +1
+409 +557 3 3 +1 +1
+21 +43 2 3 Etapa 3 +1 +1
50
-87 -111 2 2
Etapa 4
+1 +2
+293 +661 3 3 +1 +2
-419 -543 3 3 +1 +2
+479 +1887 3 3 +1 +2
-621 -411 3 3 +1 +2
+819 +2155 4 4 +1 +2
+9 +51 1 2
Etapa 5
+1 +2
-1335 -217 3 2 +1 +2
+623 +71 4 2 +1 +2
+39 2
Etapa 6
+1 0
-377 2 +1 0
-53 2 +1 0
+387 2 +1 0
-55 2 +1 0
-79 2 +1 0
+1571 3 +1 0
+3449 3 +1 0
+681 3 +1 0
TOTAL 39 26
Ao fim das seis etapas, ficam definidos os pares de coeficientes parciais a implementar. O sinal nos coeficientes parciais identificam se é realizado uma soma ou uma subtracção. Com este algoritmo é possível maximizar a partilha dos coeficientes parciais tendo em conta a diminuição da área ocupada. No fim deste capítulo, será mostrado o resultado desta arquitectura com partilha de somadores no bloco MCM (1 MCM ADD C/ MUX).
4.1.2.2. USANDO A PROGRAMAÇÃO LINEAR
A programação linear (LP, ou optimização linear) é um método matemático para maximizar (ou
minimizar) uma dada função linear de custo (que pode representar um lucro ou custo) sujeito a
um conjunto de restrições lineares. A programação linear pode ser aplicada em vários campos
de estudo, tais como o mundo dos negócios, a economia, ou em engenharia. As indústrias que
usam modelos de programação linear para resolver os seus problemas incluem os transportes,
energia, telecomunicações e manufactura.
Formalmente os problemas da programação linear inteira, em que as incógnitas do problema
só podem tornar valores inteiros, podem ser expressos na sua forma canónica:
Em que x representa o vector das variáveis a determinar (incógnitas), c e b são os vectores dos
coeficientes conhecidos e A a matriz dos coeficientes. A expressão a maximizar ou a minimizar
é chamada de função de custo.
Incorporando a ferramenta LP_SOLVE na linguagem C, foi possível implementar uma
arquitectura FIR com partilha dos somadores no bloco MCM. O objectivo da utilização desta
ferramenta é a criação de um modelo que nos permite explorar todas as combinações entre
dois filtros para partilha de componentes, no sentido de diminuir a sua área. Neste modelo, foi
elaborada uma função de custo que contenha a informação do custo de partilhar componentes.
51
O custo de dois coeficientes partilharem o mesmo operador depende do número de
multiplexeres a implementar (entre 1 e 2 multiplexeres) e do seu tamanho (bits), o tipo de
operador (somador, subtractor ou somador/subtractor) e o seu tamanho (bits). Cada
componente tem um impacto diferente na função de custo, porque a área ocupada por um
multiplexer é inferior à área de um dos operadores, logo, a função de custo tem de diferenciar a
contribuição de cada componente. Na resolução da função de custo obtém-se a melhor
solução para diminuir a área ocupada pelos filtros.
Para integrar o nosso problema na ferramenta LP_SOLVE, foram feitas algumas opções no
intuito de maximizar a eficiência da ferramenta. Como foi indicado em capítulos anteriores,
podem existir coeficientes parciais comuns aos dois filtros, por isso esses coeficientes parciais
foram retirados do problema. Se tivermos os conjuntos de coeficientes C e K:
{ }
{ }
Para generalizar o problema, podemos considerar que o conjunto C é sempre menor ou igual
ao conjunto K, ou seja N ≤ M. Da intersecção dos conjuntos C e K resulta o conjunto dos
coeficientes parciais comuns, o conjunto I.
{ }
Retirando os coeficientes parciais do conjunto I aos conjuntos C e K, ficamos com dois novos
conjuntos.
{ }
{ }
Neste instante, temos os dois conjuntos de coeficientes parciais para o nosso problema. Para
definir a função de custo é necessário saber a contribuição de cada componente. Para isso,
foram realizadas sínteses de vários componentes (somador/subtractror, subtractor, somador e
multiplexer) para saber como a área dos componentes varia com o número de bits destes.
52
Figura 4.8 – Área ocupada por vários componentes.
A Figura 4.8 retracta a área de cada componente por bit. Como podemos observar pela Figura
4.8 o multiplexer tem a área mais pequena, seguindo do somador e por ultimo o
somador/subtractor tem a área maior. Sendo que se tratam de 4 rectas lineares, podemos
assim supor que a função que caracteriza cada recta é linear. Assim, calculando o declive para
cada recta podemos obter a área de cada componente em função do tamanho do sinal de
entrada.
Tabela 4.4 – Declive dos vários tipos de componentes
Tipo Declive
Somador/subtractor 436,2
Subtractor 354,4
Somador 309,0
Multiplexer 145,2
Com os resultados do declive mostrado na Tabela 4.4 é possível diferenciar o valor de cada
componente na função de custo. A função de custo a minimizar considera todas as
possibilidades de emparelhamentos dos dois conjuntos de coeficientes parciais, tendo em
conta que haverá emparelhamentos que só precisam de um multiplexer, outros em que são
necessário os dois, também haverá casos em que os coeficientes a emparelhar requerem do
mesmo número de bits do somador, entre outros casos. O custo de juntar um coeficiente i do
conjunto Ci’ com um coeficiente j do conjunto Kj’ é representado por de acordo com a
seguinte fórmula:
Onde:
e representam o número de bits necessário para os multiplexeres do
lado esquerdo e do lado direito do somador, respectivamente;
e representam o número de bits do somador do coeficiente do conjunto
C’ e do conjunto K’, respectivamente;
0
2000
4000
6000
8000
10000
12000
14000
16000
0 10 20 30 40
um
2
Bits
Área Ocupada
adder_subb
subb
adder
mux
Linear (adder_subb)
Linear (subb )
Linear (adder)
Linear (mux)
53
representa o custo da área do multiplexer por bit:
βi e βj representam o custo da área do somador (ou subtractor) por bit. βj e βj podem ter
valores diferente:
O γ pode representar três valores de área, um somador, um subtractor ou um
somador/subtractor:
{
O custo é a soma da área dos multiplexeres necessários, subtraindo a área do somador ou
subtractor que é retirado no emparelhamento dos coeficientes e no fim é adicionado a área do
novo elemento, que pode ser um somador, subtractor ou um somador/subtractor. Com esta
fórmula ficamos com uma interpretação da área ocupada por um emparelhamento de
coeficientes. Ao sintetizar o resultado proveniente da solução do LP_SOLVE, a área ocupada
era superior à solução sem emparelhamentos. Isto ocorre, porque os componentes a sintetizar
(os somadores, subtractores, multiplexeres e os somadores/subtractores) uma das suas
entradas sofre um deslocamento. No caso dos somadores, a redução da área em relação ao
número de bits que sofre deslocamentos é notória. Nos restantes elementos, apesar de
também existir, essa redução é muito pequena (nos somadores/subtractores não ocorrem
reduções de área quando uma das entradas é deslocada). Por isso, é necessário corrigir a
fórmula para o cálculo do custo de juntar dois coeficientes:
(
) (| |)
( )
( ( ) ( ))
Onde:
representa o custo da redução da área do multiplexer por bit de deslocamento:
representa o custo da redução da área do somador por bit de deslocamento:
representa o número de bits que o sinal é deslocado para a esquerda.
54
O cálculo do custo pode ser transformado numa matriz de custos, em que i representa a
linha e j a coluna. A intersecção da linha i com a coluna j é o custo de emparelhar dois
coeficientes parciais, Ci’ com Ki’. A matriz de custo tem a dimensão de N - P linhas e M – P
colunas de elementos fij. A cada elemento fij está associado uma variável binária xij, (incógnita
do problema LP) que nos vai dizer se o coeficiente Ci’ e Kj’ vão ser emparelhados no mesmo
operador ou não, consoante toma o valor 1 ou 0, respectivamente. A função de custo a
minimizar corresponde assim ao somatório de todas as posições da matriz, ou seja a todos os
custos de emparelha o coeficiente Ci’, Kj’ multiplicado pela variável que indica se esse
emparelhamento se vai realizar ou não.
∑ ∑
A matriz de custo mostra todas as possibilidades de emparelhamento entre os dois filtros. No
entanto, temos de garantir que cada elemento Ci’ emparelha apenas com um único elemento
Kj’. Para isso, é necessário inserir restrições em que a soma de todas as variáveis da linha i
têm de ser igual a 1, ou seja, só uma das variáveis pode estar activa na linha i.
∑
A segunda restrição proposta é nas colunas, a soma de todas as variáveis da coluna j têm de
ser menores ou iguais a 1, ou seja, pode haver colunas em que não existem variáveis activas.
∑
O facto de a restrição da coluna ser menor ou igual a 1 deve-se com as dimensões da matriz. A
matriz pode não ser quadrada, porque N ≤ M, logo temos de garantir que um elemento da linha
i não tenha vários elementos na coluna j.
O LP_SOLVE depois de resolver o problema vai retornar o valor de todas as variáveis que
minimiza a função de custo. As variáveis , que tiverem valor 1 vão-nos indicar a solução de
emparelhamentos possíveis com menor custo.
Para exemplificar a utilização deste modelo, vamos usar os filtros de teste 1 e 2 e ilustrar os
vários passos realizados, assim como as restrições obtidas do modelo LP. O primeiro passo é
identificar todos os coeficientes parciais de cada filtro. Como o filtro 1 tem menos coeficientes
parciais que o filtro 2, o conjunto C representa o filtro 1 e o conjunto K representa o filtro 2.
{ }
{ }
O passo seguinte é calcular a intersecção dos conjuntos C e K e criar os novos conjuntos:
{ }
55
{ }
{ }
Com os novos conjuntos, podemos calcular o custo e preencher a matriz de custo.
Tabela 4.5 – Matriz de custo
Matriz de custo 19 35 43 53 21 39 23 67 91 303 485 411
11 -1729 -325 304 1175 -1511 -277 -504 1104 1644 1467 1322 2121
13 -1511 -215 177 1285 -1638 -167 -394 977 1753 1340 1195 1994
51 214 1055 -1801 -458 87 994 1349 -1347 1354 468 323 1122
89 1335 -1200 1244 -1327 1444 -1327 -973 1372 -3388 1844 1699 2498
117 1093 -1442 -449 -3021 1203 -1569 -1214 -103 -1682 1966 1821 2620
Para ilustrar como foram calculados todas as parcelas do custo de unir dois coeficientes
parciais, usou-se os coeficientes 117 e 303 que são obtidos individualmente da seguinte forma:
A primeira parcela da função de custo é o número de multiplexeres e o seu tamanho (bits).
Como não contêm nenhum termo parcial idêntico, é necessário dois multiplexeres. Como o
primeiro termo parcial contém deslocamentos, estes são executados depois do multiplexer,
logo o número de bits necessário para os multiplexeres são:
Neste exemplo, considerou-se que o tamanho do sinal de entrada são 8 bits. Assim, temos o
tamanho dos dois multiplexeres:
A segunda parcela corresponde ao tamanho e tipo de operadores:
A terceira parcela distingue se é implementado um somador ou um somador/subtractor. Neste
caso, como os dois coeficientes parciais têm sinais diferentes, será necessário implementar um
somador/subtractor. Assim, ficamos com o seguinte cálculo para o custo de unir o 117 e o 303:
Como o custo de unir os coeficientes 117 e 303 é superior a zero, indica que é mais vantajoso
não unir estes coeficientes. Para finalizar o problema só falta inserir as restrições, primeiro a
restrição das linhas, em que no máximo uma das variáveis por linha tem de estar activa.
56
Por último, as restrições das colunas, em que o número de variáveis activas por coluna é no
máximo 1:
Com estas etapas, temos todas as condições para a resolução do problema, que passa por
encontrar a melhor maneira de emparelhar os coeficientes parciais de dois filtros, tendo em
conta a diminuição da área ocupada. Na matriz de custo apresentado anteriormente, os valores
a bold representam a solução deste problema. Nesta solução passamos de 17 somadores (ou
subtractores) para apenas 12 dado que 5 operadores são partilhados pelos dois filtros. Os
pares de coeficientes (Ci’,Kj’) emparelhados num operador são (11,19), (51,43), (117,53),
(13,21) e (89,91). É de salientar, que esta solução depende do algoritmo utilizado para calcular
os coeficientes parciais e do tamanho do sinal de entrada. Com os mesmos coeficientes, mas
com diferentes algoritmos ou com outro tamanho do sinal de entrada, a solução do problema
pode ser diferente.
Foram apresentadas duas propostas para a partilha dos somadores nas arquitecturas FIR com
somadores. Usando os filtros do último exemplo, e aplicando à arquitectura que utiliza um
sistema de procura para a partilha de somadores, a solução encontra foi idêntica à utilizada
pela ferramenta LP_SOLVE. Uma explicação possível para este caso pode ser o pequeno
número de coeficientes parciais dos dois filtros e também porque em nenhuma das utilizações
é implementado o somador/subtractor. Nos outros pares de filtros não acontece esta situação,
tendo soluções diferentes para cada arquitectura.
A arquitectura com partilha dos somadores usando a programação linear pode apresentar
diferentes soluções para o mesmo conjunto de coeficientes, ao contrário da arquitectura que
usa o algoritmo heurístico. A solução com a programação linear é influenciada por vários
factores, como por exemplo o tamanho do sinal de entrada. Para o mesmo conjunto de
coeficientes, a variação do tamanho do sinal de entrada pode implicar diferentes soluções. Isto
57
acontece porque a fórmula do cálculo do custo tem em conta com o tamanho do sinal de
entrada. Outro dos factores que influencia a programação linear é a barreira de decisão, que
neste caso encontra-se a zero. Se repararmos na Tabela 4.5, a matriz de custo apresenta
valores negativos e positivos. Ao inserir essa matriz no LP_SOLVE, todos os valores maiores
que zero são descartados (com o valor da barreira de decisão a zero, os valores superiores a
zero significam que é mais vantajoso não unir os coeficientes) para o cálculo da melhor
solução, ou seja, alterando o valor da barreira de decisão, teremos diferentes soluções. As
seguintes tabelas exemplificam o que foi dito anteriormente.
Tabela 4.6 - Valores dos pares de filtros para variações da barreira de decisão
Sinal de
entrada
Barreira de
decisão
Fir01 e Fir02 Fir05 e Fir09 Fir06 e Fir07
Área (µm
2)
Custo LP_SOLVE
Área (µm
2)
Custo LP_SOLVE
Área (µm
2)
Custo LP_SOLVE
8 bits
> 0 316331 -11577 855447 -33052 431711 -25742
> -1000 316331 -11577 849015 -30099 424077 -24387
> -2000 319587 -6408 853679 -20089 419557 -11286
16 bits
> 0 525132 -18855 1330498 -54249 681520 -40653
> -1000 525132 -18855 1320925 -51979 674149 -39862
> -2000 525132 -18855 1322807 -48380 654766 -35548
32 bits
> 0 938700 -33412 2272730 -96642 1155668 -70685
> -1000 938700 -33412 2263114 -94269 1145538 -69001
> -2000 938700 -93182 2260456 -93182 1145538 -69001
A Tabela 4.6 apresenta a variação da área, potência e tempo de atraso para diferentes
tamanhos do sinal de entrada e barreira de decisão. Podemos concluir que puxar a barreira da
decisão do LP_SOLVE para valores menores que zero, permite diminuir a área ocupada pela
arquitectura. Apesar do custo final ser maior em módulo quando temos “>0”, o que devia
implicar uma área mais pequena, isso não acontece. Uma das explicações é a incerteza nos
valores das áreas na função de custo, o que influencia o suposto ganho que devia acontecer,
ou seja, valores negativos muito próximo de zero, podem representar na síntese da
arquitectura uma solução pior. No entanto, ao variar a barreira de decisão, ocorrem menos
partilhas de somadores entre os dois filtros.
58
4.2. RESULTADOS
Nesta secção iremos apresentar os resultados dos blocos MCM com somadores,
subtractores e deslocamentos, a área ocupada, a potência e o tempo de atraso.
4.2.1. ÁREA
Figura 4.9 - Gráfico com as áreas do bloco MCM com somadores, subtractores e deslocamentos
Na Figura 4.9 apresenta-se a área ocupada pelo bloco MCM com multiplicadores para os filtros
usados como benchmarks. As quatro arquitecturas que utilizam 1 bloco MCM (as ultimas 4 do
gráfico da Figura 4.9) têm resultados muito idênticos, em que a variação entre elas não chega
aos 3%. A arquitectura que ocupa uma menor área é a que contém 2 blocos MCM e 2 blocos
acumuladores, porque esta arquitectura não contém os multiplexeres que se encontram nas
restantes arquitecturas. A arquitectura que ocupa mais área é muito parecida com a que ocupa
menos área, mas pelo facto de conter um bloco acumulador é necessário inserir multiplexeres.
A arquitectura que ocupa menos área por ter dois blocos acumuladores prescinde destes
multiplexeres, e é esta a grande razão por ter a menor área em relação a arquitecturas com um
único bloco mcm e também com partilha dos somadores. Em relação às duas arquitecturas que
partilham os somadores (e também os subtractores), a que utiliza a programação linear
apresenta melhores resultados que a da procura heurística. Para o 1º par de filtros, as duas
apresentam o mesmo valor na área ocupada, porque a solução encontrada é idêntica.
824 1095
1979
1390 1537
2907
962 1147
2313
939 1140
2310
939 1156
2273
963 1157
2289
0
500
1000
1500
2000
2500
3000
Fir01 e Fir02 Fir06 e Fir07 Fir05 e Fir09
Milh
are
s
Área (Bloco MCM)
2 MCM 2 Blocos registos 2 MCM 1 Bloco registo 1 MCM 1 Bloco registo
1 MCM ADD C/ MUX 1 MCM ADD C/ MUX ILP Uniao 2 MCM
59
4.2.2. POTÊNCIA
Figura 4.10 - Gráfico com as potências do bloco MCM com somadores, subtractores e deslocamentos
Na Figura 4.10 apresenta-se a potência de cada arquitectura para os filtros usados como
benchmarks. A arquitectura que ocupa mais área (2 blocos MCM e 1 bloco acumulador), é a
que precisa de uma potência maior, porque ocorre o cálculo de coeficientes repetidos nos
blocos MCM. A arquitectura que ocupa menos área (2 blocos MCM e 2 blocos acumuladores)
só num caso é que consome menos potência que as restantes arquitecturas, porque também
ocorre o mesmo problema que a arquitectura que consome mais potência (coeficientes
repetidos). As arquitecturas que têm 1 bloco MCM são as que precisam de menos potência,
visto que não há operações repetidas. A diferença entre estas arquitecturas, como também
tinha acontecido na área, são pequenas. No entanto, as arquitecturas que partilham os
somadores são as que consomem menos potência. No geral, a arquitectura que consome
menos potência é a que utiliza a programação linear.
169 162
305
203 225
412
132 143
333
126 165
329
126 148
327
132 165
333
0
100
200
300
400
500
Fir01 e Fir02 Fir06 e Fir07 Fir05 e Fir09
Potência (Bloco MCM)
2 MCM 2 Blocos registos 2 MCM 1 Bloco registo 1 MCM 1 Bloco registo
1 MCM ADD C/ MUX 1 MCM ADD C/ MUX ILP Uniao 2 MCM
60
4.2.3. TEMPO DE ATRASO
Figura 4.11 - Gráfico com os tempos de atraso do bloco MCM com somadores, subtractores e
deslocamentos
Na Figura 4.11 apresenta-se o tempo de atraso de cada arquitectura para os filtros usados
como benchmarks. Como seria de esperar, as arquitecturas com partilha dos somadores
apresentam piores resultados no tempo quando os filtros possuem muitos somadores em série,
por causa da inserção dos multiplexeres. A arquitectura com menor caminho crítico é a de 1
bloco MCM e 1 bloco acumulador. A arquitectura proveniente da união dos dois filtros
apresenta piores resultados que a sua homóloga, a arquitectura com 1 bloco MCM e 1 bloco
acumulador. Isto deve-se por a arquitectura com a união dos dois filtros provocar um aumento
de somadores em série, o que implica um caminho crítico maior.
19 22 22
19 22 23
19 21 21
18
23
30
18
24 26
24 24 26
0
5
10
15
20
25
30
Fir01 e Fir02 Fir06 e Fir07 Fir05 e Fir09
Tempo de atraso (Bloco MCM)
2 MCM 2 Blocos registos 2 MCM 1 Bloco registo 1 MCM 1 Bloco registo
1 MCM ADD C/ MUX 1 MCM ADD C/ MUX ILP Uniao 2 MCM
61
CAPÍTULO 5
5. GERAÇÃO E SINTESE DE ARQUITECTURAS PARA
FILTROS FIR
Para a elaboração deste trabalho, onde se realiza um estudo de várias arquitecturas para filtros
digitais FIR, foi fundamental criar uma ferramenta que de forma automática gerasse todas as
arquitecturas FIR. Para esse efeito, foi criado um programa em linguagem C que a partir dos
coeficientes dos filtros e parâmetros configuráveis, produzisse os ficheiros com descrições em
VHDL sintetizáveis para a arquitectura desejada.
5.1. FICHEIRO COM OS COEFICIENTES DO FILTRO
A ferramenta desenvolvida, tem como entrada os ficheiros com os coeficientes dos filtros.
Todos os ficheiros com os coeficientes dos filtros têm de seguir a mesma estrutura, para que
seja possível a ferramenta processar correctamente a informação. Nos ficheiros dos filtros
podemos dividi-los em duas partes, numa os coeficientes dos filtros, em que são utilizados em
todas as arquitecturas estudadas (com multiplicadores e com somas, subtracções e
deslocamentos) e noutra parte as operações das arquitecturas com somadores, para o cálculo
dos coeficientes. Os ficheiros dos filtros terão sempre de conter estas duas frases, ***
Implementation of Coefficients ***, que antecede os coeficientes dos filtros e ***
Implementation of Partial Terms *** antes dos coeficientes parciais. Na Figura 5.1
apresentamos um exemplo de um ficheiro com os coeficientes e termos parciais de um filtro.
Figura 5.1 – Exemplo de um ficheiro contendo os coeficientes e termos parciais do filtro.
*** Implementation of Coefficients ***
51 = +51<<0
89 = +89<<0
117 = +117<<0
128 = +1<<7
117 = +117<<0
89 = +89<<0
51 = +51<<0
*** Implementation of Partial Terms ***
3>>0 = +1<<0 +1<<1
15>>0 = -1<<0 +1<<4
51>>0 = +3<<0 +3<<4
89>>0 = +3<<5 -7<<0
117>>0 = -3<<0 +15<<3
62
Os coeficientes e os termos parciais dos filtros também têm de seguir um certo formato. Os
coeficientes são compostos por 3 elementos e os termos parciais por 7 elementos. A
ferramenta desenvolvida precisa de adquirir a informação dos dois tipos de dados. Nos dados
dos coeficientes é necessário saber o coeficiente do filtro, que está associado a um termo
parcial e o número de deslocamentos à esquerda.
“Coeficiente” = “Termo parcial” << “nº de deslocamentos”;
Na recolha de informação dos termos parciais é necessário mais dados do que os coeficientes.
A cada termo parcial está associado um deslocamento à direita. Mas cada termo parcial
provém da operação de outros dois termos parciais, estes com deslocamentos à esquerda. A
operação entre os dois termos parciais pode ser uma soma ou uma subtracção.
“Termo parcial” >> “deslocamento” = “termos parcial” << “nº deslocamento” “+/-“
“termos parcial” << “nº deslocamento”.
Ao chamar a ferramenta na linha de comandos, é necessário indicar os ficheiros dos
coeficientes dos dois filtros. A ferramenta tem o nome de filterjoin e para dois ficheiros de
filtros de teste fir01.result e fir02.result a linha de comandos fica:
C:\FIR>./filterjoin fir01.result fir02.result
A ordem como são indicados os ficheiros dos filtros é irrelevante.
5.2. OPÇÕES DA FERRAMENTA
Como foi dito anteriormente, todas as arquitecturas estudadas foram desenvolvidas
automaticamente por esta ferramenta. A ferramenta foi desenvolvida de modo a ser possível a
configuração dos vários parâmetros das arquitecturas pelo utilizador. Na Tabela 5.1 é possível
ver todas as opções que a ferramenta oferece ao utilizador e que são inseridas depois do nome
dos ficheiros dos filtros.
Tabela 5.1 – Opções da ferramenta desenvolvida neste trabalho.
Opção Descrição Opções Válidas Valor Inicial
-t: Escolha da arquitectura a estudar -t: {a,b,c,d,e,f,g,h,i} -t:a
-b: Tamanho em bits do sinal de
entrada -b: {número de bits} -b:8
-a: Tipo de somador a implementar -a:{ nome do somador} -a:adder
-s Tipo de subtractor a implementar -b:{ nome do subtractor} -b:subb
-m: Tipo de multiplicador a
implementar
-m:{ nome do
multiplicador} -m:gen_mult
-c: Tipo de descrição VHDL:
estrutural ou comportamental -c:{0;1} -c:0
63
A Tabela 5.1 apresenta todas as opções da ferramenta desenvolvida neste trabalho, que vão
desde a escolha da arquitectura estudadas nos capítulos anteriores, passando pelo tamanho
do sinal de entrada (neste trabalho só foram utilizados sinais com 8, 16 e 32 bits) até ao tipo de
componentes e o tipo de descrição VHDL.
O primeiro parâmetro é a escolha das arquitecturas dos filtros FIR. Na linha de comandos é
possível indicar o tipo de arquitectura a gerar. A opção que designa o tipo de arquitectura é
–t:opção, cujos valores possíveis estão indicados na Tabela 5.2.
Tabela 5.2 – Tabela com as diferentes opções de arquitectura.
Opção Arquitectura
-t:a Multiplicador NxN
-t:b 2 blocos acumuladores e 2 MCM (somas e deslocamentos)
-t:c 1 bloco acumulador e 2 MCM (somas e deslocamentos)
-t:d 1 bloco acumulador e 1 MCM (somas e deslocamentos)
-t:e Multiplicador NxM
-t:f Com maximização da partilha dos multiplicadores NxM
-t:g Com implementação de metade do filtro com multiplicadores NxM
-t:h Com partilha dos somadores (algoritmo heurístico de procura)
-t:i Com partilha dos somadores (programação linear)
No entanto, se na linha de comandos não tiver a opção para o tipo de arquitectura, a
ferramenta toma por defeito a opção –t:a, ou seja a arquitectura com multiplicador NxN.
Outro dos parâmetros que se pode configurar é o número de bits do sinal de entrada das
arquitecturas. Na linha de comandos, a opção correspondente é –b:número de bits. Por
omissão, a ferramenta considera a opção –b:8, assumindo um sinal de entrada de 8 bits. O
número de bits pode variar consoante a opção tomada pelo utilizador. Neste trabalho só foram
utilizados 3 números de bit para o sinal de entrada, os 8 bits, 16 bits e 32 bits.
Os dois parâmetros explicados anteriormente são os mais importantes para o estudo das
arquitecturas FIR em paralelo. Permite-nos alterar a arquitectura em estudo e a dimensão do
sinal de entrada. Com somente estes dois parâmetros é possível fazer um estudo detalhado
sobre todas as arquitecturas FIR estudadas neste trabalho. No entanto, existem mais
parâmetros que podem ser explorados.
Na geração de VHDL sintetizável, existem várias formas de implementar determinados
componentes. Neste caso, existem muitas maneiras de implementar multiplicadores ou
somadores nas arquitecturas FIR. De modo a possibilitar o estudo do desempenho dos filtros
64
com diversos tipos de estruturas de multiplicadores ou somadores, existem dois parâmetros
que permite escolher o componente a implementar nas arquitecturas.
Multiplicadores:
Nas arquitecturas FIR com multiplicadores, consideramos dois tipos de multiplicadores, o NxN
e o NXM. Nos dois casos, é possível instanciar arquitecturas especificas de multiplicador se
forem cumpridas as especificações dos componentes, ou seja, os multiplicadores a
implementar têm de ter o mesmo número e nome dos sinais de entrada e saída. A opção para
seleccionar outro tipo de multiplicador é a –m: nome do multiplicador. Por omissão, no
caso do multiplicador NxN será a opção –m:generic_mul, enquanto no multiplicador NxM
será -m:mult_nxm.
As especificações das entidades VHDL que cada multiplicador tem de cumprir podem ser
observadas nas Figura 5.2 e Figura 5.3.
Figura 5.2 – Especificação do multiplicador genérico NxN.
Figura 5.3 – Especificação do multiplicador genérico NxM.
Somadores e Subtractores:
O caso dos somadores é diferente dos multiplicadores. Enquanto os multiplicadores só são
utilizados no bloco MCM, os somadores são usados em toda as estrutura das arquitecturas
FIR. Não é possível utilizar dois tipos diferentes de estruturas de somadores ou subtractores na
mesma arquitectura, ou seja, o tipo de somador do bloco MCM é do mesmo tipo do bloco
acumulador. A opção para instanciar outro tipo de somador é –a:nome do somador e para o
subtractor é –s:nome do subtractor. Por omissão de alguma das anteriores opções, será
usada a –a:adder e –s:subb.
entity generic_mul is
generic(SIZE: integer := 64);
Port (A : in signed (SIZE - 1 downto 0);
B : in signed (SIZE - 1 downto 0);
C : out signed (2*SIZE - 1 downto 0)
);
end generic_mul;
entity mult_nxm is
generic(SIZE1,SIZE2: integer := 64);
Port (A : in signed (SIZE1 - 1 downto 0);
B : in signed (SIZE2 - 1 downto 0);
C : out signed (SIZE1+SIZE2 - 1 downto 0)
);
end mult_nxm;
65
Nas seguintes figuras, podemos observar as especificações das entidades VHDL para o
somador e subtractor genérico.
Figura 5.4 – Especificação do somador genérico.
Figura 5.5 – Especificação do subtractor genérico.
Outros Elementos:
Nas arquitecturas existem mais elementos fundamentais para o seu bom funcionamento, mas
que não foram consideradas para serem alterados por esta ferramenta. Estão nesta situação
os registos, somadores/subtractores, multiplexeres e o negador de sinal. Nestes casos, serão
utilizados componentes genéricos, cujas entidades VHDL estão apresentadas na Figura 5.6 à
Figura 5.9.
Figura 5.6 – Especificação do somador/subtractor genérico.
entity adder is
generic(SIZE: integer :=64);
Port(A : in signed (SIZE - 1 downto 0);
B : in signed (SIZE - 1 downto 0);
C : out signed (SIZE - 1 downto 0)
);
end adder;
entity subb is
generic(SIZE: integer :=64);
Port(A : in signed (SIZE - 1 downto 0);
B : in signed (SIZE - 1 downto 0);
C : out signed (SIZE - 1 downto 0)
);
end subb;
entity adder_subb is
generic(SIZE: integer :=64); -- top bit
port (mode: in std_logic;
A : in signed (SIZE-1 downto 0);
B : in signed (SIZE-1 downto 0);
Y : out signed (SIZE-1 downto 0)
);
end adder_subb;
66
Figura 5.7 - Especificação do registo genérico.
Figura 5.8 – Especificação do multiplexer genérico.
Figura 5.9 – Especificação do negador de sinal genérico.
O último parâmetro configurável da ferramenta que falta explicar é a forma de descrever as
operações no bloco MCM das arquitecturas FIR. Na linguagem VHDL a arquitectura dos
componentes pode ser descrita a nível estrutural ou comportamental. Neste trabalho o bloco
acumulador é sempre descrito ao nível estrutural. Podemos ver na Figura 5.10 um pequeno
excerto da instanciação dos registos e somadores dos filtros de teste 6 e 7.
entity reg_generic is
generic(SIZE : integer := 64); -- top bit
port (clk : in std_logic;
rst : in std_logic;
input : in signed (SIZE-1 downto 0);
output : out signed (SIZE-1 downto 0)
);
end reg_generic;
entity mux is
generic(SIZE: integer :=64); -- top bit
port (mode: in std_logic;
A : in signed (SIZE-1 downto 0);
B : in signed (SIZE-1 downto 0);
Y : out signed (SIZE-1 downto 0)
);
end mux;
entity inverter is
generic (N:integer:=64);
Port (A : in signed (N-1 downto 0);
B : out signed (N-1 downto 0)
);
end inverter;
67
Figura 5.10 – Excerto do bloco acumulador para os filtros 6 e 7 ao nível do bloco.
No bloco MCM os multiplicadores, somadores ou subtractores, podem ser representados ao
nível estrutural ou comportamental. A opção –c: {0,1} permite escolher o nível da
implementação destes componentes. Se –c:0, estamos ao nível estrutural, onde as opções –
m, -a e –s são válidas. Na Figura 5.11 temos um exemplo da instanciação de um somador e
dois tipos de multiplicadores no nível estrutural.
Figura 5.11 – Exemplo do nível do bloco para um somador e para os dois tipos de multiplicadores (NxN e
NxM).
Quando é seleccionada a opção –c:1, estamos no nível comportamental, em que são
descartadas as opções definem o tipo de multiplicador (-m), somador (-a) e subtractor (–s).
Neste nível, os dois tipos de multiplicadores (NxN e NxM) são interpretados como sendo o
mesmo componente. Na Figura 5.12 temos um exemplo de um somador e dois tipos de
multiplicadores descritos ao nível comportamental.
Figura 5.12 – Exemplo do nível algoritmo para um somador e para os dois tipos de multiplicadores (NxN
e NxM).
Por omissão, as arquitecturas são desenvolvidas com a opção –c:0, garantindo a
configuração total da mesma. O fluxograma da Figura 5.13 descreve o funcionamento da
ferramenta dependendo das opções tomadas na linha de comando.
(……)
Reg_13: reg_generic generic map(17) port map(clk,reset,in13_217,out13_217);
ADDER_14: adder generic map(17) port map(out13_217,mult14_377,in14_377);
Reg_14: reg_generic generic map(17) port map(clk,reset,in14_377,out14_377);
ADDER_15: adder generic map(17) port map(out14_377,mult15_148,in15_148);
(……)
a_3 <= resize(s1 & "0",10);
b_3 <= resize(s1 ,10);
ADDER_3: adder generic map(10) port map(a_3,b_3,s3);
NxN: generic_mul generic map(8) port map (sig_in,"00000011",s3);
NxM: mult_nxm generic map(8,3) port map (sig_in,"011",s3);
a_3 <= resize(s1 & "0",10);
b_3 <= resize(s1 ,10);
s3 <= a_3 + b_3;
s3 <= sig_in * "00000011"; -- NxN
s3 <= sig_in * "011"; -- NxM
69
CAPÍTULO 6
6. ARQUITECTURAS COM MULTIPLICADORES VS
ARQUITECTURAS COM SOMADORES
Neste capítulo vamos comparar as melhores arquitecturas FIR com multiplicadores e com
somadores, subtractores e deslocamentos estudadas neste trabalho. Vamos comparar a
melhor arquitectura com multiplicadores e a melhor arquitectura com somadores, subtractores
e deslocamentos para cada parâmetro (área ocupada, potência consumida e tempo de atraso).
Serão apresentados os resultados dos filtros completos (contendo o bloco MCM e o bloco
acumulador) para um sinal de entrada de 32 bits.
Serão apresentadas tabelas com todas as arquitecturas estudadas neste trabalho, onde será
possível obter uma classificação dos resultados globais para cada parâmetro e sinal de
entrada.
6.1. MELHOR ÁREA
Nesta secção iremos comparar as arquitecturas que ocupam as menores áreas para os filtros
usados como benchmarks utilizando multiplicadores e utilizando somadores, subtractores e
deslocamentos.
Figura 6.1 – Gráfico com as arquitecturas com a área menor.
4.2 4.1
7.8
3.7 2.9
5.9
0
1
2
3
4
5
6
7
8
Fir01 e Fir02 Fir06 e Fir07 Fir05 e Fir09
Milh
õe
s
Área (µm2)
Multiplicador c/ mux (8 bits) 1 MCM ADD C/ MUX ILP
70
A Figura 6.1 compara as áreas ocupadas por duas arquitecturas, uma que maximiza a partilha
dos multiplicadores e outra que partilha os somadores usando a programação linear. Como
seria de esperar, a arquitectura que utiliza somadores ocupa uma área menor que a
arquitectura com multiplicadores. Seria esperado uma diferença maior entre as duas
arquitecturas, mas como a arquitectura com multiplicadores foi implementada com um
multiplicador dimensionado para o tamanho ideal (NxM), conseguiu-se reduzir a área desta
arquitectura. Apesar dos multiplicadores ficarem mais optimizados, a área dos mesmos é
sempre superior à área dos somadores.
6.2. MELHOR POTÊNCIA
Figura 6.2 – Gráfico com as arquitecturas com a potência menor
A Figura 6.2 compara a potência necessária das duas arquitecturas, uma que maximiza a
partilha dos multiplicadores e outra que partilha os somadores usando a programação linear.
Ao diminuir o número de operadores nas arquitecturas, conseguiu-se reduzir a potência em
relação às outras arquitecturas. As duas arquitecturas que ocupam menos área, também são
as que precisam de uma menor potência. A arquitectura com somadores tem uma potência
menor que a arquitectura com multiplicadores, reduzindo o consumo entre os 14% e 20%.
Até este momento, conseguimos comprovar que a arquitectura com somadores usando a
programação linear consome menos potência e ocupa menos área que a melhor arquitectura
com multiplicadores (com maximização da partilha dos multiplicadores).
316 345
673
271 296
545
00
100
200
300
400
500
600
700
Fir01 e Fir02 Fir06 e Fir07 Fir05 e Fir09
Potência (mW)
Multiplicador c/ mux (8 bits) 1 MCM ADD C/ MUX ILP
71
6.3. MELHOR TEMPO DE ATRASO
Figura 6.3– Gráfico com as arquitecturas com o tempo de atraso menor
Como seria de esperar, as arquitecturas que partilham os operadores são as que ocupam
menos área e consomem menos potência, mas não apresentam o menor tempo de atraso,
porque ao introduzir os multiplexeres para partilhar os operadores, aumenta-se o caminho
crítico. A Figura 6.3 apresenta as arquitecturas que têm o menor tempo de atraso, a
arquitectura com multiplicadores NxM e a arquitectura com somadores que contem dois blocos
MCM. A arquitectura com somadores melhora o tempo de atraso entre os 1% e os 7%.
6.4. CLASSIFICAÇÃO E RESUMO DOS RESULTADOS
Na secção anterior, foi apresentado a comparação das melhores arquitecturas para os pares
de filtros. Nesta secção vamos apresentar os resultados globais dos pares de filtros utilizados
neste trabalho para todas as arquitecturas. Para cada tamanho do sinal de entrada, vão ser
apresentados os resultados da área, potência e tempo de atraso. Os resultados médios de
cada arquitectura serão apresentados em percentagem em relação para cada um dos
parâmetros face à arquitectura que em média apresenta piores resultados. Na Tabela 6.1
apresentam-se os resultados das arquitecturas para um sinal de entrada de 8 bits onde a
coluna Total é a média da percentagem Média de cada um dos parâmetros.
23.5 24.4 26.2
21.8 24.1 24.7
00030609121518212427
Fir01 e Fir02 Fir06 e Fir07 Fir05 e Fir09
Tempo de atraso (ns)
Multiplicador NxM 2 MCM 1 Bloco registo
72
Tabela 6.1 – Classificação e resumo dos filtros de um sinal de entrada de 8 bits.
Sinal de entrada de 8 bits
Arquitectura FIR01 e FIR 02 FIR05 e FIR 09 FIR06 e FIR 07 Média
Total Área Potência Tempo Área Potência Tempo Área Potência Tempo Área Potência Tempo
Multiplicador NxN
73% 64% 91% 92% 74% 74% 91% 78% 73% 86% 73% 78% 79%
Multiplicador NxM
71% 61% 90% 86% 66% 74% 85% 79% 73% 82% 68% 78% 76%
Multiplicador c/ mux
71% 61% 91% 83% 62% 77% 80% 70% 76% 79% 64% 81% 74%
Multiplicador c/ mux v2
84% 67% 95% 89% 75% 71% 80% 67% 82% 85% 71% 81% 79%
2 MCM 2 Blocos registos
100% 100% 96% 100% 100% 88% 100% 100% 95% 100% 100% 93% 98%
2 MCM 1 Bloco registo
74% 79% 95% 78% 70% 85% 73% 77% 98% 76% 73% 92% 80%
1 MCM 1 Bloco registo
65% 56% 100% 70% 54% 87% 64% 62% 94% 67% 56% 93% 72%
1 MCM ADD C/ MUX
65% 66% 99% 71% 56% 100% 64% 62% 100% 67% 60% 100% 76%
1 MCM ADD C/ MUX ILP
65% 66% 99% 70% 54% 94% 64% 62% 94% 67% 59% 96% 74%
União 2 MCM 65% 56% 100% 70% 54% 85% 64% 63% 91% 67% 57% 91% 71%
As arquitecturas com multiplicadores apresentam piores resultados em relação às arquitecturas
com somadores, na área e na potência para um sinal de entrada de 8 bits. No entanto, no
global, são as arquitecturas mais rápidas. A arquitectura com somadores, que contem 2 blocos
MCM e 2 blocos acumuladores é a que apresenta piores resultados na área e potência, muito
por culpa dos 2 blocos acumuladores. No global, é a pior arquitectura para um sinal de entrada
de 8 bits. A arquitectura mais lenta é a que partilha os somadores usando um algoritmo
heurístico. A arquitectura que apresenta melhores resultados é a união dos 2 blocos MCM,
arquitectura muito semelhante à de 1 bloco MCM e 1 bloco de registos que apresenta o melhor
resultado para a potência.
Tabela 6.2 – Classificação e resumo dos filtros de um sinal de entrada de 16 bits.
Sinal de entrada de 16 bits
Arquitectura
FIR01 e FIR 02 FIR05 e FIR 09 FIR06 e FIR 07 Média
Total Área Potência Tempo Área Potência Tempo Área Potência Tempo Área Potência Tempo
Multiplicador NxN
81% 77% 91% 100% 97% 91% 100% 100% 89% 100% 98% 93% 97%
Multiplicador NxM
73% 74% 91% 82% 72% 91% 79% 76% 88% 83% 77% 93% 85%
Multiplicador c/ mux
73% 82% 89% 80% 66% 93% 75% 64% 86% 81% 73% 92% 82%
Multiplicador c/ mux v2
87% 96% 78% 89% 79% 89% 76% 59% 85% 89% 81% 87% 86%
2 MCM 2 Blocos registos
100% 100% 91% 90% 100% 91% 85% 83% 95% 96% 100% 95% 97%
2 MCM 1 Bloco registo
74% 77% 91% 70% 69% 95% 63% 65% 100% 73% 73% 98% 82%
1 MCM 1 Bloco registo
66% 70% 100% 63% 57% 95% 56% 52% 93% 65% 61% 99% 75%
1 MCM ADD C/ MUX
66% 66% 94% 63% 57% 100% 56% 52% 97% 65% 61% 100% 75%
1 MCM ADD C/ MUX ILP
66% 66% 94% 63% 56% 99% 56% 53% 92% 65% 60% 98% 75%
Uniao 2 MCM 66% 57% 93% 63% 56% 97% 56% 53% 90% 65% 58% 97% 73%
73
Na Tabela 6.2 podemos observar os resultados das arquitecturas para um sinal de entrada de
16 bits. As arquitecturas, uma com multiplicadores NxN e a com somadores (2 blocos MCM e 2
blocos acumuladores) apresentam os piores resultados globais para um sinal de entrada de 16
bits. As arquitecturas com multiplicadores continuam a apresentar melhores resultados no
tempo de atraso em relação às arquitecturas com somadores. A arquitectura mais lenta
continua a ser a arquitectura que partilha os somadores com um algoritmo heurístico, enquanto
a mais rápida é a arquitectura com multiplicadores que implementa metade do filtro. A
arquitectura com 2 blocos MCM e 2 blocos acumuladores tem os piores resultados de potência,
enquanto a arquitectura da união dos 2 blocos MCM tem a melhor potência. A melhor
arquitectura nos resultados globais é a da união dos 2 blocos MCM.
Tabela 6.3 – Classificação e resumo dos filtros de um sinal de entrada de 32 bits.
Sinal de entrada de 32 bits
Arquitectura
FIR01 e FIR 02 FIR05 e FIR 09 FIR06 e FIR 07 Média
Total Área Potência Tempo Área Potência Tempo Área Potência Tempo Área Potência Tempo
Multiplicador NxN
98% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100% 100%
Multiplicador NxM
73% 69% 77% 55% 49% 79% 49% 36% 75% 57% 48% 77% 61%
Multiplicador c/ mux
73% 64% 80% 54% 44% 88% 47% 30% 84% 56% 42% 84% 61%
Multiplicador c/ mux v2
89% 93% 84% 60% 55% 86% 48% 31% 85% 63% 52% 85% 67%
2 MCM 2 Blocos registos
100% 71% 74% 57% 39% 75% 50% 40% 73% 64% 44% 74% 61%
2 MCM 1 Bloco registo
73% 69% 72% 45% 39% 75% 37% 31% 74% 48% 41% 74% 54%
1 MCM 1 Bloco registo
66% 56% 77% 41% 35% 76% 33% 26% 74% 44% 35% 76% 51%
1 MCM ADD C/ MUX
65% 54% 76% 41% 35% 91% 33% 25% 79% 43% 35% 82% 54%
1 MCM ADD C/ MUX ILP
65% 55% 76% 41% 35% 86% 33% 26% 82% 43% 35% 82% 53%
Uniao 2 MCM 66% 56% 80% 41% 35% 77% 33% 26% 74% 43% 35% 77% 52%
Com um sinal de entrada de 32 bits, as diferenças entre as arquitecturas são mais notórias,
como podemos observar na Tabela 6.3. A arquitectura com multiplicadores NxN apresenta os
piores resultados em todos os campos, atingindo um máximo de 100% no total. As
arquitecturas com 1 bloco MCM são as que têm os valores mais baixo de área e de potência,
mas as que contêm 2 blocos MCM são as mais rápidas. Para um sinal de entrada de 32 bits, a
arquitectura com 1 bloco MCM e 1 bloco acumulador apresenta melhores resultados que as
outras arquitecturas.
75
CAPÍTULO 7
7. CONCLUSÕES E TRABALHO FUTURO
7.1. CONCLUSÃO
No âmbito do estudo de filtros digitais FIR, existe um grande leque de arquitecturas para a sua
implementação, umas no sentido de reduzir a área, outras a potência e também o tempo de
atraso. No decorrer desta dissertação foram estudadas dez possíveis arquitecturas paralelas
para a implementação de filtros digitais FIR na forma transposta, com duas configurações
diferentes, a que correspondem duas respostas em frequência diferentes. As arquitecturas são
compostas por dois blocos, o bloco MCM, onde ocorrem as multiplicações dos coeficientes
pelo sinal de entrada, e o bloco acumulador, onde são guardados e somados os valores
provenientes do bloco MCM. O que distingue entre as dez arquitecturas estudadas neste
trabalho é o bloco MCM. Assim, podemos dividir o bloco MCM em 2 grupos, os que utilizam
multiplicadores e os que utilizam somadores, subtractores e deslocamentos.
As arquitecturas que utilizam multiplicadores genéricos (NxN) no bloco MCM são as que
ocupam uma maior área e potência, independentemente do tamanho do sinal de entrada. Ao
trocar o multiplicador NxN por um NxM, conseguimos diminuir a área, potência e tempo de
atraso. Apesar de os multiplicadores NxN estarem mais optimizados, concluímos que a
utilização do multiplicador NxM nas arquitecturas FIR permite melhorar em todos os
parâmetros. Com este princípio, foram elaboradas 3 arquitecturas utilizando este multiplicador,
visto que traz mais vantagens. Também foi possível explorar o conceito de partilha em que se
maximiza a partilha dos operadores (multiplicadores), conseguindo reduzir a área e potência,
mas piorando o tempo de atraso. Outra das arquitecturas em que ocorre a partilha dos
multiplicadores, mas diferente da anterior, porque esta implementa metade do filtro,
conseguimos melhorar a frequência, mas com prejuízo na área e na potência. Entre as quatro
arquitecturas com multiplicadores, a que ocupa menos área e tem menos potência é a
arquitectura que maximiza a partilha dos multiplicadores NxM. A arquitectura mais rápida é
quando usamos multiplicadores NxM. Globalmente, podemos concluir que a arquitectura que
maximiza a partilha dos multiplicadores, é a melhor arquitectura com multiplicadores.
As restantes arquitecturas os multiplicadores são substituídos por somadores, subtractores e
deslocamentos. Existem muitos algoritmos que permitem obter a partir dos coeficientes dos
filtros todas as operações a realizar. Começamos com uma arquitectura com blocos
duplicados, ou seja, dois blocos MCM e dois blocos acumuladores, uma arquitectura com
claras desvantagens na área ocupada e potência consumida, mas conseguindo ser a
arquitectura mais rápida. A arquitectura seguinte estudada foi numa tentativa de melhorar a
76
área, ficando uma arquitectura com dois blocos MCM e um bloco acumulador. Foi possível
melhorar a área, mas também a potência, prejudicando ligeiramente a frequência máxima de
funcionamento. As restantes arquitecturas são muito parecidas, em que todas têm um bloco
MCM e um bloco acumulador. Existem duas arquitecturas muito semelhantes, em que a
diferença consiste na técnica utilizada para o cálculo dos termos parciais dos coeficientes. Uma
delas, em que os coeficientes dos dois filtros são calculados independentemente e a outra em
que consideramos os coeficientes dos dois filtros como um só conjunto, levando a uma
optimização diferente da anterior em alguns casos. Os resultados das duas arquitecturas são
muito semelhantes, mas a que provém da união dos coeficientes dos dois filtros apresenta
melhores resultados na potência e na frequência. Na área, os resultados são muito idênticos,
porque o número de operações implementadas no bloco MCM é igual, seja qual for a técnica.
Com as outras arquitecturas fomos explorar a partilha dos operadores (somadores e
subtractores). Para uma das arquitecturas foi criado um algoritmo heurístico, que maximiza a
partilha dos operadores e a outra arquitectura é obtida utilizado programação linear, através da
interacção com o programa LP_SOLVE. Estas duas arquitecturas pouco diminuem a área
ocupada do filtro e a sua potência, mas apresentam tempos de atraso maiores. Note-se que, a
arquitectura que utiliza a programação linear é a que ocupa menor área nas arquitecturas com
somadores. Nas arquitecturas com somadores a que precisa de menos potência é a da união
dos dois MCM, ao passo que a arquitectura com dois blocos MCM e dois blocos acumuladores
é a mais rápida. Em geral, a arquitectura da união dos dois MCM é a melhor arquitectura.
O que também chamou a atenção foi as arquitecturas que partilham os operadores. Se
usarmos os multiplicadores, a arquitectura que maximiza a partilha dos multiplicadores
conseguimos reduzir a área até aos 3% (em relação há arquitectura com multiplicadores NxM),
em vez dos 0.4% da arquitectura que utiliza a programação linear (em relação à arquitectura
com 1 bloco MCM e 1 bloco acumulador). Note-se que a maior redução é obtida quando
substituímos os multiplicadores por somadores e subtractores, com valores médios de 18.4%.
Na potência também ocorre a mesma situação, com a arquitectura com multiplicadores a atingir
uma redução de 9% e a com somadores a ficar pelos 2%. É verdade que a área ocupada e
potência de um simples multiplicador é superior a um simples somador, mas é mais vantajoso
partilhar um multiplicador que um somador.
Uma possível conclusão para este trabalho, se queremos uma arquitectura FIR com 2 filtros
com pouca área e baixa potência, temos de optar pelas arquitecturas com somadores,
subtractores e deslocamentos com um bloco MCM e um bloco acumulador, porque conseguem
reduções de 18.4% (área) e 15.8% (potência) em relação à melhor arquitectura com
multiplicadores (com maximização da partilha dos multiplicadores). No entanto, as arquitecturas
com somadores (1 bloco MCM e 1 bloco acumulador), para tamanhos pequenos do sinal de
entrada (8 e 16 bits) são mais lentas que as que usam multiplicadores, conseguindo estes
reduzirem o tempo de atraso em 16%. Para um sinal de entrada de 32 bits, teremos de recorrer
às arquitecturas com somadores com 2 blocos MCM para serem mais rápidas, reduzindo 3%
no tempo de atraso que as arquitecturas com multiplicadores.
77
Globalmente podem dizer que a arquitectura mais equilibrada em termos dos parâmetros
considerados (área, potência e tempo de atraso) é a arquitectura com somadores com um
bloco MCM e acumulador proveniente da união dos coeficientes. No entanto, se para um
projecto onde um dos parâmetros for mais importante que os restantes, existem arquitecturas
com melhores características.
7.2. TRABALHO FUTURO
No desenvolvimento deste trabalho foram utilizados componentes genéricos nas arquitecturas,
como somadores, subtractores e multiplicadores. Seria interessante estudar o comportamento
das arquitecturas dos filtros utilizando outro tipo de estrutura para os mesmos componentes.
A arquitectura que maximiza os multiplicadores foi realizada ordenando os coeficientes de
ordem crescente e agrupando sucessivamente. Tendo em conta que o multiplexer que escolhe
o operador a multiplicar, depende dos coeficientes um trabalho futuro seria utilizar a
programação linear para minimizar o tamanho dos multiplexeres, ou seja, agrupar os
coeficientes mais parecidos.
Outra ideia seria alterar o algoritmo heurístico de procura. Neste trabalho o algoritmo heurístico
foi dividido em 6 etapas para emparelhar o máximo possível de operadores. No entanto,
existem casos que é desvantajoso partilhar os operadores, por exemplo quando substituímos
um operador por dois multiplexeres, a área ocupada pode ser superior à área ocupada pelos
dois operadores. Assim, limitando o algoritmo heurístico à procura de pares de coeficientes que
só necessitem de um multiplexer é possível melhorar os resultados.
79
REFERÊNCIAS
[1] Hunsoo Choo, Khurram Muhammad, and Kaushik Roy, “Reduction of Digital Filters Using
Shift Inclusive Differential Coefficients”, IEEE TRANSACTIONS ON SIGNAL
PROCESSING, VOL. 52, NO. 6, JUNE 2004.
[2] Paulo Alexandre C. Marques, “Introdução à Filtragem Adaptativa”, Processamento Digital
de Sinal II, Instituto Superior de Engenharia de Lisboa.
[3] Kei-Yong Khoo, Zhan Yu, Alan N. Willson, A.N., Jr. “Design of optimal hybrid form FIR
filter”, The 2001 IEEE International Symposium on Circuits and Systems, 2001, ISCAS
2001, VOL. 2, 621-624, May 2001.
[4] Dempster, A. G. and MacLeod, M. “Digital filter design using subexpression elimination
and all signed-digit representations”, Proceedings of the 2004 International Symposium on
Circuits and Systems, 2004, ISCAS 2004, VOL. 3, III-169-72, 23-26 May 2004.
[5] L. Aksoy, E. Costa, P. Flores, and J. Monteiro, “Exact and Approximate Algorithms for the
Optimization of Area and Delay in Multiple Constant Multiplications,” IEEE Transactions
on Computer-Aided Design of Integrated Circuits and Systems, VOL. 27, NO. 6, JUNE
2008.
[6] Gustafsson, O., Dempster, A. G., and Wanhammer, L. “Extended results for minimum-
adder constant integer multipliers”, IEEE International Symposium on Circuits and
Systems, 2002, ISCAS 2002, VOL. 1, 73-76, 2002.
[7] Hartley, R I. "Subexpression sharing in filters using canonic signed digit multipliers”, IEEE
Transactions on Circuits and-PW Systems II, Vol. 43, No. 10, (1996), 677-688.
[8] Aksoy, L; Costa, E.; Flores, P,; Monteiro, J.; “Optimization of Area under a Delay
Constraint in Digital Filter Synthesis Using SAT-Based Integer Linear Programming”,
Design Automation Conference, 2006 43rd ACM/IEEE, pages 669-674.
[9] In-Cheol Park; Hyeong-Ju Kang, “Digital Filter Synthesis Based on an Algorithm to
Generate All Minimal Signed Digit Representations”, IEEE Transactions on Computer-
Aided Design of Integrated Circuits and Systems, Vol. 21, No. 12 (Dec 2002), 1525-1529.
[10] Levent Aksoy, Eduardo Costa, Paulo Flores e José Monteiro, “Design of Low-Power
Multiple Constant Multiplications Using Low-Complexity Minimum Depth Operations”,
Proceedings of the 21st edition of the great lakes symposium on Great lakes symposium on
VLSI, 79-84, 2011.
[11] Eduardo da Costa, Paulo Flores e José Monteiro, “Maximal Sharing of Partial Terms in
MCM under Minimal Signed Digit Representation” Proceedings of the 2005 European
Conference on Circuit Theory and Design, 2005, Vol. 2 (Sept 2005), 221-224.
[12] Levent Aksoy, Eduardo Costa, Paulo Flores e José Monteiro, “Minimum Number of
Operations under a General Number Representation for Digital Filter Synthesis”, 18th
European Conference on Circuit Theory and Design, 2007, ECCTD 2007 , 252-255, Aug
2007.
80
ANEXO A
Tabelas para os resultados de síntese de área, potência e tempo de atraso para as diferentes
arquitecturas.
A – RESULTADOS PARA OS FILTROS FIR01 E FIR02
Tabela A.1 - Tabela com a área, potência e tempo de atraso para todas as arquitecturas para um sinal
de entrada de 8 bits.
Tipo Arquitectura Total Bloco MCM
Área (µm2) Pot. (mW) C. Crítico (ns) Área (µm2) Pot. (mW) C. Crítico (ns)
Multiplicador NxN 1561590 109.9 14.8 479925 44.7 9.8
Multiplicador NxM 1532414 105.3 14.7 450657 41.2 9.8
Multiplicador c/ mux 1519234 104.7 14.8 438304 41.4 12.4
Multiplicador c/ mux v2 1796446 116.3 15.4 641323 47.7 11.4
2 MCM 2 Blocos registos 2148052 172.5 15.6 289765 43.1 12.9
2 MCM 1 Bloco registo 1581211 135.8 15.4 502933 64.3 13.2
1 MCM 1 Bloco registo 1403605 96.0 16.3 323884 37.7 12.1
1 MCM ADD C/ MUX 1395970 113.8 16.2 316349 36.0 12.2
1 MCM ADD C/ MUX ILP 1395852 113.7 16.1 316331 36.0 12.2
Uniao 2 MCM 1404332 95.8 16.2 324638 37.7 12.7
Tabela A.2 - Tabela com a área, potência e tempo de atraso para todas as arquitecturas para um sinal
de entrada de 16 bits.
Tipo Arquitectura Total Bloco MCM
Área (µm2) Pot. (mW) C. Crítico (ns) Área (µm2) Pot. (mW) C. Crítico (ns)
Multiplicador NxN 2678853 208.4 21.2 1019151 97.1 15.7
Multiplicador NxM 2419147 197.7 21.2 760745 76.5 15.7
Multiplicador c/ mux 2405498 221.3 20.6 748441 76.4 17.7
Multiplicador c/ mux v2 2866936 257.0 18.0 1138800 89.6 15.4
2 MCM 2 Blocos registos 3306178 269.0 21.0 469097 73.9 17.6
2 MCM 1 Bloco registo 2454915 208.1 21.0 804459 107.8 17.7
1 MCM 1 Bloco registo 2191128 187.1 23.2 537779 67.5 17.2
1 MCM ADD C/ MUX 2178178 178.3 21.8 525105 64.5 17.7
1 MCM ADD C/ MUX ILP 2177909 178.5 21.8 525132 64.5 17.7
Uniao 2 MCM 2190710 154.5 21.6 537644 67.3 16.8
81
Tabela A.3 - Tabela com a área, potência e tempo de atraso para todas as arquitecturas para um sinal
de entrada de 32 bits.
Tipo Arquitectura Total Bloco MCM
Área (µm2) Pot. (mW) C. Crítico (ns) Área (µm2) Pot. (mW) C. Crítico (ns)
Multiplicador NxN
5592536 495.2 30.4 2711660 251.7 27.1
Multiplicador NxM
4188408 340.1 23.5 1373890 151.1 18.6
Multiplicador c/ mux
4177199 316.4 24.4 1362583 150.0 21.8
Multiplicador c/ mux v2
5108839 459.0 25.5 2142144 177.2 23.7
2 MCM 2 Blocos registos
5727190 353.3 22.5 824427 169.4 19.1
2 MCM 1 Bloco registo
4192450 339.3 21.8 1390461 203.5 19.4
1 MCM 1 Bloco registo
3766902 277.1 23.5 962200 132.0 19.0
1 MCM ADD C/ MUX
3743896 269.7 23.2 938710 126.1 18.2
1 MCM ADD C/ MUX ILP
3743419 271.3 23.2 938700 126.1 18.2
Uniao 2 MCM
3766704 277.7 24.2 963009 131.9 18.4
ANEXO B
B – RESULTADOS PARA OS FILTROS FIR06 E FIR07
Tabela B.1 - Tabela com a área, potência e tempo de atraso para todas as arquitecturas para um sinal
de entrada de 8 bits.
Tipo Arquitectura Total Bloco MCM
Área (µm2) Pot. (mW) C. Crítico (ns) Área (µm2) Pot. (mW) C. Crítico (ns)
Multiplicador NxN
1687299 139.5 15.2 904769 78.7 10.9
Multiplicador NxM
1584612 141.8 15.2 816699 61.2 10.2
Multiplicador c/ mux
1489383 126.1 15.9 726003 54.8 14.6
Multiplicador c/ mux v2
1493963 120.6 17.1 728358 53.7 12.9
2 MCM 2 Blocos registos
1863799 179.6 19.9 412851 53.7 17.9
2 MCM 1 Bloco registo
1369732 137.5 20.5 609532 75.0 18.4
1 MCM 1 Bloco registo
1190379 111.0 19.6 427308 43.6 17.2
1 MCM ADD C/ MUX
1197849 112.1 20.9 434641 42.5 18.1
1 MCM ADD C/ MUX ILP
1194435 111.5 19.7 431711 41.6 17.2
Uniao 2 MCM
1194780 113.5 18.9 431346 45.0 16.3
82
Tabela B.2 - Tabela com a área, potência e tempo de atraso para todas as arquitecturas para um sinal
de entrada de 16 bits.
Tipo Arquitectura Total Bloco MCM
Área (µm2) Pot. (mW) C. Crítico (ns) Área (µm2) Pot. (mW) C. Crítico (ns)
Multiplicador NxN
3157616 335.5 21.1 2062560 165.9 15.4
Multiplicador NxM
2486977 254.7 20.8 1392808 130.2 14.4
Multiplicador c/ mux
2353535 215.3 20.4 1267222 109.9 17.8
Multiplicador c/ mux v2
2395119 199.3 20.2 1307139 105.3 16.9
2 MCM 2 Blocos registos
2686634 277.1 22.5 641000 89.8 17.0
2 MCM 1 Bloco registo
2002002 217.8 23.6 923701 124.5 17.5
1 MCM 1 Bloco registo
1752804 174.6 21.9 671506 77.5 16.2
1 MCM ADD C/ MUX
1764141 175.3 22.8 676388 89.6 18.1
1 MCM ADD C/ MUX ILP
1764141 176.6 21.7 681520 77.3 18.5
Uniao 2 MCM
1758594 179.1 21.25 677406 81.6 16.7
Tabela B.3 - Tabela com a área, potência e tempo de atraso para todas as arquitecturas para um sinal
de entrada de 32 bits.
Tipo Arquitectura Total Bloco MCM
Área (µm2) Pot. (mW) C. Crítico (ns) Área (µm2) Pot. (mW) C. Crítico (ns)
Multiplicador NxN
8710955 1143.9 32.4 6940415 780.1 26.9
Multiplicador NxM
4265400 412.1 24.4 2553770 234.0 20.4
Multiplicador c/ mux
4051933 345.2 27.3 2353794 215.7 25.3
Multiplicador c/ mux v2
4171198 356.7 27.6 2468922 202.0 23.4
2 MCM 2 Blocos registos
4363299 452.7 23.7 1095425 162.1 22.0
2 MCM 1 Bloco registo
3233793 359.2 24.1 1536557 225.0 22.0
1 MCM 1 Bloco registo
2847030 295.7 24.0 1147224 143.4 21.4
1 MCM ADD C/ MUX
2843721 290.7 25.8 1139820 165.0 23.3
1 MCM ADD C/ MUX ILP
2860105 296.3 26.7 1155668 148.1 23.8
Uniao 2 MCM
2856310 299.7 24.1 1156992 165.1 19.7
83
ANEXO C
C – RESULTADOS PARA OS FILTROS FIR05 E FIR09
Tabela C.1 - Tabela com a área, potência e tempo de atraso para todas as arquitecturas para um sinal
de entrada de 8 bits.
Tipo Arquitectura Total Bloco MCM
Área (µm2) Pot. (mW) C. Crítico (ns) Área (µm2) Pot. (mW) C. Crítico (ns)
Multiplicador NxN
3309299 272.5 17.6 1641500 154.4 13.9
Multiplicador NxM
3111163 242.3 17.6 1459097 122.3 11.6
Multiplicador c/ mux
3004108 225.6 18.2 1344874 121.0 17.5
Multiplicador c/ mux v2
3216825 273.8 16.7 1512353 111.5 14.3
2 MCM 2 Blocos registos
3601434 366.2 20.8 747911 98.4 17.8
2 MCM 1 Bloco registo
2819868 254.6 20.0 1166676 141.8 18.9
1 MCM 1 Bloco registo
2525690 198.0 20.6 873379 104.4 16.9
1 MCM ADD C/ MUX
2543106 205.5 23.6 890031 108.9 20.5
1 MCM ADD C/ MUX ILP
2504917 198.5 22.2 855447 103.7 19.8
Uniao 2 MCM
2507297 197.0 19.9 862831 103.7 17.1
Tabela C.2 - Tabela com a área, potência e tempo de atraso para todas as arquitecturas para um sinal
de entrada de 16 bits.
Tipo Arquitectura Total Bloco MCM
Área (µm2) Pot. (mW) C. Crítico (ns) Área (µm2) Pot. (mW) C. Crítico (ns)
Multiplicador NxN
5733563 529.2 22.5 3389351 301.1 16.3
Multiplicador NxM
4718545 393.0 22.4 2445199 226.3 16.3
Multiplicador c/ mux
4595885 363.7 22.9 2317514 219.3 19.8
Multiplicador c/ mux v2
5091598 430.6 21.9 2698008 222.7 19.7
2 MCM 2 Blocos registos
5170779 547.7 22.3 1147615 167.3 18.3
2 MCM 1 Bloco registo
4011180 375.5 23.4 1728766 229.4 18.3
1 MCM 1 Bloco registo
3628286 310.2 23.3 1351705 182.4 17.9
1 MCM ADD C/ MUX
3636051 313.4 24.6 1361508 184.7 23.3
1 MCM ADD C/ MUX ILP
3604278 306.0 24.3 1330498 180.8 19.7
Uniao 2 MCM
3606464 304.7 23.9 1339804 182.3 17.7
84
Tabela C.3 - Tabela com a área, potência e tempo de atraso para todas as arquitecturas para um sinal
de entrada de 32 bits.
Tipo Arquitectura Total Bloco MCM
Área (µm2) Pot. (mW) C. Crítico (ns) Área (µm2) Pot. (mW) C. Crítico (ns)
Multiplicador NxN
14463973 1540.7 33.1 10775492 1022.1 27.2
Multiplicador NxM
7961679 760.2 26.2 4324554 422.8 22.1
Multiplicador c/ mux
7803433 673.0 29.1 4176803 402.9 28.7
Multiplicador c/ mux v2
8746057 853.0 28.3 5097676 453.4 25.9
2 MCM 2 Blocos registos
8285315 603.7 24.8 1979254 305.2 22.1
2 MCM 1 Bloco registo
6496039 605.9 24.7 2906617 411.9 23.2
1 MCM 1 Bloco registo
5914029 543.0 25.3 2313388 332.5 21.5
1 MCM ADD C/ MUX
5903856 542.9 30.1 2310425 328.7 29.7
1 MCM ADD C/ MUX ILP
5862228 531.9 28.4 2272730 324.3 26.0
Uniao 2 MCM
5871544 534.8 25.5 2289249 333.2 21.7
ANEXO D
SCRIPT
Um exemplo do script utilizado para a síntese dos ficheiros VHDL.
read_file -format vhdl {…} #todos os ficheiros VHDL necessários para a arquitectura current_design fir01_wapprox_fir02_wapprox_reg_add
elaborate fir01_wapprox_fir02_wapprox_reg_add -architecture BEHAVIORAL -library
WORK -update
create_clock "clk" -period 50 -waveform {0 25}#criação do relógio de 50 ns set_fix_multiple_port_nets -all
set high_fanout_net_threshold 10000
check_design -multiple_designs
set_clock_uncertainty 0.1 clk
set_clock_latency 0.2 clk
set_clock_transition 0.1 clk
set_dont_touch_network clk
set_dont_touch mode
set_dont_touch reset
set_switching_activity -toggle_rate 2 -clock clk -static_probability 0.5 -select
inputs
compile -exact_map -boundary_optimization
report_constraint -all_violators
set_fix_hold clk
uplevel #0 check_timing
#uplevel #0 { report_clock -nosplit }
#uplevel #0 { report_constraint -all_violators -significant_digits 2 }
#uplevel #0 { report_clock -skew -nosplit }
compile -only_design_rule -incremental_mapping
report_timing
uplevel #0 { report_power -analysis_effort high} #relatório da potência
report_qor #relatório global com os valores da área e tempo de atraso