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
(Redirecionamento removido para DLP29007-2020-1)
Etiqueta: Redirecionamento removido
 
(169 revisões intermediárias por 4 usuários não estão sendo mostradas)
Linha 1: Linha 1:
= EngTel: Dispositivos Lógicos Programáveis II =
+
Página da disciplina hospedada no [https://moodle.ifsc.edu.br/course/view.php?id=7452 Moodle]
  
*'''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.
 
  
== [[DLP2-EngTel_(Plano_de_Ensino)|'''Plano de Ensino''']] ==
+
<!--
 +
 
 +
#REDIRECT[[DLP29007-2020-1]]
 +
 
 +
= Dispositivos Lógicos Programáveis II =
  
== [[Cronograma de atividades (DLP2-EngTel)|'''Cronograma de Atividades''']] ==
+
*'''Professor:''' [[Roberto de Matos]]
 +
*[[DLP2-EngTel_(Plano_de_Ensino)| Plano de Ensino]] ('''NÃO OFICIAL - SENDO REVISTO''')
 +
*[[Cronograma de atividades (DLP2-EngTel) | Cronograma]]
 +
*[[Horários dos Cursos do IFSC Campus São José | Horário das aulas e atendimento paralelo]]
  
= Material das Aulas =
+
= Material de aula =
  
== Referências Bibliográficas ==
+
*[[DLP29007-2019-1 | Semestre 2019-1 - Prof. Roberto de Matos]]
  
#Pong P. Chu, RTL Hardware Design Using VHDL: Coding for Efficiency, Portability, and Scalability. Wiley-IEEE Press, Hoboken, 2006, Pages 1-22, ISBN 0471720925.
 
#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 ==
+
{{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 ==
  
 
Estas notas de aula são baseadas nas dispobilizadas pelo Prof. Pong P. Chu em [http://academic.csuohio.edu/chu_p/rtl/rtl_hardware.html].
 
Estas notas de aula são baseadas nas dispobilizadas pelo Prof. Pong P. Chu em [http://academic.csuohio.edu/chu_p/rtl/rtl_hardware.html].
Linha 22: Linha 36:
 
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture01-complexity.pdf Lecture 01: Complexity Mangement and the Design of Complex Digital Systems]
 
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture01-complexity.pdf Lecture 01: Complexity Mangement and the Design of Complex Digital Systems]
 
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture02-synthesis.pdf Lecture 02: Synthesis of VHDL Code]
 
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture02-synthesis.pdf Lecture 02: Synthesis of VHDL Code]
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture03-combinational.pdf Lecture 02: Efficient Design of Combinational Circuits]
+
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture03-efficient_comb_circuits.pdf Lecture 03: Efficient Design of Combinational Circuits]
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture04-sequential.pdf Lecture 03: Efficient Design of Sequential Circuits]
+
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture04-efficient_seq_circuits.pdf Lecture 04: Efficient Design of Sequential Circuits]
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture05-sequetial_design.pdf Lecture 04: Design of Sequential Circuits: Practice]
+
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture05-sequetial_circuit_design.pdf Lecture 05: Design of Sequential Circuits: Practice]
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture06-fsm.pdf Lecture 05: Finite State Machines: Principle and Practice]
+
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture06-fsm.pdf Lecture 06: Finite State Machines: Principle and Practice]
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture07-register_transfer.pdf Lecture 06: 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]
 +
*[https://www.dropbox.com/s/wts1ai0ltlg27p9/DLP29007%20-%20Projeto%20Hierarquico%20Parametrizado%20v2.pdf?dl=0 Projeto Hierárquico e Parametrizado]
 +
 
 +
== Roteiros ==
  
* [http://tdb Lecture 07: Register Transfer Methodology: Practice]
+
* [[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]]
 
* [[Configuração e uso do Signal Tap]]
 
* [[Configuração e uso do Signal Tap]]
* [http://tdb Lecture 08: Hierarchical Design]
 
* [http://tdb Lecture 09: Parameterized Design: Principle]
 
* [http://tdb Lecture 10: Parameterized Design: Practice]
 
* [http://tdb Lecture 11: Clock and Synchronization: Principle and Practice]
 
  
===Atividades extra===
+
==Avaliação==
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.
+
Neste tópico serão listadas as Atividades Práticas realizadas ao longo do semestre. Para cada uma dessas atividades o aluno/equipe que não entrega-la no prazo preestabelecido, poderá entregar a atividade com: uma semana de atraso obtendo no máximo o valor 8; duas semanas de atraso obtendo no máximo o valor 6; três semanas de atraso obtendo no máximo o valor 4;
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.
+
Os critérios de avaliação estão descritos no [[DLP2-EngTel_(Plano_de_Ensino)| Plano de Ensino]].
+
 
 +
===PARA ENTREGAR===
 +
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.
  
;PARA ENTREGAR:
 
{{collapse top | expand=true | AE2 - Circuitos Sequenciais (prazo ??/??/201?)}}
 
{{collapse bottom}}
 
  
{{collapse top | expand=true | AE3 - Máquinas de estados  (prazo 22/12/2015)}}
+
{{collapse top | AE1 - Projeto de SoC baseado em NIOS2 (prazo 05/10/2016)}}
*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.
+
Nesta atividade, você vai integrar os desenvolvimentos realizados nos laboratórios envolvendo NIOS2 e SignalTap. As etapas a serem executadas são as seguintes:
*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.
+
* 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);
:'''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)
+
* Conecte a este processador, via FIFOs, um componente externo (ver relação de componentes abaixo);
:'''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)
+
* 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;
:'''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)
+
* 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.
  
