4.2 Implementa¸c˜ ao recorrendo ` a biblioteca System Generator
4.2.4 Cadeia de Sincroniza¸ c˜ ao
O m´etodo de sincroniza¸c˜ao utilizado neste trabalho baseia-se em correla¸c˜oes, tirando par- tido da existˆencia das sequˆencias de treino e da sua forma repetitiva.
Figura 4.7: Cadeia de sincroniza¸c˜ao
Com o intuito de garantir uma sincroniza¸c˜ao no tempo, o mais precisa poss´ıvel, foram implementadas tanto a auto-correla¸c˜ao (para uma sincroniza¸c˜ao prim´aria e menos precisa), como a correla¸c˜ao cruzada (para uma sincroniza¸c˜ao mais fina). Realce assim para o facto de que `a sa´ıda desta cadeia o sinal se encontrar preparado para a estima¸c˜ao de canal e posterior sincroniza¸c˜ao na frequˆencia.
A figura 4.7 ilustra a presen¸ca dos dois tipos de correla¸c˜ao, bem como a sua integra¸c˜ao no sistema.
Correla¸c˜ao
Correla¸c˜ao trata-se da medida da rela¸c˜ao entre duas vari´aveis aleat´orias. O coeficiente de correla¸c˜ao, R, entre duas vari´aveis, X e Y, pode ser definido como [30]:
R(X, Y ) = cov(X, Y )
σ(X).σ(Y ) (4.2)
O valor de R varia entre -1 e 1, sendo que para casos de valores pr´oximos dos limites observamos forte correla¸c˜ao entre vari´aveis e para valores residuais, observamos uma falta de liga¸c˜ao entre as duas vari´aveis.
Com o intuito de obter uma express˜ao mais pr´oxima de uma poss´ıvel implementa¸c˜ao torna- se importante chegar a uma rela¸c˜ao composta por opera¸c˜oes simples como a multiplica¸c˜ao, divis˜ao, soma e subtrac¸c˜ao.
Dado que a covariˆancia entre duas vari´aveis nos ´e dada pela m´edia dos produtos dos desvios de cada amostra relativamente `a sua pr´opria m´edia, teremos que:
cov(X, Y ) = P
i(Xi− X)(Yi− Y )
Ni
(4.3) Sabemos ainda que o desvio padr˜ao nos ´e dado pelas ra´ızes quadradas das variˆancias. De tudo isto, torna-se poss´ıvel extrair que:
R(X, Y ) = P i(Xi− X)(Yi− Y ) (P i(Xi− X)2)( P i(Yi− Y )2) (4.4) Auto-correla¸c˜ao
O caso da auto-correla¸c˜ao trata-se de um caso particular de correla¸c˜ao em que o sinal ´e correlacionado com o pr´oprio atrasado um determinado n´umero de amostras.
Para o caso desta implementa¸c˜ao esse n´umero ser´a dezasseis, j´a que corresponde ao n´umero de amostras de cada elemento da sequˆencia de treino.
Figura 4.8: Auto-correla¸c˜ao
Conforme ´e poss´ıvel identificar na figura 4.8, a implementa¸c˜ao da auto-correla¸c˜ao baseou- se na forma matem´atica da correla¸c˜ao, com o cuidado de comparar a amostra ”presente”com a atrasada 16 amostras, j´a que este ´e o per´ıodo de cada s´ımbolo.
O ramo superior da figura cont´em o numerador da frac¸c˜ao, enquanto que o seu ramo inferior representa o denominador. A fun¸c˜ao de cada bloco, bem como a sua parametriza¸c˜ao
tornam-se bastante relevantes para uma compreens˜ao completa deste modelo. Assim sendo,
Delay Este bloco ´e respons´avel pelo atraso de dezasseis amostras imputado ao sinal, para posterior compara¸c˜ao com o sinal actual. O seu campo vari´avel Latency ´e o n´umero de ciclos a atrasar o sinal (introdu¸c˜ao de latˆencia).
Figura 4.9: Bloco de atraso
Existe ainda a possibilidade da configura¸c˜ao de uma porta enable para uma poss´ıvel comuta¸c˜ao entre um estado activo (introduz atraso) e um estado passivo (n˜ao introduz atraso) .
Multiplicador Respons´avel pela multiplica¸c˜ao entre as sequˆencias de dados `as suas en- tradas. Neste bloco ´e necess´ario definir o tipo de dados que se deseja `a sa´ıda, bem como a forma de arredondamento e gest˜ao de poss´ıveis casos de overflow.
Somat´orio (Filtro FIR) A implementa¸c˜ao deste filtro ´e a forma mais intuitiva de repro- duzir um somat´orio dadas as ferramentas que comp˜oem o ambiente System Generator.
Figura 4.11: Filtro FIR (Somador)
O vector de coeficientes escolhido ´e composto por dezasseis 1’s, j´a que o que se procura ´e fazer o somat´orio de todos os 16 s´ımbolos consecutivos. Assim sendo teremos um filtro de 15a ordem.
Na figura 4.12 ´e vis´ıvel um diagrama de blocos, ilustrando o funcionamento de um filtro deste tipo.
Cada um dos coeficientes do filtro desenhado corresponder´a a um ´ındice b do diagrama de blocos representado.
Figura 4.12: Diagrama de blocos de um filtro FIR
M´odulo A fun¸c˜ao m´odulo n˜ao consta do conjunto de blocos do System Generator dispon´ıveis para implementa¸c˜ao. Assim sendo, esta fun¸c˜ao foi implementada recorrendo a um compara- dor que determina se cada valor ´e positivo ou negativo e, que em caso de sinal negativo remete o valor para uma multiplica¸c˜ao por -1. Assim, garante-se que todos os valores passam ao seu m´odulo.
Figura 4.13: Diagrama de blocos da implementa¸c˜ao da fun¸c˜ao M´odulo
Divisor (CORDIC) As divis˜oes s˜ao efectuadas atrav´es do algoritmo CORDIC, j´a que este permite uma enorme poupan¸ca a n´ıvel de recursos para realiza¸c˜ao de divis˜oes em FPGA.
O valor da auto-correla¸c˜ao ´e depois compardo com uma constante (limite de decis˜ao) e o resultado desta compara¸c˜ao ´e encaminhado para fora deste sub-bloco, para posterior coordena¸c˜ao com valores de correla¸c˜ao cruzada com o fim de sincronizar a trama no tempo.
Correla¸c˜ao cruzada
No caso da correla¸c˜ao cruzada, esta foi efectuada com recurso `as sequˆencias de treino pr´e-determinadas e conhecidas e acarreta consigo a possibilidade de um tipo de sincroniza¸c˜ao mais preciso.
Figura 4.14: Correla¸c˜ao cruzada
Como ´e poss´ıvel constatar pela figura 4.14, a implementa¸c˜ao desta fun¸c˜ao matem´atica, dada a sua semelhan¸ca com auto-correla¸c˜ao, foi realizada com o mesmo tipo de recursos. As maiores diferen¸cas consistem na utiliza¸c˜ao de uma ROM para armazenamento das sequˆencias de treino a comparar e no facto de parte do processamento decis´orio da correla¸c˜ao ficar fora deste sub-bloco.
Fora do bloco de correla¸c˜ao cruzada ´e feita uma multiplica¸c˜ao do valor da correla¸c˜ao numa determinada amostra pelo valor de uma amostra atrasada 16 ciclos. Assim, ´e poss´ıvel acentuar a diferen¸ca entre o valor 1, correspondente a boa correla¸c˜ao, e valores mais residuais, garantindo assim um limiar decis´orio mais destacado.
Detec¸c˜ao de in´ıcio de trama
Os resultados do sistema decis´orio de auto-correla¸c˜ao e de correla¸c˜ao servem, posterior- mente, como entradas de uma porta l´ogica AND que colocar´a `a sua sa´ıda o valor 1 (verdadeiro) apenas quando os limiares de decis˜ao das duas correla¸c˜oes coincidirem.
Para uma correcta visualiza¸c˜ao dos resultados, o sinal recebido `a entrada da cadeia de sincroniza¸c˜ao ´e atrasado num n´umero de amostras equivalente ao atraso propagado de toda a cadeia de recep¸c˜ao. Assim, sendo, a visualiza¸c˜ao do sinal recebido, bem como a janela de m´axima correla¸c˜ao podem coincidir.
4.3
Co-simula¸c˜ao em FPGA
O m´etodo de co-simula¸c˜ao em hardware foi introduzido pela Xilinx em 2003, permitindo a execu¸c˜ao de uma simula¸c˜ao recorrendo tanto a recursos do Simulink como ao recursos da pr´opria FPGA.
A principal raz˜ao da utiliza¸c˜ao desta ferramenta passa por conseguir, atrav´es de uma simbiose entre hardware e software, compreender de uma forma mais intuitiva o funcionamento de todo o sistema projectado.
4.3.1 Implementa¸c˜ao
A estrutura implementada pela co-simula¸c˜ao ´e muito pr´oxima daquela previamente es- tudada e executada em ambiente Matlab. A diferen¸ca mais significativa prende-se com a limita¸c˜ao impingida pelas precis˜oes tanto da DAC como da ADC.
O processo de cria¸c˜ao do bloco de co-simula¸c˜ao passa por:
1. Escolher o destino da compila¸c˜ao: XtremeDSP Development Kit (PCI); 2. Decidir qual a FPGA do kit a utilizar: Virtex4;
3. Definir o per´ıodo de rel´ogio da FPGA, tendo em considera¸c˜ao que no caso de utiliza¸c˜ao de DACs ou ADCs, ´e necess´ario fixar em free running ;
4. Gerar o bloco para a biblioteca.
O resultado do procedimento referido anteriormente est´a ilustrado na figura 4.15.
Assim que este bloco ´e compilado (processo relativamente longo), sempre que seja necess´ario efectuar qualquer tipo de altera¸c˜ao, ´e for¸cosa uma nova compila¸c˜ao, sendo este um inconve- niente inerente `a utiliza¸c˜ao desta ferramenta.
Figura 4.15: Bloco de co-simula¸c˜ao
No final da compila¸c˜ao ser´a poss´ıvel identificar quais os recursos utilizados pelo sistema e em que quantidades s˜ao necess´arios. Este levantamento permite ter uma ideia das limita¸c˜oes da FPGA e de uma poss´ıvel necessidade de simplifica¸c˜ao da solu¸c˜ao.
Cap´ıtulo 5
Resultados
No ˆambito do trabalho realizado, torna-se relevante perceber que tipo de informa¸c˜ao gera a cadeia de transmiss˜ao, bem como, se o in´ıcio do chamado campo de dados ´e identificado na parte do sistema correspondente `a cadeia de recep¸c˜ao. Assim, ´e indispens´avel observar a sequˆencia de informa¸c˜ao `a entrada da ADC, bem como o tipo de interferˆencia provocado pelo ru´ıdo adicionado. ´E ainda relevante observar os resultados de ambos os correladores e identificar a sincroniza¸c˜ao da trama no tempo.
Os resultados obtidos foram, na maioria das situa¸c˜oes, gerados com o recurso ao bloco scope. No entanto, ´e ainda poss´ıvel observar a trama `a sa´ıda da ADC com o aux´ılio de um oscilosc´opio, dado que esta informa¸c˜ao se encontra no dom´ınio anal´ogico quando utilizado o bloco de co-simula¸c˜ao.
5.1
Gerador de Trama
Na figura 5.1 ´e poss´ıvel identificar um conjunto de dez sequˆencias de treino, cada uma com a dura¸c˜ao de 16 amostras e com valores de amplitude correspondentes aos pr´e-determinados na norma IEEE 802.11p.
Ap´os processamento da sequˆencia de treino, esta ´e concatenada com uma sequˆencia aleat´oria de informa¸c˜ao, resultando na trama completa a ser enviada.
Como j´a referido, uma das hip´otese de ru´ıdo a adicionar ´e o pr´oprio sinal desfasado no tempo e atenuado, resultado natural de efeitos de multi-propaga¸c˜ao. A figura 5.3 demonstra, por compara¸c˜ao, o efeito que um sinal desfasado em 16 amostras com uma atenua¸c˜ao de 10 vezes relativamente ao sinal original provoca no sinal no receptor.
Figura 5.1: Sequˆencia de treino processada
Figura 5.2: Trama completa transmitida
sinal que vai ser recebido na cadeia de sincroniza¸c˜ao (baixo).
Como ´e percept´ıvel, a introdu¸c˜ao de ru´ıdo no sinal provoca uma distor¸c˜ao significativa no sinal a transmitir, j´a que ´e poss´ıvel verificar o aparecimento de interferˆencia entre a trama de dados e a sequˆencia de treino.
5.2
Cadeia de sincroniza¸c˜ao
No que `a cadeia de recep¸c˜ao diz respeito, torna-se relevante compreender quais os outputs expect´aveis para uma fun¸c˜ao de correla¸c˜ao.
Como referido previamente, a correla¸c˜ao varia entre valores de -1 e 1 (casos de correla¸c˜ao m´axima). No caso desta implementa¸c˜ao, e como foi efectuado o quadrado da rela¸c˜ao de correla¸c˜ao, os valores variar˜ao apenas entre 0 (correla¸c˜ao nula) e 1 (correla¸c˜ao m´axima).
5.2.1 Auto-correla¸c˜ao
Para o caso da auto-correla¸c˜ao, como ´e poss´ıvel verificar na figura 5.4, o valor obteve-se valores de correla¸c˜ao m´axima em zonas de sequˆencias de treino. Este resultado era expect´avel j´a que as sequˆencias de treino s˜ao semelhantes entre si e repetem-se ao longo de 10 conjuntos de 16 amostras.
Figura 5.3: Trama de dados transmitida com ru´ıdo adicionado
Na figura 5.4, a imagem superior corresponde `a trama recebida e a inferior aos valores de correla¸c˜ao. As imagens centrais correspondem a passos interm´edios da auto-correla¸c˜ao. Realce para o facto de a ”janela”correspondente a correla¸c˜ao positiva englobar parte da trama de dados. Este fen´omeno deve-se a uma compensa¸c˜ao n˜ao efectuada dos atrasos provocados pela fun¸c˜ao de auto-correla¸c˜ao.
5.2.2 Correla¸c˜ao cruzada
No caso da correla¸c˜ao cruzada, e dado que a correla¸c˜ao ´e efectuada com as sequˆencias de treino, espera-se que seja na zona das sequˆencias de treino que o valor desta fun¸c˜ao atinja o seu pico.
A figura superior corresponde `a trama recebida e a inferior aos valores de correla¸c˜ao. Mais uma vez, conv´em que a ”janela”correspondente a correla¸c˜ao positiva engloba parte da trama de dados. A raz˜ao deste fen´omeno ´e equivalente `a anteriormente apontada.
Figura 5.4: Resultado da auto-correla¸c˜ao
5.2.3 Resultado final
No final de toda a cadeia de recep¸c˜ao, torna-se poss´ıvel adquirir, de uma forma aproxi- mada, o in´ıcio da trama. ´E recuperada a parte final da sequˆencia de treino, pelo que se torna poss´ıvel identificar que o campo de dados se iniciar´a no final da ”janela”obtida.
Para o caso de ru´ıdo adicionado em quest˜ao, foi poss´ıvel recuperar a localiza¸c˜ao de sete dos s´ımbolos da sequˆencia de treino. A figura 5.6 demonstra isso mesmo.
O valor de 1 presente no gr´afico corresponde `a situa¸c˜ao do sinal que se encontra fora da ”janela”de correla¸c˜ao m´axima. Este valor foi definido a 1 apenas por conveniˆencia de implementa¸c˜ao.
O inicio da trama de dados ´e demarcado pela transi¸c˜ao positiva no gr´afico acima repre- sentado.
Figura 5.5: Resultado da correla¸c˜ao cruzada
5.3
Co-simula¸c˜ao
No que diz respeito `a co-simula¸c˜ao, n˜ao foi poss´ıvel extrair resultados da cadeia de re- cep¸c˜ao, j´a que n˜ao ´e poss´ıvel compilar um bloco de co-simula¸c˜ao que englobe o par DAC e ADC.
Foi compilado o bloco de gera¸c˜ao de sinal com ru´ıdo adicionado e o resultado ´e ilustrado pela figura 5.7.
Figura 5.7: Trama presente `a sa´ıda da DAC
O resultado do bloco de co-simula¸c˜ao ´e semelhante ao observado na cadeia de transmiss˜ao simulada. A principal diferen¸ca reside na menor resolu¸c˜ao, dada a limita¸c˜ao de 14 bits de resolu¸c˜ao imposta pela DAC presente no kit de desenvolvimento.