Mudanças entre as edições de "DLP2-EngTel (página)"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 195: Linha 195:
 
{{collapse top| bg=lightyellow | expandir=true | 03/12...: Projeto Final}}
 
{{collapse top| bg=lightyellow | expandir=true | 03/12...: Projeto Final}}
  
[[MP3 Player and Equalizer]]
+
== 23/06: Final Project ==
 +
 
 +
=== Overview ===
 +
 
 +
[[Arquivo:DLP2-Projeto-UartAudio.png]]
 +
 
 +
Neste projeto você implementará um processador de áudio via serial utilizando a placa Mercurio IV da Macnica com uma FPGA Cyclone IV-E.
 +
Uma visão geral é apresentada na figura acima, composta dos seguintes blocos:
 +
* ''in'' ADC: o chip ADC disponível na placa. Ele está conectado à FPGA por uma interface SPI, entregando um valor inteiro de 12 bits.
 +
* ''out'' DAC: o chip DAC disponível na placa. Ele está conectado à FPGA por uma interface SPI, recebendo um valor inteiro de 12 bits.
 +
* Nios II: O Nios II agirá como um mestre SPI para ler dados do ADC e escrever dados no DAC. O software na CPU lerá os dados do ADC a uma taxa de 8KHz e inserirá os valores de 12 bits em uma FIFO de saída com 8 posições. Ele também lerá dados da FIFO de entrada a uma taxa de 8KHz e escrever no DAC. Nota: você utilizará os 12 LSB das FIFOs.
 +
* Lei A: o bloco LeiA do segmento de envio lerá entradas de 12 bits da FIFO e gerará um dado comprimido de 8-bits. No segmento de recepção, o bloco LeiA receberá valores de 8 bits e expandirá para um valor de 12 bits.
 +
* UART: os dados serão transmitidos através de uma UART conectada a um transceiver RS-232 na placa.
 +
 
 +
<!--
 +
* The following files are avaliable to integrate to your project:
 +
