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
 
(115 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 (22 Mar) - 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===
 
;Aula 2 (24 Mar) - 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''; uso de ''don't care'' '-'
 
:* Fluxo da síntese (RTL, mapeamento tecnológico (ASIC/FPGA)
 
::Ver pag. 125 a 149 de <ref name="PONG2006a" />
 
 
;Aula 3 (29 Mar) - Marcos:
 
* Processo de Síntese do código VDHL: Analise das temporizações:
 
:* 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 atrazo)
 
::Ver pag. 125 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]
 
 
===Unidade 3===
 
;Aula 4 (1 Abr) - Marcos:
 
* Eficiência de Circuitos Combinacionais
 
:* Compartilhamento de Operadores (Ex: 7.2.1, 7.2.2, 7.2.3, 7.2.4)
 
:* Compartilhamento de funcionalidades (Ex: L7.1, L7.2, L7.3)
 
:* Análise da área (Elementos Lógicos) x tempo de propagação.
 
::Ver pag. 163 a 173 de <ref name="PONG2006a" />
 
 
;Aula 5 (5 Abr) - Marcos:
 
* Eficiência de Circuitos Combinacionais
 
:* Questões relacionadas com o Leiaute do circuito
 
::* Exemplos de circuitos XOR;
 
::* Exemplos de Deslocador (''shifter'')
 
::* Exemplos de Multiplicadores
 
::Ver pag. 173 a 211 de <ref name="PONG2006a" />
 
::Ver também os slides [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture03-efficient_comb_circuits.pdf Unidade  3: Eficiência de Circuitos Combinacionais]
 
 
===Unidade 4===
 
;Aula 6 (7 Abr) - Marcos:
 
* Eficiência de Circuitos Sequenciais
 
:* Tipos de Sincronismo em circuitos (globalmente síncronos, localmente síncronos, assíncronos)
 
:* Circuitos síncronos (Modelo, vantagens e tipos)
 
:* Descrição dos elementos básicos de memória (Latch D, Flip Flop D, Registros)
 
:* Projetos síncronos.
 
{{collapse top | Modelo em VHDL de projeto síncrono }}
 
<syntaxhighlight lang=vhdl>
 
-- Declaração das bibliotecas e pacotes a serem utilizados
 
library ieee;
 
use ieee.std_logic_1164.all;
 
  
entity nome_entidade is
+
*[[DLP29007-2019-1 | Semestre 2019-1 - Prof. Roberto de Matos]]
-- Declaração dos valores GENERIC
 
  generic(
 
      ___: Natural := ___;
 
      ...
 
  );
 
-- Declaração das portas de entradas e saída
 
  port(
 
-- Declaração dos sinais de clock e reset assincrono
 
      clk, reset: in std_logic;
 
-- Declaração das demais portas de entradas isoladas e barramentos
 
      ___: in std_logic;
 
      ___: in std_logic_vector(__ downto 0);
 
      ...
 
  
-- Declaração das portas de saídas isoladas e barramentos
 
      ___: out std_logic;
 
      ___: out std_logic_vector(__ downto 0);
 
      ...
 
  );
 
end entity;
 
  
architecture nome_architetura of nome_entidade is
+
{{collapse top | Semestres Anteriores}}
-- Declaração das entradas e saídas dos registros
+
*[[DLP29007-2018-2 | Semestre 2018-2 - Prof. Roberto de Matos]]
  signal ___reg: std_logic_vector(___ downto 0);
+
*[[DLP29007-2018-1 | Semestre 2018-1 - Prof. Roberto de Matos]]
  signal ___next: std_logic_vector(___ downto 0);
