You are on page 1of 5
EVISTA DE TECNOLOGIA DA INFORMAGAO E SOMUNICAGAO, VOL 8, NO. 1, OUTUBRO 2015 1 Introdugéo ao GNU Radio Edmar C. Gurjao Departamento de Engenharia Elétrica Universidade Federal de Campina Grande Campina Grande, PB, Brasil Emails: ecandeia@ dee.ufeg.edu.br Resumo—Os vidios definides por software permitem obter sistemas de transmissio e recepsao de sinais facilmente confi- adaptaveis, © a reutilizagie de um hardware para a agio de diversos rédios. Para implementacio desses rédios é necessério utilizar algum framework de software. Dentre as plataformas que tem sido propostas, o GNU Radio tem obtido grande destaque devido a facilidade de utilizaglo, pois contém luma vasta biblioteca de blocos funcionais, ¢ por permitir a implementasio de blocos de processamento pelo usuario. Neste arligo é feita um introdugio 20 GNU Radio. Sio apresentadas as suas caracteristicas bisieas, formas de utilizagdo e indicadas fontes de informagao para que o Teitor possa se aprofundar na utilizagio da ferramenta, Palavras-Chave—Ridio definido por software. Gnu Radio, transmissio de sinais. I. IntRopu¢io. FE forma genética, um sistema de comunicasio pode ser dividido em tés elementos basicos:transnissor, canal & receptor. © canal é meio que interliga o transmissor © 0 receptor. ‘A fungi do transmnissor 6 converter a mensagem proveni- ente de uma fonte de informagio, em um sina aproptiado a0 canal, Ao se propagar ao longo do canal, 0 sinal transmitido sofre distro © eftito de ruido, © com isso 0 sinal que clnega ao receptor é diferente do sinaltransmitido. O receptor processa 0 sinal recebido para obter a melhor estimativa possivel da mensagem original. A fidelidade entre 0 sinal original ¢ 0 sinal obtido depende das condigdes do canal © das especificagbes da aplicagao, Os sistemas que implementam o transmissor ou 0 receptor sio denominados genericamente de ridios. Para cada sistema de comunicagdo é necessério implementar rédios (ransmissor ¢ receptor) especificos. O hardware de cada régio tem uma implementaydo particular, a cada mudanga na tecnologia. ot resmo em uma simples atualizagdo, faz-se necessério trocar © hardware para que se possa uizar as novas funcionatidades ‘A impossibilidade de utlizagio do mesmo hardware para mais de um sistema, compromete a versatiidade ¢ multi- funcionalidade das novas tecnologias, Utilizar um rédio para cada tecnologia € um custo inerente & implementagio em hardware nesse contexto que surgi 0 rédio definido por sofnvare (RDS), como a possibilidade de implementagio virtual software) de sistemas de processamento para comunicagio, utilizindo um tnico hardware que disponbilize os recursos necessérios ao funcionamento dos vérios sistemas. Com isso toma-se possivel reaproveilar 0 hardware, que passa a ser um processador de dados, para varias tecnologias. Algumas plataformas foram propostas para implementagio de radio definido por software. Nesse texto apresentaremos © GNU Radio, uma plataforma de software que possibilita a implementagio de RDS usando uma combinagio de blocos de processamento. II, RADIO DEFINIDO POR SOFTWARE © conceito de ridio definido por software foi proposto por Joseph Mitola III [1]. A ideia é implementar as etapas necessérias a transmissio ou recepgio de sinais, com excegio das antenas, em software. De acordo com essa conceito, nno receptor que normalmente & a parte mais complicada de tum sistema de telecomunicagées, utiliza-se um Conversor Anal6gico Digital (ADC, do inglés, Analog to Digital Conver- ter) diretamente ao sinal recebido na antena, para em seguida twatar esse sinal por software em um processader. resultado obtido através do processamento poderi, caso necessirio, ser convertide para 0 formato analégico pelo Con- versor Digital Anal6gico (DAC, do inglés Digital do Analog nverter) para ser enviado a uma safda analégica. O esquema ilustrando esse processo € mostrado na Figura 1 v |__fa56} | Processador | [BAG] [Sada Arai] Figura reeepter. Tutragio do conctta de ridio deinido por sofware para © wansmissor segue o mesmo raciocinio, porém com as devidas trocas de blocos, representando o caminho inverso do sinal, O processo de transmissio é ilustrado na Figura 2, Vv ] Ervada Avalogea | {ADC |—{ Procossador| [bac] —! Figura 2 Iiystragio do concsto de vidio deinigo por sofware para 0 Vale observar que um radio definide por software no © mesmo que um ridio controlado por software, Nes- ses dltimos, os aspectos de transmissio, como a modulagio (ou demodulagio), ainda sio feitos por cixcuitos (hardware) 2 REVISTA DE TECNOLOGIA DA INFORMAGAO E COMUNICAGAO, VOL. 3, NO. especificas para aquele tipo de transmissio (ow recepgio), © software setve apenas para controlar catacteristicas como volume, melhorar a qualidade do sinal através da alteragio dos ganhos do equalizador, dentre outras agdes. No radio definido por software o hardware € Gnico, ¢ todo o tratamento de sinais € feito pelo software em exccugao. A implementagio de ridios definidos por software requer uma plataforma de software na qual os blocos funcionais daquele rio sejam implementados, Algumas arquiteturas tem. sido propostas para esse fim, dentre clas esté 0 GNU Radio, que serd apresentado na préxima segao. IIL, Gxu Rapto GNU Radio é um framework de software livre para o desen- volvimento de radios definidos por software [5]. Cada radio implementado no GNU Radio & composto de um conjunto de blocos de processamento de sinais independentes ¢ interliga- dos, que podem ser obtidos da biblioteca ou desenvolvidos pelo usuétio. Os rédios implementados no GNU Radio podem ser co- nectados ao mundo exterior ao sofiware (Wransmitir ¢ receber sinais reais), utilizando um frontend de rédio frequéncia, ‘Alguns blocos funcionais que acessam esses dispositivos esto disponiveis na biblioteca de bloco, como 0 blocos UD que permite a utilizagéo do front-end denominado Universal Soft ware Radio Peripheral [7 (© GNU Radio é desenvolvido € mantido por uma comu- nidade aberta, colaborativa e bastante ativa. Qualquer pessoa interessa pode participar dessa comunidade. © site gnuradio.ozg disponibiliza arquivos informagies eis para 0 entendimento e utilizagio desse pacote de software. No entanto, como se trata de um c6digo aberto, as listas de discussio sio a melhor opeio para corregao de erros e obtengio de respostas para diividas. ‘Ao iniciar a utilizagao das ferramentas oferecidas pelo GNU Radio é preciso ter em mente que sua estrutura & baseada em. duas camadas de programagao: a implementagio dos blocos de processamento de sinais em si, ¢ a interconexao de blocos para formar um sistema de processamento. A primeira parte é realizada em C++ e a segunda em Python. Essa organizagio busca facilitar a construgdo dos sistemas @ partir dos blocos, que podem ser vistos como “caixas pretas” 4 partir do momento que 0 usudtio deve apenas se concentrar na ulilizagio dos blocos ¢ nao no seu funcionamento interno, Nesse nivel o uswatio deve se concentrar na configuragio dos parimettos dos blocos e conexio correta entre blocos fontes (sources) € sinais, intermedifrios que realizam 0 processa- ‘mento do sinal ¢ saidas (sinks), sempre nessa ordem, Por exemplo, © receptor tem no minimo um bloco fonte de sinais, que pode ser um arquivo com o sinal pré-gravado (ou um front-end de RF conectado a uma antena, ¢ um bloco que absorve 0 recebido, que pode ser a safda de som do computador ou um arquivo de dados. © transmissor também. deve ter no minimo dois blocos, um bloco fonte que gera 08 sinais ¢ outro sorvedouro que realizard a transmissio dos sinais, podendo ser um arquivo ou um front-end de RE. ‘Apenas quando se deseja implementar novos blocos de processamento, ou melhorar a funcionalidade de algum bloco , OUTUBRO 2015 existente, 0 usuario deveri utilizar a programagio em C++ Porém é possfvel utilizar 0 GNU Radio somente com C++. A implementagao dos blocos de processamento em C++ advém da necessidade de obter processamento rapido, Na proxima segio é apresentado um exemplo de utilizagio do GNU Radio, ¢ listados projetos j implementados usando essa ferramenta IV. EXEMPLO USANDO GNU RADIO A partir desta sego sera considerado que o GNU Radio esta instalado. Atualmente s6 hé versGes para sistemas operacionais Linux. a instalagdo pode ser feita de diversas formas, sendo as mais comuns a que uliliza o cédigo fonte e que é realizada pelo instalador de programas do sistema operacional. A primeira maneita € zecomendada para que deseja desenvolver novos blocos, e a segunda para quem deseja apenas utilizar a plata- forma, Recomenda-se a segunda maneira, pois a atualizagio ¢ remosio € mais simples. ‘Todo radio implementado no GNU Radio deve set visto ‘como um diagrama de fluxo de sinais. Assim os blocos devem estar conectados numa sequéncia que parte de um ou mais bblocos fonte de sinais, passando por blocos intermedistios, e finalizando em um ou mais blocos sorvedouros (sink) Entretanto, sempre deve haver ao menos uma fonte © um sorvedouro. Como exemplo, seja sistema que realiza a combinagio de dduas senoides ¢ a reprodugio do resultado na saida de som do computador, conforme ilustrado na Figura 3. Pode-se observar que hé duas fontes de sinais, que geram as duas senoides, © um sorvedouro, correspondente & saida de éudio, Além disso, devem ser especificadas as conexdes entre as safdas dos geradores & entrada da saida de dudio. Fonte 0 Fonte 1 Figure 3. Diagrama de Soxos 2 ser implementado no G3 combinagio de doit sna, © e6digo fonte em Iinguagem Python que implementa o ridio Figura 3 ¢ ilustrado a seguir. O leitor pode acessar esse © outros cédigos e exemplos na pigina da Internet do autor do texto [13] #1 usr/bin, w python from gnuradio impo: VISTA DE TECNOLOGIA DA INFORMAGAO E e(gr.top_block} (self): init__(self) sample_rate = 32000 ampl = ation = "p -sig_source_f SIN_WAVE, 440, ampl) (sample_rate, (sample_rate, = audio. sink {src0, (dst, 0)) sel (ast, 1) if name == '__main_! try dial_tone(}.run() except Keyboardinterrupt (© médulo que contém as definiges de gerador de sinais é 0 GE, que esté no pacote GNU Radio, a partir do qual importa- se 08 médulos, como feito nas linhas from gnuradic. O médulo que possui definigdes associadas a placa de audio (entrada de sudio, salda, nome de dispositivo padrio, dentre outros) é 0 médulo audio, que também esté no pacote GNU Radio, No exemplo, as frequéncias desejadas para os sinais sfo 50H e 440Hz, que juntas formam o sinal padrdo de telefonia (lom de discagem), Observando o cédigo acima, vé-se que a primeira linha possibilita que 0 script seja transformado em executivel. Nas linhas seguintes sio importados os médulos gr ¢ asdio do pacote GNU Radio. Em seguida é feita a definigio da nova classe (dial_tone). A passagem do pardmetro indica que essa classe ¢ derivada da classe top_bLock, que esti defi- nida no médulo gr. A classe gx. top_block basicamente contém as definigdes do grafico de fluxo, A derivagio para a nova classe permite a utilizagéo dos métodos necessérios para adicionar novos blocos € conecté-los. m seguida definimos os valores das varidveis do sistema: sample_rate (frequéncia de amostragem) em 32kHz, am- plitude unitéria e 0 nome do dispositive de saida de dudio 0/0. (© préximo passo criar as fontes (blocos geradores de sinais senoidais). Isso € feito de forma bem parecida a instanciagao de classes em C++, A passagem de argumentos indica a frequéncia de amostragem desejada, tipo de sinal a ser gerado (que € um tipo definido no médulo gx), a frequéncia do sinal ¢ a amplitude. Dessa forma eriamos as fontes ¢ as chamamos de src0 ¢ =: Da mesma forma, criamos 0 bloco da safda de dudio P SOMUNICAGAO, VOL 5, NO. 1, OUTUBRO 2015 3 (audio.sink), que esti definido no médulo audio. Os parimetros nesse caso sio a frequéncia de amostragem do fudio e o nome do dispositive de éudio. Finalmente, conectamos 0s blocos usando 0 método connect. Esse método conecta a safda do primeiro bloco a entrada do segundo bloco. Observe que para a saida usamos (dst, 0) para indicar que a porta de entrada do bloco é a porta 0 (dst, 1) para indicar que a porta de entrada do blaco € a porta 2 © exemplo anterior ilustra a facilidade de implementar adios definidos por software usando 0 Gnu Radio. Além disso, pode-se observar que, a0 usar as bibliotecas, pode-se wabalhar somente com Python, sem a necessidade de C++. inverso também € vilido, pode-se implementar um ridio uusando somente cddigos em C++, sem a necessidade do Python, Exemplos mais avangados podem ser encontrados no proprio GNU Radio, que ao ser instalado cria um diret6rio examples, ou aina nos repositérios de projeto como 0 Comprehensive GNU Radio Archive Network (CGRAN) [6]. Os ridios implementados com GNU Radio, ¢ divulgados publicamente, se destacam pela versatilidade e pela variagio de aplicagses. Por exemplo, j4 foram desenvolvidos rédios para sistema de identificagao por ridio frequéncia [2], passando por uma TV digital completa [3] até wansmissio via satélite [4] Além da implementagiio em cédigo fonte, é possivel utilizar © GNU Raiio via ambiente grifico, como descrito na segio a seguir. V. 0 AMBIENTE GRAFICO GRC © GRC (GNU Radio Companion) & wma interface grética que permite a implementagao do grificos de fluxo de si- nnais no GNU Radio. Além de ser mais simples de usar (em comparagio A programagio direta em Python ou C+), ssa ferramenta tanto 6 uma forma interessante de iniciar a implementagio de rédios definidos por software com 0 GNU Radio, quanto constitui um étimo meio de compreensio da estrutura de implementagio do GNU Radio. Para executar 0 = GRC, —basta_—_digitar geuradic-companion no terminal do Linux, deverd surgir uma interface parecida com a que esté mostrada na Figura 4, Na Figura 4 pode-se observar a lista de categorias de blocos de processamento disponiveis, Ao expandir uma categoria, clicando nela, & possivel visualizar a lista de blocos a ela pertencentes. Do lado esquerdo esti o ambiente para instanciar © conectar 0s blocos, Observe que dois blocos so automa- ticamente criados para qualquer sistema novo: Options ¢ variable. © bloco Variable € uma varidvel global criada para indicar a frequéncia de amostragem do sistema (pré-definida como 32 kHz), 0 nome dessa varidvel € samp_rate. Essa varifvel € criada pois todos os blocos devem utilizar a mesma frequéncia de amostragem. O bloco Options contém da- dos gerais do sistema, como o ID, nome do projeto, autor, deserigdo ¢ tamanho da janela, 4 REVISTA DE TECNOLOGIA DA INFORMAGAO E COMUNICAGAO, VOL. 8, NO. re % : eet Figura 4. Tela de aberura do GNU Radio Companion ‘Ao clicar duas veres sobre um bloco, abre-se uma janela de propriedades na qual & possfvel alterar os parimetros do bloco ¢ visualizar informagies sobre o mesmo. Insere-se blocos de uma categoria arrastando e soltando © bloco da lista de blocos para a étea de trabalho do GRC. Cada loco tem um tipo de entrada ¢ saida, que € indicada pelas cores nos pontos de entrada (in) e de saida (out). Inseridos 108 blocos pode-se fazer a ligagio de um bloco a outro clicando fem cada um dos pontos, uma seta serd criada, Apds a ctiagiio © conexio dos blocos € preciso gerar executar 0 seript. Para isso, 0 arquivo deve antes ser salvo (com terminagio gre). Quando um script & gerado, € eriado tum arquivo em Python (com terminagio .py) no mesmo diretério © com 0 mesmo nome do ID do bloco options. Esse script pode ser tatado como um script python comum, sendo possivel realizar modificagées diretamente nele. VI. DESENVOLVIMENTO Do GI Rapio © GNU Radio é um software livre ¢ & desenvolvido pela comunidade que © utiliza, Sob a licenga GPL, diversas pessoas tem contribuido com a inclusio de novos blocos, melhorias de ‘outros e implementagées de sistemas que posteriormente viram exemplos de utilizagio © pont de partida, tanto para entender com o GNU Radio funciona quanto para obter informagées sobre contribuir, é 0 site do proprio GNU Radio [5] Por comunidade bastante dindmica, informagio ¢ solugao de divides podem ser obtidas na lista de ‘mensagens da ferramenta. Maiotes informagSes sobre como acessar as listas de discussio podem ser obtidas no site do GNU Radio, Uma série de projetos implementados no GNU Radio podem ser encontrados no site Comprehensive GNU Radio Archive Network (CGRAN) [6]. Nesse site € possivel obter projetos completos, incluindo os c6digos fonte, de utilizagio do GNU Radio nas mais diversas areas. Além disso, um ususrio pode-se contribuir incluindo o seus projetos. ser uma muita , OUTUBRO 2015 VIL. HARDWARES QUE PODEM SER UTILIZADOS COMO GNU Rapio Quando se desenvolve um rédio definido por software 6 natural desejar-se transmitir ou receber sinais reais, Para tanto, basta incluir um bloco fonte (receped0) ou sorvedouro (recepedio) que acesse algum front-end de rédio frequéncia. Existem diversos front-end disponiveis no mercado e alguns deles com blocos ja disponiveis no GNU Radio. Um exemplo

You might also like