Mudanças entre as edições de "DLP29007-2018-2"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
Linha 202: Linha 202:
 
** Clever State assignment
 
** Clever State assignment
 
** Look-ahead output circuit
 
** Look-ahead output circuit
 
== Exercício 1==
 
*Para a MEF do controlador de memória (slide 13), a operação de leitura "burst" especifica implicitamente que o sistema principal tem que ativar os sinais rw e mem no primeiro ciclo de clock, e depois ativar o sinal burst no ciclo de clock seguinte. Nós queremos simplificar os requisitos temporais para o sistema principal (que gera as entradas do controlador de memória), de modo que ele apenas precise gerar o comando no primeiro ciclo de clock (i.e., ativa o sinal burst ao mesmo tempo que rw e mem).
 
**Revise os diagramas de estado desta MEF para suportar esta operação;
 
**Converta o diagrama de estado em um diagrama ASM;
 
**Gere o código VHDL de acordo com o diagrama ASM;
 
**Simule o circuito gerado para verificar seu funcionamento adequado.
 
 
*O controlador de memória implementado no exercício anterior precisa voltar ao estado idle depois de cada operação de memória, desperdiçando um ciclo de clock entre operações. Para melhorar o desempenho, revise o projeto deste controlador para suportar operações "back-to-back", i.e., a MEF pode iniciar uma nova operação assim que completar a operação atual sem aguardar um ciclo no estado idle.
 
**Revise o diagrama de estados;
 
**Converta para ASM;
 
**Gere o código VHDL;
 
**Simule o circuito gerado para verificar seu funcionamento adequado.
 
 
*Entregar (um zip com) qar dos exercícios, imagem das máquina de estados / ASM gerados e imagens da simulação.
 
 
==Exercício 2 ==
 
 
* O preâmbulo é um padrão especial de sincronização usado para indicar o início de um pacote. Por exemplo, o preâmbulo Ethernet II inclui oito octetos repetidos: "10101010". Desejamos projetar um FSM que gere o padrão "10101010". O circuito tem, além do sinal de clock, um sinal de entrada, "start", e uma saída, "data-out". Quando o "start" é '1', o circuito deve gerar os 8 octetos ("10101010") na saída data-out, um bit por vez.
 
** Derive o diagrama de estados.
 
** Converta o diagrama de estado em um gráfico ASM.
 
** Derive o código VHDL de acordo com o gráfico ASM.
 
** Use "clever state assignment" para obter o sinal de saída "glitch-free". Derive o VHDL revisado.
 
** Use a técnica "look-ahead output buffer" para o sinal de saída. Derive o VHDL revisado.
 
** Simule o circuito gerado para verificar seu funcionamento adequado.
 
 
*Entregar (um zip com) qar dos exercícios, imagem das máquina de estados / ASM gerados e imagens da simulação.
 
 
 
*Prazo: 14/11/2018
 
  
 
= 30/11/2018 - FSM Exercícios =
 
= 30/11/2018 - FSM Exercícios =

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

Dispositivos Lógicos Programáveis 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


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


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

  • Finalização do assunto sobre complexidade

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


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

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


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


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

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

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

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

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

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

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.

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

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

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 -