DLP2-EngTel (página) - 2016-2 (prof. Arliones e Marcos)

De MediaWiki do Campus São José
Revisão de 17h47min de 14 de fevereiro de 2017 por Moecke (discussão | contribs) (Criou página com '==Registro on-line das aulas== ===Unidade 1=== ;Aula 1 (11 Ago) - Arliones: * Apresentação da disciplina ::Ver pag. 1 a 22 de <ref name="PONG...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar

Registro on-line das aulas

Unidade 1

Aula 1 (11 Ago) - Arliones
Ver pag. 1 a 22 de [1]
Ver pag. 3 a 48 de [2]
Aula 2 (15 Ago) - Marcos
  • Processo de Síntese do código VDHL
  • Limitações dos softwares de EDA: Computabilidade, Complexidade Computacional
  • Realização dos operadores VHDL: simplificações para operando constante
  • Realização dos tipos de dados: Alta impedância 'Z' -> buffer tri-state;
Ver pag. 125 a 137 de [1]
Aula 3 (17 Ago) - Marcos
  • Processo de Síntese do código VDHL: Analise das temporizações:
  • Realização dos tipos de dados: uso de don't care '-'
  • Tempos de propagação, caminho crítico, caminho falso,
  • Síntese com restrições temporais,
  • Perigos/Armadilhas (Glitches estáticos e dinâmicos, circuitos sensíveis ao atraso)
Ver pag. 137 a 162 de [1]
Ver também os slides Unidade 2: Processo de Síntese do código VDHL

Unidade 2

Aula 4 (24 Ago) - Arliones
  • Processadores embarcados e depuração em FPGA
  • Configuração e geração de processadores.
Ver Laboratórios com Altera NIOS2.
Aula 5 (29 Ago) - Arliones
  • Desenvolvimento de software embarcado.
Ver Laboratórios com Altera NIOS2.
Aula 6 (31 Ago) - Arliones
  • Integração de processadores com lógica externa.
Aula interrompida devido a falta de luz.
Ver Laboratórios com Altera NIOS2.
Aula 7 (10 Set) - Arliones
  • Integração de processadores com lógica externa.
Aula interrompida devido a falta de luz.
Ver Laboratórios com Altera NIOS2.
Aula 8 (12 Set) - Arliones
  • Depuração via analisador lógico embarcado.
Ver Configuração e uso do Signal Tap.
Aula 9 (14 Set) - Arliones
  • Medição de tempo de execução com performance counters.
Ver Laboratórios com Altera NIOS2.

Unidade 3

Aula 10 (21 Set) - 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, L7.4, L7.5)
  • Análise da área (Elementos Lógicos) x tempo de propagação.
Ver pag. 163 a 175 de [1]
Aula 11 (26 Set) - Marcos
  • Eficiência de Circuitos Combinacionais
  • Questões relacionadas com o Leiaute do circuito
  • Exemplos de circuitos XOR; (Ex:L7.15 - 7.18 )
  • Exemplos de Deslocador (shifter) (Ex: )
  • Exemplos de Multiplicadores (Ex: )
Ver pag. 173 a 211 de [1]
Ver também os slides Unidade 3: Eficiência de Circuitos Combinacionais
Aula 12 (28 Set) - Marcos
  • Eficiência de Circuitos Combinacionais
  • Comparação de circuitos somadores de M entradas de N bits. Implementação em (árvore x cadeia). (Integer x Signed)
  • Exercício: Verificar os tempos de propagação do caminho crítico nos somadores implementados usando FPGA da familia Ciclone e Ciclone IV E.
  • Usando o LogicLock, selecione uma região qualquer do chip para implementar o circuito, e faça a compilação do circuito.
  • Anote em um tabela o número de Elementos lógicos (Totais|Normais|Aritméticos)
  • Anote o tempo de propagação dos 3 primeiros caminhos críticos, indicando a origem e destino de cada um deles. Desconsidere os dois primeiros e dois últimos tempos indicados no Path Report, pois são referentes a entrada do sinal e saída dos sinais no FPGA.
  • Compare seus resultados com o dos colegas que escolheram outras regiões do chip.

Unidade 4

Aula 13 (05 Out) - 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.
Modelo em VHDL de projeto síncrono
-- Declaração das bibliotecas e pacotes a serem utilizados
library ieee;
use ieee.std_logic_1164.all;

entity nome_entidade is
-- 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
-- Declaração das entradas e saídas dos registros
   signal ___reg: std_logic_vector(___ downto 0);
   signal ___next: std_logic_vector(___ downto 0);
