tese 1,9 mb

97
Aceleração por Hardware de Cálculos Matriciais para Aplicações de Comunicação Sem Fios Eugénio Filipe Nogueira Costa Dissertação para obtenção do Grau de Mestre em Engenharia Electrotécnica Júri Presidente: Prof. Doutor Nuno Cavaco Gomes Horta Orientador: Prof. Doutor Horácio Cláudio de Campos Neto Co-Orientadora: Prof.ª Doutora Maria Helena da Costa Matos Sarmento Vogal: Prof. Doutor Nuno Filipe Valentim Roma Janeiro 2012

Upload: dangmien

Post on 07-Jan-2017

267 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Tese 1,9 MB

Aceleração por Hardware de Cálculos Matriciais para

Aplicações de Comunicação Sem Fios

Eugénio Filipe Nogueira Costa

Dissertação para obtenção do Grau de Mestre em

Engenharia Electrotécnica

Júri

Presidente: Prof. Doutor Nuno Cavaco Gomes Horta

Orientador: Prof. Doutor Horácio Cláudio de Campos Neto

Co-Orientadora: Prof.ª Doutora Maria Helena da Costa Matos Sarmento

Vogal: Prof. Doutor Nuno Filipe Valentim Roma

Janeiro 2012

Page 2: Tese 1,9 MB

i

Page 3: Tese 1,9 MB

ii

Agradecimentos

Dedico este espaço a todos que de alguma forma deram a sua contribuição, não só na

elaboração na presente dissertação, mas também no decurso do Mestrado que agora termina,

incluindo aqueles que, por equívoco meu, me olvide referir.

Agradeço aos meus orientadores, Professor Horácio Neto e Professora Helena Sarmen-

to, pela sua disponibilidade, colaboração e valiosos contributos científicos.

Agradeço em especial o esforço, a paciência, a disponibilidade e a dedicação do Profes-

sor Horácio Neto, que esteve sempre envolvido em todas as fases de execução e permitiu que

esta dissertação fosse concluída com sucesso.

Aos meus camaradas Renato Vieira, Ricardo Pereira, Carlos Ruivo e João Mendes,

pelas imensas horas passadas na troca de ideias, partilha de angústias, dúvidas e incertezas.

Aos meus camaradas de curso “Chakais” por manterem sempre presente um espírito de

camaradagem e união.

Agradeço a todos os meus amigos pelo apoio que directa ou indirectamente me deram

no decorrer deste trabalho e do curso que agora termina.

Por último mas nem por isso menos importante, um agradecimento muito especial à

minha família. Aos meus Pais, a quem devo tudo o que sou hoje e à minha irmã. Apesar da

distância, reconheço o vosso carinho e preocupação constantes.

A todos os elementos presentes neste texto de agradecimento, o meu sincero e profundo

Obrigado.

Page 4: Tese 1,9 MB

iii

Page 5: Tese 1,9 MB

iv

Resumo

As aplicações de comunicações sem fios destinadas a sistemas multi-antena envolvem

problemas de inversão e decomposição matricial que exigem operações computacionais efi-

cientes. A inversão matricial constitui, ao mesmo tempo, um processo computacional intensivo.

Esta dissertação apresenta uma arquitectura eficiente e escalável para inversão de

matrizes quadradas, com elementos complexos. O projecto foi baseado no método de decom-

posição QR, com recurso ao algoritmo de ortogonalização Gram-Schmidt Modificado. O uso do

Gram-Schmidt Modificado permitiu o desenvolvimento de uma arquitectura numericamente

estável e com elevada precisão para o processamento de matrizes bem condicionadas não

singulares. Foi realizada uma exploração arquitectural detalhada, com base na decomposição

do algoritmo num conjunto de fases e operações, que permitiu obter uma implementação efi-

ciente com um elevado nível de paralelismo.

Os resultados obtidos mostram que a arquitectura desenvolvida consegue desempenhos

superiores aos dos trabalhos desenvolvidos em FPGA, anteriormente propostos. O multipro-

cessador obteve um tempo total de execução de 2,9 µs, a uma frequência de relógio de

167MHz, para inverter matrizes complexas de ordem 8 no dispositivo da Xilinx Virtex-6

XC6VLX760.

A arquitectura desenvolvida permite ainda processar matrizes de ordem inferior a 8 e

implementações com diferentes níveis de risco de erro associado. A arquitectura do projecto é

também facilmente extensível para o processamento de matrizes de dimensões superiores.

Palavras-chave:

Hardware, FPGA, inversão matricial, Gram-Schmidt Modificado, comunicações sem fios,

MIMO.

Page 6: Tese 1,9 MB

v

Page 7: Tese 1,9 MB

vi

Abstract

Wireless communication applications for multi-antenna systems require the efficient com-

putation of matrix inversion and decomposition problems. Matrix inversion is also a

computationally intensive process.

This paper presents an efficient and scalable architecture for the inversion of square ma-

trices with complex elements. The design is based on the QR decomposition algorithm with

modified Gram-Schmidt orthogonalization. The use of modified Gram-Schmidt makes this archi-

tecture numerical stable and accurate for well-conditioned non-singular matrices. An

optimization technique is proposed, such that the algorithm is split in several stages and opera-

tions, which can be efficiently parallelized.

The results obtained show that the proposed architecture is significantly faster than pre-

viously published FPGA implementations. The matrix inversion core can achieve a throughput

of up to 0.34M updates per second, for 8 by 8 matrices of complex values, on a Xilinx Virtex-6

XC6VLX760 executing at 167MHz.

The proposed architecture can also process smaller matrices and it supports different er-

ror risk levels. Further, this new architecture is easily extendable for other matrix sizes.

Keywords:

Hardware, FPGA, matrix inversion, Modified Gram-Schmidt, wireless communications, MIMO.

Page 8: Tese 1,9 MB

vii

Page 9: Tese 1,9 MB

viii

Índice

Agradecimentos ................................................................................................................... ii

Resumo ............................................................................................................................... iv

Abstract ............................................................................................................................... vi

Índice ................................................................................................................................. viii

Lista de Figuras ................................................................................................................... x

Lista de Tabelas ................................................................................................................. xii

Lista de Abreviaturas ........................................................................................................ xiv

Lista de Símbolos .............................................................................................................. xvi

1 Introdução .................................................................................................................. 1

1.1 Contexto e Enquadramento .................................................................................. 1

1.2 Motivação .............................................................................................................. 2

1.3 Objectivos .............................................................................................................. 4

1.4 Metodologia ........................................................................................................... 5

1.5 Estrutura do Documento........................................................................................ 6

2 Sistemas Multi-Antena e Algoritmos de Inversão Matricial ....................................... 7

2.1 Sistemas Multi-Antena........................................................................................... 7

2.2 Métodos de Inversão Matricial ............................................................................ 10

2.2.1 Métodos de aproximação analíticos ............................................................ 10

2.2.2 Decomposição LU e decomposição Cholesky ............................................ 12

2.2.3 Decomposição QR ...................................................................................... 12

2.3 Implementação em Hardware de Algoritmos de Inversão Matricial .................... 15

2.4 Conclusão ............................................................................................................ 17

3 Ortogonalização Gram-Schmidt e Representação Aritmética ................................ 19

3.1 Inversão de matrizes com recurso à decomposição QR utilizando a

ortogonalização Gram-Schmidt ............................................................................................... 19

3.2 Inversão de matrizes com o algoritmo Modified Gram-Schmidt ......................... 22

3.3 Aritmética de vírgula fixa ..................................................................................... 25

3.4 Conclusão ............................................................................................................ 27

4 Especificação e Optimização do MGS .................................................................... 29

4.1 Especificação do MGS para inversão de matrizes complexas de ordem 8 ........ 29

Page 10: Tese 1,9 MB

ix

4.1.1 Fase 1 – Cálculo das colunas da matriz Q (Qi), da diagonal da matriz R (Rii)

e das colunas das matrizes U ............................................................................................. 29

4.1.2 Fase 2 – Cálculo da matriz W ..................................................................... 31

4.1.3 Fase 3 – Cálculo da matriz B ...................................................................... 32

4.2 Modelo e optimização.......................................................................................... 33

4.3 Análise de Erro .................................................................................................... 38

4.4 Conclusão ............................................................................................................ 42

5 Projecto e Implementação da Arquitectura de Processamento .............................. 43

5.1 Dependências e conflitos de dados .................................................................... 43

5.2 Arquitectura ......................................................................................................... 44

5.2.1 Armazenamento de dados .......................................................................... 45

5.2.2 Subtractor vectorial ...................................................................................... 48

5.2.3 Multiplicador simples ................................................................................... 49

5.2.4 Multiplicador vectorial .................................................................................. 50

5.2.5 Recíproco .................................................................................................... 51

5.2.6 Raiz quadrada ............................................................................................. 53

5.3 Conclusão ............................................................................................................ 55

6 Resultados ............................................................................................................... 57

6.1 Recursos e Desempenho .................................................................................... 57

6.2 Análise de erro e Precisão .................................................................................. 60

6.3 Conclusão ............................................................................................................ 66

7 Conclusões e trabalho futuro .................................................................................. 67

7.1 Satisfação dos objectivos .................................................................................... 67

7.2 Trabalho futuro .................................................................................................... 68

Referências ....................................................................................................................... 69

Anexos .............................................................................................................................. 73

A1 Diagrama Interno do multiplicador vectorial ........................................................ 73

A2 Circuito de Demonstração ................................................................................... 75

Page 11: Tese 1,9 MB

x

Lista de Figuras

Figura 1.1 – Crescimento da utilização da internet nos últimos 16 anos. .......................... 3

Figura 2.1 – Multiplexagem do fluxo de dados num sistema MIMO com 4 antenas

emissoras. ..................................................................................................................................... 8

Figura 2.2 – Diagrama de blocos de um sistema de comunicações sem fios MIMO-

OFDM. Fonte: ................................................................................................................................ 9

Figura 2.3 – Fases constituintes da inversão matricial com recurso à decomposição QR.

Fonte: Irturk et al., 2009 [3]. ........................................................................................................ 13

Figura 2.4 – Comparação entre o número de operações exigido pelo MGS e GR para m,

n Є [1;8]: análise tridimensional em função de m e n. ................................................................ 14

Figura 2.5 – Comparação entre o número de operações exigido pelo MGS e GR para m,

n Є [1;8]: análise 2D para m ≥ 2n/3, fazendo variar m em função de n (a) e fazendo variar m em

função de n (b). ........................................................................................................................... 15

Figura 3.1 – Visualização do método de ortogonalização Gram-Schmidt. Fonte: Irturk,

2007 [18]. ..................................................................................................................................... 21

Figura 3.2 – Algoritmos de decomposição QR de matrizes quadradas de ordem n:

CGS(a) e MGS(b). Fonte: Persson, 2007 [13]. ........................................................................... 23

Figura 3.3 – Comparação entre o algoritmo MGS genérico (a) e a respectiva adaptação

ao domínio complexo (b). ............................................................................................................ 24

Figura 3.4 – Algoritmo de inversão de uma matriz triangular superior R. Fonte: Irturk et al.

2009 [3]. ....................................................................................................................................... 25

Figura 3.5 – Representação de uma palavra binária com vírgula fixa e complemento para

2. .................................................................................................................................................. 26

Figura 4.1 – Evolução da fase 1, relativamente à manipulação e cálculo das matrizes U,

Q e R. .......................................................................................................................................... 31

Figura 4.2 – Blocos e ligações principais da unidade de dados da arquitectura do modelo

funcional. ..................................................................................................................................... 33

Figura 4.3 – Blocos e ligações principais da unidade de dados da arquitectura do modelo

2. .................................................................................................................................................. 35

Figura 4.4 – Blocos e ligações principais da unidade de dados da arquitectura do modelo

final. ............................................................................................................................................. 36

Figura 5.1 – Diagrama das unidades principais do projecto. ............................................ 44

Figura 5.2 – Ligações (E/S) de cada unidade de armazenamento de dados. ................. 45

Figura 5.3 – Disposição dos blocos RAM memX.............................................................. 45

Figura 5.4 – Disposição dos blocos RAM memY.............................................................. 46

Figura 5.5 – Disposição dos blocos RAM memZ. ............................................................. 47

Figura 5.6 – Diagrama de ligações (E/S) do subtractor vectorial. .................................... 48

Figura 5.7 – Diagrama interno do bloco de subtracção vectorial. .................................... 48

Figura 5.8 – Diagrama de ligações (E/S) do multiplicador simples. ................................. 49

Page 12: Tese 1,9 MB

xi

Figura 5.9 – Diagrama interno do bloco multiplicação simples. ....................................... 49

Figura 5.10 – Diagrama de ligações (E/S) do multiplicador vectorial. .............................. 50

Figura 5.11 – Diagrama de ligações (E/S) da unidade recíproco. .................................... 51

Figura 5.12 – Diagrama interno do bloco recíproco. ........................................................ 53

Figura 5.13 – Diagrama de ligações (E/S) da unidade raiz quadrada. ............................. 53

Figura 5.14 – Diagrama interno do bloco raiz quadrada. ................................................. 55

Figura 6.1 – Distribuição do erro relativo para 5% de risco de overflow. ......................... 63

Figura 6.2 – Distribuição do erro relativo para 1% de risco de overflow. ......................... 63

Figura 6.3 – Distribuição do erro relativo para 0,1% de risco de overflow. ...................... 64

Figura 6.4 – Comparação do erro relativo do módulo para os três níveis de risco de

overflow. ...................................................................................................................................... 64

Figura 6.5 – Comparação do erro relativo da parte real para os três níveis de risco de

overflow. ...................................................................................................................................... 65

Figura 6.6 – Comparação do erro relativo da parte imaginária para os três níveis de risco

de overflow. ............................................................................................................................. 65

Figura A.1 – Diagrama interno do cálculo da parte real do multiplicador vectorial. ......... 73

Figura A.2 – Diagrama interno do cálculo da parte imaginária do multiplicador vectorial.

..................................................................................................................................................... 74

Figura A.3 – Configuração da porta série do PC. ............................................................. 75

Figura A.4 – Diagrama de blocos do circuito de demonstração com o fluxo de dados

entre a FPGA e o PC. ................................................................................................................. 76

Figura A.5 – Matriz de entrada na disposição que é introduzida nas memXi. ................. 77

Figura A.6 – Matriz inversa ideal, obtida em MATLAB. .................................................... 78

Figura A.7 – Matriz inversa obtida em simulação (simulador do ISE). ............................. 78

Figura A.8 – Matriz inversa obtida no Hyper Terminal, após implementação na FPGA. . 79

Page 13: Tese 1,9 MB

xii

Lista de Tabelas

Tabela 2.1 – Decisões e resultados de implementação de métodos de inversão de

matrizes de ordem 4 em FPGAs da família Virtex-4. .................................................................. 16

Tabela 2.2 - Decisões e resultados de implementação de métodos de inversão de

matrizes de ordem 4 em tecnologia 0.18µm CMOS, desenvolvidos em VLSI. .......................... 17

Tabela 4.1 – Comparação entre os resultados obtidos dos três modelos desenvolvidos.

..................................................................................................................................................... 37

Tabela 4.2 – Distribuição dos valores máximos obtidos para o resultado das 10

operações e respectivo número de bits necessário para a representação da parte inteira, no

universo de 5000 ensaios. .......................................................................................................... 38

Tabela 4.3 – Número de ensaios que apresenta a distribuição da Tabela 4.2. ............... 39

Tabela 4.4 – Avaliação do risco de erro de overflow à entrada da raiz quadrada. .......... 40

Tabela 4.5 – Avaliação do risco de erro de overflow para os elementos da matriz R. .... 40

Tabela 4.6 – Avaliação do risco de erro de overflow para os elementos da matriz W . ... 40

Tabela 4.7 – Avaliação do risco de erro de overflow para os elementos da matriz Q. .... 40

Tabela 4.8 – Avaliação do risco de erro de overflow para os elementos da matriz . .... 40

Tabela 4.9 – Avaliação do risco de erro de overflow para à saída da OP8. ..................... 41

Tabela 4.10 – Avaliação do risco de erro de overflow para os elementos da matriz B. ... 41

Tabela 4.11 – Formato das palavras binárias utilizadas na representação das matrizes.

..................................................................................................................................................... 41

Tabela 5.1 – Recursos utilizados pelo multiplicador vectorial. ......................................... 50

Tabela 6.1 – Recursos consumidos pelo multiprocessador. ............................................ 57

Tabela 6.2 – Resultados de desempenho para os diferentes dispositivos testados. ....... 58

Tabela 6.3 – Total de ciclos de relógio necessários para o processamento das diferentes

dimensões das matrizes. ............................................................................................................. 58

Tabela 6.4 – Comparação entre os resultados obtidos neste projecto, e os resultados

obtidos por outros autores, mencionados na Tabela 2.1. ........................................................... 59

Tabela 6.5 – Aumento dos recursos do projecto com o incremento de uma unidade na

ordem das matrizes. ................................................................................................................ 60

Tabela 6.6 – Descrição estatística do erro para 5% de risco de overflow. ....................... 61

Tabela 6.7 – Descrição estatística do erro para 1% de risco de overflow. ....................... 61

Tabela 6.8 – Descrição estatística do erro para 0,1% de risco de overflow. .................... 62

Page 14: Tese 1,9 MB

xiii

Page 15: Tese 1,9 MB

xiv

Lista de Abreviaturas

ASIC Aplication –Specific Integrated Circuit

(Especificação e Aplicação de Circuitos Integrados)

BRAM Block Random Access Memory

(Bloco de Memória de Acesso Aleatório)

CGS Classic Gram-Schmidt

(Gram-Schmidt Clássico)

FPGA Field Programable Gate Array

FF Flip-Flop

FFT Fast Fourier Transform

(Transformada Rápida de Fourier)

DSP Digital Signal Processor

(Processador de Sinal Digital)

ESDA Electronic System Design and Automation

(Projecto e Automação de Sistemas Electrónicos)

GPS Global Positioning System

(Sistema de Posicionamento Global)

GR Givens Rotation

(Rotação de Givens)

HDL Hardware Description Language

(Linguagem de Descrição de Hardware)

HR Householder Reflections

(Reflexões Householder)

ICI Inter Carrier Interference

(Interferência Inter-Canal)

IEEE Institute of Electrical and Electronics Engineers

(Instituto de Engenheiros Electricistas e Electrónicos)

INESC-ID Instituto de Engenharia de Sistemas e Computadores – Investigação e

Desenvolvimento em Lisboa

ISE Integrated Software Environment

(Ambiente de Software Integrado)

ISI Inter Symbol Interference

(Interferência Inter-Simbólica)

LMS Least Mean Squares

(Média dos Mínimos Quadrados)

LS Least Squares

(Mínimos Quadrados)

Page 16: Tese 1,9 MB

xv

LUT Look-Up Table

(Tabela de Consulta)

MGS Modified Gram-Schmidt

(Gram-Schmidt Modificado)

MIMO Multiple Input Multiple Output

(Multiplas Entradas e Múltiplas Saídas)

MMSE Mininum Mean Square Error

(Mínimo Erro Médio Quadrático)

Ne Número de Antenas Emissoras

Nr Número de Antenas Receptoras

OFDM Orthogonal Frequency-Division Multiplexing

(Multiplexagem por Divisão Ortogonal da Frequência)

RAW Read after Write

(Leitura após Escrita)

RLS Recursive Least Squares

(Algoritmo Recursivo de Minimos Quadrados)

SMI Sample Matrix Inversion

(Inversão da Matriz de Amostragem)

WAR Write after Read

(Escrita após Leitura)

WAW Write after Write

(Escrita após Escrita)

USB Universal Serial Bus

(Barramento Série Universal)

VHDL VHSIC Hardware Description Language

(Linguagem de Descrição de Hardware VHSIC)