* 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.
+
Módulos para serem usados por cada grupo:
* Envie os slides em pdf para (<tt>moecke AT ifsc.edu.br</tt> E <tt>arliones.hoeller AT ifsc.edu.br</tt>), com o ASSUNTO: DLP29007 - AE3 - Projeto de Máquinas de Estados.
+
* [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 bottom}}
  
;JÁ ENCERRADAS:
 
  
{{collapse top | expand=false | AE1 - Circuitos Combinacionais  (prazo 17/11/2015)}}
+
{{collapse top | AE2 - Circuitos Combinacionais  (prazo 19/10/2016 as 23h59)}}
*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.
+
* 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.
*Faça a compilação de cada circuito utilizando as otimizações [Balanceada | Speed | Area]
+
:'''TEMA 1''' - Implementar o circuito "barrel shifter" (Listing 7.13/7.14, 7.29).  pag. 178-180; 192-196
*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.
+
::Realize os testes com 8 e 16 bits de entrada.
:* 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''')
+
:'''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
  
* 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.
+
* 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.  
:'''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  [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, 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 - AE1 - Projeto de Circuitos Combinacionais.
+
* 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 bottom}}
  
;ESTUDOS SEM ENTREGA DE DOCUMENTAÇÃO:
+
{{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)
  
== Recursos de Laboratório ==
+
:'''TEMA 1''' - Estudar e implementar o Contador Gray
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)]].
+
::* 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''.  
  
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].
+
:'''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''.  
  
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.
+
:'''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''.  
  
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 [[Tutorial Altera SignalTapII |este tutorial]].
+
:'''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''.  
  
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]].
+
:'''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''.  
  
= Diário de Aulas =
+
:'''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''.
  
{{collapse top| bg=lightyellow | expandir=true | 29/07: Laboratório: Processadores Embarcados (SoC)}}
+
* 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}}
  
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.
+
{{collapse top |expand = true| AE4 - FSM/RTM (prazo 18/12/2016)}}
  
A figura abaixo uma visão geral do que iremos implementar:
+
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:
  
https://www.altera.com/content/dam/altera-www/global/en_US/images/support/examples/images/nios2-hw-tutorial.gif
+
http://docente.ifsc.edu.br/arliones.hoeller/dlp2/figs/quick_finger-block_diagram.png
  