** [https://www.dropbox.com/s/t6hi13yz8loifo5/secure_audio_alunos.qar?dl=0 Download here] a QAR File containing the ADC and DAC adaptation circuit and a Nios2 processor. From this file, you will use a the ADC_OUT FIFO as a data source to your LawA compressor, and the DAC_IN FIFO as a data destination for your LawA decompressor.
 +
** [https://www.dropbox.com/s/31rpm08dz0zlknt/secure_audio_alunos_application.zip?dl=0 Download here] the ecliplse project of the application that should run on the Nios2 processor. You will need to generate the BSP (sopcinfo file is in the QAR).
 +
-->
 +
 
 +
=== Material de apoio para o projeto ===
 +
 
 +
* Conversores Analógico-Digital (CAD) e Conversor Digital-Analógico (CDA)
 +
:Ver: [http://www.sj.ifsc.edu.br/~fabiosouza/Tecnologo/Telefonia%201/Telefonia%20Digital%20PCM%20-%20parte%202de%202%20antiga.pdf Moecke, M. Curso de Telefonia Digital, ETFSC, 1998]
 +
 
 +
* Implementação de um codificador/decodificador para Lei A.
 +
[[Arquivo:LeiA.png | Compressão e descompressão pela Lei A]]
 +
:FONTE: [http://www.sj.ifsc.edu.br/~fabiosouza/Tecnologo/Telefonia%201/Telefonia%20Digital%20PCM%20-%20parte%202de%202%20antiga.pdf Moecke, M. Curso de Telefonia Digital, ETFSC, 1998], [https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-G.711-198811-I!!PDF-E&type=items ITU-T, Recommendation G.711 (11/88)]
 +
*Implementação de uma [[Interface Serial Assíncrona]].
 +
 
  
 
{{collapse bottom}}
 
{{collapse bottom}}

Edição das 15h37min de 8 de março de 2016

EngTel: Dispositivos Lógicos Programáveis II

  • Professores: Arliones Hoeller e Marcos Moecke
  • Turma: 29007
  • Encontros: semanalmente nas terças e quinzenalmente nas quartas às 15:40 no Laboratório de Programação.

Plano de Ensino

Cronograma de Atividades

Material das Aulas

Referências Bibliográficas

  1. Pong P. Chu, RTL Hardware Design Using VHDL: Coding for Efficiency, Portability, and Scalability. Wiley-IEEE Press, Hoboken, 2006, Pages 1-22, ISBN 0471720925.
  2. David Money Harris and Sarah L. Harris, Digital Design and Computer Architecture, Morgan Kaufmann, Burlington, 2007, Pages 3-48, ISBN 9780123704979, http://dx.doi.org/10.1016/B978-012370497-9/50002-0.

Notas de aulas

Estas notas de aula são baseadas nas dispobilizadas pelo Prof. Pong P. Chu em [1].

Atividades extra

Neste tópico serão listadas as atividades extras que os alunos da disciplina deverão realizar ao longo do curso. É importante observar o prazo de entrega, pois os conceitos serão reduzidos conforme o atraso na entrega. Para a entrega no prazo os conceitos possíveis são (A, B, C, D). Entrega com até uma semana de atraso (B, C, D). Entrega com até duas semanas de atraso (C ou D). Entrega com mais de duas semanas de atraso (D). Em virtude do número impar de alunos na turma, os trabalhos em equipes serão sempre 3 diferentes, onde um dos alunos deverá trabalhar sozinho. Ao longo do semestre todos terão o privilégio de trabalhar em equipe consigo mesmo.


PARA ENTREGAR
AE2 - Circuitos Sequenciais (prazo ??/??/201?)
AE3 - Máquinas de estados (prazo 22/12/2015)
  • Comparar o hardware necessário para implementar os circuitos abaixo utilizando as seguintes famílias de FPGA ou CLP [CYCLONE | STRATIX II | MAX 3000]. Utilize sempre o menor Device de cada familia que possua os elementos e pinos suficientes para o circuito proposto.
  • Faça a compilação de cada circuito utilizando as otimizações [Balanceada | Speed | Area]
  • Teste cada uma das arquiteturas e anote em uma tabela todos os resultados de: Elementos Lógicos/ALUT (separando em Normais | Aritméticos), Frequência Máxima, Potencia total.
  • Os dados acima estão disponíveis nos seguintes relatórios: (Fitter > Resource Section > Resource Usage), (PowerPlay Pawer Analyser Summary > Summary), (TimeQuest Timing Analyser > Slow 1200mV 85C Model > Fmax Summary > Fmax)
  • Formem equipes com '1' ou 2 alunos. Cada deverá trabalhar com um dos temas de 1 a 3.
TEMA 1 - Implementar os circuitos de detecção de borda (Listing 10.7 a 10.11); Modificar o de melhor desempenho para detectar qualquer mudança de borda, e não apenas a borda de subida como no código original; testar na MAX3000. (Ana e Tiago)
TEMA 2 - Implementar os circuitos Árbitro (Listing 10.12 e 10.13); Modificar o de melhor desempenho para preemptar o recurso alocado caso um sinal de timeout ocorra E houver requisições aguardando; testar na Cyclone III. (Guilherme)
TEMA 3 - Implementar os circuitos DRAM strober (Listing 10.14 e 10.15); Modificar o de melhor desempenho para operar com períodos de clock de 10ns e de 20ns; e testar na Stratix II (Karol e Matias)
  • Elabore um seminário a ser apresentado aos colegas durante a aula, mostrando as métricas dos circuitos e justificando as diferenças. Apresente como você modificou o circuito para atender os requisitos acima, e explique as diferenças nas métricas do novo circuito, caso existam. Verifique se o hardware obtido corresponde ao esperado. Os slides utilizados devem ser entregues ao professor.
  • Envie os slides em pdf para (moecke AT ifsc.edu.br E arliones.hoeller AT ifsc.edu.br), com o ASSUNTO: DLP29007 - AE3 - Projeto de Máquinas de Estados.
JÁ ENCERRADAS
AE1 - Circuitos Combinacionais (prazo 17/11/2015)
  • Comparar o hardware necessário para implementar os circuitos abaixo utilizando as seguintes famílias de FPGA [CYCLONE | STRATIX II | MAX 3000]. Utilize sempre o menor Device de cada familia, que possua os elementos e pinos suficientes para o circuito proposto.
  • Faça a compilação de cada circuito utilizando as otimizações [Balanceada | Speed | Area]
  • Teste cada uma das arquiteturas e anote em uma tabela todos os resultados de: Elementos Lógicos/ALUT (separando em Normais | Aritméticos), Atraso de Propagação, Potencia total, Caminho Crítico.
  • Os dados acima estão disponíveis nos seguintes relatórios: (Fitter > Resource Section > Resource Usage), (PowerPlay Pawer Analyser Summary > Summary), (TimeQuest Timing Analyser > Datasheet Report > Propagation Delay)
  • Formem equipes com '1' ou 2 alunos. Cada deverá trabalhar com um dos temas de 1 a 3 e também todos devem trabalhar os temas 4 e 5.
TEMA 1 - Implementar os circuitos somadores-subtratores (Listing 7.1, 7.2 e 7.3), tornando o código genérico para N bits. Testar com 16 bits de entrada para a e b. (Guilherme e Karolina)
TEMA 2 - Implementar os circuitos comparadores dual-mode (Listing 7.4, 7.5), tornando o código genérico para N bits. Testar com 16 bits de entrada para a e b. (Ana e Tiago)
TEMA 3 - Implementar os circuitos comparadores completos (Listing 7.10, 7.11, 7.12), tornando o código genérico para N bits. Testar com 16 bits de entrada para a e b. (Matias)
TEMA 4 - Implementar o circuito multiplicador baseado em somas (Listing 7.34, 7.35).
TEMA 5 - Implementar o circuito distancia de Hamming (Listing 7.36, 7.37).
  • Escreva um relatório na forma de artigo com 4 a 6 paginas A4. O relatório além das tabelas com os dados, deverá conter as figuras dos circuitos RTL obtidos e uma análise dos resultados obtidos. Verifique se o hardware obtido corresponde ao esperado.
  • Para a geração de documentação/relatórios técnicos/artigos, está disponibilizada a plataforma Sharelatex do IFSC-CLOUD. Utilize preferencialmente o modelo de artigo no padrão ABNT.
  • Envie o artigo em pdf para (moecke AT ifsc.edu.br E arliones.hoeller AT ifsc.edu.br), com o ASSUNTO: DLP29007 - AE1 - Projeto de Circuitos Combinacionais.
ESTUDOS SEM ENTREGA DE DOCUMENTAÇÃO

Recursos de Laboratório

Para uso fora do IFSC dos recursos computacionais com licença educacional, o IFSC disponibiliza para seus alunos o IFSC-CLOUD. Atualmente a forma mais eficiente de acesso é através do Cliente X2GO. O procedimento de instalação/ configuração e uso do Quartus/Modelsim/QSIM está descrito em Acesso ao IFSC-CLOUD#Cliente X2GO (recomendado).

Para a geração de documentação/relatórios técnicos/artigos, está disponibilizada a plataforma Sharelatex do IFSC-CLOUD. Utilize preferencialmente o modelo de artigo no padrão ABNT.

Para estudo de FPGAs o Laboratório de Programação dispõe de kits Mercúrio IV da Macnica-DHW e também DE2-115 da Terasic. Veja como utilizar estes kits em Preparando para gravar o circuito lógico no FPGA, one além de acesso aos manuais dos fabricantes, você tem acesso a uma descrição resumida da pinagem mais utilizada desses kits.

Para depurar seu circuito em uma FPGA de verdade, pode ser interessante utilizar o SignalTapII da Altera, que permite realizar análise lógica dos sinais no seu circuito. Para iniciar o uso da ferramenta, siga este tutorial.

Para determinar os caminhos críticos do projeto (ou os tempos de propagação entre quaisquer nós de um projeto, utilize a Análise de Caminho Crítico com Qaurtus II.

Diário de Aulas

29/07: Laboratório: Processadores Embarcados (SoC)

Nesta aula nós seguiremos um tutorial da Altera para construir um System-on-a-Chip (SoC), sintetizando um processador softcore NIOS em uma FPGA e carregando um software nele. Nas próximas aulas nós integraremos nossa própria lógica neste processador. Esta arquitetura de sistema deverá ser empregada em todos os trabalhos ao longo do semestre.

A figura abaixo dá uma visão geral do que iremos implementar:

nios2-hw-tutorial.gif

Você precisará destes documentos para desenvolver este tutorial:

Recomenda-se seguir este roteiro:

  • Analisar e debater figura 1-1 na página 1-2;
  • Destacar os requisitos de hardware para o experimento na página 1-3;
  • Analisar e debater o fluxo de desenvolvimento de projeto da figura 1-2 na página 1-4;
  • Debater as questões de análise de requisitos do sistema na página 1-5;
  • Partir para criação do exemplo na página 1-8;
  • Seguir tutorial (passos importantes destacados no PDF);
06/10: Laboratório: Processadores Embarcados (SoC)

Retomada da aula de 28/07

Você precisará destes documentos para desenvolver este tutorial:

Recomenda-se seguir este roteiro:

  • Analisar e debater figura 1-1 na página 1-2;
  • Destacar os requisitos de hardware para o experimento na página 1-3;
  • Analisar e debater o fluxo de desenvolvimento de projeto da figura 1-2 na página 1-4;
  • Debater as questões de análise de requisitos do sistema na página 1-5;
  • Partir para criação do exemplo na página 1-8;
  • Seguir tutorial (passos importantes destacados no PDF);
  • Usando o Pin Planner (Assignment > Pin Planner) selecione os pinos corretos no kit Mercúrio IV. Veja a pinagem em Preparando para gravar o circuito lógico no FPGA.
  • Mude a tensão default dos pinos para 3.3V (Assignment > Device > Device and Pin Options > Voltage), [Default I/O standard = 3.3-V LVTLL] [OK] [OK]
  • Configure os pinos não usados para Tri-State (Assignment > Device > Device and Pin Options > Unused Pins), [Reserve all unused pins = As input tri-stated] e [OK] [OK]

Se o Eclipse SBT do Nios II não inicializar em um sistema Ubuntu 14.04 ou mais recente, você precisa instalar a libGTK2:

sudo apt-get install libgtk2.0-0:i386
07/10: Laboratório: Processadores Embarcados (SoC)

Continuação da aula de 06/10.

Modificar o projeto da aula passada para:

  • Ler um conjunto de entradas digitais a partir das chaves da placa;
  • Obter estes sinais no software rodando no NIOS através de uma PIO;
  • Escrever estes sinais para LEDs no softwaer, através de outra PIO.
13/10: Gerenciamento de Complexidade e Visão Geral de Sistemas Digitais Complexos
  • Leituras recomendadas:
    • Capítulo 1 do livro do Chu;
    • Capítulo 1 do livro do Harris;
    • Lecture notes 01.
20/10: Síntese de Código VHDL
  • Leitura recomendada:
    • Capítulo 6 do livro do Chu;
    • Lecture notes 02.
21,27/10, 03/11: Eficiência de Circuitos Combinacionais
04,10,17/11: Eficiência de Circuitos Sequenciais
18,24/11: Eficiência de Máquinas de Estado
01,02,08/12: Register Transfer Methodology
15/12: Projeto Hierárquico
16/12: Projeto Parametrizado
22/12,02/02: Clock e Sincronização
03/12...: Projeto Final

23/06: Final Project

Overview

DLP2-Projeto-UartAudio.png

Neste projeto você implementará um processador de áudio via serial utilizando a placa Mercurio IV da Macnica com uma FPGA Cyclone IV-E. Uma visão geral é apresentada na figura acima, composta dos seguintes blocos:

  • in ADC: o chip ADC disponível na placa. Ele está conectado à FPGA por uma interface SPI, entregando um valor inteiro de 12 bits.
  • out DAC: o chip DAC disponível na placa. Ele está conectado à FPGA por uma interface SPI, recebendo um valor inteiro de 12 bits.
  • Nios II: O Nios II agirá como um mestre SPI para ler dados do ADC e escrever dados no DAC. O software na CPU lerá os dados do ADC a uma taxa de 8KHz e inserirá os valores de 12 bits em uma FIFO de saída com 8 posições. Ele também lerá dados da FIFO de entrada a uma taxa de 8KHz e escrever no DAC. Nota: você utilizará os 12 LSB das FIFOs.
  • Lei A: o bloco LeiA do segmento de envio lerá entradas de 12 bits da FIFO e gerará um dado comprimido de 8-bits. No segmento de recepção, o bloco LeiA receberá valores de 8 bits e expandirá para um valor de 12 bits.
  • UART: os dados serão transmitidos através de uma UART conectada a um transceiver RS-232 na placa.


Material de apoio para o projeto

  • Conversores Analógico-Digital (CAD) e Conversor Digital-Analógico (CDA)
Ver: Moecke, M. Curso de Telefonia Digital, ETFSC, 1998
  • Implementação de um codificador/decodificador para Lei A.

Compressão e descompressão pela Lei A

FONTE: Moecke, M. Curso de Telefonia Digital, ETFSC, 1998, ITU-T, Recommendation G.711 (11/88)