VHSIC Very-High-Speed Integrated Circuit

(Circuito Integrado de Alto Desempenho)

VLSI Very-Large-Scale Integration

(Integração em Grande Escala)

ZF Zero Forcing

Page 17: Tese 1,9 MB

xvi

Lista de Símbolos

Conjunto de números Naturais

Conjunto de números Reais

Conjunto de números Complexos

Componente real de um elemento do domínio complexo

Componente imaginária de um elemento do domínio complexo

Erro relativo

Erro absoluto

Page 18: Tese 1,9 MB

xvii

Page 19: Tese 1,9 MB

1

1 Introdução

Os cálculos matriciais são comuns em aplicações de comunicações sem fios. O tema

desta dissertação diz respeito à especificação, projecto e implementação de um multiprocessa-

dor dedicado para a inversão de matrizes quadradas complexas, de dimensões iguais ou

inferiores a 8x8, em Field Programmable Gate Array (FPGA).

No presente capítulo é feito um enquadramento e contextualização desta dissertação,

partindo depois para a demonstração da relevância deste tema. Feita a contextualização e o

enquadramento, este capítulo prossegue com as causas que conduziram a esta dissertação.

Segue-se depois uma apresentação dos objectivos que se pretendem atingir e por último uma

descrição geral da estrutura do documento.

1.1 Contexto e Enquadramento

Devido à sua robustez na selecção da frequência de fading, elevada eficiência espectral

e baixa complexidade computacional, a tecnologia Orthogonal Frequency Division Multiplexing

(OFDM) é uma das mais promissoras nos sistemas de comunicação sem fios, particularmente

em elevadas taxas de transmissão de dados. Habitualmente utilizados em conjunto com os

sistemas OFDM, os sistemas Multiple Input Multiple Output (MIMO) melhoram a eficiência dos

sistemas de comunicações sem fios, utilizando múltiplas antenas emissoras e receptoras,

resultando num aumento da capacidade do canal e numa redução da interferência inter-

simbólica (Intersymbolic Interference - ISI). Cada receptor do sistema MIMO-OFDM tem a

necessidade de equalizar o sinal recebido, com o objectivo de retirar o efeito do canal sobre o

sinal. O processo de equalização envolve operações de inversão matricial, onde o tamanho

das matrizes depende da quantidade de antenas emissoras e receptoras [3][4]. O elevado

número de operações, em conjunto com as taxas de transmissão exigidas em tempo real, tor-

nam-se factores determinantes no desenvolvimento do projecto e na escolha da plataforma.

Os sistemas de hardware reconfiguráveis dedicados oferecem grandes vantagens, em

aplicações que apresentam requisitos computacionais elevados, dificilmente suportados por

sistemas de software. São várias as plataformas de hardware que têm capacidade para imple-

mentação de algoritmos de elevado desempenho na área dos sistemas multi-antena. Podem

distinguir-se quatro categorias: processadores genéricos, processadores de sinal digital (Digital

Signal Processors - DSPs), circuitos integrados para aplicações específicas (Aplication – Speci-

fic Integrated Circuits - ASICs) e FPGAs.

Uma FPGA é um dispositivo semi-condutor composto por componentes e ligações com

lógica reconfigurável. A lógica pode ser configurada de modo a melhorar o desempenho de

operações booleanas básicas como AND, OR ou NOT, até funções combinatórias mais com-

plexas como é o caso das operações matriciais. As FPGAs dispõem ainda de componentes

optimizados, como memórias, DSPs e outros blocos de hardware dedicados, assim como,

Page 20: Tese 1,9 MB

2

interfaces USB, Ethernet e suporte para memórias externas. As principais vantagens das

FPGAs passam pela capacidade de um projecto ser desenvolvido, testado e implementado

num espaço de tempo reduzido (particularmente importante quando o tempo para o desenvol-

vimento do projecto é limitado). Se a aplicação tiver como dispositivo alvo a FPGA, a distância

entre o protótipo e o produto final é insignificante. O custo de desenvolvimento em FPGA é

consideravelmente inferior ao desenvolvimento em ASIC. O elevado número de empresas que

actualmente desenvolve e vende ferramentas para optimização e projecto em FPGA, constitui

também uma mais-valia.

Aliando o alto desempenho da execução em hardware dedicado à flexibilidade da pro-

gramação em software, a FPGA torna possível acelerar significativamente o processamento de

cálculos intensivos [18].

A FPGA constitui assim o dispositivo alvo deste trabalho. O caminho crítico, a latência e

área de hardware são estimados e definidos com recurso a ferramentas da Xilinx [21] após

synthesyzing e place & route do projecto, em FPGA Virtex-4, 5 e 6 (a primeira apenas para

demonstração).

Tendo sido realizada num ambiente Institucional, esta dissertação apresenta um interes-

se teórico e prático para Organização proponente. O Instituto de Engenharia de Sistemas e

Computadores – Investigação e Desenvolvimento (INESC-ID) é uma organização sem fins

lucrativos e de interesse público, voltada para a investigação e desenvolvimento nas áreas da

electrónica, telecomunicações e tecnologias de informação [1]. Na componente dos sistemas

electrónicos, encontra-se um grupo de pesquisa, denominado por Electronic Systems Design

and Automation (ESDA). Os objectivos do grupo ESDA focam-se nos aspectos de investigação

e projecto de sistemas electrónicos, assim como no desenvolvimento de algoritmos e ferramen-

tas que contribuam para a automatização do projecto, actualmente com destaque para a

computação com recurso a hardware reconfigurável [2]. O grupo ESDA é por estes motivos o

órgão que acolhe esta dissertação.

1.2 Motivação

Desde a sua existência, o ser humano procura comunicar entre si, o que conduziu à

criação e desenvolvimento de sistemas de comunicação, cada vez com maior capacidade,

expedição e eficiência. Em 1876, surgiu o primeiro sistema de comunicação de longa distância

da era moderna - o telefone. A tecnologia evoluiu, os materiais condutores utilizados na trans-

missão de sinal sofreram alterações na constituição, tamanho, peso, custo e disponibilidade,

conduzindo a uma redução das perdas e consequente eficiência nas comunicações. Em 1970

surge a primeira fibra óptica com perdas de atenuação inferiores a 20dB/Km e grande largura

de banda.

Em 1980 aparece a internet, que vem evidenciar ainda mais a necessidade de sistemas

de comunicação eficientes. Desde então, a utilização da internet tem crescido a um ritmo sem

Page 21: Tese 1,9 MB

3

precedentes. Inevitavelmente, a tecnologia que suporta toda a transmissão de dados vê-se

obrigada a acompanhar essa evolução.

Em 1997, o Institute of Electrical and Electronics Engineers (IEEE), aprovou a norma de

comunicações sem fios, que viria a ser a base dos protocolos de comunicações sem fios

actuais – o IEEE 802.11, com taxas de transmissão nominais que atingiam os 2 Mbps [5].

Na Figura 1.1 encontra-se a evolução da utilização de internet nos últimos dezasseis

anos.

Figura 1.1 – Crescimento da utilização da internet nos últimos 16 anos. Fonte: http://www.internetworldstats.com/emarketing.htm [6]

Como se pode observar na Figura 1.1, a quantidade de utilizadores de internet tem

aumentado exponencialmente a cada ano que passa, sendo que, de acordo com dados estatís-

ticos, a ultima recolha data de Junho de 2011 e aponta para 2110 milhões de utilizadores [6]. O

actual tráfego na internet exige um grande desempenho, dos meios de comunicação, nas com-

ponentes de velocidade e capacidade.

Apesar de ainda estarmos no inicio da revolução dos sistemas de comunicações móveis,

as comunicações sem fios estão a crescer a um ritmo elevado. O futuro das comunicações

móveis e redes sem fios será caracterizado pela globalidade, omnipresença e acessibilidade,

de modo a eliminar as barreiras espaço-temporais, ainda existentes actualmente. Assim, prevê-

se que a próxima geração de comunicações móveis, também referida como 4G, venha combi-

nar e integrar as comunicações sem fios com tecnologia da informação e multimédia, fazendo

com que o número de dispositivos portáteis, como smartphones, laptops e outros aparelhos de

comunicação móvel, exceda o número de desktops ligados à Internet. Estes terminais móveis

irão aceder e partilhar serviços de multimédia para todo o tipo de dados (mensagens, voz,

vídeo, Internet, GPS, rádio, TV, etc.). São vários os potenciais beneficiários desta evolução,

sendo que a área que apresenta maior crescimento é a do entretenimento [17].

O crescente uso dos sistemas de comunicação sem fios, exige taxas de transmissão

com grande fiabilidade. Por este motivo, nos últimos anos, os sistemas MIMO têm sido alvo de

grande interesse de pesquisa. Os sistemas MIMO têm desempenhado um papel significativo

1

10

100

1000

10000

1994 1996 1998 2000 2002 2004 2006 2008 2010 2012

Milh

õe

s d

e U

tiliz

ado

res

Ano

Page 22: Tese 1,9 MB

4

na investigação de várias normas de comunicações sem fios, como é o caso do IEEE 802.11n

e do IEEE 802.16e. Estes sistemas de comunicações sem fios baseados na tecnologia OFDM,

são limitados, relativamente ao número máximo de antenas suportado (a norma IEEE 802.11n,

por exemplo, suporta apenas 4 antenas emissoras e receptoras). A próxima geração de siste-

mas de comunicação sem fios é actualmente grande objecto de pesquisa e desenvolvimento,

e, combina os sistemas MIMO com a tecnologia OFDM [7][8].

Em suma, com a emergência dos sistemas MIMO-OFDM, e a necessidade de taxas de

transmissão elevadas com grande fiabilidade, o número de antenas emissoras e receptoras

tende a aumentar, exigindo deste modo um processamento de cálculos extremamente intensi-

vo, nomeadamente na tarefa de inversão das matrizes.

Neste contexto, considerando os exigentes requisitos nas taxas de transmissão em tem-

po real (throughputs superiores a 1KHz [10][15]), o projecto em software verifica-se insuficiente,

sendo necessário migrar para o projecto em hardware.

1.3 Objectivos

Considerando a emergência dos sistemas multi-antena MIMO-OFDM referida e a conse-

quente necessidade de computação intensiva de cálculos no processo de inversão de matrizes

complexas, os objectivos da dissertação passam pela investigação e avaliação de algoritmos

de inversão de matrizes, com posterior especificação e implementação do algoritmo, que

demonstrar melhor cumprimento dos requisitos.

Apurado o método que melhor preenche os requisitos de desempenho, área de hardwa-

re ocupada e consumo de energia, este será estudado e optimizado com vista a uma primeira

implementação em MATLAB (modelo de auxilio), e posterior especificação em VHDL (Very high

speed integrated circuits Hardware Description Language), tendo como dispositivo alvo a

FPGA.

O processo de optimização do algoritmo passa por diferentes fases, desde o dimensio-

namento das palavras binárias, passando pelo estudo de erro de overflow e de precisão, até à

implementação de pipeline e maximização do paralelismo.

A especificação em VHDL, estende-se desde a arquitectura a implementar até ao

desenvolvimento de unidades de processamento de dados, com especial atenção para as uni-

dades de cálculo de raiz quadrada e recíproco.

Resumidamente, pretende-se projectar e concretizar em hardware reconfigurável um

multiprocessador dedicado, capaz de acelerar o processo de inversão de matrizes quadradas

complexas de dimensões até 8x8, para aplicações de comunicações sem fios multi-antena.

Page 23: Tese 1,9 MB

5

1.4 Metodologia

A metodologia adoptada nesta dissertação envolve um conjunto de tarefas, que passam

pela compreensão do problema em estudo, revisão bibliográfica relacionada com os tópicos

envolvidos, análise de mecanismos existentes para resolução de problemas semelhantes e

estudo e implementação de uma solução para o problema.

As tarefas realizadas foram:

1. Estudo do problema de inversão de matrizes complexas no âmbito de sistemas de comuni-

cação sem fios multi-antena.

2. Pesquisa de trabalhos existentes (com especial atenção dada aos métodos de decomposi-

ção ou factorização);

3. Estudo dos mecanismos usados nos trabalhos encontrados em 2, e breve revisão dos

mecanismos utilizados em operações elementares;

4. Elaboração de uma solução para o problema em estudo, usando alguns dos mecanismos

vistos em 2 e 3;

5. Desenvolvimento de ferramentas de suporte em MATLAB, para definir estratégias de esca-

lonamento, dimensionamento das palavras binárias e definição de margens de erro;

6. Especificação da solução proposta em VHDL;

7. Modelização e optimização em VHDL;

8. Testes de precisão à aplicação desenvolvida em 6;

9. Implementação em FPGA.

Page 24: Tese 1,9 MB

6

1.5 Estrutura do Documento

Esta dissertação é organizada em sete capítulos.

Neste capítulo foi enquadrado o trabalho realizado no âmbito da investigação científica

do INESC-ID. Foram ainda apresentadas as motivações que influenciam o desenvolvimento do

trabalho assim como o objectivo que se visa alcançar.

No capítulo 2 é efectuada uma revisão à literatura existente, de modo a compreender os

requisitos impostos pelas aplicações de comunicações sem fios, para posterior análise aos

algoritmos de inversão matricial existentes, de modo a definir a melhor solução.

No capítulo 3 é realizada uma análise pormenorizada à inversão matricial com recurso

ao método de decomposição QR baseado na ortogonalização Gram-Schmidt e uma análise

aos métodos de representação aritmética ao nível computacional.

No capítulo 4 é especificado o método Modified Gram-Schmidt para matrizes complexas

de ordem 8, são descritos os modelos e os passos de optimização considerados, com base no

algoritmo, nos recursos, no desempenho e na análise de erro.

O capítulo 5 descreve a arquitectura do projecto, desde as dependências e conflitos de

dados até à estrutura interna de cada unidade de processamento de dados, passando pela

análise e explicação de algoritmos utilizados no desenvolvimento de unidades específicas.

No capítulo 6 são apresentados os resultados obtidos, relativos aos recursos consumi-

dos, ao desempenho e à precisão dos resultados.

Por último, no capítulo 7 são apresentadas as conclusões finais, bem como possíveis

extensões e/ou alterações ao trabalho desenvolvido.

Page 25: Tese 1,9 MB

7

2 Sistemas Multi-Antena e Algoritmos de Inversão

Matricial

Neste capítulo descrevem-se os trabalhos existentes relativos à implementação em

hardware, de algoritmos de inversão matricial.

É também apresentada uma revisão da tecnologia de comunicações sem fios multi-

antena, enquanto alvo do estudo desenvolvido, procurando contextualizar e precisar a impor-

tância dos estudos teóricos.

A primeira parte deste capítulo centra-se numa análise aos sistemas multi-antena e res-

pectivos requisitos. Segue-se a análise dos métodos existentes de inversão de matrizes, com

especial atenção para a decomposição QR, enquanto método que melhor se adequa aos

requisitos de dimensão e complexidade exigidos. Por fim são identificados os algoritmos utili-

zados por outros autores, assim como as respectivas opções de implementação.

2.1 Sistemas Multi-Antena

O espectro de frequências reservado para as comunicações sem fios é limitado, com a

agravante de na última década se ter tornado um recurso bastante precioso. Deste modo, a

evolução nas taxas de transmissão de dados passa obrigatoriamente pelo projecto e aplicação

de técnicas avançadas de comunicação baseadas em sistemas multi-antena, que implicam

algoritmos computacionalmente complexos. Os sistemas multi-antena são constituídos por

duas ou mais antenas no emissor e/ou no receptor. Existem duas classes de sistemas multi-

antena: SMART e MIMO [17].

Um sistema SMART é constituído por múltiplas antenas no emissor ou no receptor

(nomeadamente sistemas multiple input – single output (MISO) e single input – multiple output

(SIMO)), onde os sinais das várias antenas são combinados segundo algoritmos específicos.

Este sistema pode ser utilizado para aumentar a capacidade e cobertura de um sistema de

comunicações móvel (beamforming), para melhorar a qualidade do canal (filtragem) e/ou para

diminuir o atraso de dispersão.

O beamforming é um tema importante nas comunicações sem fios. Para formar a estru-

tura básica de um radar beamforming é necessária uma matriz de antenas uniformemente

distribuídas. Esta técnica é utilizada com o objectivo de alcançar a máxima capacidade de

recepção numa determinada direcção sob a presença de ruído. No processo de comunicação,

os sinais provenientes de cada antena são multiplicados por um conjunto de coeficientes com-

plexos e posteriormente transmitidos. Os coeficientes são usados para estimar a chegada do

sinal proveniente de uma direcção pretendida, enquanto os restantes sinais da mesma fre-

quência, mas provenientes de outras direcções são rejeitados (possuem coeficientes

diferentes).

Page 26: Tese 1,9 MB

8

Os coeficientes são calculados de modo iterativo, através de algoritmos complexos como

o Least Mean Squares (LMS), Sample Matrix Inversion (SMI) e Recursive Least Squares (RLS).

O RLS é normalmente preferível devido às suas propriedades numéricas (estabilidade) e

rápida convergência. O algoritmo RLS procura encontrar um conjunto de coeficientes que

minimize a soma do erro quadrático. Considerando:

(2.1)

em que é a matriz que contém a informação observada com ruído, é a training sequence e

é o coeficiente a calcular de modo a minimizar o erro de cada vector. A aplicação do RLS

pode ser vista com o cálculo de

(2.2)

em que a obtenção de implica um problema de inversão matricial [18].

Os sistemas MIMO apresentam múltiplas antenas no emissor (Ne) e no receptor (Nr). O

número de antenas não precisa de ser o mesmo no emissor e no receptor, no entanto, neste

estudo consideram-se números iguais de antenas. Os sistemas MIMO vêm acrescentar às

capacidades dos sistemas SMART a multiplexagem espacial. A multiplexagem espacial permite

melhorar a capacidade do canal, ao transmitir simultaneamente vários fluxos de dados parale-

los que são enviados pelas várias antenas como se verifica no exemplo da Figura 2.1.

Figura 2.1 – Multiplexagem do fluxo de dados num sistema MIMO com 4 antenas emissoras.

Contudo, a utilização da multiplexagem espacial com elevadas taxas de transferência,

torna os canais MIMO selectivos no que respeita à frequência. Para resolver este problema

surge a combinação da tecnologia OFDM com os sistemas MIMO, que transforma os canais

num conjunto de frequências planas, diminuindo a complexidade no receptor.

A tecnologia OFDM aplicada aos sistemas MIMO envolve Transformadas Rápidas de

Fourrier (Fast Fourrier Transform - FFT), de modo a tornar possível o processamento dos

Unidade de

MultiplexagemFluxo de Dados

...S8 S7 S6 S5 S4 S3 S2 S1

...S5 S1

...S6 S2

...S7 S3

...S8 S4

Page 27: Tese 1,9 MB

9

dados no domínio da frequência, e, cyclic prefix ou guard interval com o objectivo de remover a

interferência inter-simbólica (Intersymbol Interference - ISI) e a interferência inter-portadoras

(Intercarrier Interference - ICI) [9].

No emissor, os dados a transmitir passam primeiro por um processo prévio de modula-

ção, segue-se a codificação espaço-temporal, a FFT inversa e o cyclic prefix, após o que, os

dados são transmitidos pelas Ne antenas. No receptor é removido o cyclic prefix, efectuada a

FTT, realiza-se a desmultiplexagem espacial, através da estimação do canal, e por fim, a des-

modulação.

O diagrama de blocos do sistema é apresentado na Figura 2.2.

Figura 2.2 – Diagrama de blocos de um sistema de comunicações sem fios MIMO-OFDM. Fonte: Chang et al. 2009 [8].

O modelo do processo de transmissão pode ser descrito pela expressão:

(2.3)