Você precisará destes documentos para desenvolver este tutorial:
+
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.
  
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/docs/tt_nios2_hardware_tutorial-with_markings.pdf Tutorial com pontos importantes destacados.]
+
{{collapse bottom}}
* Código-base para início do tutorial [https://www.altera.com/content/dam/altera-www/global/en_US/others/literature/tt/niosii_hw_dev_tutorial.zip na ALTERA],[http://docente.ifsc.edu.br/moecke/DLP2/niosii_hw_dev_tutorial.zip no IFSC]
 
* [[Pinagem dos dispositivos de entrada e saída do kit MERCURIO IV]]
 
 
 
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);
 
  
 +
;JÁ ENCERRADAS:
 +
;ESTUDOS SEM ENTREGA DE DOCUMENTAÇÃO:
 +
{{collapse top  | AL1 - Tempo de propagação em circuitos combinacionais}}
 +
*[[Medição de tempos de propagação em circuitos combinacionais]]
 
{{collapse bottom}}
 
{{collapse bottom}}
  
{{collapse top| bg=lightyellow | expandir=true | 06/10: Laboratório: Processadores Embarcados (SoC)}}
 
  
Retomada da aula de 28/07
+
== 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)]].
  
Você precisará destes documentos para desenvolver este tutorial:
+
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]
  
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/docs/tt_nios2_hardware_tutorial-with_markings.pdf Tutorial com pontos importantes destacados.]
+
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.
* Código-base para início do tutorial [https://www.altera.com/content/dam/altera-www/global/en_US/others/literature/tt/niosii_hw_dev_tutorial.zip na ALTERA],[http://docente.ifsc.edu.br/arliones.hoeller/dlp2/code/niosii_hw_dev_tutorial.zip no IFSC]
 
* [http://www.macnicadhw.com.br/c/document_library/get_file?uuid=0612db45-0434-4737-a380-ac846cf662b3&groupId=10157 Esquemático da MercurioIV]
 
*[[Preparando para gravar o circuito lógico no FPGA]]
 
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:
+
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 [[Tutorial Altera SignalTapII |este tutorial]].
sudo apt-get install libgtk2.0-0:i386
 
  
{{collapse bottom}}
+
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]].
  
{{collapse top| bg=lightyellow | expandir=true | 07/10: Laboratório: Processadores Embarcados (SoC)}}
+
==Referências Bibliográficas:==
 
+
<references/>
Continuação da aula de 06/10.
+
 +
{{ENGTELECO}}
  
Modificar o projeto da aula passada para:
+
= Conteúdo =
*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.
 
  
{{collapse bottom}}
+
{{collapse top| bg=lightyellow | expandir=true | Gerenciamento de Complexidade e Visão Geral de Sistemas Digitais Complexos}}
  
{{collapse top| bg=lightyellow | expandir=true | 13/10: Gerenciamento de Complexidade e Visão Geral de Sistemas Digitais Complexos}}
+
==Gerenciamento de Complexidade e Visão Geral de Sistemas Digitais Complexos==
  
 
*Leituras recomendadas:
 
*Leituras recomendadas:
 
**Capítulo 1 do livro do Chu;
 
**Capítulo 1 do livro do Chu;
 
**Capítulo 1 do livro do Harris;
 
**Capítulo 1 do livro do Harris;
**Lecture notes 01.
+
**Notas de aula 01.
  
 
{{collapse bottom}}
 
{{collapse bottom}}
  
{{collapse top| bg=lightyellow | expandir=true | 20/10: Síntese de Código VHDL}}
+
{{collapse top| bg=lightyellow | expandir=true | Síntese de Código VHDL}}
 +
 
 +
==Síntese de Código VHDL==
  
 
*Leitura recomendada:
 
*Leitura recomendada:
 
**Capítulo 6 do livro do Chu;
 
**Capítulo 6 do livro do Chu;
**Lecture notes 02.
+
**Notas de aula 02.
  
 
{{collapse bottom}}
 
{{collapse bottom}}
  
{{collapse top| bg=lightyellow | expandir=true | 21,27/10, 03/11: Eficiência de Circuitos Combinacionais}}
+
{{collapse top| bg=lightyellow | expandir=true | Eficiência de Circuitos Combinacionais}}
 +
 
 +
