• Nenhum resultado encontrado

de poderosos softwares disponibilizados por seus fabricantes. Estes softwares s˜ao obtidos pela compra de pacotes de projeto (geralmente chamados de design suites) que cont´em a plataforma f´ısica (FPGA, por exemplo) e um conjunto de softwares que poder˜ao ser utili- zados jutamente com o dispositivo. Entre os softwares se encontra a respectiva ferramenta que interpreta e sintetiza c´odigos em VHDL (e geralmente em outras HDLs), chamada EDA (Electronic Design Automation). Em alguns casos s˜ao disponibilizadas vers˜oes com- pactas das design suites gratuitamente. Alguns exemplos de EDAs s˜ao o Quartus II da Altera e o ISE Suite da Xilinx.

3.4

Projeto em N´ıvel de Sistema

Uma das formas mais comuns de se realizar um projeto em plataforma de hardware reconfigur´avel ´e atrav´es da escrita de um c´odigo em uma linguagem de descri¸c˜ao de hardware. Dessa maneira, o comportamento do hardware descrito no c´odigo ´e mapeado nos blocos l´ogicos e interconex˜oes do dispositivo reconfigur´avel.

Outra abordagem ´e utilizar uma ferramenta de projeto em n´ıvel de sistema (System-level Design Software, onde o projeto ´e realizado atrav´es de blocos disponibiliza- dos pela ferramenta e a s´ıntese do mesmo em uma placa de hardware pode ser feita de forma autom´atica. Tamb´em ´e poss´ıvel realizar a convers˜ao do projeto em n´ıvel de sistema para um c´odigo em linguagem de m´aquina. Exemplos de ferramentas de projeto em n´ıvel de sistema s˜ao o System Generator da Xilinx, e o DSP Builder da Altera.

Nesse trabalho ´e utilizada a ferramenta DSP Builder para a realiza¸c˜ao do projeto do hardware e sua s´ıntese em um dispositivo FPGA.

O DSP Builder ´e um software disponibilizado pela Altera Corporation em seu Kit de Desenvolvimento para Processamento Digital de Sinais. Este software ´e integrado ao ambiente Simulink do Matlab e oferece um conjunto de blocos espec´ıficos para o pro- jeto de hardware digital, al´em de sua s´ıntese em uma placa de hardware reconfigur´avel. O

DSP Builder possui um grande n´umero de fun¸c˜oes, como por exemplo: atribuir a sinais utilizados em ambiente Simulink uma representa¸c˜ao digital de ponto-fixo, assim como realizar diversas opera¸c˜oes com esses sinais, integrar blocos Scope do Simulink para a vi- sualiza¸c˜ao dos formatos de onda manipulados pela placa de hardware, realizar a convers˜ao

3.4 Projeto em N´ıvel de Sistema 47 autom´atica do projeto em n´ıvel de sistema para a linguagem de descri¸c˜ao de hardware VHDL, entre outras.

No pr´oximo cap´ıtulo ser˜ao discutidos os projetos de hardware desenvolvidos nesse trabalho, al´em dos modelos de hardware sintetiz´aveis gerados atrav´es da uni˜ao dos softwares Simulink e DSP Builder.

48

4 Implementa¸c˜ao do FastICA em FPGA

Os principais objetivos propostos nesse trabalho ´e a implementa¸c˜ao do al- goritmo FastICA embarcado em um aplataforma de hardware reconfigur´avel para a re- solu¸c˜ao de problemas que necessitem a separa¸c˜ao cega de fontes para a estra¸c˜ao de sinais desej´aveis. Para isso utilizaremos a ferramenta do MATLAB, Simulink, para a gera¸c˜ao de modelos e tamb´em o software DSP Builder, da Altera, para a sintetiza¸c˜ao dos modelos em uma placa FPGA. Os modelos ser˜ao direcionados a aplica¸c˜oes diferentes, j´a que a reprograma¸c˜ao em FPGA pode ser realizada em pouco tempo e em campo. As aplica¸c˜oes s˜ao o problema da Cocktail Party com duas fontes, a extra¸c˜ao de sinais indesej´aveis e recupera¸c˜ao das fontes originais com trˆes fontes, (ambas descritas na se¸c˜ao 2.9) e a ex- tra¸c˜ao de artefatos indesej´ados (por exemplo, a influˆencia de sinais de atividade muscular de sinais reais de eletroencefalograma.

O diagrama de alto-n´ıvel do processo ´e mostrado na figura 4.1. As misturas observadas X1,...,n s˜ao pr´e-processadas e adquiridas pelos modelos atrav´es de arquivos que

cont´em os dados pr´e-processados Z1,...,n. Os modelos s˜ao ent˜ao, sintetizados em uma placa

FPGA que ir´a calcular as componentes independentes e realizar o c´alculo dos dados de sa´ıda.

Figura 4.1: Diagrama de alto-n´ıvel de todo o processo, onde o FastICA ´e executado uma vez para cada componente a ser calculada

4.1 Projeto do Modelo do Hardware 49

4.1

Projeto do Modelo do Hardware

Os modelos implementam, basicamente, os hardwares da itera¸c˜ao principal do FastICA, da ortogonaliza¸c˜ao necess´aria para o c´alculo de mais de uma componente independente, do c´alculo dos vetores de sa´ıda e das estruturas de controle de todo o processo.

A itera¸c˜ao principal do FastICA ´e dada pela seguinte express˜ao, vista na se¸c˜ao 2.7:

w∗ ← E{zg(wt

z)} − E{g′(wt

z)}w (4.1)

A fun¸c˜ao g foi escolhida com base nas simula¸c˜oes e testes realizados na imple- menta¸c˜ao do algoritmo em MATLAB, tal que:

g(y) = y3

(4.2) portanto:

g′(y) = 3y2

(4.3) Como a variˆancia de z ´e unit´aria (E{z2

} = 1) devido ao branqueamento rea- lizado na etapa de pr´e-processamento dos dados, a itera¸c˜ao principal do algoritmo pode ser escrita como:

w∗ ← E{zg(wt

z)} − 3w (4.4)

A cada itera¸c˜ao, o FastICA atualiza o valor da proje¸c˜ao w de dimens˜ao igual ao n´umero de componentes a serem calculadas e testa o crit´erio de convergˆencia. Caso o crit´erio seja atingido, uma nova proje¸c˜ao ser´a calculada para a pr´oxima componente independente.

As express˜oes 4.5 a 4.9 representam a atualiza¸c˜ao de cada elemento da proje¸c˜ao w em uma itera¸c˜ao do alor´ıtmo FastICA para o caso de duas (equa¸c˜oes (4.5) e (4.6))e trˆes (equa¸c˜oes (4.7), (4.8) e (4.9)) componentes independentes, respectivamente.

w1new = (Z11(Z11w1 + Z21w2) 3 + Z12(Z12w1+ Z22w2) 3 + ... + Z1k(Z1kw1 +Z2kw2) 3 )K − 3w1 (4.5) w2new = (Z21(Z11w1 + Z21w2) 3 + Z22(Z12w1+ Z22w2) 3 + ... + Z2k(Z1kw1 +Z2kw2) 3 )K − 3w2 (4.6)

4.1 Projeto do Modelo do Hardware 50 w1new = (Z11(Z11w1+ Z21w2+ Z31w3) 3 + Z12(Z12w1+ Z22w2+ Z32w3) 3 +... + Z1k(Z1kw1+ Z2kw2 + Z3kw3) 3 )K − 3w1 (4.7) w2new = (Z21(Z11w1+ Z21w2+ Z31w3) 3 + Z22(Z12w1+ Z22w2+ Z32w3) 3 +... + Z2k(Z1kw1+ Z2kw2 + Z3kw3) 3 )K − 3w2 (4.8) w3new = (Z31(Z11w1+ Z21w2+ Z31w3) 3 + Z32(Z12w1+ Z22w2+ Z32w3) 3 +... + Z3k(Z1kw1+ Z2kw2 + Z3kw3) 3 )K − 3w3 (4.9)

tal que K = 1/n´umero de amostras dos dados

Nas equa¸c˜oes 4.10 a 4.12 a itera¸c˜ao do FastICA ´e extendida para n componen- tes independentes. w1new = (Z11(Z11w1+ Z21w2+ ... + Zn1wn) 3 + Z12(Z12w1+ Z22w2 + ... + Zn2wn) 3 +... + Z1k(Z1kw1+ Z2kw2+ ... + Znkwn) 3 )K − 3w1 (4.10) w2new = (Z21(Z11w1+ Z21w2+ ... + Zn1wn) 3 + Z22(Z12w1+ Z22w2 + ... + Zn2wn) 3 +... + Z2k(Z1kw1+ Z2kw2+ ... + Znkwn) 3 )K − 3w2 (4.11) wn new = (Zn1(Z11w1+ Z21w2+ ... + Zn1wn) 3 + Zn2(Z12w1+ Z22w2+ ... + Zn2wn) 3 +... + Znk(Z1kw1+ Z2kw2+ ... + Znkwn) 3 )K − 3wn (4.12)

As Figuras 4.2 e 4.3 mostram os hardwares que implementam as express˜oes da itera¸c˜ao principal do FastICA para o caso de 2 e 3 componentes. Os projetos dos hardwares s˜ao compostos de elementos somadores (+), multiplicadores (X) e acumuladores (ACC). Ap´os cada itera¸c˜ao ´e necess´ario realizar a ortogonaliza¸c˜ao da proje¸c˜ao atuali- zada em rela¸c˜ao `as proje¸c˜oes previamente calculadas, j´a que o branqueamento garante que as componentes independentes se encontram em espa¸cos ortogonais entre s´ı. Na equa¸c˜ao 2.46, temos um m´etodo simples de se realizar a ortogonaliza¸c˜ao deflacion´aria onde sub- traimos as p−1 proje¸c˜oes (wt

p)wj de wp, tal que p ´e a atual proje¸c˜ao a ser calculada. Dessa

forma, cada elemento da proje¸c˜ao ´e ortogonalizado, como pode ser visto nas express˜oes (4.13) e (4.14) para o caso de 2 componentes e (4.15), (4.16) e (4.17) para o caso de 3 componentes.

w1new = w1− (W11(W11w1+ W12w2) + W21(W21w1+ W22w2)) (4.13)

4.1 Projeto do Modelo do Hardware 51

Figura 4.2: Hardwares de uma itera¸c˜ao principal do algor´ıtmo FastICA para os casos de 3 (A) e 2 (B) componentes independentes

Figura 4.3: Hardwares de uma itera¸c˜ao principal do algor´ıtmo FastICA para os casos de 3 (A) e 2 (B) componentes independentes

4.1 Projeto do Modelo do Hardware 52

Figura 4.4: Hardware da ortogonaliza¸c˜ao deflacion´aria para duas componentes indepen- dentes w1new = w1− (W11(W11w1+ W12w2+ W13w3) + W21(W21w1 + W22w2+ W23w3) + W31(W31w1 + W32w2+ W33w3)) (4.15) w2new = w2− (W12(W11w1+ W12w2+ W13w3) + W22(W21w1 + W22w2+ W23w3) + W32(W31w1 + W32w2+ W33w3)) (4.16) w3new = w3− (W13(W11w1+ W12w2+ W13w3) + W23(W21w1 + W22w2+ W23w3) + W33(W31w1 + W32w2+ W33w3)) (4.17)

As equa¸c˜oes 4.18 a 4.20 ilustram a extens˜ao para n componentes independentes da ortogonaliza¸c˜ao de cada elemento da nova proje¸c˜ao calculada a partir da itera¸c˜ao principal do FastICA. w1new = w1− (W11(W11w1+ W12w2+ ... + W1nwn) + W21(W21w1+ W22w2+ ... + W2nwn) + ... + Wn1(Wn1w1+ Wn2w2+ ... + Wnnwn)) (4.18) w2new = w2− (W12(W11w1+ W12w2+ ... + W1nwn) + W22(W21w1+ W22w2+ ... + W2nwn) + ... + Wn2(Wn1w1+ Wn2w2+ ... + Wnnwn)) (4.19) wn new = wn− (W1n(W11w1+ W12w2+ ... + W1nwn) + W2n(W21w1+ W22w2+ ... + W2nwn) + ... + Wnn(Wn1w1+ Wn2w2+ ... + Wnnwn)) (4.20)

4.1 Projeto do Modelo do Hardware 53

Figura 4.5: Hardware da ortogonaliza¸c˜ao deflacion´aria para trˆes componentes indepen- dentes

As Figuras 4.4 e 4.5 ilustram as implementa¸c˜oes em hardware das ortogona- liza¸c˜oes realizadas nas express˜oes 4.13 a 4.17 para o caso de duas e trˆes componentes independentes, respectivamente.

Ap´os a ortogonaliza¸c˜ao a nova proje¸c˜ao ´e normalizada e ´e realizado o c´alculo do crit´erio de convergˆencia, que consiste basicamente em verificar se a diferen¸ca entre a nova proje¸c˜ao e a anterior est´a dentro de uma tolerˆancia previamente especificada (η), ou seja: wi new− wi ≤ η. Como consequˆencia de uma das ambiguidades do modelo ICA, a

fonte pode ser invertida ao ser multiplicada por −1, portanto, para que a convergˆencia do algoritmo seja garantida, o crit´erio wi new+ wi tamb´em deve ser verificado.

4.1 Projeto do Modelo do Hardware 54

Figura 4.6: Hardware do c´alculo dos dados de sa´ıda para trˆes (A) e duas (B) componentes

Ap´os a convergˆencia ser atingida, ´e realizado do c´alculo dos dados de sa´ıda e o processo ´e repetido para as componentes restantes. Os hardwares dessa etapa s˜ao ilustrados na Figura 4.6.

Para o modelo onde ser˜ao utilizados dados reais de eletroencefalograma, o n´umero de componentes independentes a serem calculadas ´e muito grande. Nos experi- mentos realizados no Instituto Internacional de Neurociˆencias de Natal Edmond e Lily Safra, foram utilizados 22 sensores para capturar os sinais de EEG, mais 4 sensores que captam atividade muscular dos olhos, cora¸c˜ao e queixo, totalizando 26 sensores e por consequˆencia 26 componentes independentes a serem calculadas pelo algoritmo FastICA. Tendo como base as Figuras 4.2, 4.4 e 4.5, seria necess´ario um hardware muito grande para implementar o algoritmo FastICA em uma plataforma FPGA para calcular todas as 26 componentes independentes dos dados extra´ıdos nos experimentos. Como j´a demonstrado na literatura [Vig´ario, S¨arel¨a, Jousm¨aki, H¨am¨al¨ainen, and Oja], pode-se realizar uma redu¸c˜ao de dimens˜ao atrav´es da An´alise de Componentes Principais (PCA), que reduz a massa de dados eliminando as misturas de menores autovalores, de acordo com um limite previamente estabelecido.

Na Figura 4.7 ´e apresentada uma simula¸c˜ao com os dados de eletroencefalo- grama, onde foi realizada uma redu¸c˜ao de dimens˜ao atrav´es da t´ecnica PCA devido a grande massa de dados contida em sinais dessa natureza. O PCA foi implementado de

Documentos relacionados