em que representa a matriz complexa obtida no receptor, representa a matriz complexa da

portadora, representa a matriz transmitida através de uma modulação complexa e repre-

senta o ruído branco Gaussiano, também sob a forma complexa.

De modo a estimar os dados complexos transmitidos, a Eq. (2.3) pode ser explorada

como um problema de mínimos quadrados (Least Squares - LS). A solução para o problema de

LS pode ser obtida através de técnicas como Minimum Mean Square Error (MMSE) ou equali-

zação Zero Forcing (ZF). Qualquer uma destas técnicas exige inversões matriciais [8][10].

Geração

de Dados

Modulação

Estimação do canal

Recepção de

Dados

Desmodulação

.

.

.

.

.

.

h1,1

hNe,Nr

hNr,1

h1,Ne

x1(t)

xNe(t)

y1(t)

yNr(t)

Co

dific

açã

o

Esp

aço

-Te

mp

ora

l

De

sco

dific

açã

o

Te

mp

ora

l

IFFT/

CP

ReCP/

FFT

IFFT/

CP

ReCP/

FFT

NrNe

Page 28: Tese 1,9 MB

10

2.2 Métodos de Inversão Matricial

A inversão de matrizes é um problema frequente na matemática computacional, existin-

do por isso bastantes publicações relacionadas com o tema.

A inversa de uma matriz quadrada é representada por e verifica a condição:

, (2.4)

em que é a matriz identidade. O processo explícito de inversão de matrizes é um método

computacionalmente intensivo, principalmente quando a sua dimensão ultrapassa valores resi-

duais (sensivelmente para dimensões superiores a 4x4).

Para matrizes de pequenas dimensões são habitualmente utilizados métodos de aproxi-

mação analítica, como inversão directa por matriz adjunta, inversão por blocos ou inversão por

eliminação de Gauss-Jordan. Qualquer um dos métodos mencionados apresenta um cresci-

mento da complexidade computacional muito rápido, com o aumento da dimensão das

matrizes [3][11]. Uma análise mais detalhada destes métodos consta na secção 2.2.1.

Existem métodos estáveis de decomposição ou factorização que simplificam o proces-

samento computacional, mesmo quando a dimensão das matrizes aumenta, como é o caso da

decomposição LU, decomposição Cholesky e decomposição QR. A escolha do método,

depende das características das matrizes a inverter, contudo, a decomposição QR oferece uma

maior estabilidade e flexibilidade face às diferentes características das matrizes a processar,

inclusive a capacidade para factorizar matrizes , com [3][4]. Pelos motivos men-

cionados, estes métodos serão alvo de análise nos pontos que se seguem. A decomposição

QR apresenta ainda uma mais-valia, pois é um recurso habitual noutras transformações matri-

ciais podendo assim ser reutilizada, economizando na área de hardware [17].

2.2.1 Métodos de aproximação analíticos

Existem aproximações analíticas que permitem o cálculo expedito da inversa de uma

matriz, quando as dimensões das matrizes são relativamente pequenas (inferiores a 4x4). De

seguida serão explorados os métodos de inversão directa por matriz adjunta, inversão por blo-

cos e inversão por eliminação de Gauss-Jordan.

A inversa de uma matriz pode ser obtida com o auxílio da matriz adjunta e do determi-

nante da matriz dada.

(2.5)

onde denota a transposta da matriz dos cofactores de . A matriz inversa apresenta-se

na Eq. (2.6).

Page 29: Tese 1,9 MB

11

(2.6)

Por exemplo, para uma matriz de ordem 2, a matriz inversa é obtida do seguinte modo:

(2.7)

Uma alternativa ao cálculo da inversa de uma matriz, é a decomposição da matriz dada

em quatro submatrizes/blocos mais pequenos e calcular a inversa baseada nesses blocos.

Este método pode ser utilizado como complemento a outros métodos. Por exemplo, para uma

matriz de ordem 4:

(2.8)

onde denotam as submatrizes de , todas elas de ordem 2. As operações

baseiam-se na inversa de duas matrizes de ordem 2 e outras operações matriciais básicas

também de ordem 2 [11].

Outro método de obter a inversa de uma matriz é recorrer à eliminação de Gauss-

Jordan. Este método é uma extensão do algoritmo de eliminação Gaussiana, onde, em cada

passo do algoritmo o elemento pivot é forçado a 1 e os restantes elementos da mesma coluna

são forçados a 0. Dada uma matriz quadrada de ordem n e a matriz identidade também de

ordem n, define-se uma matriz de dimensão , que resulta da concatenação da matriz

dada com a matriz identidade. O processo baseia-se na transformação da matriz, de acordo

com uma sequência de operações elementares sobre as duas matrizes, até o lado esquerdo da

matriz se tornar na matriz identidade e por conseguinte, o lado direito torna-se na matriz

[19].

(2.9)

Page 30: Tese 1,9 MB

12

2.2.2 Decomposição LU e decomposição Cholesky

Se uma matriz A for quadrada e todas as suas submatrizes principais forem não-

singulares, a matriz pode ser decomposta no produto de uma matriz triangular inferior (Lower -

L) por uma matriz triangular superior (Upper - U):

(2.10)

A inversão da matriz ( ), através da decomposição LU, apresenta-se como:

(2.11)

O método envolve quatro processos distintos. O primeiro processo é o que exige maior

complexidade computacional e consiste na decomposição da matriz dada, segue-se a inversão

das matrizes triangulares inferior e superior, e por fim, a multiplicação das duas matrizes (os

três últimos processos são relativamente simples, devido à estrutura triangular das matrizes)

[3][4].

A decomposição Cholesky, à semelhança da decomposição LU, tem também como

requisito matrizes quadradas, neste caso simétricas positivas definidas. Este método decom-

põe a matriz dada numa matriz triangular inferior com a diagonal positiva ( ), resultando na

expressão:

, (2.12)

onde é a transposta da matriz . A inversão da matriz é expressa na Eq. (2.13):

(2.13)

Este método divide-se também em quatro processos, começando pela decomposição da

matriz dada numa matriz triangular inferior, passando pela inversão das matrizes triangulares e

terminando com a multiplicação das matrizes triangulares invertidas [3][4].

2.2.3 Decomposição QR

A decomposição QR é uma operação elementar estável, que pode ser aplicada a qual-

quer tipo de matriz [3] e consiste na factorização de uma matriz dada em duas matrizes, uma

matriz ortogonal e uma matriz triangular superior. Assim a decomposição QR de uma matriz

é apresentada como o produto de uma matriz ortogonal ( ) por uma matriz triangular superior

( ), ficando:

(2.14)

Page 31: Tese 1,9 MB

13

Note-se que, é uma matriz ortogonal e portanto verifica:

e

(2.15)

A solução da inversão da matriz é dada por:

(2.16)

Generalizando de para , a matriz diz-se unitária com as características

evidenciadas a seguir:

e

(2.17)

onde denota a matriz transconjugada ou, da literatura Inglesa, “hermitian transpose” de . A

solução da inversão da matriz no domínio complexo vem da Eq. (2.16) sendo apresentada

como:

(2.18)

O método apresenta três fases distintas, sendo a primeira a que apresenta maior com-

plexidade computacional (decomposição QR), a segunda fase consiste na inversão da matriz

triangular superior e a última fase passa pela multiplicação da matriz triangular invertida pela

matriz unitária transconjugada. A inversão da matriz é um processo relativamente simples

devido à sua estrutura triangular, sendo calculado através de substituição inversa ou da litera-

tura inglesa “back-substitutuion” com recurso à matriz identidade:

(2.19)

A matriz não requer qualquer cálculo, exige apenas manipulação de memória [4]. Na

Figura 2.3 está descrito o fluxograma de operações do método de inversão com recurso à

decomposição QR.

Figura 2.3 – Fases constituintes da inversão matricial com recurso à decomposição QR. Fonte: Irturk et al., 2009 [3].

Decomposição

QR

Inversão da Matriz

RR-1

= I

Multiplicação

Matricial (R-1

QT)

R-1

Q

I

R

A A-1

Page 32: Tese 1,9 MB

14

Existem três métodos distintos de decomposição QR: Ortogonalização de Gram-Schmidt

(Classical Gram-Schmidt – CGS), Rotações de Givens (Givens Rotations – GR) e Reflexões

Householder (Householder Reflections - HR). Posteriormente foi desenvolvido outro método de

ortogonalização baseado no CGS, que se destaca pela estabilidade e precisão numéricas,

denominado Gram-Schmidt Modificado (Modified Gram-Schmidt – MGS).

Tendo em conta a elevada complexidade do método baseado nas reflexões Householder

(relativamente aos restantes métodos de decomposição QR) [8], recentemente o MGS e o GR,

métodos numericamente equivalentes têm recebido especial atenção para a implementação

em hardware reconfigurável, apresentando alto desempenho, estabilidade, precisão e conside-

rável redução de área de hardware ocupada. Contudo, no que diz respeito ao número de

operações exigidas por cada um destes métodos, para matrizes de dimensão , destaca-

se o MGS com uma complexidade de face ao GR com complexidade . Mes-

mo para , o MGS requer menos operações que o GR.

A análise à complexidade dos algoritmos é ilustrada na Figura 2.4 e na Figura 2.5.

Figura 2.4 – Comparação entre o número de operações exigido pelo MGS e GR para m, n Є [1;8]: análise tridimensional em função de m e n.

Page 33: Tese 1,9 MB

15

a) b)

Figura 2.5 – Comparação entre o número de operações exigido pelo MGS e GR para m, n Є [1;8]: análise 2D para m ≥ 2n/3, fazendo variar n em função de m (a) e fazendo variar m em função de n (b).

Como se pode verificar na Figura 2.5, para o MGS é sempre inferior ao GR, no

que diz respeito à quantidade de operações exigidas. Para matrizes , temos que o número

de operações do . Este facto proporciona, ao MGS, uma vantagem significativa,

quer ao nível da área de hardware, quer ao nível do tempo total de execução [8][10].

2.3 Implementação em Hardware de Algoritmos de Inversão Matricial

Singh et al. 2007 [10] implementaram a decomposição QR baseada no MGS, numa

arquitectura VLSI, para inversão de matrizes reais de ordem 4. Chang et al. 2009 [8] implemen-

taram, no âmbito dos sistemas MIMO, a decomposição QR baseada no MGS numa

arquitectura VLSI, para inversão de matrizes reais de ordem 4. Irturk et al. 2008 [7] desenvolve-

ram uma ferramenta em MATLAB que permite analisar o desempenho e complexidade dos

algoritmos de decomposição QR, LU e Cholesky e implementaram os mesmos algoritmos em

FPGA Virtex-4. Irturk et al. 2009 [3] implementaram em FPGA a decomposição QR baseada no

MGS, para inversão de matrizes reais de ordem 4, com palavras binárias de diferentes dimen-

sões. Karkooti e Cavallaro 2006 [4] implementaram em FPGA a decomposição QR com

recurso ao RLS baseada no algoritmo GR, para inversão de matrizes complexas de ordem 4.

Eilert et al. 2007 [11] implementaram em FPGA e em ASIC, métodos de inversão matricial

directos, por matriz adjunta e por partição em blocos, para matrizes reais de ordem 4, tendo

como alvo sistemas MIMO. Luethi et al. 2008 [16] efectuaram uma comparação entre os méto-

0 2 4 6 80

100

200

300

400

500

600

700

n(m)

de O

pera

ções

Modified Gram-Schmidt

Givens Rotations

0 2 4 6 80

100

200

300

400

500

600

700

m(n)

de O

pera

ções

Modified Gram-Schmidt

Givens Rotations

Page 34: Tese 1,9 MB

16

dos de decomposição QR baseados nos algoritmos Givens Rotations e Modified Gram-Shmidt,

para matrizes reais de ordem 4.

Relativamente aos requisitos de desempenho, verifica-se a necessidade de operações

de inversão matricial, para equalização de sinal nos sistemas MIMO-OFDM, em intervalos de

tempo da ordem de grandeza dos milissegundos [10][15].

A Tabela 2.1 resume os dados obtidos pelos autores, cujas implementações foram em

FPGAs, ao passo que a Tabela 2.2 resume as escolhas e resultados dos autores que optaram

por implementações em VLSI.

Tabela 2.1 – Decisões e resultados de implementação de métodos de inversão de matrizes de ordem 4 em FPGAs da família Virtex-4.

Irturk et al.

2009 [3]

Irturk et al.

2008 [7]

Karkooti e

Cavallaro

2006 [4]

Eilert et al.

2007 [11]

Algoritmo MGS QR LU Cholesky GR Matriz

Adjunta

Partição

em Blocos

Domínio Real Real Complexo Real

Aritmética Vírgula Fixa Vírgula Fixa Vírgula

Flutuante

Vírgula flutuante

Nº bits 19 26 32 20 20 16 20

Tempo total

de execução

(µs)

5,56 7,14 9,09 4,34 3,12 3,33 7,69 0,96 1,20

Slices 2415 4656 5640 11644 9117 1561 1716

DSPs 12 12 22 0 8

BRAMs 1 1 9 NR1

1 Não referido na bibliografia.

Page 35: Tese 1,9 MB

17

Tabela 2.2 - Decisões e resultados de implementação de métodos de inversão de matrizes de ordem 4 em tecnologia 0.18µm CMOS desenvolvidos em VLSI.

Singh et al.

2007 [10]

Chang et al.

2009 [8]

Luethi et al.

2008 [16]

Eilert et al.

2007 [11]

Algoritmo MGS MGS MGS GR Matriz

Adjunta

Partição

em Blocos

Domínio Real Real Complexo Real

Aritmética Vírgula Fixa Vírgula Fixa Vírgula Flutuante Vírgula Flutuante

Nº bits 16 14 20 13 16 20

Tempo total de

execução (µs)

0,21 0,087 0,64 0,48 0,18 0,18

Área (Kgate) 72 55,3 61,8 48,7 23 43

Da análise às tabelas retira-se que apenas Karkooti e Cavallaro 2006 [4] e Luethi et al.

2008 [16] desenvolveram processadores com suporte para matrizes complexas. Verifica-se que

o MGS é algoritmo adoptado por mais autores, o que demonstra algum consenso na escolha

do algoritmo que melhor satisfaz os requisitos, mesmo para matrizes de ordem 4. Um aspecto

interessante é o reduzido tempo total de execução e o reduzido consumo de recursos (em

FPGA e em VLSI) obtido pelos métodos de aproximação analíticos, apresentados por Eilert et

al. 2007 [11]. Estes resultados devem-se sobretudo à reduzida ordem das matrizes, pois como

foi referido na secção 2.2, estes métodos atingem uma complexidade computacional superior

aos métodos de decomposição, para matrizes de maiores dimensões. Os tempos de execução

relativos às implementações em ASIC são em média quinze vezes inferiores aos tempos de

execução relativos às implementações em FPGA, o que é expectável dada a natureza dos

dispositivos (sendo a FPGA direccionada essencialmente para a prototipagem).

2.4 Conclusão

Neste capítulo foi evidenciada a necessidade de algoritmos de inversão matricial nas

tecnologias de comunicações sem fios actuais, nomeadamente nos sistemas multi-antena

baseados na tecnologia MIMO-OFDM.

Dos algoritmos de inversão matricial existentes, destaca-se o Modified Gram-Schmidt

com maior estabilidade e capacidade de paralelismo e menor complexidade relativa à quanti-

dade de operações. Verificou-se ainda que os métodos de aproximação analíticos

(decomposição em blocos e inversão por matriz adjunta) apresentam resultados de área de

hardware e desempenho superiores aos restantes métodos para matrizes de ordem até 4, con-

tudo, tendem a perder para os restantes métodos com o aumento da dimensão das matrizes.

Page 36: Tese 1,9 MB

18

Dos trabalhos analisados, os que mais influenciaram o trabalho desenvolvido foram os

de Irturk et al. 2009 [3], Chang et al. 2009 [8] e Edman 2006 [17]. Para além de apresentarem

abordagens eficientes à implementação de métodos de inversão matricial em hardware permiti-

ram compreender melhor a necessidade e o objectivo da inversão matricial nos sistemas multi-

antena baseados na tecnologia MIMO-OFDM.

Page 37: Tese 1,9 MB

19

3 Ortogonalização Gram-Schmidt e Representação

Aritmética

Neste capítulo é primeiramente efectuada uma abordagem teórica ao método de ortogo-

nalização Gram-Schmidt. Posteriormente é analisado o algoritmo MGS com ênfase para as

alterações face ao CGS e consequentes melhorias. Por fim é realizada uma revisão às repre-

sentações aritméticas existentes e as opções tomadas neste trabalho, nessa área.

3.1 Inversão de matrizes com recurso à decomposição QR utilizando a

ortogonalização Gram-Schmidt

A ortogonalização Gram-Schmidt é um método directo de determinar as matrizes e .

Considerem-se as seguintes notações matriciais em vector coluna da matriz genérica de

dimensões :

(3.1)

O método consiste num processo iterativo para obtenção de uma base ortogonal

de um subespaço vectorial a partir da base de

(3.2)

onde designa a projecção ortogonal de sobre o vector no subespaço vectorial

de

(3.3)

sendo que denota o produto interno de x com y.

Para uma matriz com as colunas linearmente independentes, fazendo

, com podem reescrever-se as Eq. (3.2) como:

Page 38: Tese 1,9 MB

20

(3.4)

Estas igualdades podem ser resumidas à igualdade matricial , onde

(3.5)

Assim, ficamos com:

(3.6)

Fazendo

(3.7)

obtemos a forma reduzida . Onde é uma matriz e tem as colunas ortonormadas

e é uma matriz quadrada de ordem n, triangular superior e não singular [12].

No final, os vectores ortogonais de obtidos através da ortogonalização de Gram-

Schmidt podem ser escritos em função dos seguintes projectores [13]:

(3.8)

onde é um projector ortogonal com as seguintes características:

(3.9)

com

(3.10)

e satisfaz os seguintes requisitos:

é ortogonal a ;

cada pertence à base ;

cada

Page 39: Tese 1,9 MB

21

O algoritmo CGS é construído com base na Eq. (3.8) e permite uma implementação de

memória eficiente, devido à grande capacidade de paralelismo e à capacidade da matriz

reescrever as colunas da matriz original . Segue-se, numa forma simplificada, a expressão

que permite obter cada coluna da matriz [14]:

(3.11)

onde

(3.12)

e

(3.13)

Na Figura 3.1 pode visualizar-se o método de ortogonalização.

Figura 3.1 – Visualização do método de ortogonalização Gram-Schmidt. Fonte: Irturk, 2007 [18].

Page 40: Tese 1,9 MB

22

Contudo, na presença de erros de arredondamento (erro entre a aproximação calculada

computacionalmente e o respectivo valor exacto/real), durante a computação com precisão

fixa, não é possível garantir a ortogonalidade de , sendo esta por vezes completamente per-

dida. Tendo em conta a instabilidade da ortogonalidade e por conseguinte, da precisão, a

ortogonalização de Gram-Schmidt não é habitualmente aplicada à decomposição QR na sua

forma clássica, mas sim numa versão alterada denominada Modified Gram-Schmidt.

3.2 Inversão de matrizes com o algoritmo Modified Gram-Schmidt

Aplicando pequenas alterações ao algoritmo CGS, obtém-se o algoritmo MGS. O MGS

ultrapassa as limitações do CGS, substituindo pelo intermediário nas combinações linea-

res de , durante processo de cálculo dos vectores ortogonais. Assim, o MGS torna-se mais

estável (menos susceptível a erros de arredondamento) [10][14]. As alterações evidenciam-se

a seguir na Eq. (3.18).

O projector da Eq. (3.9) pode ser reescrito como:

(3.14)

onde

(3.15)

Assim, quando no CGS, um vector ortogonal , é calculado segundo a Eq. (3.16)

