Mudanças entre as edições de "Implementação de sistemas de telecomunicações digitais utilizando simulink e HDL coder"
(42 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
+ | Link curto: http://bit.ly/Simulink2HDL-IFSC | ||
+ | |||
=Resumo do projeto= | =Resumo do projeto= | ||
Linha 8: | Linha 10: | ||
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. | 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. | *'''Primeira etapa''' - Utilizar o ambiente Simulink® para a modelagem e simulação de blocos comumente utilizados em sistemas de telecomunicações. | ||
Linha 17: | Linha 19: | ||
*'''Terceira etapa''' - Os circuitos da segunda etapa serão sintetizados e programados no hardware programável do tipo FPGA. | *'''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. | **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''' | ||
+ | #*Será feito através da plataforma dot.project (https://dotproject.sj.ifsc.edu.br/) disponível no campus São José. | ||
+ | |||
+ | =Implementação - FFT utilizando simulink= | ||
+ | |||
+ | Arquivos das versões da FFT: [[Media:Versoes_FFT.zip | Versões FFT]] | ||
+ | |||
+ | Documentação das modificações da FFT: [[Media:VERSION.txt | Versões]] | ||
+ | |||
+ | *Versão 3_0 - ultima versão | ||
+ | |||
+ | Uma visão geral dos blocos: | ||
+ | |||
+ | [[Imagem:FFT_funcionamento.png| center | 200 px]] | ||
+ | <center> Figura 1 - Visão macroscópica da FFT </center> | ||
+ | |||
+ | ==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:Imagem geral.png| center | 800 px]] | ||
+ | <center> Figura 1 - Composição do Bloco - "FFT Decimation </center> | ||
+ | |||
+ | === 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 .... | ||
+ | {| | ||
+ | |[[Imagem:Dfts.png| 200 px]] | ||
+ | |[[Imagem:Butter.png| 650 px]] | ||
+ | |} | ||
+ | |||
+ | 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. | ||
+ | |||
+ | [[Imagem:Celula.png| center | 150 px]] | ||
+ | <center> Figura 4 - Bloco-célula de uma butterfly </center> | ||
+ | |||
+ | 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. | ||
+ | |||
+ | [[Imagem:Isolado.png| center | 600 px]] | ||
+ | <center> Figura 5 - Esquema interno butterfly </center> | ||
+ | |||
+ | O procedimento que ocorre dentro da butterfly pode ser descrito, didaticamente, de acordo com a figura 6. | ||
+ | |||
+ | [[Imagem:Fly.png| center | 600 px]] | ||
+ | <center> Figura 6 - Funcionamento didático butterfly </center> | ||
+ | |||
+ | === Bloco - "Mwn" === | ||
+ | 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| center | 200 px]] | ||
+ | |[[Ficheiro: Interno.png|Estrutura interna do Mwn|center | center | 600 px]] | ||
+ | <center> Figura 7 - Mwn e sua estrutura interna </center> | ||
+ | |} | ||
+ | |||
+ | O subsistema '''Mwn''' possui apenas saídas. São 8 saídas que correspondem aos Wn calculados. Na versão 3_0 possui uma constante chamada '''constant8''' que vale (1/8), mas na verdade ela representa 1/N, porém, essa versão comporta apenas 8 entradas, por isso optou-se por uma constante de valor 1/8. Em futuras versões esse bloco irá ter 1 entrada que irá corresponder ao N (número de entradas). A figura 7 representa uma visão geral do bloco Mwn. | ||
+ | |||
+ | ==== Bloco - "Wn" ==== | ||
+ | |||
+ | O bloco Wn possui 1 entrada ('''1:N''') e uma saída ('''Wn'''). A Figura 8 demonstra sua visão macroscópica e a figura 9 representa seu esquema interno. | ||
+ | |||
+ | [[Imagem:Wn.png| center | 100 px]] | ||
+ | <center> Figura 8 - Visão Macroscópica de Wn </center> | ||
+ | |||
+ | *Esqueleto interno do bloco Wn: | ||
+ | |||
+ | [[Imagem:Wn interno.png| center | 800 px]] | ||
+ | <center> Figura 9 - Esquema interno Wn </center> | ||
+ | |||
+ | *Para se adequar ao HDL Coder, foi necessário utilizar a estratégia apresentada na figura 10: | ||
+ | |||
+ | [[Imagem:Sen.png| 600 px| center | 800 px]] | ||
+ | <center> Figura 10 - Desmembramento de Wn </center> | ||
+ | |||
+ | O formato padrão de cálculo do Wn se dá por um '''e''' elevado a uma função de N, porém, os blocos disponíveis no HDL coder não suportam o uso de potências de funções. A solução para esse problema foi desmembrar a função Wn em cosseno e seno, além de utilizar equivalências da fórmula de euler, como descrito na figura 10. | ||
+ | |||
+ | ==== Blocos - "{Wn^0 .. Wn^3}" ==== | ||
+ | Dentro do Mwn existem 4 blocos responsáveis pelas potências de Wn (Wn^0, Wn^1, Wn^2, Wn^3). | ||
+ | |||
+ | *Bloco Wn^0: | ||
+ | |||
+ | [[Imagem:wn0.png| center | 100 px]] | ||
+ | <center> Figura 11 - Visão macroscópica Wn^0 </center> | ||
+ | |||
+ | A estratégia menos custosa encontrada para resolver o cálculo de Wn^0 foi levar em consideração que qualquer número elevado a zero é igual a 1. Como descrito na imagem 12, percebe-se que o bloco em questão não possui entradas. Isso ocorre pelo mesmo motivo descrito anteriormente. Não importa qual o valor de Wn, já que o único valor possível será 1. O bloco possui 2 saídas: '''W0''' e '''W0_N'''. O '''W0''' corresponde ao '''Wn^0''' original e o '''W0_N''' corresponde ao '''Wn^0''' negado. Para calcular a parte negada, foi usado o bloco unary minus, que nada mais é do que um inversor. | ||
+ | |||
+ | Esquema interno Wn^0: | ||
+ | |||
+ | [[Imagem:wn0 int.png| center |600 px]] | ||
+ | <center> Figura 12 - Esquema interno Wn^0 </center> | ||
+ | |||
+ | *Bloco Wn^1: | ||
+ | |||
+ | [[Imagem:wn1.png| center | 100 px]] | ||
+ | <center> Figura 13 - Visão macroscópica Wn^1 </center> | ||
+ | |||
+ | O bloco '''Wn^1''' segue quase o mesmo esquema do '''Wn^0'''. O bloco possui 1 entrada que corresponde ao valor de Wn calculado no bloco '''Wn'''. Como esse bloco é Wn^1, sabemos que todo número elevado a 1 é igual a ele mesmo, portanto, o valor de Wn^1 será sempre ele mesmo. Assim como no bloco Wn^0, esse bloco possui 2 saídas: '''Wn1''' e '''~Wn1'''. Wn1 corresponde ao valor original de '''Wn^1''' e '''~Wn1''' é o seu valor negado. Foi utilizado a mesma estratégia do unary minus. Se esquema é representado na figura 14. | ||
+ | |||
+ | Esquema interno Wn^1: | ||
+ | |||
+ | [[Imagem:wn1 int.png| center |600 px]] | ||
+ | <center> Figura 14 - Esquema interno Wn^1 </center> | ||
+ | |||
+ | *Bloco Wn^2: | ||
+ | |||
+ | [[Imagem:wn2.png| center | 100 px]] | ||
+ | <center> Figura 15 - Visão macroscópica Wn^2 </center> | ||
+ | |||
+ | No bloco Wn^2 foi utilizada uma estratégia um pouco diferente dos blocos anteriores. Como já explanado anteriormente, o HDL coder não possui suporte para potências, portanto, o cálculo de Wn^2 necessita de algum estratégia para fazer essa potência. Sabemos que Wn^2 = Wn*Wn, logo, podemos utilizar a única entrada do bloco e conjunto com um bloco product para multiplicar a entrada N (que corresponde ao Wn calculado no bloco Wn) e obter o mesmo resultado de Wn^2. O bloco Wn^2 também possui 2 saídas: '''Wn2''' e '''~Wn2'''. Wn2 corresponde ao valor original de '''Wn^2''' e '''~Wn2''' é o seu valor negado. Foi utilizado a mesma estratégia do unary minus. Seu esquema é representado na figura 16. | ||
+ | |||
+ | Esquema interno Wn^2: | ||
+ | |||
+ | [[Imagem:wn2 int.png| center |800 px]] | ||
+ | <center> Figura 16 - Esquema interno Wn^2 </center> | ||
+ | |||
+ | *Bloco Wn^3: | ||
+ | |||
+ | [[Imagem:wn3.png| center | 100 px]] | ||
+ | <center> Figura 17 - Visão macroscópica Wn^3 </center> | ||
+ | |||
+ | O bloco Wn^3 possui uma estratégia para que seja poupado hardware. Sabemos que Wn^3 = Wn*Wn*Wn. Seria natural utilizar 2 blocos products para realizar essa operação, porém, podemos pegar a saída '''Wn2''' e cascatear para esse bloco. Como Wn2 foi calculado como Wn*Wn, precisamos apenas fazer Wn2*Wn e iremos obter Wn3. Essa estratégia é descrita na figura 18. O bloco Wn^3 também possui 2 saídas: '''Wn3''' e '''Wn3_N'''. Wn3 corresponde ao valor original de '''Wn^2''' e '''Wn3_N''' é o seu valor negado. Foi utilizado a mesma estratégia do unary minus. Seu esquema é representado na figura 18. | ||
+ | |||
+ | Esquema interno Wn^3: | ||
+ | |||
+ | [[Imagem:wn3 int.png| center |800 px|]] | ||
+ | <center> Figura 18 - Esquema interno Wn^3 </center> | ||
+ | |||
+ | =Viabilidade da implementação dos Modelos do projeto: [[INCENTIVANDO O USO DO SIMULINK NOS CURSOS DE TELECOMUNICAÇÕES]]= | ||
+ | |||
+ | *Os blocos que possuem suporte para HDL estão em: [[Blocos Simulink com suporte HDL]] | ||
+ | |||
+ | {{Collapse top |expand = true |[[ Modulações Analógicas | Modulações Analógicas (AM,FM,PM) ]]}} | ||
+ | |||
+ | {{TabComparar3 | Simulink |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Sine Wave| Sim| Sim}} | ||
+ | {{TabComparar3linha |Scope| Sim| Sim}} | ||
+ | {{TabComparar3linha |Goto| Sim| Sim}} | ||
+ | {{TabComparar3linha |From| Sim| Sim}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 |Communications System Toolbox|Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Analog Passband Modulation| Não| Não}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 | Simulink |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Spectrum Analyser| Sim| Sim}} | ||
+ | |} | ||
+ | |||
+ | {{Collapse bottom}} | ||
+ | |||
+ | {{Collapse top |expand = true |[[Amostragem de sinais]]}} | ||
+ | |||
+ | {{TabComparar3 | Simulink |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Sine Wave| Sim| Sim}} | ||
+ | {{TabComparar3linha |Product| Sim| Sim}} | ||
+ | {{TabComparar3linha |Pulse Generator| Não| Não}} | ||
+ | {{TabComparar3linha |Scope| Sim| Sim}} | ||
+ | {{TabComparar3linha |Mux| Sim| Sim}} | ||
+ | {{TabComparar3linha |Gain| Sim| Sim}} | ||
+ | {{TabComparar3linha |Goto| Sim| Sim}} | ||
+ | {{TabComparar3linha |From| Sim| Sim}} | ||
+ | {{TabComparar3linha |Matrix Concatenate| Sim| Sim}} | ||
+ | {{TabComparar3linha |Manual Switch| Não| Não}} | ||
+ | {{TabComparar3linha |Zero-Order Hold| Sim| Sim}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 | DSP System Toolbox |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Spectrum Analyser| Sim| Sim}} | ||
+ | {{TabComparar3linha |Analog Filter Design| Não| Não}} | ||
+ | {{TabComparar3linha |From Multimedia File| Não| Não}} | ||
+ | {{TabComparar3linha |To Multimedia File | Não| Não}} | ||
+ | |} | ||
+ | |||
+ | {{Collapse bottom}} | ||
+ | |||
+ | {{Collapse top |expand = true |[[Quantização]]}} | ||
+ | |||
+ | {{TabComparar3 | Simulink |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Sine Wave| Sim| Sim}} | ||
+ | {{TabComparar3linha |Pulse Generator| Não| Não}} | ||
+ | {{TabComparar3linha |Scope| Sim| Sim}} | ||
+ | {{TabComparar3linha |Mux| Sim| Sim}} | ||
+ | {{TabComparar3linha |Goto| Sim| Sim}} | ||
+ | {{TabComparar3linha |From| Sim| Sim}} | ||
+ | {{TabComparar3linha |Zero-Order Hold| Sim| Sim}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 | Communications System Toolbox|Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |A-Law Expander| Não| Não}} | ||
+ | {{TabComparar3linha |A-Law Compressor| Não| Não}} | ||
+ | {{TabComparar3linha |Mu-Law Expander| Não| Não}} | ||
+ | {{TabComparar3linha |Mu-Law Compressor| Não| Não}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 | DSP System Toolbox |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Analog Filter Design| Sim| Sim}} | ||
+ | {{TabComparar3linha |Scalar Quantizer Encoder| Sim| Sim}} | ||
+ | {{TabComparar3linha |Sample and Hold| Não| Não}} | ||
+ | |} | ||
+ | |||
+ | {{Collapse bottom}} | ||
+ | |||
+ | {{Collapse top |expand = true |[[Modulação por Codificação de Pulso (PCM)]]}} | ||
+ | |||
+ | {{TabComparar3 | Simulink |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Sine Wave| Sim| Sim}} | ||
+ | {{TabComparar3linha |Pulse Generator| Não| Não}} | ||
+ | {{TabComparar3linha |Scope| Sim| Sim}} | ||
+ | {{TabComparar3linha |Goto| Sim| Sim}} | ||
+ | {{TabComparar3linha |From| Sim| Sim}} | ||
+ | {{TabComparar3linha |Zero-Order Hold| Sim| Sim}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 | Communications System Toolbox|Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Integer to Bit Converter| Não| Não}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 | DSP System Toolbox |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |From Multimedia File| Não| Não}} | ||
+ | {{TabComparar3linha |To Multimedia File| Não| Não}} | ||
+ | {{TabComparar3linha |Sample and Hold| Não| Não}} | ||
+ | {{TabComparar3linha |Analog Filter Design| Não| Não}} | ||
+ | {{TabComparar3linha |Scalar Quantizer Encoder| Não| Não}} | ||
+ | {{TabComparar3linha |Scalar Quantizer Decoder| Não| Não}} | ||
+ | |} | ||
+ | |||
+ | {{Collapse bottom} | ||
+ | |||
+ | {{Collapse top |expand = true |[[Modulação Delta (DM)]]}} | ||
+ | |||
+ | {{TabComparar3 | Simulink |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Sine Wave| Sim| Sim}} | ||
+ | {{TabComparar3linha |Pulse Generator| Não| Não}} | ||
+ | {{TabComparar3linha |Scope| Sim| Sim}} | ||
+ | {{TabComparar3linha |Goto| Sim| Sim}} | ||
+ | {{TabComparar3linha |From| Sim| Sim}} | ||
+ | {{TabComparar3linha |Sum, Add Subtract| Sim| Sim}} | ||
+ | {{TabComparar3linha |Zero-Order Hold| Sim| Sim}} | ||
+ | {{TabComparar3linha |Quantizer| Não| Não}} | ||
+ | {{TabComparar3linha |Gain| Sim| Sim}} | ||
+ | {{TabComparar3linha |Unit Delay| Sim| Sim}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 | DSP System Toolbox |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Analog Filter Design| Não| Não}} | ||
+ | {{TabComparar3linha |Sample and Hold| Não| Não}} | ||
+ | {{TabComparar3linha |From Multimedia File| Não| Não}} | ||
+ | {{TabComparar3linha |To Multimedia File| Não| Não}} | ||
+ | |} | ||
+ | |||
+ | {{Collapse bottom}} | ||
+ | |||
+ | {{Collapse top |expand = true |[[Modulação Delta-Sigma]]}} | ||
+ | |||
+ | {{TabComparar3 | Simulink |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Sine Wave| Sim| Sim}} | ||
+ | {{TabComparar3linha |Pulse Generator| Não| Não}} | ||
+ | {{TabComparar3linha |Scope| Sim| Sim}} | ||
+ | {{TabComparar3linha |Goto| Sim| Sim}} | ||
+ | {{TabComparar3linha |From| Sim| Sim}} | ||
+ | {{TabComparar3linha |Discrete-Time Integrator| Sim| Sim}} | ||
+ | {{TabComparar3linha |Zero-Order Hold| Sim| Sim}} | ||
+ | {{TabComparar3linha |Quantizer| Não| Não}} | ||
+ | {{TabComparar3linha |Gain| Sim| Sim}} | ||
+ | {{TabComparar3linha |Unit Delay| Sim| Sim}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 | DSP System Toolbox |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Analog Filter Design| Não| Não}} | ||
+ | {{TabComparar3linha |From Multimedia File| Não| Não}} | ||
+ | {{TabComparar3linha |To Multimedia File| Não| Não}} | ||
+ | |} | ||
+ | |||
+ | {{Collapse bottom}} | ||
+ | |||
+ | {{Collapse top |expand = true |[[Modulação por Codificação Diferencial de Pulso(DPCM)]]}} | ||
+ | |||
+ | {{TabComparar3 | Simulink |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Sine Wave| Sim| Sim}} | ||
+ | {{TabComparar3linha |Pulse Generator| Não| Não}} | ||
+ | {{TabComparar3linha |Scope| Sim| Sim}} | ||
+ | {{TabComparar3linha |Goto| Sim| Sim}} | ||
+ | {{TabComparar3linha |From| Sim| Sim}} | ||
+ | {{TabComparar3linha |Sum| Sim| Sim}} | ||
+ | {{TabComparar3linha |Product| Sim| Sim}} | ||
+ | {{TabComparar3linha |Zero-Order Hold| Sim| Sim}} | ||
+ | {{TabComparar3linha |Quantizer| Não| Não}} | ||
+ | {{TabComparar3linha |Gain| Sim| Sim}} | ||
+ | {{TabComparar3linha |Unit Delay| Sim| Sim}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 | DSP System Toolbox |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Analog Filter Design| Não| Não}} | ||
+ | {{TabComparar3linha |From Multimedia File| Não| Não}} | ||
+ | {{TabComparar3linha |To Multimedia File| Não| Não}} | ||
+ | |} | ||
+ | {{Collapse bottom}} | ||
+ | |||
+ | {{Collapse top |expand = true |[[Códigos de linha]]}} | ||
+ | |||
+ | {{TabComparar3 | Simulink |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Pulse Generator| Não| Não}} | ||
+ | {{TabComparar3linha |Scope| Sim| Sim}} | ||
+ | {{TabComparar3linha |Product| Sim| Sim}} | ||
+ | {{TabComparar3linha |Fcn| Não| Não}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 |Communications System Toolbox|Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Bernoulli Binary Generator| Não| Não}} | ||
+ | {{TabComparar3linha |Unipolar to Bipolar Converter| Não| Não}} | ||
+ | |} | ||
+ | {{Collapse bottom}} | ||
+ | |||
+ | |||
+ | {{TabComparar3 | DSP System Toolbox |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |ASpectrum Analyser| Sim| Sim}} | ||
+ | {{TabComparar3linha |Repeat| Sim| Sim}} | ||
+ | {{TabComparar3linha |Cumulative Sum| Não| Não}} | ||
+ | |} | ||
+ | {{Collapse bottom}} | ||
+ | |||
+ | |||
+ | {{Collapse top |expand = true |[[Modulação por Amplitude de Pulso M-ária (PAM-M)]]}} | ||
+ | |||
+ | {{TabComparar3 | Simulink |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Scope| Sim| Sim}} | ||
+ | {{TabComparar3linha |Display| Sim| Sim}} | ||
+ | {{TabComparar3linha |Complex to Real-Imag| Sim| Sim}} | ||
+ | {{TabComparar3linha |Sum| Sim| Sim}} | ||
+ | {{TabComparar3linha |Mux| Sim| Sim}} | ||
+ | {{TabComparar3linha |Goto| Sim| Sim}} | ||
+ | {{TabComparar3linha |From| Sim| Sim}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 |Communications System Toolbox|Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |M-PAM Modulator Baseband| Não| Não}} | ||
+ | {{TabComparar3linha |M-PAM Demodulator Baseband| Não| Não}} | ||
+ | {{TabComparar3linha |Error Rate Calculation| Sim| Sim}} | ||
+ | {{TabComparar3linha |Integer to Bit Converter| Não| Não}} | ||
+ | {{TabComparar3linha |Bit to Integer Converter| Não| Não}} | ||
+ | {{TabComparar3linha |Bernoulli Binary Generator| Não| Não}} | ||
+ | {{TabComparar3linha |Constellation Diagram| Sim| Sim}} | ||
+ | {{TabComparar3linha |Gaussian Noise Generator| Não| Não}} | ||
+ | |} | ||
+ | {{Collapse bottom}} | ||
+ | |||
+ | {{Collapse top |expand = true |[[Transmissão digital em banda base]]}} | ||
+ | |||
+ | {{TabComparar3 | Simulink |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Scope| Sim| Sim}} | ||
+ | {{TabComparar3linha |Discrete FIR Filter| Sim| Sim}} | ||
+ | {{TabComparar3linha |Sum, Add, Subtract, Sum of Elements| Sim| Sim}} | ||
+ | {{TabComparar3linha |Sine Wave |Sim| Sim}} | ||
+ | {{TabComparar3linha |Product | Sim| Sim}} | ||
+ | {{TabComparar3linha |Goto| Sim| Sim}} | ||
+ | {{TabComparar3linha |From| Sim| Sim}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 |Communications System Toolbox|Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |M-PAM Modulator Baseband| Não| Não}} | ||
+ | {{TabComparar3linha |M-PAM Demodulator Baseband| Não| Não}} | ||
+ | {{TabComparar3linha |Bernoulli Binary Generator| Não| Não}} | ||
+ | {{TabComparar3linha |Eye Diagram| Sim| Sim}} | ||
+ | {{TabComparar3linha |Gaussian Noise Generator| Não| Não}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 |Communications System Toolbox|Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Lowpass Filter| Não| Não}} | ||
+ | {{TabComparar3linha |Discrete Impulse| Não| Não}} | ||
+ | |} | ||
+ | |||
+ | {{Collapse bottom}} | ||
+ | |||
+ | {{Collapse top |expand = true |[[Modulações digitais binárias]]}} | ||
+ | |||
+ | {{TabComparar3 | Simulink |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Scope| Sim| Sim}} | ||
+ | {{TabComparar3linha |Sine Wave| Sim| Sim}} | ||
+ | {{TabComparar3linha |Switch| Sim| Sim}} | ||
+ | {{TabComparar3linha |Constant| Sim| Sim}} | ||
+ | {{TabComparar3linha |Product | Sim| Sim}} | ||
+ | {{TabComparar3linha |Goto| Sim| Sim}} | ||
+ | {{TabComparar3linha |From| Sim| Sim}} | ||
+ | {{TabComparar3linha |Sum| Sim| Sim}} | ||
+ | {{TabComparar3linha |Delay| Sim| Sim}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 |Communications System Toolbox|Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Windowed Integrator| Não| Não}} | ||
+ | {{TabComparar3linha |Integrate and Dump| Não| Não}} | ||
+ | {{TabComparar3linha |Bernoulli Binary Generator| Não| Não}} | ||
+ | |} | ||
+ | |||
+ | {{Collapse bottom}} | ||
+ | |||
+ | {{Collapse top |expand = true |[[Modulações digitais M-árias]]}} | ||
+ | |||
+ | |||
+ | {{TabComparar3 | Simulink |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Scope| Sim| Sim}} | ||
+ | {{TabComparar3linha |Complex to Real-Imag| Sim| Sim}} | ||
+ | {{TabComparar3linha |Display| Sim| Sim}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 |Communications System Toolbox|Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Random Integer Generator| Não| Não}} | ||
+ | {{TabComparar3linha |AWGN Channel| Não| Não}} | ||
+ | {{TabComparar3linha |Digital Baseband Modulation| Sim| Sim}} | ||
+ | {{TabComparar3linha |Constellation Diagram| Sim| Sim}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 |DSP System Toolbox|Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Variance| Não| Não}} | ||
+ | |} | ||
+ | |||
+ | {{Collapse bottom}} | ||
+ | |||
+ | {{Collapse top |expand = true |[[Transmissão digital em banda passante]]}} | ||
+ | |||
+ | {{TabComparar3 | Simulink |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Goto| Sim| Sim}} | ||
+ | {{TabComparar3linha |Sum| Sim| Sim}} | ||
+ | {{TabComparar3linha |Display| Sim| Sim}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 |Communications System Toolbox|Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Random Integer Generator| Não| Não}} | ||
+ | {{TabComparar3linha |AWGN Channel| Não| Não}} | ||
+ | {{TabComparar3linha |QPSK Modulator Baseband| Sim| Sim}} | ||
+ | {{TabComparar3linha |QPSK Demodulator Baseband| Sim| Sim}} | ||
+ | {{TabComparar3linha |Constellation Diagram| Sim| Sim}} | ||
+ | {{TabComparar3linha |Eye Diagram| Sim| Sim}} | ||
+ | {{TabComparar3linha |Raised Cosine Transmit Filter| Sim| Sim}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 | DSP System Toolbox |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Spectrum Analyzer| Sim| Sim}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 | Subsistemas Subsystem |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Upconverter| Não| Não}} | ||
+ | {{TabComparar3linha |Interference| Não| Não}} | ||
+ | {{TabComparar3linha |Upconverted Spectra| Não| Não}} | ||
+ | {{TabComparar3linha |Downconverter| Não| Não}} | ||
+ | {{TabComparar3linha |Compute BER| Não| Não}} | ||
+ | {{TabComparar3linha |Calculate RMS EVM| Não| Não}} | ||
+ | |} | ||
+ | |||
+ | {{Collapse bottom}} | ||
+ | |||
+ | {{Collapse top |expand = true |[[Multipath Fading Channel]]}} | ||
+ | |||
+ | {{TabComparar3 |Communications System Toolbox|Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Bernoulli Binary Generator| Não| Não}} | ||
+ | {{TabComparar3linha |Digital Baseband Modulation| Sim (alguns blocos)| Sim (alguns blocos)}} | ||
+ | {{TabComparar3linha |Multipath Rayleigh Fading Channel| Não| Não}} | ||
+ | {{TabComparar3linha |Constellation Diagram| Sim| Sim}} | ||
+ | {{TabComparar3linha |Multipath Rician Fading Channel| Não| Não}} | ||
+ | |} | ||
+ | |||
+ | {{Collapse bottom}} | ||
+ | |||
+ | {{Collapse top |expand = true |[[Digital Communications Ber Performance in AWGN or Fading]]}} | ||
+ | |||
+ | {{TabComparar3 | Simulink |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Display| Sim| Sim}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 |Communications System Toolbox|Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Bernoulli Binary Generator| Não| Não}} | ||
+ | {{TabComparar3linha |Digital Baseband Modulation| Sim (alguns blocos)| Sim (alguns blocos)}} | ||
+ | {{TabComparar3linha |Multipath Rayleigh Fading Channel| Não| Não}} | ||
+ | {{TabComparar3linha |Constellation Diagram| Sim| Sim}} | ||
+ | {{TabComparar3linha |Multipath Rician Fading Channel| Não| Não}} | ||
+ | {{TabComparar3linha |AWGN Channel| Não| Não}} | ||
+ | {{TabComparar3linha |Eye Diagram| Sim| Sim}} | ||
+ | {{TabComparar3linha |Error Rate Calculation | Sim| Sim}} | ||
+ | |} | ||
+ | |||
+ | {{Collapse bottom}} | ||
+ | |||
+ | {{Collapse top |expand = true |[[Orthogonal Frequency Multiplex Division (OFDM)]]}} | ||
+ | |||
+ | {{TabComparar3 | Simulink |Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Display| Sim| Sim}} | ||
+ | {{TabComparar3linha |Reshape| Sim| Sim}} | ||
+ | |} | ||
+ | |||
+ | {{TabComparar3 |Communications System Toolbox|Suporte HDL Coder no MATLAB 2014 | Suporte HDL Coder no MATLAB 2015}} | ||
+ | {{TabComparar3linha |Random Integer Generator| Não| Não}} | ||
+ | {{TabComparar3linha |Digital Baseband Modulation| Sim (alguns blocos)| Sim (alguns blocos)}} | ||
+ | {{TabComparar3linha |Multipath Rayleigh Fading Channel| Não| Não}} | ||
+ | {{TabComparar3linha |Constellation Diagram| Sim| Sim}} | ||
+ | {{TabComparar3linha |Multipath Rician Fading Channel| Não| Não}} | ||
+ | {{TabComparar3linha |AWGN Channel| Não| Não}} | ||
+ | {{TabComparar3linha |Eye Diagram| Sim| Sim}} | ||
+ | {{TabComparar3linha |Error Rate Calculation | Sim| Sim}} | ||
+ | {{TabComparar3linha |OFDM Modulator Baseband| Não| Não}} | ||
+ | {{TabComparar3linha |OFDM Demodulator Baseband| Não| Não}} | ||
+ | |} | ||
+ | |||
+ | {{Collapse bottom}} | ||
=Professor Orientador= | =Professor Orientador= | ||
Linha 22: | Linha 547: | ||
=Aluno bolsista= | =Aluno bolsista= | ||
− | + | [[Usuário:lucas.lv | Lucas Lucindo Vieira]] | |
=Características da Bolsa= | =Características da Bolsa= | ||
O projeto será financiado com bolsa [http://www.cnpq.br/web/guest/pibiti PIBITI do CNPq] e será executado entre Agosto de 2015 e Julho de 2015. | O projeto será financiado com bolsa [http://www.cnpq.br/web/guest/pibiti PIBITI do CNPq] e será executado entre Agosto de 2015 e Julho de 2015. | ||
+ | |||
+ | |||
+ | [[Categoria:Trabalhos de Alunos]] | ||
+ | [[Categoria:Projeto de Pesquisa]] |
Edição atual tal como às 14h30min de 9 de setembro de 2016
Link curto: http://bit.ly/Simulink2HDL-IFSC
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
- Será feito através da plataforma dot.project (https://dotproject.sj.ifsc.edu.br/) disponível no campus São José.
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:
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.
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 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.
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.
O procedimento que ocorre dentro da butterfly pode ser descrito, didaticamente, de acordo com a figura 6.
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 Mwn possui apenas saídas. São 8 saídas que correspondem aos Wn calculados. Na versão 3_0 possui uma constante chamada constant8 que vale (1/8), mas na verdade ela representa 1/N, porém, essa versão comporta apenas 8 entradas, por isso optou-se por uma constante de valor 1/8. Em futuras versões esse bloco irá ter 1 entrada que irá corresponder ao N (número de entradas). A figura 7 representa uma visão geral do bloco Mwn.
Bloco - "Wn"
O bloco Wn possui 1 entrada (1:N) e uma saída (Wn). A Figura 8 demonstra sua visão macroscópica e a figura 9 representa seu esquema interno.
- Esqueleto interno do bloco Wn:
- Para se adequar ao HDL Coder, foi necessário utilizar a estratégia apresentada na figura 10:
O formato padrão de cálculo do Wn se dá por um e elevado a uma função de N, porém, os blocos disponíveis no HDL coder não suportam o uso de potências de funções. A solução para esse problema foi desmembrar a função Wn em cosseno e seno, além de utilizar equivalências da fórmula de euler, como descrito na figura 10.
Blocos - "{Wn^0 .. Wn^3}"
Dentro do Mwn existem 4 blocos responsáveis pelas potências de Wn (Wn^0, Wn^1, Wn^2, Wn^3).
- Bloco Wn^0:
A estratégia menos custosa encontrada para resolver o cálculo de Wn^0 foi levar em consideração que qualquer número elevado a zero é igual a 1. Como descrito na imagem 12, percebe-se que o bloco em questão não possui entradas. Isso ocorre pelo mesmo motivo descrito anteriormente. Não importa qual o valor de Wn, já que o único valor possível será 1. O bloco possui 2 saídas: W0 e W0_N. O W0 corresponde ao Wn^0 original e o W0_N corresponde ao Wn^0 negado. Para calcular a parte negada, foi usado o bloco unary minus, que nada mais é do que um inversor.
Esquema interno Wn^0:
- Bloco Wn^1:
O bloco Wn^1 segue quase o mesmo esquema do Wn^0. O bloco possui 1 entrada que corresponde ao valor de Wn calculado no bloco Wn. Como esse bloco é Wn^1, sabemos que todo número elevado a 1 é igual a ele mesmo, portanto, o valor de Wn^1 será sempre ele mesmo. Assim como no bloco Wn^0, esse bloco possui 2 saídas: Wn1 e ~Wn1. Wn1 corresponde ao valor original de Wn^1 e ~Wn1 é o seu valor negado. Foi utilizado a mesma estratégia do unary minus. Se esquema é representado na figura 14.
Esquema interno Wn^1:
- Bloco Wn^2:
No bloco Wn^2 foi utilizada uma estratégia um pouco diferente dos blocos anteriores. Como já explanado anteriormente, o HDL coder não possui suporte para potências, portanto, o cálculo de Wn^2 necessita de algum estratégia para fazer essa potência. Sabemos que Wn^2 = Wn*Wn, logo, podemos utilizar a única entrada do bloco e conjunto com um bloco product para multiplicar a entrada N (que corresponde ao Wn calculado no bloco Wn) e obter o mesmo resultado de Wn^2. O bloco Wn^2 também possui 2 saídas: Wn2 e ~Wn2. Wn2 corresponde ao valor original de Wn^2 e ~Wn2 é o seu valor negado. Foi utilizado a mesma estratégia do unary minus. Seu esquema é representado na figura 16.
Esquema interno Wn^2:
- Bloco Wn^3:
O bloco Wn^3 possui uma estratégia para que seja poupado hardware. Sabemos que Wn^3 = Wn*Wn*Wn. Seria natural utilizar 2 blocos products para realizar essa operação, porém, podemos pegar a saída Wn2 e cascatear para esse bloco. Como Wn2 foi calculado como Wn*Wn, precisamos apenas fazer Wn2*Wn e iremos obter Wn3. Essa estratégia é descrita na figura 18. O bloco Wn^3 também possui 2 saídas: Wn3 e Wn3_N. Wn3 corresponde ao valor original de Wn^2 e Wn3_N é o seu valor negado. Foi utilizado a mesma estratégia do unary minus. Seu esquema é representado na figura 18.
Esquema interno Wn^3:
Viabilidade da implementação dos Modelos do projeto: INCENTIVANDO O USO DO SIMULINK NOS CURSOS DE TELECOMUNICAÇÕES
- Os blocos que possuem suporte para HDL estão em: Blocos Simulink com suporte HDL
Modulações Analógicas (AM,FM,PM) | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Amostragem de sinais | |||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Quantização | |||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Modulação por Codificação de Pulso (PCM) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
{{Collapse bottom}
|
Modulação por Amplitude de Pulso M-ária (PAM-M) | |||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Transmissão digital em banda base | |||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Modulações digitais binárias | ||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Modulações digitais M-árias | |||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Transmissão digital em banda passante | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Multipath Fading Channel | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Digital Communications Ber Performance in AWGN or Fading | |||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Orthogonal Frequency Multiplex Division (OFDM) | ||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Professor Orientador
Aluno bolsista
Características da Bolsa
O projeto será financiado com bolsa PIBITI do CNPq e será executado entre Agosto de 2015 e Julho de 2015.