Anda di halaman 1dari 4

Implementao do Algoritmo LFSR em Fibonacci VHDL

Ademilton Santos Jnior, Joo Paulo Almeida Farias, Matheus Pereira Alves. Departamento de Computao, Universidade Federal de Sergipe UFS. Resumo
Este artigo tem, como objetivo, demonstrar uma utilidade do algoritmo de Fibonacci, implementado em VHDL, utilizado em conjunto com o cdigo de LFSR, que tem, como principal utilidade, criar um ciclo pseudorrandmico atravs de uma sequncia binria de valores. Na natureza, temos exemplos bastante simples e diretos. Por exemplo, a concha de um caramujo, onde cada novo pedao tem a dimenso da soma dos pedaos anteriores; No corpo humano, se dividirmos a distncia da cabea para o umbigo e da cabea para os ps, encontramos a razo de 1,618; dentre muitos outros exemplos. Na computao, a Sequncia de

I - INTRODUO
Sequncia de Fibonacci uma sucesso de nmeros que, misteriosamente, aparece em muitos fenmenos da natureza. Descrita no final do sculo 12 pelo italiano Leonardo Fibonacci, ela infinita e comea com 0 e 1. Os nmeros seguintes so sempre a soma dos dois nmeros anteriores. Portanto, depois de 0 e 1, vm 1, 2, 3, 5, 8, 13, 21, 34 Ao transformar esses nmeros em

Fibonacci serve mais como um mbito de testes para os programadores iniciantes. No caso do VHDL, possvel testar a usabilidade da lgica numa placa FPGA e verificar sua

funcionalidade.

II O FIBONACCI

ALGORITMO

DE

quadrados e disp-los de maneira geomtrica, possvel traar uma espiral perfeita, que tambm aparece em diversos organismos vivos. Outra curiosidade que os termos da sequncia tambm estabelecem a chamada proporo urea, muito usada na arte, na arquitetura e no design por ser considerada agradvel aos olhos. Seu valor de 1,618 e, quanto mais voc avana na sequncia de Fibonacci, mais a diviso entre um termo e seu antecessor se aproxima desse nmero. Existem algumas formas de se encontrar um termo qualquer da Sequncia de Fibonacci. Para exemplificar e dar forma ao algoritmo, mostraremos duas maneiras de calcular esse termo: a forma iterativa e a forma recursiva.

- Recursivo: Se n < 2 retorne n Se no retorne Fibonacci (n-1) + Fibonacci (n-2)

- Iterativo Funo Fibonacci (n) i <- 1 j <- 0 Para k desde 1 at n faa t <- i + j i <- j j <- t retorne j
Tendo conhecimento dessas duas formas e da utilidade do algoritmo, decidimos por escolher um Mdulo Transmissor, que utiliza da sequncia de Fibonacci para realizar suas operaes. Esse Mdulo Transmissor chamado de LFSR (Linear Feedback Shift Register, ou simplesmente Registradores de Deslocamento com Realimentao Linear).

acontece no caso do contador binrio que conta sequencialmente e possui uma lgica mais complexa; implementado atravs de um polinmio primitivo, o que torna a sequncia PRBS mxima; Pode ser usado em comunicaes de dados para converso serial-para-paralelo e paralelo-para-serial; Sendo assim, o circuito LFSR se torna bastante proveitoso, tendo em vista que abrange a maior parte dos assuntos vistos em sala. Na foto abaixo, h uma ilustrao de como funciona o LFSR:

III - O LFSR
O circuito de um LFSR pode ser definido resumidamente como um conjunto de Flip-Flops tipo D (FFD) com a sada do ltimo e de algum outro FFD ligados, a partir de uma porta OuExclusivo (XOR - Exclusive-OR), na entrada do primeiro FFD. Esse tipo de caracterizao do contador LFSR corresponde configurao Fibonacci utilizada. Um contador LFSR com N-bits um registrador de deslocamento com realimentao linear que utiliza N flip-flops podendo implementar no mximo 2N-1 estados sem repeties. Esse contador tem as seguintes funcionalidades: usado para gerar uma sequncia PRBS (Pseudo Random Binary Sequence); Minimiza a complexidade de roteamento reduzindo a quantidade de lgica requerida; No conta sequencialmente e apresenta elementos XOR em seu loop, o que torna essa contagem muito rpida. Isso j no *Figura 1 Ilustrao LFSR* No caso acima, temos um LFSR de 8 bits com trs torneiras (Bits 0, 3 e 5). Percebe-se que, ao fim de cada ciclo de clock, o LFSR retroalimentado pelo ltimo bit, retornando para o estado inicial aps o ciclo. Sendo assim, o estado final do LFSR definido pelo nmero de ciclos de clock que sero utilizados pelo programa. Ao utilizar um LFSR, preciso definir o nmero de bits do mesmo, quais bits so utilizados no feedback, qual bit do estado inicial, qual bit do estado final e determinar quantos ciclos de clock sero necessrios para finalizar o LFSR implementado (ou, em alguns casos, determinar que isso impossvel).