(3.16)

no MGS passa a ser calculado do seguinte modo:

(3.17)

Finalmente temos

(3.18)

Os algoritmos de decomposição QR baseados no CGS e no MGS encontram-se na Figura 3.2.

Page 41: Tese 1,9 MB

23

a) b)

Figura 3.2 – Algoritmos de decomposição QR de matrizes quadradas de ordem n: CGS(a) e MGS(b). Fonte: Persson, 2007 [13].

Cada decomposição começa com o armazenamento da matriz numa matriz temporária

(inst.: 1). Cada elemento da diagonal da matriz é obtido através da norma euclidiana das

colunas da matriz (inst.: 2)

(3.19)

onde representa a coluna i da matriz temporária obtida após cada iteração k, uma vez que

a matriz é dinâmica e portanto actualizada a cada iteração do ciclo principal.

A matriz resulta da divisão das colunas da matriz pela respectiva norma euclidiana

(inst.: 3)

(3.20)

Os elementos com são obtidos através do produto interno das colunas pelas

colunas da matriz temporária (inst.: 4)

(3.21)

(1)

(2)

(3)

(4)

(5)

Page 42: Tese 1,9 MB

24

Por fim, em (inst.: 5), as colunas da matriz temporária são actualizadas.

,

,

(3.22)

Cada iteração i, do ciclo principal, corresponde à obtenção de:

uma coluna ;

uma linha ;

colunas de .

Transpondo o algoritmo MGS para o domínio complexo , podem ter-se em considera-

ção certas propriedades das matrizes complexas, nomeadamente, o facto de a matriz ser

unitária, permitindo algumas alterações no algoritmo, que contribuem significativamente para a

sua simplificação. Essas alterações estão assinaladas na Figura 3.3, onde é efectuada uma

comparação com o algoritmo da Figura 3.2 b).

a) b)

Figura 3.3 – Comparação entre o algoritmo MGS genérico (a) e a respectiva adaptação ao domínio com-plexo (b).

O maior impacto das alterações do algoritmo, verifica-se na (inst.: 1), uma vez que da

operação vai resultar um valor com componente imaginária nula e componente real positi-

va, e por conseguinte, as operações de raiz quadrada e recíproco realizar-se-ão no domínio

real ( ). Este facto vai reduzir o número de operações, a área de hardware e consequentemen-

te, o erro propagado. No final, a multiplicação matricial, apresenta o formato expresso na Eq.

(2.18).

(1)

(2)

Page 43: Tese 1,9 MB

25

A inversão da matriz triangular superior é realizada por substituição inversa. O algorit-

mo de inversão da matriz encontra-se na Figura 3.4.

Figura 3.4 – Algoritmo de inversão de uma matriz triangular superior R. Fonte: Irturk et al. 2009 [3].

O cálculo da inversão da matriz é efectuado coluna-a-coluna. A matriz inversa ( )

vai passar a ser identificada como matriz . Os elementos da diagonal da matriz invertida ( )

são calculados na (inst.: 1), e resultam do recíproco dos elementos da diagonal da matriz origi-

nal ( ). Os restantes elementos da matriz são obtidos através de um processo iterativo de

multiplicação e adição (inst.: 2), com posterior negação e multiplicação por na (inst.: 3). Por

fim, é realizada a multiplicação matricial , ou de acordo com as alterações identificadas na

Figura 3.3 b, .

3.3 Aritmética de vírgula fixa

Os algoritmos considerados requerem processos computacionais complexos e numeri-

camente exigentes. Soluções eficientes e flexíveis são, por isso, cada vez mais importantes.

Por outro lado, o baixo consumo de energia e a área de hardware ocupada são também carac-

terísticas a ter em conta, quer nos dispositivos emissores, quer nos dispositivos receptores. A

implementação da aritmética de vírgula fixa satisfaz ambos os requisitos.

Existem dois tipos de representação numérica em notação binária: representação em

vírgula fixa e em vírgula flutuante. A representação em vírgula fixa permite definir números num

intervalo limitado e reduzido (tão mais reduzido quanto menor for o número de bits disponível),

mas com uma precisão absoluta constante. A aritmética de vírgula flutuante recorre a um factor

de escala exponencial, o que torna possível a representação de números em intervalos muito

superiores, contudo, a precisão da sua aritmética é relativa, pois diminui com o aumento do

intervalo a suportar. Para representação de intervalos conhecidos, considerando igual número

de bits, a utilização de vírgula flutuante torna-se dispendiosa, no que diz respeito ao hardware,

o que conduz a projectos pouco eficientes, particularmente nas implementações em FPGA. A

implementação de vírgula fixa, com um conhecimento prévio dos intervalos de valores a supor-

(1)

(2)

(3)

Page 44: Tese 1,9 MB

26

tar, baseado num cuidadoso estudo de overflow, permite projectos de hardware estáveis e

eficientes [15].

Neste projecto, a representação adoptada em vírgula fixa é o complemento para dois,

pois apresenta a vantagem de possuir uma representação única para o número zero e dispõe

das mesmas regras para as operações de adição e subtracção. Nesta representação, a palavra

binária é constituída por um bit de sinal, uma parte inteira e uma parte fraccionária, como ilustra

a Figura 3.5.

Figura 3.5 – Representação de uma palavra binária com vírgula fixa e complemento para 2.

A aritmética de vírgula fixa pode ser representada como , onde representa o

número de bits da palavra binária e representa o número de bits reservados para a parte

fraccionária. Por exemplo, caracteriza uma palavra binária com 14 bits reservados

para a parte fraccionária, 5 bits reservados para a parte inteira e 1 bit de sinal.

O intervalo a que um número racional está confinado na representação binária é:

,

(3.23)

Para obter um número racional proveniente da representação em virgula fixa basta

fazer:

, (3.24)

onde i representa o índice do bit e representa o respectivo estado (0 ou 1).

No cálculo computacional, mais especificamente, no projecto desenvolvido, as opera-

ções aritméticas a realizar passam pela adição, subtracção, multiplicação, divisão e raiz

quadrada. As operações de adição e subtracção são consideravelmente simples. A incorpora-

ção de blocos DSP nas FPGAs actuais conduziu também à simplificação das operações de

multiplicação. Seguem-se algumas propriedades elementares da aritmética de vírgula fixa para

operações de adição e multiplicação:

A posição da vírgula, nas operações de adição e subtracção tem

que ser a mesma e é salvaguardada;

Bit de

SinalBits Reservados à parte Fraccionária

Bits Reservados à parte

Inteira

Page 45: Tese 1,9 MB

27

O número de bits a reservar para uma operação de adição ou subtracção

é ;

Uma operação de multiplicação resulta numa palavra binária

com o formato .

No entanto, as operações de divisão e raiz quadrada são complexas e susceptíveis de

erros de precisão significativos, uma vez que afectam consideravelmente o tamanho das pala-

vras binárias resultantes (e/ou a posição da virgula), conferindo dinamismo ao processo, com a

agravante de lidar com valores complexos [3][16]. A análise e estratégia de implementação

destas operações constam no capítulo 5.

A quantidade de operações aumenta com a dimensão das matrizes a inverter, e por con-

sequência, o erro propagado. A aritmética de vírgula fixa reduz assim a precisão, acarretando

erros de overflow e erros de truncamento. Os erros de overflow surgem quando os bits disponí-

veis para o resultado de uma operação são insuficientes (erro associado á dinâmica entre os

bits reservados ás partes inteira e fraccionária). Os erros de truncamento devem-se ao número

limitado de bits para a representação dos resultados.

Estes problemas devem ser analisados cuidadosamente, caso a caso, de modo a evitar

resultados incorrectos, no decorrer dos cálculos, que podem alterar por completo o resultado

final. Por este motivo, são imprescindíveis análises de erro, que tenham em consideração as

vulnerabilidades mencionadas.

Com o objectivo de minimizar erros de overflow e obter um maior controlo sob o tamanho

das palavras binárias a reservar, os valores de input são inicialmente normalizados. Este pro-

cesso de normalização consiste na divisão de todos os valores pelo maior número encontrado.

Assim, os dados de input são considerados no intervalo [-1,1].

De modo a obter um controlo constante sobre os intervalos, minimizando o risco de over-

flow, e maximizando a precisão, foram realizadas simulações em MATLAB para determinar os

máximos absolutos, em todas as fases do projecto, definindo assim a posição da vírgula nas

palavras binárias, ou por outras palavras, o número de bits fraccionários. Assim, a posição da

vírgula varia ao longo do projecto, de acordo com as diferentes circunstâncias. Esta análise

encontra-se no capítulo 4.

3.4 Conclusão

Neste capítulo foi efectuada uma análise ao processo de ortogonalização de Gram-

Schmidt no âmbito da decomposição QR e posteriormente efectuada uma análise à represen-

tação em vírgula fixa.

Verificou-se que a ortogonalização de Gram-Schmidt tem um comportamento instável,

que por vezes, conduz à imprecisão dos resultados, não sendo por isso habitualmente aplicada

à decomposição QR na sua versão original, mas sim numa versão modificada, dando origem

Page 46: Tese 1,9 MB

28

ao Modified Gram-Schidt. De seguida foi analisado o MGS e identificadas as operações consti-

tuintes. O algoritmo foi ainda transposto para o domínio complexo, considerando algumas

simplificações resultantes das propriedades da matriz .

Por fim, foram comparadas as formas de representação em vírgula fixa e vírgula flutuan-

te, em que se destacou a vírgula fixa, ao manter uma precisão absoluta constante, para

intervalos de valores limitados e conhecidos. Foram ainda identificadas as propriedades das

operações em vírgula fixa e os cuidados a ter na previsão de erros de overflow e truncamento.

Page 47: Tese 1,9 MB

29

4 Especificação e Optimização do MGS

Neste capítulo é descrita a solução adoptada para o problema proposto. Esta solução

baseia-se na aplicação do MGS e abarca dois aspectos fundamentais: modelação do problema

e optimização dos modelos. Inicialmente, o algoritmo será decomposto em fases genéricas,

onde são identificadas as operações elementares e as respectivas dependências. De seguida

será descrita, nos aspectos mais relevantes, a evolução que o projecto sofreu desde a versão

funcional até à versão optimizada, que apresentou melhores resultados na relação desempe-

nho/recursos. Por fim, serão apresentados os resultados das simulações realizadas em

MATLAB relativos à análise de erro de overflow, que sustentam o dimensionamento da versão

final do projecto.

4.1 Especificação do MGS para inversão de matrizes complexas de

ordem 8

De modo a melhorar a compreensão no que respeita à quantidade de operações, res-

pectiva sequência e dependência de resultados, o algoritmo foi decomposto em três fases

principais e dez operações fundamentais designadas por , tendo em consi-

deração o alvo principal – matrizes complexas de ordem 8. Para matrizes de ordem inferior, a

estrutura mantém-se, verificando-se apenas uma redução na repetição de operações.

Na primeira fase é obtida a matriz ortogonal , a matriz triangular , e, as matrizes

dinâmicas temporárias . Na segunda fase é calculada a matriz triangular ,

através da inversão da matriz ( ). Na terceira e última fase é obtida a matriz invertida

, através da multiplicação da matriz pela matriz .

4.1.1 Fase 1 – Cálculo das colunas da matriz Q (Qi), da diagonal da matriz R (Rii) e das

colunas das matrizes U

Determinar colunas

Cálculo de :

– Aplicação da multiplicação vectorial ao cálculo do produto interno:

(4.1)

( , onde representa a matriz a inverter)

Page 48: Tese 1,9 MB

30

– Aplicação da raiz quadrada, que resulta nos elementos da diagonal :

(4.2)

– Aplicação do recíproco:

(4.3)

– Cálculo de através da multiplicação vectorial aplicada ao produto por escalar:

(…)

(4.4)

Determinar linhas (parâmetros )

– Aplicação da multiplicação vectorial ao cálculo do produto interno:

(…)

(4.5)

Determinar colunas da matriz temporária

Geração de parâmetros temporários através da multiplicação vectorial aplicada ao pro-

duto por escalar ( ), seguida da operação de subtracção , que gera os valores

actualizados de :

Coluna

(apenas para )

(…)

Coluna

(…)

(…) Coluna

(…)

Page 49: Tese 1,9 MB

31

(4.6)

A Figura 4.1 ilustra os principais passos do processamento da fase 1.

Figura 4.1 – Evolução da fase 1, relativamente à manipulação e cálculo das matrizes U, Q e R.

4.1.2 Fase 2 – Cálculo da matriz W

Determinar diagonal ( )

– Aplicação do recíproco:

(4.7)

Determinar linhas ( )

Aplicação da Multiplicação vectorial para o cálculo do produto interno ( ), gerando um

valor temporário, seguido pelo produto por escalar , que gera elementos da matriz :

A U1

Q1

R1

Q8

R8

Q2

R2

Q8

R8

Q1

R1

U2

U3

U1

A

Iteração i=1 Iteração i=2 Iteração i=8

Page 50: Tese 1,9 MB

32

Linha

(…)

(4.8)

Linha

(…)

(4.9)

(…) Linha (elemento )

(4.10)

4.1.3 Fase 3 – Cálculo da matriz B

A terceira fase do processo aplica a multiplicação vectorial ao cálculo do produto interno

( ), para a obtenção do resultado final ( ).

Coluna

(…)

Coluna

(…)

(…) Coluna

(…)

(4.11)

Page 51: Tese 1,9 MB

33

4.2 Modelo e optimização

O desenvolvimento do projecto passou por um processo contínuo de optimização, onde

foram identificados três modelos arquitectónicos distintos.

O primeiro modelo desenvolvido teve uma natureza essencialmente funcional e foi defi-

nido com palavras binárias de 32 bits de estrutura fixa . O modelo baseou-se num

elevado nível de partilha de recursos, no que diz respeito a unidades de dados. A partilha de

recursos tem dois inconvenientes: baixa escalabilidade da arquitectura e incapacidade de

implementação de pipeline. Apesar da precisão obtida com a utilização de 32 bit, a dimensão

das palavras binárias apresentava também dois problemas: espaço excessivo em memória,

necessário para alocar os resultados temporários e elevado número de DSPs exigidos nos

processos de multiplicação. O armazenamento de dados foi implementado com blocos RAM de

36Kb de duplo porto. Este modelo foi desenvolvido sem análise prévia de overflow e segue a

sequência de operações identificada na secção 4.1. Na Figura 4.2 encontram-se ilustrados os

principais blocos e ligações da unidade de dados da arquitectura do modelo funcional/modelo

1.

Figura 4.2 – Blocos e ligações principais da unidade de dados da arquitectura do modelo funcional.

BRAM

BRAM

BRAM

BRAM

BRAM

BRAM

BRAM

BRAM

X

7 X

8

X

6

X

5

X

4

X

3

X

2

X

1

BRAMs X

(8X8 U e Q)

BRAM

BRAM

BRAM

BRAM

BRAM

BRAM

BRAM

BRAM

Y

7 Y

8

Y

6

Y

5

Y

4

Y

3

Y

2

Y

1

BRAMs Y

(8X8 Q e W)

BRAM

BRAM

BRAM

BRAM

BRAM

BRAM

BRAM

BRAM

Z

7 Z

8

Z

6

Z

5

Z

4

Z

3

Z

2

Z

1

BRAMs Z

(8X8 R e B)

Reciproco

Complexo

Reciproco

Real

x

1

Raíz Quadrada

Complexa

Raíz Quadrada

Real

x

SUBTRACTOR

VECTORIAL

UNIDADES DE

MULTIPLICAÇÃO

UNIDADES

DE SOMA

UNIDADES DE

SUBTRACÇÃO

REGISTOS

MULTIPLICADOR SIMPLES

(a1 +jb1)x(a2 +jb2)

MU

LT

IPL

ICA

DO

R V

EC

TO

RIA

L

(1 a

nd

ar m

ultip

lica

do

res +

4 a

nd

are

s s

om

ad

ore

s)

MU

X

Barramentos de

8 x 2 x 32 Bit

Barramentos de

2 x 32 Bit

Registos

Registos

16

MU

Xs

16

MU

Xs

Page 52: Tese 1,9 MB

34

Como se pode verificar na Figura 12, todas as sub-unidades de processamento de

dados (multiplicador vectorial, multiplicador simples, subtractor vectorial, raiz quadrada e reci-

proco) partilham os recursos entre si. Os barramentos simples contêm 64 bits (32 bits para a

parte real e 32 bits para a parte imaginária). Os barramentos em negrito contêm 8x64 bits (vec-

tores correspondentes a linhas ou colunas das matrizes respectivas, com 64 bits por elemento).

Para armazenamento de dados, no total foram utilizados 24 BRAMs 36Kb.

Considerando as FPGAs com tecnologia igual ou superior à disponibilizada pela família

Virtex-5 [23], os DSPs (DSP48E) apresentam uma estrutura rectangular com capacidade para

a multiplicação de 25 por 18 bits, ou mesmo, 26 por 19 bits com recurso a LUTs. Deste modo,

cada multiplicador de 32 por 32 bits consumia 4 DSPs.

Considerando o modelo desenvolvido, respeitando apenas as dependências de dados e

os acessos a memória, foi efectuada para referência, uma minoração do número total de ciclos

de relógio, que resultou em 342 como o número mínimo de ciclos de relógio, necessário para a

conclusão do processamento.

Posteriormente, tendo em conta a quantidade de BRAMs e DSPs dispendidos e o

throughput do primeiro modelo, foi desenvolvido um segundo modelo que utilizou palavras

binárias de diferentes dimensões e com posição variável da vírgula. Para tal foi efectuada uma

análise em MATLAB, de modo a minimizar o erro de overflow e maximizar a precisão. Este

modelo teve em vista a utilização de um único DSP por multiplicador, o que conduziu à redução

do número de blocos RAM. Assim, passaram a ser utilizadas palavras de 18 e 26 bits para

alocar os parâmetros das matrizes nos blocos RAM de 36Kb (26 bits para os parâmetros da

matriz , visto ser a matriz envolvida no maior número de operações e 18 bits para os parâme-

tros das matrizes restantes). Tendo em conta a utilização intensiva do multiplicador vectorial e

respectiva latência (7 ciclos de relógio), este foi modificado de modo a tornar possível o seu

uso em pipeline. Para minimizar o caminho crítico, foi ainda implementado um andar de pipeli-

ne nos DSPs. O multiplicador simples foi também utilizado em pipeline. Foram ainda eliminadas

redundâncias como o recálculo dos valores , nas fases 1 e 2 ( ), que eliminou 8 opera-

ções de recíproco de complexos. De modo a maximizar o paralelismo, a fase 2 do algoritmo foi

encadeada na sequência da fase 1, reduzindo substancialmente o número total de ciclos de

relógio (os dados constam na Tabela 4.1).

A Figura 4.3 regista as alterações da arquitectura do primeiro para o segundo modelo.

Page 53: Tese 1,9 MB

35

Figura 4.3 – Blocos e ligações principais da unidade de dados da arquitectura do modelo 2.

No diagrama de blocos verifica-se a redução das BRAMs utilizados, assim como a redu-

ção do número de bits das palavras binárias. Identificam-se os 7 andares do pipeline no

multiplicador vectorial e 3 andares no multiplicador simples. Deixa de existir partilha de recur-

sos entre as diferentes unidades de dados. O número de bits indicado nos barramentos da

Figura 4.3 refere-se aos bits por palavra reservados para cada componente (real/imaginário) de

cada parâmetro na forma .

O modelo final (modelo 3) resultou de algumas alterações subtis, mas significativas,

baseadas na aplicação da transconjugada, referidas na secção 3.2 e visíveis na Figura 3.3 b.

Estas alterações têm como principal consequência a transformação das unidades de raiz qua-

drada e recíproco complexas em operações no domínio real afectando assim e .

