Cleiber Marques da Silva Uma Arquitetura Reconfigurável Heterogênea para Rádios Definidos por Software utilizando uma Rede-em-Chip FLORIANÓPOLIS 2012 UNIVERSIDADE FEDERAL DE SANTA CATARINA PROGRAMA DE PÓS-GRADUAÇÃO EM AUTOMAÇÃO E SISTEMAS Uma Arquitetura Reconfigurável Heterogênea para Rádios Definidos por Software utilizando uma Rede-em-Chip Dissertação submetida à Universidade Federal de Santa Catarina como parte dos requisitos para a obtenção do grau de Mestre em Engenharia de Automação e Sistemas. Cleiber Marques da Silva Florianópolis, Julho, 2012. Uma Arquitetura Reconfigurável Heterogênea para Rádios Definidos por Software utilizando uma Rede-em-Chip Cleiber Marques da Silva Esta Dissertação foi julgada adequada para a obtenção do tı́tulo de “Mestre” em Engenharia de Automação e Sistemas, Área de Concentração em Controle, Automação e Sistemas, e aprovada em sua forma final pelo Programa de Pós-Graduação em Engenharia de Automação e Sistemas da Universidade Federal de Santa Catarina. Leandro Buss Becker, Dr. Orientador Antônio Augusto M. Fröhlich, Dr. Co-orientador Prof. Jomi Fred Hubner, Dr. Coordenador do Curso Banca examinadora: Prof. Mario de Noronha Neto, Dr. Instituto Federal de Santa Catarina Prof. Carlos Aurélio Faria da Rocha, Dr. Universidade Federal de Santa Catarina Prof. Marcelo Ricardo Stemmer, Dr. Universidade Federal de Santa Catarina iii Aos meus pais e amigos. v AGRADECIMENTOS Em primeiro lugar, gostaria de agradecer aos meus amigos e familiares pelo apoio, confiança e incentivo. Um especial agradecimento ao meu orientador professor Leandro Buss Becker pelo apoio em todos os momentos do desenvolvimento do trabalho. Ao professor Antônio Augusto Fröhlich, pelas oportunidades dadas para realização deste trabalho e a equipe do LISHA por todo o apoio durante a execução do projeto eSDR. vii Resumo da Dissertação apresentada à UFSC como parte dos requisitos necessários para obtenção do grau de Mestre em Engenharia de Automaçãoo e Sistemas. Uma Arquitetura Reconfigurável Heterogênea para Rádios Definidos por Software utilizando uma Rede-em-Chip Cleiber Marques da Silva Junho/2012 Orientador: Leandro Buss Becker, Dr. Co-orientador: Antônio Augusto M. Fröhlich, Dr. Área de Concentração: Controle, Automação e Sistemas Linha de Pesquisa: Arquitetura de Computadores Palavras-chave: Rádios Definidos por Software, Redes-em-Chip e Arquitetura Número de Páginas: xxvi + 86 Rádio definido por Software (SDR) é uma tecnologia que permite a reconfiguração de um sistema de comunicação sem a necessidade de alterar qualquer elemento de hardware utilizando uma abordagem baseada em software. Entretanto o crescimento da complexidade dos novos padrões de comunicação juntamente com a necessidade da redução do consumo de energia são os desafios para as arquiteturas de SDRs. Abordagens utilizando computação reconfigurável com granularidade grossa são bons candidatos para solução dos problemas, pois possuem alta performance e baixo consumo de energia. Neste contexto esse trabalho propõe uma arquitetura heterogênea e reconfigurável para o desenvolvimento de SDRs com FPGAs utilizando uma Rede-em-chip (NoC) para a infraestrutura de comunicação e aceleradores em hardware para o processamento dos principais algoritmos de processamento de sinais. NoC é uma tecnologia emergente para a interconexão em-chip que propõe a solução de problemas de escalabilidade, reuso e controle dos parâmetros elétricos. A arquitetura proposta é basicamente composta por uma interface RF, acelaradores, um bloco de controle e uma interface de comunicação de alta velocidade com um host. Para validar a arquitetura proposta foi desenvolvido um protótipo em FPGA utilizando um PC com GNU Radio como host. Os testes demonstraram uma melhora significativa no desempenho global do sistema em termos de uso de CPU e latência quando comparado com a plataforma USRP. ix Abstract of Dissertation presented to UFSC as a partial fulfillment of the requirements for the degree of Master in Automation and Systems Engineering. Software-defined Radio Heterogeneous Reconfigurable Architecture using a Network-on-Chip Cleiber Marques da Silva June/2012 Advisor: Leandro Buss Becker, Dr. Co-advisor: Antônio Augusto M. Fröhlich, Dr. Area of Concentration: Control, Automation and Systems Research Area: Computer Architecture Key words: Software-defined Radio, Network-on-Chip, and Architecture Number of Pages: xxvi + 86 Software Defined Radio (SDR) is a technology that permit the reconfiguration of a communication system without the need to change any hardware element using a software-based approach. However, the growing complexity of new communication standards together with the need to reduce the consumption energy are the challenges for SDR architectures. Reconfigurable computing using coarse-grained approaches are good candidates to solving SDR issues, because it have high performance and low power consumption. In this context the work proposes a heterogeneous reconfigurable architecture for the development of SDRs with FPGAs that uses a Network-on-Chip (NoC) to enhance the internal communication infrastructure and hardware accelerators to speed DSP-related algorithms. NoC is an emerging technology for on-chip interconnect that proposes the solution of scalability, reuse and control of electrical parameters. The proposed architecture is basically composed of a RF interface, hardware accelerators, a control block and a high speed communication interface with a host. To validate the proposed architecture it was developed a prototype in FPGA using a PC with GNU Radio as host. The performed experiments demonstrate that the proposed solution presents a significant improvement in the total performance of the system in terms of CPU usage and latency when comparing with the off-the-shelf USRP. xi Sumário 1 Introdução 1 1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Visão Geral do Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2 Tecnologias Relacionadas 2.1 Rádios definidos por Software . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.1 Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.1.1.1 RF Front-end . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1.1.2 Digital Down Converter e Digital Up Converter . . . . . . . 8 GNU Radio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1.2 2.1.2.1 2.2 2.3 5 Universal Hardware Driver . . . . . . . . . . . . . . . . . . . 11 Computação Reconfigurável . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.2.1 Dispositivos Reconfiguráveis . . . . . . . . . . . . . . . . . . . . . . . . 13 Network on Chip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.3.1 Arquitetura HERMES . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.3.2 SoCIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.3.3 Æthereal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.3.4 QNoC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.3.5 RTSNoC 20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii 2.3.5.1 Formato dos pacotes na RTSNoC . . . . . . . . . . . . . . . 22 2.3.5.2 Estrutura interna do Roteador . . . . . . . . . . . . . . . . . 23 2.3.5.3 Simulação funcional do roteador . . . . . . . . . . . . . . . . 25 2.3.5.4 Adaptadores de Canais na RTSNoC . . . . . . . . . . . . . . 26 2.4 Desenvolvimento para FPGA em alto nı́vel . . . . . . . . . . . . . . . . . . . 26 2.5 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3 Trabalhos Relacionados 3.1 3.2 3.3 31 Arquiteturas com Processador Central . . . . . . . . . . . . . . . . . . . . . . 31 3.1.1 LeoCore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.1.2 Signal-processing On-Demand Architecture . . . . . . . . . . . . . . . 33 3.1.3 Tomahawk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Arquiteturas Reconfiguráveis . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.2.1 ADRES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.2.2 BUTTER e CREMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.2.3 Arquitetura de Canais para SDR de Múltiplas Camadas . . . . . . . . 37 3.2.4 CRUSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4 Arquitetura Heterogênea e Reconfigurável 41 4.1 Motivações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.2 Arquitetura Proposta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.2.1 Bloco RF Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.2.2 Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.3 Interconexão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.2.4 Aceleradores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.2.5 Interface com o Host . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.3 Fluxo de projeto para nova aplicações . . . . . . . . . . . . . . . . . . . . . . 52 4.4 Resumo da Proposta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 xiv 5 Implementação e Avaliação da Proposta 5.1 Implementação da Arquitetura Proposta . . . . . . . . . . . . . . . . . . . . . 55 5.1.1 FPGA Virtex-6 Xilinx . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 5.1.2 BESDR - Placa Front-End RF . . . . . . . . . . . . . . . . . . . . . . 56 5.1.2.1 Caminhos de Recepção e de Transmissão . . . . . . . . . . . 57 5.1.2.2 Placas filhas . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 5.1.2.3 Módulo de controle para BESDR . . . . . . . . . . . . . . . . 60 Interfaceamento da Proposta com GNU Radio . . . . . . . . . . . . . 60 Avaliação da Arquitetura Proposta . . . . . . . . . . . . . . . . . . . . . . . . 61 5.2.1 Implementação do experimento . . . . . . . . . . . . . . . . . . . . . . 61 Avaliação dos Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 5.3.1 Análise de desempenho . . . . . . . . . . . . . . . . . . . . . . . . . . 64 5.3.2 Análise de latência da RTSNoC . . . . . . . . . . . . . . . . . . . . . . 68 5.3.3 Consumo dos Recursos da FPGA . . . . . . . . . . . . . . . . . . . . . 70 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 5.1.3 5.2 5.3 5.4 6 Conclusões 6.1 55 73 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A Considerações sobre os aceleradores da Arquitetura 74 75 A.1 Fast Fourier Transform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 A.2 Filtro FIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 B Geração ondas FM narrowband 79 Referências Bibliográficas 81 xv Lista de Siglas ADC Analog-to-Digital Converter ADRES Architecture for Dynamically Reconfigurable Embedded Systems AGC Automatic Gain Control AM Amplitude Modulation ANSI American National Standards Institute API Application Programming Interface ARM Advanced RISC Machine ASIC Aplication Specific Integrated Circuit ASIP Application Specifc Instruction Set Processor BESDR Board for Embedded Software-defined Radio BRAM Block RAM CIC Cascaded Integrator-Comb CLICHE Chip-Level Integration of Communicating Heterogeneous Elements CORDIC COordinate Rotation DIgital Computer CRC Cyclic Redundant Check CRUSH Cognitive Radio Universal Software Hardware DAC Digital-to-Analog Converter DCM Digital Clock Manager DCT Discrete Cosine Transform DDC Digital Down Converter xvii DFE Digital Front-end DFT Discrete Fourier Transform DMA Direct Memory Access DSP Digital Signal Processor DUC Digital Up Converter DVB-T Digital Video Broadcasting - Terrestrial EVP Embedded Vector Processor FEC Forward Error Correction FFT Fast Fourier Transform PHY Ethernet Physical Layer FIFO First-In First-Out FIR Finite Impulse Response FMC FPGA Mezzanine Card FPGA Field Programmable Gate Array GbE Gigabit Ethernet GMII Gigabit Medium Independent Interface GMRS General Mobile Radio Service GNU GNU’s Not Unix GPP General Purpose Processor GPS Global Positioning System HDL Hardware Description Language HERS Heterogeneous Reconfigurable System HPC High Pin Count I2C Inter-Integrated Circuit IEEE Institute of Electrical and Eletronic Engineering IF Frequência Intermediária xviii IOB Input Output Block IP Intellectual Property LISHA Laboratório de Integração Software e Hardware LO Local Oscillator LTE 3GPP Long Term Evolution LUT LookUp Table FM Frequency Modulation MAC Media Access Control MDIO Management Data Input/Output MIMO Multiple-Input and Multiple-Output MIT Massachusetts Institute of Technology MPSoC Multiprocessor System on Chip NCO Numerically Controlled Oslitator NoC Network on Chip PCI Peripheral Component Interconnect PGA Programmable Gain Amplifier QNoC Quality of Service NoC RAM Random Access Memory RF Radio Frequency RISC Reduced Instruction Set Computing RPC Remote Procedure Call ROM Read-only Memory RSSI Received Signal Strength Indication RTL Register Transfer Level RTSNoC Real Time Star Network on Chip SDR Software-defined Radio xix SIMD Single Instruction Multiple Data SMA SubMiniature version A SNR Signal-to-Noise Ratio SPI Serial Peripheral Interface SPIN Scalable Programmable Integrated Network SoC System on Chip SoCIN System on Chip Interconnection Network SODA Signal-processing On-Demand Architecture SSB Single-sidedband Modulation SWIG Simplified Wrapper and Interface Generator TDM Time Division Multiplexing UART Universal Asynchronous Receiver Transmitter UDP User Datagram Protocol UHD Universal Hardware Driver USRP Universal Software Radio Peripheral VHDL VHSIC Hardware Description Languange VHF Very High Frequency VHSIC Very High Speed Integrated Circuits VITA VMEbus International Trade Association VLIW Very Long Instruction Word WiMAX Worldwide Interoperability for Microware Access xx Lista de Figuras 2.1 Estrutura básica SDR Ideal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 Estrutura básica de um SDR Real. . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3 Arquiteturas de DDC e DUC [22]. . . . . . . . . . . . . . . . . . . . . . . . . 9 2.4 Flowgrpah tı́pico do GNU Radio. . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.5 Diagrama de blocos da estrutura do UHD [23]. . . . . . . . . . . . . . . . . . 12 2.6 Arquitetura básica de um FPGA [44]. . . . . . . . . . . . . . . . . . . . . . . 14 2.7 Elementos de um bloco lógico programável [44]. . . . . . . . . . . . . . . . . . 14 2.8 Arquiteturas interna de um FPGA Xilinx [73]. . . . . . . . . . . . . . . . . . 15 2.9 Estrutura de um pacote de dados em uma NoC [60]. . . . . . . . . . . . . . . 16 2.10 Topologia NoC Hermes [50]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.11 Roteador da NoC Hermes [50]. . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.12 As duas topologias para SoCIN: mesh e torus . . . . . . . . . . . . . . . . . . 19 2.13 Link SoCIN [74]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.14 Roteador da NoC Æthreal [26]. . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.15 Arquitetura do roteador Quality of Service NoC (QNoC) [8]. . . . . . . . . . 21 2.16 Topologia do roteador RTSNoC. . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.17 Canais de comunicação da RTSNoC. . . . . . . . . . . . . . . . . . . . . . . . 22 2.18 Exemplos de redes RTSNoC. . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.19 Formato dos pacotes da RTSNoC. . . . . . . . . . . . . . . . . . . . . . . . . 23 2.20 Estrutura interna do roteador da RTSNoC. . . . . . . . . . . . . . . . . . . . 24 xxi 2.21 Simulação de envio de pacotes na RTSNoC. . . . . . . . . . . . . . . . . . . . 25 2.22 Uso de adaptadores na interconexão de roteadores e núcleos. . . . . . . . . . 26 2.23 Exemplo de uma máquin de estados para um adaptador RTSNoC. . . . . . . 27 2.24 Fluxo de desenvolvimento utilizando o System Generator. . . . . . . . . . . . 28 3.1 Categorização das soluções em SDR. . . . . . . . . . . . . . . . . . . . . . . . 31 3.2 Arquitetura LeoCore [40]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.3 Visão geral da arquitetura SODA [72]. . . . . . . . . . . . . . . . . . . . . . . 33 3.4 Arquitetura Tomahawk MPSoC [38]. . . . . . . . . . . . . . . . . . . . . . . . 34 3.5 Núcleo da arquitetura ADRES [10]. . . . . . . . . . . . . . . . . . . . . . . . . 35 3.6 Arquitetura Butter e Crema [25]. . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.7 Arquitetura de múltiplos canais [17]. . . . . . . . . . . . . . . . . . . . . . . . 37 3.8 Diagrama do sistema CRUSH [21]. . . . . . . . . . . . . . . . . . . . . . . . . 38 4.1 Exploração de arquiteturas de SDR. . . . . . . . . . . . . . . . . . . . . . . . 42 4.2 Visão geral da arquitetura proposta. . . . . . . . . . . . . . . . . . . . . . . . 44 4.3 Diagrama de blocos da interface RF. . . . . . . . . . . . . . . . . . . . . . . . 46 4.4 Representação gráfica do filtro FIR. . . . . . . . . . . . . . . . . . . . . . . . 47 4.5 Estruturas dos pacotes de configuração e dados. . . . . . . . . . . . . . . . . . 49 4.6 Diagrama de blocos da interface GbE . . . . . . . . . . . . . . . . . . . . . . 51 4.7 Fluxo de projeto de um Software-defined Radio (SDR) para a arquitetura. . . 53 5.1 Digrama de blocos do kit ML605 [28]. . . . . . . . . . . . . . . . . . . . . . . 56 5.2 Exemplo de utilização da BESDR. . . . . . . . . . . . . . . . . . . . . . . . . 57 5.3 Diagrama de blocos da BESDR. . . . . . . . . . . . . . . . . . . . . . . . . . . 58 5.4 Caminhos de Recepção e Transmissão do ADC e DAC. . . . . . . . . . . . . . 59 5.5 Diagrama de Classes simplificado da interface de abstração da arquitetura com UHD e GNU Radio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii 61 5.6 Ambiente de testes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 5.7 Algoritmo de recepção do experimento de teste. . . . . . . . . . . . . . . . . . 63 5.8 Domı́nio da frequência dos 8 canais transmitidos para a realização dos testes. 64 5.9 Ocupação da CPU no cenário de testes . . . . . . . . . . . . . . . . . . . . . . 66 5.10 Ocupação média da CPU no cenário de testes. . . . . . . . . . . . . . . . . . 67 5.11 Número de FFTs por segundo em função do tamanho da janela. . . . . . . . 68 5.12 Diagrama de forma de onda da utilização da RTSNoC. . . . . . . . . . . . . . 69 A.1 Representação gráfica da FFT. . . . . . . . . . . . . . . . . . . . . . . . . . . 76 A.2 Representação gráfica do filtro FIR. . . . . . . . . . . . . . . . . . . . . . . . 76 B.1 Diagrama de blocos para modulador FM narrowband. . . . . . . . . . . . . . 79 xxiii Lista de Tabelas 2.1 Tabela de comparação desenvolvimento FPGA [29]. . . . . . . . . . . . . . . . 29 5.1 Lista dos canais GMRS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 5.2 Análise de tempo para diferentes tamanhos de janela de FFT. . . . . . . . . . 67 5.3 Consumo de recursos para realização do experimento. . . . . . . . . . . . . . 70 xxv Capı́tulo 1 Introdução 1.1 Motivação No decorrer dos últimos anos surgiram uma grande quantidade de padrões e protocolos de comunicação sem fio, aliados com o aumento de poder de processamento, diminuição dos custos e miniaturização dos sistemas computacionais. No entanto, nos sistemas tradicionais de comunicação sem fio muitas funções são implementadas em cadeias de hardware, por exemplo, modulação/demodulação, codificação/decodificação e filtragem. Essas funções são normalmente imutáveis, projetadas para operar em uma frequência fixa e de acordo um padrão especı́fico. Para se comunicar com diferentes terminais sem fio é necessários arranjos distintos de hardware que suportem os vários protocolos e estruturas de comunicação. Neste ponto, mostra-se muito atrativa a possibilidade de se reconfigurar o equipamento, para que este possa oferecer e ter acesso a diversos serviços, sem a necessidade da incorporação de hardware ao dispositivo. Neste contexto, surge a tecnologia de Rádios definidos por Software (SDR - Software-defined Radio) [46], que utiliza uma abordagem baseada em software para implementar os diferentes sistemas de comunicação sem fio, sem a necessidade de alterar qualquer elemento de hardware. Essa estratégia de desenvolvimento possibilita que sistemas de funcionalidade antes definida estaticamente em tempo de projeto sejam trazidos para um domı́nio reconfigurável, isso torna possı́vel, por exemplo, a atualização de padrões de modulações ou protocolos. Outra vantagem proporcionada pelo desenvolvimento dos SDRs é a diminuição dos custos de produção, pois permitem que toda uma famı́lia de produtos de rádio sejam implementadas em uma plataforma comum de hardware. Além disso, reduz o time-to-market para o lançamento de novos produtos, tira proveito do baixo custo de desenvolvimento e reuso do software [34]. 2 1. Introdução Atualmente, exitem várias propostas [2, 17, 38, 40, 72] para implementação de SDRs, as quais utilizam o conceito de distribuição de processamento por unidades heterogêneas como Digital Signal Processor (DSP), Field Programmable Gate Arrays (FPGAs) e General Purpose Processor (GPP). Uma das arquiteturas mais utilizadas e conhecidas é o GNU’s Not Unix (GNU) Radio [62], um framework aberto que juntamente com a plataforma Universal Software Radio Peripheral (USRP) [23], possibilita a criação de rádios funcionais a partir de modelos de alto nı́vel utilizando computadores pessoais. As tecnologias tradicionais de GPP e DSP, são baseadas em um núcleo de execução de instruções sequenciais, falham para atender os requisitos de paralelismo e desempenho para processar elevadas taxas de dados, que são intrı́nsecos de rádios, além de problemas de eficiência energética. Abordagens que utilizam computação reconfigurável como os FPGAs, que são circuitos digitais de funcionalidade reconfigurável, permitem a exploração do paralelismo existentes na aplicações, enquanto um GPP ou DSP fica restrito a execução de uma série de instruções sequencialmente, em hardware é possı́vel sintetizar diversas partes de uma mesma função em paralelo ganhando em desempenho. Sistemas em chip (SoC - System on Chip) consistem de um conjunto de dispositivos (analógicos ou digitais) com função especı́fica reunidos em um mesmo componente de hardware, com o objetivo de se obter um sistema integrado. O método mais comum para interconexão dos componentes em um SoC é o barramento compartilhado, que é um conjunto de conexões comum a um conjunto de dispositivos. Um problema apresentado por esse tipo de interconexão é a possibilidade de realização de uma única transação de comunicação em um dado instante de tempo, o que é um problema para sistemas de processamento paralelo. Como alternativa para as interconexões em SoCs, foram propostas as redes em chip (NoC - Network on Chip). Baseadas em conceitos de computação distribuı́da e redes de computadores, as NoCs apresentam maior escalabilidade e confiabilidade [14]. Nesse tipo de interconexão, cada componente é conectado a um roteador. Todos os roteadores do sistemas são interconectados e são responsáveis por transferir e receber dados dos componentes. Esta dissertação apresenta a concepção de uma arquitetura reconfigurável e heterogênea para SDRs, que utiliza computação reconfigurável para a criação de aceleradores em hardware dos principais algoritmos DSPs utilizados em SDRs e uma NoC como infraestrutura de comunicação entre os blocos. A arquitetura proposta permite o deslocamento de algoritmos comumente utilizadas nas camadas fı́sicas de um rádio integralmente para hardware na forma de aceleradores. Para avaliar a arquitetura proposta foi desenvolvido um protótipo utilizando a Board for Embedded Software-defined Radio (BESDR) e a FPGA Xilinx Virtex-6. Além disso, realizou-se um cenário de testes, que demonstrou uma melhoria significativa no desempenho global do sistema. 1.2. Objetivos 1.2 3 Objetivos O principal objetivo deste trabalho é propor uma arquitetura para rádios definidos por software, que permita a migração dos algoritmos de processamento de sinais digitais para o hardware na forma de aceleradores sem perder a flexibilidade intrı́nseca dos SDRs. A partir deste objetivo principal, são definidos os seguintes objetivos especı́ficos: • Analisar algoritmos comuns às camadas fı́sicas de rádios. • Definir uma infraestrutura de comunicação eficiente para os blocos de processamento heterogêneos, sem a perda de flexibilidade dos blocos de software, garantindo o aproveitamento dos recursos do hardware. • Propor uma arquitetura para configuração e controle dos blocos em hardware. • Definir um fluxo de projeto para de SDRs utilizando a arquitetura proposta. • Testar e analisar a arquitetura proposta levando em consideração alguns parâmetros como desempenho e ocupação da FPGA. 1.3 Visão Geral do Texto O próximo capı́tulo apresenta as tecnologias relacionadas com o desenvolvimento deste trabalho, onde inicialmente é apresentado a fundamentação teórica da tecnologia SDR, as estruturas internas do GNU Radio e os conceitos e arquiteturas de Network on Chips (NoCs). O Capı́tulo 3 é referente ao estado da arte das pesquisas em SDR, apresentado os principais trabalhos relacionados. O Capı́tulo 4 apresenta as principais caracterı́sticas e fundamentos da arquitetura proposta nesta dissertação. O Capı́tulo 5 apresenta a implementação de um cenário de testes para validação da arquitetura proposta e uma avaliação de desempenho comparativa com outras arquiteturas. Finalmente são apresentadas no Capı́tulo 6 as conclusões e propostas de trabalhos futuros. 4 1. Introdução Capı́tulo 2 Tecnologias Relacionadas Neste capı́tulo é feita uma revisão dos principais conceitos e tecnologias relacionados a este trabalho. Primeiramente é apresentado detalhes sobre Rádios definidos por Software, computação reconfigurável, redes-em-chip e suas principais topologias. Por fim, um fluxo para desenvolvimento de projetos em FPGA baseado em modelos. 2.1 Rádios definidos por Software Rádio definido por software (Software-defined Radio (SDR)) [45] é uma tecnologia que tem sido pesquisada nas últimas décadas e que está se tornando uma alternativa aos tradicionais transmissores e receptores de radiocomunicação. Tem como objetivo flexibilizar a implementação dos rádios, ao invés de ter sua funcionalidade definida por meio de componentes de hardware decidido em tempo de projeto, é possı́vel a reconfiguração por meio de módulos de software. O termo SDR foi introduzido por John Mitola III, sua definição é dada como: “A software radio is a radio whose channel modulation waveforms are defined in software. That is, waveforms are generated as sampled digital signals, converted from digital to analog via a wideband DAC and then possibly upconverted from IF to RF. The receiver, similarly, employs a wideband Analog to Digital Converter (ADC) that captures all of the channels of the software radio node. The receiver then extracts, downconverts and demodulates the channel waveform using software on a general purpose processor [48].” Em uma maneira mais simplificada, um rádio definido por software é um transceptor de rádio que tem seu princı́pio de funcionamento sendo executado através de um software, 6 2. Tecnologias Relacionadas podendo ter seu funcionamento alterado com uma simples atualização deste mesmo software, sem a necessidade de alteração nenhuma de hardware. O objetivo principal dessa tecnologia é conceber um rádio que virtualmente possa se comunicar com qualquer nova tecnologia de rede sem fio apenas atualizando o software, ou seja, a ideia é colocar o software mais próximo da antena e utilizá-lo para filtrar, modular, demodular e executar outros estágios da transmissão e recepção. Pode-se destacar as seguintes vantagens na utilização de um SDR [64]: • Multifuncionalidade: atualmente existem diversos padrões de comunicação sem fio. Um rádio reconfigurável pode adaptar-se aos diversos padrões, enquanto um rádio tradicional precisa implementar todos os padrões simultaneamente. • Flexibilidade: ao contrário dos rádios tradicionais, existe a possibilidade de realizar correções de falhas e atualizações de funcionalidades. • Facilidade de produção: com as funcionalidades desenvolvidas por software, não há necessidade de uma grande quantidade de componentes discretos, com um processador de alto desempenho é possı́vel executar diversos estágios da cadeia de processamento do rádio. O conceito de SDR não deve ser confundido com rádios baseados ou controlados por software, pois hoje, praticamente todos os rádios se utilizam de software em sua concepção. Estes rádios baseados ou controlados por software necessitam de ajustes no hardware para qualquer mudança em interfaces baseadas em software [71]. Ou seja, com o software podem ser controlados parâmetros do rádio como frequência de operação, modo de operação (Amplitude Modulation (AM), Frequency Modulation (FM), Single-sidedband Modulation (SSB)), controle de ganho, etc. O software é só uma interface para ajustes no próprio hardware. 2.1.1 Arquitetura Ao propor os rádios definidos por software em 1992, John Mitola III comenta sobre o SDR Ideal (figura 2.1) [47]. Nesse rádio, o sinal seria digitalizado imediatamente após ser recebido pela antena e imediatamente antes de ser transmitido por ela, e todas as etapas de processamento Radio Frequency (RF) e de sinais seriam executadas diretamente em software. ç Algumas limitações impedem que o modelo ideal de SDR seja implementado, os requisitos necessários de Analog-to-Digital Converter s (ADCs) e Digital-to-Analog Converter s (DACs) ficam muitos além dos limites práticos existentes no que se refere a taxa de amostragem, largura de banda e faixa dinâmica. Segundo o teorema de Nyquist, um sinal analógico que foi amostrado só pode ser reconstruı́do sem perdas a partir das suas amostras se a sua taxa 2.1. Rádios definidos por Software 7 Figura 2.1: Estrutura básica SDR Ideal. de amostragem for pelo menos duas vezes maior que a maior frequência do sinal original [36], ou seja: fs ≥ 2B, (2.1) onde fs é a frequência de amostragem e B é a maior frequência do sinal. Por exemplo, para amostrar um sinal na faixa de 2,4 Ghz, seria necessário uma frequência de amostragem de 4,8 GHz. Contudo, existem limitações quanto à capacidade de amostragem e os custos dos ADCs de alta taxa. Além disso, a grande capacidade computacional necessária para processar diretamente o sinal torna essa alternativa inviável. Para solução desses problemas são feitas algumas alterações do sinal via hardware, enquanto diferentes processadores, tais como FPGAs, DSPs e processadores de propósito geral ficam encarregados do processamento do software, para implementação de um modelo real de SDR. A solução então é filtrar a janela de frequência desejada e convertê-la para uma Frequência Intermediária (IF), para então ser amostrada pelo ADC. A figura 2.2 apresenta os blocos da estrutura básica de um SDR real. Figura 2.2: Estrutura básica de um SDR Real. 2.1.1.1 RF Front-end Nos SDRs reais são adicionadas interfaces analógicas entre a antena, ADC e DAC, chamada de RF front-end. Este bloco é responsável por captar e preparar os sinais para conversão analógico/digital e preparar os sinais para transmissão após a conversão digi- 8 2. Tecnologias Relacionadas tal/analógico. A preparação dos sinais é feita através da amplificação dos sinais, controle de ganho, filtragem anti-aliasing 1 e deslocamento para uma IF (no caso de recepção) ou para frequência original do sinal (no caso de transmissão). O deslocamento do sinal para uma recepção é realizado seguindo a proposta de Edwin Armstrong descrita em [31]: VIF = VRF − VLO , (2.2) VIF = VRF + VLO , (2.3) deslocamento para transmissão: onde é VIF é a frequência intermediária, VRF é a radio frequência e o VLO é o Local Oscillator (LO). Por exemplo, para digitalizar um sinal que está na faixa de 87,5-108 M Hz, o front-end seleciona uma janela de 6 M Hz e desloca para a IF 0-6 M Hz. Dessa forma, o sinal pode ser amostrado por ADCs com um custo menor. As topologias mais utilizadas para transladação dos sinais são: conversores super heteródino, direto e múltiplo. 2.1.1.2 Digital Down Converter e Digital Up Converter Os SDRs reais ainda possuem um estágio antes da conexão com o processador. Normalmente apenas uma faixa do sinal amostrado pelo ADCs é necessária, por isso esses sistemas incluem um Digital Down Converter (DDC) e um Digital Up Converter (DUC) que em comparação pode ser chamado de um Digital Front-end (DFE). O DDC é responsável por converter a frequência intermediária para uma frequência em banda base. Seu funcionamento consiste em mixar a IF em quadratura com duas sinusoides, geradas por um oscilador local, decompondo assim o sinal em componentes complexas. Para selecionar a faixa de frequência de interesse, o sinal passa por um filtro passa-baixas decimador, reduzindo assim a taxa de dados enviados ao processador [66]. A figura 2.3a apresenta a arquitetura de um DDC. O DUC tem a função contrária do DDC, ele transporta o sinal em banda base, para frequência intermediária novamente. O sinal complexo é interpolado, para obter um número maior de amostras, depois é mixado com duas sinusoides em quadratura convertendo o sinal de complexo para real. O RF front-end finalmente transmite o sinal na sua frequência original. A figura 2.3b apresenta a arquitetura de um DUC. As sinusoides comentadas nos parágrafos são geradas pelo Numerically Controlled Oslitator (NCO) que, basicamente, tem como entrada um clock e um incremento de fase, a cada 1 Um filtro anti-aliasing consiste em um filtro passa-baixas com frequência de corte igual ou menor que a metade da frequência de amostragem, com o intuito de retirar componentes de frequências indesejadas sobreponham o espectro do sinal amostrado. 2.1. Rádios definidos por Software 9 (a) Arquitetura de um DDC (b) Arquitetura de um DUC. Figura 2.3: Arquiteturas de DDC e DUC [22]. ciclo do clock ele incrementa o seu acumulador de fase e apresenta na saı́da o seno e o cosseno da fase armazenada no acumulador [65]. O NCO pode ser implementado em várias arquiteturas, como uma tabela de look-up em uma memória Read-only Memory (ROM) ou utilizando um algoritmo COordinate Rotation DIgital Computer (CORDIC) [41]. O CORDIC é um algoritmo numérico que calcula funções trigonométricas através de rotações fasoriais iterativas, calculando coordenadas cartesianas de um vetor que roda sobre um ângulo arbitrado, e é de excelente desempenho e uma saı́da para sistemas que não possuem memória interna [3]. 2.1.2 GNU Radio O GNU Radio [62] é um framework de software livre, derivado do projeto SpectrumWare [69] do Massachusetts Institute of Technology (MIT), para desenvolvimento de SDRs em computadores pessoais combinados com um hardware para conversão analógica/digital e RF front-end. O GNU Radio suporta o uso de vários dispositivos como RF front-end, entre eles USRP [23]. Segundo Eric Blosson, um dos fundadores do projeto, o GNU Radio tem como objetivo 10 2. Tecnologias Relacionadas “trazer o código mais próximo possı́vel da antena, transformando assim problemas de hardware em problemas de software [22].” O GNU Radio disponibiliza uma biblioteca que possui blocos para processamento digital de sinal, conta com funções básicas até algoritmos completos de filtros, (de)moduladores, (de)codificadores, etc. A biblioteca permite conectar os blocos para formar um SDR. Os blocos do GNU Radio permitem realizar uma abstração da camada fı́sica de um rádio em um grafo acı́clico, onde os nodos representam os blocos de processamento e as arestas o fluxo dos dados entre os nodos. A figura 2.4 apresenta um exemplo de um flowgraph de uma cadeia de recepção, onde, os dados saem do nodo inicial, o Audio Source, e vão fluindo através dos blocos de processamento, sofrendo transformações até chegar no nodo final. Figura 2.4: Flowgrpah tı́pico do GNU Radio. Conceitualmente, um bloco de processamento processa um fluxo infinito de dados, fluindo das suas portas de entrada para as suas portas de saı́da. A única restrição existente para o fluxo de dados é que eles não podem conter laços (loops), significa que a parte que contém loop deve ser construı́da completamente dentro de um bloco [52]. As portas dos blocos de entrada e saı́da servem como fontes e sumidouros de dados no grafo. Por exemplo, há fontes que lêem dados de um arquivo ou de um ADC, e sumidouros que escrevem em um arquivo, DAC ou em um display gráfico. A estrutura interna do GNU Radio é formada basicamente por quatro componentes [18] [43]: Blocos de processamento: são os componentes que efetivamente atuam sobre o stream e podem ser dividos em três classes: Normal, Fonte e Sumidouros. A grande maioria dos blocos é do tipo Normal, os quais possuem entradas, saı́das e são responsáveis pelo processamento do sinal nas fase intermediárias do flowgraph. Os blocos Fontes possuem somente saı́da e iniciam o flowgraph. Os blocos Sumidouros possuem somente entrada e consomem a stream processada. Controlador de flowgraph: é responsável pela abstração do fluxo de dados, ou seja, a sequência de como o sinal é processado pelos blocos e as conexões entre eles sendo utilizado para construção do flowgraph. Buffer de Dados: é responsável pela alocação dos buffers entre os blocos. A função define o tamanho dos buffers considerando a taxa relativa de consumo e produção e os tamanhos dos dados de entrada e saı́da. Cada buffer é implementado como uma FIFO o que possibilita múltiplas portas de leitura e uma única porta de escrita. 2.1. Rádios definidos por Software 11 Escalonador: é responsável por movimentar os dados pelo flowgraph, passando repetidas vezes por cada bloco, ele verifica se há dados suficientes na entrada e espaço suficiente na saı́da. Se esses requisitos forem satisfeitos o método work do bloco é chamado. A implementação do GNU Radio é feita em linguagem C++ e Python, e utiliza o Simplified Wrapper and Interface Generator (SWIG) para criar interfaces entre ambas. A linguagem C++ é utilizada para programação onde é necessário desempenho, como nos blocos de processamento de sinais. Já a linguagem Python é utilizada para conexão dos blocos de processamento de sinais. Essa abordagem oferece uma interface de alto nı́vel ao desenvolvedor e um bom desempenho através da execução nativa dos blocos de processamento. As principais vantagens do GNU Radio estão na utilização de plataforma de uso geral o que facilita a instalação e desenvolvimento, na quantidade de blocos de processamento de sinal disponı́veis e na grande comunidade de software livre que suporta o framework. As desvantagens surgem a partir das próprias caracterı́sticas básicas. Devido as aplicações serem executadas em computador pessoal com um sistema operacional de propósito geral e se comunicando com RF front-ends através de barramentos compartilhados [51]. O uso desse tipo de sistema insere um atraso não-determinı́stico na cadeia de processamento, o que impossibilita a implementação eficiente das camadas mais altas dos protocolos que possuem requisitos de tempo precisos [56]. 2.1.2.1 Universal Hardware Driver O Universal Hardware Driver (UHD) é um componente mais recente [23], o qual provê uma Application Programming Interface (API) e device drivers para plataformas de aquisição de dados para SDRs, desenvolvidas pela empresa Ettus Research, que normalmente são utilizados com o GNU Radio. O UHD foi criado com o intuito de criar uma interface padrão para as diferentes plataformas existentes. Com uma API bem definida permite a portabilidade para diversas plataformas, atualmente suporta os sistemas operacionais Linux, Windows e MAC OSX, além de permitir portabilidade para diversas aplicações. A figura 2.5 apresenta um diagrama em blocos da estrutura interna e funcionamento do UHD. A API do UHD tem definido um canal de comunicação um para o envio e recebimento de dados e outro para mensagens de controle. Por meio dos canais de controle e comunicação é possı́vel: • Encontrar dispositivos. • Configurar propriedades dos dispositivos como: ganho, frequência central, taxa de transmissão, seleção de antena e front-end. 12 2. Tecnologias Relacionadas Figura 2.5: Diagrama de blocos da estrutura do UHD [23]. • Detectar erros no stream como: overflow, underflow, erros de sequência. • Sincronização de streams com timestamps para sistemas Multiple-Input and MultipleOutput (MIMO). O UHD tem suporte ao padrão VMEbus International Trade Association (VITA)-49 que define a transferência de dados de uma IF digital entre os equipamentos de aquisição e de processamento do sinal. O padrão tem o intuito de proporcionar interoperabilidade entre os diversos fabricantes. O padrão define um pacote para o stream foi projetado para diminuir o overhead das mensagens, suporta multi-canais e sincronização [61]. 2.2 Computação Reconfigurável Atualmente, observa-se um grande número de aplicações que necessitam de recursos computacionais especı́ficos. Os processadores de uso geral ou DSPs não conseguem resolver eficientemente esses problemas devido as generalidades de suas estruturas internas. Já as soluções implementadas totalmente em hardware (ASIC) apresentam problemas em relação a flexibilidade, reusabilidade e time-to-market. Nesse contexto, a computação reconfigurável surge como um paradigma de computação que combina o hardware com a flexibilidade do software utilizando hardwares reconfiguráveis [70]. Possibilita uma maior flexibilidade e desempenho em relação aos paradigmas de hardware e software, como também uma efetiva melhora de eficiência, custo, generalidade e 2.2. Computação Reconfigurável 13 tolerância a falhas [13]. A utilização de computação reconfigurável é vantajosa para sistemas de alto desempenho, pois, permite explorar múltiplos nı́veis de paralelismo [67]. As arquiteturas reconfiguráveis são formadas por blocos (módulos) lógicos que reproduzem unidades funcionais de processamento, armazenamento, comunicação. As arquiteturas reconfiguráveis não necessariamente precisam ser todas as partes reconfiguráveis, por isso, podem ser hı́bridas. Entre as principais caracterı́sticas das arquiteturas reconfiguráveis, podem ser destacadas: Granularidade: essa caracterı́stica está relacionada aos elementos de processamento, podese definir arquiteturas reconfiguráveis em granularidade fina e grossa. Por granularidade fina, entende-se que a unidade reconfigurável mı́nima seja composta por elementos bastante simples, por exemplo a nı́vel de bit. Enquanto, a granularidade grossa é aquela se se da em menor escala e o sistema é composto de grandes blocos dispostos em uma organização previamente definida. Reconfiguração: essa caracterı́stica está relacionada à capacidade de realizar uma ou várias configurações. O tipo da reconfiguração estática ou dinâmica, parcial ou total, local ou remota. A configuração estática está relacionada com a configuração do dispositivo antes desse começar a fazer a computação dos dados, caso seja necessário reconfigurar, para que se tenha outra funcionalidade, o dispositivo para de executar as operações e é reconfigurado. Já a reconfiguração dinâmica o dispositivo realiza uma reconfiguração de uma área, onde não esta sendo processado dados, paralelamente à execução de operações de computação [30]. Interconexão: essa caracterı́stica está relacionada a forma de conexão entre os diversos elementos de processamento. Podendo ser classificadas como conexões dedicadas e barramentos compartilhados. As conexões dedicadas são um conjunto de ligações diretas entre componentes que irão se comunicar. Os barramentos compartilhados são quando um conjunto de núcleos compartilha um mesmo conjunto de conexões e normalmente são controlados por uma lógica de arbitragem. No contexto de SDRs as arquiteturas reconfiguráveis representam um papel importante e são largamente utilizadas principalmente na realização do RF front-end digital. Nessa etapa há uma alta vazão de dados e são realizadas as funções de DDC e DUC e outras com caracterı́sticas paralelas como separação de canais [20] [43]. 2.2.1 Dispositivos Reconfiguráveis Um Field Programmable Gate Array (FPGA) é um dispositivo programável que possui blocos e conexões que podem ser programadas. Esse dispositivo permite a implementação 14 2. Tecnologias Relacionadas de circuitos lógicos que consistem de um arranjo dos blocos e interconexões, contidos num circuito integrado. Sua configuração pode ser alterada sem que tenham que ser retirados do circuito eletrônico, a capacidade atual dos FPGAs está na faixa de milhões de portas lógicas [30]. Um FPGA tı́pico é composto por três componentes básicos: blocos lógicos, chaves de interconexão e blocos de entrada e saı́da. A estrutura genérica da estrutura é apresentada na figura 2.6. Figura 2.6: Arquitetura básica de um FPGA [44]. Os blocos lógicos são implementados através de uma estrutura chamada de LookUp Table (LUT), que representam uma a tabela-verdade de uma determinada função lógica, um multiplexador e um flip-flop. A figura 2.7 mostra um exemplo de um bloco lógico. A tabelaverdade é implementada através de uma memória interna e um multiplexador que traduz as entradas para o elemento correspondente desta memória interna. Figura 2.7: Elementos de um bloco lógico programável [44]. 2.2. Computação Reconfigurável 15 Os FPGAs comerciais possuem outros blocos na sua composição não somente LUTs, que implementam funções puramente combinacionais. Esses FPGAs possuem uma matriz de blocos lógicos configuráveis, cercados por uma rede de interconexão programável, formada por blocos de interconexão. Circundando todo o circuito, existem os Input Output Block s (IOBs), que também são programáveis e que servem como interface com o mundo exterior [70]. Atualmente, também existem nos FPGAs uma área de memória interna Block RAM (BRAM) e blocos para gerenciamento de clock. Os Digital Clock Manager s (DCMs) fornecem opções para tratamento de sinais de clock, como multiplicação, divisão, calibração e o deslocamento de fase. Além disso é comum encontrar blocos que exercem funções especı́ficas de processamento de DSP, tais como somadores e acumuladores, pois os FPGAs são amplamente utilizados neste domı́nio de aplicação. A figura 2.8 apresenta a estrutura de um FPGA comercial do fabricante Xilinx. Figura 2.8: Arquiteturas interna de um FPGA Xilinx [73]. A configuração do comportamento do FPGA, pode ser feita através de uma Hardware Description Language (HDL). Depois que o circuito foi projetado em HDL ele é sintetizado independente de plataforma gerando o netlist. O próximo passo, no fluxo de geração da configuração do FPGA, é o mapeamento das estruturas em um dispositivo, este processo é denominado place-and-route. O place-and-route é uma parte importante desta cadeia, pois esta diretamente ligado com o desempenho e a melhor utilização da área do dispositivo . Ao final é gerado um arquivo binário que configura o FPGA (bitstream) [13]. Atualmente, as linguagens de descrição de hardware mais utilizadas são o Verilog e VHSIC Hardware Description Languange (VHDL). Essas linguagens são de grande utilidade, pois permitem definir o comportamento do hardware em alto nı́vel. VHDL é um acrônimo de Very High Speed Integrated Circuits (VHSIC) + HDL surgiu na de década de 1980 e em 1987 foi aprovada como padrão da Institute of Electrical and Eletronic Engineering (IEEE) [5]. 16 2. Tecnologias Relacionadas 2.3 Network on Chip Em barramentos compartilhados, um conjunto de núcleos compartilha uma mesma in- terconexão. Há uma perda de desempenho devido ao fato que somente um núcleo por vez pode acessar o barramento, pode-se utilizar outras topologias de barramento como hierárquicos, em anel ou crossbars [60]. Em um ambiente com diversos núcleos em barramento compartilhado, uma série de problemas surge, como [7]: • dificuldades para dissipação de energia. • efeitos na integridade do sinal causados pelo aumento do ruı́do, interferência eletromagnética. • atraso não-determinı́stico na propagação sinais. Para solucionar os problemas dos barramentos compartilhados foi proposto as Network on Chip (NoC) [6]. Em uma NoC, os núcleos são conectados a um comutador (switch) e realizam a comunicação por meio de troca de mensagens. Os comutadores estão conectados em uma malha (mesh) bidimensional o que permite a comunicação entre os núcleos. São utilizados dois termos para definir os campos dos pacotes em uma NoC. O termo flit é utilizado para identificar os bits onde serão executadas as ações de controle de fluxo nos enlaces. O corpo de um flit em blocos denominados phit, como apresentado na figura 2.9. O tamanho de um phit em bits corresponde à largura do enlace de comunicação entre dois comutadores [60]. Figura 2.9: Estrutura de um pacote de dados em uma NoC [60]. A disposição dos núcleos pode determinar o grau de escalabilidade e o desempenho de um sistema utilizando NoC. A seguir é apresentado as topologias utilizadas encontradas na literatura para construção de NoC: 2.3. Network on Chip 17 CLICHE: é uma topologia simples, Chip-Level Integration of Communicating Heterogeneous Elements (CLICHE) [35] é uma rede em mesh bidimensional, cada roteador é conectado a um núcleo. A facilidade de roteamento da topologia ajuda diminuir o tamanho do roteador, aumenta a capacidade dos canais fı́sicos e melhora a escalabilidade. Torus: uma topologia similar à mesh, exceto pelo fato de possuir interconexão que ligam os componentes das extremidades superior com a inferior, e os das direita com os da esquerda [14]. Butterfly Fat Tree: nessa topologia os núcleos estão dispostos em forma de uma árvore, cada nó é representado por um conjunto de coordenadas nı́vel e posição. Cada roteador é conectado a outros dois roteadores do nı́vel acima e a quatro “filhos” no nı́vel abaixo, que podem ser outros roteadores ou núcleos e são chamadas de “folhas” [58] SPIN: esta topologia Scalable Programmable Integrated Network (SPIN) [27] é semelhante com a Butterfly Fat Tree. Para uma árvore com “N” núcleos, existem um total de 3N/4 roteadores na árvore, todos os nı́veis de roteadores possuem o mesmo número de roteadores. O tamanho da rede cresce na proporção de (N logN )/8. A abordagem desta topologia é a preservação data taxa de transmissão no dois sentidos Octogonal: esta topologia nenhum componente necessita mais do que dois saltos para se comunicar com outro componente. O modelo básico desta topologia é em anel com oito componentes. Essa topologia possui vantagens na implementação do algoritmo de roteamento e alta taxa de comunicação [33]. Como vantagens do uso de uma NoC pode-se destacar o reuso, a alta escalabilidade, melhor controle dos parâmetros elétricos, devido a estrutura das interconexões. Como desvantagens o consumo de energia nos comutadores, latência de comunicação e o sobre custo de área em silı́cio para geração dos comutadores. No restante seção são apresentadas algumas implementações de NoC existentes e as abordagens que cada implementação enfoca. As implementações apresentadas abordam questões particulares de NoC, tais como, topologia, modularidade, reusabilidade entre outros. 2.3.1 Arquitetura HERMES HERMES é uma infraestrutura para NoC que faz o uso de roteadores bastante simples para proporcionar um menor sobrecusto de área. O mecanismo de comunicação é o de comutação de pacotes e a topologia do tipo mesh [50]. A topologia da HERMES é mostrada na figura 2.10 O roteador HERMES possui uma unidade lógica de roteamento e cinco portas bidirecionais: Norte, Sul, Leste e Oeste, para conexões com outros roteadores, uma Local para 18 2. Tecnologias Relacionadas Figura 2.10: Topologia NoC Hermes [50]. estabelecer comunicação com o núcleo. Cada porta possui um buffer para armazenar dados temporariamente, caso o destino esteja ocupado ou eventuais problemas de conexão. A unidade lógica implementa o roteamento, lógica de arbitragem e o algoritmo de comutação de pacotes. A figura 2.11 apresenta o roteador da NoC HERMES. Figura 2.11: Roteador da NoC Hermes [50]. 2.3.2 SoCIN A NoC System on Chip Interconnection Network (SoCIN) [74] foi desenvolvida pela Universidade Federal do Rio Grande do Sul. Pode ser construı́da utilizando topologias 2D tanto em mesh quanto torus, como apresentado na figura 2.12. As interconexões desta NoC possuem dois canais unidirecionais, cada um com seus dados, controles de fluxo e empacotamento. As mensagens transmitidas possuem dois bits que indicam o inicio (bop: begin-of-packet) e o final do pacote (eop: end-of-packet). Os bits 2.3. Network on Chip 19 Figura 2.12: As duas topologias para SoCIN: mesh e torus de controle são usados para validar os dados do canal (val ) e para dar conhecimentos dos dados recebidos (ack ). A figura 2.13 apresenta a estrutura do link do SoCIN. Figura 2.13: Link SoCIN [74]. 2.3.3 Æthereal A NoC Æthereal [26], foi desenvolvida baseada em serviços diferenciados que garantem uma comunicação, com o intuito de facilitar integração e eliminar incertezas da interconexão. Os serviços diferenciados são implementados através de configurações individuais nas métricas de comunicação entre os núcleos, como vazão de dados e latência. A Æthereal possui dois componentes roteadores e interfaces de rede. O canal implementa uma comunicação ponto-a-ponto entre duas interfaces de rede, com a possibilidade de vários caminhos para a conexão dos núcleos. O canal pode ter garantia de latência ou de “melhor esforço” na comunicação, para garantir a latência usa uma implementação Time Division Multiplexing (TDM) para comutação do circuito. A figura 2.14 apresenta o roteador Æthereal trabalhando nas duas abordagens garantia de latência e “melhor esforço”. A ordem da entrega das mensagens não é garantida quando utilizado vários canais, Æthreal tem a possibilidade de controlar nas conexões múltiplos canais, controle de fluxo e um reordenação das mensagens. 20 2. Tecnologias Relacionadas Figura 2.14: Roteador da NoC Æthreal [26]. 2.3.4 QNoC A rede QNoC foi proposta em [8] e possui uma topologia de malha irregular o mecanismo de comunicação é o de comutação de pacotes, possui controle de fluxo baseado em créditos. A QNoC oferece classes de serviço com diferentes nı́veis de prioridade como: (a) Signalling, nı́vel de serviço com maior prioridade na rede; (b) Real time, nı́vel de serviço que garante largura de banda e latência para as aplicações; (c) Read/Write, nı́vel de serviço projetado para suportar acessos curtos a memórias e registradores; (d) Block Transfer, nı́vel de serviço usado para transferência de mensagens e blocos de dados grandes. A figura 2.15 ilustra a arquitetura do roteador da QNoC, suporta até cinco conexões: quatro para roteadores vizinhos e uma para o núcleo local. O roteador transfere os pacotes das portas de entrada para as de saı́da, os dados são recebidos em flits e armazenados em buffers de entrada. Na medida que o roteador envia os dados uma posição do buffer fica disponı́vel e um crédito é enviado ao outro roteador. O gerenciamento das prioridades utiliza o algoritmo round-robin e os nı́veis de serviço são indicados por um canal de controle. 2.3.5 RTSNoC A Real Time Star Network on Chip (RTSNoC) foi desenvolvida no intuito de criar uma estrutura de intercomunicação com previsibilidade de latência, sendo assim apropriada para a interconexão de núcleos de tempo real que necessitem deste tipo de garantia. O principal elemento que compõem esta rede é o seu roteador. O roteador da rede RTSNoC possui oito pontos de interconexão, conforme ilustra a figura 2.16. Os oito pontos recebem os nomes de pontos cardeais de uma bússola: NN para 2.3. Network on Chip 21 Figura 2.15: Arquitetura do roteador QNoC [8]. a porta Norte, NE para Nordeste, EE para Leste, SE para Sudoeste, SS para Sul, SW para Sudoeste, WW para Oeste e finalmente NW para Noroeste. Figura 2.16: Topologia do roteador RTSNoC. Em cada ponto de interconexão do roteador da rede RTSNoC estão disponı́veis os enlaces da rede, que constituem os canais de comunicação da rede. Os enlaces da rede RTSNoC são implementados por dois canais unidirecionais em oposição, conforme figura 2.17. O tamanho de cada canal pode ser configurado pelo usuário de acordo com as necessidades da aplicação. Os barramentos de sinais denominados de DIN e DOUT referem-se aos barramentos de dados de entrada e saı́da de dados, respectivamente. Os sinais RD e WR são strobes utilizados para escrever ou ler dados no roteador, respectivamente. Por fim, os sinais WAIT e ND constituem os sinais utilizados para controle de fluxo na rede. O sinal WAIT indica ao 22 2. Tecnologias Relacionadas PE que deve aguardar para poder escrever novo dado no canal de entrada do roteador. Já o sinal ND indica ao canal de destino do pacote que um novo pacote está disponı́vel para ser encaminhado. Figura 2.17: Canais de comunicação da RTSNoC. Com um roteador e oito núcleos é constituı́da uma subrede RTSNoC. A interconexão de mais roteadores, além dos núcleos, permite que sejam estabelecidas redes em malha regular 2-D ou irregular 2-D, conforme apresentado nas figuras 2.18a e 2.18b. (a) Malha regular com quatro roteadores (b) Malha irregular com três roteadores. Figura 2.18: Exemplos de redes RTSNoC. 2.3.5.1 Formato dos pacotes na RTSNoC O roteador da Rede RTSNoC é parametrizável em tempo de projeto. Os parâmetros ajustáveis são o tamanho do campo de dados e as coordenadas cartesianas dos roteadores envolvidos em uma determinada comunicação. A figura 2.19 apresenta o formato deste pacote. Como a rede RTSNoC trabalha em malha regular ou irregular 2-D, são utilizados dois campos, denominados de XORI e YORI, que correspondem às coordenadas X e Y do roteador na malha de onde está sendo gerado um pacote, ou seja, o seu endereço de origem. O mesmo 2.3. Network on Chip 23 Figura 2.19: Formato dos pacotes da RTSNoC. acontece para o endereço do roteador de destino do pacote, que possui os campos XDST e YDST para informar as coordenadas de destino na comunicação. O campo HORI refere-se ao endereço da porta dentro do roteador de origem de onde está sendo enviado o pacote para a rede. De modo similar, HDST é a informação do núcleo de destino do pacote a ser roteado. O campo DATA apresentado na figura 2.19 é a carga útil que deve ser entregue aos núcleos da rede. A limitação de um phit por pacote está contida na camada de rede da NoC. Pacotes com número ilimitado de dados podem ser constituı́dos logicamente entre os núcleos, de modo transparente para a NoC. 2.3.5.2 Estrutura interna do Roteador O roteador proposto possui oito canais bi-direcionais, os quais podem ser conectados a núcleos ou aos canais de outros roteadores. O algoritmo de roteamento adotado é do tipo XY e por este motivo os canais Norte, Sul, Leste e Oeste são priorizados para conexão com os canais de outros roteadores, quando necessário, para formar uma rede em malha 2-D. A figura 2.20 ilustra a estrutura interna do roteador da RTSNoC. Cada canal de entrada é composto por uma interface de entrada, uma interface de saı́da e um controlador de fluxo. A interface de entrada possui um registrador capaz de armazenar um phit. Quando um núcleo deseja enviar pacotes pela rede ele deve escrever o pacote neste registrador. Em seguida, o controlador de fluxo irá identificar no cabeçalho do pacote qual o destino da mensagem e verificará se o destino está livre para ser utilizado. Paralelo a isto, o controlador de fluxo informa ao bloco árbitro da existência de uma nova requisição de roteamento. O bloco árbitro implementa um algoritmo tipo Round Robin. Ao inicializar, todos os canais recebem um nı́vel de prioridade, diferente dos demais. Um determinado núcleo só terá sua requisição de roteamento atendida se tiver prioridade superior aos outros núcleos que estão enviando requisições ao árbitro naquele momento, ou então se não houver outra requisição pendente no árbitro além da sua requisição. Uma vez que a requisição é atendida, o canal que solicitou o envio de pacotes passa a ter a menor prioridade na arbitragem e 24 2. Tecnologias Relacionadas só poderá enviar outro pacote na sequência se nenhum outro canal estiver requisitando um roteamento. Figura 2.20: Estrutura interna do roteador da RTSNoC. Uma vez que foi definido qual canal terá prioridade de roteamento, o bloco árbitro envia um comando ao bloco de switch, comunicando qual roteamento deve ser realizado naquele momento. O roteamento adotado é o algoritmo XY. Este algoritmo é utilizado em NoCs com topologia de malhas regulares, pois em sua operação um caminho deve primeiro percorre a coordenada X para então efetuar o encaminhamento no eixo Y. Esta abordagem é utilizada para evitar o problema de deadlock causados pela alocação de recursos feita por dois ou mais fluxos. Devido ao fato de o algoritmo XY ser utilizado no roteamento em redes com topologia malha regular 2-D, é necessário fazer a alocação de determinados canais dos roteadores para que se possa garantir o funcionamento deste tipo de algoritmo numa malha irregular. No exemplo apresentado na figura 2.18b, o canal Oeste do roteador número sete está conectado ao canal Sul do roteador número cinco. Se esta conexão não tivesse sido realizada, um pacote gerado por algum núcleo do roteador número sete não conseguiria alcançar nenhum dos núcleos conectados no roteador número cinco. 2.3. Network on Chip 25 Uma vez definida a arbitragem, o bloco arbiter envia um comando para o bloco switch, responsável por controlar a crossbar que é quem realiza o encaminhamento do pacote disponı́vel no registrador de entrada para o canal de saı́da. O roteador da RTSNoC utiliza quatro ciclos de clock para realizar o encaminhamento de um pacote. Na versão original são dois ciclos de clock, mas foi detectado um problema na estrutura interna de roteamento, para um caso particular de transmissão de dados, e houve a necessidade de alterar o roteador incluindo dois ciclos a mais, em média. Será realizado um trabalho especı́fico para que o roteador possa novamente trabalhar apenas com dois ciclos de clock. 2.3.5.3 Simulação funcional do roteador Em um cenário onde foram colocados dois núcleos em um roteador RTSNoC. Um núcleo conectado na porta Norte (NN) envia cinco pacotes para o núcleo conectado na porta Oeste (WW). Os sinais do canal de comunicação são apresentados na figura 2.21, que é o resultado desta simulação realizada na ferramenta ISE do fabricante Xilinx. Figura 2.21: Simulação de envio de pacotes na RTSNoC. Conforme ilustrado na figura 2.21, os dados a serem enviados pelo roteador são disponibilizados pelo núcleo 1 no barramento i DIN NN[37:0]. Uma vez que os dados estão disponı́veis em i DIN NN, o núcleo gera um pulso de um perı́odo de clock em i WR NN para registrar o dado no roteador. Em seguida, o roteador coloca o sinal o WAIT NN em nı́vel 1 até que o dado disponibilizado pelo núcleo 1 possa ser encaminhado. Este sinal é um indicativo de que o núcleo conectado na porta Norte deve esperar para poder enviar novo dado por aquela porta. Quando o dado fica disponı́vel para a porta de destino, neste caso a porta Oeste (WW), o roteador coloca o pino o ND WW em nı́vel lógico 1, indicando que existe um dado 26 2. Tecnologias Relacionadas válido para aquela porta. O núcleo 2 deve então gerar um pulso de um ciclo de clock em i RD WW para poder retirar este dado do roteador, que é disponibilizado no barramento o DOUT WW[37:0]. 2.3.5.4 Adaptadores de Canais na RTSNoC A interconexão entre os canais de dois ou mais roteadores ou a interconexão entre os núcleos e os roteadores deve ser feita através de adaptadores (wrappers). A figura 2.22 ilustra um exemplo de interconexão entre roteadores e núcleos. Figura 2.22: Uso de adaptadores na interconexão de roteadores e núcleos. Os adaptadores são necessários devido ao fato de os canais de comunicação da RTSNoC terem sido dimensionados para utilizarem o menor número possı́vel de sinais de handshake. Como os canais de comunicação da Rede RTSNoC são bi-direcionais, são necessários dois adaptadores para cada interconexão entre núcleos e roteadores ou entre roteadores. A figura 2.23 apresenta uma máquina de estados de um exemplo de adaptador para a RTSNoC. Esta máquina fica aguardando pela chegada de um novo dado no canal de comunicação (estado idle). Ao receber um novo dado, a máquina registra o pacote internamente, verifica se o canal de destino está disponı́vel e, se estiver disponı́vel, encaminha o pacote. 2.4 Desenvolvimento para FPGA em alto nı́vel Historicamente, os fluxos tradicionais para desenvolvimento de projeto em FPGA são espelhados nos processos de desenvolvimento de Aplication Specific Integrated Circuits (ASICs). 2.4. Desenvolvimento para FPGA em alto nı́vel 27 Figura 2.23: Exemplo de uma máquin de estados para um adaptador RTSNoC. Um modelo do sistema é criado a partir de uma linguagem imperativa, como C ou MATLAB. A fase de modelo representa a primeira oportunidade de realizar testes e validação do sistema. Tipicamente, a implementação inicial é descrita em uma linguagem de descrição hardware como VHDL ou Verilog para Register Transfer Level (RTL), que permite a descrição da lógica por comportamento. Normalmente, a descrição RTL envolve a instanciação de Intellectual Property (IP) reutilizáveis (por exemplo, decodificador Viterbi, Fast Fourier Transform (FFT), filtro Finite Impulse Response (FIR)), muitas vezes fornecidos pelo fabricante do FPGA, para assegurar a implementação eficiente de funções complexas. Testes de conformidade e funcionais, para o modelo original do sistema, são feitos através de simulação do HDL com a criação de testbenchs. Este acoplamento fraco entre o modelo e a implementação do sistema faz a depuração difı́cil e demorada. Por exemplo os testes, proporcionam apenas uma relação de entrada/saı́da, por isso é muitas vezes necessário refazer o modelo de sistema, que em alguns casos é desenvolvido por uma equipe totalmente diferente, a fim de extrair estados e sinais internos para a depuração. Sytem Generator é um ambiente de projeto em nı́vel de sistema para FPGAs. O fluxo de projeto é integrado ao Matlab/Simulink, permite sı́ntese de HDL para dispositivos Xilinx, possui bibliotecas de IPs com blocos de aritmética, operadores lógicos e funções DSPs. Gera testbench, arquivos para simulação e permite co-simulação em hardware. Em contraste, ao desenvolvimento tradicional, o fluxo de desenvolvimento com base no System Generator, ou ferramentas similares deriva o hardware diretamente do modelo através da geração automática de código [19] [32]. O método utilizado pelo Sytem Generator, 28 2. Tecnologias Relacionadas também conhecido como model-based design, visa aumentar a produtividade, devido o nı́vel de abstração, e confiabilidade pela geração automática de códigos. A figura 2.24 mostra o fluxo de desenvolvimento utilizando o System Generator, o diagrama apresenta um tı́pico fluxo para co-simulação do HDL. Figura 2.24: Fluxo de desenvolvimento utilizando o System Generator. O System Generator estende a API padrão do Simulink criando uma interface para a simulação do HDL diretamente em plataformas de hardware. A ferramenta faz a geração do bitstream sem a necessidade da utilização de ferramentas de FPGA. Utilizar somente um sistema permite acelerar significativamente a simulação e validação do projeto. Em [29] (tabela 2.1) é apresentado uma comparação de “homem-hora” entre o tradicional modelo de desenvolvimento versus a abordagem em alto nı́vel. O levantamento dos dados foram realizados no desenvolvimento um sistema SDR, levando em consideração as seguintes categorias: (a) especificação de interface e algoritmo; (b) projeto dos módulos; (c) modelagem, simulação e verificação; (d) desenvolvimento do VHDL; (e) verificação comportamental do VHDL; (f) integração dos módulos. As duas abordagens foram realizadas individualmente por dois desenvolvedores com vários anos de experiência na implementação de sistemas de comunicação. Mesmo sendo uma avaliação subjetiva pode-se concluir uma maior produtividade utilizando desenvolvimento em alto nı́vel. 2.5. Considerações Finais 29 Tabela 2.1: Tabela de comparação desenvolvimento FPGA [29]. Especif. Projeto Modelagem, Desenv. Verif. Integração de interface dos simulação e do do dos Fluxo e algoritmo módulos verificação VHDL VHDL módulos 1 0,25 2 0 0 0 A2 Reed Solomon Encode 40 40 0 40 60 20 B3 1 0,5 3 0 0 0 A Reed Solomon Decode 20 80 0 60 100 20 B 0 0,25 3 0 0 0 A Scrambler/Descrambler 1 1 0 1 6 3 B 0 0,25 1,5 0 0 0 A Convulotional Encode 1 1 0 1 1 1 B 0 0,5 2 0 0 0 A Viterbi Decode 8 8 0 8 16 24 B 0 0,25 1 0 0 0 A Differential Enc/Dec 1 1 0 1 4 2 B 0 0,5 2 0 0 0 A Interleaver/Deinterleaver 40 16 0 16 36 60 B 1 0,5 4 0 0 0 A PSK Modulator (2,4,8) 5 5 0 4 3 3 B 1 4 16 0 0 0 A Frame Sync 4 6 0 4 6 4 B 4 7 34,5 0 0 0 A Totais 120 158 0 135 232 137 B Blocos 2.5 Considerações Finais Este capı́tulo introduziu conceitos fundamentais para o entendimento da proposta do trabalho. Apresentou detalhes sobre SDRs, computação reconfigurável, redes-em-chip e abordagens de desenvolvimento em FPGA. No próximo capı́tulo será apresentado os trabalhos relacionados que envolem grande parte desses conceitos. 2 3 Fluxo de projeto utilizando abordagem em alto nı́vel. Fluxo de projeto utilizando abordagem tradicional. 30 2. Tecnologias Relacionadas Capı́tulo 3 Trabalhos Relacionados Várias arquiteturas de SDR foram propostas pela academia e a indústria nos últimos anos, segundo [63] existem duas abordagens para arquiteturas de SDR que podem ser seguidas: (i) baseada em hardware reconfigurável e (ii) baseada em um processador central, normalmente um DSP, com aceleradores para auxiliar a arquitetura. A segunda abordagem garante uma elevada flexibilidade, mas também sofre de problemas relacionados com o consumo de energia. Para reduzir o consumo de energia, algumas plataformas utilizam vários DSPs rodando a um clock relativamente em baixo. Nesse capı́tulo, vamos analisar diferentes soluções propostas para arquiteturas de SDR com base nas duas abordagens mencionadas (Figura 3.1) [4]. Figura 3.1: Categorização das soluções em SDR. 3.1 Arquiteturas com Processador Central Esta seção fornece uma visão geral de algumas arquiteturas de SDR baseadas em um processador central (DSPs), que possuem recursos extras, como aceleradores, para explorar o 32 3. Trabalhos Relacionados paralelismo intrı́nseco de alguns blocos de rádio. Além disso, algumas das plataformas usam a ideia de múltiplos núcleos, onde tarefas maiores são divididas em partes menores. 3.1.1 LeoCore LeoCore [40] é um Application Specifc Instruction Set Processor (ASIP) para pro- cessamento de sinais de rádio em banda base. Este núcleo foi desenvolvido para telefones celulares, laptops, terminais de radiodifusão, Global Positioning System (GPS) e sistemas embarcados. A filosofia básica por trás da arquitetura é primeiro identificar em nı́vel algorı́tmico as operações de processamento de sinal necessário para a aplicação, como: FFT, filtros, decimadores, interpoladores, geradores de forma de onda, etc. Em seguida mapear os para um processamento adequado como um processador Single Instruction Multiple Data (SIMD) ou um acelerador ASIC. A arquitetura do LeoCore é dividida em quatro processadores otimizados de maneira diferente para tratar um conjunto distinto de operações. Os processadores são classificados como: RF front-end digital, processador SIMD, aceleradores de funções, processador para controle e outras funções (3.2). Figura 3.2: Arquitetura LeoCore [40]. O conjunto de instruções dessa arquitetura cobre estritamente funções de DSP mencionadas anteriormente, não permitindo executar aplicações de uso geral. Há uma troca de flexibilidade por eficiência em nı́vel de instrução. Os principais problemas relacionados a otimização são latência dos dados e consumo de energia. Para solucionar problemas de latência são realizados paralelização de tarefas, para contornar os problemas de consumo de energia foi proposto desligar os módulos ociosos [39]. 3.1. Arquiteturas com Processador Central 33 Juntamente com o LeoCore é fornecido o Coresonic Developer Studio, uma ferramenta de desenvolvimento que possui montador e depurador. Em publicações há benchmarks para sistemas Digital Video Broadcasting - Terrestrial (DVB-T) e Worldwide Interoperability for Microware Access (WiMAX) 3.1.2 Signal-processing On-Demand Architecture Signal-processing On-Demand Architecture (SODA) é uma arquitetura para disposi- tivos móveis com foco em redução de consumo de energia. A arquitetura é baseada em dividir as tarefas em dois tipos de processadores, um para dados onde são realizadas as operações de DSP, outro para controle que destina-se a executar as operações de sistema e gerenciar os processadores de dados, através de Remote Procedure Call (RPC) e operações de Direct Memory Access (DMA). A arquitetura é apresentada na figura 3.3 sendo composta por um processador de controle, quatro processadores de dados e uma memória scratchpad. Os componentes são interconectados por meio de um barramento compartilhado. Os processadores de dados possuem uma memória interna para instruções e dados, uma unidade de processamento escalar e uma unidade SIMD para processamento vetorial. Figura 3.3: Visão geral da arquitetura SODA [72]. 34 3. Trabalhos Relacionados Um aspecto importante desta arquitetura é que ela não utiliza uma abordagem multithreading, cada tarefa é realizada em uma unidade de processamento (PE). Essa abordagem foi escolhida, devido as observações que fizeram durante o desenvolvimento da arquitetura, onde a taxa de comunicação inter-unidade é muito mais baixa do que a intra-unidade para aplicações de processamento de sinais em banda base. Os desenvolvedores da SODA desencorajam soluções multithreading para um projeto de processador de comunicação em banda base. 3.1.3 Tomahawk Tomahawk é uma plataforma heterogênea de SDR em um único chip. Como em muitas outras soluções explora e paralelismo no nı́vel de tarefa. Sua principal caracterı́stica é o seu CoreManager que é um escalonador dedicado em hardware (3.4). Essa arquitetura utiliza dois processadores Reduced Instruction Set Computing (RISC) Tensilica para executar um sistema operacional e funções de controle, seis unidades de DSP, um ASIP para decodificadores e filtros. Todos as unidades do chip utilizam transferência sı́ncrona para diminuir o consumo de energia [12]. Foram realizados testes na arquitetura para WiMAX e 3GPP Long Term Evolution (LTE). Figura 3.4: Arquitetura Tomahawk MPSoC [38]. Seu modelo de programação deve ser mencionado como uma das principais vantagens da arquitetura, distinguindo-se das outras soluções. As tarefas são basicamente convertidos em descrições de tarefas em tempo de compilação. Estas descrições são enviadas pela unidade de controle para CoreManager com uma fila de comprimento máxima de dezesseis tarefas. O mapeamento espacial e temporal dessas tarefas para as unidades do chip é então feita automaticamente pelo CoreManager. Este modelo de programação facilita o desenvolvimento, pois não é necessário o desenvolvimento das tarefas, diminuindo o ciclo de projeto. 3.2. Arquiteturas Reconfiguráveis 3.2 35 Arquiteturas Reconfiguráveis Esta seção fornece uma visão geral de algumas arquiteturas reconfiguráveis de granu- laridade grossa voltadas para processamento de fluxo de dados deSDR. 3.2.1 ADRES A Architecture for Dynamically Reconfigurable Embedded Systems (ADRES) são unidades de processamento que possuem uma arquitetura reconfigurável de granularidade grossa e são usados para processamento em banda base. Figura 3.5: Núcleo da arquitetura ADRES [10]. O diferencial da arquitetura ADRES é a utilização de um processador Very Long Instruction Word (VLIW) em um arranjo de elementos de processamento reconfiguráveis, como mostrado na figura 3.5 [10]. Os autores apresentam que o uso de um processador VLIW ao invés de um processador RISC, comum em outras arquiteturas, traz um ganho de velocidade superior. Isso se da pelo fato que os processadores VLIW são capazes de explorar eficientemente paralelismo no nı́vel de instruções. 36 3. Trabalhos Relacionados Os elementos de processamento do ADRES são unidades funcionais com bancos de registradores acoplados que se comunicam através de memória compartilhada. Essa abordagem facilita a geração de código binário por compiladores, mas acarreta problemas de escalabilidade nos bancos de registradores. 3.2.2 BUTTER e CREMA BUTTER é uma arquitetura reconfigurável de granularidade grossa desenvolvida na Tampere Universtity of Tehcnology [11]. A arquitetura é composta por uma matriz de unidades de processamento, que pode ter as funcionalidades e interconexões definidas em tempo de execução (figura 3.6). Essa caracterı́stica permite alcançar uma alta taxa de dados necessária em aplicações de SDR. Figura 3.6: Arquitetura Butter e Crema [25]. Normalmente a matriz de unidades de processamento tem uma dimensão de 4x8 elementos, sedo que cada elemento pode executar diferentes tipos de operações aritméticas. Essa matriz foi idealizada para ser utilizada como um co-processador na combinada com um processador de propósito geral. Na plataforma dos desenvolvedores é acoplado um processador open-source chamado COFFE [55], que é utilizado como um controlador global, enquanto a matriz realiza computação intensiva. Um novo núcleo reconfigurável foi concebido como evolução do BUTTER. O novo 3.2. Arquiteturas Reconfiguráveis 37 núcleo é chamado CREMA, permite em tempo de projeto adaptar a arquitetura de cada unidade de processamento de acordo com os requisitos da aplicação. Esse recurso reduz a flexibilidade de reproduzir instâncias especı́ficas, mas reduz o tempo de reconfigurabilidade e o tamanho de uma lógica em FPGA. 3.2.3 Arquitetura de Canais para SDR de Múltiplas Camadas A arquitetura proposta por [17] emprega o conceito de múltiplos canais entre a interface fı́sica (hardware) e as camadas fı́sicas (PHYs) implementadas em software. A mudança de paradigma de “manipulação do espectro” para “múltiplos canais” simplifica a interação com o hardware e permite que a dependência da camada fı́sica (PHY) passe a ser um canal ou um grupo de canais e não mais o hardware como um todo, permitindo o compartilhamento da mesma janela amostrada pelo ADC por várias camadas fı́sicas. Essa simplificação tornou transparente várias configurações do hardware, uma vez que a partir dos canais solicitados (frequências centrais e larguras de banda) ao bloco de controle é possı́vel inferir todos os parâmetros de configuração. A figura 3.7 apresenta um diagrama de blocos da arquitetura proposta, a sua prototipação foi feita utilizando como base a plataforma USRP2 e o GNU Radio, as alterações não diminuı́ram a flexibilidade no projeto ou em tempo de execução se comparada com a arquitetura tradicional. Figura 3.7: Arquitetura de múltiplos canais [17]. Outro benefı́cio proporcionado pelo conceito de canal é a possibilidade da adição de uma estrutura de separação de canais no hardware, o que diminui drasticamente a ocupação 38 3. Trabalhos Relacionados do processador de uso geral do sistema (host), uma vez que o paralelismo intrı́nseco existente na separação de diversos canais, que exige o processamento concomitante do mesmo grupo de dados, e a alta quantidade de amostras por segundo, proveniente das fases iniciais do rádio, são caracterı́sticas onerosas para implementações em software e são beneficiados pela implementação paralela do hardware. 3.2.4 CRUSH Cognitive Radio Universal Software Hardware (CRUSH) proposta por [21] é uma ar- quitetura para SDR com foco em aplicações de rádio cognitivo, sua principal ideia é mover o processamento de dados mais próximo do front-end utilizando FPGAs, pois esses componentes permitem alto desempenho e reconfigurabilidade. A proposta propõe resolver um problema encontrado atualmente, onde grande parte das amostras são processadas utilizando um computador como host impactando muito em rádios que possuem tarefas com tempo crı́tico. A figura 3.8 apresenta um digrama em blocos da arquitetura CRUSH, é composta por um kit de desenvolvimento FPGA Xilinx ML605 conectado a uma USRP N210, dessa forma, aumentando os recursos de lógica programável disponı́veis. Para um cenário de testes da plataforma foi implementado um algoritmo de sensoriamento de espectro, utilizado para determinar a disponibilidade de canais para comunicações de rádio cognitivos. Os resultados mostram ganhos significativos na execução de FFTs e no ciclo completo de sensoriamento do espectro. Figura 3.8: Diagrama do sistema CRUSH [21]. 3.3. Considerações Finais 3.3 39 Considerações Finais Além das arquiteturas apresentadas existem outras que foram propostas nos últimos anos, SandBridge Sandblaster [68], NXP Embedded Vector Processor (EVP) [57], Heterogeneous Reconfigurable System (HERS) [54]. Muitas das arquiteturas consistem em um System on Chips (SoCs) que incluem um processador de propósito geral para implementação das camadas mais altas dos protocolos e co-processadores SIMD para fazer processamento dos sinais. Apesar de muitas das arquiteturas apresentadas atingirem os requisitos de desempenho, elas impõem muitas dificuldades no desenvolvimento de aplicações. Por exemplo, na maioria das arquiteturas o desenvolvedor deve dividir as tarefas, definir as partes que rodaram em software, nos aceleradores e nas unidades DSP. No caso das unidades DSP deve-se escrever as tarefas diretamente na linguagem assembly para a maioria dos casos. Segundo [4] num futuro próximo a evolução dessas arquiteturas é adotar o paradigma de NoC para integrar um número crescente de subsistemas com altas demandas computacionais. Os próximos desafios da área são aumentar o poder de processamento, limitar o consumo de energia e tornar mais flexı́vel o processo de desenvolvimento dos SDRs. 40 3. Trabalhos Relacionados Capı́tulo 4 Arquitetura Heterogênea e Reconfigurável Neste capı́tulo, inicialmente, apresenta-se os fatores que motivaram o desenvolvimento de uma nova arquitetura para SDR. Em seguida é mostrada a arquitetura e suas caracterı́sticas. 4.1 Motivações Os trabalhos relacionados, apresentados no capı́tulo 3, levantam as principais carac- terı́sticas que as futuras arquiteturas de SDR devem possuir: • Alto poder de processamento. • Baixo consumo de energia. • Reconfigurabilidade. • Facilidade de programação. A metodologia para desenvolvimento de arquiteturas de SDR proposta em [40] sugere que o primeiro passo do projeto é especificar os potenciais produtos que a arquitetura pretende atender. Por exemplo, a arquitetura será utilizada em telefones celulares, terminais de radiodifusão, sistemas de posicionamento global. Após a especificação dos produtos, os padrões relacionados devem ser coletados (802.11 a/b/g/n, DVB-T), a partir dos padrões são definidos os subsistemas como: (a) Digital front-end, (b) sincronizadores, (c) estimadores de canais, (d) equalizadores de canais e (e) módulos corretores de erros. Por fim, os algoritmos necessários pelos subsistemas são especificados e alocados para o hardware (figura 4.1). 42 4. Arquitetura Heterogênea e Reconfigurável Figura 4.1: Exploração de arquiteturas de SDR. Segundo análises realizadas por Anjum et al [4] em aplicações de rádio, cerca de 90% do tempo de execução do processamento na camada fı́sica é usado para executar os seguintes algoritmos: • Filtros de dados do tipo inteiro, utilizados para filtragem e correlação. • Filtros de dados do tipo complexo, utilizados em filtros passa-baixo e banda-passante, identificação de preâmbulos, adaptação de taxas, sincronização de fase e quadratura. • Algoritmos de transformação como FFT, Discrete Cosine Transform (DCT) e transformada de Walsh. • Processamento de sinais no domı́nio da frequência, como filtros, processamento de subportadoras, estimação de canais e equalização. • Algoritmos de divisão, raiz quadrada de dados inteiros e complexos, geradores de onda. • Computação de matrizes em ambos os domı́nios do tempo e da frequência incluindo soma, multiplicação, transposição e decomposição de matrizes. • Algoritmos de Forward Error Correction (FEC) e Cyclic Redundant Check (CRC). Vários decodificadores FEC são amplamente adotados nos sistemas modernos de comunicação sem fio. Desta forma, conclui-se que uma arquitetura capaz de otimizar a execução desta classe de algoritmos, denominados essenciais, por consequência irá aumentar o desempenho e eficiência do sistema. 4.2. Arquitetura Proposta 43 A arquitetura a ser proposta tem como meta atender alguns requisitos, como desempenho e flexibilidade, que podem variar de acordo com a aplicação e as caracterı́sticas do rádio a ser implementado. Para alcançar esses requisitos, optou-se por utilizar os recursos de paralelismo e reconfiguração utilizando o paradigma de computação reconfigurável. O paralelismo será alcançado utilizando o processamento simultâneo de vários blocos de processamento de sinal com o intuito de diminuir o tempo de execução do fluxo de dados. A arquitetura possuirá um grau de paralelismo variável, de acordo com a demanda de cada aplicação. Já a utilização da reconfiguração tem o intuito de tornar a arquitetura mais flexı́vel (adaptável para cada tipo de rádio e requisitos da aplicação), visto que ela permite alterar algumas de suas caracterı́sticas. Com o aumento da flexibilidade, espera-se, por exemplo, poder fazer a opção de realizar o processamento de um bloco em software de propósito geral ou em um bloco de hardware dedicado, em detrimento de um maior consumo de recursos lógicos, ou vice-versa. As técnicas de reconfiguração também possibilitam uma maior tolerância a falhas no circuito digital, pois no caso de defeito em alguma parte do dispositivo, o circuito pode ser implementado em outra área do chip. Além disso, com a computação reconfigurável podese obter uma significativa redução de custos, uma vez que o recurso de reconfigurabilidade permite a utilização do mesmo hardware para diferentes versões do produto. 4.2 Arquitetura Proposta A nova arquitetura proposta usa a ideia de paralelismo ao nı́vel de tarefa utilizando uma estrutura heterogênea com componentes de processamento em software e hardware. Os componentes de hardware são dedicados para a execução de uma tarefa, podendo ser chamados de aceleradores, e podem ser reconfigurados dependendo das necessidades da aplicação. Essa abordagem propõe o mapeamento de tarefas em hardware com a finalidade de aumentar o desempenho do sistema. O diferencial desta proposta é a utilização de uma NoC como forma de interconexão e comunicação dos blocos de processamento. Como forma de programação a arquitetura oferece um framework que possibilita o mapeamento das tarefas de alto nı́vel em hardware, por meio de um bloco de controle, este bloco controla o fluxo de execução e realiza a configuração dos parâmetros dos nodos em hardware. A arquitetura proposta é apresentada na figura 4.2 sendo composta dos seguintes blocos: Interface RF: bloco responsável por realizar a interface com ADCs e DACs, que fazem a conversão dos sinais RF, sendo este nodo o fonte para um SDR. O bloco também realiza toda a parte de DFE DDCs e DUCs. 44 4. Arquitetura Heterogênea e Reconfigurável Controle: bloco responsável pelo controle e conexão dos nodos para a formação do SDR, também do fluxo e da taxa de dados entre os nodos. É composto por um processador, sof-core arquitetura MicroBlaze, e periféricos conectados pelo barramento AMBA4 AXI-Lite 1 . Interconexão: a comunicação entre os blocos da arquitetura é realizada por meio de uma rede-em-chip, os núcleos pertencentes ao bloco de controle se conectam por meio de um barramento compartilhado. A comunicação entre o bloco de controle e os outros blocos se da por uma bridge entre a rede-em-chip e o barramento compartilhado. Aceleradores: são blocos que realizam uma tarefa especifica de processamento digital de sinais, mais especificamente os algoritmos essenciais (citados anteriormente) para camada fı́sica de um rádio. A arquitetura prevê dois aceleradores fixos (FFT e um filtro FIR) e um espaço em silı́cio para ser reconfigurável com outros aceleradores. Interface de rede: a arquitetura possui uma interface de rede Ethernet Gigabit que permite comunicação com um host. Interfaces seriais: a arquitetura possui interfaces seriais de baixa velocidade (Universal Asynchronous Receiver Transmitter (UART), Inter-Integrated Circuit (I2C), Serial Peripheral Interface (SPI)) que são utilizadas para realizar depurações e configurações de dispositivos externos, por exemplo, um front-end analógico. Figura 4.2: Visão geral da arquitetura proposta. A arquitetura proposta não oferece uma solução completa para um SDR, pois não possui um processador de propósito geral com alto poder de processamento. Desta forma, é necessário a sua integração com um host para a implementação das camadas de mais alto 1 AMBA é um padrão aberto de gerenciamento e interconexão intra-chip e de blocos funcionais para um SoC. 4.2. Arquitetura Proposta 45 nı́vel de um rádio. O bloco de controle poderia substituir o host, mas por ser composto por um softcore 2 de baixo processamento pode realizar eficientemente somente funções de controle e configuração. Uma futura expansão poderia ser adicionar um hardcore com maior poder de processamento, como processadores da arquitetura Advanced RISC Machine (ARM) que atualmente estão sendo utilizados amplamente na industria. Nas seções que seguem será apresentado em mais detalhes os blocos da arquitetura, a forma de programação e o mecanismo para controle de fluxo. 4.2.1 Bloco RF Interface A interface com o mundo RF na arquitetura proposta é realizado por meio do bloco RF Interface, cujas principais funções são: (a) realizar a interface de aquisição e transmissão de dados com os ADCs e DACs configurando e controlando; (b) implementar toda a parte de Digital Front-end (DFE) (DDC, DUC, filtragem) para converter o sinal de uma IF para banda base e vice-versa; (c) realizar interface com a rede-em-chip para enviar e receber dados dos outros blocos, como também dados de controle para configuração dos módulos internos do bloco. Na implementação das funcionalidades de Digital Front-end para essa arquitetura, foram definidos os seguintes limites a serem atendidos: (a) capacidade de transmissão e recepção; (b) taxa de amostragem de 64M hz e quantificação de 12 bits para recepção e 128M hz de 14 bits para transmissão; (c) suporte para amostras complexas; (d) flexibilidade de trocar o canal pela mudança da frequência central do DDC. Para a implementação dos DDCs e DUCs é utilizado o algoritmo CORDIC para geração das sinusoides para translação na frequência. As mudanças de taxas (interpolação e decimação) são realizadas utilizando a classe de filtros Cascaded Integrator-Comb (CIC). Já a filtragem utiliza filtro FIR half-band com 31 taps e também realiza uma decimação de fator dois. O bloco RF Interface possui interfaces para dois ADCs e dois DACs, o controle dos dispositivos pode ser feito pelas interfaces seriais (SPI e I2C) e aquisição e o envio de dados é feito por interfaces paralelas sı́ncronas que utilizam um clock com a taxa de transmissão para sincronização. A recepção de dados pode ser feita na forma complexa, para cada ADC há um barramento de 12 bits para parte real ou imaginária. A implementação desse bloco foi feita baseada na arquitetura da plataforma USRP utilizada amplamente com o GNU Radio, a figura 4.3 mostra um diagrama de blocos da RF Interface. O caminho de recepção dos dados é feito a partir da captura dos dados de um ADC, em seguida o sinal é decimado, filtrado e convertido para banda base por fim é escrito em uma First-In First-Out (FIFO) para ser enviado pela NoC. Já o caminho de transmissão os 2 Softcore é o núcleo de um microprocessador todo implementado em lógica sintetizável para ser utilizado em dispositivos como FPGAs e ASICs. 46 4. Arquitetura Heterogênea e Reconfigurável Figura 4.3: Diagrama de blocos da interface RF. dados são recebidos em uma FIFO pela NoC, logo após o sinal é interpolado e filtrado, por fim enviado para o DAC. A configuração dos fatores de decimação, interpolação e dos filtros é realizado a partir de registradores de controle. 4.2.2 Controle O bloco responsável por configurar os blocos da arquitetura, controlar o roteamento de dados pela NoC e configurar dispositivos externos (ADCs e DACs) é chamado de Controle. Este bloco tem um papel importante na arquitetura e para realizar todas essas tarefas necessita ser flexı́vel, por isso é formado pelo processador AeMB um softcore e outros periféricos interligados por um barramento compartilhado o AMBA4, podendo ser programado na linguagem C. A comunicação entre o processador e a NoC é feita por um bloco chamado NoC Bridge, este bloco faz a ponte entre NoC e o AMBA4, dessa forma o processador realiza comunicação com os outros blocos e recebe os pacotes configuração do host. Arquiteturas reconfiguráveis de granularidade grossa apresentam diversas vantagens do ponto de vista de hardware para exploração de diversos tipos de paralelismo em aplicações. No entanto, em conjunto com essas arquiteturas é necessário o desenvolvimento de ferramentas que permitam o mapeamento de aplicação descritas em alto nı́vel para os recursos presentes no hardware. Park et al. [59] propõem um método chamado Modulo Graph Embedding, baseado em uma técnica utilizada para layout e visualização de grafos. Essa técnica consiste na alocação de um grafo “convidado” em um grafo “hospedeiro”. O escalonamento de aplicações é feito através de um grafo de fluxo de dados e de um grafo representando os recursos de processamento presentes na arquitetura. 4.2. Arquitetura Proposta 47 Um dos problemas das arquiteturas de SDR que utilizam aceleração em hardware é a sua forma de programação, é difı́cil para o desenvolvedor mapear as tarefas em alto nı́vel para hardware. Este trabalho propõe uma abordagem semelhante a utilizada por Park et al., as tarefas que serão executadas na arquitetura formam um grafo “convidado”, o flowgraph é constituı́do a partir do host que envia pacotes de configuração para o bloco de controle, este então configura os blocos da arquitetura. A figura 4.4 apresenta um diagrama que mostra um exemplo do processo de configuração dos blocos e determinação do flowgraph e transferência dos dados entre os blocos e o host. Figura 4.4: Representação gráfica do filtro FIR. No exemplo apresentado na figura 4.4 primeiramente: (1) o host define o flowgraph enviando pacotes de configuração para o bloco de controle esse bloco então envia os pacotes para os blocos DFE e ACC1; (2) na sequência o host envia um pacote para iniciar a execução do grafo; (3) baseado no flowgraph configurado o bloco DFE começa enviar dados para o bloco ACC1 e esse após realizar o processamento envia para o host; (4) por fim o host finaliza o fluxo de dados enviando um pacote para finalizar a execução. Na arquitetura proposta utiliza-se a infraestrutura do GNU Radio (vide seção 2.1.2) para a construção do grafo “hospedeiro”. Para tanto, é necessário criar blocos do tipo source sink da arquitetura para o GNU Radio, estes blocos possuem métodos para que a partir da forma de programação do GNU Radio seja possı́vel configurar os blocos aceleradores da arquitetura. Abaixo é apresentado um exemplo de programação da arquitetura utilizando o GNU Radio, onde primeiramente é realizado a instanciação do objeto que se comunica com a arquitetura. Na sequência são realizadas configurações dos blocos RF Interface e do acelerador FIR, como taxa de amostragem, frequência central e o tipo de filtragem. Por fim, é realizado a definição do flowgraph configurando a rota de saı́da do stream de dados de cada bloco e no host a gravação dos dados recebidos. 48 1 2 3 4. Arquitetura Heterogênea e Reconfigurável from gnuradio import eng_notation from gnuradio import gr from gnuradio import uhd 4 5 6 7 class arch_noc_test(gr.top_block): def __init__(self): self.uhd_src = uhd.arch_noc_source(device_addr=’192.168.20.1’) 8 # Config DFE self.uhd_src.dfe.set_samp_rate(200000) self.uhd_src.dfe.set_center_freq(450e6, 0) self.uhd_src.dfe.set_gain(0, 0) self.uhd_src.dfe.route(0,0,SE) 9 10 11 12 13 14 # Config accelerator Filter FIR taps = firdes.low_pass_2(1, 1, 0.4, 0.1, 60) self.uhd_src.filter_fir.taps(10, taps) self.uhd_src.filter_fir.route(0,0,SS) 15 16 17 18 19 # Use file sink to capture data from arch_noc self.fsnk = gr.file_sink (gr.sizeof_gr_complex, test.dat) 20 21 22 # Connections self.connect((self.uhd_src, 0), (self.fsnk, 0)) 23 24 25 26 27 28 if __name__ == ’__main__’: tb = arch_noc_test() tb.run() 4.2.3 Interconexão A interconexão entre os núcleos se dá através da infraestrutura provida pela rede- em-chip RTSNoC. O propósito deste modelo de interconexão é substituir os barramentos compartilhados para a comunicação dos blocos, normalmente utilizados em sistemas em chip. Os barramentos compartilhados apresentam problemas de escalabilidade, não determinismo na comunicação, dissipação de energia, ruı́dos e interferência eletromagnética. O uso da NoC para interconexão da arquitetura trás as vantagens de melhorar o controle dos parâmetros elétricos e escalabilidade, quando comparada com barramentos compartilhados e pipelines. Porém, a principal vantagem que pode ser destacada é a interface padrão de comunicação bem definida que permite o reuso, facilidade da migração de tarefas em software para aceleradores em hardware. Além de que a natureza de comunicação sı́ncrona adotada pela RTSNoC diminui o consumo de energia. O bloco de controle apresentado na seção anterior é responsável por determinar o 4.2. Arquitetura Proposta 49 roteamento do stream de dados pela infraestrutura da rede, ou seja, realizar a conexão dos nodos. Para realizar a sincronização, o controle de fluxo, configuração dos blocos e transporte dos dados, foram definidos dois tipos de pacotes para a NoC: dados e configuração. O tipo de pacote enviado para os blocos é identificado por meio de um cabeçalho (conforme apresentado na figura 4.5). Os pacotes de dados possuem somente informações referentes ao roteamento e como carga os dados para processamento de sinais. Já os pacotes de configuração podem ter as seguintes informações: • configurações de roteamento para o bloco, isto é, a indicação dos endereços de destino, para onde os dados do bloco que esta sendo configurado devem ser enviados. Essa informação é utilizada durante a formação dos pacotes de dados. • Configurações referentes aos blocos, por exemplo, no bloco interface RF a configuração da frequência central de um DDC. Figura 4.5: Estruturas dos pacotes de configuração e dados. Normalmente as configurações de cada bloco são distintas, inerentes a solução que cada bloco se propõe resolver, por isso o pacote de configuração possui um campo tipo de configuração que está atrelado a cada bloco. Dessa forma, comandos para controle e configuração são disparados pelo host para o bloco de controle e este cria os pacotes da NoC envia para os blocos da arquitetura. 4.2.4 Aceleradores A arquitetura propõe a implementação da classe de algoritmos essenciais (vide seção 4.1), que são implementados em software nas arquiteturas tradicionais de SDR, na forma de blocos especı́ficos em hardware denominados aceleradores. Esse método possui as vantagens que permite aumentar a eficiência do algoritmo, além do que uma abordagem com aceleradores diminui os problemas de latência da NoC. 50 4. Arquitetura Heterogênea e Reconfigurável A solução utilizada para o projeto e desenvolvimento dos aceleradores é semelhante ao desenvolvimento em alto nı́vel para FPGA, abordada na seção 2.4. Nessa abordagem o fluxo de projeto inicia com o desenvolvimento do modelo em blocos e simulação em MATLAB, após a validação do funcionamento do sistema é feita a troca dos blocos pelos do System Generator Xilinx, por fim é gerado HDL para integração na infraestrutura de interconexão da arquitetura. Além disso, os fabricantes de FPGA e outras empresas disponibilizam uma grande variedade algoritmos de DSP na forma de IP também conhecidos como núcleos. Esses IPs são feitos como módulos pré-definidos para FPGAs, dessa forma podem ser otimizados para o dispositivo. Para os aceleradores desenvolvidos foi escolhido remover as operações de ponto flutuante, pois este tipo de operação é bastante custoso do ponto de vista energético e em área de silı́cio, e a grande maioria das arquiteturas para SDR pesquisadas não utilizam unidade de ponto flutuante. Para demonstrar a solução proposta, foram escolhidos dois algoritmos amplamente uitilizados: FFT e um filtro FIR. A FFT tem suporte a uma janela 64-4096 pontos e o filtro FIR com 64 taps onde é possı́vel configurá-lo como: passa-baixas; passa-alta; passa-banda e rejeita-banda. Somente dois aceleradores não são suficientes para construir rádios modernos, mas não é escopo deste trabalho criar aceleradores para os algoritmos essenciais. O uso de computação reconfigurável e uma interface de comunicação bem definida com NoC, facilita a adição e substituição de aceleradores conforme a necessidade do sistema dessa forma utilizar uma abordagem orientada a aplicação. 4.2.5 Interface com o Host A arquitetura proposta possui um bloco responsável pela comunicação com um host, nesse caso o host realiza a configuração da arquitetura e a implementação das camadas de mais alto nı́vel de um SDR. Com o intuito de dar uma maior flexibilidade para a arquitetura e diminuir o tempo de latência de comunicação foi escolhida a interface padrão Gigabit Ethernet (GbE). O bloco implementa a camada Media Access Control (MAC) do padrão GbE, o desenvolvimento do bloco foi feita baseada no Tri-mode Ethernet MAC [24] do OpenCores 3 e no bloco utilizado pela USRP2. As principais caracterı́sticas do bloco são descritas abaixo e um diagrama de blocos é apresentado na figura 4.6a: • implementação completa do MAC seguindo a especificação IEEE 802.3. • verificação e geração de pacotes com CRC. • FIFOs para interface de uso do bloco. 3 OpenCores é uma comunidade Open Source para o desenvolvimento de hardware digital. 4.2. Arquitetura Proposta 51 • suporte para frames Jumbo (4096 bytes). • suporte a controle de fluxo com geração de pause e termination frame (802.3 anexo 31A), provendo um completo automatizado controle de fluxo sem sobrecarga para aplicação de uso. • interface para gerenciamento da Ethernet Physical Layer (PHY) por Management Data Input/Output (MDIO). (a) Arquitetura do bloco GbE (b) Conexão entre o bloco MAC GbE e o PHY Figura 4.6: Diagrama de blocos da interface GbE Para facilitar e tornar mais eficiente a comunicação com host o bloco GbE possui nos caminhos de transmissão e recepção um módulo User Datagram Protocol (UDP), o módulo realiza o tratamento geração dos pacotes UDP todo em hardware. O módulo UDP é capaz de identificar os pacotes de controle e dados, os pacotes de dados são roteados para o bloco de controle e os de dados para os aceleradores. O bloco GbE implementa a camada MAC e para conexão com outros dispositivos possui a interface Gigabit Medium Independent Interface (GMII), que é um padrão industrial 52 4. Arquitetura Heterogênea e Reconfigurável utilizado para conexão com PHYs a figura 4.6b apresenta a o padrão de conexão dos sinais. Além disso, o bloco possui uma interface MDIO que permite configurar, controlar e receber estatı́sticas da PHY. 4.3 Fluxo de projeto para nova aplicações Atualmente, existem uma série de dificuldades encontrar blocos (IPs) que implementem os principais algoritmos utilizados em SDR. Além disso, é a implementação de novos IPs difı́cil pois os desenvolvedores devem ter um bom conhecimento do algoritmo a ser desenvolvido e de computação reconfigurável. Tentando minimizar este problema a arquitetura criou uma interface bem definida utilizando a NoC como infraestrutura de comunicação e sugeriu uma abordagem de alto nı́vel para desenvolvimento dos aceleradores. Para utilização da arquitetura este trabalho propõe um fluxo de projeto que tem por objetivo simplificar os procedimentos de criação de um SDR. A figura 4.7 ilustra as etapas do fluxo de projetos, as quais são resumidas a seguir: 1. Definição da aplicação pretende-se desenvolver, por exemplo, Rádio FM. 2. Especificar os algoritmos que ocupam mais processamento para sua implementação em hardware. 3. Implementar os algoritmos em HDL utilizando a abordagem de desenvolvimento em alto nı́vel para FPGA, ou realizar uma pesquisa por IPs que implementem o algoritmo. 4. Criar os wrappers para os aceleradores receberem e enviarem dados pela NoC. 5. Conectar todos os blocos e gerar o bitstream para a arquitetura alvo. 6. Definir os parâmetros de configuração e criar um wrapper para o acelerador no GNU Radio 7. Criar um programa para aplicação no host. Este fluxo de projeto simplifica os procedimentos para a criação de uma aplicação na arquitetura proposta e permite criar componentes reutilizáveis para futuras implementações. A principal dificuldade do fluxo é a verificação e validação dos aceleradores, mesmo sendo facilitada utilizando uma abordagem em alto nı́vel. As tarefas passı́veis de serem automatizadas são as conexões dos blocos para gerar o bitstream e a criação dos wrappers para o GNU Radio. 4.4. Resumo da Proposta 53 Figura 4.7: Fluxo de projeto de um SDR para a arquitetura. 4.4 Resumo da Proposta A arquitetura proposta no trabalho utiliza o conceito de computação reconfigurável empregando uma NoC para realizar a infraestrutura de comunicação, esta abordagem melhora problemas de escalabilidade, reconfigurabilidade e parâmetros elétricos. A granularidade adotada é do tipo grossa para a implementação dos algoritmos de processamento de sinais. A forma de programação utilizada pela arquitetura permite mapear tarefas de alto nı́vel de um rádio para um grafo, as tarefas são disparadas por um host para um bloco de controle que determina o roteamento dos dados. Para se beneficiar das vantagens do GNU Radio a arquitetura criou uma interface compatı́vel que permite o uso deste framework no host. Outro benefı́cio proporcionado pela arquitetura é o processamento em hardware dos algoritmos essenciais para um SDR, o que diminui drasticamente a ocupação do processador de uso geral do sistema (host), uma vez que os aceleradores realizam processamento nas fases iniciais do rádios. Fases onde há uma maior demanda de processamento e a alta quantidade de amostras por segundo e são beneficiados pela implementação paralela do hardware. No próximo capı́tulo serão abordados os aspectos de implementação da arquitetura e a comparação da proposta com a arquitetura USRP executando o GNU Radio. 54 4. Arquitetura Heterogênea e Reconfigurável Capı́tulo 5 Implementação e Avaliação da Proposta Este capı́tulo apresenta os resultados obtidos através de experimentos realizados com a implementação da arquitetura proposta. Para isso, inicialmente é apresentada a plataforma utilizada para a implementação da arquitetura proposta, assim como a descrição dos experimentos realizados e os resultados obtidos. 5.1 Implementação da Arquitetura Proposta Nesta seção apresenta-se o ambiente de hardware e software utilizado para desenvolver um protótipo da arquitetura proposta no trabalho. Primeiro, descreve-se as plataformas de desenvolvimento utilizadas e os módulos de hardware de prototipação. Em seguida, descrevese quais softwares comerciais foram empregados e os aplicativos implementados para habilitar o desenvolvimento do estudo de caso. 5.1.1 FPGA Virtex-6 Xilinx O FPGA Virtex-6 da Xilinx foi utilizado para implementar e testar a arquitetura pro- posta. Essa famı́lia foi desenvolvida em 2009 para dar sequência às famı́lias de alto desempenho da Xilinx, utiliza o processo de fabricação de 40 nm e possui os mais avançados recursos disponı́veis no mercado de FPGA. O modelo utilizado foi XC6VLX240T, que possui 241.152 células lógicas, 37680 slices, 768 Block Random Access Memorys (RAMs) de 18 Kb e 720 sinais para entrada e saı́da. Outros blocos também são fornecidos entre eles, o DSP48E1 slices para a implementação de 56 5. Implementação e Avaliação da Proposta estrutura tı́picas presentes em algoritmos para processamento de sinais, além de blocos para gerenciamento de sinais de clock, Peripheral Component Interconnect (PCI) Express e MACs Ethernet. Todos os testes utilizaram o kit ML605, a figura 5.1 apresenta seu diagrama de blocos. A placa possui o FPGA Virtex-6, um soquete SODIMM para memória DDR3 e diversas interfaces de comunicação e conectores para expansão. Para a sintetização de hardware, foi utilizado a ferramenta ISE Foundantion, versão 13.1, fornecida pela Xilinx no seu programa universitário. Figura 5.1: Digrama de blocos do kit ML605 [28]. 5.1.2 BESDR - Placa Front-End RF A Board for Embedded Software-defined Radio (BESDR) é uma plataforma aberta, de baixo custo desenvolvida no contexto deste trabalho pelo Laboratório de Integração Software e Hardware (LISHA) [16], tem como objetivo prover uma interface de RF para kits de desenvolvimento FPGA, compatı́vel com padrão FPGA Mezzanine Card (FMC) de conexão. Sendo basicamente composta por: • dois ADCs com quatro canais de 12-bit, amostragem de 64 M SP S. • dois DACs com quatro canais de 14-bit, amostragem de 128 M SP S. • quatro slots para placas filhas que suporta uma grande variedade de placas de RF. 5.1. Implementação da Arquitetura Proposta 57 • interface auxiliar para controle do rádio que suporta padrões como Received Signal Strength Indication (RSSI) e Automatic Gain Control (AGC). • um conector para a conexão aos kits de desenvolvimento. O principal objetivo da BESDR é permitir o desenvolvimento e prototipação rápida de SDRs de baixo custo. A figura 5.2 apresenta um exemplo de utilização da placa e a figura 5.3 o diagrama de blocos da BESDR. Figura 5.2: Exemplo de utilização da BESDR. A interface de conexão utilizado pela BESDR o FMC, foi um padrão desenvolvido pelo consorcio American National Standards Institute (ANSI) / VITA 57.1 formado por diversas empresas fabricantes e usuárias de FPGA. O propósito é especificar padrões elétricos, mecânicos de conexão e desta forma permitir a flexibilização, reuso do hardware e criar um mercado de placas de aplicação para FPGAs [1]. O conector utilizado na BESDR é o tipo FMC High Pin Count (HPC), por meio dele a placa: • recebe os sinais de alimentação: +12V , +3.3V , 2.5V e GND. • recebe o clock de referência dos ADCs, DACs e placas filhas. • recebe os barramentos para configuração e controle: SPI, I2C e UART. • externaliza os sinais dos ADCs e DACs. 5.1.2.1 Caminhos de Recepção e de Transmissão Os quatro canais de recepção dos ADCs presentes na placa podem realizar uma amostragem de até 64 M SP S. Em teoria, pode-se digitalizar uma banda de até 32 M Hz, caso realize-se amostragem de uma IF com uma largura de banda maior que 32 M Hz ocorrerá o fenômeno de aliasing, e a banda de interesse será mapeada entre -32 M Hz e +32 M Hz [42]. Quanto maior a frequência do sinal amostrado maior é a degradação do Signal-to-Noise Ratio (SNR) por meio do jitter. 58 5. Implementação e Avaliação da Proposta Figura 5.3: Diagrama de blocos da BESDR. A entrada de tensão dos ADCs é de 2 V pico-a-pico e a impedância de 50 ohms, ou seja, potência de 40 mW ou 16 dBm. Um Programmable Gain Amplifier (PGA) é usado antes dos ADCs para amplificar o sinal de entrada, e utilizar toda a faixa de entrada do ADCs, caso o sinal for fraco. A faixa de ganho do PGA é de até 20 dB. É possı́vel utilizar outras taxas de amostragem submúltiplas de 128 M Hz, tais como 64 M SP S, 42,66 M SP S, 32 M SP S, 25,6 M SP S e 21,33 M SP S. A figura 5.4a apresenta o caminho de recepção. No caminho de transmissão, também há quatro canais como uma taxa de amostragem de até 128 M SP S, de modo que a frequência de Nyquist é de 64 M Hz. Entretanto, utilizar uma faixa de frequência de até 50 M Hz torna o processo de filtragem mais simples. Os DACs podem fornecer um 1 V de pico para uma carga de 50 ohms, ou seja potência de 10 mW ou 10 dBm. Há também um PGA utilizado após a DAC, fornecendo até obter 20dB. O PGAs em ambos os caminhos, recepção e transmissão, são programáveis. A figura 5.4b apresenta o caminho de transmissão. Em princı́pio, os quatro canais de entrada e saı́da utilizam amostras reais. Entretanto, haverá mais flexibilidade e banda se amostras complexas forem utilizadas. Desta forma resultando em dois canais de entrada complexos e dois canais de saı́da complexos [15]. 5.1. Implementação da Arquitetura Proposta 59 (a) Caminho de Recepção do ADC (b) Caminho de Transmissão do DAC. Figura 5.4: Caminhos de Recepção e Transmissão do ADC e DAC. 5.1.2.2 Placas filhas A BESDR possui quatro slots para placas filhas, onde pode-se conectar até duas placas de recepção e duas de transmissão. As placas implementam o Front-End RF analógico, a função delas é converter as frequências da portadora de interesse para uma IF possibilitando a digitalização do sinal pelo ADC na recepção, o caminho inverso é feito para transmissão. Caso seja utilizada amostragem real, são disponı́veis duas secões RF independentes em cada placa filha, podendo ser utilizadas até quatro antenas em todo o sisetma. Se amostragem complexa for utilizada, cada placa filha suporta uma interface RF. A BESDR não utiliza nenhum filtro anti-aliasing ou de reconstrução, o que permite uma grande flexibilidade na escolha da placa filha a ser utilizada. A interface, para as placas filhas da BESDR, possui compatibilidade com as placas utilizadas pela USRP [23]. Atualmente existe uma variedade de placas filhas compatı́veis com BESDR, que trabalham com diferentes faixas de frequência e cobrem todo o espectro livre. Por exemplo: BasicTX/RX: placas filhas básicas equipadas com conectores SubMiniature version A (SMA) que realizam interfaces para a conexão de Front-ends não compatı́veis com a BESDR. TVRX: placa filha de recepção equipada com o Microtune 4937 Cable Modem, opera na faixa de frequência de 50 M Hz a 800 M Hz, utilizada em aplicações como FM e Very High Frequency (VHF). 60 5. Implementação e Avaliação da Proposta RFX1800: placa filha com as cadeias de recepção e transmissão independentes, opera na faixa de frequência de 1.5 GHz a 2.1 GHz, utilizada em aplicações de telefonia celular. RFX2400: placa filha com as cadeias de recepção e transmissão independentes, opera na faixa de frequência de 2.3 GHz a 2.9 GHz, utilizada em aplicações como Wi-Fi. 5.1.2.3 Módulo de controle para BESDR Para a utilização da placa BESDR são utilizados os blocos de controle e RF Interface e da arquitetura proposta, estes permitem o controle, configuração, recepção e transmissão dos dados. O bloco de controle realiza a configuração dos parâmetros dos ADCs, DACs e das placas filhas, por meio das interfaces seriais (I2C e SPI). Já o bloco RF Interface realiza a interface paralela com os ADCs e DACs, como também todo o processamento DFE que permite realizar uma gama de configurações, como por exemplo, a mudança da frequência central, possibilitando ao sistema a troca de canal instantaneamente. 5.1.3 Interfaceamento da Proposta com GNU Radio A integração da arquitetura proposta com o GNU Radio é facilitada devido ao UHD, que é uma API e um conjunto de device drivers para comunicação com as plataformas USRP. Dessa forma, o suporte para arquitetura proposta foi realizado adicionando ao UHD uma extensão baseada na implementação da USRP2, que possibilita a comunicação entre o host e a arquitetura. Para tornar possı́vel a utilização do GNU Radio decidiu-se por fazer uma especialização do bloco gr-uhd já existente, pois muitas configurações (DDC, filtros, placas filhas) que são realizadas nas plataformas USRP também são feitas na arquitetura proposta. A implementação atual do GNU Radio fornece uma interface que provê uma camada de abstração as plataformas USRP, na forma dos blocos source e sink, a esta interface foram adicionadas classes que implementam os blocos para a arquitetura proposta. Nas classes foram adicionados métodos que permitem configurar o novo comportamento da plataforma, por exemplo, configurar o roteamento dos dados entre núcleos da NoC e parâmetros dos aceleradores em hardware. Na figura 5.5 é possı́vel ver o diagrama de classes simplificado da nova interface proposta estendida da interface original. Um ponto importante a ser salientado é cada vez que for adicionado um novo acelerador em hardware, também é necessário adicionar métodos especı́ficos relativos as suas configurações as classes da arquitetura. 5.2. Avaliação da Arquitetura Proposta 61 Figura 5.5: Diagrama de Classes simplificado da interface de abstração da arquitetura com UHD e GNU Radio. 5.2 Avaliação da Arquitetura Proposta O experimento de teste criado para a avaliação da arquitetura é a realização da inter- ceptação de uma comunicação ponto-a-ponto do tipo General Mobile Radio Service (GMRS), utilizada nas comunicações de rádios Walkie-talkie (figura 5.6a). Este tipo de aplicação é amplamente utilizado em ações militares e de segurança pública, por exemplo, interceptação de comunicações entre criminosos. Para a realização de uma análise comparativa o cenário de testes será implementado de duas formas distintas: (1) utilizando a arquitetura GNU Radio e USRP; (2) o protótipo da arquitetura proposta utilizando a BESDR com placas-filhas TVRX2, kit ML605 e um host rodando GNU Radio com as modificações realizadas. Com o intuito de criar um ambiente mais próximo do real e também coletar um número maior de dados para a análise da arquitetura, foi desenvolvido um cenário de testes com múltiplos canais. Porém, devido a dificuldade de criar um ambiente de experimentação composto por vários rádios Walkie-talkie se comunicando, utilizou-se uma USRP junto com o GNU Radio para emular a geração de múltiplos canais como apresentado na figura 5.6b. A USRP realiza a transmissão de um stream com 8 canais (tabela 5.1) narrowband FM com 12,5 KHz de banda contendo áudios distintos. 5.2.1 Implementação do experimento Os principais algoritmos utilizados para a implementação do experimento de teste pro- posto são: (a) spectrum sensing; (b) separação dos canais de interesse; (c) demodulador 62 5. Implementação e Avaliação da Proposta (a) Testes com canais GMRS (b) Testes com múltiplos canais utilizando USRP. Figura 5.6: Ambiente de testes. Tabela 5.1: Lista dos canais GMRS Canal 1 2 3 4 5 6 7 8 Frequência (M Hz) 462,550 462,575 462,600 462,625 462,650 462,675 462,700 467,725 5.2. Avaliação da Arquitetura Proposta 63 FM narrowband. A figura 5.7 apresenta um fluxograma do algoritmo de recepção, os blocos de cor cinza representam as partes que estão sendo executados no hardware, por meio de aceleradores na arquitetura proposta. O algoritmo pode ser dividido nas seguintes etapas: 1. Recebimento dos dados da janela de interesse e realização de DFE (decimação e filtragem). 2. Análise do espectro para encontrar as portadoras dos canais que estão se comunicando. 3. Separação dos canais encontrados. 4. Demodulação dos canais narrowband FM. 5. Gravação do stream de dados de cada canal em arquivos. Figura 5.7: Algoritmo de recepção do experimento de teste. O algoritmo de spectrum sensing, que é amplamente utilizado em aplicações de rádios cognitivos, é baseado em um detector de energia utilizando uma FFT. De forma básica funciona aplicando uma FFT de 1024 pontos ao sinal que é recebido após a decimação e filtragem. Ao resultado no domı́nio da frequência é realizado uma busca para encontrar frequências que possuem energia superior a 30 dBm permitindo, dessa forma, encontrar portadoras ativas. Nas frequências ativas encontradas é realizado uma correlação para definir as frequências minima e máxima (Fmin-Fmax), para então identificar os canais que podem ser comparados com uma base de dados com canais pré-existentes. Após determinar os canais ativos é necessário realizar a separação dos mesmos para a demodulação. A separação dos canais é feita utilizando o algoritmo de DDC, este bloco recebe a janela de interesse com todos os canais, então realiza a filtragem e translação de frequência para a banda base de cada canal. Para realizar a separação dos canais são feitas as configurações de frequência central e a taxa de decimação para os diferentes canais nos blocos de DDC. Já a implementação que faz a simulação de múltiplos canais se comunicando, utilizando a USRP e GNU Radio, é feita modulando com FM narrowband arquivos de áudio do tipo 64 5. Implementação e Avaliação da Proposta wav com amostragem de 8 KHz, por fim multiplicando cada sinal por um cosseno com a frequência referente ao seu canal, dessa forma, é feita uma multiplexação de todos os canais na frequência como é apresentado na figura 5.8. Figura 5.8: Domı́nio da frequência dos 8 canais transmitidos para a realização dos testes. 5.3 Avaliação dos Resultados Esta seção apresenta os resultados obtidos através de experimentos realizados e é or- ganizado de forma a agrupar os aspectos de análise. A performance foi analisada de forma comparativa, com e sem a arquitetura proposta. Outro aspecto abordado é o consumo dos recursos da FPGA para a implementação dos testes. 5.3.1 Análise de desempenho Para auxiliar a avaliação e análise de desempenho dos experimentos foi desenvolvido o bloco bench graph para o GNU Radio. Esse bloco utiliza o utilitário mpstat do pacote sysstat do Linux, que apresenta a ocupação de cada processador disponı́vel na máquina ou a média global do sistema. A porcentagem de uso da CPU é separado pelo mpstat em sete categorias: user, nice, system, iowait, irq, soft e idle. A duas primeiras categorias (user e nice) apresentam a porcentagem do uso da CPU em espaço de usuário com aplicações, sendo que a segunda categoria separa o que é executado com prioridade “nice”. As categorias system, iowait, irq e soft apresentam métricas relacionadas com a porcentagem do uso da CPU pelo kernel, requisição de disco, interrupções e interrupções de software, respectivamente. Por fim, a categoria (idle) apresenta o tempo em que a CPU fica inativa. Para simplificar a apresentação dos resultados a saı́da do mpstat foi agrupada em três 5.3. Avaliação dos Resultados 65 categorias USR, SYS e IDLE. A USR agrupa as duas primeiras categorias (user e nice) e representa de forma geral o gasto de CPU pelas implementações dos cenários propostos. A SYS agrupa os valores do consumo de processamento das tarefas do sistema operacional (system, iowait, irq e soft). Por fim, o IDLE é o valor direto retirado das medições com mpstat. Para a análise foi utilizado o valor da média global gerada pelo mpstat, que representa melhor o consumo dos recursos do sistema por cada implementação. As medições dos testes propostos foram feitas com intervalos de 2 segundos e os testes foram executadas com prioridade “tempo real” durante 600 segundos (300 medições por teste), o que foi suficiente uma vez que as implementações não apresentam grandes oscilações no processamento dos fluxos de amostra, os quais são constantes durante todo o teste. O host utilizado para o ambiente de testes foi composto por um PC com processador Intel QuadCore de 2.83 GHz, com 4GB de RAM e rodando Ubuntu 11.04 com o kernel 2.6.38-15. A placa de rede gigabit utilizada para interface com a arquitetura proposta foi a Broadcom BCM5755 integrada. As figuras 5.9a e 5.9b apresentam os resultados da análise de desempenho para o cenário de testes, utilizando a arquitetura tradicional e a arquitetura proposta respectivamente. As medições de cada uma das categorias (USR, SYS e IDLE ) foram plotadas levando em consideração o uso dos quatro núcleos do processador utilizado. Como esperado, as implementações tradicionais mostraram desempenho bastante inferior se comparado à arquitetura proposta. Isto pode ser observado pela curva USR e SYS que somadas mostram uma ocupação média maior que 340% na implementação com a arquitetura original, o que torna o computador praticamente sem responsividade para outras possı́veis tarefas. A figura 5.10 apresenta as médias de ocupação da CPU no cenário de testes. A ocupação é dividia em USR e SYS para a implementação com a arquitetura proposta, respectivamente 27% e 10%. E também para implementação tradicional, respectivamente 310% e 33%. A diminuição de 283% de ocupação da CPU por tarefas em espaço de usuário quando a arquitetura proposta é utilizada mostra um ganho de performance significativo. Além disso, a diminuição do fluxo de dados, que possuem uma parte tratada diretamente no hardware, possibilita uma diminuição da ocupação da CPU pelas tarefas do sistema de 23%. Foram realizadas medições para verificar o desempenho das funções aceleradas em hardware comparando-as com suas implementações no GNU Radio. Para auxiliar nessa tarefa foram utilizadas as ferramentas oprofile [37] e ChipScope presente no ISE. Oprofile permite realizar análise dinâmica de programas em execução em ambientes Linux, permitindo realizar medições do tempo de execução das funções de um programa. A tabela 5.2 apresenta a comparação do tempo médio para a execução de diferentes tamanhos FFTs entre o acelerador em hardware e a implementação no host. Para o tamanho da janela da FFT utilizada no experimento de 1024 pontos a implementação em hardware possui um desempenho 28 vezes maior aproximadamente. 66 5. Implementação e Avaliação da Proposta (a) Implementação USRP e GNU Radio (b) Implementação com a arquitetura proposta Figura 5.9: Ocupação da CPU no cenário de testes 5.3. Avaliação dos Resultados 67 Figura 5.10: Ocupação média da CPU no cenário de testes. Tabela 5.2: Análise de tempo para diferentes tamanhos de janela de FFT. Janela FFT 64 128 256 512 1024 2048 4096 FPGA Média (µs) 4.21 6.12 10.98 19.47 34.61 68.34 125.38 Host Média (µs) 937.89 912.25 1170.07 944.58 995.26 1055.14 1171.35 68 5. Implementação e Avaliação da Proposta A figura 5.11 apresenta uma comparação do número de FFTs por segundo em função do tamanho da janela para as implementações em hardware e executadas no host. Como era esperado há um grande ganho de performance o que auxilia diminuir a latência para implementação de um rádio já que essa operação é utilizada em diversas tecnologias de comunicações. Figura 5.11: Número de FFTs por segundo em função do tamanho da janela. 5.3.2 Análise de latência da RTSNoC Para realizar uma análise de latência do roteador da rede RTSNoC, foram gerados padrões de tráfegos de pacotes e para uma análise foi utilizada a ferramenta de simulação presente no ISE. A figura 5.12 mostra um diagrama de forma de onda da simulação da comunicação entre os núcleos conectados ao roteador RTSNoC. Nessa comunicação, após o reset do sistema os núcleos localizados nos canais NN, NE, ES e SS enviam pacotes simultaneamente para o canal SE. A ordem de prioridade para acessar o mesmo canal é da mais alta para a mais baixa: NN, NE, SE, SS, SW, NW e WW. Após o reset do sistema os núcleos enviam ao mesmo tempo o pedido para enviar os pacotes. Os pacotes enviados por cada canal de comunicação são: • 08811300AAh (canal NN); • 08891300CCh (canal NE); • 08911300EEh (canal EE); 5.3. Avaliação dos Resultados 69 • 08A11300FFh (canal SS). Neste caso, dado o critério de prioridade, o núcleo localizado no canal de NN envia seu pacote para o canal de SE, como mostrado na figura 5.12 (1). Seguindo a ordem de prioridade, os outros pacotes são enviados do NE, EE, e terminando com o envio do pacote de SS, como mostrado na figura 5.12, (2) até (4). A ordem de entrega dos pacotes é confirmado na figura 5.12(5). Figura 5.12: Diagrama de forma de onda da utilização da RTSNoC. A latência do roteador RTSNoC pode ser visto na figura 5.12 (6), onde o atraso do pacote enviado pelo canal NN é dois ciclos de clock. Um ciclo devido o processo de arbitragem e um segundo ciclo devido ao processo de roteamento, ou seja, a latência para envio de um pacote é de dois ciclos de clock. Aos pacotes dos canais NE, EE e SS que estão competindo pelo canal SE é adicionado mais um ciclo para a entrega. Por exemplo, o pacote enviado por SS tem um ciclo de clock de arbitragem, mais um ciclo de atraso devido o pacote de NN e mais dois devido os pacotes de NE e EE, por fim, outro devido o envio de seu próprio pacote, totalizando cinco ciclos de atraso. Portanto, os limites da latência de um fluxo de pacotes na RTSNoC, pode ser calculado considerando que o mı́nimo de latência é o dobro do número de roteadores entre a fonte do pacote até o seu destino, como mostra: LM IN = NROU ∗ 2, (5.1) onde LM IN é o mı́nimo de latência e NROU é o número de roteadores no caminho entre a 70 5. Implementação e Avaliação da Proposta origem do pacote e o destino do pacote. A latência máxima é determinada adicionando uma unidade para o maior número de núcleos que podem competir por algum canal de destino em um determinado instante, para cada roteador no caminho entre a fonte de pacote e o destino do pacote. A expressão que determina a latência máxima é dada por: LM AX = X (NREQ + 1), (5.2) onde LM AX é o máximo de latência e NREQ é o maior número de canais (ou núcleos) que pode requerer a mesmo canal de comunicação como o destino de sua mensagens ao mesmo tempo, para cada roteador no caminho entre a fonte do pacote e de destino final. Outros cenários foram testados utilizando diferentes configurações de tráfego e diferentes topologias de rede usando mais de um roteador. Em todos os casos, a máxima latência para a rede foi respeitada, independentemente do tráfego ou topologia usada no teste. 5.3.3 Consumo dos Recursos da FPGA Na tabela 5.3 é apresentado o consumo dos recursos da FPGA Virtex-6 para a im- plementação do experimento de testes na arquitetura proposta. Os custos são separados em Slices, Flip-Flops, LUTs e blocos DSP48E1 que possuem multiplicadores em hardware (18x18 Mult). Tabela 5.3: Consumo de recursos para realização do experimento. Implementação RTSNoC FFT Filtro FIR Controle RF Interface Separação de canais Gigabit Ethernet 5.4 Slices 807 4089 1127 1290 2946 8756 1206 FFs 1131 4794 1058 2799 2252 6988 1198 LUTs 429 2461 1578 2585 3285 12526 1526 DSP48E1 * 16 4 * 4 18 * Considerações Finais A principal vantagem da arquitetura proposta perante o sistema que utiliza USRP juntamente com o GNU Radio é a capacidade da migração dos algoritmos DSP executados no host para o hardware sem a perda da flexibilidade para as implementações de SDR. Isso diminuiu drasticamente a ocupação do processador de uso geral do sistema (host), uma vez que o paralelismo intrı́nseco existente na separação de diversos canais, que exige o processamento concomitante do mesmo grupo de dados, e a alta quantidade de amostras por segundo, proveniente das fases iniciais do rádio, são caracterı́sticas onerosas para implementações em software e foram beneficiados pela implementação paralela do hardware. 5.4. Considerações Finais 71 A RTSNoC apresenta uma latência máxima de dois ciclos de clock independente das taxas de dados, diferente de outas implementações de NoC que mostram um comportamento exponencial de latência com o aumento da taxa de dados [9]. Esse comportamento de uma latência máxima e a capacidade de rodar a uma frequência superior de 200 M Hz aliado com a utilização de uma abordagem de granularidade grossa dão a arquitetura uma vazão suficiente para aplicações SDR. A área ocupada pela estrutura de comunicação e os blocos da arquitetura não utiliza muitos recursos das famı́lias de FPGA de alto desempenho, como é o caso do dispositivo FPGA Virtex-6 utilizado para a prototipação. Porém, para o uso de dispositivos de menor capacidade o valor consumido torna-se um problema como também a frequência de operação. 72 5. Implementação e Avaliação da Proposta Capı́tulo 6 Conclusões Este trabalho trabalho foi desenvolvido na direção de explorar arquiteturas capazes de atender as demandas de aplicações atuais para SDR, como por exemplo rádios cognitivos. O trabalho analisou os algoritmos mais utilizados para implementação das camadas fı́sicas dos rádios e propôs uma arquitetura para SDRs utilizando uma abordagem de granularidade grossa baseada em aceleradores em hardware para os algoritmos mais utilizados. Como alternativa de interconexão, foi explorado o uso da RTSNoC devido a vantagem desta tecnologia para a interconexão de múltiplos blocos. Como pontos positivos da proposta, pode-se considerar a escalabilidade, capacidade de exploração de paralelismo e uma interface de comunicação bem definida para os blocos. A arquitetura proposta permitiu o deslocamento das fases com alto consumo de processamento, que necessitam altas taxas de amostragem, para o hardware reconfigurável. Os testes comparativos entre a implementação tradicional e a arquitetura proposta demonstraram ganhos significativos no aproveitamento dos recursos do sistema, relacionados mais especificamente ao desempenho e as interfaces de comunicação. Como contribuição destaca-se também o desenvolvimento da placa BESDR, que realiza um front-end RF para kits de desenvolvimento FPGA, essa plataforma auxilia no desenvolvimento de futuras arquiteturas para SDR e foi utilizada para a prototipação da arquitetura proposta. A maior desvantagem encontrada foi a falta de aceleradores em hardware e a dificuldade de implementação dos mesmos. No entanto, foi proposto a utilização de uma abordagem de desenvolvimento de alto nı́vel para FPGAs utilizando as ferramentas System Generator e Simulink. Outra desvantagem é a necessidade da utilização de um host para configuração, controle e a implementação das camadas de mais alto nı́vel de um rádio. 74 6. Conclusões 6.1 Trabalhos Futuros Como perspectivas de trabalhos futuros, no que se refere a arquitetura, as seguintes atividades podem ser citados: • Adicionar à arquitetura processadores hardcore de alto desempenho, por exemplo, ARM Cortex-A8. Esse tipo de processadores já estão disponı́veis nas últimas gerações de FPGA (Virtex 7), podem trazer vantagens como diminuir problemas de latência, não ter a necessidade um host externo. Dessa forma, possibilitar a miniaturização do sistema, diminuir o consumo de energia permitindo a utilização em sistemas embarcados. • Adicionar à arquitetura co-processadores SIMD como blocos conectados na NoC para permitir o desenvolvimento de algoritmos DSPs especı́ficos e complexos. • Criação de uma ferramenta capaz de gerar o HDL para arquitetura a partir de um repositório de aceleradores, semelhante a ferramenta gnuradio-companion que permite a geração automática do flowgraph do GNU Radio a partir de seus blocos. • Desenvolver mais aceleradores a partir de blocos do GNU Radio com abordagens de descrição de hardware de alto nı́vel como System C. • Explorar a reconfiguração parcial e dinâmica dos módulos de processamento no FPGA. Apêndice A Considerações sobre os aceleradores da Arquitetura A.1 Fast Fourier Transform A Discrete Fourier Transform (DFT) é um algoritmo fundamental para processamento digital de sinais é utilizada em muitas aplicações, é a representação finita e discreta da transformada de Fourier. A DFT do sinal discreto X(k), k = 0, . . . , N − 1 de uma sequência x(n), n = 0, . . . , N − 1 é definida como: X(k) = N −1 X x(n)e−jnk2π/N k = 0, . . . , N = 1 (A.1) n=0 onde N é o tamanho da transformada e j = √ −1. A transformada inversa (IDFT) é dada por: x(k) = N −1 1 X X(k)ejnk2π/N N n = 0, . . . , N = 1 (A.2) k=0 O cálculo direto de uma DFT é de alto custo computacional. Um método mais eficiente para esse cálculo é o algoritmo da Fast Fourier Transform (FFT), o qual reduz drasticamente o número de operações necessárias para se chegar ao mesmo resultado da DFT. Enquanto numa DFT de N pontos o número de operações necessárias (adições, subtrações e multiplicações) é proporcional a N 2 , numa FFT esta razão de proporção é reduzida para log2 N . A arquitetura possui um acelerador que implementa uma FFT de 256 pontos, para realizar o calculo utiliza o algoritmo padrão Radix-2 Cooley-Tukey (também chamado de butterfly), ou seja, a FFT de 256 pontos é decomposta em log2 (N ) estágios, e cada estágio contém uma Radix-2 butterfly, a figura A.1 apresenta o diagrama de um estágio do acelerador. O bloco também é capaz de calcular a transformada inversa (IFFT). 76 A. Considerações sobre os aceleradores da Arquitetura Figura A.1: Representação gráfica da FFT. A.2 Filtro FIR O filtro Finite Impulse Response (FIR) é um dos blocos básicos mais utilizados em sistemas DSP, é um tipo de filtro digital caracterizado por uma resposta ao impulso que torna nula após um tempo finito. A função transferência de um filtro FIR de ordem N é dada por: Figura A.2: Representação gráfica do filtro FIR. Y (n) = N X i=0 k(i)S(n − 1), (A.3) A.2. Filtro FIR 77 onde S(n) é o sinal de entrada, Y (n) é o sinal de saı́da, N a ordem do filtro e k(i) são os coeficientes do filtro que determinam a resposta em frequência do sistema. A figura A.2 mostra que a mesma função pode ser realizada com um grupo de elementos de delay (z −1 ) e multiplicadores, com um delay e um multiplicador para cada tap do filtro seguidos por uma função de soma. Esse tipo de filtro em geral é implementado em DSPs com instruções que multiplicam dois operandos e acumulam o resultado (Multiply and Accumulate (MAC)) em um único ciclo de clock. E possı́vel, no entanto, implementá-lo como uma cascata de operações, o que possibilita uma implementação paralela e mais eficiente [49]. O acelerador da arquitetura implementa um filtro FIR com 64 taps e leva 8 clocks do FPGA para realizar a operação. Os coeficientes para esse filtro deve ser carregados por pacotes de configuração enviados pelo bloco de controle. 78 A. Considerações sobre os aceleradores da Arquitetura Apêndice B Geração ondas FM narrowband Existem, essencialmente, dois métodos básicos de geração de ondas FM: direto e indireto [53]. No método indireto a onda modulante é usado primeiramente para produzir uma onda FM de banda estreita, e depois uma multiplicação de frequência para a translação para faixa desejada. Já o no método direto a frequência da portadora é variada diretamente de acordo com o sinal modulante. Figura B.1: Diagrama de blocos para modulador FM narrowband. Neste caso então utilizando o FM indireto considere primeiro a geração de uma onda FM de banda estreita. Para isso, a expressão de uma onda FM s1 (t) que é escrita na seguinte forma em função da onda modulante m(t): s1 (t) = A1 cos(2πf1 t) − A1 sin(2πf1 t)φ1 (t) Zt = A1 cos(2πf1 t) − 2πk1 A1 sin(2πf1 t) m(t)dt (B.1) 0 onde f1 é a frequência da portadora e A1 é a amplitude da portadora. O argumento angular φ1 de s1 (t) está relacionado com m(t) onde k1 é a sensibilidade de frequência do modulador. A equação define uma onda FM narrowband e a partir dela é construı́do o diagrama de blocos apresentado na figura B.1, o fator de escala 2πf1 é tratado pelo multiplicador modulador. 80 B. Geração ondas FM narrowband A onda modulada produzida por esse modulador de banda estreita difere de um FM ideal, pois apresenta modulação em amplitude residual distorção harmônica na frequência de modulação. Porém, ao restringir o ı́ndice de modulação a β ≤ 0.3rad, os efeitos de AM residual e PM harmônico são limitados a nı́veis negligenciáveis. O passo seguinte no método de FM indireto é o de multiplicação na frequência. Basicamente, um multiplicador de frequência consiste num dispositivo não linear seguido por um filtro passa-banda. Referências Bibliográficas [1] FPGA Mezzanine Card (FMC) standard. ANSI, New York, NY, 2008. Approved in 2008, revised in 2010. [2] B. Ackland, D. Raychaudhuri, M. Bushnell, C. Rose, I. Seskar, T. Sizer, D. Samardzija, J. Pastalan, A. Siegel, J. Laskar, et al. High performance cognitive radio platform with integrated physical and network layer capabilities. NSF CNS-0435370, 2005. [3] R. Andraka. A survey of cordic algorithms for fpga based computers. In Proceedings of the 1998 ACM/SIGDA sixth international symposium on Field programmable gate arrays, pages 191–200. ACM, 1998. [4] O. Anjum, T. Ahonen, F. Garzia, J. Nurmi, C. Brunelli, and H. Berg. State of the art baseband dsp platforms for software defined radio: A survey. EURASIP Journal on Wireless Communications and Networking, 2011(1):5, 2011. [5] P.J. Ashenden. The student’s guide to VHDL. Morgan Kaufmann, 2008. [6] L. Benini and G. De Micheli. Networks on chips: A new soc paradigm. Computer, 35 (1):70–78, 2002. [7] L. Benini and G. De Micheli. Networks on chips: Technology and Tools. Morgan Kaufmann, 2006. [8] E. Bolotin, I. Cidon, R. Ginosar, and A. Kolodny. Qnoc: Qos architecture and design process for network on chip. Journal of Systems Architecture, 50(2):105–128, 2004. [9] L. Bononi and N. Concer. Simulation and analysis of network on chip architectures: ring, spidergon and 2d mesh. In Proceedings of the conference on Design, automation and test in Europe: Designers’ forum, pages 154–159. European Design and Automation Association, 2006. [10] F. Bouwens, M. Berekovic, A. Kanstein, and G. Gaydadjiev. Architectural exploration of the adres coarse-grained reconfigurable array. Reconfigurable Computing: Architectures, Tools and Applications, pages 1–13, 2007. 82 REFERÊNCIAS BIBLIOGRÁFICAS [11] C. Brunelli, F. Cinelli, D. Rossi, and J. Nurmi. A vhdl model and implementation of a coarse-grain reconfigurable coprocessor for a risc core. In Research in Microelectronics and Electronics 2006, Ph. D., pages 229–232. IEEE, 2006. [12] G. Cichon, P. Robelly, H. Seidel, E. Matúš, M. Bronzel, and G. Fettweis. Synchronous transfer architecture (sta). Computer Systems: Architectures, Modeling, and Simulation, pages 193–207, 2004. [13] K. Compton and S. Hauck. Reconfigurable computing: a survey of systems and software. ACM Computing Surveys (csuR), 34(2):171–210, 2002. [14] W.J. Dally and B. Towles. Route packets, not wires: On-chip interconnection networks. In Design Automation Conference, 2001. Proceedings, pages 684–689. IEEE, 2001. [15] A.D. Datasheet. Mixed-signal front-end (mxfe) processor for broadband communications, 2002. [16] Laboratório de Integração de Software e Hardware. Board for embedded software-defined radio, 2012. URL http://www.lisha.ufsc.br/Project+eSDR. [17] Roberto de Matos, Antônio Augusto Fröhlich, and Leandro Buss Becker. Using Multiple Channels to Improve SDR Flexibility and Performance. In International Conference on Computing, Networking and Communications, pages 1031–1035, Maui, U.S.A., January 2012. ISBN 978-1-4673-0009-4. [18] R. Dhar, G. George, A. Malani, and P. Steenkiste. Supporting integrated mac and phy software development for the usrp sdr. In Networking Technologies for Software Defined Radio Networks, 2006. SDR’06.1 st IEEE Workshop on, pages 68–77. IEEE, 2006. [19] C. Dick and J. Hwang. Fpgas: A platform-based approach to software radios. Software Defined Radio, pages 235–272, 2004. [20] C.H. Dick, S. Jose, and H.M. Pedersen. Design and implementation of high-performance fpga signal processing datapaths for software defined radios. In Embedded Systems Conference, pages 1–16, 2001. [21] G. Eichinger, M. Leeser, and K. Chowdhury. An fpga spectrum sensing accelerator for cognitive radio. 2011. [22] Blossom Eric. Exploring gnu radio, 2012. URL http://www.gnu.org/software/gnuradio/doc/exploring-gnuradio.html. [23] M. Ettus. Universal software radio peripheral. Ettus Research, Mountain View, CA, 2009. [24] J. Gao. 10 100 1000 mbps tri-mode ethernet mac specification, 2006. REFERÊNCIAS BIBLIOGRÁFICAS 83 [25] F. Garzia, C. Brunelli, C. Giliberto, and J. Nurmi. Implementation of w-cdma cell search on a runtime reconfigurable coarse-grain array. In EUROCON 2009, EUROCON’09. IEEE, pages 411–415. IEEE, 2009. [26] K. Goossens, J. Dielissen, and A. Radulescu. Æthereal network on chip: concepts, architectures, and implementations. Design & Test of Computers, IEEE, 22(5):414–421, 2005. [27] P. Guerrier and A. Greiner. A generic architecture for on-chip packet-switched interconnections. In Proceedings of the conference on Design, automation and test in Europe, pages 250–256. ACM, 2000. [28] M.L.H.U. Guide. 1. overview. ML605 Hardware User Guide, 2009. [29] D. Haessig, J. Hwang, S. Gallagher, and M. Uhm. Case-study of a xilinx system generator design flow for rapid development of sdr waveforms. In SDR technical conference, pages 14–18, 2005. [30] S. Hauck and A. DeHon. Reconfigurable computing: the theory and practice of FPGAbased computation. Morgan Kaufmann Pub, 2008. [31] S. Haykin. Sistemas de Comunicação-Analógicos e Digitais. Artmed, 2004. [32] J. Hwang, B. Milne, N. Shirazi, and J. Stroomer. System level tools for fpgas. Proceedings FPL 2001, 2001. [33] F. Karim, A. Nguyen, and S. Dey. An interconnect architecture for networking systems on chips. Micro, IEEE, 22(5):36–45, 2002. [34] P.B. Kenington. RF and baseband techniques for software defined radio. Artech House, 2005. [35] S. Kumar, A. Jantsch, J.P. Soininen, M. Forsell, M. Millberg, J. Oberg, K. Tiensyrja, and A. Hemani. A network on chip architecture and design methodology. In VLSI, 2002. Proceedings. IEEE Computer Society Annual Symposium on, pages 105–112. IEEE, 2002. [36] B.P. Lathi. Sinais e sistemas lineares. Bookman, 2007. [37] J. Levon. Oprofile manual. Victoria University of Manchester, 2004. [38] T. Limberg, M. Winter, M. Bimberg, R. Klemm, MBS Tavares, H. Ahlendorf, E. Matúš, G. Fettweis, H. Eisenreich, G. Ellguth, et al. A heterogeneous mpsoc with hardware supported dynamic task scheduling for software defined radio. In Design Automation Conference (DAC’09). Citeseer, 2009. [39] D. Liu. Embedded DSP processor design: application specific instruction set processors, volume 2. Morgan Kaufmann, 2008. 84 REFERÊNCIAS BIBLIOGRÁFICAS [40] D. Liu, A. Nilsson, E. Tell, D. Wu, and J. Eilert. Bridging dream and reality: programmable baseband processors for software-defined radio. Communications Magazine, IEEE, 47(9):134–140, 2009. [41] M. Löhning, T. Hentschel, and G. Fettweis. Digital down conversion in software radio terminals. In Proceedings of the 10. European Signal Processing Conference (EUSIPCO, volume 3, pages 1517–1520. Citeseer, 2000. [42] R.G. Lyons. Understanding digital signal processing. Prentice Hall PTR, 2004. [43] R. Matos. Uma arquitetura de canais para rádios definidos por software de múltiplas camadas. 2010. [44] C. Maxfield. The Design warrior’s guide to FPGAs: Devices, tools and flows, volume 1. Elsevier, 2004. [45] J. Mitola. The software radio architecture. Communications Magazine, IEEE, 33(5): 26–38, 1995. [46] J. Mitola. Software radio architecture. Wiley Online Library, 2000. [47] J. Mitola III. Software radios: Survey, critical evaluation and future directions. Aerospace and Electronic Systems Magazine, IEEE, 8(4):25–36, 1993. [48] J. Mitola III. What is a software defined radio?, 2012. URL http://gnu.feld-it.at/software/gnuradio/gnuradio.html. [49] S.K. Mitra and Y. Kuo. Digital signal processing: a computer-based approach, volume 2. McGraw-Hill New York, 2006. [50] F. Moraes, N. Calazans, A. Mello, L. Moller, and L. Ost. Hermes: an infrastructure for low area overhead packet-switching networks on chip. Integration, the VLSI Journal, 38 (1):69–93, 2004. [51] T.R. Muck. Uma arquitetura para implementação de sdrs em sistemas embarcados. 2009. [52] A. Müller. Dab software receiver implementation. Swiss Federal Institute of Technology Zurich, 2008. [53] V.S. Neto. Telecomunicações: sistemas de modulação. Érica, 2005. [54] A. Niktash, H.T. Parizi, and N. Bagherzadeh. Application of a heterogeneous reconfigurable architecture to ofdm wireless systems. In Circuits and Systems, 2007. ISCAS 2007. IEEE International Symposium on, pages 2586–2589. IEEE, 2007. [55] J. Nurmi. Processor design: system-on-chip computing for ASICs and FPGAs. Springer Verlag, 2007. REFERÊNCIAS BIBLIOGRÁFICAS 85 [56] G. Nychis, T. Hottelier, Z. Yang, S. Seshan, and P. Steenkiste. Enabling mac protocol implementations on software-defined radios. In Proceedings of the 6th USENIX symposium on Networked systems design and implementation, pages 91–105. USENIX Association, 2009. [57] O. Paker, K. van Berkel, and K. Moerman. Hardware and software implementations of an mmse equalizer for mimo-ofdm based wlan. In Signal Processing Systems Design and Implementation, 2005. IEEE Workshop on, pages 1–6. IEEE, 2005. [58] P.P. Pande, C. Grecu, A. Ivanov, and R. Saleh. Design of a switch for network on chip applications. In Circuits and Systems, 2003. ISCAS’03. Proceedings of the 2003 International Symposium on, volume 5, pages V–217. IEEE, 2003. [59] H. Park, K. Fan, M. Kudlur, and S. Mahlke. Modulo graph embedding: mapping applications onto coarse-grained reconfigurable architectures. In Proceedings of the 2006 international conference on Compilers, architecture and synthesis for embedded systems, pages 136–146. ACM, 2006. [60] S. Pasricha and N. Dutt. On-chip communication architectures: system on chip interconnect. Morgan Kaufmann, 2008. [61] S.M. Pereira. Standardizing digital if data transfer with vita 49. RTC Magazine, 2006. [62] GNU FSF Projec. The gnu radio, 2012. URL http://gnuradio.org. [63] U. Ramacher. Software-defined radio prospects for multistandard mobile phones. Computer, 40(10):62–69, 2007. [64] J.H. Reed. Software radio: a modern approach to radio engineering. Prentice Hall Professional, 2002. [65] R. Schena. Desenvolvimento de um digital down converter (ddc) para um protótipo embarcado de rádio definido por software. 2007. [66] M. Schwartz. Information transmission, modulation and noise. a unified approach to communication systems. New York: McGraw-Hill, 1970, 1, 1970. [67] M.C. Smith and G.D. Peterson. Programming high performance reconfigurable computers. SPIE ITCon Reconfigurable Technology: FPGAs and Reconfigurable Processors for Computing and Communications, 2001. [68] V. Surducan, M. Moudgill, G. Nacer, E. Surducan, P. Balzola, J. Glossner, S. Stanley, M. Yu, D. Iancu, et al. The sandblaster software-defined radio platform for mobile 4g wireless communications. International Journal of Digital Multimedia Broadcasting, 2009, 2009. 86 REFERÊNCIAS BIBLIOGRÁFICAS [69] D.L. Tennenhouse and V.G. Bose. Spectrumware: a software-oriented approach to wireless signal processing. In Proceedings of the 1st annual international conference on Mobile computing and networking, pages 37–47. ACM, 1995. [70] T.J. Todman, G.A. Constantinides, S.J.E. Wilton, O. Mencer, W. Luk, and P.Y.K. Cheung. Reconfigurable computing: architectures and design methods. In Computers and Digital Techniques, IEE Proceedings-, volume 152, pages 193–207. Iet, 2005. [71] W.H.W. Tuttlebee. Software defined radio: origins, drivers, and international perspectives. Wiley, 2002. [72] M. Woh, Y. Lin, S. Seo, S. Mahlke, T. Mudge, C. Chakrabarti, R. Bruce, D. Kershaw, A. Reid, M. Wilder, et al. From soda to scotch: The evolution of a wireless baseband processor. In Microarchitecture, 2008. MICRO-41. 2008 41st IEEE/ACM International Symposium on, pages 152–163. Ieee, 2008. [73] V.I.I. Xilinx. Platform fpgas: Complete data sheet. DS031 (v3. 4), March, 2005. [74] C.A. Zeferino and A.A. Susin. Socin: a parametric and scalable network-on-chip. In Integrated Circuits and Systems Design, 2003. SBCCI 2003. Proceedings. 16th Symposium on, pages 169–174. IEEE, 2003.