DLP29006-Engtelecom(2016-2) - Prof. Marcos Moecke

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

Registro on-line das aulas

Unidade 1

Aula 1 (11 Ago)
  • Introdução aos dispositivos lógicos programáveis:
  • Conceito, tipos de PLDs
  • SPLD: PAL, PLA e GAL
  • CPLDs
Exemplos de PLDs
Ep310 macrocell.jpg
Figura 1.1 - Macrobloco do PLD EP300 da ALTERA
FONTE: https://www.altera.com/solutions/technology/system-design/articles/_2013/in-the-beginning.html
Macrocell EP900.png
Figura 1.2 - Macrocélula dos PLDs Clássicos EP600, EP900, EP1800 da ALTERA (1999)
FONTE: https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ds/archives/classic.pdf
Ep1800 block diagram.jpg Ep1800 block diagram2.jpg
Figura 1.3 - Architetura do PLD EP1800 da ALTERA
FONTE: https://www.altera.com/solutions/technology/system-design/articles/_2013/in-the-beginning.html
FONTE: https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ds/archives/classic.pdf
PackagePinOut EP1810.png ChipEP1810.png
Figura 1.5 - Pinagem e tipos de encapsulamento do PLD EP1800 da ALTERA
FONTE: https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ds/archives/classic.pdf
FONTE: multisound_tahiti.jpeg
Max 5000 architecture.jpg
Figura 1.6 - Architetura do CPLD MAX 5000 da ALTERA
FONTE: https://www.altera.com/solutions/technology/system-design/articles/_2013/in-the-beginning.html
Ver Dispositivos Lógicos Programáveis - Kamila Rose da Silva, IFSC
Ver In the befinning - ALTERA
Ver ALTERA history
Ver pag. 413 a 422 de [1]
Ver pag. 495 a 499 de [2]
Aula 2 (16 Ago)
  • Introdução aos dispositivos lógicos programáveis:
  • Arquitetura de FPGAs (Xilinx e Altera): CLB, LAB, RAM, DSP, Clock, PLL, I/O
  • Vizualização no Chip Planner de um projeto. (importante todos alunos terem acesso a IFSC-CLOUD
Ver pag. 419 a 431 de [1]
Ver pag. 499 a 501 de [2]
Ver pag. 418 a 429 de [1]
Aula 3 (18 Ago)
  • Fabricantes de DLPs/FPGAs e familias de DLPs atuais.
  • Preços
  • Historia, processo de produção dos chips.

Unidade 2

Aula 3 (22 Ago) - Introdução ao VHDL e ambienta EDA - QUARTUS
  • Estrutura do código VHDL
  • Declaração das bibliotecas e pacotes LIBRARY / PACKAGE

library library_name;
use library_name.package)name.all;

  • ENTITY

entity entity_name is
  [generic (
    cons_name1: const_type const_value;
    cons_name2: const_type const_value;
    ...
    cons_nameN: const_type const_value);]
  [port (
    signal_name1: mode signal_type;
    signal_name2: mode signal_type;
    ...
    signal_nameN: mode signal_type);]
  [declarative_part]
[begin
  statement_part]
end [entity] [entity_name];

  • ARCHITECTURE

architecture arch_name of entity_name is
  [declarative_part]
begin
  statement_part
end [architecture] [arch_name];

  • Exemplo - Declaração de uma porta NAND em VHDL
library std;
use std.standard.all;

entity nand_gate is
	port (a, b: in bit; x: out bit);
end entity;

architecture nome_arch of nand_gate is
begin
	x <= a nand b;
