Florianpolis
2014
________________________
Prof. Joceli Mayer, PhD.
Orientador
Universidade Federal de Santa Catarina
________________________
Prof. Eduardo Luiz Ortiz Batista, Dr.
Universidade Federal de Santa Catarina
________________________
Prof. Leonardo Silva Resende, Dr.
Universidade Federal de Santa Catarina
AGRADECIMENTOS
Aos meus pais pelo apoio incondicional e amizade. Obrigado por
toda dedicao muito importante para minha formao.
Ao Prof. Joceli Mayer, orientador desse trabalho, pela
oportunidade de trabalhar no Laboratrio de Pesquisas em
Processamento Digital de Sinais, LPDS, e o apoio cedido a mim.
minha irm Marih, por estar presente em todos os momentos e
me apoiar quando necessrio.
minha namorada Lgia pelo carinho e por ter vivenciado passo
a passo todos os momentos da minha formao.
Aos meus colegas de trabalho Cristiano, Davi, Eugnio e Ronaldo
pelo apoio fundamental para realizao deste trabalho.
RESUMO
O presente trabalho de concluso de curso aborda o desenvolvimento de
algoritmos de processamento de sinais em um dispositivo Zynq, que faz
uso de uma nova tecnologia SoC. Este um chip que engloba tanto um
processador padro quanto uma lgica programvel FPGA no mesmo
silcio. Na parte de lgica programvel foi desenvolvido e implementado
um algoritmo de reduo de rudo. Na parte do processador foram
desenvolvidos cdigos otimizados em forma vetorial usando o
coprocessador NEON. Primeiro ser explicado o Zynq, em seguida o
algoritmo de reduo de rudo e, por fim, a anlise e desenvolvimento de
algoritmos no NEON. No final os resultados do algoritmo de reduo de
rudo e a otimizao para algoritmos no NEON so apresentados.
Palavras-chave: Zynq. ARM. Reduo de Rudo. NEON.
ABSTRACT
The follow project of completion discusses the development of signal
processing algorithms on a device Zync that makes use of a new
technology SoC. This is a chip comprising both a standard processor and
a programmable logic FPGA on the same silicon. In the programmable
logical part was developed and implemented an algorithm of noise
reduction. On the processor part optimized codes have been developed
in vector form using the NEON coprocessor. First will be explained the
Zynk then the algorithm noise reduction, and finally, analysis and
development of algorithms in NEON. In the end the results of the
algorithm for noise reduction and optimization algorithms are presented
in NEON.
Keywords: Zynq . ARM. Noise Reduction. NEON.
LISTA DE FIGURAS
Figura 1: Modelo bsico do Zynq ......................................................... 28
Figura 2: Localizao dos processadores .............................................. 29
Figura 3: Sistema de processamento ..................................................... 30
Figura 4: APU ....................................................................................... 31
Figura 5: Lgica programvel ............................................................... 33
Figura 6: CLB ....................................................................................... 34
Figura 7: SLICE .................................................................................... 35
Figura 8: DSP ........................................................................................ 36
Figura 9: Modelo de reduo de rudo .................................................. 39
Figura 10: Modelo do algoritmo de reduo de rudo ........................... 42
Figura 11: Janelamento retangular ........................................................ 44
Figura 12: Vazamento espectral no janelamento retangular ................. 44
Figura 13: Janelamento Hamming ........................................................ 45
Figura 14: Overlap-add ......................................................................... 47
Figura 15: VAD externo........................................................................ 54
Figura 16: Mquina de estados principal .............................................. 57
Figura 17: Sinal com rudo de trem, SNR = 15dB ................................ 63
Figura 18: Sinal filtrado ........................................................................ 63
Figura 19: Sinal com rudo Babble, SNR = 10 dB ................................ 64
Figura 20: Sinal filtrado ........................................................................ 64
Figura 21: Sinal com rudo branco, SNR = 5dB ................................... 65
Figura 22: Sinal filtrado ........................................................................ 65
Figura 23: Soma em paralelo com o NEON.......................................... 68
LISTA DE TABELAS
Tabela 1: interfaces externas ................................................................. 32
Tabela 2: Recursos utilizados pelo redutor de rudo ............................. 62
SUMRIO
1 INTRODUO ................................................................................ 25
1.1 OBJETIVOS ................................................................................ 26
1.2 METODOLOGIA ........................................................................ 26
2 ZYNQ ................................................................................................ 27
2.1 SISTEMA DE PROCESSAMENTO ........................................... 27
2.2.1 UNIDADE DE PROCESSAMENTO E APLICAES .......... 30
2.2.2 Interfaces externas no sistema de processamento ............ 32
2.3 LGICA PROGRAMVEL ....................................................... 33
2.3.1 Elementos da lgica programvel ...................................... 33
2.4 COMUNICAO ENTRE PL E PS ............................................ 37
3 ALGORITMO DE REDUO DE RUDO.................................. 39
3.1 RUDO ......................................................................................... 40
3.2 AVALIAO PRELIMINAR DE ALGORITMOS.................... 40
3.3 DESCRIO DO ALGORITMO SELECIONADO ................... 42
3.3.1 Transferncia para o domnio da frequncia.................... 42
3.3.2 Filtro de Wiener na domnio da frequncia ...................... 47
3.3.3 Relao sinal rudo Posteriori e a Priori ........................... 50
3.3.4 Detector de atividade de voz e estimativa de rudo .......... 52
3.3.5 Detector de atividade de voz externo ................................. 53
3.4 CONSIDERAES FINAIS ....................................................... 54
3.5 IMPLEMENTAO EM FPGA ................................................. 55
3.5.1 Mquina de estados principal ............................................ 56
3.5.2 IP(Intellectual Property) .................................................... 60
3.5.3 Otimizao ........................................................................... 60
3.5.4 Resultados ............................................................................ 62
4 NEON ................................................................................................ 67
4.1 CONCEITOS BSICOS ............................................................. 67
4.2 FUNCIONAMENTO................................................................... 68
4.3 ANLISE DE CICLOS DO PRODUTO INTERNO ................... 70
5 CONCLUSO .................................................................................. 71
REFERNCIAS .................................................................................. 73
APNDICE A CDIGOS USADOS NO CAPTULO 4 .............. 75
25
1 INTRODUO
O princpio bsico do sistema VoIP [1] (Voice Over Internet
Protocol) baseia-se em realizar conversas usando a internet, ou uma rede
de computadores, desde que seja utilizado o protocolo de internet. Como
uma conversao feita pela internet, preciso primeiro digitalizar a
voz da origem em pacotes que trafeguem pela rede IP, e, quando chegar
ao destino, converter em voz novamente.
Quando uma ligao efetuada de VoIP para VoIP, esse servio
geralmente gratuito, enquanto que uma ligao para rede pblica
taxada. Dessa forma, preciso ter uma central VoIP, onde todo o
processo executado. Este processo consiste em converter o sinal
analgico para digital e vice-versa, detectar e gerar os tons para
realizao de chamada, cancelar o eco gerado pelas ligaes, codificar e
decodificar os pacotes do servio IP, reduzir o rudo, alm de outras
funcionalidades.
O custo para realizao de uma central VoIP pode variar, entre
outros fatores, pela definio do dispositivo que ser usado para o
desenvolvimento dessa central. Quanto maior o nmero de canais
disponveis para realizar ligaes, maior o processamento do
dispositivo, levando em conta que todo o processamento pode ser
realizado em vrios canais simultaneamente.
Os DSPs so dispositivos otimizados para clculos de
processamento digital de sinal, pois possuem funcionalidades bsicas
todas projetadas em hardware. Por possurem tais vantagens, alm do
preo competitivo, so bastante usados para o desenvolvimento de uma
central VoIP. Mas, quando o nmero de canais ampliado, surge a
necessidade de mais DSPs para garantir o processamento correto. Sendo
assim, o custo j no se torna um fator atraente.
O FPGA pode ser definido como um hardware programvel, pois
possui lgica digital que chaveada conforme a especificao do
projeto. Entretanto, no o suficiente para uma aplicao completa,
como uma central telefnica VoIP de vrios canais, onde um sistema
completo deve rodar. H FPGAs que possuem grande volume de lgica,
mas a um custo elevado e so destinados a outras aplicaes.
dentro deste contexto que o dispositivo Zynq avaliado. O
Zynq possui um processador ARM com dois ncleos e um FPGA
integrados no mesmo chip, logo, possvel ampliar o nmero de canais
de uma central VoIP a um custo competitivo.
26
1.1 OBJETIVOS
1.2 METODOLOGIA
Este trabalho de concluso de curso foi desenvolvido durante o
perodo de estgio na Intelbras [2]. A documentao fornecida pelo
fornecedor do dispositivo Zynq [3], Xilinx, foi extensivamente utilizada
para elaborao do projeto, bem como a documentao do processador
ARM [4]. A ferramenta de desenvolvimento utilizada foi o Planahead
[5] que integrada para implementao tanto de cdigos para FPGA,
quanto para o processador ARM.
Por questes de segurana, nenhum cdigo com destino
comercial pode ser exposto nesse trabalho.
27
2 ZYNQ
O dispositivo Zynq definido como um SoC(System on Chip) e
foi criado para ser flexvel e formar uma plataforma completa para uma
grande variedade de aplicaes. A caracterstica bsica que o define a
combinao de um sistema de processamento (PS) cuja arquitetura
Dual-Core ARM Cortex-A9 [6] e uma lgica programvel (PL),
equivalente a um FPGA, no mesmo silcio. Apesar de que processadores
dedicados j tenham sido acoplados em FPGA, estes nunca tiveram a
mesma proposta do Zynq. Neste, o ARM Cortex-A9 pode rodar sistemas
operacionais completos tais como o Linux, enquanto que o FPGA
baseado na arquitetura Xilinx 7-Series [7].O sistema ainda possui uma
interface AXI, que proporciona baixa latncia e uma grande largura de
banda para conexo entre as partes. Isso significa que o processador e o
FPGA podem ser utilizados para o que eles fazem de melhor sem a
perda de tempo para realizar a comunicao entre eles (overhead).
A unio de um processador e um FPGA em um nico chip
simplifica o sistema e reduz a rea fsica bem como o custo total do
projeto. A desvantagem est no desenvolvimento do fluxo, j que
necessrio ter conhecimento em linguagens estruturadas e orientadas a
objetos, linguagens de programao de hardware, como VHDL ou
Verilog, trabalhar com sistema Linux, entender os protocolos de
comunicao AXI e em muitos casos, como na otimizao de algoritmos
complexos, saber programar em linguagem assembly da arquitetura
ARM Cortex-A9. O assembly ARM possui dois mdulos, um para
otimizao de algoritmos sequenciais (assembly ARM) e outro para
otimizao de algoritmos vetoriais (assembly ARM-NEON).
O Zynq possui ainda possui vrios perifricos e memrias
integradas, mas seu modelo bsico compreende duas partes principais: O
processador, PS, e a lgica programvel, PL, que se comunicam por
uma interface chamada AXI. A figura 1 representa o modelo bsico do
Zynq.
2.1 SISTEMA DE PROCESSAMENTO
Apesar do Zynq possuir dois elementos fundamentais em um
mesmo chip, o PL e o PS, estes podem ser utilizados de forma
independente. Como ambas as partes so configuradas em domnios
diferentes, o que no est em uso desativado e no h consumo de
energia do mesmo. Entretanto, o uso mais completo do Zynq acontece
quando as duas partes so utilizadas em conjunto e, por isso,
28
29
30
31
32
I2C
CAN
UART
GPIO
SD
USB
GigE
Descrio
Serial Peripheral Interface, o padro
para comunicao serial. Utiliza
quatro pinos e funciona com
Master/Slave
Inter-Integrated Cirtuit, barramento
serial com apenas dois pinos e
funciona como multi-master, multislave.
Controller Area Network, barramento
de interface que est em conformidade
com a ISO 118980-1.
Universal Asynchronous Receiver
Transmitter,
comunicao
serial
geralmente usada para conexo a um
computador Host.
General Purpose I/O, pinos para uso
geral, h 4 grupos com 32 bits cada.
Para interfaces com carto SD.
Universal Serial Bus, barramento de
interface que est em conformidade
com USB 2.0.
Ethernet, arquitetura de interconexo
para redes locais.
33
Registradores
LUT
DSP
Memria
7010
35200
17600
80
60
7015
92400
46200
160
95
7020
106400
53200
220
140
7030
157200
78600
400
265
7045
343200
171900
900
500
70100
437200
218600
900
545
34
Figura 6: CLB
35
Figura 7: SLICE
36
37
38
39
40
41
42
43
44
45
(1)
46
47
(3)
Em que
indica o ndice dos coeficientes de sada da FFT. Ser
definido que uma amostra com a barra superior, por exemplo,
indica um nmero complexo. Esta mesma amostra pode ser utilizada
com seu mdulo
) e ngulo
na forma
.
O erro definido como:
48
(4)
Sendo que
o valor desejado, ou seja, o prprio
valor filtrado pelo algoritmo, que definido como:
(5)
(6)
Notar que
a potncia espectral de
, e
(7)
Resolvendo para
:
(8)
49
Apesar de que
sempre real,
complexo porque
Mas
e pela equao 3:
Agora o clculo de
(9)
Pela equao 3:
(10)
50
(11)
rudo. Mas
e pode ser obtido com a mdia do mdulo
ao quadrado de , ou seja,
. Essa mdia ser realizada
quando houver quadros de inatividade de voz, o que ser explicado
adiante com o detector de atividade de voz. Ento a relao Posteriori
pode ser definida como:
(13)
A relao a Priori definida como:
(14)
(15)
51
Assim, o valor de
[
relacionado com
[ ]
por:
[ ]
(17)
(18)
52
(21)
(21)
definido como:
(
(22)
(23)
53
(25)
54
Figura 15: VAD externo
INCIO
Contador = 0
No
VAD = 0
sim
Contador += 1
No
Contador = 12
sim
Mdia
FIM
Fonte: Reny Perucchi
55
56
57
Enable = 1
Enable = 0
Janelamento parte 2
Janelamento parte 1
Vad = 1
Vad = 0
Primeira estimativa = 1
Contador = 12
Contador < 12
Restart = 0
Restart = 1
58
59
60
61
62
Utilizao de Lgica
Usado
Disponvel
Utilizao
Registers
8388
106400
7%
LUT
4612
53200
8%
Slice
2324
13300
17%
21
220
9%
DSP48E1
63
64
65
66
67
4 NEON
Na parte do sistema de processamento do Zynq, PS, foi realizado
um estudo do NEON, pela necessidade de aprimorar o desempenho de
algoritmos. Como pode ser visto na figura 4 da seo 2, cada ncleo
possui NEON. Este pode ser definido como um coprocessador que faz
parte do processador ARM Cortex-A9, que est em conformidade com a
arquitetura ARM ARMv7 [18].
4.1 CONCEITOS BSICOS
O objetivo bsico do NEON paralelizar operaes, por
exemplo: so necessrias quatro instrues de soma para somar 4 dados
de 32 bits com 4 dados de 32 bits, alm da instruo de saturao. O
NEON, entretanto, necessita de apenas uma instruo para todo esse
processo.
Para conseguir esse tipo de desempenho, o NEON possui
registradores de 128 bits. Assim, aps carregar os dados nos
registradores do NEON, possvel empregar instrues em todos os
dados desse registrador de 128 bits. Por uma questo de desempenho,
tais registradores tem uma visual dual, ou seja, podem ser encarados
como um registrador de 128 bits, denominados registradores Q, ou dois
registradores de 64 bits, registradores D.
Um exemplo simples surge quando necessrio somar quatro
elementos de 32 bits. Para realizar essa tarefa no ARM, as seguintes
instrues so necessrias:
add
add
add
add
r0,
r1,
r2,
r3,
r5
r6
r7
r8
/*
/*
/*
/*
r0
r1
r2
r3
recebe
recebe
recebe
recebe
r0
r1
r2
r3
+
+
+
+
r5
r6
r7
r8
*/
*/
*/
*/
68
Q2
Q0
69
70
71
5 CONCLUSO
Para o entendimento do funcionamento do dispositivo Zynq, foi
necessrio um estudo da tecnologia SoC, fonercecida pela Xilinx. As
caractersticas foram exploradas a fim de se obter o mximo de
desempenho deste dispositivo. Para esse fim, a documentao e
exemplos fornecidos pela Xilinx e ARM foram de grande valia.
O algoritmo de reduo de rudo, baseado no filtro Wiener-AS,
foi implementado a partir da teoria desenvolvida por [12] e otimizada
por [13]. Uma primeira implementao ficou fora dos requisitos de
projeto, mas aps estudos sobre o funcionamento especfico do FPGA, e
do prprio dispositivo especfico, o algoritmo atingiu todos os critrios.
O algoritmo foi implementado e validado por todos os testes,
qualitativos e quantitativos.
Na parte do sistema de processamento do Zynq, houve a
necessidade de otimizao dos cdigos ali implementados, j que o
tempo limite de projeto no estava sendo cumprido. Uma alternativa
para esse problema foi o estudo com o coprocessador NEON. Este
possibilitou uma otimizao de cdigos, que estivessem em forma
vetorial, de at 60% em alguns casos.
Sugesto para trabalhos futuros:
72
73
REFERNCIAS
74
75
4x4
d0,
d1,
d2,
d3,
d4\n"//q4
d5\n"//q5
d6\n"//q6
d7\n"//q7
76