+
*[[DLP29007-Engtelecom(2017-2) - Prof. Marcos Moecke | Semestre 2017-2 - Prof. Marcos Moecke]] - Wiki
-- Declaração dos demais sinais internos
+
*[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
begin
+
*[[DLP2-EngTel (página) - 2016-2 (prof. Arliones e Marcos) | Semestre 2016-2 - Prof. Marcos Moecke e Arliones]]
-- Descrição da lógica sequencial registro
+
*[[DLP2-EngTel (página) - 2016-1 (prof. Arliones e Marcos) | Semestre 2016-1 - Prof. Marcos Moecke e Arliones]]
  process(clk,reset)
+
*[[DLP2-EngTel (página) - 2015-2 (prof. Arliones e Marcos) | Semestre 2015-2 - Prof. Marcos Moecke e Arliones]]
  begin
+
*[[DLP29007-2015-1 | Semestre 2015-1 - Prof. Marcos Moecke e Arliones]]
      if (reset='1') then
 
        ___reg <= (others=>'0');
 
        ...
 
      elsif (clk'event and clk='1') then
 
        ___reg <= ___next;
 
        ...
 
      end if;
 
  end process;
 
 
 
-- Descrição da lógica combinacional de próximo estado
 
  ...
 
  ...
 
-- Descrição da lógica combinacional dos circuitos de saída
 
  ...
 
  ...
 
 
 
end architecture;
 
</syntaxhighlight>
 
 
{{collapse bottom}}
 
{{collapse bottom}}
::* Exemplo de FF D com enable;
 
::* Exemplo de FF T;
 
::* Exemplos de registrador de deslocamento;
 
::* Exemplos de contadores;
 
::Ver pag. 213 a 239 de <ref name="PONG2006a" />
 
 
;Aula 7 (12 Abr) - Marcos:
 
* Eficiência de Circuitos Sequenciais
 
:* Analise Temporal
 
::*Violação do tempo de Setup; Frequencia máxima do clock;
 
::*Temporização relacionadas as saídas.
 
:*Porque não usar VARIABLE em circuitos sequenciais.
 
::Ver pag. 239 a 255 de <ref name="PONG2006a" />
 
::Ver também os slides [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture04-efficient_seq_circuits.pdf Unidade 4: Eficiência de Circuitos Sequenciais]
 
 
;Aula 8 (19 Abr) - Marcos:
 
* Eficiência de Circuitos Sequenciais
 
:*Praticas deficientes de projeto e soluções:
 
::*Mal uso do RESET assincrono => Use CLEAR sincrono;
 
<syntaxhighlight lang=vhdl>
 
  --Em um contador de 0 a 9
 
  r_next <= (others => '0') when r_reg = 9 else r_reg + 1;
 
</syntaxhighlight>
 
::*Mal uso de portas no CLOCK => Use o ENABLE do FF;
 
<syntaxhighlight lang=vhdl>
 
  --Em um contador
 
  r_next <= r_reg + 1 when ena = '1' else r_reg;
 
</syntaxhighlight>
 
::*Mal uso de CLOCK derivados => Use o ENABLE para habilitar o CLOCK;
 
:*Contadores
 
::* Contador Gray
 
::* Contador em Anel
 
::* Contador Binário
 
::* Contador Decimal
 
::* LFSR (''Linear Feedback Shift Register'') [https://en.wikipedia.org/wiki/Linear_feedback_shift_register]
 
<!--
 
<syntaxhighlight lang=vhdl>
 
</syntaxhighlight>
 
-->
 
 
;Aula 9 (26 Abr) - Marcos:
 
* ???
 
 
===Unidade 5===
 
;Aula 10 (3 Mai) - Arliones:
 
* Laboratório: Processadores Embarcados (SoC) - Hardware
 
:* [http://wiki.sj.ifsc.edu.br/index.php/Laborat%C3%B3rios_com_Altera_NIOS2#Roteiro_B.C3.A1sico Roteiro Básico de integração do Nios2]
 
 
;Aula 11 (5 Mai) - Arliones:
 
* Laboratório: Processadores Embarcados (SoC) - Software
 
:* [http://wiki.sj.ifsc.edu.br/index.php/Laborat%C3%B3rios_com_Altera_NIOS2#Desenvolvimento_de_software_para_o_Nios_II Desenvolvimento de Software para o Nios2]
 
 
;Aula 12 (10 Mai) - Arliones:
 
* Laboratório: Processadores Embarcados (SoC) - Software e Hardware
 
:* [http://wiki.sj.ifsc.edu.br/index.php/Laborat%C3%B3rios_com_Altera_NIOS2#Modifica.C3.A7.C3.B5es_Propostas Modificações no Nios2]
 
 
;Aula 13 (17 Mai) - Arliones:
 
* Laboratório: Processadores Embarcados (SoC) - SignalTap
 
:* [[Configuração e uso do Signal Tap]]
 
 
;Aula 14 (19 Mai) - Arliones:
 
* Eficiência de Máquinas de Estados: Introdução
 
:* Visão Geral
 
:* Representação gráfica
 
:* Timing e desempenho
 
:* Máquinas Moore e Mealy
 
 
;Aula 15 (21 Mai - sábado) - Arliones:
 
* Eficiência de Máquinas de Estados: Moore vs Mealy - SignalTap
 
:* Análise de saídas Moore e Mealy na prática com SignalTap
 
 
;Aula 16 (24 Mai) - Arliones:
 
* Eficiência de Máquinas de Estados: Codificação em VHDL
 
:* Descrição VHDL de máquina de estados
 
:* Técnicas de codificação em 4 e 2 segmentos
 
:* Problemas comuns na codificação / exemplo de codificação errada em 1 segmento
 
 
;Aula 17 (31 Mai) - Arliones:
 
* Eficiência de Máquinas de Estados: Otimizações e exemplos
 
:* Atribuição de estados
 
:* Buffer de saídas Moore
 
:* Exemplos de máquinas de estados
 
 
===Unidade 6===
 
 
====ATUAL====
 
;Aula XX (30 Mai ):
 
*[https://www.dropbox.com/s/wts1ai0ltlg27p9/DLP29007%20-%20Projeto%20Hierarquico%20Parametrizado%20v2.pdf?dl=0 Projeto Hierárquico e Parametrizado]
 
::Ver pag. 473 a 498 de <ref name="PONG2006a" />
 
 
 
== Notas de aula ==
 
== Notas de aula ==
  
Linha 215: 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]]
  
==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).
+
 
<!--
+
Os critérios de avaliação estão descritos no [[DLP2-EngTel_(Plano_de_Ensino)| Plano de Ensino]].
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===
 +
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.
 +
 
 +
 
 +
{{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}}
  
;PARA ENTREGAR:
 
{{collapse top | AE1 - Circuitos Combinacionais  (prazo 26/04/2016)}}
 
* 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 5. As equipes 1 a 4 também devem trabalhar o tema 6. A equipe 5 apenas irá trabalhar o tema 5.
 
:'''TEMA 1''' - Implementar o circuito de diferença (Listing 7.6, 7.7. 7.8 e 7.9).  pag. 175-177
 
::Torne o código genérico para N bits e teste para entradas "a" e "b" de 4, 8 e 16 bits.
 
:'''TEMA 2''' - Implementar os circuitos codificadores de prioridade de 16 entradas 4 bits de saída (Listing 7.24, 7.25 + 7.26). pag. 187-192
 
::Implemente o circuito codificadores de prioridade programável (Listing 7.32)
 
:'''TEMA 3''' - Implementar os circuitos incrementadores de código Gray (Listing 7.30, 7.31). pag. 196-199
 
::Transforme os circuitos em decrementadores de código Gray.
 
:'''TEMA 4''' -  Implementar os circuitos para cálculo da [https://en.wikipedia.org/wiki/Hamming_distance distância de Hamming] (Listing 7.36, 7.37) e o exemplo mostrado na AL1. pag. 206-208
 
::Transforme os circuitos para determinar o [https://en.wikipedia.org/wiki/Hamming_weight peso de Hamming].
 
:'''TEMA 5''' -  Implementar o circuito de soma para entradas "com sinal" e saídas de status (Listing 7.33). pag. 201-203
 
::Torne o código genérico para N bits e teste para entradas "a" e "b" de 8, 16 e 32 bits.
 
::Utilize o circuito de 8 bits como componente para realizar um somador de 32 bits (são necessários 4 componentes iguais).
 
  
 +
{{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
 
:'''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 os resultados com um multiplicador baseado no operador de multiplicação "*" do VHDL.
*Para a versão de 8 bits comparar o hardware necessário para implementar os circuitos abaixo utilizando as seguintes famílias de FPGA [CYCLONE & STRATIX II].  Utilize sempre o menor '''Device''' de cada família, que possua os elementos e pinos suficientes para o circuito proposto.
 
  
*Compilar cada circuito (com 8 bits) utilizando diferentes técnicas de otimização [Area | Balanceada | Velocidade].
+
* 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.
::ver:[[Escolha da técnica de otimização no Quartus II]]
+
*Realize a simulação funcional de cada circuito usando sempre o mesmo padrão de sinais de entrada.
* Para a arquitetura de menor tempo de propagação, realizar os testes com variação de bits.
+
* 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.  
*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), 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''')
 
::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.
 
*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]]
 
::Ver:[[Medição de tempos de propagação em circuitos combinacionais]]
*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.
+
*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
 
  set_max_delay -from [get_ports *] -to [get_ports *]  tp
::Ver:[[Medição de tempos de propagação em circuitos combinacionais]]
 
*Realize a simulação funcional de cada circuito usando sempre o mesmo padrão de sinais de entrada.
 
  
* 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, simulações funcionais e uma análise textual dos resultados obtidos.  O arquivo com o QAR do projeto deve ser também enviado.  
+
* 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].
 
* 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}}
  
{{collapse top | expand=false | AE2 - Circuitos Sequencias (prazo 20/06/2016 08h00)}}
+
{{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 5. (todos os contadores devem ser genéricos para N bits)
+
* 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  
 
:'''TEMA 1''' - Estudar e implementar o Contador Gray  
Linha 276: Linha 127:
 
::* Versão 1 (Listing 9.8).  pag. 267
 
::* Versão 1 (Listing 9.8).  pag. 267
 
::* Versão 2 (Listing 9.9).  pag. 268
 
::* Versão 2 (Listing 9.9).  pag. 268
::* Versão 3 [http://www.andrecastelan.com.br/implementacao-de-um-shift-register-em-vhdl/]   
+
::* 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''.  
 
::* Versão 4 Modifique a versão 3, separando claramente a lógica ''combinacional de next-state'', ''combinacional de output'', e ''register''.  
  
Linha 295: Linha 146:
 
::* Versão 2 [https://eewiki.net/download/attachments/20939345/pwm_v1_0.vhd?version=1&modificationDate=1420836042247&api=v2]
 
::* 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 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''.  
 
::* Versão 4 Modifique a versão 3, separando claramente a lógica ''combinacional de next-state'', ''combinacional de output'', e ''register''.  
  
Linha 305: Linha 162:
 
* 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.  
 
* 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].
 
* 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 - Circuitos Sequencias.
+
* 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 | AE3 - Componente Sequencial com Pipeline  (prazo ??/??/2016)}}
 
 
{{collapse bottom}}
 
{{collapse bottom}}
-->
 
 
{{collapse top |expand=false | AE3 - Máquinas de Estado (prazo 24/06/2016)}}
 
* 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 TODOS os temas abaixo.
 
 
* Comparar o hardware necessário para implementar os circuitos abaixo utilizando a FPGA da plataforma MercurioIV utilizada na disciplina.
 
* Compile cada circuito utilizando as otimizações Balanceada, Velocidade e Área.
 
::ver:[[Escolha da técnica de otimização no Quartus II]]
 
* Teste cada uma das arquiteturas e anote em uma tabela todos os resultados de: Elementos Lógicos/ALUT (separando em Normais, Aritméticos, c/ registradores, etc), 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)
 
* Meça os tempos de propagação internos Tnext (do registrador de estado até a saída da lógica de próximo estado) e o Tmo (do registrador de estado até a saída Moore).
 
::Ver:[[Medição de tempos de propagação em circuitos combinacionais]]
 
* Para os circuitos modificados, apresentar no relatório a máquina de estados, o ASM, além do relatório de compilação do novo circuito.
 
* Realize a simulação funcional de cada circuito usando sempre o mesmo padrão de sinais de entrada.
 
 
:'''TEMA 1''' - Implementar os circuitos de detecção de borda (Listing 10.7 a 10.11); Modificar o 10.9 para detectar qualquer mudança de borda, e não apenas a borda de subida como no código original;
 
:'''TEMA 2''' - Implementar os circuitos Árbitro (Listing 10.12 e 10.13); Modificar o de prioridade fixa para preemptar o recurso alocado caso um sinal externo de abort (ex.: timeout) ocorra E houver requisições aguardando;
 
:'''TEMA 3''' - Implementar os circuitos DRAM strober (Listing 10.14 e 10.15); Modificar o 10.15 para operar com períodos de clock de 20ns;
 
:'''TEMA 4''' - Estudar a implementação dos circuitos de codificação Manchester (Listing 10.16 e 10.17). Crie o decoder conforme instruções no exercício 10.11 do livro. Integre o encoder e o decoder, mapeie as entradas do decoder para switches e as saídas do decoder para LEDs da placa MercurioIV, e utilize o SignalTap para demonstrar que o circuito funciona.
 
  
 +
{{collapse top |expand = true| AE4 - FSM/RTM (prazo 18/12/2016)}}
  
* Escreva um relatório técnico na forma de artigo em formato A4. O relatório deverá ter entre 3 e 4 páginas, sem contar as figuras. O relatório além das tabelas com os dados, deverá conter as figuras dos circuitos RTL, simulações funcionais e uma análise textual dos resultados obtidos. '''NÃO INCLUIR CÓDIGO VHDL NO RELATÓRIO!''' O arquivo com o QAR do projeto deve ser também enviado.  
+
Nesta atividade, cada dupla entregará uma implementação do jogo QuickFinger (explicado em aula).
* 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].
+
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:
* 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 - Máquinas de Estados.
 
{{collapse bottom}}
 
  
 +
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 top |expand=true | AE4 - Projeto Hierárquico Parametrizado com Register Transfer Methodology (prazo 26/07/2016)}}
 