==Eficiência de Circuitos Combinacionais==
 +
 
 +
*Leitura recomendada:
 +
**Capítulo 7 do livro do Chu;
 +
**Notas de aula 03.
 +
 
 +
*[[Medição de tempos de propagação em circuitos combinacionais]]
 +
 
 
{{collapse bottom}}
 
{{collapse bottom}}
  
{{collapse top| bg=lightyellow | expandir=true | 04,10,17/11: Eficiência de Circuitos Sequenciais}}
+
{{collapse top| bg=lightyellow | expandir=true | Eficiência de Circuitos Sequenciais}}
 +
 
 +
==Eficiência de Circuitos Sequenciais==
 +
 
 +
*Leitura recomendada:
 +
**Capítulos 8 e 9 do livro do Chu;
 +
**Notas de aula 04 e 05.
 +
 
 
{{collapse bottom}}
 
{{collapse bottom}}
  
{{collapse top| bg=lightyellow | expandir=true | 18,24/11: Eficiência de Máquinas de Estado}}
+
{{collapse top| bg=lightyellow | expandir=true | Eficiência de Máquinas de Estado}}
{{collapse bottom}}
 
  
{{collapse top| bg=lightyellow | expandir=true | 01,02,08/12: Register Transfer Methodology}}
+
==Eficiência de Máquinas de Estado==
{{collapse bottom}}
 
  
{{collapse top| bg=lightyellow | expandir=true | 15/12: Projeto Hierárquico}}
+
*Leitura recomendada:
{{collapse bottom}}
+
**Capítulo 10 do livro do Chu;
 +
**Notas de aula 06.
  
{{collapse top| bg=lightyellow | expandir=true | 16/12: Projeto Parametrizado}}
 
 
{{collapse bottom}}
 
{{collapse bottom}}
  
{{collapse top| bg=lightyellow | expandir=true | 22/12,02/02: Clock e Sincronização}}
+
{{collapse top| bg=lightyellow | expandir=true | Register Transfer Methodology}}
{{collapse bottom}}
 
  
{{collapse top| bg=lightyellow | expandir=true | 03/12...: Projeto Final}}
+
==Register Transfer Methodology==
  
== 08/03: Final Project ==
+
*Leitura recomendada:
 +
**Capítulos 11 e 12 do livro do Chu;
 +
**Notas de aula 07 e 08.
  
=== Overview ===
+
{{collapse bottom}}
  
[[Arquivo:DLP2-Projeto-UartAudio.png]]
+
{{collapse top| bg=lightyellow | expandir=true | Projeto Hierárquico e Parametrizado}}
  
Neste projeto você implementará um processador de áudio via serial utilizando a placa Mercurio IV da Macnica com uma FPGA Cyclone IV-E.
+
==Projeto Hierárquico e Parametrizado==
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.
 
  
<!--
+
*Leitura recomendada:
* The following files are avaliable to integrate to your project:
+
**Capítulos 13, 14 e 15 do livro do Chu;
** [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.
+
**Notas de aula 09, 10 e 11.
** [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 ===
+
{{collapse bottom}}
  
* Conversores Analógico-Digital (CAD) e Conversor Digital-Analógico (CDA)
+
{{collapse top| bg=lightyellow | expandir=true | Clock e Sincronização}}
: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.
+
==Clock e Sincronização==
[[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]].
 
  
 +
*Leitura recomendada:
 +
**Capítulo 16 do livro do Chu;
 +
**Notas de aula 12.
  
 
{{collapse bottom}}
 
{{collapse bottom}}
 +
 +
= Links Auxiliares =
 +
*[https://cs.wmich.edu/gupta/teaching/cs5260/5260Sp15web/lectureNotes/thm14%20-%20parallel%20prefix%20from%20Ottman.pdf Parallel Prefix Computation]
 +
*[https://www.youtube.com/watch?v=bFmTHLZ3DGs#t=469.057233 Getting Started with the TimeQuest Timing Analyzer] Altera
 +
*[[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