DLP29007-2018-2: mudanças entre as edições

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Roberto.matos (discussão | contribs)
Roberto.matos (discussão | contribs)
Sem resumo de edição
 
(58 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 30: Linha 30:
* [[Medição de tempos de propagação em circuitos combinacionais]]
* [[Medição de tempos de propagação em circuitos combinacionais]]
* [[Uso de Logic Lock para definir a área a ser ocupada pelo circuito]]
* [[Uso de Logic Lock para definir a área a ser ocupada pelo circuito]]
=Aula 5 (17/08/2018) – Tempos de Propagação (cont.) e Complexidade =
* Como desconsiderar o tempo de propagação de entrada e saída.
=Aula 6 (20/08/2018) – Síntese do VHDL =
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture02-synthesis.pdf Lecture 02: Synthesis of VHDL Code]
* Concepção dos operadores em VHDL
* Criação da tabela de operadores
=Aula 7 (24/08/2018) – Síntese do VHDL =
* Criação da tabela de operadores (cont.)
=Aula 8 (31/08/2018) – Síntese do VHDL =
* Análise tabela
* Correção problema operador
=Aula 9 (03/09/2018) – Síntese do VHDL =
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture02-synthesis.pdf Lecture 02: Synthesis of VHDL Code]
* Concepção dos tipos de dados em VHDL
=Aula 10 (10/09/2018) –  Trabalho A1 (Aula Extra)=
* Trabalhar na implementação e tirar dúvidas da A1.
=Aula 11 (14/09/2018) –  Eficiência de Circuitos Combinacionais =
*Leitura recomendada:
**Capítulo 7 do livro do Chu;
**Notas de aula 03.
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture03-efficient_comb_circuits.pdf Lecture 03: Efficient Design of Combinational Circuits]
*[http://tele.sj.ifsc.edu.br/~roberto.matos/dlp2/pratica_cap7.zip Prática Cap. 7]
*[https://medium.com/@julsimon/building-fpga-applications-on-aws-and-yes-for-deep-learning-too-643097257192 Building FPGA applications on AWS]
=Aula 12 (17/09/2018) –  Aula cedida Prof. Noronha =
=Aula 13 (21/09/2018) –  Eficiência de Circuitos Combinacionais (cont.) =
*Finalizar a atividade:
**[http://tele.sj.ifsc.edu.br/~roberto.matos/dlp2/pratica_cap7.zip Prática Cap. 7]
=Aula 14 (28/09/2018) –  Eficiência de Circuitos Sequenciais =
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture04-efficient_seq_circuits.pdf Lecture 04: Efficient Design of Sequential Circuits]
=Aula 15 (01/10/2018) –  Eficiência de Circuitos Sequenciais (cont.) =
*[[Interfaces_de_entrada_e_sa%C3%ADda_da_DE2-115 | Interfaces de entrada e saída da DE2-115]]
*[[Preparando_para_gravar_o_circuito_lógico_no_FPGA | Preparando para gravar o circuito lógico no FPGA]]
<syntaxhighlight lang=vhdl>
library ieee;
use ieee.std_logic_1164.all;
entity shift_register is
  port(
      clk, reset: in std_logic;
      ctrl: in std_logic_vector(1 downto 0);
      d: in std_logic_vector(3 downto 0);
      q: out std_logic_vector(3 downto 0)
  );
end shift_register;
architecture two_seg_arch of shift_register is
  signal r_reg: std_logic_vector(3 downto 0);
  signal r_next: std_logic_vector(3 downto 0);
begin
  -- register
  process(clk,reset)
  begin
      if (reset='1') then
        r_reg <= (others=>'0');
      elsif (clk'event and clk='1') then
        r_reg <= r_next;
      end if;
  end process;
  -- next-state logic
  with ctrl select
      r_next <=
        r_reg                    when "00", --no op
        r_reg(2 downto 0) & d(0) when "01", --shift left;
        d(3) & r_reg(3 downto 1) when "10", --shift right;
        d                        when others;
  -- output
  q <= r_reg;
end two_seg_arch;
</syntaxhighlight>
https://www.intel.co.jp/content/dam/altera-www/global/ja_JP/pdfs/literature/hb/cyc/cyc_c5v1-02.pdf
= Aula 16 (05/10/2018) –  Projeto de Circuitos Sequenciais =
* Problemas clássicos de implementação
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture05-sequetial_circuit_design.pdf Lecture 05: Design of Sequential Circuits: Practice]
* Próximas aulas: Implementação Relógio.
= Aula 17 (15/10/2018) –  Implementação Relógio =
*[http://academic.csuohio.edu/chu_p/rtl/chu_rtL_book/rtL_src_code.rar Código dos Exemplos do livro do Pong Chu]
* Binary to BCD:
** http://www.tkt.cs.tut.fi/kurssit/1426/S12/Ex/ex4/Binary2BCD.pdf
** https://stackoverflow.com/questions/23871792/convert-8bit-binary-number-to-bcd-in-vhdl
** http://vhdlguru.blogspot.com.br/2010/04/8-bit-binary-to-bcd-converter-double.html
** https://eewiki.net/pages/viewpage.action?pageId=60030986
Estudar e implementar um relógio HH:MM:SS.CC de 24 horas com centésimos de segundos para um clock de entrada de 50 MHz.
*Versão 1 - Altere a Listing 9.5 para incluir a  hora e o centésimo de segundo, pag 262-265
*Versão 2 - Altere a Listing 9.6 para incluir a  hora e o centésimo de segundo, pag 262-265
*Compile/Teste as duas versões 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), e a 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 prevendo casos de "borda" para cada um dos contadores CC=99, SS=59, MM=59, HH=23.
*Implementar um bloco de conversão Binário para BCD (ex.: Double-Dabble) e adicionar um decodificadores de 7-segmentos. Preparar os dois circuitos para gravação na DE2-115. Teste os dois circuitos e apresente.
= Aula 18 (19/10/2018) –  Implementação Relógio (cont.) =
* Continuar implementando a proposta do Relógio
* Deadline da implementação 26/10/2018
= Aula 19 (26/10/2018) –  Implementação Relógio (cont.)  =
= Aula 20 (29/10/2018) –  Implementação Relógio (cont.)  =
* Finalizar e otimizar implementação do Relógio
= Aula 21 (30/10/2018) - Aula EXTRA =
= 09/11/2018 - Não houve aula (Problemas de saúde) =
= 12/11/2018 - FSM =
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture06-fsm.pdf Lecture 06: Finite State Machines: Principle and Practice]
= 23/11/2018 - FSM (cont.) =
==Assunto==
* Moore vs Mealy output
**Edge Detection Circuit
**Comparação
*VHDL Description of FSM
**Multi-segment coding style
**Two-segment coding style
* State Assignment
** Implícito vs Explícito
**Handling the Unused State
==Exercício==
*Analisando código "multi-segmento", dois segmentos  e o problemático "um segmento".
==Materiais==
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture06-fsm.pdf Lecture 06: Finite State Machines: Principle and Practice]
* [http://tele.sj.ifsc.edu.br/~roberto.matos/dlp2/memctrl.vhd FSM Memory Controller]
= 26/11/2018 - FSM (cont.)=
* Moore output buffering
** Clever State assignment
** Look-ahead output circuit
= 30/11/2018 - FSM Exercícios =
https://limesurvey.ifsc.edu.br/index.php/673379?lang=pt-BR
= 07/12/2018 - =
= 10/12/2018 - =
= 14/12/2018 - =

Edição atual tal como às 14h51min de 27 de julho de 2021

1 Dispositivos Lógicos Programáveis 2


2 Aula 1 (27/07/2018) – Apresentação

  • Apresentação do professor.
  • Apresentação dos alunos: Nome, perfil, preferências, etc.
  • Apresentação da disciplina.
  • Projetos com FPGA


3 Aula 2 (03/08/2018) – Complexidade e Projeto de Sistemas Digitais


4 Aula 3 (06/08/2018) – Prática Signal Tap

  • Finalização do assunto sobre complexidade

5 Aula 4 (10/08/2018) – Tempos de Propagação e Logic Lock


6 Aula 5 (17/08/2018) – Tempos de Propagação (cont.) e Complexidade

  • Como desconsiderar o tempo de propagação de entrada e saída.


7 Aula 6 (20/08/2018) – Síntese do VHDL

8 Aula 7 (24/08/2018) – Síntese do VHDL

  • Criação da tabela de operadores (cont.)


9 Aula 8 (31/08/2018) – Síntese do VHDL

  • Análise tabela
  • Correção problema operador


10 Aula 9 (03/09/2018) – Síntese do VHDL


11 Aula 10 (10/09/2018) – Trabalho A1 (Aula Extra)

  • Trabalhar na implementação e tirar dúvidas da A1.

12 Aula 11 (14/09/2018) – Eficiência de Circuitos Combinacionais


13 Aula 12 (17/09/2018) – Aula cedida Prof. Noronha

14 Aula 13 (21/09/2018) – Eficiência de Circuitos Combinacionais (cont.)

15 Aula 14 (28/09/2018) – Eficiência de Circuitos Sequenciais

16 Aula 15 (01/10/2018) – Eficiência de Circuitos Sequenciais (cont.)


library ieee;
use ieee.std_logic_1164.all;
entity shift_register is
   port(
      clk, reset: in std_logic;
      ctrl: in std_logic_vector(1 downto 0);
      d: in std_logic_vector(3 downto 0);
      q: out std_logic_vector(3 downto 0)
   );
end shift_register;

architecture two_seg_arch of shift_register is
   signal r_reg: std_logic_vector(3 downto 0);
   signal r_next: std_logic_vector(3 downto 0);
begin
   -- register
   process(clk,reset)
   begin
      if (reset='1') then
         r_reg <= (others=>'0');
      elsif (clk'event and clk='1') then
         r_reg <= r_next;
      end if;
   end process;
   -- next-state logic
   with ctrl select
      r_next <=
         r_reg                    when "00", --no op
         r_reg(2 downto 0) & d(0) when "01", --shift left;
         d(3) & r_reg(3 downto 1) when "10", --shift right;
         d                        when others;
   -- output
   q <= r_reg;
end two_seg_arch;


https://www.intel.co.jp/content/dam/altera-www/global/ja_JP/pdfs/literature/hb/cyc/cyc_c5v1-02.pdf

17 Aula 16 (05/10/2018) – Projeto de Circuitos Sequenciais

  • Próximas aulas: Implementação Relógio.

18 Aula 17 (15/10/2018) – Implementação Relógio


Estudar e implementar um relógio HH:MM:SS.CC de 24 horas com centésimos de segundos para um clock de entrada de 50 MHz.

  • Versão 1 - Altere a Listing 9.5 para incluir a hora e o centésimo de segundo, pag 262-265
  • Versão 2 - Altere a Listing 9.6 para incluir a hora e o centésimo de segundo, pag 262-265
  • Compile/Teste as duas versões 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), e a 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 prevendo casos de "borda" para cada um dos contadores CC=99, SS=59, MM=59, HH=23.
  • Implementar um bloco de conversão Binário para BCD (ex.: Double-Dabble) e adicionar um decodificadores de 7-segmentos. Preparar os dois circuitos para gravação na DE2-115. Teste os dois circuitos e apresente.

19 Aula 18 (19/10/2018) – Implementação Relógio (cont.)

  • Continuar implementando a proposta do Relógio
  • Deadline da implementação 26/10/2018

20 Aula 19 (26/10/2018) – Implementação Relógio (cont.)

21 Aula 20 (29/10/2018) – Implementação Relógio (cont.)

  • Finalizar e otimizar implementação do Relógio


22 Aula 21 (30/10/2018) - Aula EXTRA

23 09/11/2018 - Não houve aula (Problemas de saúde)

24 12/11/2018 - FSM

25 23/11/2018 - FSM (cont.)

25.1 Assunto

  • Moore vs Mealy output
    • Edge Detection Circuit
    • Comparação
  • VHDL Description of FSM
    • Multi-segment coding style
    • Two-segment coding style
  • State Assignment
    • Implícito vs Explícito
    • Handling the Unused State

25.2 Exercício

  • Analisando código "multi-segmento", dois segmentos e o problemático "um segmento".

25.3 Materiais

26 26/11/2018 - FSM (cont.)

  • Moore output buffering
    • Clever State assignment
    • Look-ahead output circuit

27 30/11/2018 - FSM Exercícios

https://limesurvey.ifsc.edu.br/index.php/673379?lang=pt-BR

28 07/12/2018 -

29 10/12/2018 -

30 14/12/2018 -