* 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 em um dos temas listados, realizando o processo definido.
 
*Temas, módulos e parâmetros
 
** [https://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter UART - Universal Asynchronous Reciver/Transmitter] (sem handshake)
 
*** Módulos: ao menos gerador de baudrate, receiver e transmitter
 
*** Parâmetros: baudrate, data bits, stop bits, paridade.
 
** [https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus SPI - Serial Peripheral Interface] (slave)
 
*** Módulos: ao menos receiver e transmitter
 
*** Parâmetros: polaridade do clock, MSB/LSB.
 
** [https://en.wikipedia.org/wiki/I%C2%B2C I2C - Inter-Integrated Circuit] (slave)
 
*** Módulos: ao menos receiver e transmitter
 
*** Parâmetros: endereço do escravo (7bits)
 
** [https://en.wikipedia.org/wiki/UNI/O UNI/O - Universal I/O]
 
*** Módulos: ao menos receiver e transmitter
 
*** Parâmetros: endereço do escravo (12bits), bitrate (entre 10kbps e 100kbps)
 
 
* Especificar diagrama de blocos do projeto, definindo:
 
** as interfaces entre os blocos (quais sinais e com quantos bits cada);
 
** os parâmetros de configuração de cada bloco;
 
** a técnica de implementação de cada bloco (i.e., combinacional, sequencial, máquina de estados, máquina de estados com caminho de dados);
 
** interface de entrada e saída do projeto para integração ao NIOS2 através de uma FIFO (registrador de dado a ser transmitido, registrador com dado recebido, sinal de start, etc).
 
** '''ATENÇÃO: é IMPORTANTÍSSIMO validar este diagrama com os professores antes de iniciar a implementação!'''
 
* Implementar os módulos propostos;
 
* Realizar simulação funcional dos módulos;
 
* Integrar projeto a um processador NIOS2;
 
* Implementar aplicação de teste utilizando 2 placas MercuiroIV comunicando-se entre si utilizando o seu projeto;
 
* Apresentar seminário de 15 minutos apresentando os resultados do projeto (no dia 26/07/2016);
 
* Enviar 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 - AE4.
 
 
{{collapse bottom}}
 
{{collapse bottom}}
 
 
 
  
 
;JÁ ENCERRADAS:
 
;JÁ ENCERRADAS:
<!--
 
{{collapse top | AE2 - Circuitos Sequenciais (prazo 26/11/2015)}}
 
{{collapse bottom}}
 
 
{{collapse top | 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 diferentes otimizações.
 
:*'''Assignments > Settings > Analysis & Synthesis Settings''' > Optimization Technique
 
::[ ] 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 (<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.
 
{{collapse bottom}}
 
-->
 
 
 
;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 501: Linha 299:
  
 
= Links Auxiliares =
 
= Links Auxiliares =
*[http://wiki.sj.ifsc.edu.br/index.php?title=DLP2-EngTel_%28p%C3%A1gina%29&oldid=103201 DLP2-EngTel (página) - 2015-2 (prof. Arliones e Marcos)]
+
*[https://cs.wmich.edu/gupta/teaching/cs5260/5260Sp15web/lectureNotes/thm14%20-%20parallel%20prefix%20from%20Ottman.pdf Parallel Prefix Computation]
*[[DLP29007-2015-1 | DLP2-EngTel (página) - 2015-1 (prof. Arliones e Marcos)]]
+
*[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