Resumo do projeto
Este projeto pretende-se realizar um trabalho de pesquisa que visa estudar a utilização do ambiente Simulink® associado ao HDL (Hardware Description Language) Coder, para a realização em hardware programável, especificamente FPGA (Field Programmable Gate Array), de blocos comumente utilizados em sistemas de telecomunicações. São objetivos do projeto o estudo do Simulink®, HDL Coder e HDL Verifier da Matworks. O desenvolvimento de blocos comumente utilizados em sistemas de telecomunicações tais como moduladores, filtros digitais, misturadores e geradores de sinal, utilizando para tal o Simulink, que é um ambiente de diagramas de blocos para a simulação de projetos baseados em modelos. A realização e teste destes blocos em hardware será feita através da conversão de código para VHDL utilizando os toolboxes HDL Coder e HDL Verifier e Modelsim da ALTERA. A síntese e programação dos blocos desenvolvidos em FPGA será realizada utilizando o software Quartus II da ALTERA.
Introdução e Justificativa da Proposição
A maioria dos setores que de produção de equipamentos eletrônicos, especialmente na área de telecomunicações utilizam nos circuitos eletrônicos digitais. Entre estes circuitos a maioria deles atualmente é implementada em hardware utilizandose ASICs (Application Specific Integrated Circuits), DSPs (Digital Signal Processor) ou FPGAs (Field Programmable Gate Array). O projeto, simulação e síntese dos últimos dois tipos é realizada utilizandose ambientes de projeto assistido por computador (por exemplo Quartus II e Modelsim) e alguma linguagem de descrição de hardware (por exemplo Verilog ou VHDL) a qual permite descrever o circuito em um baixo nível, de modo a descrever até a ligação entre os componentes configuráveis nos FPGAs ou ASICs. Como a disponibilização de circuitos lógicos programáveis tais como os FPGAs a um custo cada vez mais baixo (menor que U$50,00), e velocidades crescentes de operação, está ocorrendo um grande aumento no interesse e aplicação dessa tecnologia de hardware em diversos aplicações anteriormente realizadas através de software ou eletrônica discreta. Empresas do setor de equipamentos de telecomunicações passaram a considerar essa tecnologia como uma possibilidade de implementação de grandes partes dos sistemas.
Objetivos do projeto:
- Primeira etapa - Utilizar o ambiente Simulink® para a modelagem e simulação de blocos comumente utilizados em sistemas de telecomunicações.
- Segunda etapa - Utilizar o HDL Coder e Verifier para a transformação dos blocos da primeira etapa em linguagem VHDL.
- Os circuitos da obtidos serão simulados utilizando ModelSim
- Terceira etapa - Os circuitos da segunda etapa serão sintetizados e programados no hardware programável do tipo FPGA.
- Aqui também serão feitos os testes finais.
Metodologia do projeto
- Estudo do Simulink®
- Estudo da sua configuração, interfaces, sinais, blocos, modelagem e simulação de sistemas, geração de código de software e hardware.
- Esta etapa será baseada na leitura de manuais e também sites de ajuda do próprio fabricante (MATHWORKS, 2015a, 2015c, 2015b).
- Estudo das bases da linguagem VHDL
- Esta etapa será baseada na leitura dos capítulos 18 e 19 de (PEDRONI, 2010).
- Estudo do HDL Coder e Verifier®
- Esta etapa será baseada na leitura de manuais e também sites de ajuda do próprio fabricante (MATHWORKS, 2015a, 2015c, 2015b).
- Análise de blocos disponibilizadas
- Analisar blocos disponibilizados por outras universidades e institutos de pesquisa (NAVAS, 2014; TYAGI, 2012; GIORDANO; LEVESQUE, 2015; KRUKOWSKI; KALE, 2011) na área de telecomunicações.
- Desenvolvimento de blocos para sistemas de telecomunicações
- Desenvolvimento de blocos tais como moduladores, filtros digitais, misturadores e geradores de sinal.
- Realização e teste em hardware FPGA
- Utilizando o HDL Coder para a conversão dos blocos para VHDL.
- A implementação será realizada utilizando um kit de desenvolvimento de FPGA.
- Para os testes finais tanto o SignalTap® da ALTERA como um equipamento analisador lógico externo serão necessários.
- Documentação do projeto
- Escrita de relatórios parciais e do relatório final do projeto.
- Preparação de pôster para apresentação em eventos do IFSC, e de artigo para submissão em revista.
- Gerenciamento do projeto
Implementação - FFT utilizando simulink
"A fast Fourier transform (FFT) algorithm computes the discrete Fourier transform (DFT) of a sequence, or its inverse. Fourier analysis converts a signal from its original domain (often time or space) to a representation in the frequency domain and vice versa. An FFT rapidly computes such transformations by factorizing the DFT matrix into a product of sparse (mostly zero) factors.[1] As a result, it manages to reduce the complexity of computing the DFT from O(n^2), which arises if one simply applies the definition of DFT, to O(n \log n), where n is the data size." retirado de [1]
Arquivos das versões: Versões FFT
Documentação das modificações: Versões
- Versão 3_0 - ultima versão
Uma visão geral dos blocos:
Na imagem acima percebe-se que a versão 3_0 é composta por:
Bloco - "FFT Decimation"
O bloco FFT Decimation é um subsistema que agrupa os subsistemasDfts e Mwn. Na versão atual (3.0) as entradas são {x0_ENTRY .. x7_ENTRY} para 8 amostras temporais do sinal. As saídas no domínio transformado são {X0 .. X7}. Para a utilização do subsistema é necessário dividir o sinal de entrada em quadros de 8 amostras paralelas e processá-las. Para possibilitar uma melhor resolução de frequência da FFT é necessário aumentar o número de amostras do sinal no tempo, e para tal será desenvolvido um desserializador e um serializador para permitir o uso de entradas e saídas seriais, nas quais as amostras entram sequencialmente formando um quadro de N amostras.
Bloco - "Dfts"
O bloco Dfts realiza os cálculos das butterflies através de pequenas células (ver figura). O subsistema Dfts possui 16 entradas, sendo 8 correspondentes as amostras temporais do sinal de entrada do bloco FFT Decimation, e 8 correspondentes ao valores calculados de Wn (mostrado abaixo). Esse bloco é implementado através de 12 blocos idênticos (células {DFT_Wn0_11 .. DFT_Wn043}) que realizam o cálculo da butterfly. As saídas do ....
Em conjunto, os blocos do dft calculam as butterflies da seguinte forma:
Bloco isolado de cada butteflie:
Seu esquema interno:
- O bloco possui 2 entradas -> Nas primeiras butterflies essas entradas correspondem diretamente a entradas da FFT. Nos blocos seguintes essas entradas são os resultados das butterflies anteriores.
- Cada butterflie de forma isolada sua parte da seguinte forma:
Bloco - "Mwn"
- O segundo grande bloco do subsystem FFT Decimation é o Mwn. Esse bloco é o responsável pelo cálculo dos Wn do sistema.
]
- O subsistema possui apenas saídas. São 8 saídas que correspondem aos Wn calculados.
Esquema interno do Mwn:
- A constant8 (1/8) é na verdade 1/N, porém, a versão 3_0 comporta 8 entradas, por isso optou-se por uma constante de valor 1/8. Em futuras versão esse bloco irá ter 1 entrada que irá corresponder ao N (numero de entradas).
- Esqueleto interno do bloco Wn:
- Para se adequar ao HDL Coder, foi necessário utilizar a seguinte estratégia para implementação:
- Dentro do Mwn existem 4 blocos responsáveis pelas potências de Wn (Wn^0, Wn^1, Wn^2, Wn^3)
Bloco Wn^0:
Esquema interno Wn^0:
Bloco Wn^1:
Esquema interno Wn^1:
Bloco Wn^2:
Esquema interno Wn^2:
Bloco Wn^3:
Esquema interno Wn^3:
Modulações Analógicas (AM,FM,PM)
|
Simulink
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Sine Wave
|
Sim
|
Sim
|
Scope
|
Sim
|
Sim
|
Goto
|
Sim
|
Sim
|
From
|
Sim
|
Sim
|
Communications System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Analog Passband Modulation
|
Não
|
Não
|
Simulink
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Spectrum Analyser
|
Sim
|
Sim
|
|
Amostragem de sinais
|
Simulink
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Sine Wave
|
Sim
|
Sim
|
Product
|
Sim
|
Sim
|
Pulse Generator
|
Não
|
Não
|
Scope
|
Sim
|
Sim
|
Mux
|
Sim
|
Sim
|
Gain
|
Sim
|
Sim
|
Goto
|
Sim
|
Sim
|
From
|
Sim
|
Sim
|
Matrix Concatenate
|
Sim
|
Sim
|
Manual Switch
|
Não
|
Não
|
Zero-Order Hold
|
Sim
|
Sim
|
DSP System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Spectrum Analyser
|
Sim
|
Sim
|
Analog Filter Design
|
Não
|
Não
|
From Multimedia File
|
Não
|
Não
|
To Multimedia File
|
Não
|
Não
|
|
Quantização
|
Simulink
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Sine Wave
|
Sim
|
Sim
|
Pulse Generator
|
Não
|
Não
|
Scope
|
Sim
|
Sim
|
Mux
|
Sim
|
Sim
|
Goto
|
Sim
|
Sim
|
From
|
Sim
|
Sim
|
Zero-Order Hold
|
Sim
|
Sim
|
Communications System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
A-Law Expander
|
Não
|
Não
|
A-Law Compressor
|
Não
|
Não
|
Mu-Law Expander
|
Não
|
Não
|
Mu-Law Compressor
|
Não
|
Não
|
DSP System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Analog Filter Design
|
Sim
|
Sim
|
Scalar Quantizer Encoder
|
Sim
|
Sim
|
Sample and Hold
|
Não
|
Não
|
|
Modulação por Codificação de Pulso (PCM)
|
Simulink
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Sine Wave
|
Sim
|
Sim
|
Pulse Generator
|
Não
|
Não
|
Scope
|
Sim
|
Sim
|
Goto
|
Sim
|
Sim
|
From
|
Sim
|
Sim
|
Zero-Order Hold
|
Sim
|
Sim
|
Communications System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Integer to Bit Converter
|
Não
|
Não
|
DSP System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
From Multimedia File
|
Não
|
Não
|
To Multimedia File
|
Não
|
Não
|
Sample and Hold
|
Não
|
Não
|
Analog Filter Design
|
Não
|
Não
|
Scalar Quantizer Encoder
|
Não
|
Não
|
Scalar Quantizer Decoder
|
Não
|
Não
|
{{Collapse bottom}
Modulação Delta (DM)
|
Simulink
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Sine Wave
|
Sim
|
Sim
|
Pulse Generator
|
Não
|
Não
|
Scope
|
Sim
|
Sim
|
Goto
|
Sim
|
Sim
|
From
|
Sim
|
Sim
|
Sum, Add Subtract
|
Sim
|
Sim
|
Zero-Order Hold
|
Sim
|
Sim
|
Quantizer
|
Não
|
Não
|
Gain
|
Sim
|
Sim
|
Unit Delay
|
Sim
|
Sim
|
DSP System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Analog Filter Design
|
Não
|
Não
|
Sample and Hold
|
Não
|
Não
|
From Multimedia File
|
Não
|
Não
|
To Multimedia File
|
Não
|
Não
|
|
Modulação Delta-Sigma
|
Simulink
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Sine Wave
|
Sim
|
Sim
|
Pulse Generator
|
Não
|
Não
|
Scope
|
Sim
|
Sim
|
Goto
|
Sim
|
Sim
|
From
|
Sim
|
Sim
|
Discrete-Time Integrator
|
Sim
|
Sim
|
Zero-Order Hold
|
Sim
|
Sim
|
Quantizer
|
Não
|
Não
|
Gain
|
Sim
|
Sim
|
Unit Delay
|
Sim
|
Sim
|
DSP System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Analog Filter Design
|
Não
|
Não
|
From Multimedia File
|
Não
|
Não
|
To Multimedia File
|
Não
|
Não
|
|
Modulação por Codificação Diferencial de Pulso(DPCM)
|
Simulink
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Sine Wave
|
Sim
|
Sim
|
Pulse Generator
|
Não
|
Não
|
Scope
|
Sim
|
Sim
|
Goto
|
Sim
|
Sim
|
From
|
Sim
|
Sim
|
Sum
|
Sim
|
Sim
|
Product
|
Sim
|
Sim
|
Zero-Order Hold
|
Sim
|
Sim
|
Quantizer
|
Não
|
Não
|
Gain
|
Sim
|
Sim
|
Unit Delay
|
Sim
|
Sim
|
DSP System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Analog Filter Design
|
Não
|
Não
|
From Multimedia File
|
Não
|
Não
|
To Multimedia File
|
Não
|
Não
|
|
Códigos de linha
|
Simulink
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Pulse Generator
|
Não
|
Não
|
Scope
|
Sim
|
Sim
|
Product
|
Sim
|
Sim
|
Fcn
|
Não
|
Não
|
Communications System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Bernoulli Binary Generator
|
Não
|
Não
|
Unipolar to Bipolar Converter
|
Não
|
Não
|
|
DSP System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
ASpectrum Analyser
|
Sim
|
Sim
|
Repeat
|
Sim
|
Sim
|
Cumulative Sum
|
Não
|
Não
|
|
Modulação por Amplitude de Pulso M-ária (PAM-M)
|
Simulink
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Scope
|
Sim
|
Sim
|
Display
|
Sim
|
Sim
|
Complex to Real-Imag
|
Sim
|
Sim
|
Sum
|
Sim
|
Sim
|
Mux
|
Sim
|
Sim
|
Goto
|
Sim
|
Sim
|
From
|
Sim
|
Sim
|
Communications System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
M-PAM Modulator Baseband
|
Não
|
Não
|
M-PAM Demodulator Baseband
|
Não
|
Não
|
Error Rate Calculation
|
Sim
|
Sim
|
Integer to Bit Converter
|
Não
|
Não
|
Bit to Integer Converter
|
Não
|
Não
|
Bernoulli Binary Generator
|
Não
|
Não
|
Constellation Diagram
|
Sim
|
Sim
|
Gaussian Noise Generator
|
Não
|
Não
|
|
Transmissão digital em banda base
|
Simulink
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Scope
|
Sim
|
Sim
|
Discrete FIR Filter
|
Sim
|
Sim
|
Sum, Add, Subtract, Sum of Elements
|
Sim
|
Sim
|
Sine Wave
|
Sim
|
Sim
|
Product
|
Sim
|
Sim
|
Goto
|
Sim
|
Sim
|
From
|
Sim
|
Sim
|
Communications System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
M-PAM Modulator Baseband
|
Não
|
Não
|
M-PAM Demodulator Baseband
|
Não
|
Não
|
Bernoulli Binary Generator
|
Não
|
Não
|
Eye Diagram
|
Sim
|
Sim
|
Gaussian Noise Generator
|
Não
|
Não
|
Communications System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Lowpass Filter
|
Não
|
Não
|
Discrete Impulse
|
Não
|
Não
|
|
Modulações digitais binárias
|
Simulink
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Scope
|
Sim
|
Sim
|
Sine Wave
|
Sim
|
Sim
|
Switch
|
Sim
|
Sim
|
Constant
|
Sim
|
Sim
|
Product
|
Sim
|
Sim
|
Goto
|
Sim
|
Sim
|
From
|
Sim
|
Sim
|
Sum
|
Sim
|
Sim
|
Delay
|
Sim
|
Sim
|
Communications System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Windowed Integrator
|
Não
|
Não
|
Integrate and Dump
|
Não
|
Não
|
Bernoulli Binary Generator
|
Não
|
Não
|
|
Modulações digitais M-árias
|
Simulink
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Scope
|
Sim
|
Sim
|
Complex to Real-Imag
|
Sim
|
Sim
|
Display
|
Sim
|
Sim
|
Communications System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Random Integer Generator
|
Não
|
Não
|
AWGN Channel
|
Não
|
Não
|
Digital Baseband Modulation
|
Sim
|
Sim
|
Constellation Diagram
|
Sim
|
Sim
|
DSP System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Variance
|
Não
|
Não
|
|
Transmissão digital em banda passante
|
Simulink
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Goto
|
Sim
|
Sim
|
Sum
|
Sim
|
Sim
|
Display
|
Sim
|
Sim
|
Communications System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Random Integer Generator
|
Não
|
Não
|
AWGN Channel
|
Não
|
Não
|
QPSK Modulator Baseband
|
Sim
|
Sim
|
QPSK Demodulator Baseband
|
Sim
|
Sim
|
Constellation Diagram
|
Sim
|
Sim
|
Eye Diagram
|
Sim
|
Sim
|
Raised Cosine Transmit Filter
|
Sim
|
Sim
|
DSP System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Spectrum Analyzer
|
Sim
|
Sim
|
Subsistemas Subsystem
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Upconverter
|
Não
|
Não
|
Interference
|
Não
|
Não
|
Upconverted Spectra
|
Não
|
Não
|
Downconverter
|
Não
|
Não
|
Compute BER
|
Não
|
Não
|
Calculate RMS EVM
|
Não
|
Não
|
|
Multipath Fading Channel
|
Communications System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Bernoulli Binary Generator
|
Não
|
Não
|
Digital Baseband Modulation
|
Sim (alguns blocos)
|
Sim (alguns blocos)
|
Multipath Rayleigh Fading Channel
|
Não
|
Não
|
Constellation Diagram
|
Sim
|
Sim
|
Multipath Rician Fading Channel
|
Não
|
Não
|
|
Digital Communications Ber Performance in AWGN or Fading
|
Simulink
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Display
|
Sim
|
Sim
|
Communications System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Bernoulli Binary Generator
|
Não
|
Não
|
Digital Baseband Modulation
|
Sim (alguns blocos)
|
Sim (alguns blocos)
|
Multipath Rayleigh Fading Channel
|
Não
|
Não
|
Constellation Diagram
|
Sim
|
Sim
|
Multipath Rician Fading Channel
|
Não
|
Não
|
AWGN Channel
|
Não
|
Não
|
Eye Diagram
|
Sim
|
Sim
|
Error Rate Calculation
|
Sim
|
Sim
|
|
Orthogonal Frequency Multiplex Division (OFDM)
|
Simulink
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Display
|
Sim
|
Sim
|
Reshape
|
Sim
|
Sim
|
Communications System Toolbox
|
Suporte HDL Coder no MATLAB 2014
|
Suporte HDL Coder no MATLAB 2015
|
Random Integer Generator
|
Não
|
Não
|
Digital Baseband Modulation
|
Sim (alguns blocos)
|
Sim (alguns blocos)
|
Multipath Rayleigh Fading Channel
|
Não
|
Não
|
Constellation Diagram
|
Sim
|
Sim
|
Multipath Rician Fading Channel
|
Não
|
Não
|
AWGN Channel
|
Não
|
Não
|
Eye Diagram
|
Sim
|
Sim
|
Error Rate Calculation
|
Sim
|
Sim
|
OFDM Modulator Baseband
|
Não
|
Não
|
OFDM Demodulator Baseband
|
Não
|
Não
|
|
Professor Orientador
Marcos Moecke
Aluno bolsista
Lucas Lucindo Vieira
Características da Bolsa
O projeto será financiado com bolsa PIBITI do CNPq e será executado entre Agosto de 2015 e Julho de 2015.