-- Declaração dos demais sinais internos
   ...

begin
-- Descrição da lógica sequencial registro
   process(clk,reset)
   begin
      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;
  • Exemplo de FF D com enable;
  • Exemplo de FF T;
  • Exemplos de registrador de deslocamento;
  • Exemplos de contadores;
Ver pag. 213 a 239 de [1]
Aula 14 (10 Out) - 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 [1]
Ver também os slides Unidade 4: Eficiência de Circuitos Sequenciais


Aula 15 (24 Out) - Marcos
  • Eficiência de Circuitos Sequenciais
  • Praticas deficientes de projeto e soluções:
  • Mal uso do RESET assincrono => Use CLEAR sincrono;
  --Em um contador de 0 a 9
  r_next <= (others => '0') when r_reg = 9 else r_reg + 1;
  • Mal uso de portas no CLOCK => Use o ENABLE do FF;
  --Em um contador
  r_next <= r_reg + 1 when ena = '1' else r_reg;
  • 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) [1]

Notas de aula

Estas notas de aula são baseadas nas dispobilizadas pelo Prof. Pong P. Chu em [2].

Roteiros

Avaliação

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;

Os critérios de avaliação estão descritos no Plano de Ensino.

PARA ENTREGAR

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;
  • 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 (moecke AT ifsc.edu.br E arliones.hoeller AT ifsc.edu.br), com o ASSUNTO: DLP29007 - AE1.

Módulos para serem usados por cada grupo:

  • Multiplicador => Iago, Marcos
  • XOR => André, Helen
  • Distância (sqrt(a^2 + b^2)) => Katharine, Kristine
  • Soma => Gabriel, Maria
  • Divisão => Fernando, João
  • 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.
AE2 - Circuitos Combinacionais (prazo 19/10/2016 as 23h59)
  • Formar equipes com 2 alunos. A formação das equipes deve ser informado no 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 distância de Hamming (Listing 7.36, 7.37) pag. 206-208
Realize os testes com 8 bits de entrada e com 16 bits.
TEMA 6 - Implementar o circuito multiplicador baseado em somas (Listing 7.34, 7.35). pag. 203-206
Realize os testes com entradas de 8 bits e saída 16 bits de saída, e com entradas de 12 bits e saída 24 bits de saída.
Compare os resultados com um multiplicador baseado no operador de multiplicação "*" do VHDL.
  • Compare o hardware necessário para implementar os circuitos utilizando a famílias de FPGA [CYCLONE]. Utilize sempre o menor Device que possua os elementos e pinos suficientes para o circuito proposto.
  • Realize a simulação funcional de cada circuito usando sempre o mesmo padrão de sinais de entrada.
  • Para cada circuito anote os resultados de: número de pinos, número de elementos lógicos/ALUT (indicando os Normais | Aritméticos), atraso de propagação, caminho crítico.
Esses dados estão disponíveis nos seguintes relatórios: (Fitter > Resource Section > Resource Usage), (TimeQuest Timing Analyser > Datasheet Report > Propagation Delay)
  • No caso do atraso de propagação, verifique para o caminho crítico o atraso de propagação interno, anote e subtraia os tempos dos pinos de I/O, os tempos de propagação do sinal até o primeiro elemento lógico e o tempo de propagação após o último elemento lógico.
Ver:Medição de tempos de propagação em circuitos combinacionais
  • Para o circuito com maior número de bits, insira restrições temporais para obter um circuito com menor atraso no caminho crítico. Neste caso procure reduzir gradualmente a tempo máximo de propagação "tp" até atingir o menor valor.
set_max_delay -from [get_ports *] -to [get_ports *]  tp
  • Escreva um relatório técnico na forma de artigo com 4 a 8 paginas A4. O relatório além das tabelas com os dados, deverá conter as figuras dos circuitos RTL que expliquem as diferenças entre os circuitos, simulações funcionais e uma análise dos resultados obtidos. O arquivo com o QAR do projeto deve ser também enviado.
  • Para a geração de documentação/relatórios técnicos/artigos, está disponibilizada a plataforma Sharelatex do IFSC-CLOUD. Utilize preferencialmente o modelo de artigo no padrão ABNT.
  • Envie o artigo em pdf para (moecke AT ifsc.edu.br E arliones.hoeller AT ifsc.edu.br), com o ASSUNTO: DLP29007 - AE2 - Projeto de Circuitos Combinacionais.