end architecture;


  • Exemplo 2.2 (VHDL) - programação de um flip-flop
 -- Declaração das bibliotecas e pacotes
 LIBRARY ieee;
 USE ieee.std_logic_1164.all;

 -- Especificação de todas as entradas e saídas do circuito
 ENTITY flip_flop IS
  PORT (d, clk, rst: IN STD_LOGIC;
   q: OUT STD_LOGIC);
 END;
  
 -- Descrição de como o circuito deve funcionar
 ARCHITECTURE flip_flop OF flip_flop IS
 BEGIN
  PROCESS (clk, rst)
  BEGIN
   IF (rst='1') THEN
    q <= '0';
   ELSIF (clk'EVENT AND clk='1') THEN
    q <= d;
   END IF;
  END PROCESS;
 END;
RTL Ex2 2 Pedronib.png
Figura 2.2 - Código RTL do Exemplo 2.2
  • Use o Technology Map Viewer para ver a como o circuito foi mapeado para os elementos lógicos disponíveis no dispositivo FPGA selecionado (EP1C3T100A8)
TM Ex2 2 Pedronib.png
Figura 2.3 - Technology Map do Exemplo 2.2
ChipPlanner Ex2 2 Pedronib.png
Figura 2.4 - Chip Planner do Exemplo 2.2
Aula 4 (23 Ago) - Introdução ao VHDL e ambienta EDA - QUARTUS
  • Estrutura do código VHDL
  • Exemplo 2.3 (VHDL e QSIM) - programação de um circuito somador com registrador
Realizar as simulações funcional e temporal do circuito
Observar o "Technology Map" e o "RTL" do circuito
 LIBRARY ieee;
 USE ieee.std_logic_1164.all;

 ENTITY registered_comp_add IS
  PORT (clk: IN STD_LOGIC;
   a, b: IN INTEGER RANGE 0 TO 7;
   reg_comp: OUT STD_LOGIC;
   reg_sum: OUT INTEGER RANGE 0 TO 15);
 END;

 ARCHITECTURE circuit OF registered_comp_add IS
  SIGNAL comp: STD_LOGIC;
  SIGNAL sum: INTEGER RANGE 0 TO 15;
 BEGIN
  comp <= '1' WHEN a>b ELSE '0';
  sum <= a + b;
  PROCESS (clk)
  BEGIN
   IF (clk'EVENT AND clk='1') THEN
    reg_comp <= comp;
    reg_sum <= sum;
   END IF;
  END PROCESS;
 END;
Acrescente saídas para o sinal sum e para o sinal comp, de modo a poder observar estes sinais no simulador QSIM e realize novas simulações funcional e temporal.
RTL Ex2 3 Pedronib.png
Figura 2.5 - Código RTL do Exemplo 2.3
Para conhecer melhor o ambiente do simulador QSIM veja Arquivo:Quartus II Simulation.pdf da ALTERA.
Ver pag. 3 a 24 de [2]

Unidade 3

Aula 5 (25 Ago)
  • Tipos de Dados em VHDL.
  • Objetos de VHDL: CONSTANT, SIGNAL, VARIABLE, FILE.
  • Palavra chave OTHERS
Ver pag. 31 a 35 de [2]
Aula 6 (29 Ago)
  • Tipos de Dados em VHDL.
  • Bibliotecas padrão IEEE (std_logic_1164, numeric_std).
  • ATENÇÃO!!! Não use as bibliotecas que não são padrão (std_logic_arith, std_logic_unsigned, std_logic_signed)
  • Classificação dos tipos de dados.
  • Tipos de dados: BIT, BIT_VECTOR, BOOLEAN, INTEGER, NATURAL, POSITIVE, CHARACTER, STRING, STD_(U)LOGIG, STD_(U)LOGIG_VECTOR
  • Exemplo 3.1 Buffer Tri-state
  • Exemplo 3.2 Circuito com Saida "don't care"
Ver pag. 39 a 51 de [2]
  • Tipos de dados: SIGNED e UNSIGNED
  • Exemplo 3.3 Multiplicador (un)signed
  • Tipos de dados: FIXED e FLOAT (apenas conhecer)
  • Resumo dos Tipos predefinidos (Tabela 3.6).
  • Tipos definidos pelo usuário:
  • Escalares (Inteiros e Enumerados)
  • Tipos de Array 1D x 1D, 2D , 1D x 1D x 1D, 3D
  • RECORD e SUBTYPE
  • Exemplo 3.8: Multiplexador com porta 1D x 1D.
Ver pag. 51 a 73 de [2]


Unidade 4

Aula 13 (13 Set)
  • Código Concorrente.
  • Uso de Operadores
  • WHEN, SELECT;
  • Exemplo 5.1 + 5.2 mux: com 3 tipos de arquiteturas (com operadores, com WHEN, com SELECT)
 LIBRARY ieee;
 USE ieee.std_logic_1164.all;

 ENTITY mux IS
 GENERIC (N: INTEGER :=8);
 PORT (x0, x1, x2, x3: IN STD_LOGIC_VECTOR(N-1 DOWNTO 0);
 sel: IN STD_LOGIC_VECTOR(1 DOWNTO 0);
 y: OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0));
 END mux;
 -- Arquitetura para a implementação discreta através de portas AND e OR
 ARCHITECTURE Operator_only OF mux IS
 signal sel0_8: STD_LOGIC_VECTOR(N-1 DOWNTO 0);
 signal sel1_8: STD_LOGIC_VECTOR(N-1 DOWNTO 0);
 BEGIN
 sel0_8 <= (OTHERS => sel(0));
 sel1_8 <= (OTHERS => sel(1));
 y <= (NOT sel1_8 AND NOT sel0_8 AND x0) OR
 (NOT sel1_8 AND sel0_8 AND x1) OR
 (sel1_8 AND NOT sel0_8 AND x2) OR
 (sel1_8 AND sel0_8 AND x3);
 END operators_only;
  • Para selecionar uma entre várias arquiteturas para a mesma ENTITY use a CONFIGURATION.
CONFIGURATION which_mux OF mux IS
   FOR Operator_only END FOR;
--   FOR with_WHEN END FOR;
--   FOR with_SELECT END FOR;
END CONFIGURATION;
Ver pag. 121 a 127 de [2]
Aula 14 ()
  • Código Concorrente.
  • Uso de GENERATE

label: FOR identificador IN faixa GENERATE

  [Parte_Declarativa

BEGIN]

  Instruções_concorrentes
  ...

END GENERATE [label]; </syntaxhighlight>

Exemplo 5.4 - Decodificador genérico de endereços.
Exemplo 5.5 - Instanciação de COMPONENTE com GENERATE.
Ver pag. 127 a 134 de [2]
Aula 15 ()
  • Código Concorrente.
  • Exemplo de uso de operadores e SELECT.
Exemplo 5.3 - Unidade de Lógica e Aritmética (ALU).
Alteração do código da ALU:
  • Inclusão de um sinal que indica "erro" quando ocorre overflow/underflow nas operações de soma, incremento ou decremento.
  • Inclusão de um circuito que satura o sinal no máximo positivo ou negativo nas situações de erro.
  • Teste da ALU usando simulação funcional.
Aula 16 ()
  • Código Concorrente.
  • Implementação de circuitos aritméticos com operadores.
  • Para o uso dos operadores o mais adequado é utilizar o padrão industrial STD_LOGIC_VECTOR. Internamente os valores das portas devem ser convertidos ou para valores INTEGER ou para UNSIGNED/SIGNED. para tal é necessário utilizar a biblioteca numeric_std.
  • Também é fundamental considerar a faixa de valores coberta por bits. Para tipos UNSIGNED a faixa é de até , enquanto que para SIGNED a faixa é de até . Assim com 3 bits é possível representar valores entre -4 até 3 com um tipo SIGNED e 0 até 7 com um tipo UNSIGNED.
  • Para uso adequado dos operadores também é necessário considerar o tamanho (número de bits) requirido para o resultado em função do tamanho dos operandos.
  • Para operações de "+" ou "-": O tamanho do resultado é igual ao tamanho do maior operando.
Exemplo: r[7..0] = a[7..0] + b[4..0]; a -> 8 bits; b -> 5 bits então r -> 8 bits.
  • Para a operações "*": O tamanho do resultado é igual a soma do tamanho dos dois operandos.
Exemplo: r[12..0] = a[7..0] * b[4..0]; a -> 8 bits; b -> 5 bits então r -> 8+5 = 13 bits.
  • Para "/": O tamanho do resultado é igual ao tamanho do numerador.
Exemplo: r[5..0] = a[5..0] / b[8..0]; a -> 6 bits; b -> 9 bits então r -> 6 bits.
  • No caso da operações de "*" e "/" não ocorre overflow, no entanto no caso da "+" e "-", o overflow pode ocorrer e precisa ser tratado. Isso pode ser feito acrescentando um bit adicional a saída para conter o overflow ou então sinalizar a sua ocorrência.
  • Aula de exercícios:
5.3 - Porta AND e NAND Genérica.
5.4 - Gerador de Paridade Genérico.
Aula 18 a 19 ()
  • Código Concorrente.
  • Relógio HH:MM:SS
Aula 20 a 21 ()
  • Simulação com Modelsim
  • Exemplo do Relógio HH:MM:SS
Aula 22 ()
  • Código Concorrente.
  • Aula de exercícios: Escreve um código VHDL genérico que implemente os seguintes circuitos:
Ex1 - Conversor de Binário para Gray genérico;
Bin2Gray
Fig 16. código RTL do conversor binário para Gray
Ex2 - Conversor de Gray para Binário genérico;
Gray2Bin
Fig 17. código RTL do conversor Gray para binário
Ex3 - Utilizando os dois circuitos anteriores e um incrementador binário escreva um código VHDL que implemente um incrementador Gray;
Inc_Gray
Fig 18. código RTL do incrementador de código Gray
Inc_Gray
Fig 19. Simulação Funcional do incrementador de código Gray
Ver também Código Gray;
  • Aula de exercicios:
5.4 - Generic Parity Generator;
5.6 - Generic Binary-to-Gray Converter;
5.7 - Hamming Weight with GENERATE;
5.10/11 - Arithmetic Circuit with INTEGER/STD_LOGIC;
5.15/16/17/18 - (Un)signed Multiplier/Divider;
5.19 - Frequency Multiplier.


Unidade 5

Aula 20 ()
  • Código Sequencial.
  • Diferenças entre código concorrente e sequencial <=> circuitos combinacional e sequencial
  • Diferenças entre os objetos SIGNAL e VARIABLE
  • Tipos de elementos de memória: Latch x Flip-flop
  • Latch D
  • Flip-flop tipo D com reset assíncrono e com reset (clear) síncrono
  • Seção de código sequencial PROCESS: lista de sensibilidade
[rótulo:] PROCESS [(lista_de_sensibilidade)] [IS]
             [parte_declarativa]
         BEGIN
             afirmação_sequencial;
             afirmação_sequencial;
             ...
         END PROCESS [rótulo];
  • Instrução IF
[rótulo:] IF condição THEN
             afirmação_sequencial;
             afirmação_sequencial;
             ...
         ELSIF condição THEN
             afirmação_sequencial;
             afirmação_sequencial;
             ...
         ELSE
             afirmação_sequencial;
             afirmação_sequencial;
             ...
         END IF [rótulo];
  • Exemplos: DFFs with Reset and Clear (Variação Ex 6.1), Basic Counter (Ex. 6.2), Shift Register (Ex. 6.3)
  • Instrução WAIT: WAIT UNTIL, WAIT FOR (simulação apenas), WAIT ON (não implementada no Quartus II).
Algumas instruções de WAIT serão utilizadas na criação de TestBench em VHDL para a simulação com o MODELSIM.
Recomenda-se utilizar a lista de sensibilidade do PROCESS e a instrução IF no lugar do WAIT.
  • Ver pag. 161 a 160 de [2]
Aula 21 ()
  • Código Sequencial.
  • Instruções do tipo LOOP: LOOP incondicional, FOR-LOOP, WHILE-LOOP, NEXT, EXIT
  • LOOP incondicional:
[rótulo:] LOOP
             afirmação_sequencial;
             afirmação_sequencial;
             ...
          END LOOP [rótulo];
  • FOR-LOOP:
[rótulo:] FOR identificador IN faixa LOOP
             afirmação_sequencial;
             afirmação_sequencial;
             ...
          END LOOP [rótulo];
  • WHILE-LOOP:
[rótulo:] WHILE condição LOOP            -- Executa as "afirmações enquanto a "condição" for verdadeira
             afirmação_sequencial;
             afirmação_sequencial;
             ...
          END LOOP [rótulo];
  • LOOP com EXIT:
[rótulo:] [FOR identificador IN faixa] LOOP
             afirmação_sequencial;
             EXIT [rótulo] [WHEN condição];    -- Se a "condição" é verdadeira, termina o "LOOP"
             afirmação_sequencial;
             ...
          END LOOP [rótulo];
  • LOOP com NEXT:
[rótulo:] [FOR identificador IN faixa] LOOP
             afirmação_sequencial;
             NEXT [rótulo] [WHEN condição];    -- Se a "condição" é verdadeira, não executa as linhas até a linha "END LOOP"
                                               -- e incrementa o "identificador".
             afirmação_sequencial;
             ...
          END LOOP [rótulo];
  • Exemplos: Carry-Ripple Adder (FOR-LOOP) (Ex 6.4),
  • Ver pag. 161 a 164 de [2]
Aula 22 ()
  • Código Sequencial.
  • Instrução CASE
 [rótulo:] CASE expressão IS
                  WHEN valor => atribuições;                            -- valor único
                  ...
                  WHEN valor1 | valor2 | ... | valorN  => atribuições;  -- lista de valores
                  ...
                  WHEN valor1 TO valor2    => atribuições;              -- faixa de valores
                  ...

          END CASE;
  • Exemplos:
  • Leading Zeros (LOOP com EXIT) (Ex 6.5)
  • Contador de 0 a 9 segundos com saída SSD (Ex 6.6)
  • Projeto ruim com CASE incompleto (Ex. 6.7)
  • Exercícios do Capitulo 6
  • Ver pag. 164 a 176 de [2]
Aula 23 (20/10)
  • Código Sequencial.
  • Exercícios do Capítulo 6.
Uso do ModelSim - salvamento do wave.do
Divisão dos exercícios entre duplas de alunos.
Ex 6.3  - Mateus, Paula, Andrey
Ex 6.5  - Bruno, Murilo, Kleiton
Ex 6.6  - Henrique, Matias 
Ex 6.7  - Natália, Luísa
Ex 6.10a (incrementando de 00 até XX - Jessica e Letícia 
Ex 6.10a (decrementando de XX até 00 - Layssa e Alline 
Ex 6.11 - Gabriel S, Gustavo W, 
Ex.6.15 - Daniel, Nelson, Gabriel W
  • Durante a aula os alunos foram orientados na resolução dos exercícios, e simulação usando o Modelsim.
  • Os alunos devem enviar o arquivo QAR contendo o projeto e simulação para o email do professor.
  • Discuta com os colegas como resolveram o Exercício proposto para eles. Cada aluno deverá saber solucionar todos os exercícios.

Unidade 6

Aula 26 ()
  • Projeto a nível de Sistema.
  • O PACKAGE e PACKAGE BODY: onde declarar e como usar.
  • O COMPONENT: declaração (cópia da ENTITY) e instanciação.
  • Associação dos nomes das portas aos sinais. PORT -> PORT MAP:
  • Mapeamento por posição e nominal.
  • Métodos de declaração de COMPONENT.
  • Exemplo: Registrador Circular Ex. 8.2, usando como componente básico o mux junto com o DFF.
  • Ver pag. 201 a 208 de [2]
  • Resolução dos exercícios:
Aula 27 ()
  • Projeto a nível de Sistema.
  • Criação de COMPONENT redimensionáveis. GENERIC -> GENERIC MAP
  • Exemplo: Porta E com N entradas.
  • Exemplo: Detector de Paridade Ex. 8.3
  • Instanciação de COMPONENT com GENERATE.
  • Exemplo: Alterar o exercício 8.2 realizando a instanciação dos componentes com FOR GENERATE. Instanciar duas vezes o Registrador Circular com 8 e 16 bits, sendo os 8 primeiros bits de entrada comuns aos dois registradores.
  • Exercício: Registrador de deslocamento M x N Ex. 8.4
  • Ver pag. 208 a 213 de [2]
Aula 28 ()
  • Projeto a nível de Sistema.
  • Uso da instrução CONFIGURATION.
  • Ligação direta: ARCHITECTURE-ENTITY.
  • Ligação da instanciação dos componentes: COMPONENT-ENTITY(ARCHITECTURE).
  • Exercício 28.1: Inserir as duas soluções de ARCHITECTURE do exercício EX 6.10 (Timer de dois digitos) em uma única ENTITY. Utilizar CONFIGURATION para fazer a ligação com a arquitetura desejada.
entity counter60seg is
  generic (fclk: integer := 2); -- valor usado para simulação.
--  generic (fclk: integer := 50_000_000); -- valor usado para implementação com clk de 50 MHz.
  port (
    clk, rst : in std_logic;
    ssd_un, ssd_dz: out std_logic_vector(6 downto 0));
end entity ;

architecture version1 of counter60seg is

   ...
begin
   ...
end architecture ;

architecture version2 of counter60seg is

   ...
begin
   ...
end architecture ;

configuration counter60seg_cfg of counter60seg is
	for version1 end for;
--	for version2 end for;
end configuration;
  • Exercício 8.2: Componentização do circuito conversor de binário para display de sete segmentos. Também modifique a descrição vhdl de modo que a interface dos componentes sejam do tipo std_logic ou std_logic_vector.
entity bin2ssd is
  port (
    bin: in std_logic_vector(3 downto 0);
    ssd: out std_logic_vector(6 downto 0));
end entity ;

architecture with_case of bin2ssd  is
   ...
begin
   ...
end architecture ;
Aula 29 e 30 ()
  • Projeto hierárquico em equipes do circuito lançador de foguete.
  • Subsistema 1a - Contador incrementador (de 00 a 99) -
  • Subsistema 1b - Contador decrementador (de 99 a 00) -
  • Subsistema 2a - Contador em anel -
  • Subsistema 2a - Shift register -
  • Subsistema 3a - Mostrador SSD com case - Daniel e Nelson
  • Subsistema 3b - Mostrador SSD com with select - Natalia e Luisa
  • Integração e implementação na DE2-115
  • Integração e implementação na DE2-115
  • Integração e implementação na Mercurio IV
Aula 31(7/11)
  • Resolução de exercícios do capitulo 6
  • Ex 6.5 Shift register - Bruno e Murilo
  • Ex 6.3 Mux NxM - Matheus, Paulo e Andrey
  • Ex 6.15 Serializador - Daniel e Nelson
Aula 32 (8/11)
  • Projeto hierárquico em equipes do circuito lançador de foguete.
Top level foguete.png
Fig.1 - RTL do Top Level do projeto do simulador de lançamento de foguete.
Components foguete.png
Fig.2 - RTL dos componentes do simulador de lançamento de foguete.
Simlation foguete.png
Fig.3 - Simulação no ModelSim do lançamento de foguete.

ATUAL

Aula 33 (17/11)
  • Projeto a nível de Sistema.

FUNCTION e PROCEDURE (são chamados de subprogramas), e podem ser construidos em um PACKAGE, ENTITY, ARCHITECTURE, ou PROCESS.

A instrução ASSERT é útil para verificar as entradas de um subprograma. Seu propósito não é criar circuito, mas assegurar que certos requisitos são atendidos durante a sintese e/ou simulação. Pode ser condicional ou incondicional (condição_booleana = FALSE). A sintaxe da instrução é:

[rótulo:] assert condição_booleana
[report mensagem]
[severity nivel_severidade];

A mensagem pode ser criada usando STRINGs que podem ser concatenadas.

O nível de severidade pode ser NOTE (para passar informação para o compilador/simulator), WARNING (para informar que algo não usual ocorreu), ERROR (para informar que alguma condição não usual "sério" ocorreu), ou FAILURE (para informar que uma condição não aceitável ocorreu). Normalmente o compilador para quando ocorre um ERROR ou FAILURE. NOTE é o valor "default".

  • A FUNCTION: declaração, uso, mapeamento posicional x nominal, PURE x IMPURE.
function nome_funçao (lista_parametros_entrada) return tipo_saida is
   declarações
begin
   afirmações sequenciais
end function;
  • Uso de FUNCTION e ASSERT.
  • Exemplo: Declaração em ARCHITECTURE Ex.9.1
  • Exemplo: Declaração em PACKAGE Ex. 9.2
  • Exemplo: Declaração em ENTITY Ex. 9.3


Abaixo segue um exemplo de cálculo do log2 de um número inteiro. Pode ser usado para determinar o número de bits necessário para um número natural.

function log2c (n : integer) return integer is
	variable m , p : integer;
begin
	m := 0;
	p : = 1;
	while p < n loop
		m : = m + 1;
		p := p * 2;
	end loop;
	return m;
end log2c;

Avaliações

  • Avaliação A1 - Unidade 2 a 4.
  • Avaliação A2 - Unidade 5 a 7.
As avaliações A1 e A2 são com consulta apenas as folhas de consulta entregues VHDL QUICK REFERENCE CARD e VHDL 1164 PACKAGES QUICK REFERENCE CARD. Dica use também como fonte de consulta os templates do Quartus.
  • Recuperação R1-2 - Unidade 2 a 7.
Ao final das avaliações o aluno deverá enviar para o email moecke AT ifsc.edu.br com os arquivos solicitados.
  • Entrega dos Atividades Extraclasse ao longo do semestre AE1 a AE(N-1). Os prazos serão indicados aqui na Wiki
  • Projeto Final APF.

Atividades extraclasse

Neste tópico serão listadas as atividades extraclasse que os alunos/equipes deverão realizar ao longo do semestre.

PARA ENTREGAR

AE1 - Temas relacionados aos DLPS (Prazo de entrega do resumo (500 caracteres/ 1 pagina): 09 setembro 2016 até as 23:59), Prazo de entrega do artigo: 07 de outubro de 2016
  • Formar equipes com 2 ou 3 alunos, e em conjunto façam uma pesquisa sobre um tema relacionado a DLPs.
TEMA 1 - FPGA x Microprocessador - Vantagens e desvantagens (Daniel e Nelson)
TEMA 2 - Analisadores lógicos em FPGA (Mateus, Paula e Andrey)
TEMA 3 - Simuladores de VHDL (Modelsim e QSIM) (Bruno e Murilo)
TEMA 4 - Processamento de vídeo em FPGA(Mathias, Lucas e Henrique)
TEMA 5 - FPGA na industria automotiva (Natalia e Luisa)
TEMA 6 - Aplicações em redes neurais (Jessica, Leticia e Gabriel S,)
TEMA 7 - Aplicação de Tecnologia de Segurança usando FPGA e SoCs(Kleiton, Gustavo W. e Gabriel W.)
TEMA 8 - Aplicações em Imagens Médicas (João, Alline e Layssa)
INSPIRAÇÃO para temas:
  • Escrever um artigo com 4 a 8 páginas A4. O artigo deve ser completo, incluindo todas as referências utilizadas. Dê um título coerente ao artigo. Seja criativo.
  • 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. Outro modelo de artigo que pode ser utilizado é o da Elsevier. Consulte também Uso do ShareLaTeX na IFSC-CLOUD.
  • Envie o resumo em pdf para (moecke AT ifsc.edu.br), com o ASSUNTO: DLP29006 - AE1 - Temas relacionados aos DLPS - resumo.
  • Envie o artigo em pdf para (moecke AT ifsc.edu.br), com o ASSUNTO: DLP29006 - AE1 - Temas relacionados aos DLPS - artigo.
AE2 - Uso de código concorrente - ALU modificada (Prazo de entrega 30/09/2016)
  • Implemente em VHDL uma Unidade de Lógica e Aritmética que tem como entrada os sinais A e B e que execute as seguintes instruções lógicas e aritméticas conforme o opcode de entrada:
Unidade Lógica
Instrução Operação opcode GRUPO
Complemento de A Y = not A 00000 1
Complemento de B Y = not B 00001 2
And Y = A nand B 00010 3
Nand Y = A and B 00011 4
Or Y = A nor B 00100 1
Nor Y = A or B 00101 2
Xor Y = A xor B 00110 3
Xnor Y = A xnor B 00111 4
Unidade Aritmética
(onde os valores de A e B podem ser positivos ou negativos)
Instrução Operação opcode GRUPO
Transfere A Y = A 01000 1
Transfere B Y = B 10001 2
complemento-2 de A Y = -A 01001 3
complemento-2 de B Y = -B 10001 4
Incrementa A Y = A + 1 01010 1
Decrementa A Y = A - 1 01011 2
Incrementa B Y = B + 1 10010 3
Decrementa B Y = B - 1 10011 4
Soma A e B Y = A + B 11000 1,2,3,4
Subtrai B de A Y = A - B 11001 1,3
Subtrai A de B Y = B - A 11010 2,4
LSB da Multiplicação de A e B Y = A * B 11011 1,2
MSB da Multiplicação de A e B Y = A * B 11100 3,4
Dobra o valor A Y = A * 2 01100 1
Dobra o valor B Y = B * 2 10100 2
Metade do valor A Y = A / 2 01101 3
Metade do valor B Y = B / 2 10101 4
Divisão de A / B Y = A / B 11101 1,2,3,4
Resto da Divisão de A / B Y = A REM B 11110 1,2,3,4
  • A ENTITY deverá ter a seguinte interface:
ENTITY alu IS
GENERIC (N: INTEGER := 4); --word bits
PORT (
	A, B: IN STD_LOGIC_VECTOR(N-1 DOWNTO 0);
	opcode: IN STD_LOGIC_VECTOR(4 DOWNTO 0);
	Y: OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0));
END ENTITY;
  • Proponha uma ARCHITECTURE que implemente a ALU (Dica: utilize o tipo de dado tipo integer).
  • Escolha no FACEBOOK um dos GRUPOS de instruções indicados pelos números 1, 2, 3 e 4 na coluna GRUPO.
  • Na multiplicação LSB são os N bits menos significativos do resultado, e MSB são os N bits mais significativos do resultado. Por exemplo se o resultado tem 10 bits "1001001011" MSB = "10010" e LSB = "01011".
  • Anote o número de Elementos Lógicos (ou ALUTs) utilizados [Compilation Report > Flow Summary].
  • Verifique o código RTL gerado [Tools > Netlist Viewers > RTL Viewer]
  • Faça a simulação funcional no QSIM com 8 pares de valores (use os valores mínimos e máximos e outros pares de valores representáveis) e verifique se o resultado das operações está correto. Teste cada instrução (opcode) em separado.
  • Analise os resultados obtidos para entradas com 4 bits. Verifique os casos em que há overflow.
  • Escreva um relatório contendo o código VHDL, a figura do circuito RTL, as simulações funcionais solicitadas e uma análise dos resultados obtidos. Relate o número de elementos lógicos utilizados.
  • Envie o artigo em pdf e o qar para (moecke AT ifsc.edu.br), com o ASSUNTO: DLP29006 - AE2 - Uso de código concorrente - ALU modificada.
AE3 - Circuito de transmissão e recepção serial (Prazo de entrega: 27 Novembro 2016)
  • Formar equipes com 2 ou 3 alunos.
  • Escreva o código VHDL para implementar de modo hierárquico o sistema abaixo.
RTL Serial TX RX.png
  • Os blocos verdes são componentes. Os nomes das portas do TOP LEVEL e de cada COMPONENT está indicado no diagrama. Todos os sinais de portas devem usar o tipo STD_LOGIC(_VECTOR).
  • Procure reutilizar os componentes que já foram realizados durante o semestre.
  • Realizar a simulação do sistema, transmitindo um sinal de 7 bits da entrada data_in para a saída data_out.
  • Como taxas de baud_rate utilize 1 bps e 1000 bps.
  • Implemente o sistema usando uma placa DE2-115.
  • Identifique cada arquivo VHD com um cabeçalho indicando os autores, e data. Sugestão:


-- Projeto de um serial_TX e serial_RX -- AUTOR: -- DATA: XX Nov 2016 -- DISCIPLINA: DLP29006 - ENG. TELECOMUNICAÇOES IFSC -- FILE: Nome_do_arquivo.vhd


</syntaxhighlight>

  • Escreva um relatório técnico na forma de artigo com 4 a 6 paginas A4. O relatório deverá descrever o funcionamento do circuito e os testes de simulação e na placa realizados.
  • 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), com o ASSUNTO: DLP29006 - AE3 - Circuito de transmissão e recepção serial.
APF - Projeto Final de Hardware (prazo final da documentação 19/12/2016 as 23:59, apresentação do projeto final no kit DE2-115 20/12/2016)
  • ATENÇÃO!!! Houve uma mudança na atividade deste projeto. A parte adicional que estava proposta para cada equipe não precisa mais ser realizada, pois a maioria das equipes não tem ainda um circuito transmissor e receptor funcionando de forma integrada com diferentes baud-rates. Por isso, o projeto final será simplicado e será apenas a continuidade/finalização da AE3.
  • Após ter o sistema de transmissão e recepção serial proposto em AE3 funcionando em simulação, cada equipe deverá para o projeto final fazer ainda:
  • Implemente o sistema usando uma placa DE2-115 (Já previsto inicialmente)
  • Utilize um sinal o sinal de clock de 50MHz para gerar os sinais de baud_rate de 1bps e 1000bps.
  • utilize os displays conforme estabelecido na AE3.
  • Para entrada de dados utilize as chaves deslizantes, utilizando 14 chaves como informação de entrada (use um mux para escolher os primeiros 7 bits ou os 7 últimos)
  • Utilize uma das chaves deslizantes para selecionar o canal do mux.
  • Utilize uma das chaves deslizantes para selecionar o baud rate.
  • Utilize um led para monitorar a interface serial. (note que na taxa de 1bps é possível acompanhar a transmissão dos bits visualmente) outros leds podem ser utilizados para observar o dado transmitido e recebido (nas entrada e saída paralela), e também para o bit de paridade.
  • Escrever um relatório técnico na forma de artigo com 4 a 8 paginas A4. O relatório deverá descrever o funcionamento do circuito e os testes de simulação e na placa realizados.
  • 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), com o ASSUNTO: DLP29006 - APF - Projeto Final de Hardware.
  • Os projetos finais e alunos serão analisados em 5 quesitos:
  • Correção do projeto, atendimento as especificações e requisitos do sistema.
  • Documentação do projeto.
  • Implementação no kit DE2-115.
  • Apresentação do projeto.
  • Avaliação individual do aluno no projeto.

