Escolar Documentos
Profissional Documentos
Cultura Documentos
Transform
Matheus Leor Lopes de Lima Marrocos
Summary
1 Introdução 1
Implementação no MATLAB 2
3 Controlador de Entrada/Saı́da 7
4 Hardware Completo 10
5 Testes 12
7 Fontes 15
8 Anexos 16
1 Introdução
Este documento explica o processo de desenvolvimento, da concepção à imple-
mentação, de um hardware que possui um mecanismo de controle de entrada
(input valid), recebe 16 entradas externas (4 a cada clock), executa uma FFT
com raiz 2, fica com saı́da (output) válida por um clock. Além disso, o proced-
imento aqui adotado pode ser generalizado para ”n” entradas, o que também
será explicado.
O esquema do hardware desenvolvido é mostrado abaixo, na Figura 1.
1
Figure 1: Hardware Desenvolvido
Implementação no MATLAB
Para melhor pensar como realizar o hardware, visualizando como este deve-
ria funcionar efetivamente, foi desenvolvido um estudo sobre FFT (conforme o
anexo evidencia) e, a partir do aprendizado ao se fazer os cálculos manualmente,
elaborou-se um algoritmo (em estágio primário) e testou sua funcionalidade no
software MATLAB, comparando os resultados obtidos aos resultados corretos
(adquiridos por meio da função embutida, ”fft”, do MATLAB).
O código, que evidencia o algoritmo desenvolvido e praticado manualmente
é mostrado abaixo, nas figuras 2 e 3, para a FFT de 4 e 8 saı́das. O algoritmo
para 16 saı́das é o mesmo, só muda a quantidade de termos e será evidenciado
na explicação do hardware. Nota-se que, nesse primeiro momento, não havia
domı́nio da ferramenta e por isso os coeficientes foram colocados manualmente
para cada caso, o que será corrigido no código do hardware (em system verilog).
2
Figure 2: Algoritmo para FFT de 4 Saı́das
3
2 Fast Fourier Transform em System Verilog
Com o proósito de se construir a FFT de 16 saı́das, foi testado o algoritmo feito
no MATLAB para 2 saı́das, 4, 8, 16. Os dois primeiros e o último hardware
serão mostrados nesta seção.
F.F.T. de 2 componentes
Primeiro foi observado que na FFT de 2 componentes há um entrelaçamento
(ilustrado no anexo) e isso foi representado no código que é demonstrado abaixo.
Também se pensou na entrada complexa, que foi representada como um array,
onde o primeiro componente era a parte real e o segundo a parte imaginária.
F.F.T. de 4 componentes
Neste segundo momento, foi percebido que a lógica da FFT em hardware é:
4
de cada componente. A outra metade começará do primeiro ı́ndice (0)
+ o número de termos passados (neste caso, 0+2 = 2, começa em X42)
e possuirá o valor dado pelas mesmas equações da outra metade, com
exceção de que o ”+” do meio vira -
F.F.T. de 16 componentes
Usando a lógica explicada para a FFT de 4 componentes, foi feita a FFT de 8
componentes e posteriormente a FFT de 16 componentes.
A primeira imagem abaixo ilustra a chamada da FFT anterior (FFT de 8)
com os componentes divididos em pares e ı́mpares.
5
Figure 6: Chamada da FFT de 8 Saı́das pela FFT de 16 Saı́das
6
A próxima imagem mostra o terceiro passo descrito para a FFT de 4 saı́das
aplicado à FFT de 16 saı́das.
3 Controlador de Entrada/Saı́da
Por último, foi desenvolvido o hardware abaixo, que seria integrado ao hardware
final. Basicamente é um hardware que recebe 16 entradas, de 4 em 4, envia essas
7
entradas junto ao sinal de output válido e tem controle de input válido.
Para se testar esse hardware passo a passo, foi usada a função ”monitor”,
que tem sintaxe como se mostra a seguir.
8
Figure 12: Hardware de Controle de Entrada e Saı́da Válidas
9
4 Hardware Completo
O hardware completo, mostrado na primeira seção, é simplesmente a união do
hardware que faz FFT com 16 saı́das com o hardware que controla as entradas
e saı́das válidas.
Suas entradas e saı́das estão ilustradas abaixo.
10
Figure 14: Componentes de Ligação do Hardware Completo
11
Finalmente, é mostrado o que o módulo completo faz, ou seja, espera o
output ser válido para calcular a nova FFT, ficando com input não válido nesse
momento, e, caso isso não ocorra, mantém o valor que foi calculado enquanto
esse cálculo novo não for requisitado novamente.
5 Testes
Os testes para o funcionamento geral (incluindo o controle de output e input)
estão em anexo. Aqui será mostrado apenas a comparação dos resultos no
hardware com os resultados no MATLAB para dois conjuntos de valores.
Teste 1
Valores de x = [0, 1*j, 2*j, 3*j, 4*j, 5*j, 6*j, 7*j, 8*j, 9*j, 10*j, 11*j, 12*j, 13*j,
14*j, 15*j];
Resultados obtidos no hardware:
12
Figure 17: Resultados Obtidos em Hardware para o Teste 1
13
Teste 2
Valores de x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
Resultados obtidos no hardware:
14
Comparando, percebe-se que os resultados foram praticamente iguais, a
menos de algumas aproximações.
7 Fontes
A teoria sobre FFT foi aprendida no dia 11 de Fevereiro de 2018 no endereço:
https://www.youtube.com/watch?v=BXghmsH-mKYlist=PL4K9r9dYCOoqmykdiyCq2jyAb0zwO0p-
b
15
A utilização de ”monitor” foi aprendida no dia 12 de Fevereiro no endereço:
http://www.asic-world.com/verilog/verilogo ned ay4.html
O restante utilizado neste relatório foi aprendido nas aulas do professor Mar-
cos Ricardo Alcântara Morais, professor da Universidade Federal de Campina
Grande, e na aula de Felipe Gonçalves Assis.
8 Anexos
Nas próximas páginas estão o texto com a descrição do hardware (os módulos)
e a descrição do módulo top que foi usado para testar o sistema.
Também são mostrados os resultados obtidos para esse teste, assim como os
desenhos feitos enquanto se estudava o problema e os códigos do MATLAB.
16