universidade federal da bahia - ppgee.eng.ufba.br · lab, have also been ... 4.1.1 representa˘c~ao...
TRANSCRIPT
UNIVERSIDADE FEDERAL DA BAHIA
ESCOLA POLITECNICA
PROGRAMA DE POS-GRADUACAO EM ENGENHARIA ELETRICA
Joaquim Ranyere Santana de Oliveira
SOFT-IP CONFIGURAVEL PARA REALIZACAO DE FUNCOES
DE JANELAMENTO EM HARDWARE
DISSERTACAO DE MESTRADO
Salvador
Outubro de 2016
Pagina em branco
Joaquim Ranyere Santana de Oliveira
SOFT-IP CONFIGURAVEL PARA REALIZACAO DE FUNCOES
DE JANELAMENTO EM HARDWARE
Dissertacao de Mestrado apresentada ao
Programa de Pos-graduacao em Engenharia
Eletrica, PPGEE, da Universidade Federal
da Bahia, como parte dos requisitos
necessarios a obtencao do tıtulo de Mestre
em Engenharia Eletrica.
Orientadores: Wagner Luiz Alves de Oliveira
Paulo Cesar Machado de
Abreu Farias
Salvador
Outubro de 2016
Oliveira, Joaquim Ranyere Santana de
Soft-IP Configuravel para Realizacao de Funcoes de
Janelamento em Hardware/Joaquim Ranyere Santana de
Oliveira. – Salvador: UFBA/PPGEE, 2016.
XX, 86 p.: il.; 29, 7cm.
Orientadores: Wagner Luiz Alves de Oliveira
Paulo Cesar Machado de Abreu Farias
Dissertacao (mestrado) – UFBA/PPGEE/Programa de
Engenharia Eletrica, 2016.
Referencias Bibliograficas: p. 73 – 80.
1. IP-Cores. 2. Janelamento de Sinais. 3.
Circuitos Integrados Digitais. 4. Ajuste de Curvas e
Interpolacao. I. Oliveira, Wagner Luiz Alves de et al..
II. Universidade Federal da Bahia, PPGEE, Programa de
Engenharia Eletrica. III. Tıtulo.
iii
iv
A minha querida mae, Mirian Santana de
Oliveira, heroına capaz de abdicar de si em
prol dos meus estudos. Espero que esse
trabalho a deixe orgulhosa por ser um dos
frutos de sua dedicacao.
v
vi
Agradecimentos
Agradeco em especial a minha mae, Mirian Santana de Oliveira, meu maior espelho
na busca do conhecimento e do bem, e ao meu pai, Valdo Lopes de Oliveira, que
sempre me apoia incondicionalmente em qualquer que seja a situacao.
A minha companheira Beth, por esta sempre ao meu lado, sendo meu refugio
nas intemperies, e quem presencia e compartilha de meus exitos e alegrias.
Ao professor Wagner Luiz Alves de Oliveira, pelas sugestoes e crıticas sobre a
monografia proposta, dando-me o devido encorajamento para concluir o trabalho.
Aos meus familiares e amigos, que de alguma maneira contribuıram para minha
formacao como pessoa e como pesquisador.
Obrigado por todos os incentivos!
vii
viii
”Aprender e a unica coisa de que a mente
nunca se cansa, nunca tem medo e nunca
se arrepende.”
(Leonardo da Vinci)
ix
x
Resumo da Dissertacao apresentada a PPGEE/UFBA como parte dos requisitos
necessarios para a obtencao do grau de Mestre em Engenharia Eletrica (M.Sc.)
SOFT-IP CONFIGURAVEL PARA REALIZACAO DE FUNCOES DE
JANELAMENTO EM HARDWARE
Joaquim Ranyere Santana de Oliveira
Outubro/2016
Orientadores: Wagner Luiz Alves de Oliveira
Paulo Cesar Machado de Abreu Farias
Programa: Engenharia Eletrica
Este trabalho apresenta o desenvolvimento de um Soft-IP-Core destinado a rea-
lizacao de operacoes de janelamento em sistemas de processamento digital de sinais.
O IP desenvolvido realiza o processo de janelamento a partir da interpolacao linear
de um sub-conjunto de pontos da funcao, obtido previamente por uma rotina em
Matlab disponibilizada no conjunto de arquivos do projeto. O IP apresenta tambem
a caracterıstica de ser altamente configuravel, podendo adaptar-se a diferentes ta-
manhos de palavra em notacao de ponto fixo, bastando para tal o usuario modificar
os parametros definidos em um arquivo de configuracao.
Como forma de validar e garantir a robustez do IP, todo o trabalho foi reali-
zado tomando por base metodologias de desenvolvimento de projetos de circuitos
integrados digitais, mais especificamente o fluxo de desenvolvimento para disposi-
tivos ASIC. Como caso de uso, implementou-se, do RTL ate o GDSII, um modulo
de janelamento constituinte de um decodificador de audio para o padrao MPEG-2
AAC-LC. Analises e verificacao funcional, a partir de um modelo de referencia cri-
ado em Matlab, tambem foram realizadas, mostrando a conformidade do Soft-IP
com os resultados de calculos esperados.
xi
Por fim, analisou-se a eficiencia em termos de area da proposta de interpolacao,
comparando-a com solucoes da literatura de modelos convencionais, relativos ao
armazenamento direto dos pontos, e modelos desenvolvidos com a tecnica CORDIC.
xii
Abstract of Dissertation presented to PPGEE/UFBA as a partial fulfillment of the
requirements for the degree of Master of Science (M.Sc.)
CONFIGURABLE SOFT-IP TO PERFORM WINDOWING FUNCTIONS IN
HARDWARE
Joaquim Ranyere Santana de Oliveira
October/2016
Advisors: Wagner Luiz Alves de Oliveira
Paulo Cesar Machado de Abreu Farias
Department: Electrical Engineering
This work presents the development of a Soft-IP-Core for windowing operations
on digital signal processing systems. The developed IP performs the windowing
process from the linear interpolation of a sub-set of points, previously obtained by
a Matlab routine available in the set of project files. The IP is highly configurable
and adaptable to different word sizes in fixed-point notation through parameter
modifications specified by the user in a configuration file.
In order to validate and ensure the IP robustness, all the work has been carried
out based on digital integrated circuits design development methodologies, specifi-
cally the ASIC design flow. As an use case, it has been implemented from RTL to
GDSII levels a windowing module belonging to a MPEG-2 AAC-LC audio decoder
system. Analysis and functional verification, from a reference model created in Mat-
lab, have also been performed, showing that the Soft-IP is in accordance with the
expected calculations results.
Finally, it has been analyzed the efficiency of interpolation model by area criteria,
comparing it with literature solutions for both approaches, directed storage and
CORDIC.
xiii
Sumario
Lista de Figuras xvi
Lista de Tabelas xviii
1 Introducao 1
1.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.1 Objetivo Geral . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.2 Objetivos Especıficos . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Estrutura da Dissertacao . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 Fundamentacao Teorica 8
2.1 Janelamento em Analise Espectral . . . . . . . . . . . . . . . . . . . . 8
2.2 Janelamento na Modelagem de Filtros FIR . . . . . . . . . . . . . . . 11
2.3 Ajuste de Curvas e Interpolacao Linear . . . . . . . . . . . . . . . . . 15
2.4 Aritmetica em Ponto Fixo . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.1 Propriedades de Representacao no Formato Q . . . . . . . . . 17
2.5 Analise de Erro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.5.1 Relacao Sinal-Ruıdo . . . . . . . . . . . . . . . . . . . . . . . 22
3 Fluxo de Desenvolvimento de CIs Digitais 24
3.1 Fluxo ASIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 Projeto em Alto Nıvel (Nıvel de Sistema) . . . . . . . . . . . . . . . . 26
3.2.1 Especificacao . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2.2 Microarquitetura . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3 Projeto Logico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3.1 Codificacao RTL . . . . . . . . . . . . . . . . . . . . . . . . . 27
xiv
3.3.2 Sıntese logica . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4 Projeto Fısico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4.1 Floorplanning . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4.2 Particionamento . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.4.3 Planejamento de Energia . . . . . . . . . . . . . . . . . . . . . 34
3.4.4 Placement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4.5 CTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4.6 Roteamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.4.7 Analises de Signoff . . . . . . . . . . . . . . . . . . . . . . . . 40
3.5 Verificacao Funcional . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4 Metodos e Desenvolvimento da Proposta 45
4.1 Sistema em Alto Nıvel . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.1.1 Representacao da Tabela de Dados da Compactacao dos Pontos 49
4.2 Arquitetura Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.3 Verificacao Funcional . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5 Resultados do Trabalho 60
6 Conclusoes 71
Referencias Bibliograficas 73
A Trabalho Publicado 81
A.1 Trabalho Publicado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
A.1.1 Artigo em Congresso . . . . . . . . . . . . . . . . . . . . . . . 81
xv
Lista de Figuras
2.1 FFT – Intervalo de amostragem que se repete ao longo do tempo . . 9
2.2 FFT – problema de continuidade de um sinal . . . . . . . . . . . . . 10
2.3 FFT – problema de vazamento espectral . . . . . . . . . . . . . . . . 10
2.4 Efeito do janelamento no sinal de entrada . . . . . . . . . . . . . . . 11
2.5 Filtro ideal e sua resposta ao impulso . . . . . . . . . . . . . . . . . . 12
2.6 FIR – truncamento e deslocamento . . . . . . . . . . . . . . . . . . . 13
2.7 Efeito do janelamento no sinal de entrada . . . . . . . . . . . . . . . 14
2.8 Remontagem de uma funcao a partir de um conjunto de retas . . . . 16
2.9 Ponto Q divide as partes de uma palavra em formato Q . . . . . . . . 17
2.10 Representacao binaria de ponto fixo Q sem sinal . . . . . . . . . . . . 18
2.11 Representacao binaria de ponto fixo Q com sinal . . . . . . . . . . . . 18
2.12 Soma em ponto fixo sem sinal . . . . . . . . . . . . . . . . . . . . . . 20
2.13 Soma em ponto fixo com sinal . . . . . . . . . . . . . . . . . . . . . . 20
2.14 Multiplicacao em ponto fixo . . . . . . . . . . . . . . . . . . . . . . . 21
3.1 Macro etapas do fluxo de projeto de CIs . . . . . . . . . . . . . . . . 24
3.2 Descricao comportamental Verilog de um somador de 6 bits . . . . . 28
3.3 Modelo de fluxo de dados entre registradores e celulas logicas . . . . . 28
3.4 Modelo estrutural com descricao de portas logicas . . . . . . . . . . . 29
3.5 Diagrama de etapas do fluxo ASIC da netlist ao GDSII . . . . . . . . 32
3.6 Alocacao das areas do core e de E/S em um leiaute . . . . . . . . . . 33
3.7 Topologias de planejamento de energia em projetos ASIC . . . . . . . 35
3.8 Estimativa de posicao das celulas no placement global . . . . . . . . . 36
3.9 Correcao do posicionamento pos-placement detalhado . . . . . . . . . 37
3.10 Distribuicao do clock em um leiaute . . . . . . . . . . . . . . . . . . . 38
xvi
3.11 Roteamento – visao de camadas . . . . . . . . . . . . . . . . . . . . . 38
3.12 Roteamento – organizacao da area em g-cells . . . . . . . . . . . . . . 39
3.13 Arquivos onde se aplica analise de conformidade (LVS e LEC) . . . . 41
4.1 Exemplo do algoritmo de busca das retas que formarao a funcao . . . 48
4.2 Esquema da tabela de dados das retas . . . . . . . . . . . . . . . . . 50
4.3 Janelas Kaiser de 64 pontos para α = [0, 2, 4, 6, 8, 10, 30] . . . . . . 51
4.4 Janelas Kaiser de 64, 128, 256 e 512 pontos para α = 4 . . . . . . . . 51
4.5 Arquitetura de blocos do Modulo de Janelamento . . . . . . . . . . . 55
4.6 Diagrama de sinais do protocolo do Modulo de Janelamento . . . . . 56
4.7 Maquina de estados finita do Modulo de Janelamento . . . . . . . . . 56
4.8 Ambiente de verificacao desenvolvido para o IP . . . . . . . . . . . . 58
5.1 Decodificador de audio MPEG AAC-LC UFBA/UEFS/Brazil-IP . . . 61
5.2 SNR das retas para janela KBD de 2048 amostras . . . . . . . . . . . 62
5.3 SNR das retas para janela KBD de 256 amostras . . . . . . . . . . . 62
5.4 SNR das retas para janela seno de 2048 amostras . . . . . . . . . . . 63
5.5 SNR das retas para janela seno de 256 amostras . . . . . . . . . . . . 63
5.6 Erro relativo para janela seno de 256 amostras . . . . . . . . . . . . 64
5.7 Erro relativo para janela seno de 2048 amostras . . . . . . . . . . . . 64
5.8 Erro relativo para janela KBD de 256 amostras . . . . . . . . . . . . 65
5.9 Erro relativo para janela KBD de 2048 amostras . . . . . . . . . . . . 65
5.10 Relatorio de sıntese para KBD de 2048 amostras . . . . . . . . . . . . 66
5.11 Relatorio de sıntese para KBD de 256 amostras . . . . . . . . . . . . 67
5.12 Vista ameba com a separacao logica dos blocos . . . . . . . . . . . . . 68
5.13 Placement das celulas e arvore de clock realcada . . . . . . . . . . . . 69
5.14 Ring e stripes da rede de energia . . . . . . . . . . . . . . . . . . . . 69
5.15 Leiaute apos roteamento dos fios . . . . . . . . . . . . . . . . . . . . 70
xvii
Lista de Tabelas
4.1 Quantidade de bits necessarios para representar α com 16 bits de
precisao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.2 Quantidade de bits necessarios para representar α com 24 bits de
precisao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.3 Portas de entrada e saıda do Modulo de Janelamento . . . . . . . . . 55
5.1 Bits usados para representar as funcoes de janelamento no MPEG2-
AAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.2 Comparacao de areas entre solucao proposta, solucao convencional e
CORDIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
xviii
Siglas
AAC-LC Advanced Audio Coding - Low Complexity .
ASIC Application-Specific Integrated Circuit (Cir-
cuito integrado de Aplicacao Especıfica).
CAD Computer Aided Design.
CI Circuito Integrado.
CMOS Complementary Metal-Oxide-Semiconductor .
CORDIC COordinate Rotation DIgital Computer
(Computador Digital para Rotacao de
Coordenadas).
CPF Common Power Format .
DFM Design for Manufacturing .
DFT Discrete Fourier Transform (Transformada
Discreta de Fourier).
DRC Design Rule Checking .
DSP Digital Signal Processor (Processador Digital
de Sinais).
EDA Electronic Design Automation.
FFT Fast Fourier Transform (Transformada
Rapida de Fourier).
FIR Finite Impulse Response.
xix
FPGA Field-Programmable Gate Array (Arranjo de
Portas Programavel em Campo).
GDSII Graphic Database System II.
GPU Graphics Processing Unit (Unidade de Proces-
samento Grafico).
HDL Hardware Description Language (Linguagem
de Descricao de Hardware).
IIR Infinite Impulse Response.
IP Intelectual Property .
KDB Kaiser e Kaiser-Bessel Derived .
LEC Logical Equivalence Check .
LVS Layout Versus Schematic.
MPEG-2 Moving Pictures Experts Group-2.
RTL Register-Transfer Level .
SDC Synopsys Design Constraints .
SNR Signal-to-Noise Ratio (Relacao Sinal-Ruıdo).
SOC System-on-Chip (Sistema-em-um-chip).
STA Static Timing Analysis .
VHDL VHSIC Hardware Description Language.
xx
Capıtulo 1
Introducao
Nas ultimas decadas, rapidos avancos na tecnologia de projeto e fabricacao de Cir-
cuitos Integrados (CI) digitais causaram uma revolucao na area de processamento
de sinais, e o rapido crescimento da internet fixa e movel, combinada com a busca in-
cansavel do homem por informacao, adicionaram mais combustıvel a essa revolucao
[1]. Hoje em dia, quase todos os sinais sao representados e processados digital-
mente, possibilitando as mais variadas aplicacoes de processamento de sinais: tele-
comunicacoes, tratamento e reconhecimento de audio e voz, area biomedica, proces-
samento de imagens, sensoriamento remoto e radares, entre outras [1]. Em geral,
essas aplicacoes utilizam a manipulacao do espectro do sinal ou necessitam que seja
feito algum processo de filtragem. Em ambos os casos, uma das tecnicas utilizadas
para reduzir a perda espectral e melhorar a manipulacao do sinal amostrado e a de
janelamento de sinais [2].
Quando os sinais sao convertidos para uma forma digital, geralmente ha a divisao
dos mesmos em blocos discretos, para possibilitar algum tipo de tratamento extra
apos a conversao – tal conversao possibilita o processamento deste sinal atraves de
sistemas computacionais. Para evitar efeitos indesejados nas transicoes entre tais
blocos de sinais, estes sao frequentemente ponderados por uma funcao janela, que
atua sobre o sinal em ambas extremidades dos blocos. Uma janela e uma funcao
matematica que tem valor zero fora de um intervalo escolhido – assim, quando um
sinal e multiplicado por uma funcao janela, o produto tambem tem valor zero fora
deste intervalo [2]. A aplicacao dessas funcoes encontra-se em grande parte dos
sistemas de processamento digital de sinais, razao pela qual tais funcoes sao de
1
extrema importancia nessa area de estudo, tendo forte impacto sobre o espectro do
sinal ao permitir, essencialmente, um trade-off entre as resolucoes de tempo e de
frequencia [1].
O processo de janelamento, convencionalmente, e desenvolvido no domınio do
tempo, pela simplicidade analıtica e facilidade de implementacao/processamento em
relacao ao domınio da frequencia, que tem um custo computacional alto em virtude
do uso de transformadas [3]. Alem disso, algumas funcoes janela nao apresentam
uma funcao analıtica precisa no domınio da frequencia [4], como e o caso das funcoes
Kaiser e Kaiser-Bessel Derived (KDB).
Implementacoes de algoritmos para aplicacoes que envolvam o uso de funcoes
janela sao, em geral, sistemas complexos de processamento de sinais formados por
diferentes modulos, responsaveis por funcoes especıficas, onde parte destes modulos
demanda um alto uso de recursos computacionais. Esses sistemas sao desenvolvi-
dos em grande parte usando a metodologia System-on-Chip (Sistema-em-um-chip)
(SOC) [5, 6], a qual realiza a integracao de variados blocos do sistema dentro de
um unico chip. Esses blocos sao pre-desenvolvidos e pre-verificados funcionalmente,
sendo conhecidos como Intelectual Property (IP) - Cores [7, 8], e podem correspon-
der a processadores embarcados, memorias, interfaces de E/S, blocos analogicos, blo-
cos de comunicacao, perifericos e componentes para execucao de funcoes especıficas.
IP-Cores podem ser classificados em Soft-Cores, Firm-Cores e Hard-Cores [9,
10]. Os Soft-Cores oferecem o mais alto grau de flexibilidade de modificacao e
consistem em restricoes de projeto, testbenches, informacoes de validacao e um con-
junto de arquivos em Hardware Description Language (Linguagem de Descricao de
Hardware) (HDL), independentes da tecnologia de processo de fabricacao de semi-
condutores. Os Firm-Cores tem flexibilidade intermediaria e contem informacoes
mais estruturadas, geralmente na forma de uma netlist em nıvel de celulas logicas,
pronta para processos de mapeamento e roteamento em uma tecnologia de processo
alvo. Ja os Hard-Cores sao mascaras e modulos dependentes de tecnologia que
contem informacoes fısicas de leiaute, possuindo desempenho bem definido, porem
sem a flexibilidade de migrar de tecnologia ou modificar alguma caracterıstica [7].
IP-Cores podem ser desenvolvidos pelos proprios projetistas do sistema ou ad-
quiridos de terceiros. A adocao de uma implementacao baseada em IP-Cores, com
2
enfase em re-uso, pode ser uma resposta efetiva para um conjunto de problemas
enfrentados por projetistas de chips complexos, tais como [11]:
• Aumento da dificuldade de verificacao, com a crescente complexidade dos Cir-
cuitos Integrados;
• Fechamento de temporizacao (timing closure) mais difıcil, com questoes rela-
cionadas a tecnologias submicrometricas;
• Diversidade da equipe de desenvolvimento, com diferentes nıveis de conheci-
mento e areas de especializacao, estando muitas vezes espalhada por todo o
mundo;
• Alto ındice de mudancas no fluxo de projeto, nas ferramentas Electronic De-
sign Automation (EDA) e orientacoes, prejudicando o uso direto de projetos
similares ja prontos; e
• Pressoes de time-to-market, demandando um rapido desenvolvimento do pro-
jeto.
Esse ultimo problema, relacionado ao tempo de duracao do projeto, e substan-
cialmente melhorado pelo reuso de IP-Cores. Uma metodologia eficaz de projeto
baseada em blocos requer uma extensa biblioteca de blocos reutilizaveis [5]. Por
conta disso, os desenvolvedores de IP-Cores devem empregar uma metodologia de
projeto que produza consistentemente blocos reutilizaveis, partindo do princıpio de
que um bloco deve ser extremamente facil de integrar no projeto global, alem do
princıpio de que um bloco deve ser tao robusto que o engenheiro responsavel pela
integracao nao precise realizar verificacao funcional interna no mesmo [12]. Inicia-
tivas de contribuicao colaborativa, tais como OpenCores [13] e Librecores [14], se
justificam como forma de aporte as bibliotecas internas de projetos – contribuicoes
academicas e empresariais para estas iniciativas aumentarao a confiabilidade dos IP-
Cores fornecidos, atraves da melhoria com aumento do uso, dos testes e depuracoes.
Alem dos problemas citados acima, a qualidade dos resultados em termos de
desempenho, area e consumo constitui chave para o sucesso de um projeto [11].
Por isso, em suas decisoes, os engenheiros de sistema precisam escolher entre usar
uma tecnologia mais barata, com menor densidade de transistores, ou usar uma
3
tecnologia mais atual, com maior densidade, porem mais cara. Esta escolha implica
diretamente no tempo ate o mercado (time-to-market) do projeto, uma vez que
o uso de densidades menores implica em tempo maior de desenvolvimento mas,
em contrapartida, com custo final por unidade menor. Em sistemas especialistas
em que o custo por unidade e o item prioritario, empresas de desenvolvimento de
chips (design-houses) priorizam a reducao da area e a busca por algoritmos mais
eficientes que reduzam este aspecto drasticamente. Por outro lado, este trade-off
tambem implica em algumas perdas relacionadas ao processamento e a precisao dos
resultados do sistema. Essa problematica e inerente aos sistemas com janelamento,
nos quais varias funcoes janela podem ser desenvolvidas/empregadas de acordo com
diferentes requisitos para a minimizacao do lobulo lateral e da faixa dinamica, por
exemplo. Na literatura nao existem, porem, muitas arquiteturas de janelamento com
foco na eficiencia de hardware, o que nao ocorre com proposicoes de arquiteturas
para outras partes normalmente presentes nestes sistemas, como, por exemplo, as
muitas disponıveis para realizar Fast Fourier Transform (Transformada Rapida de
Fourier) (FFT) [15, 16, 17]. As arquiteturas para janelamento conhecidas podem
ser elencadas em dois tipos, quanto aos recursos utilizados:
Convencional: armazena todos os dados da funcao janela em um dispositivo de
memoria, acarretando em um uso relevante de area, porem com baixo uso de
processamento; e
Funcao direta no hardware: realiza a obtencao, em tempo de execucao, dos pon-
tos da funcao janela, sendo mais flexıvel e acarretando em um uso maior de
recursos de processamento e area.
A implementacao convencional em hardware [18, 19] de funcoes janela utiliza tabelas
de consulta que geram, com o aumento do comprimento de palavra, uma maior area
e mais complexidade na temporizacao de relogio. Alem do mais, essas tabelas nao
permitem que o usuario defina variacoes no tamanho da janela. Ja na implementacao
direta, existem algumas alternativas que propoem calculos da funcao janela atraves
de artifıcios matematicos, como o COordinate Rotation DIgital Computer (Com-
putador Digital para Rotacao de Coordenadas) (CORDIC) [20, 21, 22], os quais
permitem flexibilidade no tamanho da janela [23]. No geral, implementacoes diretas
4
entregam uma resposta que permite altas taxas de processamento e transferencia
de dados [24] e, apesar dos esforcos para reducao da area [25, 26, 27, 28], ainda
apresentam um alto uso de recursos.
No que tange aos sistemas especialistas, o desenvolvimento de hardwares vol-
tados a uma aplicacao especıfica (Application-Specific Integrated Circuit (Circuito
integrado de Aplicacao Especıfica) (ASIC)), como o caso de sistemas com janela-
mento, prescinde em grande parte do uso de tecnologias de vanguarda (high-end).
Para se ter uma ideia, no ultimo relatorio da PwC sobre o impacto da China na
industria de semicondutores [29], paıs responsavel por grande parte da producao
mundial de Circuito Integrados (CIs), apenas 12,4% das empresas chinesas traba-
lham com tecnologia de 90 nm ou menores. No mesmo relatorio, mostra-se que o
paıs continua ainda modesto no aumento da migracao para tecnologias de fabricacao
menores. Isso implica que a eficiencia nos criterios de area, processamento e con-
sumo baseia-se mais em esforcos na otimizacao dos algoritmos e modulos internos,
do que propriamente no abandono de tecnologias de fabricacao com nos tecnologicos
intermediarios (middle-end). Esses esforcos geram divisas e propriedades intelectu-
ais que contribuem, por exemplo, para o fato de que o desenvolvimento de CIs seja
o setor que mais cresceu na fatia de mercado chines: de 6,5% em 2003 para 22,1%
em 2014 (dados do mesmo relatorio).
Neste contexto, o presente trabalho seguiu a linha de dar maior esforco a oti-
mizacao do uso de area. Assim, durante a analise de diferentes formas de imple-
mentacao, surgiu a ideia de armazenamento parcial dos dados da funcao janela,
como alternativa ao alto uso de memoria da arquitetura convencional, atraves da
reducao da quantidade de pontos pela tecnica de ajuste de curvas, o que pode ser
uma solucao simples e bastante viavel para os engenheiros de sistemas utilizarem no
caso de menor disponibilidade de recursos.
Na busca por flexibilidade e diminuicao do uso de recursos, o objetivo princi-
pal deste trabalho consistiu no fornecimento de um Intellectual Property (IP) Soft-
Core parametrizavel, desenvolvido e disponibilizado como uma solucao de hardware
que possa ser utilizada dentro de sistemas de processamento de sinais com janela-
mento. Por ser um Soft-Core, o IP pode ser implementado em Field-Programmable
Gate Array (Arranjo de Portas Programavel em Campo) (FPGA) – quando nem o
5
custo unitario relativamente alto e nem o consumo de energia sao fatores crıticos
da aplicacao [30] – ou implementado em ASIC – para aplicacoes de maior volume e
menor area e consumo.
Como prova de conceito, o trabalho implementou o Soft-IP em ASIC, seguindo
o fluxo basico de desenvolvimento de projetos de CIs, ordenado por suas etapas
basicas principais. A primeira acao consistiu na concepcao e modelagem do sis-
tema de janelamento, usando linguagem Matlab. Em seguida, foi escrito o codigo
Register-Transfer Level (RTL) em Verilog, objetivando a implementacao logica das
funcionalidades e especificacoes do modelo. Na sequencia, realizou-se a verificacao
funcional, para garantir que o RTL esta de acordo com as especificacoes iniciais. Por
fim, criou-se uma descricao de conectividade atraves da sıntese logica, cuja evolucao
do projeto fısico resultou num leiaute em formato Graphic Database System II (GD-
SII), com no tecnologico de 180 nm. Os resultados gerados durante o fluxo ASIC
serao entao utilizados nas discussoes desta dissertacao.
1.1 Objetivos
1.1.1 Objetivo Geral
O objetivo desse trabalho e desenvolver um Soft-IP Core generico e flexıvel que
realiza funcoes de janelamento em hardware, atraves da interpolacao linear dos
pontos.
1.1.2 Objetivos Especıficos
• Criacao de um modelo de ajuste de curvas que gere automaticamente as partes
reconfiguraveis do IP;
• Criacao de um modelo de referencia e de um ambiente para verificar o IP;
• Desenvolvimento da parte generica do IP em RTL, de maneira parametrizavel;
• Verificacao funcional do RTL gerado para o IP;
• Validacao do uso do Soft-IP em um fluxo de hardware ASIC; e
6
• Comparacao e avaliacao da solucao gerada em ASIC em diferentes aspectos de
concepcao de CIs, com enfase na reducao de area.
1.2 Estrutura da Dissertacao
A fundamentacao teorica necessaria para a realizacao deste trabalho e apresentada
no Capıtulo 2.
O Capıtulo 3 apresenta as principais atividades inerentes a um fluxo de projeto
para circuitos integrados digitais. Desta forma, os Capıtulos 2 e 3 servem de base
para as proposicoes apresentadas nos demais Capıtulos.
No Capıtulo 4 e apresentada a arquitetura geral do IP proposto e seu funcio-
namento, bem como o sistema desenvolvido para gerar os arquivos de configuracao
para a aplicacao final.
Os resultados obtidos no Capıtulo 4 sao discutidos no Capıtulo 5, o qual apre-
senta um estudo de caso sobre uma aplicacao do IP e sua validacao em ASIC.
Finalmente, o Capıtulo 6 apresenta as conclusoes gerais do trabalho.
7
Capıtulo 2
Fundamentacao Teorica
O processo de janelamento esta presente em basicamente todas as aplicacoes que
envolvem analise espectral usando FFT, sendo tambem bastante comum em algo-
ritmos de construcao de filtros Finite Impulse Response (FIR). Estes dois conceitos
sao tratados a seguir neste capıtulo, como possıveis aplicacoes do trabalho desen-
volvido. Ja as secoes sobre ajuste de curvas, aritmetica em ponto fixo e analise de
erro, apresentam conceitos que foram utilizados diretamente no desenvolvimento do
produto.
2.1 Janelamento em Analise Espectral
E muito comum informacoes serem codificadas nas senoides que formam um sinal.
Contudo, todos os campos da ciencia e engenharia apresentam casos de medidas onde
sinais de maior magnitude podem mascarar outros sinais no domınio do tempo, o que
torna a analise espectral (domınio da frequencia) uma ferramenta util na analise de
informacoes chaves para identificacao, descricao e manipulacao desses sinais, quais
sejam: a frequencia, a fase e a amplitude dos componentes senoidais [31].
A analise espectral encontra aplicacoes em diversos campos: monitoracao de
vibracoes, modelos de economia, meteorologia, astronomia, analise da fala, reco-
nhecimento de voz, sistemas de radar e de sonar, medicina, sismologia, sistemas de
controle etc. [32, 33].
A Discrete Fourier Transform (Transformada Discreta de Fourier) (DFT) e
usada para estimar o conteudo de frequencia de sinais que originalmente sao sequencias
8
representadas por valores no tempo. A FFT e um metodo que implementa de forma
extremamente eficiente o calculo da DFT num Digital Signal Processor (Processa-
dor Digital de Sinais) (DSP), FPGA e hardwares especıficos. Na analise espectral, a
FFT realiza o calculo a partir de blocos de amostras dos sinal de entrada, chamados
de intervalos de amostragem [34]. O algoritmo de FFT baseia-se na hipotese de que
intervalos de amostragem sao repetidos ao longo do tempo, como na Figura 2.1.
Figura 2.1: FFT – Intervalo de amostragem que se repete ao longo do tempo
O ponto em que se inicia a amostragem pode afetar o espectro do sinal. Quando
o intervalo de amostragem compreende um perıodo multiplo do perıodo do sinal de
entrada (Figura 2.2a), o resultado e um sinal mais proximo do espectro correto no
domınio da frequencia. Ja em um intervalo de amostragem que nao corresponde a um
numero inteiro do perıodo do sinal de entrada (Figura 2.2b), um efeito indesejavel
notado e a apresentacao de descontinuidades nas extremidades do intervalo do sinal
de entrada assumido, causando o aparecimento de frequencias inexistentes (fictıcias)
no espectro desse sinal. Na pratica isso se traduz na forma de um ruıdo de fundo e
o espectro gerado a partir dessa janela sofre mudancas em relacao ao sinal original –
esse efeito e chamado de vazamento espectral [34]. A Figura 2.3a mostra um numero
inteiro de perıodos amostrado em um intervalo e seu espectro correspondente, com as
componentes de frequencia bem definidas nas linhas de resolucao da FFT, enquanto
a Figura 2.3b mostra um sinal amostrado em um intervalo de amostragem nao
multiplo de seu perıodo, de modo que sua potencia e espalhada por todo o espectro
de potencia (ha um vazamento de energia a partir de uma linha de resolucao da
FFT em todas as outras linhas).
9
(a) Entrada periodica no intervalo
de amostragem
(b) Entrada nao periodica no inter-
valo de amostragem
Figura 2.2: FFT – problema de continuidade de um sinal
(a) Intervalo de amostragem multiplo do sinal de entrada
(b) Leakage em intervalo de amostragem nao multiplo do sinal de entrada
Figura 2.3: FFT – problema de vazamento espectral
10
A multiplicacao do intervalo de amostragem por uma funcao que seja zero nas
extremidades do intervalo e tenha valores significativos na regiao central produzira
um efeito de aproximacao do espectro esperado para cada intervalo de amostragem,
corrigindo o problema de descontinuidade nas extremidades do intervalo de amos-
tragem. A Figura 2.4 mostra como a FFT passa a assumir o sinal de entrada dentro
de um intervalo apos o janelamento.
Figura 2.4: Efeito do janelamento no sinal de entrada
2.2 Janelamento na Modelagem de Filtros FIR
O termo filtragem refere-se ao processamento de um sinal no domınio do tempo ou
da frequencia, o qual em um conceito mais estrito, e realizado por um sistema que
permite a passagem de certos componentes de frequencia e rejeita totalmente todos
os outros. Porem num contexto mais amplo, qualquer sistema que modifica certas
frequencias em relacao a outras frequencias e um considerado um processo de filtra-
gem [35]. Os filtros digitais podem ser caracterizados, quanto ao comportamento,
em filtros FIR e filtros Infinite Impulse Response (IIR) [35].
Para um filtro ser implementado em DSP ou hardware especıfico, frequentemente
e feita a opcao pelo uso de filtros FIR ao inves de IIR [36]. O metodo de desenvol-
vimento de um filtro FIR, a partir de um filtro IIR ideal, envolve a aproximacao da
resposta ao impulso ideal por um filtro que possa ser realizado na pratica. Ha muitas
11
tecnicas disponıveis e todas elas sao baseadas em algum criterio de aproximacao ou
quao bem seja a resposta do filtro desenvolvido, em comparacao a resposta desejada
do filtro. O modelo mais popular e a tecnica de otimizacao direta. O metodo mais
simples, porem, e o truncamento da resposta ao impulso ou metodo de janelas[35].
A resposta em frequencia de um filtro passa baixa ideal e dada pela Equacao 2.1
e sua resposta ao impulso e dada pela Equacao 2.2.
Hd(ejω) =
1, 0 ≤ |ω| ≤ ωc
0, ωc < |ω| < π
(2.1)
hd[n] =sin(ωcn)
πn,−∞ ≤ n ≤ ∞ (2.2)
A Figura 2.5 mostra a resposta em frequencia de um filtro passa-baixa ideal e
sua resposta ao impulso.
Figura 2.5: Filtro ideal e sua resposta ao impulso
Toda resposta desejada de um filtro Hd(ejω) para filtro nao recursivo e uma
funcao periodica em ω e perıodo 2π, podendo ser representada como uma serie de
Fourier [2] dada pela Equacao 2.3.
Hd(ejω) =
∞∑n=−∞
hd[n]e−jωn (2.3)
Os coeficientes da serie de Fourier podem ser reorganizados como sendo igual a
resposta ao impulso de um filtro digital, como na Equacao 2.4.
hd[n] =1
2π
∫ π
−πHd(e
jω)ejωdω (2.4)
Em geral, a funcao hd[n] projetada e de tamanho infinito e nao-causal. O metodo
mais simples de modelar um filtro FIR e truncar a serie de Fourier por um tamanho
desejado para o filtro de N amostras (N ımpar) – Figura 2.6a – e entao aplicar um
12
deslocamento de N−12
amostras para a direita para torna-lo causal – Figura 2.6b.
Desse modo, e obtida a resposta ao impulso do filtro desejado, definida pela Equacao
2.5.
(a) Truncamento da resposta ao impulso
(b) Resposta ao impulso deslocada de N−12 amostras
Figura 2.6: FIR – truncamento e deslocamento
h[n] =
1, 0 ≤ n ≤ N − 1
0, diferente.
(2.5)
A equacao 2.5 e uma operacao de janelamento retangular, e a resposta ao impulso
do filtro pode ser reescrita pela Equacao 2.6:
h[n] = hd[n]ω[n] (2.6)
onde ω[n] e uma janela retangular definida por 2.7:
ω[n] =
1, 0 ≤ n ≤ N − 1
0, diferente.
(2.7)
13
A compreensao das caracterısticas da resposta em frequencia do filtro projetado
e mais imediata quando analisado o efeito do janelamento no domınio da frequencia.
Esta operacao e representada por uma convolucao de Hd(ejω) com a resposta em
frequencia de uma janela retangular dada pela Equacao 2.8 – graficamente repre-
sentada pela Figura 2.7.
H(ejω) =1
2π
∫ π
−πHd(e
jθ)W (ej(ω−θ))dθ (2.8)
Figura 2.7: Efeito do janelamento no sinal de entrada
Fonte: [1]
A resposta em frequencia resultante de um filtro passa-baixa, como a da Figura
2.7, nao e plana, uma vez que tem ondulacoes na banda de passagem e na banda de
rejeicao – a transicao entre as bandas de passagem e de rejeicao nao e brusca e ha
uma significativa banda de transicao entre elas. Estas caracterısticas do filtro sao
decorrentes do truncamento direto do IIR [1].
Quando Hd(ejω) e convoluıdo com a resposta da janela, o lobulo principal da
janela resulta em uma banda de transicao entre as bandas de passagem e de rejeicao.
Os lobulos laterais da janela dao origem as ondulacoes na banda de passagem e na
banda de rejeicao. Dessa forma, a largura da transicao de um filtro FIR passa-
baixa, desenvolvido segundo o metodo de janelas, e proporcional a largura do lobulo
principal da janela, enquanto as ondulacoes sao proporcionais aos nıveis dos lobulos
laterais da janela [1]. Os efeitos dessas caracterısticas e que determinam a escolha
da classe de janelas que melhor se adeque ao filtro projetado.
14
2.3 Ajuste de Curvas e Interpolacao Linear
Um dos objetivos do IP desenvolvido e a diminuicao da area ocupada pelo circuito.
Uma forma direta de atingir tal objetivo e atraves da reducao do conjunto de dados
utilizados para representar os pontos que formam uma funcao de janelamento. Neste
contexto, podem ser utilizadas tecnicas de ajustes de curvas que, por meio de um
escopo reduzido de pontos fundamentais, podem prover dados com uma aproximacao
satisfatoria do conjunto completo de pontos da funcao [37].
O ajuste de curvas e uma tecnica que nao garante exatidao, mas torna possıvel
descrever uma gama enorme de curvas a partir de aproximacoes. A interpolacao
e a tecnica utilizada para o ajuste de curvas onde os dados da funcao devem ser
mais exatos e conhecidos[38, 39]. Por outro lado, a tecnica da regressao e utilizada
onde os dados exibem um grau de erro ou ruıdo significativos e a curva reconstruıda
representa apenas uma tendencia geral dos dados [38, 39]. Devido a necessidade de
maior precisao, este trabalho adotou a tecnica de interpolacao.
A interpolacao e um metodo que permite construir um novo conjunto de pontos
de uma curva a partir de um conjunto discreto de dados, particionados em uma
sequencia de funcoes simples [39]. Ao utilizar funcoes mais simples para estimar
pontos de uma funcao mais complexa, surge um erro inerente que varia de acordo
com o metodo de interpolacao utilizado – contudo, em muitos casos, o ganho na
simplificacao chega a ser mais importante do que a perda de precisao nos resultados.
Dentre os metodos de interpolacao, o mais simples e o linear, segundo o qual se
aplica interpolacao polinomial de primeira ordem, aproximando uma determinada
curva por meio da juncao de diversas funcoes de primeiro grau [38]. O nıvel de
aproximacao que a interpolacao linear pode garantir e dependente da quantidade de
pontos escolhidos para compor as retas que irao montar o formato da curva. Numa
abstracao integrativa, quanto mais pontos presentes, mais as retas se aproximarao da
curva, mas tambem mais dados serao gastos para descreve-la [37]. Uma interpolacao
polinomial de ordem n e dada pela equacao geral:
yn = a0 + a1x+ ......+ anxn (2.9)
onde a0, a1, ......, an sao n+ 1 numeros reais constantes e podem ser obtidos a partir
de n + 1 equacoes lineares. A equacao 2.9 pode representar o ajuste de qualquer
15
funcao contendo n + 1 pontos discretos de coordenadas (xn, yn). Na interpolacao
linear, essa equacao torna-se:
y = a0 + a1x (2.10)
e tem como imagem geometrica uma reta onde x e y sao pontos pertencentes a
mesma, a1 e o coeficiente angular e a0 o coeficiente linear da reta. A Figura 2.8a
mostra um exemplo de conjunto de pontos em uma senoide, enquanto a Figura 2.8b
mostra a correspondente construcao da senoide atraves de interpolacao linear desse
conjunto de pontos.
(a) Pontos da senoide (b) Interpolacao linear dos pontos
Figura 2.8: Remontagem de uma funcao a partir de um conjunto de retas
2.4 Aritmetica em Ponto Fixo
Quando se trata da representacao de dados em sistemas varios fatores sao considera-
dos para identificar os requisitos mais adequados para uma determinada aplicacao.
Os dados podem ser representados em ponto flutuante, forma de representacao que
possui uma faixa dinamica muito maior e erro relativo constante, ou podem ser re-
presentados em ponto fixo, forma que utiliza muito menos hardware e e mais rapido
[40]. A representacao em ponto flutuante e usada em todos os processadores de
uso geral, DSPs mais complexos e Graphics Processing Unit (Unidade de Proces-
samento Grafico) (GPU), enquanto a representacao em ponto fixo e usada como o
metodo computacional basico principalmente em ASICs, FPGAs e DSPs de menor
complexidade[41].
16
Os engenheiros da area de sistemas levam em conta a facilidade de projeto, o
desempenho necessario e o custo de fabricacao, na escolha da representacao dos
dados. O custo de projeto pode ser maior para a representacao em ponto fixo,
devido a dificuldade de implementacao de algoritmos, mas o custo do produto final
e geralmente menor, principalmente em aplicacoes de alto volume [40].
Nossa proposta utiliza como representacao dos dados a notacao de ponto fixo
em formatacao de numero Q, mais usada em aplicacoes de processamento digital de
sinais correlatas ao escopo tratado [42, 43, 44].
A representacao em ponto fixo conhecida como formato Q (ou formato de numero
binario fracionario) [36] introduz a ideia de um ponto para orientacao das partes
inteira e fracionaria, similar ao ponto utilizado na representacao dos numeros reais.
Esse ponto e chamado de ponto Q. O numero de dıgitos binarios (bits), tambem
conhecido como tamanho da palavra (WL, do ingles word length) de um numero no
formato Q, e formado pelo numero de bits que representam a parte inteira (Qi) e
pelo numero de bits que representam a parte fracionaria (Qf) (Figura 2.9).
Figura 2.9: Ponto Q divide as partes de uma palavra em formato Q
2.4.1 Propriedades de Representacao no Formato Q
Dentre os principais conceitos relacionados com a representacao de um numero em
ponto fixo, estao: a precisao; o intervalo (relacionado a analise da parte inteira do
numero); a resolucao e a acuracia (estes ultimos relacionados a analise da parte
fracionaria do numero). Estes conceitos sao detalhados a seguir.
O termo precisao e o numero maximo de bits representaveis, nao-zeros. Para a
representacao em ponto fixo Q, precisao e o mesmo que tamanho da palavra.
Intervalo e a diferenca entre as maiores representacoes numericas positiva e ne-
gativa de uma variavel real α, sendo, portanto, no domınio da representacao Q,
o que determina o numero de bits necessarios de Qi. Ha dois metodos que podem
ser utilizados para calcular Qi, dependendo do universo de representacao da variavel
17
real: numeros com sinal ou sem sinal. A representacao em formato Q de um numero
real sem sinal e dada pela equacao:
N[base10] =1
2WL
WL−1∑i=0
2ibi (2.11)
onde o fator 2−WL representa o ajuste da parte fracionaria do numero Q sem si-
nal, enquanto a segunda parte (somatorio) representa um valor inteiro. A palavra
correspondente na base binaria tem o formato da Figura 2.10.
Figura 2.10: Representacao binaria de ponto fixo Q sem sinal
Por outro lado, a representacao Q de um numero real com sinal usa complemento
de dois – veja equacao 2.12. A palavra correspondente na base binaria tem o formato
dado na Figura 2.11.
N[base10] =1
2WL[−2WL−1bWL−1 +
WL−1∑i=0
2ibi] (2.12)
Figura 2.11: Representacao binaria de ponto fixo Q com sinal
18
Para numeros sem sinal, os valores maximo e mınimo do intervalo de variacao
de α sao dados pela Equacao 2.13, a qual pode ser reescrita na forma da Equacao
2.14 para calcular Qi.
0 ≤ α ≤ (2Qi − 1) (2.13)
Qi > (log2(α)) (2.14)
A Equacao 2.14 pode ser generalizada pela Equacao 2.15:
Qi = floor(log2(α) + 1) (2.15)
onde α e a variavel real a ser convertida em Q e floor e uma funcao que executa o
arredondamento do valor para o inteiro mais proximo e menor.
Para numeros com sinal, os valores maximo e mınimo do intervalo representado
sao dados pela Equacao 2.16, a qual pode ser reescrita na forma da Equacao 2.17
para calcular Qi.
(−2Qi−1) ≤ α ≤ (2Qi−1 − 1) (2.16)
Qi > log2(max(abs[αmax, αmin])) + 1 (2.17)
Resolucao e a definicao da menor magnitude diferente de zero representavel por
uma variavel real. A resolucao para uma variavel em formato Q e definida pelo seu
valor Qf. O valor real de cada magnitude (passo) e dado pela equacao 2.18.
Res = 2−Qf (2.18)
Por outro lado, a magnitude da maxima diferenca entre um valor real e sua
representacao e definida como acuracia. Em representacao Q, a relacao que define
a acuracia corresponde a metade do valor da resolucao da representacao.
Dois numeros em formato Q deverao possuir a mesma representacao para se-
rem adicionados, isto e, ter valores de Qf iguais. Isso significa que os pontos Q
dos numeros devem estar alinhados – para nao haver perdas, a representacao do
resultado da soma deve ter no mınimo os maiores valores de Qi e Qf dentre os dois
operandos. Para alinhamento dos pontos, o operando que possuir menor valor de
Qf devera ser deslocado para a esquerda, em grandeza da diferenca entre os valores
19
de Qf dos operandos. Por exemplo, a Figura 2.12 mostra a soma sem sinal de um
termo (5.75) no formato Q3.3 com outro termo (6.5) no formato Q4.2, objetivando
armazenar o resultado (12.25) em uma representacao Q4.4 tomada arbitrariamente.
Figura 2.12: Soma em ponto fixo sem sinal
Quando as operacoes sao realizadas em valores com sinal em complemento de
dois, o operando com menor Qi tera seu bit de sinal estendido ate o Qi do maior
operando, mantendo assim a consistencia da soma. A Figura 2.13 mostra a soma
com sinal do valor −2.25 no formato Q3.3 e do valor 6.5 no formato Q4.2, resultando
em 4.25 na representacao Q4.4 alvo.
Figura 2.13: Soma em ponto fixo com sinal
O produto da multiplicacao de dois numeros Q tem como resultado outro numero
Q, com tamanho de palavra equivalente a soma dos tamanhos dos dois numeros
multiplicados. Diferente da adicao, nao ha a necessidade de alinhamento dos pontos
Q – contudo, um deslocamento e necessario para ajustar o resultado a representacao
em formato Q esperada. A figura 2.14 mostra uma multiplicacao de Q3.3 e Q4.2,
com o resultado sendo armazenado em um valor de representacao Q4.3.
20
Figura 2.14: Multiplicacao em ponto fixo
2.5 Analise de Erro
No escopo desse trabalho, uma das maneiras como o erro pode ser introduzido no
sistema e atraves das aproximacoes inerentes da interpolacao linear. Outros erros
podem ser introduzidos atraves da representacao discreta de numeros reais usando
ponto fixo.
Como dito na sessao 2.3, as tecnicas de ajuste de curvas apresentam uma estima-
tiva para pontos intermediarios a partir de um conjunto discreto de dados, os pontos
intermediarios podendo diferir do valor exato dos pontos reais. Dessa maneira, e
importante mensurar o nıvel de aproximacao desses pontos e avaliar a trajetoria
das curvas/retas em relacao ao conjunto real de dados. Neste contexto, [38] indica
metricas de analise e mensuracao de erros para descrever estatisticamente o nıvel
de acuracia, usando os conceitos de erro absoluto, erro relativo e erro percentual,
descritos nas equacoes 2.19, 2.20 e 2.21.
Dado um valor qualquer v e seu valor aproximado vaprox, o erro absoluto e dado
por
ε = |v − vapprox| , (2.19)
se v 6= 0, o erro relativo η e dado por
η =ε
|v|=
∣∣∣∣v − vapproxv
∣∣∣∣ =∣∣∣1− vapprox
v
∣∣∣ , (2.20)
e o erro percentual δ e dado por
δ = 100%× η = 100%× ε
|v|= 100%×
∣∣∣∣v − vapproxv
∣∣∣∣ . (2.21)
Em outras palavras, o erro absoluto e o modulo da diferenca entre o valor exato
e a aproximacao, o erro relativo e o erro absoluto dividido pela magnitude do valor
21
exato e o erro percentual e o erro relativo expresso em termos de porcentagem. A
avaliacao da porcentagem de erro, em relacao aos diversos tipos de interpolacao
e regressao, e fundamental para definir a escolha da curva de aproximacao ideal
para descrever um determinado conjunto de pontos [39]. Em termos praticos, e
necessario observar qual a finalidade da aplicacao, sua margem de tolerancia a erros
e seu esforco computacional.
2.5.1 Relacao Sinal-Ruıdo
Signal-to-Noise Ratio (Relacao Sinal-Ruıdo) (SNR) e a a relacao entre a potencia
de um sinal (ou informacao significativa) e a potencia do ruıdo de fundo (ou sinal
indesejado):
SNR =PsinalPruido
(2.22)
onde P e a potencia media e ambas as potencias sao aferidas em pontos equivalentes
do sistema.
Muitos sinais tem uma faixa dinamica muito grande e, devido a isso, sao frequen-
temente expressos usando escala logarıtmica em decibeis (dB). Em sua definicao, essa
escala expressa a potencia do sinal, a potencia do ruıdo e a SNR pelas Equacoes
2.23, 2.24, 2.25:
Psinal,dB = 10 log10(Psinal) (2.23)
Pruido,dB = 10 log10(Pruido) (2.24)
SNRdB = 10 log10(SNR) (2.25)
A maxima relacao sinal-ruıdo em uma representacao digital e determinada pelo
numero de bits usados. Isso ocorre porque o nıvel mınimo de ruıdo e o erro causado
pela quantizacao do sinal, conhecido como ruıdo de quantizacao. Esse ruıdo e nao
linear e dependente do sinal amostrado, podendo ser modelado como um ruıdo
adicionado ao sinal analogico [45]. Essa maxima relacao sinal-ruıdo supoe um sinal
perfeito de entrada, o que geralmente nao e o caso. Sinais costumam ser ruidosos e,
dessa forma, o ruıdo do sinal e maior que o ruıdo de quantizacao. Para representacao
binaria em ponto fixo, assumindo um sinal de entrada perfeito e com distribuicao
22
uniforme dos valores, o ruıdo de quantizacao e um sinal aleatorio uniformemente
distribuıdo, com amplitude de pico-a-pico correspondente a um nıvel de quantizacao,
sendo definido pela Equacao 2.26.
SNRdB = 20 log10(2n) ≈ 6.02 · n (2.26)
Esta relacao e muito usada, por exemplo, em aplicacoes de sinal de audio. Cada bit
de quantizacao extra aumenta a faixa dinamica em cerca de 6 dB de potencia.
23
Capıtulo 3
Fluxo de Desenvolvimento de CIs
Digitais
O fluxo de projeto de CIs digitais pode ser dividido entre: front-end, que engloba
atividades relativas as especificacoes, modelagem do sistema e projeto logico do
hardware, alem de processos paralelos de testes, validacao e verificacao dessas etapas;
back-end, que se refere a atividades de implementacao fısica do projeto logico criado
no front-end, assim como testes de verificacao do desempenho e fabricacao.
A parte inicial do fluxo de CIs digitais e comum para implementacoes em ASIC
e em FPGA – o fluxo se torna especıfico so a partir do momento que lida com
etapas de processo fısico, como esbocado na Figura 3.1. A seguir sao descritas todas
as etapas do fluxo de projeto, desde o RTL ate o GDSII, para implementacoes de
projetos em ASIC.
Figura 3.1: Macro etapas do fluxo de projeto de CIs
24
3.1 Fluxo ASIC
O fluxo de projeto em ASIC passou por mudancas significativas nas suas varias eta-
pas nos ultimos 25 anos, devido ao continuado decaimento da escala de tecnologias
Complementary Metal-Oxide-Semiconductor (CMOS). Isso levou o fluxo de projeto
a partir de um conjunto de etapas separadas para uma nova abordagem totalmente
integrada, onde ciclos e realimentacoes de informacoes dentro delas sao necessarias
para vencer o surgimento de desafios, como o vazamento de energia (power leakage),
a variabilidade e confiabilidade do CI. De maneira bem simplificada, o fluxo ASIC
se da nas seguintes etapas [62]:
• Projeto em Alto Nıvel (Nıvel de sistema)
– Levantamento das Especificacoes
– Modelagem do Projeto em C, C++, SystemVerilog ou Matlab
– Selecao de IPs e particionamento Hardware/Software
• Projeto RTL
– Descricao Comportamental/Estrututral em Verilog ou VHDL
• Verificacao do Projeto
– Sistema
– Logica
– Temporizacao
• Projeto Fısico
– Floorplanning
– Placement
– Routing
– Insercao do Clock
• Verificacao de Desempenho e Manufaturabilidade
– Extracao de Parasitas
25
– Verificacao de Integridade de Sinais e Temporizacao
– DRC/LVS
3.2 Projeto em Alto Nıvel (Nıvel de Sistema)
Essa etapa do fluxo envolve a criacao do escopo geral do projeto do CI e onde
se estima os principais aspectos do projeto: area, frequencia de operacao, tensao,
dissipacao de potencia, quantidade de pinos de entrada e saıda, encapsulamento e
porcentagem de yield, entre outros. Esses aspectos sao considerados dentro do plano
de negocio do projeto e trazem em discussao trade-offs como consumo vs. velocidade,
velocidade vs. area ou area vs. tempo de desenvolvimento. Devido ao projeto se
encontrar em estado inicial de abstracao, as mudancas em aspectos importantes
sao geralmente mais faceis de serem feitas. Essa etapa do fluxo e dividida em
levantamento das especificacoes e modelagem da microarquitetura.
3.2.1 Especificacao
A especificacao e um conjunto explıcito de exigencias a serem satisfeitas pelo projeto
do chip – e a fase onde sao definidos os parametros importantes do projeto que se
planeja desenvolver. As especificacoes sao explicitadas em um conjunto de arquivos
e representacoes que podem ser textuais, graficas ou modelos em software (C++,
SystemVerilog, Matlab etc). Em geral, esses documentos possuem informacoes sobre
os requisitos do produto, visao geral do sistema e suas funcionalidades, descricoes de
fluxo de dados, descricoes de entrada e saıda, descricao funcional dos blocos princi-
pais, mapa de memoria e descricoes dos registradores. Alem disso, sao relacionados
documentos que dizem respeito as verificacoes e testes que devem existir nas etapas
do fluxo.
3.2.2 Microarquitetura
A microarquitetura implementa as especificacoes e define mecanismos e estruturas
especıficas para alcancar essa implementacao [72]. Os blocos definidos nas especi-
ficacoes sao detalhados nesta etapa, inclusive com particionamento em blocos inter-
nos menores. A microarquitetura e utilizada pelos engenheiros como um modelo de
26
referencia para o desenvolvimento RTL dos blocos, fornecendo varias informacoes,
tais como especificacao de interfaces em nıvel de bloco, especificacao de novas funcoes
a serem implementadas, interfaces de comunicacao e de requisitos para os engenhei-
ros que desenvolvem outros blocos, avaliacoes do desempenho real (em comparacao
com metas especificadas), dentre outras. Dados como tamanhos de barramentos,
latencia, paralelismos, pipelines, tamanho de memorias e area total sao algumas das
informacoes que tambem podem ser descritas pela microarquitetura.
3.3 Projeto Logico
A fase de projeto logico implementa a descricao RTL do chip baseada na especi-
ficacao da arquitetura, definida na fase de projeto em alto nıvel e projetada na fase
de microarquitetura. Nesta fase, inicialmente se escreve codigo em linguagem HDL
e uma verificacao funcional e realizada, para garantir que o codigo HDL esteja de
acordo com as especificacoes. Em seguida, e feito o processo de sıntese logica do
RTL e a verificacao formal do resultado dessa sıntese, garantindo conformidade en-
tre o que foi escrito e o que foi mapeado. A seguir sao dados detalhamentos dessas
etapas do projeto logico.
3.3.1 Codificacao RTL
As linguagens HDL mais comuns sao Verilog e VHSIC Hardware Description Lan-
guage (VHDL) – ambas igualmente capazes de proporcionar construcoes robustas
na descricao de funcionalidades mais complexas. As descricoes de projetos ASIC
usando essas linguagens sao feitas em 3 diferentes nıveis de abstracao: Comporta-
mental, RTL e Estrutural.
A modelagem comportamental constitui o mais alto nıvel de abstracao. Ela ape-
nas captura o comportamento desejado do bloco e nao se preocupa com a estrutura
do projeto, os elementos combinacionais ou sequenciais utilizados, o sinal de clock
e as restricoes de tempo envolvidos. Na Figura 3.2 ha um exemplo de descricao
comportamental em linguagem Verilog.
A descricao RTL representa o funcionamento do circuito digital, tal que o com-
portamento e definido em termos do fluxo de sinais entre registradores, assim como
27
Figura 3.2: Descricao comportamental Verilog de um somador de 6 bits
as operacoes executadas por circuitos combinacionais. Neste modelo, o projeto in-
teiro e dividido em registradores e projeta-se o fluxo de informacoes entre estes
registradores a cada ciclo de clock. Normalmente, uma descricao RTL divide o pro-
jeto em registradores e os blocos logicos que os unem, como ilustrado na Figura 3.3.
A descricao RTL capta o fluxo de dados, mas nao consegue dar uma boa descricao
do fluxo de controle.
Figura 3.3: Modelo de fluxo de dados entre registradores e celulas logicas
A modelagem estrutural descreve o circuito em forma de instancias de celulas e da
interconexao entre tais celulas, como o exemplo simples da Figura 3.4. A descricao
de modelos estruturais consiste de uma rede de instancias de portas logicas (netlist)
e registradores descritos por uma biblioteca de tecnologia. Essa biblioteca consiste
da descricao de varias celulas de funcionalidade simples (AND, OR, NOT) e algumas
mais complexas. A descricao de uma celula inclui suas caracterısticas de geometria,
atraso de propagacao de sinal e consumo de energia.
A descricao em RTL representa um nıvel de abstracao intermediario entre a des-
cricao comportamental do circuito e a descricao estrutural. O modelo comportamen-
tal possui estruturas que podem nao ser sintetizaveis (lacos e atrasos, por exemplo)
nem transformadas diretamente em uma netlist em nıvel de portas logicas. Ja a ne-
28
Figura 3.4: Modelo estrutural com descricao de portas logicas
tlist, no caso de blocos complexos, contem um volume de informacoes impraticavel
de tratamento pelo engenheiro projetista – a viabilidade de tratamento de tais blo-
cos somente e possıvel atraves de recursos computacionais realizados pela sıntese
logica. Devido a isso, a fase de codificacao RTL se torna uma etapa imprescindıvel
no fluxo ASIC.
Muitas tecnicas de codificacao RTL sao necessarias para se lidar com os princi-
pais aspectos de desempenho, consumo e roteabilidade dos blocos desenvolvidos. O
desempenho e melhorado a partir da identificacao dos caminhos crıticos e mudancas
no RTL, a fim de diminuir a profundidade da logica. O consumo pode ser melhorado
com tecnicas que facilitem a insercao de clock-gating e power-gating, quando possıvel.
Ja a roteabilidade pode ser identificada e aperfeicoada atraves da reestruturacao de
hierarquias de RTL mais congestionadas.
Em geral, essa etapa do fluxo requer bastante tempo de desenvolvimento, de-
vido a necessidade de garantir a exatidao da logica. O produto desta fase e um
codigo hierarquico RTL que fomenta as etapas posteriores de sıntese logica e de
floorplanning.
3.3.2 Sıntese logica
A sıntese logica e a etapa do fluxo ASIC que tem como objetivo mapear a descricao
RTL do projeto para uma netlist, utilizando celulas logicas presentes na biblioteca
da tecnologia de fabricacao escolhida. Atraves de restricoes (constraints) fornecidas
pelo projetista, esta etapa busca atingir metas de desempenho, consumo de energia e
area, o que esta diretamente relacionado ao menor uso de elementos logicos possıvel.
O processo de sıntese logica e dividido em etapas.
Primeiro, a descricao RTL e compilada em formato de netlist generica, indepen-
29
dente da tecnologia de processo. Implementacoes de funcoes logicas que definem o
comportamento de um CI, na pratica, sao feitas atraves de redes de multiplos nıveis
de elementos logicos. Dessa forma, a partir do RTL, ferramentas de sıntese logica
elaboram redes booleanas de multiplos nıveis correspondentes as funcoes logicas.
Em seguida, a netlist generica e submetida a analise logica para identificar e
eliminar redundancias e equilibrar cones logicos das redes booleanas. Em seguida,
a netlist generica otimizada e mapeada para portas dependentes da tecnologia. O
mapeamento e influenciado por fatores como as portas disponıveis (funcoes logicas)
na biblioteca de tecnologia, a medida de forca de conducao (drive strenght) e carac-
terısticas de consumo de energia, de atraso e de area de cada porta.
Por fim, a netlist mapeada tem sua temporizacao (timing) analisada atraves
da analise estatica de tempo Static Timing Analysis (STA), o que permite corrigir
caminhos crıticos para satisfazer as restricoes de tempo.
A saıda da fase de sıntese logica e uma netlist mapeada na tecnologia alvo, com
requisitos alcancados (ainda estimados) de area, desempenho e consumo; arquivos
com informacoes de restricoes de timing do projeto, designados Synopsys Design
Constraints (SDC), e com restricoes de consumo do projeto, designados Common
Power Format (CPF); e relatorios de area, consumo e desempenho.
A sıntese pode gerar (por alguma falha durante o processo) uma netlist incoerente
com a descricao funcional presente no RTL. Para garantir a exatidao do processo
de sıntese, faz-se necessario verificar se as duas especificacoes sao funcionalmente
equivalentes, o que e feito atraves de uma verificacao formal de equivalencia logica,
dita Logical Equivalence Check (LEC).
Com o crescimento da complexidade dos chips e dos processos de desenvolvi-
mento, hoje em dia fornecedores de ferramentas de Computer Aided Design (CAD)
possuem solucoes poderosas para analise formal de equivalencia. Apesar do uso mais
comum do LEC ocorrer na analise entre o RTL pre-sintese e a netlist pos-sintese,
etapas intermediarias do fluxo podem ser verificadas para garantir equivalencia entre
as netlist envolvidas. Tal verificacao pode detectar erros introduzidos por alteracoes
de engenharia aplicadas as netlists (para a implementacao de atualizacoes finais de
temporizacao ou funcionalidade), ou inconformidades oriundas de erros na propria
ferramenta de sıntese (durante as etapas de insercao de estruturas de testes no cir-
30
cuito ou na passagem entre as etapas do fluxo como um todo).
3.4 Projeto Fısico
O projeto fısico de um circuito e a etapa do fluxo ASIC posterior a sıntese logica e
anterior a fabricacao do CI. E durante o projeto fısico que a descricao dos componen-
tes e ligacoes logicas presentes na netlist mapeada para a tecnologia e transformada
em uma representacao geometrica, conhecida como leiaute, do CI que devera ser fa-
bricado. Para que seja realizada, essa fase inclui as seguintes etapas: floorplanning,
particionamento logico, planejamento de potencia, placement, sıntese da arvore de
clock, roteamento e etapas de analise de signoff. A sequencia pratica dessas etapas
e vista na figura 3.5.
3.4.1 Floorplanning
O projeto fısico comeca com a realizacao do floorplan. Esse termo tem origem na
arquitetura classica e basicamente denota a elaboracao de uma “planta baixa”do
leiaute, decorrente dos processos de posicionamento dos blocos/macros (tais como
PADs, celulas de entrada e saıda, blocos de memorias e circuitos analogicos), parti-
cionamento do projeto e planejamento de distribuicao energetica [67, 68].
O Floorplanning deve identificar as estruturas que serao colocadas juntas, alo-
cando espaco para elas, de tal forma que os requisitos de area total disponıvel,
desempenho exigido e roteamento de fios seja o mais otimizado possıvel. Essa etapa
e otimizada atraves da realizacao de varias iteracoes, nas quais o projetista pode
rever as estimativas dos requisitos e posicionamentos dos blocos, com base nos resul-
tados e realimentacoes da etapa de sıntese logica, a qual, por sua vez, pode utilizar
do flooplaning para melhorar as estimativas e a analise de caminhos crıticos. Adi-
cionalmente, o Floorplanning define a razao de aspecto da area de die do projeto e
cria as fileiras (com respectivas faixas de alimentacao) nas quais serao alocadas as
celulas logicas padrao (posteriormente pela etapa de placement).
A Figura 3.6 mostra um esboco dos principais aspectos desta etapa.
31
Figura 3.5: Diagrama de etapas do fluxo ASIC da netlist ao GDSII
32
Figura 3.6: Alocacao das areas do core e de E/S em um leiaute
3.4.2 Particionamento
O particionamento e um processo de dividir o chip em pequenos blocos funcionais,
os quais sao tratados localmente para, em seguida, serem agrupados no projeto final
– chamado de nıvel de topo. Para grandes projetos, pratica-se normalmente uma
abordagem hierarquica que usa o paralelismo nas atividades para reduzir o time-to-
market e tornar mais facil o fechamento dos requisitos de regioes independentes no
chip. Esta separacao fısica do projeto e diferente da hierarquia logica imposta pela
estruturacao de linguagens HDL, embora geralmente siga os mesmos limites, de tal
forma que existe um mapeamento entre hierarquia logica e fısica. O particionamento
logico e aquele feito na fase de projeto RTL, quando baseia-se nas funcoes dos
modulos e blocos do projeto, onde normalmente e determinado pelo metodo de
codificacao RTL de cada projetista. O particionamento fısico e aquele que baseia-
se nas consideracoes de backend, tais como placement de celulas logicas e de E/S,
roteamento e temporizacao associada aos blocos.
A abordagem hierarquica de particionamento lida bem com os requisitos de-
finidos nas fases de especificacao e microarquitetura, tais como a seguranca, as
limitacoes de ferramentas de CAD em relacao a enorme quantidade de portas, a
obtencao de IP somente em etapas finais do projeto, os diferentes modos de energia
etc. Os blocos hierarquicamente particionados sao implementados de forma inde-
pendente e tem seus proprios requisitos em termos de placement, roteamento, timing
33
e integridade de sinais.
3.4.3 Planejamento de Energia
A distribuicao da alimentacao de energia por todo o chip e um fator crıtico para o
correto funcionamento do leiaute apos fabricacao. Ela afeta a temporizacao quando
ha uma queda muito grande nos nıveis nominais de tensao nas trilhas (IR Drop)
[70, 71, 72] ou na presenca de um excessivo aumento no valor de aterramento. Alem
disso, ela pode provocar falhas a longo prazo, com a deterioracao de trilhas pelo
efeito de eletromigracao [73, 74].
O planejamento de potencia e uma etapa que se propoe a projetar uma rede de
distribuicao de energia global, que forneca alimentacao e aterramento apropriados a
todas as instancias do projeto. Garantir o numero suficiente de PADs de alimentacao
e terra e garantir potencias adequadas, aneis (power rings) bem dimensionados ao
redor do die e de macros, e trilhas (power stripes) de linhas de alimentacao para
distribuir a potencia por todas as celulas padroes sao acoes que garantem um bom
planejamento de energia.
A rede de distribuicao pode ser feita com power rings (Figura 3.7a) bem largos ao
redor do core e outros de dimensoes menores nos blocos, podendo ser compartilhados
entre si. Este metodo requer menos recursos de roteamento, porem e pouco flexıvel
caso haja necessidade de reposicionamento de algum bloco.
Outra maneira que a rede de distribuicao pode ser feita e atraves de uma grade
uniforme de stripes conhecida como Mesh (Figura 3.7b). Esse metodo distribui
melhor a energia, porem aumenta consideravelmente o roteamento.
3.4.4 Placement
O placement e a parte do fluxo de projeto fısico que atribui localizacoes exatas para
os varios componentes do circuito, dentro da area do nucleo do chip [63]. Para
as celulas logicas padrao, o placement e feito utilizando-se um altura constante,
disposta em fileiras atraves de toda a extensao do nucleo do chip. As celulas sao
dispostas nas fileiras, podendo ter largura variavel e ser posicionadas coladas umas
as outras.
34
(a) Planejamento de energia com
block rings
(b) Planejamento de energia em
rede Mesh
Figura 3.7: Topologias de planejamento de energia em projetos ASIC
O placement deve ser realizado otimizando uma serie de questoes, para garantir
que um circuito corresponda as exigencias de desempenho:
• Comprimento total da soma dos fios: Minimizar o tamanho dos fios, para que
a soma do comprimento de todos os fios no projeto seja reduzida, e o principal
objetivo de um bom placement. Isso resulta em menor tamanho do chip,
menor consumo de energia e menor atraso dos sinais (ao reduzir as distancias
de propagacao).
• Temporizacao: O ciclo de clock de um chip e determinado pelo atraso do seu
caminho crıtico (mais longo). O placement deve considerar posicionamentos
no projeto que melhorem a temporizacao desses caminhos.
• Congestionamento: Alem de minimizar o tamanho total dos fios, e necessario
satisfazer a passagem do roteamento dentro das regioes com alta densidade
de fios locais. Uma regiao congestionada pode levar a excessivos desvios de
roteamento ou fazer com que seja impossıvel rotear todas as ligacoes.
• Potencia: Convem distribuir as celulas de componentes locais, de modo a redu-
zir o consumo geral de energia, aliviar indesejaveis pontos quentes (hotspots)
e suavizar os gradientes de temperatura dentro de todo o projeto.
35
A etapa de placement e geralmente separada em placement global e placement
detalhado [76].
No placement global, todas as celulas inicialmente pertencem a um bloco retan-
gular do tamanho da area do nucleo do chip. No decorrer do processo, as celulas sao
distribuıdas em uma serie de blocos menores no nucleo do chip e, ao final da fase,
cada pequeno bloco contera tipicamente poucas celulas. O objetivo do placement
global e encontrar um espalhamento ideal das celulas, sem sobreposicoes, que atinja
as exigencias listadas anteriormente.
Um leiaute pos placement nao e aceito se as celulas/blocos se sobrepuserem em
um mesmo local do chip ou ocuparem regioes ilegais (como fora das fileiras des-
tinadas as celulas padrao) – veja Figura 3.8. Esse leiaute pode ser resultante do
placement global ou ser produzido a partir de mudancas incrementais, tais como re-
dimensionamento das celulas e insercao de buffers (celulas auxiliares que nao afetam
a logica).
Figura 3.8: Estimativa de posicao das celulas no placement global
O placement detalhado e responsavel por fazer a correcao de ilegalidades no
placement global e no placement incremental quando ha alteracao na netlist. E
responsavel por encaixar as celulas padrao nas fileiras, de modo que nao haja so-
breposicao entre elas – isto e feito atraves de algoritmos que impactem o mınimo
possıvel na temporizacao e no tamanho dos fios. Adicionalmente, o placement deta-
lhado melhora o tamanho dos fios atraves do rearranjo dos grupos de celulas, alem
de melhorar o roteamento dos fios atraves da redistribuicao dos espacos livres entre
36
as celulas. O resultado disso e visto na Figura 3.9.
Figura 3.9: Correcao do posicionamento pos-placement detalhado
3.4.5 CTS
Para projetos sıncronos, a transferencia de dados entre elementos funcionais e feita
por sinais de clock – pode haver mais de um sinal desse tipo, com diferentes perıodos.
Alem disso, projetos sıncronos convencionalmente baseiam-se na suposicao de que
cada sinal de clock, na mesma fase, chegue em cada elemento registrador exatamente
ao mesmo tempo. Na pratica, porem, devido a diferencas de atrasos de interligacao
na rede de distribuicao de clock, e difıcil conseguir que um sinal de clock chegue
simultaneamente a todos os registradores. As diferencas de atraso de fase podem
ser afetadas por varios fatores, como a variacao de processo de CI, ruıdos na ali-
mentacao de energia (devido a crosstalks) e variacao de temperaturas no die (devido
a diferentes nıveis de atividade/inadequacao da rede de distribuicao de energia).
Para corrigir a diferenca de atrasos, uma rede de buffers e inserida no caminho
de cada sinal de clock, de modo que o atraso total da fonte do sinal ate todos os
destinos e minimizada. Este processo e chamado de sıntese da arvore de clock e
tem como entradas: um arquivo de especificacao da arvore de clock, a netlist, a
biblioteca de temporizacao/atrasos (com extensao .lib), a biblioteca fısica de celulas
(com extensao .lef), informacoes do placement e flooplan atual do projeto; em relacao
as saıdas produzidas, tem-se uma netlist atualizada com a arvore de clock inserida,
um guia para o roteamento e celulas de buffers da arvore em um novo placement
37
(Figura 3.10).
Figura 3.10: Distribuicao do clock em um leiaute
3.4.6 Roteamento
A etapa de roteamento e responsavel por projetar todos os fios necessarios para ligar
os pinos de todas as celulas do circuito, com a necessidade de garantir as regras de
processo de fabricacao. As conexoes entre as celulas sao feitas utilizando camadas
de metais sobrepostas, conectadas atraves de vias (Figura 3.11).
Figura 3.11: Roteamento – visao de camadas
Durante a adicao de fios ocorre impactos negativos sobe a temporizacao dos
caminhos de dados e seus tempos de transicao e capacitancia, devido a introducao
de efeitos parasitas de RC (Resistencias e Capacitancias), ruıdos de sinal e aumento
do IR Drop. Esses efeitos sao analisados dentro dos tres grandes requisitos que
38
devem ser tratados por um roteamento adequado: desempenho, integridade de sinais
e integridade de fabricacao [76].
O roteamento, assim como o placement, e geralmente dividido em dois passos:
roteamento global e roteamento detalhado. O roteamento global determina rotas
entre uma malha grossa de celulas de roteamento globais, chamadas de g-cells, abs-
traindo, durante esse processo, os locais permitidos para conexao de cada pino das
portas. Nessa etapa, o chip e particionado em faixas de linhas horizontais e ver-
ticais e cada faixa tem uma capacidade fixa de rotas. Sao gerados entao fios para
as conexoes do circuito e esses fios sao colocados nas faixas, como na figura 3.12.
Otimizacoes entao sao feitas para evitar congestionamentos, atraves de trocas de
fios atribuıdos a g-cells com capacidade de rotas ja excedida para g-cells que ainda
tenham rotas disponıveis.
Figura 3.12: Roteamento – organizacao da area em g-cells
O roteamento detalhado especifica as rotas reais que serao feitas, os fios em cada
camada de metal, os locais onde os fios se conectarao aos pinos e as vias entre as
camadas. Todos essas acoes devem respeitar as regras de processo de fabricacao e os
bloqueios de roteamento determinados pelos projetistas. Nessa etapa, a topologia
real dos fios e determinada e sao feitas as escolhas de largura para fios, camada do
metal (layer), vias e contatos [63]. A medida que se adiciona os fios, ocorre um
aumento no congestionamento e no comprimento medio dos mesmos, o que pode
provocar problemas de temporizacao, de ruıdo de acoplamento e de fabricacao.
Para corrigir a temporizacao, o roteamento detalhado prioriza inicialmente o
39
roteamento dos caminhos com tempo mais crıticos, diminuindo os tamanhos e dando
preferencia a layers melhores.
Para corrigir o ruıdo de acoplamento, o roteamento separa conexoes ruidosas
das sensıveis ao ruıdo, atraves da insercao de espacos vazios entre elas para dimi-
nuir o acoplamento. Em casos mais severos, ao inves de espacos vazios, um fio de
aterramento adjacente e inserido, numa tecnica chamada de shielding.
Para melhorar os riscos de erros na fabricacao, o roteamento se utiliza de tecnicas
de redundancia de vias e contatos, adicao de fios mais largos e insercao de preenchi-
mento de metal (metal fill) para garantir uma densidade de metal uniforme.
A fase de roteamento entrega em sua saıda uma netlist arranjada (pos-placement)
e roteada legalmente, passando esta informacao para as etapas de otimizacoes pos-
roteamento e signoff.
3.4.7 Analises de Signoff
Analises de signoff consistem em uma serie de etapas de verificacao, as quais de-
vem ser feitas antes da fabricacao (tapeout) do projeto, para garantir sua exatidao e
integridade. Tais verificacoes ocorrem em diferentes ambitos: requisitos de tempo-
rizacao, incluindo integridade de sinais durante a analise estatica de tempo; requi-
sitos de energia, IR Drop, eletromigracao e ruıdos; requisitos fısicos que garantem
a fabricacao, como DRC (Design Rule Checking), checagem de efeito de antena e
ERC (Electrical Rule Checking); requisitos logicos, onde a funcionalidade e checada
formalmente atraves de LEC e Layout Versus Schematic (LVS).
Quando o projeto passa por todas as verificacoes de signoff, um GDSII e produ-
zido e enviado a fabricante de semicondutores (foundry) para comecar a preparacao
das mascaras.
Verificacao Fısica
Como os processos de fabricacao de CI tem evoluıdo bastante, surgiram varias regras
e orientacoes que garantem tratar da complexidade do processamento. Estas regras
sao frequentemente chamadas de Design for Manufacturing (DFM) e dizem respeito
a aspectos como antenas, densidade de camadas de metais, alocacao de metais e
diretrizes de rendimento (yield), dentre outros [50].
40
Na pratica, essas regras sao uma serie de parametros fornecidos pelas foundries
que permitem ao projetista verificar o resultado correto de um conjunto de mascaras.
Os parametros sao especıficos para cada processo de fabricacao dentro das foundries.
A verificacao e realizada por ferramentas automatizadas que utilizam a checagem de
Design Rule Checking (DRC). O DRC se baseia em regras com restricoes de processo
de fabricacao para atingir um alto rendimento, baixo consumo e alto desempenho,
que incluem, por exemplo, largura mınima e espaco mıniasmo entre as linhas de
metais em cada camada, involucro mınimo entre as linhas de metais e vias, tama-
nho maximo dos transistores, regras de protecao de descarga eletrostatica (ESD) e
estruturas de linhas de memorias, dentre outras regras.
Verificacao Formal
Na etapa de signoff, algumas verificacoes formais sao realizadas para garantir que
a netlist final e o GDSII que sera gerado sejam condizentes com o circuito desejado
presente na netlist inicial, como na Figura 3.13.
Figura 3.13: Arquivos onde se aplica analise de conformidade (LVS e LEC)
Durante o signoff, e verificada a conformidade logica (LEC) entre a netlist poste-
rior ao roteamento e a netlist modificada para se adequar as condicoes de verificacao
de signoff. Essas modificacoes sao conhecidas como ECO (Engineering Change Or-
der) e podem adicionar estruturas ao projeto, a fim de corrigir problemas de ruıdo
e atraso de caminhos crıticos identificados apos aumento na precisao dos calculos de
tempo no STA signoff.
Outra verificacao formal feita no signoff e o LVS. Apesar da verificacao fısica
do projeto assegurar a fabricacao correta, ela nao garante que o leiaute representa o
41
circuito desejado. O LVS analisa se as formas desenhadas no leiaute e as ligacoes en-
tre elas representam, com exatidao, os componentes eletricos descritos no diagrama
do circuito na netlist esquematica. Os erros que podem ser verificados no LVS sao:
erros de conexoes em aberto ou em curto; anotacoes de texto erradas no leiaute que
nao permitam relacionar adequadamente os polıgonos com os dispositivos na netlist
esquematica; tamanhos errados de dispositivos; construcoes erradas de dispositivos
no leiaute [49].
STA Signoff
As funcionalidades do projeto e o desempenho sao afetados por ruıdos e crosstalks
[60]. Esses fatores podem limitar a frequencia de operacao e causar falhas funcionais
no projeto. Deve-se verificar se o projeto e robusto o suficiente para aguentar os
ruıdos sem afetar sua taxa de desempenho [52].
STA e um metodo estatıstico que independe dos valores nas entradas e e usado
na verificacao da temporizacao do projeto como um todo, validando se o mesmo
pode operar a uma determinada taxa de frequencia de clock. Contrapoe-se a analise
de temporizacao por simulacao, a qual estimula partes do projeto, requer muito
mais processamento e nao consegue lidar com caracterısticas fısicas como crosstalks,
ruıdo e variacoes on-chip [52].
Apesar de o RTL ser realizado para encontrar os piores caminhos durante varias
etapas, desde a sıntese logica ate todo o projeto fısico, e durante a etapa de pos-
roteamento (signoff ) que os parasitas RC sao considerados para as conexoes reais
do projeto – e nao mais para as conexoes estimadas idealmente. Esses parasitas im-
pactam no atraso dos sinais tanto em caminhos individuais quanto na interferencia
entre caminhos (ruıdos e crosstalks). Em ambos os casos, deve-se avaliar se o de-
sempenho do projeto em termos de temporizacao e atendido. Essa verificacao e feita
com STA signoff.
3.5 Verificacao Funcional
A verificacao funcional e o processo de analise que atesta se o projeto desenvolvido
realiza o que ele se destina a fazer. Esta e uma tarefa complexa, a qual toma a
42
maior parte do tempo e esforco de desenvolvimento na maioria dos grandes projetos
de sistemas em microeletronica [58].
A verificacao funcional pode ser estatica (que engloba as verificacoes formal e de
equivalencia logica) ou dinamica (baseada em simulacoes logicas) [61].
Na verificacao estatica, nenhum estımulo de entrada e aplicado ao projeto. Em
vez disso, o projeto e mapeado em uma estrutura grafica que descreve suas funcoes,
utilizando BDDs (Diagramas de Decisao Binaria) ou outras representacoes ma-
tematicas que especifiquem a funcao que executa o projeto durante todo o tempo.
Dessa forma, na verificacao formal, prova-se ou nao certas propriedades do projeto
atraves da determinacao de contradicoes na estrutura matematica. Ja na verificacao
de equivalencia logica, usando pontos correspondentes das representacoes em analise
(RTL e netlists), verifica-se se tais pontos sao logicamente equivalentes (isto e, exe-
cutam a mesma expressao booleana). Essa comparacao e feita em uma estrutura
de dados gerada para padroes de valor de saıda aplicados a um mesmo padrao de
entrada.
Simulacao e o metodo mais comum de verificacao funcional [56]. Nela, estımulos
ou padroes de entrada sao gerados e aplicados ao projeto ao longo de varios ciclos de
clock, com o resultado correspondente sendo coletado e comparado com um modelo
de referencia, para verificar a conformidade com a especificacao [57]. Esse processo
e feito atraves da criacao de ambientes de verificacao.
Os ambientes de verificacao, conhecidos como testbenches, modelam todo o uni-
verso para o projeto e devem suportar todas as acoes que podem acontecer com
o mesmo (o que nem sempre e viavel computacionalmente). O ambiente basico
consiste no projeto ou logica que esta sendo verificada, componentes de estımulo,
componentes de monitoramento (monitor), componentes de checagem e validacao
(checker) e componentes do painel de avaliacao (scoreboards) [58]. Em geral, um
testbench e todo o conjunto de codigo usado para criar, observar e verificar uma
sequencia de entradas pre-determinada para o projeto, seja tal sequencia gerada
numa abordagem direta ou por um metodo aleatorio. O testbench e um sistema
fechado, o que significa que o nıvel de topo do banco de ensaio nao tem entradas
ou saıdas. E efetivamente um modelo do universo do ponto de vista do projeto
avaliado, que no ambiente considerado pode ser chamado de projeto-sob-verificacao
43
(DUV) ou projeto-sob-teste (DUT).
Pesquisadores nas universidades e na industria vem realizando estudos sobre
diferentes abordagens para verificacao funcional. Pode-se considerar cinco tecnicas
principais para verificacao baseada em simulacao [54, 55, 59]:
• Testes direcionados;
• Simulacao aleatoria;
• Verificacao orientada a cobertura;
• Verificacao baseada em Assertions ; e
• Verificacao baseada em Emulacao.
Nenhuma das tecnicas citadas, por si so, e plenamente capaz de assegurar a
verificacao livre de erros – a melhor solucao possıvel para uma verificacao robusta
do projeto e adotar um conjunto delas, para maior exploracao das caracterısticas
de um projeto. Por causa disso, surgiram metodologias mais robustas que vao
alem dessas tecnicas, buscando a adocao de linguagens especializadas de alto nıvel,
orientacao a objetos e reuso de componentes. Dentre as principais metodologias
surgidas estao a Cadence OVM, Synopsys VMM, Mentor AVM, Cadence eRM e
Accellera UVM, esta ultima sendo adotada sistematicamente pela industria a partir
de 2014, tornando as demais obsoletas. Naturalmente, apesar disso, cada engenheiro
de verificacao procura adotar uma metodologia que melhor se adapte a sua equipe
e aos projetos tratados.
44
Capıtulo 4
Metodos e Desenvolvimento da
Proposta
Este trabalho fornece um conjunto de arquivos que podem ser utilizados como parte
integrante de um sistema de processamento de sinais que necessite de tratamento,
em alguma de suas etapas, utilizando a tecnica de janelamento. De modo geral, o
produto final e um modulo que realiza a multiplicacao, amostra a amostra, do valor
do sinal de entrada por um valor da funcao janela de mesmo ındice, armazenado
dentro do proprio modulo, entregando em sua saıda amostras de um sinal ponderado.
As caracterısticas de hardware desse modulo sao configuradas atraves de parame-
tros, derivados do hardware do projeto ao qual ele se integra. Os procedimentos de
como foram desenvolvidos os arquivos, suas parametrizacoes, formas de uso e testes
sao descritos nas secoes deste capıtulo.
O conjunto de arquivos desenvolvidos e dividido em duas partes: sistema em
codigos fonte Matlab (M-File); e arquivos de descricao de hardware em Verilog
HDL.
O arquivos em Matlab formam um sistema com dois propositos diferentes. O
primeiro e o de servir de modelo de referencia para validacao e verificacao do projeto
em HDL – essa funcao e descrita no topico de verificacao 4.3. O segundo, descrito na
sessao 4.1, e especıfico para cada aplicacao e objetiva criar os dados de configuracao
necessarios para o correto funcionamento do IP, gerando o modulo que armazena os
dados da funcao janela.
Os arquivos em Verilog sao os componentes do IP desenvolvido, os quais serao
45
incorporados pelos projetos em ASIC ou FPGA, a fim da realizacao em hardware
das operacoes de janelamento de funcoes. A arquitetura proposta, as interfaces de
comunicacao e a parametrizacao desses arquivos sao mostradas na secao 4.2.
4.1 Sistema em Alto Nıvel
Como ja dito anteriormente, os dados que representam os pontos da funcao janela
em uma implementacao em hardware precisam ser conhecidos previamente, para
entao serem organizados de uma maneira a serem persistidos na aplicacao final.
A escolha dessa organizacao dos dados, em nosso trabalho, objetivou diminuir a
quantidade total de informacoes armazenadas atraves do uso de interpolacao linear.
O algoritmo que realiza a analise da funcao janela, para obter a reducao dos pontos,
foi construıdo em Matlab e e explicado na sequencia.
O comprimento N de uma funcao janela, analoga a Equacao 2.7, varia de acordo
com a aplicacao onde essa funcao esta sendo utilizada. Para diminuir o numero de
dados que precisam ser armazenados, foi utilizado o erro maximo absoluto como
condicao de parada em um algoritmo de busca de partes da funcao janela que terao
os pontos interpolados para reconstrucao dos pontos originais da funcao janela.
Dessa forma, os pontos que serao recriados apresentarao um erro de aproximacao
que corresponde a uma relacao sinal-ruıdo previamente estabelecida, com o ajuste
correspondendo a quantidade total de partes que precisarao ser criadas para garantir
tal relacao. Consequentemente, a quantidade de dados (pontos) necessarios podera
variar para diferentes funcoes com o mesmo erro maximo definido como criterio de
parada.
O algoritmo de busca desenvolvido obtem a maior reta possıvel com um determi-
nado coeficiente angular que represente uma parte da funcao janela, de forma que a
diferenca entre os pontos gerados pela interpolacao e os pontos da janela de mesmo
ındice seja menor ou igual ao parametro de erro maximo. Cada reta obtida tera seu
ponto extremo compartilhado com a reta subsequente, ate que o conjunto de retas
interligadas determine todo o corpo da funcao janela.
A execucao da busca e feita em uma rotina de forca bruta, a qual incrementa em
passos discretos com a menor representacao do valor do erro maximo, a fim de obter,
46
para cada iteracao, a quantidade de retas que formarao a funcao e sua respectiva
SNR. Com isso, o programa permite a obtencao da melhor configuracao de SNR
para um mesmo numero de retas. Essa configuracao tera as informacoes das retas
organizadas em uma tabela de dados, detalhada no item 4.1.1.
A Figura 4.1a mostra um exemplo de reta selecionada para formar a primeira
parte de uma funcao, enquanto a Figura 4.1b mostra exemplo das retas que no final
remontara toda a funcao. O algoritmo utilizado pelos exemplos da Figuras 4.1a e
4.1b tem, em cada iteracao com erro maximo absoluto, os seguintes passos:
• Considerando Rif uma reta R onde pi e o ponto inicial, pf e o ponto final e ai
e o coeficiente angular, tome a primeira reta R12 com pi = 1 e pf = 2, tendo
a1 como coeficiente angular.
• Reconstrua R12 com incrementos sucessivos do valor de a1 e verifique se todos
os pontos de R12, que representam os pontos da funcao de janelamento, estao
dentro da margem de erro definida.
• Tome entao uma reta R13 com mesmo pi = 1 e com pf = 2+1 e coeficiente
angular a2. Reconstrua a reta com incrementos sucessivos do valor de a2 e
verifique se os pontos estao dentro da margem de erro definida.
– Se todos os pontos estiverem dentro da margem, analise uma nova reta
com mesmo pi e com pf = pf+1.
– Caso algum ponto da reta nao tenha alcancado o erro esperado, a reta
imediatamente anterior e definida como a reta mais extensa possıvel para
aquele trecho de curva da funcao de janelamento.
• O novo pi passa a ser o ponto imediatamente depois do pf da reta definida
anteriormente.
• Repita o algoritmo ate toda a primeira metade da curva ser definida por um
conjunto de retas. A outra metade e suplementar a primeira, devido a simetria
inerente das funcoes de janelamento.
47
(a) Busca da primeira reta da funcao
(b) Retas obtidas ao final da busca
Figura 4.1: Exemplo do algoritmo de busca das retas que formarao a funcao
48
4.1.1 Representacao da Tabela de Dados da Compactacao
dos Pontos
Aplicacoes que realizam o processo de janelamento da maneira convencional, citada
no Capıtulo 1, tem internamente uma memoria para armazenar os dados necessarios
para representacao dos pontos da funcao janela. A seguir, e feita uma descricao de
como tais dados sao encaixados no contexto deste trabalho, assim como o uso de
recursos correspondente.
Para se armazenar todos os pontos de uma funcao janela, tomando N como o
numero de pontos da funcao e WL o tamanho da palavra que representa os pontos no
formato Q definido pela aplicacao, a quantidade MEM de bits necessarios que serao
armazenados em memoria e dada por 4.1. E a caracterıstica linear das variaveis dessa
equacao que se pretende reduzir e, por isso, a mesma sera utilizada na comparacao
com o que esta sendo proposto.
MEM = (N ∗WL)/2 (4.1)
Para reconstruir a funcao a partir do conjunto de retas obtido no algoritmo
de busca, faz-se necessario armazenar os dados de coeficiente angular e numero de
pontos de cada reta. A quantidade de bits necessaria para esses dados varia de
acordo com a representacao em hardware escolhida e, para cada reta do conjunto,
ha uma palavra correspondente na memoria. A Figura 4.2 mostra que o conjunto
das variaveis coeficiente angular, numero de pontos e numeros de retas determina
o volume final de informacoes. Alem disso, como o ponto inicial da funcao tambem
devera ser conhecido pelo processamento em hardware, o mesmo tambem devera ser
armazenado em memoria. Para as discussoes posteriores, consideramos N o numero
de pontos da funcao janela, Nr o numero de retas para reconstruir a funcao, α o
coeficiente angular das retas, Np o numero de pontos de cada reta e WL a quantidade
de bits da representacao em hardware.
E imediata a analise de que o maior numero de pontos que uma reta pode possuir
ocorrera quando uma unica reta representar todos os pontos da primeira metade da
funcao. Em termos de recursos, este e o pior caso para esta variavel e pode ser
49
Figura 4.2: Esquema da tabela de dados das retas
equacionado por:
Np = log2(N/2) (4.2)
Por outro lado, caso (N/2)− 1 retas sejam necessarias para representar todos os
pontos da funcao, ou seja, se todas as retas sao formadas por apenas dois pontos,
a variavel Np pode ser representada por 1 bit apenas para cada reta. Apesar do
menor uso de bits para representacao, essa situacao e altamente indesejavel devido
a reducao do numero total de bits se dar em escala logarıtmica e a quantidade de
retas Nr ter contribuicao em escala linear. Essas duas variaveis sao inversamente
proporcionais.
A representacao em hardware da magnitude do coeficiente angular e influenciada
tanto pela resolucao da representacao, quanto pela relacao entre a forma e a quan-
tidade de pontos da funcao janela. Quanto maior for a inclinacao da funcao, maior
sera o valor absoluto de α para uma determinada reta. Isso pode ser observado
na Figura 4.3, na qual sao tracadas diferentes curvas de janela Kaiser de mesmo
tamanho, atraves da variacao do parametro α.
A janela Kaiser pode aproximar quaisquer outras janelas atraves da variacao
de α [4, 48] e, por isso, pode ser utilizada para analisar os casos de influencia da
inclinacao no tamanho da variavel α das retas. O maior valor da variavel aconte-
cera na representacao da inclinacao de 90o em uma funcao retangular, podendo ser
aproximada pela janela Kaiser com α = 0, conforme visto na Figura 4.3. Para esses
casos, o valor de α tem o tamanho de WL− 1, mas implica em uma quantidade Nr
fixa de 3 retas. Para os demais casos, as Tabelas 4.1 e 4.2 mostram os resultados de
simulacoes para uma variedade de funcoes e diferentes tamanhos, onde foi obtido o
numero de bits necessarios para representar o maior valor de α dentre as retas. De-
50
Figura 4.3: Janelas Kaiser de 64 pontos para α = [0, 2, 4, 6, 8, 10, 30]
pois de testes exaustivos, foi observado que, para cada potencia de dois no tamanho
da janela, o tamanho maximo da palavra para representacao de α diminui em 1 bit.
A quantidade de pontos da funcao funciona como um ajuste da distancia sobre
o eixo ordenado do α. Quanto maior o numero de pontos, menor sera o intervalo de
valores entre eles e, consequentemente, menor sera a inclinacao. Um exemplo claro
e mostrado na Figura 4.4, onde uma mesma funcao Kaiser com α = 4 e gerada com
diferentes tamanhos.
Figura 4.4: Janelas Kaiser de 64, 128, 256 e 512 pontos para α = 4
A analise das funcoes de janelamento mais conhecidas resultou em tamanhos de
51
Tabela 4.1: Quantidade de bits necessarios para representar α com 16 bits de pre-
cisao
PPPPPPPPPPPPPPJanela
Tamanho4096 2048 1024 512 256 128 64 32 16 8
Hann 5 6 7 8 9 10 11 12 13 14
Hamming 5 6 7 8 9 10 11 12 13 14
Barlett 5 6 7 8 9 10 11 12 13 14
Blackman 5 6 7 8 9 10 11 12 13 14
Blackman-Harris 6 7 8 9 10 11 12 13 14 14
Chebyshev 6 7 8 9 10 11 12 13 13 14
Kaiser (α = 1) 3 4 5 6 7 8 9 10 11 12
Kaiser (α = 2) 4 5 6 7 8 9 10 11 12 13
Kaiser (α = 4) 5 6 7 8 9 10 11 12 13 14
Kaiser (α = 6) 5 6 7 8 9 10 11 12 13 14
Kaiser (α = 8) 5 6 7 8 9 10 11 12 13 14
Kaiser (α = 10) 5 6 7 8 9 10 11 12 13 15
Kaiser (α = 30) 6 7 8 9 10 11 12 13 14 15
Kaiser (α = 64) 7 8 9 10 11 12 13 14 15 15
Kaiser (α = 100) 7 8 9 10 11 12 13 14 15 14
Kaiser (α = 200) 8 9 10 11 12 14 14 15 15 13
Kaiser (α = 300) 8 9 10 11 12 14 14 15 15 11
Kaiser (α = 600) 8 9 10 11 12 14 14 15 14 7
52
Tabela 4.2: Quantidade de bits necessarios para representar α com 24 bits de pre-
cisao
PPPPPPPPPPPPPPJanela
Tamanho4096 2048 1024 512 256 128 64 32 16 8
Hann 13 14 15 16 17 18 19 20 21 22
Hamming 13 14 15 16 17 18 19 20 21 22
Barlett 13 14 15 16 17 18 19 20 21 22
Blackman 13 14 15 16 17 18 19 20 21 22
Blackman-Harris 14 15 16 17 18 19 20 21 22 22
Chebyshev 14 15 16 17 18 19 20 21 21 22
Kaiser (α = 1) 11 12 13 14 15 16 17 18 19 20
Kaiser (α = 2) 12 13 14 15 16 17 18 19 20 21
Kaiser (α = 4) 13 14 15 16 17 18 19 20 21 22
Kaiser (α = 6) 13 14 15 16 17 18 19 20 21 22
Kaiser (α = 8) 13 14 15 16 17 18 19 20 21 22
Kaiser (α = 10) 13 14 15 16 17 18 19 20 21 23
Kaiser (α = 30) 14 15 16 17 18 19 20 21 22 23
Kaiser (α = 64) 15 16 17 18 19 20 21 22 23 23
Kaiser (α = 100) 15 16 17 18 19 20 21 22 23 22
Kaiser (α = 200) 16 17 18 19 20 21 22 23 23 21
Kaiser (α = 300) 16 17 18 19 20 21 22 23 23 19
Kaiser (α = 600) 16 17 18 19 20 21 22 23 22 15
53
α similares ao da janela Kaiser com α = 8. Para esta situacao, α e o tamanho da
palavra de memoria sao expressos, no pior caso, como:
α = WL− log2N + 1 (4.3)
PALAVRA = α +Np = WL. (4.4)
e a quantidade de bits total em memoria para nossa proposta e dada por 4.5 –
portanto, a reducao do numero de bits em relacao a 4.1 se da pela proporcao entre
Nr e N .
MEM = WL ∗Nr. (4.5)
4.2 Arquitetura Geral
O conjunto de arquivos que formam o IP pode ser adicionado a qualquer projeto que
tenha a etapa de janelamento modularizada. A integracao e facilitada, devido ao uso
de um arquivo de configuracao simples (em que o projetista define a representacao
da formatacao Q do IP) e tambem a presenca de sinais de controle bastante simples.
A arquitetura do IP e mostrada na Figura 4.5: o modulo INTERPOLADOR
recria os pontos da funcao janela a partir de uma tabela de dados, enquanto o
modulo MULT realiza a multiplicacao das amostras do sinal de entrada pelos pontos
criados no INTERPOLADOR. O modulo INTERPOLADOR realiza todo o controle
dos estados e do caminho de dados do IP, alem de possuir internamente a memoria
com a tabela de dados para remontagem dos pontos da funcao. Ja o modulo MULT e
puramente combinacional, de tamanho de entradas parametrizavel, servindo apenas
para realizar a multiplicacao em formato Q de dois operandos.
As entradas e saıdas da arquitetura desenvolvida sao mostradas na Tabela 4.3.
Algumas delas foram criadas para prover um protocolo simples, para controle do IP
por modulos externos.
De forma geral, o comportamento do protocolo se da conforme o waveform (dia-
grama em forma de onda de sinais), como exemplificado na Figura 4.6. E requerido
que a unidade que fornece os dados do sinal mande sequencialmente, a cada pulso de
54
Figura 4.5: Arquitetura de blocos do Modulo de Janelamento
Tabela 4.3: Portas de entrada e saıda do Modulo de Janelamento
Nome das Portas Direcao Numero de bits Descricao
RST N Entrada 1Reset assıncrono com sensibili-
dade ao valor logico 0.
CLK Entrada 1 Relogio do sistema.
SOP Entrada 1Indica o inıcio de uma operacao
de janelamento.
SIGNAL DATA Entrada ParametroAmostras da funcao de entrada a
ser janelada.
SIGNAL VALID Entrada 1Indica uma amostra da funcao ja-
nelada na saıda.
WINDOWED SIGNAL Saıda Parametro Amostras da funcao janelada
clock, uma amostra A0, A1 ... An do sinal SIGNAL DATA. Para tanto, esta unidade
deve ativar o sinal de inıcio de operacao SOP e manter o sinal SIGNAL VALID, indi-
cando que os dados das amostras estao validos na entrada do modulo. Ja a unidade
que recebe amostras A0w,A1w ... Anw de saıda do sinal ponderado com o efeito
janela, WINDOW SIGNAL, recebe a indicacao de que os mesmos estao presentes
na saıda, enquanto o sinal de SOURCE VALID estiver ativo.
O fluxo geral de funcionamento da arquitetura e definido pela maquina de es-
tados finita da Figura 4.7. O estado LOAD e responsavel por acessar a memoria,
carregando o valor do primeiro ponto da funcao janela, buscando o valor do co-
55
Figura 4.6: Diagrama de sinais do protocolo do Modulo de Janelamento
eficiente angular e buscando o numero de pontos adicionais que serao obtidos na
primeira reta. Isso ocorre somente em um unico ciclo apos o Reset inicial do sis-
tema – a partir daı, a maquina prossegue para o estado WAIT. Este representa o
momento em que o IP ainda nao executa a operacao de janelamento e aguarda o
sinal de entrada SOP para iniciar uma operacao.
Apos o SOP, a maquina assume o estado UP, no qual sao obtidos, atraves das
informacoes de coeficiente angular e numero de pontos adicionais de cada uma das
palavras na memoria, os pontos das retas que representam a curva ascendente da
primeira metade da funcao janela. Ao chegar ao ultimo ponto da curva, a maquina
toma o estado KEEP.
Figura 4.7: Maquina de estados finita do Modulo de Janelamento
O estado KEEP foi especialmente criado para lidar com a inversao para a curva
descendente na construcao da funcao janela pois, apesar do coeficiente angular ser
invertido, a primeira reta da segunda parte possui a mesma magnitude do coeficiente
56
angular e o mesmo numero de pontos adicionados na ultima reta da primeira metade.
Apos a obtencao dos pontos dessa primeira reta descendente, a maquina toma entao
o estado DOWN, onde sao obtidos os demais pontos das retas da representacao da
curva descendente.
Ao concluir, a maquina retorna ao estado inicial WAIT, aguardando uma nova
operacao de janelamento.
4.3 Verificacao Funcional
A metodologia de verificacao utilizada foi a versao mais simples da LVM (LSI-
TEC Verification Methodology), criada por projetistas do LSI-TEC. A LVM e uma
metodologia de verificacao e colecao de codigos para ser utilizada em modulos e
projetos de tamanho mediano, a qual permite aplicar de maneira facil varias das
tecnicas atualmente usadas em verificacao, tais como a geracao aleatoria de dados
com restricoes e a analise de cobertura funcional.
A LVM tem uma alta reusabilidade de codigo, o que permitiu facilmente adapta-
la para verificar nosso IP. Escrita em SystemVerilog, a LVM permite que o modelo
de referencia seja criado dentro do proprio ambiente ou externamente, em C ou lin-
guagem do Matlab. Ela tem uma baixa complexidade, se comparada a metologias
padronizadas como OVM (Open Verification Methodology) e UVM (Universal Veri-
fication Methodology), possuindo uma estrutura de ambiente de verificacao como o
da Figura 4.8.
Dentro da LVM, os principais modulos sao:
Agent: Representa um dispositivo conectado a uma interface do DUV (Design Un-
der Verification). Um Agent encapsula um BFM (Bus Functional Model), um
Monitor e informacoes de configuracao e geracao da infraestrutura do ambiente
de verificacao;
Monitor: Coleta informacoes do DUV e do BFM, a fim de realizar analises de
cobertura e de conformidade funcional do DUV e do Modelo de Referencia;
Driver: Controla os estımulos repassados ao DUV. Converte cenarios de testes,
produzidos em nıvel de transacoes, em estımulos repassados para o BFM; e
57
AgentAgent
Data response Data item
Driver
Monitor
BFMBFM
Configurações:- Testes randômicos- Testes direcionados- Modelo de Referência
DUT InterfaceDUT Interface
DUTDUT
CoverageCoverage CheckerChecker
Modelo de
Referência
Modelo de
Referência
Matlab/ Octave/ C
Figura 4.8: Ambiente de verificacao desenvolvido para o IP
BFM: Conecta-se ao DUV, conduzindo para o mesmo os estımulos gerados a partir
de transacoes. Tambem implementa protocolos de sinais de baixo nıvel.
A seguir, sao listados e descritos os arquivos que foram editados a partir dos
modelos de codigo LVM para realizar a verificacao do IP proposto:
lvm data item.sv: Descreve todos os dados que devem ser transmitidos em cada
transacao e as restricoes para a geracao aleatoria desses dados.
lvm data response.sv Descreve todos os dados que devem ser recebidos em cada
transacao.
lvm dut if.sv E a interface que conecta o DUV ao testbench.
lvm env.sv Representa o ambiente de verificacao, cria as instancias do DUV e as
conecta usando a interface do arquivo lvm dut if.
lvm bfm.sv Nesse arquivo e editada a inicializacao do DUV, definindo-se o sinal de
Reset e os estados iniciais das entradas. Tambem sao editadas as configuracoes
de como e dada a transmissao das transacoes como, por exemplo, em um
58
protocolo AMBA, UART, SPI etc. Por fim, edita-se a propria transmissao das
transacoes de entrada (item) e de saıda (response).
lvm io.sv Utilitario que escreve e le de arquivos, necessarios em caso de comu-
nicacao com os Modelos de Referencia, leitura de testes direcionados e escrita
de erros durante a verificacao. Deve-se garantir que os formatos dos data item
e data response sejam respeitados.
A verificacao do IP foi feita utilizando testes direcionados. Os data itens sao gera-
dos em arquivos, os quais sao lidos como entrada tanto para o Modelo de Referencia
quanto para o ambiente de verificacao. A geracao desses arquivos de data itens foi
feita a partir de uma rotina em Matlab, a qual formata valores oriundos de arquivos
de audio para os tamanhos de palavra e janela compatıveis com o hardware desejado.
Criou-se um Modelo de Referencia em Matlab que simula em alto nıvel o compor-
tamento esperado, em ponto fixo, de uma funcao de janelamento, podendo assumir
diferentes tamanhos de palavras. Foram testados IPs com tamanho de palavra de
16 e 24 bits, e tamanho de janela de 64, 128, 256, 1024 e 2048 amostras, dos tipos
seno, KDB, Hanning e Hamming.
O Modelo de Referencia gera data responses que sao utilizados pelo Checker do
LVM, para efeitos de comparacao com os data responses obtidos na saıda do DUV.
Para os diferentes tamanhos de palavras e tamanhos de janelas disponibilizados, a
verificacao funcional nao encontrou erro algum nos resultados de calculo dos IPs
gerados, mostrando, desta forma, a robustez do projeto desenvolvido.
59
Capıtulo 5
Resultados do Trabalho
Uma implementacao do trabalho proposto foi realizada, objetivando efetivar o jane-
lamento de um modulo de processamento no domınio do tempo denominado Win-
dowing/Block Switching (W/BS), o qual faz parte de um decodificador de audio
Moving Pictures Experts Group-2 (MPEG-2) Advanced Audio Coding - Low Comple-
xity (AAC-LC). Esse decodificador foi desenvolvido pelo grupo de pesquisa Brazil-
IP/UEFS como um dos modulos IP do consorcio de Universidades brasileiras do
Programa Brazil-IP, um dos programas de governo brasileiro que buscam incentivar
o crescimento do setor de Microeletronica atraves do CI-Brasil [64].
O MPEG-2 AAC-LC e um importante padrao na industria e e usado, por exem-
plo, no padrao do Sistema Brasileiro de Televisao Digital – tambem conhecido como
ISDB-TB, desenvolvido por uma associacao incluindo o governo brasileiro, univer-
sidades brasileiras e empresas de comunicacao. O decodificador de audio do Brazil-
IP/UEFS tomou como base as normas definidas para o padrao ISO/IEC 13818-7
[77].
O processo de decodificacao do MPEG-2 AAC-LC e composto por doze subsis-
temas, alguns necessarios e outros opcionais, os quais correspondem a ferramentas
funcionais que tem a finalidade de remontar amostras que representam o sinal origi-
nal [77]. A partir dessas ferramentas, o grupo de trabalho criou a microarquitetura
da Figura 5.1.
Dentre as cinco ferramentas essenciais, o Windowing/Block Switching e um sub-
sistema que se caracteriza por aplicar o janelamento KDB e/ou SENO ao sinal de
audio, atraves de multiplicacoes/sobreposicoes sucessivas [79, 77]. A depender da
60
Figura 5.1: Decodificador de audio MPEG AAC-LC UFBA/UEFS/Brazil-IP
caracterıstica do sinal de audio, o bloco seleciona a variacao do tamanho da janela,
o tipo de janela e a sequencia de tipos e tamanhos. Quanto a sequencia, as janelas
podem ser agrupadas da seguinte forma [77]: uma janela unica longa (Only Long
Sequence); uma janela longa de inıcio (Long Start Sequence); uma sequencia de oito
janelas curtas (Eight Short); ou uma janela longa de parada (Long Stop Sequence).
Quanto ao tamanho, uma janela pode ser longa ou curta. Por definicao do MPEG-2
AAC-LC, uma janela curta contem 256 amostras e uma janela longa e composta
por 2048 amostras. Na KBD de 256 amostras, e firmado o valor de α igual a 6, e
para a KBD de 2048 amostras, α e igual a 4. Dessa forma, janelas KDB e Seno de
tamanhos 256 e 2048 podem ser utilizadas em uma mesma decodificacao, implicando
na necessidade de armazenamento de 4 janelas diferentes.
Utilizando da tecnica de interpolacao, foi proporcionada uma solucao dentro dos
requisitos levantados e as analises foram realizadas considerando o erro SNR para
diferentes conjuntos de retas. A janela KDB 2048 obteve os conjuntos de retas com
seus respectivos SNRs como mostrado na Figura 5.2, a KDB 256 mostrado na Figura
5.3, a Seno 2048 na Figura 5.4 e a Seno 256 na Figura 5.5.
O conjunto resultante que se enquadrou no melhor SNR dentro dos requisitos do
projeto, assim como na melhor relacao de consumo de hardware, foram os formados
por 38 retas para a KDB de 2048, 53 retas para a KDB de 256, 33 retas para a seno
61
9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 26 27 28 30 32 35 38 44 50 61 8450
55
60
65
70
75
80
85
90
95
Número de Retas
SN
R (
dB)
Figura 5.2: SNR das retas para janela KBD de 2048 amostras
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 35 38 40 41 43 45 53 65 74 101 11450
55
60
65
70
75
80
85
90
95
Número de Retas
SN
R (
dB)
Figura 5.3: SNR das retas para janela KBD de 256 amostras
62
18 19 20 21 22 23 24 25 27 29 31 33 36 41 47 59 9160
65
70
75
80
85
90
95
Número de Retas
SN
R (
dB)
Figura 5.4: SNR das retas para janela seno de 2048 amostras
19 20 21 23 24 25 26 27 29 32 33 34 38 45 51 58 9965
70
75
80
85
90
95
Número de Retas
SN
R (
dB)
Figura 5.5: SNR das retas para janela seno de 256 amostras
63
2048 e 33 retas para seno de 256 amostras. Pela definicao do grupo de pesquisa,
o erro maximo permitido e de 1% para cada amostra. As Figuras 5.6, 5.7, 5.8
e 5.9 mostram os resultados de erros dados pela Equacao 2.21 para os conjuntos
escolhidos. Todas as amostras se mantiveram abaixo do erro de 1% especificado
para os diferentes conjuntos de retas escolhidos. As amostras nos extremos do
grafico, por representar pontos de regioes com menor linearidade das funcoes KDB
e Seno, apresentam erros relativos percentuais ligeiramente maiores que as amostras
centrais.
50 100 150 200 2500
0.05
0.1
0.15
0.2
0.25
0.3
0.35
Amostras
Err
o r
elat
ivo
(%
)
Figura 5.6: Erro relativo para janela seno de 256 amostras
200 400 600 800 1000 1200 1400 1600 1800 20000
0.1
0.2
0.3
0.4
0.5
0.6
0.7
Amostras
Err
o r
elat
ivo
(%
)
Figura 5.7: Erro relativo para janela seno de 2048 amostras
64
50 100 150 200 2500
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
Amostras
Err
o r
elat
ivo
(%
)
Figura 5.8: Erro relativo para janela KBD de 256 amostras
200 400 600 800 1000 1200 1400 1600 1800 20000
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
Amostras
Err
o r
elat
ivo
(%
)
Figura 5.9: Erro relativo para janela KBD de 2048 amostras
65
Os valores comparativos dos resultados de bits armazenados, da interpolacao
com a solucao tradicional, de todos os pontos sao vistos na Tabela 5.1, derivada de
acordo com as equacoes 4.3, 4.4 e 4.5.
Tabela 5.1: Bits usados para representar as funcoes de janelamento no MPEG2-AAC
Janela Qtd bits versao convencional Qtd bits versao com interpolacao Reducao (%)
KBD 256 128x16=2048 53x16=848 58
KBD 2048 1024x16=16384 38x16=608 96,3
SENO 256 128x16=2048 33x16=528 74
SENO 2048 1024x16=16384 33x16=528 96,7
Usando apenas o modulo de janelamento das funcoes KBD de tamanhos 2048
e 256, desconsiderando toda a logica dos demais blocos do decodificador, foi re-
alizado um fluxo ASIC ate a representacao final de leiaute (GDSII). Para efeitos
de comparacao, foram feitas duas versoes do GDSII: uma com reducao em retas
e interpolacao; e outra convencional, com armazenamento dos pontos. O fluxo foi
desenvolvido atraves das ferramentas Encounter R© RTL Compiler e Encounter R© Di-
gital Implementation (EDI) System da empresa Cadence. A tecnologia utilizada foi
de no tecnologico de 180nm, o mesmo utilizados por trabalhos de janelamento em
hardware como [21, 22, 24].
As Figuras 5.10 e 5.11 mostram os relatorios fornecidos pelas ferramentas de
sıntese, para os resultados de area estimados entre a versao usando interpolacao e
a versao convencional de armazenamento de todos os pontos. O ganho em area das
duas versoes foi de 4,9% para a KBD 256 e de 52,4% para a KBD 2048, para uma
frequencia de clock de 16,7 MHz.
(a) Area versao convencional (b) Area com interpolacao
Figura 5.10: Relatorio de sıntese para KBD de 2048 amostras
66
(a) Area versao convencional (b) Area com interpolacao
Figura 5.11: Relatorio de sıntese para KBD de 256 amostras
Um quadro comparativo de area de algumas implementacoes em hardware re-
ferenciadas e o nosso trabalho estao na Tabela 5.2. As implementacoes dessas re-
ferencias utilizam CORDIC e, em geral, tem um consumo de area muito maior que
versoes com lookup table, alem de uma latencia inerente. A versao de Yamunadevi
2015 [75] e a que mais se aproxima da area do nosso trabalho, porem utilizando a
tecnologia de 90nm.
Tabela 5.2: Comparacao de areas entre solucao proposta, solucao convencional e
CORDIC
Janelamento Area (mm2) Frequencia (MHz) Ciclos
Interpolacao (este trabalho) 0,03076 100 1
Convencional 0,0649 100 1
CORDIC (Ray 2008) 21 125 33
CORDIC (Ray 2014 e Arasi 2014) 52 400 170
CORDIC (Yamunadevi 2015) 90nm 0,05166 100 30
Foi realizada tambem uma analise de sıntese com clock mais rapido, a fim de
tecer consideracoes sobre a influencia da logica adicional de interpolacao no de-
sempenho e caminho crıtico do janelamento. Nao ocorreu qualquer tipo de perda
devida a insercao de logicas pela interpolacao, com o projeto atingindo a frequencia
maxima de operacao a 200 MHz, para a tecnologia usada. O caminho crıtico da
solucao e o modulo de multiplicacao – consideracoes de melhorias como paralelismo
e adocao de pipelines (dentre outras) nao foram feitas, tais recursos permitiriam
rodar em frequencias proximas de 400 MHz como em [21]. Essa afirmacao baseia-se
na frequencia atingida de 384 MHz, para um multiplicador de 4 bits na tecnologia
67
empregada. Para nos tecnologicos menores, a frequencia de clock pode ser ainda
maior, aumentando, contudo, o vies do custo e da relacao de area.
As Figuras 5.12 a 5.15 mostram os leiautes realizados para as versoes convencio-
nal e interpolada do modulo de janelamento para o MPEG W/BS. Foram utilizados
registradores como dispositivos de armazenamento dos pontos, em ambos os ca-
sos. As areas finais, apos passar por todas as etapas de placement, roteamento e
verificacoes de temporizacao e fısicas sao 0,0774mm2 para a versao convencional e
0,0569mm2 para a versao interpolada, o que representa uma reducao de 26,5% entre
elas. O leiaute final possui as portas do modulo como pinos que servirao de conexao
para leiautes de topo que instanciam o modulo de janelamento.
Figura 5.12: Vista ameba com a separacao logica dos blocos
68
Figura 5.13: Placement das celulas e arvore de clock realcada
Figura 5.14: Ring e stripes da rede de energia
69
Figura 5.15: Leiaute apos roteamento dos fios
70
Capıtulo 6
Conclusoes
O desenvolvimento tecnologico atual atraves de sistemas de processamento de si-
nais permitiu as mais variadas manipulacoes de eventos da natureza, impactando
profundamente em nosso estilo de vida e nas perspectivas da Humanidade. Dentro
deste contexto, sob a otica do processamento digital de sinais, o janelamento de
amostras e genuinamente importante, configurando-se muitas vezes em fator limi-
tante e imprescindıvel para que os dispositivos de processamento consigam executar
a manipulacao esperada, dentro de limites de custo desejados.
A maioria dos dispositivos de processamento de sinais tem se tornado verdadeiros
sistemas complexos, condensados em um unico circuito integrado, trazendo a pauta a
viabilidade do uso de blocos pre-desenvolvidos (IP-Cores) como componentes desses
sistemas.
Na industria de microeletronica, os IP-Cores sao importantes na concepcao de
sistemas em um unico chip (SoC). As empresas fornecedoras de IPs distribuem o
custo de desenvolvimento entre varios fabricantes de chips, uma vez que licenciam
o mesmo IP para varios integradores. Por sua vez, as empresas que compram ou
adquirem IP-Cores para processadores, interfaces e funcoes internas podem colocar
mais de seus recursos no desenvolvimento das caracterısticas de diferenciacao de seus
chips. Como consequencia, estas tem desenvolvido inovacoes em suas especialidades
mais rapidamente. Vale ressaltar que, quando se trata de Soft-IP, as oportunidades
de licenciamento sao ainda maiores pois os mesmos tem alta flexibilidade e nao estao
atrelados a uma tecnologia alvo de desenvolvimento.
Neste contexto, pela uniao dessas importantes areas de pesquisa e desenvolvi-
71
mento, nesse trabalho foi desenvolvido com exito um Soft-IP-Core para realizacao
de funcoes de janelamento dentro de sistemas de processamento de sinais. Sao
entregues arquivos em Verilog e scripts em Matlab que permitem flexibilidade na
representacao da funcao de janelamento, atraves da obtencao por interpolacao linear
de sub-conjuntos dos pontos originais. Os arquivos tambem permitem flexibilidade
na representacao em hardware ponto fixo do RTL final, atraves da configuracao de
parametros presentes no mesmo, alterados pelo Matlab. Dessa forma, os objeti-
vos e caracterısticas da aplicacao final e que determinam as especificidades do IP,
principalmente levando em conta a tolerancia ao erro.
O Soft-IP proposto fornece uma alternativa interessante para a diminuicao do
time-to-market dos sistemas desenvolvidos, o que torna seu uso viavel do ponto de
vista economico. Alem disso, nossa solucao se mostrou eficiente em termos de area,
trazendo reducao significativa, se comparada a solucoes em CORDIC, e reducao
relativa atrelada ao tamanho da janela, se comparada a uma solucao convencional
que armazena todos os pontos de uma funcao de janelamento. Tal eficiencia reflete-se
diretamente no custo do circuito final, se o mesmo for implementado em tecnologias
para ASIC.
O IP tambem se mostra bem robusto e teve sua validacao feita atraves da rea-
lizacao de um caso de teste, no qual foi implementado em um fluxo de desenvolvi-
mento ASIC para um sistema de decodificacao MPEG. O caso de teste foi realizado
desde a geracao das informacoes da parte configuravel do IP ate sua concepcao em
formato GDSII. Durante o fluxo ASIC, ainda foi realizada a verificacao funcional
do RTL gerado e o mesmo mostrou comportamento equivalente ao esperado por um
Modelo de Referencia.
Os arquivos do Soft-IP estao abertos e livres para serem modificados. Como tra-
balhos futuros, uma analise do desempenho energetico pode ser feito e melhorias na
logica do RTL podem ser feitas neste sentido, atraves da remodelagem da maquina
de estados. Um outro fator que pode contribuir bastante para o IP e o estudo e
desenvolvimento de algoritmos locais para a obtencao dos pontos da interpolacao,
principalmente em regioes de menor linearidade na funcao. Esses algoritmos poderao
trazer uma melhor relacao entre a quantidade de pontos necessarios para reconstruir
a funcao e a relacao sinal-ruıdo da operacao de janelamento.
72
Referencias Bibliograficas
[1] PRABHU, K., Window Functions and Their Applications in Signal Processing .
CRC Press, 2013.
[2] DINIZ, P. S., DA SILVA, E. A., NETTO, S. L., Processamento Digital de Sinais-:
Projeto e Analise de Sistemas . Bookman Editora, 2014.
[3] IFEACHOR, E. C., JERVIS, B. W., Digital signal processing: a practical appro-
ach. Pearson Education, 2002.
[4] BOSI, M., GOLDBERG, R. E., Introduction to digital audio coding and stan-
dards . v. 721. Springer Science & Business Media, 2012.
[5] CAVALLORO, P., GENDARME, C., KRONLOF, K., et al., System Level Design
Model with Reuse of System IP . E-Books von NetLibrary , Springer US,
2007.
[6] GREENBAUM, E., “Open source semiconductor core licensing”, Harv. JL &
Tech., v. 25, pp. 131, 2011.
[7] TU, S., Analog Circuit Design for Communication SOC . Bentham Science Pu-
blishers, 2012.
[8] JANSEN, D., The Electronic Design Automation Handbook . Springer US, 2010.
[9] SALEH, R., WILTON, S., MIRABBASI, S., et al., “System-on-chip: Reuse and
integration”, Proceedings of the IEEE , v. 94, n. 6, pp. 1050–1069, 2006.
[10] MAXFIELD, C., FPGAs: World Class Designs . World Class Designs , Elsevier
Science, 2009.
73
[11] NEMATOLLAHI, M., VORAKULPIPAT, C., ROSALES, H., Digital Water-
marking: Techniques and Trends . Springer Topics in Signal Processing ,
Springer Singapore, 2016.
[12] SEEPOLD, R., KUNZMANN, A., Reuse Techniques for VLSI Design. Springer
US, 2012.
[13] OPENCORES, “OpenCores IP Development Community”, Projeto Opencores
- hospedagem de codigos fontes de projetos de hardware. Disponıvel em:
http : //http : //opencores.org. Acesso em: 22 de junho de 2015.
[14] LIBRECORES, “Free and Open Digital Hardware”, Projeto LibreCores -
Free and Open Source Silicon Foundation. Disponıvel em: http :
//librecores.org/. Acesso em: 22 de junho de 2015.
[15] BONE, R. T., FPGA Design of a Hardware Efficient Pipelined FFT Processor ,
Master’s Thesis, Wright State University, Dayton, Ohio, United States,
2008.
[16] SANSALONI, T., PEREZ-PASCUAL, A., VALLS, J., “Area-efficient FPGA-
based FFT processor”, Electronics Letters , v. 39, n. 19, pp. 1, 2003.
[17] AYINALA, M., BROWN, M., PARHI, K. K., “Pipelined Parallel FFT Archi-
tectures via Folding Transformation”, IEEE transactions on very large
scale integration (VLSI) systems , v. 20, n. 6, pp. 1068–1081, 2012.
[18] HAMPSON, G. A., “Implementation Results of a Windowed FFT”, Re-
latorio de Projeto Interno. Disponıvel em: http : //esl.eng.ohio −
state.edu/ rstheory/iip/window.pdf . Acesso em: 22 de junho de 2015,
July 2002.
[19] M. ATRI, F. SAYADI, W. E., TOURKI, R., “Efficient Hardware/Software Im-
plementation of LPC Algorithm in Speech Coding Applications”, Journal
of Signal and Information Processing , v. 3, n. 1, pp. 122–129, 2012.
[20] RAY, K. C., DHAR, A. S., “CORDIC-based unified VLSI architecture for im-
plementing window functions for real time spectral analysis”, IEE Pro-
74
ceedings - Circuits, Devices and Systems , v. 153, n. 6, pp. 539–544, Dec
2006.
[21] RAY, K., DHAR, A. S., “High Throughput VLSI Architecture for Blackman
Windowing in Real Time Spectral Analysis”, Journal of Computers , v. 3,
n. 5, 2008.
[22] RAY, K. C., DHAR, A. S., “CORDIC-Based VLSI Architecture for Implemen-
ting Kaiser-Bessel Window in Real Time Spectral Analysis”, Journal of
Signal Processing Systems , v. 74, n. 2, pp. 235–244, 2014.
[23] AGGARWAL, S., KHARE, K., “Redesigned-scale-free CORDIC Algorithm Ba-
sed FPGA Implementation of Window Functions to Minimize Area and
Latency”, Int. J. Reconfig. Comput., v. 2012, pp. 3:3–3:3, Jan. 2012.
[24] ARASI, M. M., ANAND, J., BHARAT, P., et al., “VLSI Architecture for Im-
plementing Kaiser Bessel Window Function Using Expanded Hyperbolic
CORDIC Algorithm”, International Journal of Computer Science and
Mobile Computing , v. 3, n. 2, pp. 308–315, 2014.
[25] AGGARWAL, S., KHARE, K., “CORDIC-based window implementation to
minimise area and pipeline depth”, IET Signal Processing , v. 7, n. 5,
pp. 427–435, July 2013.
[26] AGGARWAL, S., KHARE, K., “Efficient Window-Architecture Design Using
Completely Scaling-Free CORDIC Pipeline”. In: VLSI Design and 2013
12th International Conference on Embedded Systems (VLSID), 2013 26th
International Conference on, pp. 60–65, 2013.
[27] ARCHANA, C., NAGARAJU, C., “Efficient Window Architecture Design
Using Completely Scaling Free CORDIC Pipeline”, International Jour-
nal For Technological Research In Engineering , v. 1, n. 9, 2014.
[28] RASHMI, K. L., RAMA, P., “FPGA Implementation of Efficient Window Ar-
chitecture Design Using Completely Scaling-Free CORDIC Algorithm”,
International Journal for Research in Applied Science and Engineering
Technology , v. 3, n. 5, pp. 933–940, 2015.
75
[29] CLEMENTS E. PAUSA, China’s impact on the semiconductor industry: 2015
update, Tech. rep., PwC - PricewaterhouseCoopers International Limited,
Beijing, China, March 2016.
[30] ESCAMILLA HEMANDEZ, E., KRAVCHENKO, V., PONOMARYOV, V.,
et al., “Signal compression in radar using FPGA”, Revista Facultad de
Ingenierıa Universidad de Antioquia, , n. 55, pp. 134–143, 2010.
[31] SMITH, S., The Scientist and Engineer’s Guide to Digital Signal Processing .
California Technical Pub., 1997.
[32] STOICA, P., MOSES, R., Spectral Analysis of Signals . Pearson Prentice Hall,
2005.
[33] WANG, Y., LI, J., STOICA, P., Spectral Analysis of Signals: The Missing
Data Case. Synthesis Lectures on Signal Processing , Morgan & Claypool
Publishers, 2006.
[34] HAYKIN, S., Advances in Spectrum Analysis and Array Processing . N. v. 3,
Advanced Spectural Analysis , Prentice Hall, 1995.
[35] OPPENHEIM, A., SCHAFER, R., Discrete-Time Signal Processing . Pearson
Education, 2011.
[36] LYONS, R., Understanding Digital Signal Processing . Prentice Hall, 2011.
[37] CUNHA, M. C., Metodos Numericos . UNICAMP, 2000.
[38] CHAPRA, S., CANALE, R., Numerical methods for engineers . McGraw-Hill
Higher Education, 2005.
[39] DOS SANTOS, J., DA SILVA, Z., Metodos Numericos . UFPE, 2006.
[40] PADGETT, W., ANDERSON, D., Fixed-Point Signal Processing . Synthesis
lectures on signal processing , Morgan & Claypool, 2009.
[41] RAY, G., “Between Fixed and Floating Point”, Artigo
na Chip Design Magazine . Disponıvel em http :
//chipdesignmag.com/display.php?articleId = 3921. Acesso em:
05 maio 2015., 2010.
76
[42] INCORPORATED, T. I., “Comparing Fixed- and Floating-Point
DSPs”, Documento tecnico sobre produtos. Disponıvel em
http : //www.ti.com/lit/wp/spry061/spry061.pdf . Acesso em: 22
junho 2015., 2004.
[43] RICHEY, M., New Data Formats for DSP Applications . Wea Valley Publishing,
2008.
[44] ZHBANNIKOV, I. Y., DONOHOE, G. W., “FpSynt: a fixed-point datapath
synthesis tool for embedded systems”, arXiv preprint arXiv:1307.8401 ,
2013.
[45] KYTHE, P., Sinusoids: Theory and Technological Applications . Monographs
and Research Notes in Mathematics , Taylor & Francis, 2014.
[46] JACKSON, L., Digital Filters and Signal Processing: With MATLAB R© Exer-
cises . Springer US, 2013.
[47] FASTHUBER, R., CATTHOOR, F., RAGHAVAN, P., et al., Energy-Efficient
Communication Processors: Design and Implementation for Emerging
Wireless Systems . SpringerLink : Bucher , Springer New York, 2013.
[48] SMITH, S., Digital Signal Processing: A Practical Guide for Engineers and
Scientists . Demystifying technology series , Elsevier Science, 2013.
[49] LEE, P., Introduction to Physical Integration and Tapeout in VLSIs . Lulu
Enterprises Incorporated, 2010.
[50] WESTE, N., HARRIS, D., CMOS VLSI Design: A Circuits and Systems Pers-
pective. Addison Wesley, 2011.
[51] MIRZAEI, S., Design Methodologies and Architectures for Digital Signal Pro-
cessing on FPGAs , Ph.D. Thesis, University of California, Santa Barbara,
CA, United States, 6 2010.
[52] BHASKER, J., CHADHA, R., Static Timing Analysis for Nanometer Designs:
A Practical Approach. Springer US, 2009.
77
[53] V. KUMAR, K. C. R., KUMAR, P., “CORDIC-based VLSI Architecture for
Real Time Implementation of Flat Top Window”, Microprocess. Mi-
crosyst., v. 38, n. 8, pp. 1063–1071, Nov. 2014.
[54] BERGERON, J., CERNY, E., HUNTER, A., et al., Verification Methodology
Manual for SystemVerilog . Springer US, 2006.
[55] YUAN, J., PIXLEY, C., AZIZ, A., Constraint-Based Verification. Springer,
2006.
[56] KROPF, T., Introduction to Formal Hardware Verification. Springer Berlin
Heidelberg, 2013.
[57] BERGERON, J., Writing Testbenches using SystemVerilog . Springer US, 2007.
[58] WILE, B., GOSS, J., ROESNER, W., Comprehensive Functional Verification:
The Complete Industry Cycle. Systems on Silicon, Elsevier Science, 2005.
[59] PITERMAN, N., Hardware and Software: Verification and Testing: 11th In-
ternational Haifa Verification Conference, HVC 2015, Haifa, Israel, No-
vember 17-19, 2015, Proceedings . Lecture Notes in Computer Science,
Springer International Publishing, 2015.
[60] SANKARAN, H., High-level Synthesis Framework for Crosstalk Minimization
in VLSI ASICs . University of South Florida, 2008.
[61] WILCOX, P., Professional Verification: A Guide to Advanced Functional Ve-
rification. Ifip Series , Springer US, 2007.
[62] ANNAVARAPU, P., TADISETTY, S., “Role of EDA tools in ASIC Design”,
Journal of Innovation in Electronics and Communication, v. 3, n. 1,
pp. 35–39, 2013.
[63] KAHNG, A., LIENIG, J., MARKOV, I., et al., VLSI Physical Design: From
Graph Partitioning to Timing Closure. Springer Netherlands, 2011.
[64] NETTO, C. G., “Jornal da Unicamp, Edicao 310”, Disponıvel em
http://www.unicamp.br/unicamp/unicamp_hoje/ju/novembro2005/
ju310pag11.html. Acesso em: 05 maio 2015., 2005.
78
[65] KUO, S. M., LEE, B. H., TIAN, W., Real-time digital signal processing: fun-
damentals, implementations and applications . John Wiley & Sons, 2013.
[66] TAN, L., JIANG, J., Digital signal processing: fundamentals and applications .
Academic Press, 2013.
[67] ALPERT, C., MEHTA, D., SAPATNEKAR, S., Handbook of Algorithms for
Physical Design Automation. Taylor & Francis, 2008.
[68] SAIT, S., YOUSSEF, H., VLSI Physical Design Automation: Theory and Prac-
tice. Lecture Notes Series , World Scientific, 1999.
[69] GOLSHAN, K., Physical Design Essentials: An ASIC Design Implementation
Perspective. Springer US, 2010.
[70] ZHU, Q., Power Distribution Network Design for VLSI . Wiley, 2004.
[71] AHMED, N., Nanometer Technology Designs: High-Quality Delay Tests . Sprin-
ger US, 2011.
[72] LIN, M., Introduction to VLSI Systems: A Logic, Circuit, and System Perspec-
tive. CRC Press, 2011.
[73] CHANDRAKASAN, A., FOX, F., BOWHILL, W., Design of High-
Performance Microprocessor Circuits . Electrical engineering , Wiley, 2001.
[74] SEGURA, J., HAWKINS, C., CMOS Electronics: How It Works, How It Fails .
Wiley, 2004.
[75] T., Y., C., P., “Implementation of Hyperbolic CORDIC-based VLSI architec-
ture for Kaiser-Bessel Window techniques in spectral analysis”. In: In-
novations in Information, Embedded and Communication Systems (ICII-
ECS), 2015 International Conference on, pp. 1–5, March 2015.
[76] SCHEFFER, L., LAVAGNO, L., MARTIN, G., EDA for IC Implementation,
Circuit Design, and Process Technology . N. v. 2, EDA for IC Implemen-
tation, Circuit Design, and Process Technology , Taylor & Francis, 2006.
79
[77] ISO/IEC 13818-7, Generic coding of moving pictures and associated audio in-
formation - Part 7: Advanced Audio Coding (AAC), Standard, Internati-
onal Organization for Standardization, Geneva, CH, Jan. 2006.
[78] SILICON LABS, Using Microcontrollers in Digital Signal Processing Applica-
tions . Application Note AN219 , August 2008.
[79] BANG, K. H., KIM, J. S., JEONG, N. H., et al., “Design optimization of
MPEG-2 AAC decoder”, IEEE Transactions on Consumer Electronics ,
v. 47, n. 4, pp. 895–903, 2001.
[80] SMITH, S. W., The Scientist and Engineer’s Guide to Digital Signal Processing .
California Technical Publishing: San Diego, CA, USA, 1997.
80
Apendice A
Trabalho Publicado
A.1 Trabalho Publicado
Segue resumo de trabalhos cientıfico publicado com resultados encontrados na pes-
quisa que fundamentou esta dissertacao:
A.1.1 Artigo em Congresso
• OLIVEIRA, J. R. S. ; OLIVEIRA, W. L. A. ; JESUS, F. B. . Memory Opti-
mizations on a Windowing/Block Switching Module. In: The 5th Workshop
on Circuits and Systems Design (WCAS), 2015, Salvador - Bahia - Brasil.
Proceedings of the 5th Workshop on Circuits and Systems Design (WCAS),
2015.
Resumo:
This paper describes a low memory usage ASIC implementation for a Windowing/Block
Switching module, belonging to the analysis filterbank of a MPEG Audio Decoder.
The architecture for such a module is provided as well as an analysis of the related
implementation.
81
Memory Optimizations on a
Windowing/Block Switching Module
Wagner L. A. Oliveira, Joaquim R. S. Oliveira
Digital Systems Laboratory
Polytechnic School - UFBA
Salvador, Brazil
[email protected], [email protected]
Fábio B. Jesus
Embedded Systems Laboratory
Technology Department - UEFS
Feira de Santana, Brazil
Abstract — This paper describes a low memory usage ASIC
implementation for a Windowing/Block Switching module,
belonging to the analysis filterbank of a MPEG Audio Decoder.
The architecture for such a module is provided as well as an
analysis of the related implementation.
Keywords — windowing functions; analysis filterbank; MPEG;
decoder; ASIC.
I. INTRODUCTION
The AAC (Advanced Audio Coding) is an international standard firstly created in MPEG-2 AAC (ISO/IEC 13818-7) [1] and is the base of MPEG-4 general audio coding. MPEG-2 AAC audio coding has become very popular and been widely used. It is suitable for a wide range of applications from Internet audio over digital audio broadcasting to multi-channel surround sound. It achieves high compression ratio and high quality performance due to an improved time-frequency mapping cooperate with other tools, like TNS and Predictor. Compared to MPEG-1 Layer 3 (MP3) audio, AAC provides higher quality audio reproduction, yet it requires approximately 50% less data. That means music that sounds better, downloads faster, and takes less storage space or network bandwidth. Due to such advantages, AAC is the default encoding used by Apple iTunes software and it is used on the standard of the Brazilian Digital Television System, also known as ISDB-TB, developed by an association including Brazilian Government, Brazilian universities and communication companies.
Developed by AT&T Corporation, Dolby Laboratories, the Fraunhofer Institute for Integrated Circuits and Sony Corporation, the AAC was standardized under the joint direction of the International Organization of Standardization and the International Electro-Technical Committee as part of the MPEG-2 specification in 1997 [1]. Initially, AAC was defined by 13818-3 as a multi-channel extension to MPEG-1 (the standard defining MP3) and was backwards compatible with MPEG-1. However, AAC was limited by the MPEG-1 standard, and 13818-7 was introduced. This standard defines AAC audio that is incompatible with MPEG-1 [2].
There are three different profiles for AAC: Main profile, that includes the full set of coding tools and produces the highest quality output; Low Complexity (LC) profile - limits some coding tools (TNS) and excludes others (Prediction and
Pre-programming); and Scalable Sample Rate (SSR) Profile -the least complex of the three, using crippled filterbank.
The difference in performance and quality of the Main profile compared to the LC one is small. However, the encoding and especially the decoding complexity of the Main Profile compared to the LC one are significant [2].
AAC file is a compressed audio file similar to a .mp3 file, but offers several performance improvements [3]; examples include a higher coding efficiency for both stationary and transient signals, a simpler filterbank, and better handling of frequencies above 16 kHz; maintains quality nearly indistinguishable from the original audio source.
In this context, our group has been developing a low-cost MPEG-2 AAC-LC decoder (Fig. 1). The main functions of such IP-core are to find the description of the quantized audio spectra in the input bitstream (from an AAC audio file – ISO 13818-7), decode the quantized values and other reconstruction data, reconstruct the quantized spectra, process the reconstructed spectra in order to recover the original signal spectra, and convert the frequency domain spectra to the time domain.
Throughout the decoder, the input AAC bitstream undergoes a series of processing steps to deal with IP-core functions. A bitstream defformatter is done by separating data from fields that compose the bitstream in: i) spectral data for each audio channel (quantized, scaled, and Huffman coded spectral coefficients); ii) distribution of spectral data into sections (each one associated with a Huffman code book); and iii) control data for a filter bank. Then, using Huffman code books, the spectral coefficients (which remain quantized and scaled) and the scaling factors (which were differentially encoded at the encoder, each one related to a spectrum band) are decoded. After, a dequantizer applies the inverse quantization of spectral coefficients and a reescaler multiplies the scale factors by spectral coefficients according to scale factor bands. Then the spectral coefficients in the frequency domain are transformed to a PCM encoded signal in time domain by applying inverse modified discrete cosine transform (IMDCT) on spectral coefficients in a given time window. The timing domain signal is submitted to a windowing function, sine or Kaiser-Bessel Derived (KBD), on a given window sequence. Such function is selected according to the incoming
82
bitstream. Finally, adjacent window sequences are merged with the left half of a window sequence being overlapped and added to the right half of the preceding window sequence.
This paper presents an implementation of the time domain processing module called Windowing/Block Switching (W/BS) module as part of an MPEG-2 AAC-LC decoder with an optimized memory utilization due to project space constraints, featuring its importance for the synthesis filterbank, its analytical expressions, its hardware design and the corresponding implementation gains.
Fig. 1. UFBA/UEFS/Brazil-IP MPEG AAC-LC Audio Decoder.
II. W/BS MODULE
The W/BS module is responsible for applying window functions on the audio signal in the time domain. Such operation aims both to reduce the spectrum loss (through separation of signals with amplitudes which vary abruptly) and to increase the characteristics of the sampled signal (through minimization of the margins of transition) [5, 6]. The windowing method is the simple multiplication of the samples of the original signal by the respective coefficients (same index) of the window function [5, 7], as depicted in Fig. 2.
Fig. 2. Windowing of three random samples.
In practical terms, to obtain a good window, i.e., a window that causes less distortion in the frequency domain, it is necessary to find a finite length of window in which the frequency response has most of its energy concentrated around zero and that the sidelobes decay rapidly, as the indices deviate from zero [6], as illustrated in Fig. 3.
The representations of the lobes in time domain have a direct association with the responses in the frequency domain. Such a relationship determines the windowing behavior. For example, a large sidelobe may introduce a higher ripple near
the ends of the passband in the frequency domain response, while a larger main lobe defines a wider transition range [4, 6].
Fig. 3. A window and its frequency response.
It is necessary to maintain an appropriate trade-off between main lobe and sidelobes: windows with a wide main lobe provide better frequency resolution, but they cause aliasing in the signal (spurious frequency components), besides reducing frequency identification accuracy; on the other hand, large sidelobes avoid aliasing, but the frequency resolution is worse [4, 5, 9].
According to the audio signal behavior, it is possible to achieve an adequate frequency resolution for a given situation by means of both sine and KBD windows, but no window alone provides a good response throughout an MPEG-2 AAC audio signal [4, 8].
The sine window provides good resolution for the spectral components of a signal, improving the efficiency of high-harmonic signals encoding. Let N (N = 256 or N = 2048) to be the number of samples, the sine window can be represented by equation (1):
(1)
where n = 0, 1, 2, 3,..., N-1.
On the other hand, according to the input signal, KBD may improve the coding efficiency. Let N (N = 256 or N = 2048) to be the number of samples, the KBD can be represented by equation (2):
(2)
where n = 0, 1, 2, 3,..., N-1. For N = 256, α = 6; for N = 2048, α = 4.
The value I0 in equation (2) is given by equation (3):
(3)
Therefore, the W/BS module is responsible for dynamically changing the sine and KBD window functions, depending on the input signal conditions, to perform the signal windowing.
83
III. W/BS ARCHITECTURE
Based on equations (1), (2) and (3), it is possible to build all the window coefficients independently of other factors. However, the direct implementation of such equations in Verilog is impracticable, since HDLs (Hardware Description Languages) are too limited to describe operations with roots, exponentiation, factorials, divisions, multiplications and infinite limits.
A solution would be to reduce these equations in numerical methods with simple arithmetic operations to be carried out through a floating point unit (FPU). In this case, the problem would be the computational latency to perform such operations, which would fail to comply with the time requirements. To decode a 44.1 kHz stereo signal, the W/BS module should be able to apply a window function (sine or KBD) up to 176,400 PCM samples per second.
For this reason, a trivial implementation would be to compute these functions in MATLAB and store the computed 16-bit values for both functions in lookup tables. Thus performing the windowing would requiere only a controller to analyze the window-related information and sequence, in order to access memory data to multiply them by the coefficients generated from IMDCT module. However, such an implementation would consume the equivalent of 73,728 memory bits, or the equivalent of 442,368 transistors (considering a SRAM of six transistors per bit). Considering a single module, this is not a high amount - however, due to the existence and interaction with other modules of the MPEG-2 AAC-LC audio decoder, such a value is high. Access to external memory is quite critical, especially for dedicated bandwidth to the IMDCT module.
An improved solution is to reduce/compress the amount of coefficients, by means of mathematical functions and signal properties, able to reassemble the final set of coefficients (256/2048). To meet this goal, the rounding factor must also be observed, because the compression methods generate coefficients with approximate values. The coefficients generated must be within a tolerable range, whose noise generated is not sufficient to generate further distortions in the original signal.
The metrics of data reduction aim to obtain a trade-off between the requirements of processing, storage, time, and accuracy, through the use of mathematical methods such as Lagrange, Newton, Linear Regression, Splines, and Linear Interpolation. But not all the cited functions are suitable for a digital logic implementation, due to the fact that operations are performed in a floating point unit. Hence, for a FPU that uses only basic operations (addition, subtraction, multiplication and division), such operations have a high latency.
The Linear Interpolation method presents the best trade-off between the number of operations and response time per sample, due to its simple structure with sums and multiplications, which can be replaced by successive additions.
After choosing Linear Interpolation method, the next step was to develop the data reduction metric for both the window functions KBD and sine (considering window sequences of 256 and 2048 signal samples). Linear Interpolation establishes
that a curve is approximated by a set of successive straight lines which best suit their molds. Thus, the portion of the curve shown in Fig. 4 can be cut by a set straight of lines near its path.
Fig. 4. Linear Interpolation over a window segment.
It is possible to observe (Fig. 4) that the interpolated lines cross exactly some points of the curve. Moreover, in the intermediate points (indices), there are variations between the points described by the straight line and the curve drawn - these differences are approximations (errors) performed by interpolation.
Hence, as the start and the end points of a line (e.g. indexes 12 and 16 in Fig. 4) are exactly points of the curve, the value reconstituted from the end point (as the index 16, Fig. 4) serves as a basis for the construction of next line (starting with the index 16). In other words, it is only needed to store the value of the angular coefficient, because the linear one is obtained from the previous line and because the steps of the coordinates axis are constants (value 1).
To determine the angular coefficients is necessary to have a trade-off between the amount of indexes that will be part of each line (X0 - X1, Fig. 4) and the allowed error. In other words, to obtain a better description of the original curve, lines of different sizes are used. However, the more indexes are contained in a line, the lower will be the set of lines, but the worse the approximation.
After defining the set of lines (a.x + b), from successive increments in the angular coefficients, it is possible to reconstruct the entire curve.
In order to obtain the set of lines, an algorithm was implemented in MATLAB, using an artifice to achieve the 1% maximum error allowed by the ISO. A floating point representation with 16 bits is mandatory in the project due to major requirements and therefore the small 0.0262% average precision error while propagating in the curve creation exceeds the permitted limit. Therefore in this particular case the creation of sine and KBD curves was done using decimal values resulting on errors as expected as shown in Table I. Figure 5 shows the error of each sample for both 2048 and 255 for KDB window, Figure 6 does the same for Sine window.
TABLE I. ERRORS FOR KBD AND SINE WINDOWS FUNCTIONS
Maximun Error Average Error
256 2048 256 2048
KBD 1.02% 0.98% 0.3% 0.22%
Sine 0.57% 0.99% 0.2% 0.43%
84
Fig. 5. KBD 256 and 2048 samples percentagem error.
Fig. 6. Sine 256 and 2048 samples percentagem error.
From there 240 lines was generated for the KBD function for 2048 samples, 23 lines for the KBD function for 256 samples, 90 lines for the sine function for 2048 samples, and 35 lines for the sine function for 256 samples. With 16-bit precision, such a solution stores only 6208 bits.
The architecture depicted in Fig. 7 for the W/BS module was developed to reconstruct all the window function coefficients (KBD and Sine) and apply those coefficients to original signal. The Controller block commands the Coefficient Generator block to generate the coefficients based on inputs Shape (KBD or Sine) and Sequence (long, long start, long stop, eight short) of the current window. Then it drives the FPU to do the multiplication of a signal sample by a generated coefficient. Finally it outputs a windowed sample, as well as its corresponding index. Such a process is repeated until all signal samples are windowed.
Fig. 7. Architecture of Windowing/Block Switching Module.
IV. RESULTS
The optimized implementation was successful in FPGA device (Cyclone III EP3C25E144C8), meeting the timing requirements using a 50MHz clock. The same implementation has been synthesized in ASIC design flow with a technology node of 180nm with a 50MHz clock frequency, and it was compared with the trivial implementation (all window coefficients stored in chip memory).
TABLE II. COMPARING ARCHITECTURES TOTAL AREA
Architecture W/BS Controller Memory
Trivial 483.466 µm² 14.980 µm² 381.365 µm²
Optimized 194.519 µm² 49.616 µm² 52.675 µm²
An area usage comparison between the two implementations is presented in Table II, the complexity of the controller increases its area in 230%, while the memory reduction was 60%. This numbers represents on the W/BS module an area reduction of 75%. The power consumption is also reduced from 1,15mW in trivial approach to 0,855mW in optimized one, which represents a 25,6% power saving.
V. CONCLUSIONS
This paper presented the implementation of the Windowing/Switching Block of a MPEG-2 AAC-LC audio decoder. Due to restrictions on external memory access and considering that internal memory represents a high cost in ASICs, the design of W/BS module decided to make a Linear Interpolation of values stored in a lookup table, in order to minimize external memory accesses and the amount of stored values, taking into account non-functional requirements of performance.
The optimized implementation was successful in FPGA device, meeting the timing requirements. The same implementation has been synthesized in ASIC design flow, and it was compared with the trivial implementation (all window coefficients stored in chip memory). The lack of increase the controller logic of the block was much less impactful in area than the gain obtained in memory area reduction whereas application throughput remains within operation timing/latency margin.
ACKNOWLEDGMENT
The authors would like to thank Brazil-IP Program for supporting this work, through the provided fellowships, technical and methodology supports.
REFERENCES
[1] ISO-IEC MPEG-2 - Part 7: Audio (ISO 13818-7), 2004.
[2] R. Linneman. Advanced Audio Coding on a FPGA, Master Thesis, Queensland, 2002.
[3] FAAC and FAAD2 AAC software, Audiocoding.com Web Site: www.audiocoding.com
[4] Marina Bosi, Richard E. Goldberg. Introduction to Digital Audio Coding and Standards, Springer, 2003.
[5] Alan V. Oppenheim, Ronald W. Schafer. Discrete-Time Signal-Processing. 2nd ed, Prentice-Hall, 1999.
[6] Paulo S. R. Diniz. Processamento Digital de Sinais, Projeto e Análise de Sistemas. Bookman, 2004.
[7] Emmanuel C. Ifeachor. Digital Signal Processing, A Practical Approach (Electronic Systems Engineering). 2nd ed, Prentice-Hall. 2002.
[8] Kyoung-Ho Bang, Nam-Hun Jeong, Young-Cheol Park, Young-Cheol Park. Design Optimization of Main-Profile MPEG-2 AAC Decoder, ICASSP IEEE International Conference on Acoustics, Speech, and Signal Processing, vol. 2, pp.989-992, 2001.
[9] Steven W. Smith. Digital Signal Processing: A Practical Guide for Engineers and Scientists. 3rd ed, Newnes, 2003.
85