IV - CONFIGURAES SEQUNCIA

DA

expoente do termo de maior ordem no polinmio; 3) O termo de maior ordem no polinmio representado pela ligao entre a sada da porta XOR com a entrada do primeiro registrador de deslocamento. Tendo explicado a ideia acima, o LFSR de 16-bit teria uma lgica semelhante a essa:

Para nosso LFSR, decidimos por utilizar uma sequncia com 16 bits, pois uma margem maior de teste e no se torna grande demais a ponto de ser impossvel/improvvel de implementar a tempo. Tomando como exemplo uma sequncia de 10 bits, teramos apenas dois taps (ligaes entre a sada de um registrador de deslocamento e a entrada de uma porta XOR). Assim, como a sequncia de baixo nvel, a utilizao de Fibonacci torna-se extremamente aconselhvel para facilitar tanto a compreenso quanto a compilao de um futuro cdigo na linguagem VHDL. Ainda para este exemplo, teramos a seguinte estrutura genrica:

*Figura 3 LFSR de 16-Bits* Percebe-se que o nmero de blocos lgicos XOR permanece o mesmo, pois os feedbacks continuam os mesmos, retornando sempre aps as ltimas somas efetuadas e realimentando a primeira entrada de forma recursiva.

V CODIFICAO E SIMULAO
*Figura 2 RTL de um LFSR* Os coeficientes his, apresentados na Figura acima, so iguais a 1 quando existe ligao de realimentao e iguais a 0 quando no existe. A localizao e escolha dos taps so baseadas em polinmios primitivos sendo que cada contador possui um polinmio primitivo caracterstico fazendo com que todas as combinaes de valores (2N -1 valores exceto o valor zero) sejam geradas pelo LFSR de forma aleatria. De acordo com os polinmios utilizados para descrever o contador LFSR podemos fazer algumas consideraes baseadas na implementao Fibonacci: 1) O ltimo tap, que representa a sada do ltimo registrador de deslocamento e usado na ligao de realimentao com a porta XOR, possui sempre o valor 1 representando x0; 2) O comprimento do registrador de deslocamento pode ser deduzido atravs do *Figura 4 Cdigo do LFSR de 16 Bits* Para os resultados da Simulao, tivemos que quebrar a imagem em duas partes para demonstrar as variaes com as entradas a depender das variaes dos estados. Assim sendo:

Resultados da Simulao do LFSR de 16 Bits

VI BIBLIOGRAFIA

Sequncia de Fibonacci. Disponvel em <http://pt.wikipedia.org/wiki/N%C3%BAmero_ de_Fibonacci>. Acessado em 25/07/2013 Realizao e Caracterizao do Mdulo Transmissor. Disponvel em <http://www.maxwell.lambda.ele.pucrio.br/11319/11319_4.PDF>. Acessado em 29/07/2013 Linear Feedback Shift Register. Disponvel em <http://en.wikipedia.org/wiki/Linear_feedback_ shift_register>. Acessado em 02/08/2013 Aplicao de Fibonacci/Candlesticks. Disponvel em <http://www.scribd.com/doc/222391/Aplicacaode-Fibonacci-e-Candle>. Acessado em 05/08/2013 Advancing the LFSR. Disponvel em <http://notabs.org/lfsr/lfsr.html>. Acessado em 10/08/2013 MACHADO, Pricles Lopes. Registrador de Deslocamento. 2009. Disponvel em <http://br.spoj.com/problems/REGISTRA/>. Acessado em 12/08/2013 SUNG, Raymond. SUNG, Andrew. CHAN, Patrick. MAH, Jason. Linear Feedback Shift Register. Disponvel em <http://www.ece.ualberta.ca/~elliott/ee552/stud entAppNotes/1999f/Drivers_Ed/lfsr.html> Acessado em 20/09/2013

*Figura 5 Simulao Parte 1*

*Figura 6 Simulao Parte 2* Nas anlises de tempo, percebemos que o tempo total era de apenas 12 segundos e o gasto de memria atingiu picos de 800 MB.

VI - CONCLUSES PARCIAIS
O grupo, inicialmente, tinha a ideia de trabalhar apenas com o cdigo da Sequncia de Fibonacci. Mas em pesquisas, descobrimos essa forma mais til de usar o cdigo de forma que entrasse mais com os assuntos da matria de Circuitos Digitais II e decidimos estudar e aprofundar nesse assunto. Tendo em vista a simplicidade do cdigo de Fibonacci comparado aos assunto que vimos em aula, o LFSR mostrou-se mais til e completo por estar mais bem encaixado com os assuntos (inclusive mais atuais) vistos. Alm disso, um cdigo til e que j dura anos, tendo sido utilizado em arquiteturas conhecidas, como no videogame de Terceira Gerao NES (Nintendo Entertainment System), onde o LSFR era dito, nas especificaes tcnicas, que receberia 1 canal de rudo-branco com controle de volume de 16 nveis e suporte a dois modos (ajustando-se as entradas de um LFSR - Linear Feedback Shift Register) em 16 frequncias prprogramadas.