ESTUDOS SEM ENTREGA DE DOCUMENTAÇÃO

Os exemplos e exercícios essenciais estão destacados em negrito na listagens abaixo.

EL1 - Resolução dos exercícios do Cap 3
  • Resolva os exercícios do capítulo 3 (1, 2, 9, 11, 12, 13, 14-17, 18, 20, 22, 23-30) pag. 81 a 89
EL2 - Resolução dos exercícios do Cap 4
  • Resolva os exercícios do capítulo 4 (4-8, 9, 10-11, 13, 15-16, 17 ) pag. 115 a 120
EL3 - Resolução dos exercícios do Cap 5
  • Resolva os exercícios do capítulo 5 (1, 2, 3, 4, 6, 7, 8-9, 10-11, 14-16, 17-18, 19 ) pag. 144 a 150
EL6 - Resolução dos exercícios do Cap 6
  • Resolva os exercícios do capítulo 6 (1, 2, 3-4, 5, 6-7, 9*, 10-11, 12*, 13*, 14, 15) pag. 172 a 176.
EL7 - Resolução dos exercícios do Cap 8 e 9
  • Resolva os exercícios da capítulo 8 (1-7, 9*) pag. 219 a 220.
  • Resolva os exercícios da capítulo 9 (1-3, 6-9) pag. 238 a 239.

Referências Bibliográficas:

  1. 1,0 1,1 1,2 PEDRONI, Volnei A. Eletrônica digital moderna e VHDL; 1ª ed. Rio de Janeiro:Elsevier, 2010. 619p. . ISBN 9788535234657
  2. 2,00 2,01 2,02 2,03 2,04 2,05 2,06 2,07 2,08 2,09 2,10 2,11 2,12 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