AE3 - Circuitos Sequencias (prazo 04/11/2016 23h59)
  • Formar equipes com 2 ou 3 alunos. A formação das equipes deve ser informado no Facebook de DLP29007. Cada equipe deverá trabalhar com um dos temas de 1 a 6. (todos os contadores devem ser genéricos para N bits)
TEMA 1 - Estudar e implementar o Contador Gray
  • Versão 1 (Listing 9.7). pag. 265
  • Versão 2 [3]
  • Versão 3 [4]
  • Versão 4 Modifique a versão 3, separando claramente a lógica combinacional de next-state, combinacional de output, e register.
TEMA 2 - Estudar e implementar o Contador em Anel
  • Versão 1 (Listing 9.8). pag. 267
  • Versão 2 (Listing 9.9). pag. 268
  • Versão 3 [5] [6]
  • Versão 4 Modifique a versão 3, separando claramente a lógica combinacional de next-state, combinacional de output, e register.
TEMA 3 - Estudar e implementar o Contador Decimal e Contador One Hot
  • Versão 1 (Listing 9.12). pag. 273
  • Versão 2 (Listing 9.13). pag. 274
  • Versão 3 Contador One Hot [7].
  • Versão 4 Modifique a versão 3, separando claramente a lógica combinacional de next-state, combinacional de output, e register.
TEMA 4 - Estudar e implementar o Contador LFSR (Linear Feedback Shift Register)
  • Versão 1 (Listing 9.10). pag. 270
  • Versão 2 (Listing 9.11). pag. 272
  • Versão 3 [8]
  • Versão 4 Modifique a versão 3, separando claramente a lógica combinacional de next-state, combinacional de output, e register.
TEMA 5 - Estudar e implementar o PWM
  • Versão 1 (Listing 9.14). pag. 275
  • Versão 2 [9]
  • Versão 3 [10]
  • 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 [3], pag 337-340, removendo o ajuste de segundos, minutos e horas.
  • Versão 4 Modifique a versão 3, separando claramente a lógica combinacional de next-state, combinacional de output, e register.
  • Para cada circuito indicado torne o código genérico para N bits e teste para 4 e 32 bits.
  • Teste cada uma das arquiteturas e anote em uma tabela todos os resultados de: número de pinos, número de elementos lógicos/ALUT (indicando os Normais | Aritméticos), Frequência Máxima.
Esses dados estão disponíveis nos seguintes relatórios: (Fitter > Resource Section > Resource Usage), (TimeQuest Timing Analyser > Datasheet Report > FMax)
  • Insira restrições temporais para obter um circuito com maior Frequência Máxima.
create_clock -name CLKXXXMHz -period XXXMHz [get_ports {nome_do_sinal_de_clock}]
  • Realize a simulação funcional de cada circuito com 4 bits.
  • Escreva um relatório técnico na forma de artigo com 2 a 4 paginas A4. O relatório além das tabelas com os dados, deverá conter as figuras dos circuitos RTL para 4 bits, simulações funcionais e uma análise textual dos resultados obtidos. O arquivo com o QAR do projeto deve ser também enviado.
  • Para a geração de documentação/relatórios técnicos/artigos, está disponibilizada a plataforma Sharelatex do IFSC-CLOUD. Utilize preferencialmente o modelo de artigo no padrão ABNT.
  • Envie o artigo em pdf para (moecke AT ifsc.edu.br E arliones.hoeller AT ifsc.edu.br), com o ASSUNTO: DLP29007 - AE3 - Circuitos Sequencias.
ESTUDOS SEM ENTREGA DE DOCUMENTAÇÃO
AL1 - Tempo de propagação em circuitos combinacionais

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 a geração de documentação/relatórios técnicos/artigos, está disponibilizada a plataforma Sharelatex do IFSC-CLOUD. Utilize preferencialmente o modelo de artigo no padrão ABNT.

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 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 este tutorial.

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.

Referências Bibliográficas:

  1. 1,0 1,1 1,2 1,3 1,4 1,5 1,6 Pong P. Chu, RTL Hardware Design Using VHDL: Coding for Efficiency, Portability, and Scalability. Wiley-IEEE Press, Hoboken, 2006, ISBN 0471720925
  2. 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
  3. PEDRONI, Volnei A. Circuit Design and Simulation with VHDL; 2ª ed. Massachusetts-EUA:MIT, 2010. 608 p. ISBN 9780262014335


Curso de Engenharia de Telecomunicações