Indirectamente, são também afectadas as operações , e . Outra modificação verifi-

cou-se na implementação de registos à saída de alguns sinais de controlo, de modo a

minimizar os atrasos das ligações aos blocos RAM. Na Figura 4.4 encontra-se representado o

diagrama de blocos e as ligações principais da arquitectura da unidade de dados que constitui

o modelo final do projecto. No capítulo 5 será efectuada uma análise detalhada à arquitectura

implementada.

BRAM

BRAM

BRAM

BRAM

BRAM

BRAM

BRAM

BRAM

X

7 X

8

X

6

X

5

X

4

X

3

X

2

X

1

BRAMs X

(8X8 U e Q)

BRAM

BRAM

BRAM

BRAM

Y

4

Y

3

Y

2

Y

1

BRAMs Y

(8X8 Q e W)

BRAM

BRAM

BRAM

BRAM

Z

4

Z

3

Z

2

Z

1

BRAMs Z

(8X8 R e B)

Reciproco

Complexo

Reciproco

Real

x

1

Raíz Quadrada

Complexa

Raíz Quadrada

Real

x

SUBTRACTOR

VECTORIAL

16

MU

Xs

MULTIPLICADOR SIMPLES

(a1 +jb1) x (a2 +jb2)

MU

LT

IPL

ICA

DO

R V

EC

TO

RIA

L

(1 a

nd

ar m

ultip

lica

do

res +

4 a

nd

are

s s

om

ad

ore

s)

1 2 3 4 5 6 7

32 32 32 32

36 36

18

18 18

18

18

18

18

26

26

19

19

18

18

18

26

26

18

1

26

Barramentos de

8 x 2 palavras

Barramentos de

2 palavras

26

16

MU

Xs

2

3

Page 54: Tese 1,9 MB

36

Figura 4.4 – Blocos e ligações principais da unidade de dados da arquitectura do modelo final.

Em consequência das alterações mencionadas no modelo 3, foram efectuadas as

seguintes modificações ao nível das operações:

– Aplicação da multiplicação vectorial ao cálculo do produto interno, com o conjuga-

do de um dos vectores:

(4.12)

– Aplicação da raiz quadrada real, que resulta nos elementos da diagonal :

(4.13)

BRAM

BRAM

BRAM

BRAM

BRAM

BRAM

BRAM

BRAM

X

7 X

8

X

6

X

5

X

4

X

3

X

2

X

1

BRAMs X

(8X8 U e Q)

BRAM

BRAM

BRAM

BRAM

Y

4

Y

3

Y

2

Y

1

BRAMs Y

(8X8 Q e W)

BRAM

BRAM

BRAM

BRAM

Z

4

Z

3

Z

2

Z

1

BRAMs Z

(8X8 R e B)

Reciproco

Real

x

1

Raíz Quadrada

Real

x

SUBTRACTOR

VECTORIAL

16

MU

Xs

MU

LT

IPL

ICA

DO

R V

EC

TO

RIA

L

(1 a

nd

ar m

ultip

lica

do

res +

4 a

nd

are

s s

om

ad

ore

s)

32

18

18 18

18

18

18

18

26

26

19

19

18

18

18

26

26

18

26

Barramentos de

8 x 2 palavras

Barramentos de

2 palavras

26

16

MU

Xs

32

Conjugação da Transposta nas OP1,6,10

MULTIPLICADOR SIMPLES

(a +jb) x c

1

2

3

1 2 3 4 5 6 7

Page 55: Tese 1,9 MB

37

– Aplicação do recíproco real:

(4.14)

– Geração de parâmetros temporários através da multiplicação vectorial aplicada ao

produto por escalar conjugado:

(4.15)

– Aplicação da multiplicação vectorial ao cálculo do produto interno, para a obten-

ção do resultado final ( ):

(4.16)

A Tabela 4.1 resume os principais aspectos dos três modelos desenvolvidos.

Tabela 4.1 – Comparação entre os resultados obtidos dos três modelos desenvolvidos.

Modelo Flip-Flops LUTs DSP48Es BRAMs Ciclos de

relógio

Caminho crítico

(ns)

1 1311 7576 130 27 1077 22,231

2 6464 9332 47 19 571 7,682

3 5776 8748 36 19 485 6,155

Os valores constantes da Tabela 4.1 foram obtidos nas mesmas condições, para imple-

mentação numa FPGA Virtex-5 XC5VLX330T [23]. Como se pode verificar pela análise da

tabela, a principal evolução está presente na quantidade de DSPs dispendida e consequente-

mente redução do caminho crítico. Graças à implementação de pipeline, o número de ciclos de

relógio necessários para inverter uma matriz complexa de ordem 8 diminuiu também para

menos de metade.

Page 56: Tese 1,9 MB

38

4.3 Análise de Erro

No âmbito do dimensionamento das palavras binárias, de modo a minimizar o risco de

overflow e maximizar a precisão dos resultados foram realizadas simulações em MATLAB [26],

com o objectivo de avaliar os resultados das operações elementares mencionadas na secção

4.1 e escolher a dimensão mais adequada para as palavras binárias. Nesta fase, a simulação

em MATLAB foi baseada no modelo 3, mas com vírgula flutuante de precisão dupla (definida

por omissão no MATLAB). Estes ensaios tiveram um universo de 5000 matrizes complexas de

ordem 8. Seguem-se as tabelas com a distribuição dos valores máximos absolutos, obtidos

para o resultado das operações, no universo total e por ensaio.

Tabela 4.2 – Distribuição dos valores máximos obtidos para o resultado das 10 operações e respectivo número de bits necessário para a representação da parte inteira, no universo de 5000 ensaios.

