Mudanças entre as edições de "Implementação de sistemas de telecomunicações digitais utilizando simulink e HDL coder"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 88: Linha 88:
 
O segundo grande bloco do subsystem FFT Decimation é o Mwn. Esse bloco é o responsável pelo cálculo dos Wn do sistema.
 
O segundo grande bloco do subsystem FFT Decimation é o Mwn. Esse bloco é o responsável pelo cálculo dos Wn do sistema.
 
{|
 
{|
|[[Ficheiro: Mwn.png |Mwn|200 px]]
+
|[[Ficheiro: Mwn.png |Mwn| center | 200 px]]
|[[Ficheiro: Interno.png|Estrutura interna do Mwn| 600 px]]
+
|[[Ficheiro: Interno.png|Estrutura interna do Mwn|center | center | 600 px]]
 
|}
 
|}
  
Linha 102: Linha 102:
 
*bloco Wn:
 
*bloco Wn:
  
[[Imagem:Wn.png]]
+
[[Imagem:Wn.png| center | 200 px]]
  
 
*Esqueleto interno do bloco Wn:
 
*Esqueleto interno do bloco Wn:
  
[[Imagem:Wn interno.png]]
+
[[Imagem:Wn interno.png| center | 200 px]]
  
 
*Para se adequar ao HDL Coder, foi necessário utilizar a seguinte estratégia para implementação:
 
*Para se adequar ao HDL Coder, foi necessário utilizar a seguinte estratégia para implementação:
  
[[Imagem:Sen.png| 600 px]]
+
[[Imagem:Sen.png| 600 px| center | 200 px]]
  
 
*Dentro do Mwn existem 4 blocos responsáveis pelas potências de Wn (Wn^0, Wn^1, Wn^2, Wn^3)
 
*Dentro do Mwn existem 4 blocos responsáveis pelas potências de Wn (Wn^0, Wn^1, Wn^2, Wn^3)
Linha 116: Linha 116:
 
Bloco Wn^0:
 
Bloco Wn^0:
  
[[Imagem:wn0.png]]
+
[[Imagem:wn0.png| center | 200 px]]
  
 
Esquema interno Wn^0:
 
Esquema interno Wn^0:
  
[[Imagem:wn0 int.png|600 px]]
+
[[Imagem:wn0 int.png| center |600 px]]
  
 
Bloco Wn^1:
 
Bloco Wn^1:
  
[[Imagem:wn1.png]]
+
[[Imagem:wn1.png| center | 200 px]]
  
 
Esquema interno Wn^1:
 
Esquema interno Wn^1:
  
[[Imagem:wn1 int.png|600 px]]
+
[[Imagem:wn1 int.png| center |600 px]]
  
 
Bloco Wn^2:
 
Bloco Wn^2:
  
[[Imagem:wn2.png]]
+
[[Imagem:wn2.png| center | 200 px]]
  
 
Esquema interno Wn^2:
 
Esquema interno Wn^2:
  
[[Imagem:wn2 int.png|600 px]]
+
[[Imagem:wn2 int.png| center |600 px]]
  
 
Bloco Wn^3:
 
Bloco Wn^3:
  
[[Imagem:wn3.png]]
+
[[Imagem:wn3.png| center | 200 px]]
  
 
Esquema interno Wn^3:
 
Esquema interno Wn^3:
  
[[Imagem:wn3 int.png|800 px||Esquema interno Wn^3]]
+
[[Imagem:wn3 int.png| center |800 px||Esquema interno Wn^3]]
  
 
=Viabilidade da implementação dos Modelos do projeto: [[INCENTIVANDO O USO DO SIMULINK NOS CURSOS DE TELECOMUNICAÇÕES]]=
 
=Viabilidade da implementação dos Modelos do projeto: [[INCENTIVANDO O USO DO SIMULINK NOS CURSOS DE TELECOMUNICAÇÕES]]=

Edição das 22h02min de 29 de março de 2016

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 utilizando­se 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 utilizando­se 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

  1. 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).
  2. Estudo das bases da linguagem VHDL
    • Esta etapa será baseada na leitura dos capítulos 18 e 19 de (PEDRONI, 2010).
  3. 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).
  4. 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.
  5. Desenvolvimento de blocos para sistemas de telecomunicações
    • Desenvolvimento de blocos tais como moduladores, filtros digitais, misturadores e geradores de sinal.
  6. 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.
  7. 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.
  8. Gerenciamento do projeto

Implementação - FFT utilizando simulink

Arquivos das versões da FFT: Versões FFT

Documentação das modificações da FFT: Versões

  • Versão 3_0 - ultima versão

Uma visão geral dos blocos:

FFT funcionamento.png
Figura 1 - Visão macroscópica da FFT

Blocos da FFT

Bloco - "FFT Decimation"

O bloco FFT Decimation é um subsistema que agrupa os subsistemas Dfts 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.

Imagem geral.png
Figura 1 - Composição do Bloco - "FFT Decimation

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 ....

Dfts.png Butter.png

Em conjunto, os blocos do dft calculam as butterflies de acordo com a figura 5. A célula recebe quatro entradas: ({u, v}) e ({WnN, WnN_N}). As entradas ({u, v}) vem ou da entrada inicial do FFT Decimation ou da saída de uma outra butterfly. Os valores de {WnN, WnN_N} são oriundos do bloco Mwn, que será explicado mais adiante.

Celula.png
Figura 4 - Bloco-célula de uma butterfly

As quatro entradas se relacionam de acordo com a figura 5. A entrada v é multiplicada por WnN e por WnN_N. Os dois resultados gerados são somados com a entrada u. A butterfly gera, no fim, uma saída U e uma saída V, que poderá ser a saída final da FFT ou pode ser cascateada para outra butterfly.

Isolado.png
Figura 5 - Esquema interno butterfly

O procedimento que ocorre dentro da butterfly pode ser descrito, didaticamente, de acordo com a figura 6.

Fly.png
Figura 6 - Funcionamento didático butterfly

Bloco - "Mwn"

O segundo grande bloco do subsystem FFT Decimation é o Mwn. Esse bloco é o responsável pelo cálculo dos Wn do sistema.

Mwn
Estrutura interna do Mwn

O subsistema Mwn 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).
  • bloco Wn:
Wn.png
  • Esqueleto interno do bloco Wn:
Wn interno.png
  • Para se adequar ao HDL Coder, foi necessário utilizar a seguinte estratégia para implementação:
Sen.png
  • Dentro do Mwn existem 4 blocos responsáveis pelas potências de Wn (Wn^0, Wn^1, Wn^2, Wn^3)

Bloco Wn^0:

Wn0.png

Esquema interno Wn^0:

Wn0 int.png

Bloco Wn^1:

Wn1.png

Esquema interno Wn^1:

Wn1 int.png

Bloco Wn^2:

Wn2.png

Esquema interno Wn^2:

Wn2 int.png

Bloco Wn^3:

Wn3.png

Esquema interno Wn^3:

Esquema interno Wn^3

Viabilidade da implementação dos Modelos do projeto: INCENTIVANDO O USO DO SIMULINK NOS CURSOS DE TELECOMUNICAÇÕES

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.