DLP2-EngTel (página): mudanças entre as edições

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Moecke (discussão | contribs)
Roberto.matos (discussão | contribs)
Redirecionamento removido para DLP29007-2020-1
Etiqueta: Redirecionamento removido
 
(96 revisões intermediárias por 4 usuários não estão sendo mostradas)
Linha 1: Linha 1:
Página da disciplina hospedada no [https://moodle.ifsc.edu.br/course/view.php?id=7452 Moodle]
<!--
#REDIRECT[[DLP29007-2020-1]]
= Dispositivos Lógicos Programáveis II =
= Dispositivos Lógicos Programáveis II =


*'''Professores:''' [[Arliones Hoeller]] e [[Marcos Moecke]]
*'''Professor:''' [[Roberto de Matos]]
*[[DLP2-EngTel_(Plano_de_Ensino)| Plano de Ensino]]
*[[DLP2-EngTel_(Plano_de_Ensino)| Plano de Ensino]] ('''NÃO OFICIAL - SENDO REVISTO''')
*[[Cronograma de atividades (DLP2-EngTel) | Cronograma]]
*[[Cronograma de atividades (DLP2-EngTel) | Cronograma]]
*[[Horários dos Cursos do IFSC Campus São José | Horário das aulas e atendimento paralelo]]
*[[Horários dos Cursos do IFSC Campus São José | Horário das aulas e atendimento paralelo]]


= Material de aula =
= Material de aula =
==Registro on-line das aulas==
===Unidade 1===
;Aula 1 (11 Ago) - Arliones:
*[[DLP2-EngTel (Plano de Ensino) | Apresentação da disciplina]]
::Ver pag. 1 a 22 de <ref name="PONG2006a"> Pong P. Chu, RTL Hardware Design Using VHDL: Coding for Efficiency, Portability, and Scalability. Wiley-IEEE Press, Hoboken, 2006, ISBN 0471720925 </ref>
::Ver pag. 3 a 48 de <ref name="HARRIS2007"> David Money Harris and Sarah L. Harris, Digital Design and Computer Architecture, Morgan Kaufmann, Burlington, 2007, ISBN 9780123704979, http://dx.doi.org/10.1016/B978-012370497-9/50002-0 </ref>


===Unidade 2===
*[[DLP29007-2019-1 | Semestre 2019-1 - Prof. Roberto de Matos]]
;Aula 2 (15 Ago) - Marcos:
* Processo de Síntese do código VDHL
:* Limitações dos softwares de EDA: Computabilidade, Complexidade Computacional
:* Realização dos operadores VHDL: simplificações para operando constante
:* Realização dos tipos de dados: Alta impedância 'Z' ->  ''buffer tri-state'';
::Ver pag. 125 a 137 de <ref name="PONG2006a" />


;Aula 3 (17 Ago) - Marcos:
* Processo de Síntese do código VDHL: Analise das temporizações:
:* Realização dos tipos de dados: uso de ''don't care'' '-'
:* Tempos de propagação, caminho crítico, caminho falso,
:* Síntese com restrições temporais,
:* Perigos/Armadilhas (''Glitches'' estáticos e dinâmicos, circuitos sensíveis ao atraso)
::Ver pag. 137 a 162 de <ref name="PONG2006a" />
::Ver também os slides [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture02-synthesis.pdf Unidade 2: Processo de Síntese do código VDHL]


{{collapse top | Semestres Anteriores}}
*[[DLP29007-2018-2 | Semestre 2018-2 - Prof. Roberto de Matos]]
*[[DLP29007-2018-1 | Semestre 2018-1 - Prof. Roberto de Matos]]
*[[DLP29007-Engtelecom(2017-2) - Prof. Marcos Moecke | Semestre 2017-2 - Prof. Marcos Moecke]] - Wiki
*[https://moodle.sj.ifsc.edu.br/course/view.php?id=179 Semestre 2017-2 - Prof. Arliones] - Moodle
*[[DLP29007-Engtelecom(2017-1) - Prof. Marcos Moecke | Semestre 2017-1 - Prof. Marcos Moecke]] - Wiki
*[https://moodle.sj.ifsc.edu.br/course/view.php?id=151 Semestre 2017-1 - Prof. Arliones] - Moodle
*[[DLP2-EngTel (página) - 2016-2 (prof. Arliones e Marcos) | Semestre 2016-2 - Prof. Marcos Moecke e Arliones]]
*[[DLP2-EngTel (página) - 2016-1 (prof. Arliones e Marcos) | Semestre 2016-1 - Prof. Marcos Moecke e Arliones]]
*[[DLP2-EngTel (página) - 2015-2 (prof. Arliones e Marcos) | Semestre 2015-2 - Prof. Marcos Moecke e Arliones]]
*[[DLP29007-2015-1 | Semestre 2015-1 - Prof. Marcos Moecke e Arliones]]
{{collapse bottom}}
== Notas de aula ==
== Notas de aula ==


Linha 43: Linha 42:
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture07-register_transfer.pdf Lecture 07: Register Transfer Methodology: Principle]
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture07-register_transfer.pdf Lecture 07: Register Transfer Methodology: Principle]
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture08-register_transfer_examples.pdf Lecture 08: Register Transfer Methodology: Practice]
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture08-register_transfer_examples.pdf Lecture 08: Register Transfer Methodology: Practice]
*[https://www.dropbox.com/s/wts1ai0ltlg27p9/DLP29007%20-%20Projeto%20Hierarquico%20Parametrizado%20v2.pdf?dl=0 Projeto Hierárquico e Parametrizado]


== Roteiros ==
== Roteiros ==


* [[Medição de tempos de propagação em circuitos combinacionais]]
* [[Uso de Logic Lock para definir a área a ser ocupada pelo circuito]]
* [[Laboratórios com Altera NIOS2]]
* [[Laboratórios com Altera NIOS2]]
* [[Configuração e uso do Signal Tap]]
* [[Configuração e uso do Signal Tap]]
Linha 55: Linha 57:


===PARA ENTREGAR===
===PARA ENTREGAR===
{{collapse top | AE1 - XXXX (prazo XX/XX/2016)}}
Neste semestre as atividades avaliativas estão sendo entregues através da [http://moodlenovo.sj.ifsc.edu.br/course/view.php?id=151 plataforma Moodle]. O aluno deverá fazer o login usando o login e senha do portal do aluno.
* Envie o artigo em pdf para (<tt>moecke AT ifsc.edu.br</tt> E <tt>arliones.hoeller AT ifsc.edu.br</tt>), com o ASSUNTO: DLP29007 - AE1  - XXXX.
 
 
{{collapse top | AE1 - Projeto de SoC baseado em NIOS2 (prazo 05/10/2016)}}
Nesta atividade, você vai integrar os desenvolvimentos realizados nos laboratórios envolvendo NIOS2 e SignalTap. As etapas a serem executadas são as seguintes:
 
* Crie um processador NIOS2 com três on-chip FIFOs: duas saídas de 32 bits e uma entrada de X bits (sendo X a saída adequada à operação);
* Conecte a este processador, via FIFOs, um componente externo (ver relação de componentes abaixo);
* Implemente uma aplicação (software) que gere valores aleatórios para as saídas e leia o resultado da operação feita em hardware na entrada;
* Utilize o SignalTap para verificar quantos ciclos de clock são necessários para completar uma operação no hardware;
* Implemente a operação equivalente do módulo de hardware em software;
* Utilize um timer para medir o tempo da operação em software;
* Utilize os performance counters para medir o tempo para realizar a operação em software;
* Relate e discuta seus resultados, apresentando o esquema dos seus testes, os códigos-fontes das aplicações, em formato de artigo e com 6 páginas no máximo.
* Envie o artigo em pdf para (<tt>moecke AT ifsc.edu.br</tt> E <tt>arliones.hoeller AT ifsc.edu.br</tt>), com o ASSUNTO: DLP29007 - AE1.
 
Módulos para serem usados por cada grupo:
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/code/fifo_mult.vhd Multiplicador] => Iago, Marcos
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/code/fifo_xor.vhd XOR] => André, Helen
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/code/fifo_dist.vhd Distância (sqrt(a^2 + b^2))] => Katharine, Kristine
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/code/fifo_add.vhd Soma] => Gabriel, Maria
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/code/fifo_div.vhd Divisão] => Fernando, João
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/code/fifo_mod.vhd Módulo] => Gustavo, Tamara
*Observação: para alguns circuitos pode ser necessário utilizar um clock mais lento. Para isto, utilize um LPM_COUNTER criado pela ferramenta MegaWizard, como fizemos em aula para gerar alguns componentes.
{{collapse bottom}}
 
 
{{collapse top | AE2 - Circuitos Combinacionais  (prazo 19/10/2016 as 23h59)}}
* Formar equipes com 2 alunos. A formação das equipes deve ser informado no [https://www.facebook.com/groups/DLP29007/ Facebook] de DLP29007. Cada equipe deverá trabalhar com um dos temas de 1 a 6.
:'''TEMA 1''' - Implementar o circuito "barrel shifter" (Listing 7.13/7.14, 7.29).  pag. 178-180; 192-196
::Realize os testes com 8 e 16 bits de entrada.
:'''TEMA 2''' - Implementar o circuito "XOR" e "XOR vector" (Listing 7.17, 7.18, 7.21, 7.22, 14.12).  pag. 180-187; 514-515.
::Realize os testes com 8 e 16 bits de entrada.
:'''TEMA 3''' - Implementar os circuitos codificadores de prioridade (Listing 7.24, 7.25 + 7.26). pag. 187-192;
::Realize os testes com 16 entradas 4 bits de saída, 32 entradas 5 bits de saída.
:'''TEMA 4''' - Implementar os circuitos incrementadores de código Gray (Listing 7.30, 7.31). pag. 196-199
::Realize os testes com 4 e 5 bits. para L.7.30, e 4, 5 e 8 bits para L.31.
::Transforme ambos circuitos em decrementadores de código Gray.
:'''TEMA 5''' -  Implementar os circuitos para cálculo da [https://en.wikipedia.org/wiki/Hamming_distance distância de Hamming] (Listing 7.36, 7.37) pag. 206-208
::Realize os testes com 8 bits de entrada e com 16 bits.
:'''TEMA 6''' -  Implementar o circuito multiplicador baseado em somas (Listing 7.34, 7.35). pag. 203-206
::Realize os testes com entradas de 8 bits e saída 16 bits de saída, e com entradas de 12 bits e saída 24 bits de saída.
::Compare os resultados com um multiplicador baseado no operador de multiplicação "*" do VHDL.
 
* Compare o hardware necessário para implementar os circuitos utilizando a famílias de FPGA [CYCLONE].  Utilize sempre o menor '''Device''' que possua os elementos e pinos suficientes para o circuito proposto.
*Realize a simulação funcional de cada circuito usando sempre o mesmo padrão de sinais de entrada.
* Para cada circuito anote os resultados de: número de pinos, número de elementos lógicos/ALUT (indicando os Normais | Aritméticos), atraso de propagação, caminho crítico.
::Esses dados estão disponíveis nos seguintes relatórios: ('''Fitter > Resource Section > Resource Usage'''), ('''TimeQuest Timing Analyser > Datasheet Report > Propagation Delay''')
*No caso do atraso de propagação, verifique para o caminho crítico o atraso de propagação interno, anote e subtraia os tempos dos pinos de I/O, os tempos de propagação do sinal até o primeiro elemento lógico e o tempo de propagação após o último elemento lógico.
::Ver:[[Medição de tempos de propagação em circuitos combinacionais]]
*Para o circuito com maior número de bits, insira restrições temporais para obter um circuito com menor atraso no caminho crítico.  Neste caso procure reduzir gradualmente a tempo máximo de propagação "tp" até atingir o menor valor.
set_max_delay -from [get_ports *] -to [get_ports *]  tp
 
* Escreva um relatório técnico na forma de artigo com 4 a 8 paginas A4. O relatório além das tabelas com os dados, deverá conter as figuras dos circuitos RTL que expliquem as diferenças entre os circuitos, simulações funcionais e uma análise dos resultados obtidos.  O arquivo com o QAR do projeto deve ser também enviado.
* Para a geração de documentação/relatórios técnicos/artigos, está disponibilizada a plataforma  [http://200.135.233.26:3000/project Sharelatex do IFSC-CLOUD]. Utilize preferencialmente o [http://200.135.233.26:3000/project/54750cb57ae8187440d60acd  modelo de artigo no padrão ABNT].
* Envie o artigo em pdf para (<tt>moecke AT ifsc.edu.br</tt> E <tt>arliones.hoeller AT ifsc.edu.br</tt>), com o ASSUNTO: DLP29007 - AE2 - Projeto de Circuitos Combinacionais.
{{collapse bottom}}
 
{{collapse top | AE3 - Circuitos Sequencias (prazo 04/11/2016 23h59)}}
* Formar equipes com 2 ou 3 alunos. A formação das equipes deve ser informado no [https://www.facebook.com/groups/DLP29007/ Facebook] de DLP29007. Cada equipe deverá trabalhar com um dos temas de 1 a 6. (todos os contadores devem ser genéricos para N bits)
 
:'''TEMA 1''' - Estudar e implementar o Contador Gray
::* Versão 1 (Listing 9.7).  pag. 265
::* Versão 2 [https://www.altera.com/support/support-resources/design-examples/design-software/vhdl/vhd-gray-counter.html]
::* Versão 3 [http://www.asic-world.com/examples/vhdl/gray.html]
::* Versão 4 Modifique a versão 3, separando claramente a lógica ''combinacional de next-state'', ''combinacional de output'', e ''register''.
 
:'''TEMA 2''' - Estudar e implementar o Contador em Anel
::* Versão 1 (Listing 9.8).  pag. 267
::* Versão 2 (Listing 9.9).  pag. 268
::* Versão 3 [http://www.embarcados.com.br/implementacao-de-um-shift-register-em-vhdl] [http://www.andrecastelan.com.br/implementacao-de-um-shift-register-em-vhdl/] 
::* Versão 4 Modifique a versão 3, separando claramente a lógica ''combinacional de next-state'', ''combinacional de output'', e ''register''.
 
:'''TEMA 3''' - Estudar e implementar o Contador Decimal e Contador One Hot
::* Versão 1 (Listing 9.12).  pag. 273
::* Versão 2 (Listing 9.13).  pag. 274
::* Versão 3 Contador One Hot [http://www.asic-world.com/examples/vhdl/one_hot.html#One_Hot_Counter].
::* Versão 4 Modifique a versão 3, separando claramente a lógica ''combinacional de next-state'', ''combinacional de output'', e ''register''.
 
:'''TEMA 4''' - Estudar e implementar o Contador LFSR (Linear Feedback Shift Register)
::* Versão 1 (Listing 9.10).  pag. 270
::* Versão 2 (Listing 9.11).  pag. 272
::* Versão 3 [http://www.asic-world.com/examples/vhdl/lfsr.html#Random_Counter_(LFSR)]
::* Versão 4 Modifique a versão 3, separando claramente a lógica ''combinacional de next-state'', ''combinacional de output'', e ''register''.
 
:'''TEMA 5''' - Estudar e implementar o PWM
::* Versão 1 (Listing 9.14).  pag. 275
::* Versão 2 [https://eewiki.net/download/attachments/20939345/pwm_v1_0.vhd?version=1&modificationDate=1420836042247&api=v2]
::* Versão 3 [http://fpgacenter.com/examples/servo/VhdlCode.php]
::* Versão 4 Modifique a versão 3, separando claramente a lógica ''combinacional de next-state'', ''combinacional de output'', e ''register''.
 
:'''TEMA 6''' - Estudar e implementar relógio HH:MM:SS,  considerando o clock de entrada de 50 MHz
::* Versão 1 (alterar a Listing 9.5), página 263 para incluir a hora
::* Versão 2 (alterar a Listing 9.6), página 265 para incluir a hora
::* Versão 3 Implementar o Digital Clock com SSDs da seção 12.5 de <ref name="PEDRONI2010b"> PEDRONI, Volnei A. '''Circuit Design and Simulation with VHDL'''; 2ª ed. Massachusetts-EUA:MIT, 2010. 608 p. ISBN  9780262014335 </ref>, pag 337-340, removendo o ajuste de segundos, minutos e horas.
::* Versão 4 Modifique a versão 3, separando claramente a lógica ''combinacional de next-state'', ''combinacional de output'', e ''register''.
 
* Para cada circuito indicado torne o código genérico para N bits e teste para 4 e 32 bits.
* Teste cada uma das arquiteturas e anote em uma tabela todos os resultados de: número de pinos, número de elementos lógicos/ALUT (indicando os Normais | Aritméticos), Frequência Máxima.
::Esses dados estão disponíveis nos seguintes relatórios: ('''Fitter > Resource Section > Resource Usage'''), ('''TimeQuest Timing Analyser > Datasheet Report > FMax''')
*Insira restrições temporais para obter um circuito com maior Frequência Máxima.
create_clock -name CLKXXXMHz -period XXXMHz [get_ports {nome_do_sinal_de_clock}]
*Realize a simulação funcional de cada circuito com 4 bits.
* Escreva um relatório técnico na forma de artigo com 2 a 4 paginas A4. O relatório além das tabelas com os dados, deverá conter as figuras dos circuitos RTL para 4 bits, simulações funcionais e uma análise textual dos resultados obtidos.  O arquivo com o QAR do projeto deve ser também enviado.
* Para a geração de documentação/relatórios técnicos/artigos, está disponibilizada a plataforma  [http://200.135.233.26:3000/project Sharelatex do IFSC-CLOUD]. Utilize preferencialmente o [http://200.135.233.26:3000/project/54750cb57ae8187440d60acd  modelo de artigo no padrão ABNT].
* Envie o artigo em pdf para (<tt>moecke AT ifsc.edu.br</tt> E <tt>arliones.hoeller AT ifsc.edu.br</tt>), com o ASSUNTO: DLP29007 - AE3 - Circuitos Sequencias.
{{collapse bottom}}
 
{{collapse top |expand = true| AE4 - FSM/RTM (prazo 18/12/2016)}}
 
Nesta atividade, cada dupla entregará uma implementação do jogo QuickFinger (explicado em aula).
Além da implementação padrão, cada dupla realizará uma modificação diferente (lista ao final, por dupla). A figura abaixo apresenta uma visão geral do sistema do jogo:
 
http://docente.ifsc.edu.br/arliones.hoeller/dlp2/figs/quick_finger-block_diagram.png
 
Um relatório final em forma de artigo PDF contendo os itens abaixo deve ser entregue:
* Introdução descrevendo os objetivos do trabalho e apresentando uma visão geral do jogo;
* Descrição da implementação padrão e da modificação do jogo contendo, para cada um:
** Algoritmo em pseudo-código que resolve o problema;
** Diagrama de máquina de estados com datapath (FSMD ou ASMD - preferível ASMD);
** Diagrama de blocos do sistema;
** RTL do circuito gerado por sua implementação;
** Relatório de eficiência do circuito (Fmax, LE/LUT, registradores, etc);
* Conclusão sugerindo pontos positivos e negativos de sua implementação e relatando possíveis melhorias.
* '''Observações:'''
** Não incluir código-fonte no artigo;
** Não ultrapassar 4 páginas de texto (não incluso figuras);
** Não há limite de páginas para figuras.
* Deve ser entregue também o .qar do projeto.
* Envie o trabalho para (<tt>moecke AT ifsc.edu.br</tt> E <tt>arliones.hoeller AT ifsc.edu.br</tt>), com o ASSUNTO: DLP29007 - AE4.
 
{{collapse bottom}}
{{collapse bottom}}


;JÁ ENCERRADAS:
;JÁ ENCERRADAS:
;ESTUDOS SEM ENTREGA DE DOCUMENTAÇÃO:
;ESTUDOS SEM ENTREGA DE DOCUMENTAÇÃO:
{{collapse top  | AL1 - Tempo de propagação em circuitos combinacionais}}
{{collapse top  | AL1 - Tempo de propagação em circuitos combinacionais}}
*[[Medição de tempos de propagação em circuitos combinacionais]]
*[[Medição de tempos de propagação em circuitos combinacionais]]
{{collapse bottom}}
{{collapse bottom}}


== Recursos de Laboratório ==
== 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 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  [http://200.135.233.26:3000/project Sharelatex do IFSC-CLOUD]. Utilize preferencialmente o [http://200.135.233.26:3000/project/54750cb57ae8187440d60acd  modelo de artigo no padrão ABNT].
Para a geração de documentação/relatórios técnicos/artigos, use a plataforma  [https://www.sharelatex.com?r=d418c690&rm=d&rs=b Sharelatex]


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 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.
Linha 168: Linha 299:


= Links Auxiliares =
= Links Auxiliares =
*[[DLP2-EngTel (página) - 2016-1 (prof. Arliones e Marcos)]]
*[https://cs.wmich.edu/gupta/teaching/cs5260/5260Sp15web/lectureNotes/thm14%20-%20parallel%20prefix%20from%20Ottman.pdf Parallel Prefix Computation]
*[[DLP2-EngTel (página) - 2015-2 (prof. Arliones e Marcos)]]
*[https://www.youtube.com/watch?v=bFmTHLZ3DGs#t=469.057233 Getting Started with the TimeQuest Timing Analyzer] Altera
*[[DLP29007-2015-1 | DLP2-EngTel (página) - 2015-1 (prof. Arliones e Marcos)]]
*[[Modelos de Temporização nos FPGAs]]
::
*[http://academic.csuohio.edu/chu_p/rtl/rtl_hardware.html Materiais auxiliares do livro do Pong Chu]
*[http://academic.csuohio.edu/chu_p/rtl/chu_rtL_book/rtL_src_code.rar Código dos Exemplos do livro do Pong Chu]
*[http://www.alterawiki.com/uploads/e/e6/FittingAlgorithms_and_SeedSweeps.pdf Fitting Algorithms, Seeds, and Variation] - ALTERA
*[http://www.alterawiki.com/uploads/6/61/Tips_for_IncrementalCompilation_LogicLock.pdf Tips for Incremental Compilation and LogicLock] - ALTERA
 
-->

Edição atual tal como às 13h36min de 8 de junho de 2021

Página da disciplina hospedada no Moodle