Intervalo <0.5 ]0.5, 1[ ]1, 2[ ]2, 4[ ]4, 8[ ]8, 16[ ]16, 32[ ]32, 64[ ]64, 128[ >128

Bits parte

inteira - 0 1 2 3 4 5 6 7 +7

- 13877 13761 12269 93 0

- 27448 12552 0

- 38204 1367 315 88 21 3 2 0

177520 16948 0

- 139951 49 0

317778 56946 325 0

364904 503277 41370 0

- 139072 867 60 1 0

- 132769 5055 1657 413 87 13 6 0

- 309012 8326 2185 429 47 1 0

A Tabela 4.2 apresenta a quantidade de resultados de cada operação ( ) incluídas no

intervalo . Por sua vez, cada intervalo , com e , diz respeito ao

acréscimo de 1 bit à esquerda da vírgula da palavra binária (bits para a representação da parte

inteira), necessária para a representação do valor do resultado.

Page 57: Tese 1,9 MB

39

Tabela 4.3 – Número de ensaios que apresenta a distribuição da Tabela 4.2.

Intervalo <0.5 ]0.5, 1[ ]1, 2[ ]2, 4[ ]4, 8[ ]8, 16[ ]16, 32[ ]32, 64[ ]64, 128[ >128

Bits parte

inteira - 0 1 2 3 4 5 6 7 +7

- 4993 4884 4926 91 0

- 5000 4944 0

- 5000 1321 312 88 21 3 2 0

5000 4911 0

- 5000 49 0

5000 4994 302 0

5000 5000 4980 0

- 5000 441 32 1 0

- 5000 2015 730 197 46 7 2 0

- 5000 4998 1124 297 79 10 1 0

A Tabela 4.3 surge no seguimento da Tabela 4.2 e visa reflectir a quantidade de ensaios

(cada ensaio corresponde a uma inversão matricial) que apresenta resultados nos intervalos

referidos. Esta abordagem tem como objectivo descriminar os dados, de modo a que um

ensaio isolado que apresente uma grande percentagem de resultados num determinado inter-

valo, não influencie, isoladamente, os resultados gerais.

Através da análise da Tabela 4.3 foi possível definir a estrutura das palavras binárias

(posição da vírgula) para as diferentes matrizes a salvaguardar nos BRAMs, de acordo com a

quantidade de bits necessários para a representação da parte inteira do resultado de cada

operação.

Considerando os resultados obtidos e tendo em conta a influência da quantidade de bits

representativos da parte fraccionária das palavras, na precisão dos resultados finais, foram

considerados três níveis de risco de erro de overflow, com os quais o projecto foi implementa-

do: 5%, 1% e 0,1%.

As tabelas que se seguem (Tabela 4.4 – Tabela 4.10) são constituídas com base na

informação da Tabela 4.3 e apresentam a relação entre o número de ensaios e a quantidade

de bits necessários para a representação da parte inteira, para concentrações inferiores a 5%

do número total de ensaios (250 ensaios), 1% do número total de ensaios (50 ensaios) e 0,1%

do número total de ensaios (5 ensaios). A separação/reunião das operações ( ) é realizada

com base no destino dos valores resultantes das mesmas (mesmos destinos implicam mesmo

formato das palavras binárias). Deste modo é obtido um melhor rendimento das palavras biná-

rias, introduzindo dinamismo na posição da vírgula das mesmas.

Page 58: Tese 1,9 MB

40

Tabela 4.4 – Avaliação do risco de erro de overflow à entrada da raiz quadrada.

5% 1% 0,1%

Nº Ensaios (5000) 91

Nº Bits - parte inteira 4

Tabela 4.5 – Avaliação do risco de erro de overflow para os elementos da matriz R.

5% 1% 0,1%

Nº Ensaios (5000) 4944

Nº Bits - parte inteira 2

Nº Ensaios (5000) 49

Nº Bits - parte inteira 2

Tabela 4.6 – Avaliação do risco de erro de overflow para os elementos da matriz W .

5% 1% 0,1%

Nº Ensaios (5000) 88 21 3

Nº Bits - parte inteira 3 4 5

Nº Ensaios (5000) 197 46 7

Nº Bits - parte inteira 3 4 5

Tabela 4.7 – Avaliação do risco de erro de overflow para os elementos da matriz Q.

5% 1% 0,1%

Nº Ensaios (5000) 4911

Nº Bits - parte inteira 0

Tabela 4.8 – Avaliação do risco de erro de overflow para os elementos da matriz .

5% 1% 0,1%

Nº Ensaios (5000) 302

Nº Bits - parte inteira 1

Nº Ensaios (5000) 4980

Nº Bits - parte inteira 1

Page 59: Tese 1,9 MB

41

Tabela 4.9 – Avaliação do risco de erro de overflow para à saída da OP8.

5% 1% 0,1%

Nº Ensaios

(5000)

441 32 1

Nº Bits - parte

inteira

2 3 4

Tabela 4.10 – Avaliação do risco de erro de overflow para os elementos da matriz B.

5% 1% 0,1%

Nº Ensaios (5000) 79 10 1

Nº Bits - parte inteira 3 4 5

Como se pode verificar da análise das tabelas, apenas os elementos constituintes das

matrizes e (Tabela 4.6 e Tabela 4.10) apresentam distribuições dos ensaios susceptíveis

da aplicação dos três níveis de risco de erro de overflow (5%, 1% e 0,1%). O número de bits

assinalado nessas tabelas é o que assegura um número de ensaios inferior à respectiva per-

centagem de risco.

As Tabela 4.4, Tabela 4.5, Tabela 4.7 e Tabela 4.8 apresentam a necessidade de igual

número de bits para os três níveis de risco de erro de overflow considerados. A Tabela 4.9

apresenta uma variação do número de bits para a parte inteira com o nível de risco de erro de

overflow, contudo, como designa resultados temporários, que não são armazenados em

BRAMs, dispensa truncamentos.

Em suma o formato das palavras binárias utilizadas para representar os elementos de

cada matriz é:

Tabela 4.11 – Formato das palavras binárias utilizadas na representação das matrizes.

Matriz 5% 1% 0,1%

U

Q

R

W

B

Page 60: Tese 1,9 MB

42

O tamanho das palavras binárias mencionado na Tabela 4.11 (26 para os elementos da

matriz U e 18 bits para os elementos das restantes matrizes) visa tirar o máximo rendimento

dos DSPs.

4.4 Conclusão

Neste capítulo foram primeiramente identificadas as operações fundamentais do algorit-

mo MGS e as respectivas dependências dos resultados, de modo a dimensionar a arquitectura

das unidades de dados, agilizar a alocação e os acessos a memória e explorar a capacidade

de paralelismo. Neste âmbito foram identificadas três fases, dez operações elementares e cin-

co diferentes tipos de operações a realizar.

De seguida, foram apresentados três modelos, resultantes de um processo de optimiza-

ção arquitectural sucessiva que visou diminuir a utilização de determinados recursos (BRAMs e

DSPs) e aumentar o desempenho (número total de ciclos de relógio e caminho crítico). O resul-

tado final obteve as seguintes melhorias: o número de BRAMs diminuiu 30%; o número de

DSPs diminuiu 72%; o número total de ciclos de relógio diminuiu 55% e o caminho crítico dimi-

nuiu 72%. Os principais responsáveis pelos resultados obtidos foram a redução e flexibilidade

na quantidade de bits das palavras reservadas para a salvaguarda dos valores e os andares de

pipeline implementados juntamente com o elevado grau de paralelismo conseguido.

Por fim, com recurso ao MATLAB, foi analisado o risco de overflow relativo ao resultado

de cada operação principal, de modo a definir a posição da vírgula nas palavras binárias reser-

vadas para alocar os diferentes valores. Neste sentido, foram definidos três níveis distintos de

risco de erro de overflow (5%, 1% e 0.1%), posteriormente implementados, com influência

directa na precisão dos resultados (quanto menor for o risco de erro de overflow, menor será a

precisão dos resultados).

Page 61: Tese 1,9 MB

43

5 Projecto e Implementação da Arquitectura de

Processamento

5.1 Dependências e conflitos de dados

Para perceber e maximizar o paralelismo inerente a um programa é fundamental identifi-

car onde, quando e como é que uma determinada instrução depende de outra(s). Duas

instruções consideram-se paralelas, quando podem ser executadas em simultâneo, ou em

pipeline, sem causar nenhum stall. Duas instruções consideram-se dependentes, quando têm

de ser executadas de acordo com uma determinada sequência. Existem três tipos de depen-

dências: dependências de dados; dependências de nome e dependências de controlo.

As dependências de dados verificam-se quando uma instrução produz um resultado que

vai ser utilizado por outra instrução, de modo directo ou indirecto (isto é, podem existir terceiras

instruções envolvidas). Duas instruções envolvidas numa dependência de dados não podem

ser executadas simultaneamente. A identificação de uma dependência de dados implica a exe-

cução das instruções por uma determinada ordem, caso contrário, poderão existir conflitos de

dados.

As dependências de nome ocorrem quando duas instruções utilizam o mesmo registo ou

a mesma posição em memória. Existem dois tipos de dependências de nome: antidependência

e dependência de saída. Uma antidependência entre duas instruções ocorre quando uma ins-

trução utiliza um registo que outra instrução vai ler. A sequência deve ser preservada, para

assegurar que a segunda instrução lê o valor correcto. Uma dependência de saída ocorre

quando duas instruções escrevem no mesmo registo. A sequência deve ser preservada, para

assegurar que o valor final do registo seja o correcto. As dependências de nome podem ser

resolvidas com a introdução de novos registos.

As dependências de controlo resultam de processos de decisão sobre condições. Uma

dependência de controlo ocorre quando uma instrução é executada, ou não, consoante o resul-

tado produzido por outra instrução.

Quando uma dependência entre instruções não é resolvida, surgem conflitos de dados.

Existem três tipos de conflitos de dados, classificados de acordo com a ordem de leitura e

escrita: RAW (read after write); WAR (write after read) e WAW (write after write). Um conflito

RAW ocorre quando uma instrução tenta ler um valor antes de este ter sido escrito, lendo

assim um valor incorrecto. Um conflito WAR ocorre quando uma instrução escreve um valor

antes da leitura de outra instrução, a segunda instrução vai ler um valor novo e incorrecto. Um

conflito WAW ocorre quando uma instrução escreve um valor antes de outro valor ser escrito

por outra instrução, o que resulta em valores incorrectos, no final das duas instruções.

Os conflitos RAW podem ser evitados, executando as instruções apenas quando os ope-

radores estão disponíveis. Os conflitos WAW e WAR (resultantes de dependências de nome)

Page 62: Tese 1,9 MB

44

são eliminados pela introdução de novos registos, sempre que possível, deixando nesse caso

de importar a sequência em que são executadas as instruções.

5.2 Arquitectura

Esta secção aborda a caracterização da arquitectura das unidades de armazenamento e

das unidades de processamento de dados. A unidade de dados, é constituída por cinco unida-

des aritméticas principais: subtractor vectorial; multiplicador simples; multiplicador vectorial;

recíproco e raiz quadrada. As unidades de armazenamento de dados baseiam-se em blocos

RAM de 36K bits de duplo porto e alojam todas as matrizes envolvidas no processo. Todas as

unidades do projecto funcionam com uma única frequência de relógio, com sensibilidade edge-

triggered positivo e são geridas ao nível combinatório e sequencial, por uma única unidade de

controlo, baseada numa máquina de Moore. No diagrama da Figura 5.1 encontram-se as uni-

dades principais do projecto.

Figura 5.1 – Diagrama das unidades principais do projecto.

BRAM

BRAM

BRAM

BRAM

BRAM

BRAM

BRAM

BRAM

X

7 X

8

X

6

X

5

X

4

X

3

X

2

X

1

BRAMs X

(8X8 U e Q)

BRAM

BRAM

BRAM

BRAM

Y

4

Y

3

Y

2

Y

1

BRAMs Y

(8X8 Q e W)

BRAM

BRAM

BRAM

BRAM

Z

4

Z

3

Z

2

Z

1

BRAMs Z

(8X8 R e B)Reciproco

Real

x

1

Raíz Quadrada

Real

x

SUBTRACTOR

VECTORIAL

MU

LT

IPL

ICA

DO

R V

EC

TO

RIA

L

(1 a

nd

ar m

ultip

lica

do

res +

4 a

nd

are

s s

om

ad

ore

s)

MULTIPLICADOR SIMPLES

(a +jb) x c

1

2

3

1 2 3 4 5 6 7

CONTROLO

Armazenamento de Dados Processamento de Dados

Page 63: Tese 1,9 MB

45

5.2.1 Armazenamento de dados

Para o armazenamento de dados, nomeadamente salvaguarda de matrizes de entrada,

saída e temporárias, são utilizados BRAMs de 36Kb com duplo porto. As ligações das unidades

de memória estão descritas na Figura 5.2.

Figura 5.2 – Ligações (E/S) de cada unidade de armazenamento de dados.

A matriz a inverter e normalizada ( ), é inicialmente alojada em oito BRAMs de 36Kb

denominadas (memX1, memX2, memX3, memX4, memX5, memX6, memX7, memX8). Cada

BRAM endereça 1024 posições de 36 bits (32 bits + 4 bits de paridade), sendo que são apenas

utilizados 16 posições para alojar as palavras de 26 bits constituintes de cada coluna da matriz

U (8 endereços para a parte real e 8 endereços para a parte imaginária). Para endereçar as 16

posições de memória são necessários 4 bits, contudo, todos os BRAMs possuem um segundo

andar de 16 posições, para armazenar vectores (linhas/colunas) temporários, proporcionado

por um quinto bit de endereçamento.

A disposição adoptada foi a seguinte:

Clock Write Enable

Port A

Write Enable

Port B

Data Input Port B

Data Input Port A

Data Output Port A

Data Output Port B

[4:0]

[35:0]

[35:0]

[35:0]

[35:0]

Address Port A

Address Port B[4:0]

BLOCK RAM 36K: 32K+4K

DUAl-PORT

memXi(0) [25 downto 0]U1ia memXi(1) [25 downto 0]U1ib

memXi(2) [25 downto 0]U2ia memXi(3) [25 downto 0]U2ib

memXi(4) [25 downto 0]U3ia memXi(5) [25 downto 0]U3ib

memXi(6) [25 downto 0]U4ia memXi(7) [25 downto 0]U4ib

memXi(8) [25 downto 0]U5ia memXi(9) [25 downto 0]U5ib

memXi(A) [25 downto 0]U6ia memXi(B) [25 downto 0]U6ib

memXi(C) [25 downto 0]U7ia memXi(D) [25 downto 0]U7ib

memXi(E) [25 downto 0]U8ia memXi(F) [25 downto 0]U8ib

Figura 5.3 – Disposição dos blocos RAM memX.

Page 64: Tese 1,9 MB

46

O índice „i‟ está associado ao número da coluna/BRAM em questão ( ). A leitu-

ra/escrita da parte real de cada elemento (endereços pares) é efectuada pelo porto A, ao passo

que a leitura/escrita da parte imaginária de cada elemento (endereços impares) é efectuada

pelo porto B.

É necessário alocar memória para três matrizes temporárias e para a matriz de saída

(com o respectivo resultado final), respectivamente , , e que são também alojadas em

dois conjuntos de BRAMs de 36Kb (memYi e memZi), mas agora com palavras de 18 bit, o que

permite a redução do número de BRAMs para metade, ao alojar a parte imaginária e a parte

real numa só palavra de 36 bit:

memYk(0) [17 downto 0]Q1ia/W1ia memYk(0) [35 downto 18]Q1ib/W1ib

memYk(2) [17 downto 0]Q2ia/W2ia memYk(2) [35 downto 18]Q2ib/W2ib

memYk(4) [17 downto 0]Q3ia/W3ia memYk(4) [35 downto 18]Q3ib/W3ib

memYk(6) [17 downto 0]Q4ia/W4ia memYk(6) [35 downto 18]Q4ib/W4ib

memYk(8) [17 downto 0]Q5ia/W5ia memYk(8) [35 downto 18]Q5ib/W5ib

memYk(A) [17 downto 0]Q6ia/W6ia memYk(A) [35 downto 18]Q6ib/W6ib

memYk(C) [17 downto 0]Q7ia/W7ia memYk(C) [35 downto 18]Q7ib/W7ib

memYk(E) [17 downto 0]Q8ia/W8ia memYk(E) [35 downto 18]Q8ib/W8ib

memYk(1) [17 downto 0]Q1ja/W1ja memYk(1) [35 downto 18]Q1jb/W1jb

memYk(3) [17 downto 0]Q2ja/W2ja memYk(3) [35 downto 18]Q2jb/W2jb

memYk(5) [17 downto 0]Q3ja/W3ja memYk(5) [35 downto 18]Q3jb/W3jb

memYk(7) [17 downto 0]Q4ja/W4ja memYk(7) [35 downto 18]Q4jb/W4jb

memYk(9) [17 downto 0]Q5ja/W5ja memYk(9) [35 downto 18]Q5jb/W5jb

memYk(B) [17 downto 0]Q6ja/W6ja memYk(B) [35 downto 18]Q6jb/W6jb

memYk(D) [17 downto 0]Q7ja/W7ja memYk(D) [35 downto 18]Q7jb/W7jb

memYk(F) [17 downto 0]Q8ja/W8ja memYk(F) [35 downto 18]Q8jb/W8jb

i = {1,3,5,7}; j = i+1; k = j/2;

Figura 5.4 – Disposição dos blocos RAM memY.

Page 65: Tese 1,9 MB

47

Neste caso, em cada porto é efectuada a leitura/escrita do valor complexo (parte real e

parte imaginária) de cada elemento da coluna/linha da respectiva matriz. Ao contrário das res-

tantes matrizes, a matriz é guardada por linhas (de modo a facilitar as operações matriciais

da fase 2). Nas memXi é ainda salvaguardada a transposta da matriz Q, imediatamente antes

da fase 3.

memZk(0) [17 downto 0]Ri1a/B1ia memZk(0) [35 downto 18]Ri1b/B1ib

memZk(2) [17 downto 0]Ri2a/B2ia memZk(2) [35 downto 18]Ri2b/B2ib

memZk(4) [17 downto 0]Ri3a/B3ia memZk(4) [35 downto 18]Ri3b/B3ib

memZk(6) [17 downto 0]Ri4a/B4ia memZk(6) [35 downto 18]Ri4b/B4ib

memZk(8) [17 downto 0]Ri5a/B5ia memZk(8) [35 downto 18]Ri5b/B5ib

memZk(A) [17 downto 0]Ri6a/B6ia memZk(A) [35 downto 18]Ri6b/B6ib

memZk(C) [17 downto 0]Ri7a/B7ia memZk(C) [35 downto 18]Ri7b/B7ib

memZk(E) [17 downto 0]Ri8a/B8ia memZk(E) [35 downto 18]Ri8b/B8ib

memZk(1) [17 downto 0]Rj1a/B1ja memZk(1) [35 downto 18]Rj1b/B1jb

memZk(3) [17 downto 0]Rj2a/B2ja memZk(3) [35 downto 18]Rj2b/B2jb

memZk(5) [17 downto 0]Rj3a/B3ja memZk(5) [35 downto 18]Rj3b/B3jb

memZk(7) [17 downto 0]Rj4a/B4ja memZk(7) [35 downto 18]Rj4b/B4jb

memZk(9) [17 downto 0]Rj5a/B5ja memZk(9) [35 downto 18]Rj5b/B5jb

memZk(B) [17 downto 0]Rj6a/B6ja memZk(B) [35 downto 18]Rj6b/B6jb

memZk(D) [17 downto 0]Rj7a/B7ja memZk(D) [35 downto 18]Rj7b/B7jb

memZk(F) [17 downto 0]Rj8a/B8ja memZk(F) [35 downto 18]Rj8b/B8jb

i = {1,3,5,7}; j = i+1; k = j/2;

Figura 5.5 – Disposição dos blocos RAM memZ.

Page 66: Tese 1,9 MB

48

5.2.2 Subtractor vectorial

A unidade de subtracção vectorial foi projectada para subtrair vectores de complexos,

com dimensões até 8 elementos, com palavras de 26 bits. A unidade é constituída por 16 sub-

tractores aritméticos e 16 registos de saída. Com apenas um andar, esta unidade faz parte da

pipeline do processador. Na Figura 5.6 encontram-se as ligações e na Figura 5.7 apresenta-se

uma descrição pormenorizada da unidade.

Figura 5.6 – Diagrama de ligações (E/S) do subtractor vectorial.

Figura 5.7 – Diagrama interno do bloco de subtracção vectorial.

Clock

real(Input A)8x[25:0]

8x[25:0]

8x[25:0]

8x[25:0]

subVimag(Input A)

real(Input B)

imagl(Input B)

8x[25:0]

8x[25:0]

real(Output)

imag(Output)

stage 1

R

real(Input_A1)

real(output_1)

real(Input_B1)

R

imag(Input_A1)

imag(output_1)

imag(Input_B1)

R

real(Input_A2)

real(output_2)

real(Input_B2)

R

imag(Input_A2)

imag(output_2)

imag(Input_B2)

R

real(Input_A8)

real(output_8)

real(Input_B8)

R

imag(Input_A8)

imag(output_8)

imag(Input_B8)

26

26

26 26

R26

26

26 26

R26

26

26 26

R26

26

26 26

R26

26

26 26

R26

26

26 26

Page 67: Tese 1,9 MB

49

5.2.3 Multiplicador simples

A unidade de multiplicação simples foi projectada para realizar multiplicações de valores

complexos por escalares reais. De modo a conseguir realizar multiplicações com um bloco DSP

e apenas uma LUT adicional, o valor complexo foi dimensionado com 26 bits por palavra (parte

real e parte imaginária), ao passo que o escalar foi dimensionado com 19 bits. O resultado é

truncado a 36 bits por palavra. Esta unidade utiliza dois multiplicadores e 7 registos (dois regis-

tos de 26 bits e um registo de 19 bits à entrada da unidade, e, quatro registos de 45 bits à

saída dos multiplicadores). Os DSPs dos multiplicadores encontram-se estruturados com dois

andares de pipeline. A unidade de multiplicação simples é utilizada na fase 2, com a explora-

ção de pipeline. Os diagramas de ligações e processamento interno encontram-se na Figura

5.8 e Figura 5.9, respectivamente.

Figura 5.8 – Diagrama de ligações (E/S) do multiplicador simples.

Figura 5.9 – Diagrama interno do bloco multiplicação simples.

Clock

real(Input A)[25:0]

[25:0]

[18:0]multS

imag(Input A)

Input B

[35:0]

[35:0]

real(Output)

imag(Output)

R

real(Input_A)

Input_B

R

imag(Input_A)

Input_B

real(output)

imag(output)

R

R

R

R

R

R

stage 2 stage 3

45

45

stage 1

26

19

26

19

45

45

36

36

Page 68: Tese 1,9 MB

50

5.2.4 Multiplicador vectorial

A unidade de multiplicação vectorial foi projectada de modo a proporcionar dois tipos de

operações: multiplicações entre vectores complexos e multiplicações de vectores complexos

por escalares complexos. À semelhança da unidade de multiplicação simples, é utilizado um

bloco DSP com dois andares de pipeline por multiplicador, o primeiro operando tem 26 bits, o

segundo operando tem 19 bits e o resultado é truncado a 36 bits por palavra. Tendo sido

dimensionada para vectores de oito elementos, a multiplicação entre vectores está dividida em

7 andares de pipeline, ao passo que o resultado da multiplicação de vectores por escalares

está disponível à saída do quarto andar. A capacidade de processamento de vectores com

dimensões inferiores é considerada, mantendo contudo, a estrutura referida. Os recursos utili-

zados na unidade de multiplicação vectorial encontram-se na Tabela 5.1.

Tabela 5.1 – Recursos utilizados pelo multiplicador vectorial.

Multiplicadores Somadores/Subtractores Somadores Registos

32 16 14

26 bits 19 bits 45 bits 36 bits

16 16 64 30

O diagrama de ligações encontra-se na Figura 5.10, ao passo que, a análise interna da

unidade aritmética está disponível no anexo A1.

Figura 5.10 – Diagrama de ligações (E/S) do multiplicador vectorial.

Clock Select Conjugate

real(Input A) [35:0]8x[25:0]

8x[25:0]

8x[18:0]

8x[18:0]

[35:0]

multVimag(Input A)

real(Input B)

imagl(Input B)

real(Output)

imag(Output)

8x[35:0]

8x[35:0]

real(Output)

imag(Output)

Page 69: Tese 1,9 MB

51

5.2.5 Recíproco

A unidade de cálculo do recíproco foi projectada para processar palavras com 32

bits. Utiliza uma aproximação polinomial de 1ª ordem, por troços, com os coeficientes armaze-

nados em tabela. Esta unidade apresenta uma latência de 8 ciclos de relógio e inclui um sinal

de start, para controlar o armazenamento do resultado em registo no decorrer da fase 1 do

algoritmo. Na Figura 5.11 encontra-se o respectivo diagrama de ligações.

Figura 5.11 – Diagrama de ligações (E/S) da unidade recíproco.

Conforme referido, a função recíproco é calculada usando um polinómio de 1ª ordem:

(5.1)

cujo erro de aproximação é:

(5.2)

Este método estima a solução da função recíproco, para um intervalo , onde a

função é diferenciável. Foi escolhido o polinómio minimax, que é o polinómio que apresenta o

menor erro máximo de aproximação no intervalo. O polinómio minimax de 1ª ordem, num inter-

valo , apresenta erro máximo nos pontos e (extremos) e num ponto interno

(com sinal contrário)

(5.3)

(5.4)

(5.5)

Clock

Input[31:0]

Recip_Unit[31:0]

Output

Start

Page 70: Tese 1,9 MB

52

Das Eq. (5.3) e (5.4) resulta

(5.6)

O erro máximo no ponto é o ponto em que a derivada da Eq.(5.2) é nula:

(5.7)

Substituindo as Eq. (5.6) e (5.7) em (5.5) ficamos com

(5.8)

Das Eq. (5.3) e (5.4) resulta

(5.9)

Os coeficientes e do polinómio minimax de 1ª ordem que aproxima a função recí-

proco (Eq. (5.1)) são definidas pelas Eq. (5.6) e (5.9), respectivamente.

Calculados os coeficientes, foi preenchida uma tabela para consulta (look-Up table), utili-

zando para tal um bloco RAM de 36K bits. A tabela foi preenchida com 1024 coeficientes e

, com 23 e 13 bits, respectivamente, totalizando 1024 palavras de 36 bits. O intervalo consi-

derado para a tabela foi , o coeficiente com 23 bits fraccionários, mais 1 bit fixo-a-1

para a parte inteira, juntamente com 13 bits (com a estrutura ) para o coeficiente ,

apresentam erros máximos teóricos com precisão de 22 bits fraccionários [20].

O processo para o cálculo do recíproco passa por quatro fases:

Normalização do valor de entrada (operando ) para o intervalo ;

Endereçamento da tabela com , de modo a obter os coeficientes e para o inter-

valo;

Cálculo do polinómio de 1ª ordem conforme Eq. (5.1);

Desnormalização de , para obter o valor correcto de saída.

O processo de normalização consiste no cálculo do valor absoluto e na eliminação dos

zeros à esquerda da palavra binária (corresponde a uma multiplicação por um factor de esca-

la), com posterior adaptação (truncagem ou concatenação de zeros à direita) da palavra

Page 71: Tese 1,9 MB

53

resultante, tal que . O processo de desnormalização restitui o factor de escala e o

sinal original (±). Na Figura 5.12 encontra-se o diagrama interno do bloco recíproco.

Figura 5.12 – Diagrama interno do bloco recíproco.

5.2.6 Raiz quadrada

A unidade de raiz quadrada foi projectada para processar palavras com 32 bits,

baseando-se, à semelhança da unidade de recíproco, no polinómio minimax, para obter uma

aproximação linear por troços. Esta unidade apresenta também uma latência de 8 ciclos de

relógio e inclui um sinal de start. Na Figura 5.13 encontra-se o respectivo diagrama de ligações.

Figura 5.13 – Diagrama de ligações (E/S) da unidade raiz quadrada.

O polinómio minimax de 1ª ordem para aproximar a função raiz quadrada, num intervalo

, foi obtido do mesmo modo que para a função recíproco:

Rinputn

orm

aliz

er

Lo

ok-U

p ta

ble

xi

x

x

x0

x0

R

Ry0

m

R

dx

R

R

de

no

rma

lize

r

outputR

|x|

Sign

stage 4stage 1 stage 2 stage 3 stage 7stage 5 stage 6 stage 8

32 31

23

13

20

31

31 31 32

10

Clock

Input[31:0]

SQRT_Unit[31:0]

Output

Start

Page 72: Tese 1,9 MB

54

O erro de aproximação de

(5.10)

é:

(5.11)

Este método estima a solução da função raiz quadrada, para um intervalo , onde a

função é diferenciável. Segue-se a dedução dos coeficientes e , através do método adop-

tado. Os erros máximos nos pontos e (extremos) e num ponto interno (com sinal

contrário) são dados por:

(5.12)

(5.13)

(5.14)

Das Eq. (5.12) e (5.13) resulta

(5.15)

O erro máximo no ponto é o ponto em que a derivada da Eq. (5.11) é nula:

(5.16)

Das Eq. (5.12) e (5.16) resulta

(5.17)

Os coeficientes e do polinómio minimax de 1ª ordem que aproxima a função raiz

quadrada (Eq. (5.10)) são definidos pelas Eq. (5.15) e (5.17), respectivamente.

Os coeficientes foram armazenados em duas tabelas, com recurso a duas BRAMs de

36Kb. A utilização de uma segunda tabela, deveu-se ao facto de a função raiz quadrada não

variar linearmente, com o factor de escala ( em binário), mas sim exponencialmente ( em

binário). Assim, numa das tabelas estão alojados os coeficientes correspondentes às aproxi-

mações com factor de escala com expoentes ímpares (2, 8, 32, 128, …) e na outra tabela

estão alojados os coeficientes correspondentes às aproximações com factor de escala com

expoentes pares (4, 16, 64, 256, …).

Page 73: Tese 1,9 MB

55

Cada tabela armazena 1024 coeficientes e , com 23 e 13 bits, respectivamente (

com 23 bits fraccionários e com a estrutura ). Os erros máximos teóricos resultantes

desta implementação detêm uma precisão de 26 bits fraccionários [20].

Na Figura 5.14 encontra-se o diagrama interno do bloco de cálculo da raiz quadrada.

Figura 5.14 – Diagrama interno do bloco raiz quadrada.

5.3 Conclusão

Neste capítulo, depois de definidas as dependências de dados e possibilidades de confli-

tos, foram descritas as arquitecturas das unidades de processamento de dados, com ênfase

nas unidades de armazenamento de dados, na unidade de multiplicação vectorial e nas unida-

des de cálculo de recíproco e raiz quadrada.

As unidades de armazenamento de dados baseadas em BRAMs foram a escolha mais

adequada, dada a quantidade de dados a salvaguardar. Considerando o acesso simultâneo

aos dados, que se reflecte na partilha de espaço em memória (as matrizes Q e W e as matrizes

R e B partilham o espaço em memória), para a salvaguarda das matrizes principais (sem con-

siderar variáveis temporárias isoladas), são necessárias 384 palavras binárias, para

representar três matrizes complexas de ordem 8. De modo a retirar melhor rendimento dos

blocos DSP, os elementos da matriz envolvida em mais operações (matriz U) são representa-

dos por palavras de 26 bits, o que implica a utilização de 8 BRAMs para o armazenamento das

8 colunas. Os elementos das restantes matrizes são representados por palavras binárias de 18

bits, permitindo a redução do número de BRAMs para metade, considerando a capacidade de

endereçamento de palavras de 36 bits.

A unidade de multiplicação vectorial consiste num multiplicador de vectores complexos

de 8 elementos. Devido à elevada utilização da unidade, justificou-se a sua implementação

Lo

ok-U

p ta

ble

1

x

x0

x0

R

Ry0

m

R

dx

stage 4

Lo

ok-U

p ta

ble

2

x0

mu

xm

ux

Rinput

no

rma

lize

r

xi

x

|x|

stage 1 stage 2 stage 3

32 31

10

R

R

de

no

rma

lize

r

outputRreal/

imag

stage 7stage 6 stage 8

31

31 31 32

stage 5

13

20

23

Page 74: Tese 1,9 MB

56

com suporte para pipeline e consequente área de hardware ocupada (32 blocos DSP, 4585 flip-

flops e 6008 LUTs).

A unidade de multiplicação vectorial merece destaque por dois motivos: é a unidade que

mais recursos consome e ao mesmo tempo, a unidade mais utilizada ao longo de todo o pro-

cesso.

As unidades de cálculo de recíproco e raiz quadrada são as menos utilizadas (ambas as

unidades são utilizadas oito vezes durante todo o processo), contudo, exigiram algoritmos de

aproximação, que mereceram um estudo/pesquisa aprofundado. Ambas as unidades utilizam

algoritmos de aproximação linear por troços (baseados no polinómio minimax), que permitiram

obter precisões de 22 e 26 bits fraccionários, para os resultados dos cálculos do recíproco e

raiz quadrada, respectivamente. Relativamente aos recursos consumidos, destaca-se a utiliza-

ção de três BRAMs (uma para o cálculo do recíproco e duas para o cálculo da raiz quadrada) e

um bloco DSP por unidade.

Page 75: Tese 1,9 MB

57

6 Resultados

No capítulo anterior foram descritas a arquitectura e as opções assumidas na implemen-

tação do multiprocessador. No presente capítulo são apresentados e analisados os resultados

obtidos ao nível de ocupação de recursos dos dispositivos, desempenho do circuito e precisão

dos dados à saída.

6.1 Recursos e Desempenho

O ambiente de projecto utilizado foi o Xilinx Integrated Software Environment (ISE) 13.2

[21]. Foram analisados os desempenhos do sistema projectado quando mapeado em dispositi-

vos Virtex-4 (XC4VLX25 com speed grade -12), 5 (XC5VLX330T com speed grade -2) e 6

(XC6VLX760 com speed grade -2).

Para a implementação na Virtex-4 foram realizados alguns ajustes, considerando a sua

limitação ao nível dos recursos [24]. Os ajustes passaram principalmente, pela substituição das

BRAMs de 36Kb por BRAMs de 18Kb (nos casos das unidades de recíproco e raiz quadrada,

foram colocadas BRAMs em paralelo) e compensação com LUTs na unidade de multiplicação

vectorial, face à diminuição de blocos DSP. Isto, porque os dispositivos da família Virtex-4 dis-

põem de blocos DSP48 com suporte apenas para multiplicações 18x18, o que implica a

utilização de dois blocos DSP por cada multiplicador da arquitectura desenvolvida, ultrapas-

sando assim o número total de blocos DSP disponíveis do dispositivo XC4VLX25 (48) [25].

A Tabela 6.1 sumariza os recursos consumidos pelas unidades principais do projecto e

os recursos totais utilizados pelo multiprocessador (dispositivo XC5VLX330T). Na Tabela 6.2

encontram-se os resultados de desempenho, baseados na análise do caminho crítico, obtidos

para os diferentes dispositivos após place & route. A Tabela 6.3 indica o número total de ciclos

de relógio necessários para processar matrizes de diferentes dimensões.

Tabela 6.1 – Recursos consumidos pelo multiprocessador.

Unidade Flip-flops LUTs BRAMS DSP48Es

Subtractor Vectorial 0 896 0 0

Multiplicador Simples 161 209 0 2

Multiplicador Vectorial 4585 6008 0 32

Recíproco 233 393 1 1

Raíz Quadrada 234 467 2 1

Total

(Multiprocessador) 5776 9918 19 36

Page 76: Tese 1,9 MB

58

Tabela 6.2 – Resultados de desempenho para os diferentes dispositivos testados.

Virtex-6 Virtex-5 Virtex-4

Caminho crítico (ηs) 5,98 6,23 8,37

Frequência máxima (MHz) 167,1 162,5 119,5

Tempo de Execução (µs) 2,90 3,02 4,06

Tabela 6.3 – Total de ciclos de relógio necessários para o processamento das diferentes dimensões das matrizes.

Dimensão da Matriz 2x2 3x3 4x4 5x5 6x6 7x7 8x8

Ciclos de Relógio 120 178 236 298 360 422 485

Em suma, no que diz respeito aos recursos dispendidos, o projecto utiliza 5776 flip-flops,

9918 LUTs, 19 BRAMs (das quais, 16 são utilizadas para armazenamento de variáveis) e 36

DSPs. A frequência máxima obtida após place & route foi 167MHz, 162.5MHz e 119.5MHz, na

Virtex-6, Virtex-5 e Virtex-4, respectivamente.

De modo a obter máxima flexibilidade, o projecto foi desenvolvido para permitir a inver-

são de matrizes quadradas com diferentes dimensões. O número de recursos é fixo para

matrizes de dimensão até 8x8, contudo, o número de ciclos pode ser modificado. Assim, depois

de seleccionada a dimensão da matriz, aquando da síntese do circuito são activa-

das/desactivadas determinadas instruções, o que conduz à adição/eliminação de estados na

máquina de controlo e por consequência, ciclos de relógio.

Como se pode verificar na Tabela 6.3, o número de ciclos de relógio necessário para

completar uma inversão matricial, varia linearmente com a dimensão das matrizes, com um

rácio de aproximadamente 60 ciclos de relógio por número de linhas/colunas da matriz.

O tempo total de execução, obtido através da multiplicação do período mínimo pelo

número de ciclos de relógio necessários para inverter uma matriz de ordem 8, para as Virtex-6

e Virtex-5 é de 2,90µs e 3,02µs, respectivamente. Para a Virtex-4, considerando a adaptação

da arquitectura, o tempo total de execução é de 4,06µs.

A Tabela 6.4 apresenta uma análise comparativa entre os resultados obtidos neste pro-

jecto e os resultados obtidos noutros trabalhos, com implementações em FPGA, referidos

anteriormente na Tabela 2.1. São considerados factores tais como os diferentes formatos utili-

zados, o domínio complexo ou real e a ordem das matrizes que podem ser processadas.

Page 77: Tese 1,9 MB

59

Tabela 6.4 – Comparação entre os resultados obtidos neste projecto, e os resultados obtidos por outros autores, mencionados na Tabela 2.1.

Slices DSP48s BRAMs Tempo Total de

Execução (µs)

Este

Trabalho

Virtex-6 - 8x8 2575

362 19

2,90

Virtex-6 - 4x4 1,41

Virtex-5 - 8x8 2788

3,02

Virtex-5 - 4x4 1,47

Virtex-4 - 8x8 8108 48 22

4,06

Virtex-4 - 4x4 1,98

Irturk et al.

2009 [3]

19 bits 2415

12 1

5,56

26 bits 4656 7,14

32 bits 6540 9,09

Irturk et al.

2008 [7]

QR

11644 12 1

4,34

LU 3,12

Cholesky 3,33

Karkooti e Cavallaro

2006 [4] 9117 22 9 7,69

Eilert et al.

2007 [11]

Matriz Adjunta 1561 0 NR

3

0,96

Partição em Blocos 1716 8 1,20

Analisando os resultados, verifica-se que apenas as implementações de Eilert et al. [11]

apresentam melhor tempo total de execução, mas estas consideram apenas matrizes reais de

ordem 4, com palavras binárias com dimensão de 16 e 20 bits. As restantes implementações

em FPGA, apresentam um tempo total de execução superior ao obtido neste trabalho (2,9µs

para matrizes de ordem 8, no dispositivo XC6VLX760). Relativamente aos recursos utilizados,

considerando a duplicação da ordem das matrizes, a diferença mais significativa verifica-se no

aumento de BRAMs. O baixo número de slices deve-se ao uso considerável de blocos DSP e

BRAMs. O número DSPs deste projecto (36 DSP48Es), considera-se aceitável, tendo em conta

a duplicação da ordem das matrizes, o domínio complexo das mesmas e a diminuição do tem-

po total de execução.

Os factores com maior influência no tempo total de execução obtido foram: o elevado

paralelismo implementado (o número de DSPs utilizados e a sua utilização em pipeline são

exemplo disso); a redução do caminho crítico, ao ponto da implementação de andares de pipe-

line nos DSPs; a salvaguarda dos valores das matrizes em BRAMs, evitando uma utilização

excessiva de registos, mantendo um atraso reduzido no acesso a memória e os métodos de

2 DSP48Es

3 Não referido na bibliografia.

Page 78: Tese 1,9 MB

60

cálculo de recíproco e raiz quadrada, baseados em aproximações por polinómios de primeira

ordem (outros autores, como Irturk 2007 [18], utilizam métodos iterativos que atingem as deze-

nas de ciclos de relógio).

O projecto é facilmente extensível a matrizes de maiores dimensões. Para tal existe um

custo associado ao número de ciclos de relógio (com implicações na unidade de controlo), cujo

aumento segue a relação obtida na Tabela 6.3, com o acréscimo de um ciclo de relógio/andar

de pipeline na unidade de multiplicação vectorial, sempre que a ordem da matriz passa por

(uma vez que a unidade é utilizada em pipeline, o acréscimo é residual). Outro

custo inerente ao aumento da capacidade matricial do projecto diz respeito ao aumento dos

recursos. A Tabela 6.5 apresenta o aumento dos recursos das unidades de dados afectadas

por incremento de uma unidade na ordem das matrizes a processar.

Tabela 6.5 – Aumento dos recursos do projecto com o incremento de uma unidade na ordem das matrizes.

DSP48Es Add_36 Sub_26 Reg_45 Reg_36 BRAMs

Multiplicador Vectorial 4 4 0 4 4 0

Subtractor Vectorial 0 0 1 0 0 0

Armazenamento de Memória 0 0 0 0 0 2

Verifica-se que, por exemplo, a passagem do modelo actual (com suporte para matrizes

de ordem 8), para um modelo com suporte para matrizes de ordem 9 implica um aumento de:

11% do número de DSP48Es;

13% do número de somadores de 36 bits;

6% do número de subtractores de 26 bits;

6% do número de registos de 45 bits;

13% do número de registos de 36 bits;

11% do número de BRAMs.

6.2 Análise de erro e Precisão

Para determinar a precisão dos resultados, foi desenvolvido um modelo em MATLAB,

que obedece à estrutura e critérios definidos no capítulo 4, desde a implementação de vírgula

fixa, dimensão das palavras binárias e truncamentos até à implementação de réplicas das uni-

dades de recíproco e raiz quadrada, referidas nas secções 5.2.5 e 5.2.6, respectivamente.

Depois de verificada a conformidade dos resultados obtidos em simulações comporta-

mentais do multiprocessador, com recurso ao simulador do ISE, com os resultados obtidos no

modelo em MATLAB, foi elaborado um pacote de testes, com o objectivo de avaliar o erro

Page 79: Tese 1,9 MB

61

absoluto e o erro relativo dos resultados (parte real, parte

imaginária e módulo) obtidos pelo processador. Os valores dos erros foram obtidos por compa-

ração dos resultados obtidos pelo modelo do processador ( ) com os valores de referência

obtidos através da função do MATLAB, e calculados com precisão dupla ( ).

Nos testes foram consideradas 500 matrizes de entrada, para as implementações com

os três níveis de risco de overflow (5%, 1% e 0,1%) referidos na secção 4.3. A descrição esta-

tística do erro, para os diferentes riscos de overflow está indicada nas Tabela 6.6, Tabela 6.7 e

Tabela 6.8.

Tabela 6.6 – Descrição estatística do erro para 5% de risco de overflow.

Módulo Parte Real Parte Imaginária

εabsoluto εrelativo εabsoluto εrelativo εabsoluto εrelativo

Média 0,173 0,0197 0,111 0,0376 0,110 0,0357

Mediana 0,402E-04 0,00102 3,64E-04 0,00164 3,71E-04 0,00167

Desvio Padrão 2,11 0,112 1,49 0,707 1,49 0,598

Variância 4,46 0,0126 2,24 0,499 2,24 0,358

Total Resultados Analisados 32000

Tabela 6.7 – Descrição estatística do erro para 1% de risco de overflow.

Módulo Parte Real Parte Imaginária

εabsoluto εrelativo εabsoluto εrelativo εabsoluto εrelativo

Média 0,00251 0,00256 0,00210 0,0114 0,00208 0,00998

Mediana 4,20E-04 0,00103 3,82E-04 0,00166 3,82E-04 0,00163

Desvio Padrão 0,0262 0,00947 0,0193 0,143 0,020 0,111

Variância 6,86E-04 8,96E-05 3,72E-04 0,0203 3,82E-04 0,0124

Total Resultados Analisados 32000

Page 80: Tese 1,9 MB

62

Tabela 6.8 – Descrição estatística do erro para 0,1% de risco de overflow.

Módulo Parte Real Parte Imaginária

εabsoluto εrelativo εabsoluto εrelativo εabsoluto εrelativo

Média 0,0339 0,00838 0,0226 0,0449 0,0229 0,0312

Mediana 8,09E-04 0,00202 7,48E-04 0,00333 7,26E-04 0,00333

Desvio Padrão 0,431 0,046 0,308 1,833 0,309 0,676

Variância 0,186 0,00211 0,0952 3,36 0,0957 0,457

Total Resultados Analisados 32000

Tendo em conta que o erro absoluto pode induzir em conclusões erradas, a análise recai

sobre a percentagem de erro relativo. As 500 matrizes de entrada produziram 32000 resultados

para cada objecto a analisar (módulo, parte real e parte imaginária) em cada nível de risco de

overflow. Como se pode verificar em qualquer uma das tabelas, o erro do módulo dos elemen-

tos de saída é significativamente inferior ao erro dos elementos singulares (partes real e

imaginária), enquanto os últimos dois apresentam distribuições similares para cada nível de

risco de overflow. Verifica-se também que os valores médios não seguem o padrão esperado.

Este fenómeno deve-se ao aumento dos casos de overflow e consequentemente o aumento da

quantidade de erros relativos superiores a 100%, assumindo assim um peso significativo e

falacioso para a média do erro. Por este motivo, considera-se a mediana o dado estatístico que

fornece melhor informação sobre os resultados obtidos. O módulo dos elementos de saída,

obteve uma mediana de erro relativo de 0,102%, 0,103% e 0,202%, para 5%, 1% e 0,1% de

risco de overflow, respectivamente. Os resultados da mediana de erro relativo da parte real

foram 0,164%, 0,166% e 0,333%, para 5%, 1% e 0,1% de risco de overflow, respectivamente.

Por fim, o erro relativo da parte imaginária, apresenta uma mediana de 0,167%, 0,163% e

0,333%. Em todos os casos verifica-se que a variação dos resultados entre os 5% e 1% de

risco de overflow é mínima.

Nas Figura 6.1, Figura 6.2 e Figura 6.3 encontram-se as comparações das distribuições

dos erros relativos do módulo, parte real e parte imaginária. As distribuições encontram-se com

um nível de confiança de 95% e escala logarítmica no eixo do erro relativo, de modo a melho-

rar a legibilidade dos dados.

Page 81: Tese 1,9 MB

63

Figura 6.1 – Distribuição do erro relativo para 5% de risco de overflow.

Figura 6.2 – Distribuição do erro relativo para 1% de risco de overflow.

10-6

10-5

10-4

10-3

10-2

10-1

0

100

200

300

400

500

600

700

800

900

Erro Relativo

Fre

qu

ên

cia

Parte Real

Parte Imaginária

Módulo

10-6

10-5

10-4

10-3

10-2

10-1

0

50

100

150

200

250

300

350

400

Erro Relativo

Fre

qu

ên

cia

Parte Real

Parte Imaginária

Módulo

Page 82: Tese 1,9 MB

64

Figura 6.3 – Distribuição do erro relativo para 0,1% de risco de overflow.

Como se pode verificar pelas figuras, os erros relativos singulares apresentam compor-

tamentos similares, ao passo que a quantidade do erro relativo do módulo demonstra uma

distribuição mais uniforme e tende para zero, para valores de erro consideravelmente mais

baixos. Nas Figura 6.4, Figura 6.5 e Figura 6.6 encontram-se as comparações das distribuições

dos erros relativos para os três níveis de risco de overflow considerados. Pelos mesmos moti-

vos de legibilidade dos dados, as distribuições encontram-se também com um nível de

confiança de 95% e escala logarítmica no eixo do erro relativo.

Figura 6.4 – Comparação do erro relativo do módulo para os três níveis de risco de overflow.

10-6

10-5

10-4

10-3

10-2

10-1

0

50

100

150

200

250

300

350

400

450

Erro Relativo

Fre

qu

ên

cia

Parte Real

Parte Imaginária

Módulo

10-6

10-5

10-4

10-3

10-2

10-1

0

50

100

150

200

250

300

Erro Relativo

Fre

qu

ên

cia

0.1%

1%

5%

Page 83: Tese 1,9 MB

65

Figura 6.5 – Comparação do erro relativo da parte real para os três níveis de risco de overflow.

Figura 6.6 – Comparação do erro relativo da parte imaginária para os três níveis de risco de overflow.

Como seria de prever, os três gráficos apontam para uma maior ocorrência de baixo erro

relativo (valores compreendidos entre 10E-4 e 10E-3), quando o risco de overflow é de 5%. Isto

deve-se ao facto das palavras possuírem mais bits para a parte fraccionária, o que proporciona

mais precisão aos resultados.

O comportamento das curvas dos erros associados aos riscos de overflow de 0,1% e 1%

é relativamente diferente do esperado. As curvas de erro relativo para o risco de overflow de

0,1% atingem valores de erro mais elevados (como seria de esperar tendo em conta o deslo-

10-5

10-4

10-3

10-2

10-1

0

100

200

300

400

500

600

700

800

900

Erro Relativo

Fre

qu

ên

cia

0.1%

1%

5%

10-5

10-4

10-3

10-2

10-1

0

100

200

300

400

500

600

700

800

900

Erro Relativo

Fre

qu

ên

cia

0.1%

1%

5%

Page 84: Tese 1,9 MB

66

camento da vírgula para a direita e consequente perda de bits fraccionários), contudo, para

valores de erro reduzido, as curvas continuam sobrepostas às curvas associadas ao risco de

overflow de 1%. Isto deve-se ao facto do erro associado ao risco de 0,1% de risco de overflow

ter um comportamento mais linear na parte esquerda do gráfico (possuem maiores concentra-

ções de erro reduzido mas em pontos mais espaçados). É importante ainda salientar que as

curvas associadas ao risco de 1% de erro de overflow atingem ocorrências de erros relativos

mais baixos ( 10E-5) que as curvas de erro de precisão associadas ao risco de 0,1% de erro

de overflow.

6.3 Conclusão

O projecto foi mapeado em dispositivos das famílias Virtex-4, 5 e 6, tendo sido obtidos

diferentes resultados consoante as capacidades das FPGAs.

No que diz respeito aos recursos utilizados pelo processador destacam-se os 19 blocos

RAM e os 36 blocos DSP48E, reflectindo a opção por blocos dedicados. Os tempos totais de

execução vão desde os 1,98µs até aos 2,90µs, para processamento de matrizes de ordem 4

implementado em Virtex-4 e matrizes de ordem 8 implementado em Virtex-6, respectivamente.

Considerando os resultados obtidos nos outros trabalhos e os requisitos de tempo da ordem

dos milissegundos, os tempos totais de execução obtidos são extremamente satisfatórios. A

flexibilidade do processador na inversão de matrizes de diferentes ordens e a facilidade de

extensão a matrizes de ordem superior são também aspectos que merecem destaque.

Relativamente aos resultados retirados da análise de precisão, em suma, as medianas

para o risco de 1% e 5% de erro de overflow são bastante próximas, ao mesmo tempo, os ele-

vados valores obtidos para o erro médio com 5% de risco de erro de overflow, indicam não só a

ocorrência de bastantes casos de overflow (previsível), como níveis de erro muito elevados

(superiores a 100%). Tendo em conta todos os aspectos considera-se o risco de 1% de erro de

overflow o mais adequado (permanecendo a capacidade de opção, aquando da síntese do

circuito, conforme os requisitos de utilização).

Page 85: Tese 1,9 MB

67

7 Conclusões e trabalho futuro

Neste capítulo são apresentadas as conclusões finais, as limitações e as contribuições

do trabalho desenvolvido. Em segundo plano são também apresentadas algumas sugestões de

alteração ou complemento, para trabalho futuro.

7.1 Satisfação dos objectivos

O objectivo deste trabalho passava pela especificação, projecto e implementação em

FPGA de um multiprocessador, para inversão de matrizes quadradas complexas, com ordem

igual ou inferior a 8, para aplicar a sistemas de comunicações sem fios multi-antena.

Foram identificados vários algoritmos de inversão matricial. Considerando a melhor satis-

fação de requisitos foi adoptado o algoritmo de decomposição QR baseado no método MGS.

Para a representação aritmética dos valores optou-se pela utilização de vírgula fixa, com com-

plemento para dois para a representação números com sinal. A especificação do MGS foi

meticulosamente articulada, de modo a permitir uma arquitectura optimizada, eficiente, com

elevado nível de paralelismo, de pipeline e de escalabilidade. Foi também realizada uma análi-

se ao erro de overflow que permitiu obter elevada robustez. O tamanho das palavras binárias

armazenadas em memória varia entre 18 e 26 bits, estando o número de bits directamente

relacionado com o tipo de BRAMs e blocos DSP utilizados.

O projecto foi implementado em três dispositivos distintos: XC4VLX25, XC5VLX330T e

XC6VLX760, das famílias Virtex-4, 5 e 6 respectivamente. A quantidade de recursos consumi-

dos pelo dispositivo XC6VLX760 foi: 2575 slices; 36 DSPs e 19 BRAMs. Comparando com

outros trabalhos desenvolvidos, baseados em matrizes com dimensões 4x4, a quantidade de

recursos apresentada é perfeitamente aceitável. A frequência máxima de relógio obtida foi de

167,1MHz na XC6VLX760 e o número total de ciclos de relógio para matrizes de ordem 8 foi

485, totalizando 2,9µs para a conclusão do processamento. O tempo total de execução conse-

guido é substancialmente inferior aos requisitos (na ordem dos milissegundos), considerando a

periodicidade de equalização dos sistemas MIMO-OFDM e é também melhor do que os tempos

obtidos por outros autores, pelo que se pode considerar um resultado extremamente satisfató-

rio.

Qualquer unidade ou conjunto de unidades têm ainda a valência de poderem ser utiliza-

das no processamento de outras operações (desde operações elementares como

multiplicações vectoriais até decomposições QR).

A flexibilidade no processamento de matrizes de diferentes dimensões e a escalabilidade

da arquitectura ao nível dos recursos e dos ciclos de relógio (unidade de dados e unidade de

controlo) conferem também uma mais-valia ao projecto.

Por fim, foi analisada a precisão dos resultados, onde se destacou a implementação com

risco de erro de overflow de 1%, pelo equilíbrio entre o erro de overflow e o erro de precisão,

conseguindo medianas do erro relativo de 0,16% para as componentes reais e imaginárias.

Page 86: Tese 1,9 MB

68

7.2 Trabalho futuro

O trabalho desenvolvido pode ser alvo de modificações em dois aspectos distintos. Um

dos aspectos diz respeito à melhoria da precisão dos resultados. O outro aspecto diz respeito

ao aumento da capacidade do processador.

A precisão dos resultados pode ser melhorada, para tal é necessária a utilização de

palavras binárias com maior número de bits. Consequentemente são afectados o número de

blocos DSP e o número de blocos RAM. No sentido de acompanhar a melhoria na precisão dos

resultados, o desempenho das unidades de cálculo do recíproco e da raiz quadrada também

pode ser melhorado com recurso a aproximações por polinómios de ordem superior.

Quanto à capacidade do processador, como foi referido no capítulo 6, a arquitectura

desenvolvida é facilmente escalável a matrizes de ordem superior, com os respectivos custos

de área de hardware e ciclos de relógio.

Page 87: Tese 1,9 MB

69

Referências

[1] “Inesc-ID”, http://www.inesc-id.pt/, Outubro 2011.

[2] “ESDA”, http://esda.inesc-id.pt/~hcn/, Outubro 2011.

[3] A. Irturk, S. Shahnam, R. Kastner, “An Efficient FPGA Implementation of Scalable Matrix

Inversion Core using QR Decomposition”, UCSD Technical report, San Diego, Março 2009.

[4] M. Karkooti, J. Cavallaro, “FPGA Implementation of Matrix Inversion Using QRD-RLS Algo-

rithm”, Signals, Systems and Computers, 2005. Conference Record of the Thirty-Ninth

Asilomar Conference on, Houston, Março 2006.

[5] F. Henriques, “Transmission of OFDM-UWB radio signals along multimode fiber in in-

building networks”, IST, Lisboa, Dezembro 2010.

[6] “Internt World Stats – Usage and Population Estatistics”,

http://www.internetworldstats.com/emarketing.htm, 2011-10-14.

[7] A. Irturk, B. Benson, A. Arfaee, R. Kastner, “Automatic Generation of Decomposition based

Matrix Inversion Architectures”, ICECE Technology, 2008. FPT 2008. International Confe-

rence on , San Diego, Dezembro 2008.

[8] R.Chang, C. lin, K. Lin, C. Huang, F. Chen, “Iterative QR Decomposition Architecture Using

the Modified Gram-Schmidt Algorithm for MIMO Systems”, Circuits and Systems, 2009.

ISCAS 2009. IEEE International Symposium on, Taiwan, Junho 2009.

[9] “Wireless Communication – Mathematica description of OFDM”,

http://wireless.per.nl/reference/chaptr05/ofdm/ofdmmath.htm#fourier, 2011-10-14.

[10] C. Singh, S. Prasad, P. Balsara, “VLSI Architecture for Matrix Inversion using Modified

Gram-Schmidt based QR Decomposition”, VLSI Design, 2007. Held jointly with 6th Interna-

tional Conference on Embedded Systems., 20th International Conference on, Dallas, Fevereiro

2007.

[11] J. Eilert, D. Wu, D. Liu, “Efficient Complex Matrix Inversion for MIMO Software Defined

Radio”, Circuits and Systems, 2007. ISCAS 2007. IEEE International Symposium on, Linkop-

ing, Junho 2007.

Page 88: Tese 1,9 MB

70

[12] J. Teles, L. Vicente, “Apontamentos de Complementos de Álgebra Linear e Geometria Analí-

tica”, FCTUC, Coimbra, pp. 15-22; 50-56, Maio 2005.

[13] P. Persson, “Introdution to Numerical Methods - Gram-Schmidt Orthogonalization”, MIT,

Massachusetts, Setembro 2007.

[14] G. H. Golub, C. F. V. Loan, “Matrix Computations”. The Johns Hopkins University Press,

Maryland, pp. 223-236, 1983.

[15] M. Mehlhose, Stefan Schiffermuller, “Efficient Fixed-Point Implementation of Linear Equali-

zation for Cooperative MIMO Systems”, EUSIPCO 17th European Signal Processing

Conference, Berlin, Agosto 2009.

[16] P. Luethi, C. Studer, S. Deutsch, E. Zgraggen, H. Kaeslin, N. Felber, W. Fichtner, “Gram-

Schmidt-based QR Decomposition for MIMO Detection: VLSI Implementation and Compara-

tion”, Circuits and Systems, 2008. APCCAS 2008. IEEE Asia Pacific Conference on, Zurique,

Dezembro 2008.

[17] F. Edman, “Digital Hardware Aspects of Multiantenna Algorithms”, Lund University, Lund,

Janeiro 2006.

[18] A. Irturk, “Implementation of QR Decomposition Algorithm using FPGAs”, University of

California, Santa Barbara, Junho 2007.

[19] R. Duarte, H. Neto e M. Véstias, “Double-precision Gauss-Jordan Algorithm with Pivoting on

FPGAs”, Digital System Design, Architectures, Methods and Tools, 2009. DSD '09. 12th Eu-

romicro Conference on, Agosto 2009.

[20] H. Neto, “Polinómio minimax”, IST, Lisboa, Abril 2011.

[21] Xilinx inc.”, http://www.xilinx.com/.

[22] Xilinx, “Virtex-5 Family Overview – DS100 (v5.0)”,

http://www.xilinx.com/support/documentation/data_sheets/ds100.pdf, Fevereiro 2009.

[23] Xilinx, “Virtex-5 FPGA XtremeDSP Design Considerations User Guide – UG193 (v3.4)”,

http://www.xilinx.com/support/documentation/user_guides/ug193.pdf, Junho 2010.

[24] Xilinx, “Virtex-4 Family Overview – DS112 (v3.1)”,

http://www.xilinx.com/support/documentation/data_sheets/ds112.pdf, Agosto 2010.

Page 89: Tese 1,9 MB

71

[25] Xilinx, “XtremeDSP for Virtex-4 FPGAs User Guide – UG073 (v2.7)”,

http://www.xilinx.com/support/documentation/user_guides/ug073.pdf, Maio 2008.

[26] “Mathworks, MATLAB”, http://www.mathworks.com/.

Page 90: Tese 1,9 MB

72

Page 91: Tese 1,9 MB

73

Anexos

A1 Diagrama Interno do multiplicador vectorial

Figura A.1 – Diagrama interno do cálculo da parte real do multiplicador vectorial.

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

stage 4 stage 5 stage 6 stage 7

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

stage 2 stage 3

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

stage 1

real(Input_A1)

real(Input_B1)

imag(Input_A1)

imag(Input_B1)

real(Input_A2)

real(Input_B2)

imag(Input_A2)

imag(Input_B2)

real(Input_A3)

real(Input_B3)

imag(Input_A3)

imag(Input_B3)

real(Input_A4)

real(Input_B4)

imag(Input_A4)

imag(Input_B4)

real(Input_A5)

real(Input_B5)

imag(Input_A5)

imag(Input_B5)

real(Input_A6)

real(Input_B6)

imag(Input_A6)

imag(Input_B6)

real(Input_A7)

real(Input_B7)

imag(Input_A7)

imag(Input_B7)

real(Input_A8)

real(Input_B8)

imag(Input_A8)

imag(Input_B8)

±

±

±

±

±

±

±

±

Output real

real(Out_1)

real(Out_2)

real(Out_3)

real(Out_4)

real(Out_5)

real(Out_6)

real(Out_7)

real(Out_8)

Page 92: Tese 1,9 MB

74

Figura A.2 – Diagrama interno do cálculo da parte imaginária do multiplicador vectorial.

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

stage 4 stage 5 stage 6 stage 7

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

stage 2 stage 3

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

R

stage 1

±

±

±

±

±

±

±

±

Output imag

imag(Out_1)

imag(Out_2)

imag(Out_3)

imag(Out_4)

imag(Out_5)

imag(Out_6)

imag(Out_7)

imag(Out_8)

real(Input_A1)

imag(Input_B1)

imag(Input_A1)

real(Input_B1)

real(Input_A2)

imag(Input_B2)

imag(Input_A2)

real(Input_B2)

real(Input_A3)

imag(Input_B3)

imag(Input_A3)

real(Input_B3)

real(Input_A4)

imag(Input_B4)

imag(Input_A4)

real(Input_B4)

real(Input_A5)

imag(Input_B5)

imag(Input_A5)

real(Input_B5)

real(Input_A6)

imag(Input_B6)

imag(Input_A6)

real(Input_B6)

real(Input_A7)

imag(Input_B7)

imag(Input_A7)

real(Input_B7)

real(Input_A8)

imag(Input_B8)

imag(Input_A8)

real(Input_B8)

Page 93: Tese 1,9 MB

75

A2 Circuito de Demonstração

Este circuito foi concretizado para verificação do funcionamento na FPGA. Ao projecto

desenvolvido foi acrescentada uma interface RS-232, de modo a visualizar no PC (com recurso

ao Hyper Terminal) os dados das memórias de saída do multiprocessador. A FPGA utilizada

nesta fase foi a Virtex-4 XC4VLX25 (FF668 com speed grade de -12).

O processo de configuração e realização da demonstração é resumido nos seguintes

passos:

1. Através de um cabo série straight-through, ligar a FPGA à porta série do PC;

2. Ligar o cabo de programação JTAG do PC à FPGA;

3. Configurar uma aplicação de comunicação (por exemplo o Hyper Terminal) como indi-

ca a Figura A.3.

Figura A.3 – Configuração da porta série do PC.

4. Ligar a fonte de alimentação da FPGA;

5. Com o ISE aberto, abrir a aplicação iMPACT;

6. Seleccionar “create a new project (.ipf)” (definir um nome para o projecto), clicar em

“OK” e por fim em “Finish”;

7. Na janela “Assign New Configuration File”, clicar em “Bypass” e seleccionar o ficheiro

do circuito de demonstração “demo.bit” gerado pelo ISE;

Page 94: Tese 1,9 MB

76

8. Na janela “Device Programming Properties” seleccionar “Device X (FPGA, xc4vlx25)” e

clicar em “OK”;

9. Na janela principal, clicar com o botão direito do rato sobre V4 e seleccionar “Program”;

10. Depois do iMPACT reportar “Program Succeeded”:

a. Premir o botão RESET (SW3);

b. Premir o botão START (SW4);

11. Visualizar o resultado da inversão matricial, proveniente das BRAMs memZi, na sessão

do Hyper Terminal.

NOTA:

Os valores dos elementos das matrizes de entrada são inicializados directamente nas

memX1, memX2, memX3, memX4, memX5, memX6, memX7 e memX8, através de uma atri-

buição genérica (para efeitos de teste). Para visualizar no Hyper Terminal os resultados da

inversão de outras matrizes, basta alterar o generic map das memXi, refazer o “Implement

Design” e o “Generate Programming File” no ISE, e, regressar ao passo 7.

O circuito de demonstração especificado envia os dados através do sinal TXD e lê-os

das memórias de saída (memZ1, memZ2, memZ3 e memZ4). Os dados enviados são lidos das

memórias de saída através dos seus portos A. Na Figura A.4 encontra-se o diagrama de blocos

do circuito e o fluxo de dados entre a FPGA e o PC.

Figura A.4 – Diagrama de blocos do circuito de demonstração com o fluxo de dados entre a FPGA e o PC.

CircuitUART

Component

RS-232

Encode

Hexa Chars

MUX

36 to 4

Hyper Terminal

48 36

PC

Virtex-4 XC4VLX25

12FF668

dataFromMemOutdataTOpc dataFromMemOut_9

TXD

Reset Start

SW3 SW4FPGA pin# [L3] FPGA pin# [T1]

FPGA pin# [AB1]

814E7F6EFF3A2C643

052910E6003CADB9A

0065C...

Page 95: Tese 1,9 MB

77

Os dados são recebidos como uma sequência de caracteres hexadecimais. O multiple-

xer MUX 36:4 tem como função decompor as palavras de 36 bits, provenientes dos portos A de

saída das memZs, em 9 palavras de 4 bits para posterior codificação. A unidade Encode Hexa

Chars converte as palavras hexadecimais de 4 bits em bytes, segundo a representação ASCII,

para posterior expedição byte-a-byte através da unidade UART.

O botão de pressão SW4 (RESET) reinicializa a máquina de estados. O botão de pres-

são SW5 (START) inicia o processamento dos dados. O envio dos dados para o PC é

realizado sequencialmente, imediatamente após o término da inversão da matriz.

Segue-se um exemplo de inversão de uma matriz complexa de ordem 8, para uma tole-

rância de 5% de erro overflow, com os respectivos resultados ideais (função do

MATLAB), resultados obtidos no simulador ISE e resultados obtidos no Hyper Terminal, após

implementação na FPGA (os dados encontram-se todos em representação hexadecimal). A

matriz a inverter encontra-se no formato , as matrizes de saída encontram-se no for-

mato .

Figura A.5 – Matriz de entrada na disposição que é introduzida nas memXi.

00aef34d009b7803000b645a00a5c91d0064bc6a00304ea5003126e900575254

00332ca5006793de00c4d6a1008b3d0800609d4900516f0000d25aee00d786c2

00b43958007339c100c1412000add2f200abe0df0049999a00238ef3009b7e91

006831270072ca58002ad42c00b8937500374bc7001e83e4006e0ded00d538ef

00713a9300756d5d003e282400a2c3ca00bdc5d60017525400b240b800311340

00bfaace005da51200dcac080085c28f00ca57a800f096bc00e346dc0041a36e

0005048100a972470071412000f1f8a100852546009381d80018034700bd07c8

00d35a8600c374bc00fd6a1600fe632000f3055300a5460b006425af009d0e56

0054b5dd00c5326100b013a900357a78005902de00aef34d0086809d003e2824

00ca3d7100a0be0e0083afb80037fcb90053dd98007ac08300c4e3bd00950b0f

006c9eed0059a6b5005bf48800b594af00266666008bedfa0087c1be00eadaba

0051893700c5a1cb00e2617c001b15b500abda5100a3a92a006594af008a6b51

0045326100a978d500bc7e28003c779a00960aa6006cfaad00dc710d0044e3bd

0088bac700eed2890096872b001c154d00704817008b717600cef9db00deb1c4

00327525006a8c1500650b0f001e9100004318fc00a4f766007c226800c3f7cf

00170a3d00f902de0027a0f90010481700d5604200a5b57400c14e3c0043c9ef

{{

{ {{ {

{{

real(A11)imag(A11)

imag(A18) real(A18)

real(A81)

real(A88)

imag(A81)

imag(A88)

{{ real(A14)imag(A14)

{ {imag(A15) real(A15)

Colunas 8-5

Colunas 4-1

Linha 2

Linha 3

Linha 5

Linha 7

Linha 6

Linha 8

Linha 4

Page 96: Tese 1,9 MB

78

Figura A.6 – Matriz inversa obtida em MATLAB.

Figura A.7 – Matriz inversa obtida em simulação (simulador do ISE).

fe6efe41a006e0192ef1cac0c5b0ee6402c9f5787db94fe5ec18ed0bb63d21afd9f423ae

034702a3f00aa3dabb01ff3db7ef5aa40f4013ef054ad0c0d3efd5e807bd73e0172801eb

09c5806bdf7a300e7bfedb82db201caff7b0f5e3c01ae068c3f12afdd0fdee5ff033f579

fee17f1d7f7e0c03de0405c25cf0d083dc6bf936c26aeeeb33db4f0025ffea405d681729

f34001c4e03bec057dfc227dc51fd86c1354fcf4bd303100fc25240d2f01205f46c7e986

fc1cfcfc800754080f01f2c25acfc067efa8052dffcaffd1ac2147051d40f77f7d1ff337

fa48817310bb800a08084640d6cf8dcff9fafed7033d1fedb7dea4f38a3cd3a086380dc2

09b67f076fc463faa0014abd016fa0cc0df201d77d1b1f16e812b6056c8668608c6ff21a

{{ real(A-1

11)imag(A-1

11)

{ {imag(A-1

88) real(A-1

88)

{{ real(A-1

18)imag(A-1

18)

Linha 2

Linha 3

Linha 5

Linha 7

Linha 6

Linha 8

Linha 4

{ {imag(A-1

81) real(A-1

81)

Linha 1

{{ real(A-1

11)imag(A-1

11)

{{ real(A-1

18)imag(A-1

18)

{ {

imag(A-1

88) real(A-1

88)

{ {

imag(A-1

81) real(A-1

81)

Linha 2

Linha 3

Linha 5

Linha 7

Linha 6

Linha 8

Linha 4

Linha 1

Page 97: Tese 1,9 MB

79

Figura A.8 – Matriz inversa obtida no Hyper Terminal, após implementação na FPGA.

Na Figura A.5 encontra-se a matriz complexa de ordem 8 de entrada, segundo a disposi-

ção em que é escrita nas memórias de entrada memXi (uma linha por memória). Na Figura A.6

encontra-se a matriz inversa obtida no MATLAB, com uma disposição propositadamente igual à

disposição obtida na simulação (simulador do ISE). Na Figura A.7 encontra-se a matriz inversa

obtida no simulador do ISE. Como se pode verificar, os valores obtidos na simulação do circuito

são bastante próximos dos valores obtidos no MATLAB. Por exemplo, para o primeiro elemento

da matriz inversa, (parte imaginária concatenada com a parte real) temos X„FE6EFE41A‟ e

X‟FE6F7E418‟, no MATLAB e na simulação, respectivamente. Por fim, na Figura A.8 encontra-

se a matriz inversa obtida no Hyper Terminal. Constata-se que todos os valores coincidem com

os resultados obtidos em simulação. Note-se ainda que os dados obtidos no Hyper Terminal

vêm com uma disposição Hexadecimal simétrica com intervalos de 36 bits, devido ao modo de

leitura das memórias. Por exemplo, o primeiro elemento da matriz (X‟FE6F7E418‟) aparece

como X„814E7F6EF‟.

{{ imag(A-1

11)real(A-1

11) {{ imag(A-1

18)real(A-1

18)

{real(A-1

88) imag(A-1

88)real(A

-181) imag(A

-181){{ {