DLP29006-Engtelecom(2017-1) - Prof. Marcos Moecke: mudanças entre as edições

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Moecke (discussão | contribs)
Moecke (discussão | contribs)
Linha 159: Linha 159:
:* Modifique o circuito para que ele passe a ter 16 flip-flops, e realize as simulações funcional e temporal do circuito.
:* Modifique o circuito para que ele passe a ter 16 flip-flops, e realize as simulações funcional e temporal do circuito.


====ATUAL====
;Aula 5 (21 Fev) - Introdução ao VHDL e ambienta EDA - QUARTUS
;Aula 5 (21 Fev) - Introdução ao VHDL e ambienta EDA - QUARTUS
* Estrutura do código VHDL
* Estrutura do código VHDL
Linha 199: Linha 198:


::Ver pag. 3 a 24 de <ref name="PEDRONI2010b"> PEDRONI, Volnei A. '''Circuit Design and Simulation with VHDL'''; 2ª ed. Massachusetts-EUA:MIT, 2010. 608 p.  ISBN  9780262014335 </ref>
::Ver pag. 3 a 24 de <ref name="PEDRONI2010b"> PEDRONI, Volnei A. '''Circuit Design and Simulation with VHDL'''; 2ª ed. Massachusetts-EUA:MIT, 2010. 608 p.  ISBN  9780262014335 </ref>
===Unidade 3===
====ATUAL====
;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 <ref name="PEDRONI2010b"/>
:* 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 <ref name="PEDRONI2010b"/>
<!--
;Aula 6 (29 Ago):
*Tipos de Dados em VHDL.
:* 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 <ref name="PEDRONI2010b"/>
;Aula 7  (11 Abr):
*Tipos de Dados em VHDL.
;Aula 8  (13 Abr):
*Tipos de Dados em VHDL.
:* 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 <ref name="PEDRONI2010b"/>
;Aula 9  (14 Abr):
*Qualificação de tipos, conversão de tipos (automática, casting e funções de conversão).
:* Resumo das funções de conversão de tipos (Tabela 3.10) e ver [[Aritmética com vetores em VDHL]]
:* Exemplo 3.9: Multiplicador com sinal
<syntaxhighlight lang=vhdl>
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.all;
ENTITY signed_multiplier IS
PORT (
a, b: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
);
END ENTITY;
ARCHITECTURE type_conv_arch OF signed_multiplier IS
BEGIN
y <= std_LOGIC_VECTOR(SIGNED(a) * SIGNED(b));
END ARCHITECTURE;
</syntaxhighlight>
:* Exercício: 
::*Implementar em VHDL um circuito que efetue a operação <math>\ y = a^2 + 2*a*b + 5 </math>, utilizando portas do tipo INTEGER para valores de entrada <math>\ a </math> e <math>\ b </math> com sinal e ocupando 4 bits, utilize na saída <math>\ y </math> 8 bits. Determine o número de elementos lógicos e verifique o código RTL obtido.  Compare com os colegas.
::*Repita o circuito com as mesmas características, utilizando no entanto portas do tipo STD_LOGIC_VECTOR com 4 bits nas entradas e 8 bits na saída.
::*Faça a simulação funcional do circuito. Teste o circuito no minimo com <math>\ {a = -2, b = 3} => y = -3 </math>, <math>\ {a = 7, b = 6} => y = 138 </math> e <math>\ {a = -8, b = -8} => y = 197 </math>. Note que para valores maiores de entrada <math>\ a </math> e <math>\ b </math> pode ocorrer ''overflow'' devido a limitação do número de bits da saída.
:: Ver pag. 73 a 78 de <ref name="PEDRONI2010b"/>
;Aula 10 e 11 (18 e 20 Abr):
*Operadores em VHDL.
:* Operadores predefinidos: Atribuição, Lógicos, Aritméticos, Comparação, Deslocamento, Concatenação, "Matching".
:* Sobrecarga de operadores
*Atributos em VHDL.
:* Atributos predefinidos: tipo escalar e enumerados; tipo array; de sinal;
:* Exemplo 4.2 (Simulação funcional)
:* Atributos definidos pelo usuário;
:* Atributos de síntese:
::* Enum_encoding [http://quartushelp.altera.com/15.0/mergedProjects/hdl/vhdl/vhdl_file_dir_enum_encoding.htm]
::* chip_pin [http://quartushelp.altera.com/15.0/mergedProjects/hdl/vhdl/vhdl_file_dir_chip.htm]
:: Ver pag. 91 a 108 de <ref name="PEDRONI2010b"/>
;Aula 12 (25 Abr):
*Atributos em VHDL.
:* Atributos de síntese:
::* keep [http://quartushelp.altera.com/15.0/mergedProjects/hdl/vhdl/vhdl_file_dir_keep.htm]
:::* Exemplo 4.4: Delay line (Síntese e Simulação temporal sem o com o atributo keep)
:::* Exemplo 5.8 Gerador de Pulsos estreitos
::* preserve [http://quartushelp.altera.com/15.0/mergedProjects/logicops/logicops/def_preserve_fanout_free_node.htm]
::* noprune.
:::* Exemplo 4.5: Preserve and noprune attributes
<syntaxhighlight lang=vhdl>
ENTITY redundant_registers IS
PORT (
clk, x: IN BIT;
y: OUT BIT);
END ENTITY;
ARCHITECTURE arch OF redundant_registers IS
SIGNAL a, b, c: BIT;
        -- NORMAL -- 1 LE
--ATTRIBUTE preserve: BOOLEAN;
--ATTRIBUTE preserve OF a, b, c: SIGNAL IS TRUE; -- 2 LE
--ATTRIBUTE noprune: BOOLEAN;
--ATTRIBUTE noprune OF a, b, c: SIGNAL IS TRUE; --3 LE
--ATTRIBUTE keep: BOOLEAN;
--ATTRIBUTE keep of a,b,c: SIGNAL IS TRUE;
BEGIN
PROCESS (clk)
BEGIN
IF (clk'EVENT AND clk='1') THEN
a <= x;
b <= x;
c <= x;
END IF;
END PROCESS;
y <= a AND b;
END ARCHITECTURE;
</syntaxhighlight>
Após a compilação do código acima, observe o número de elementos lógicos obtidos, observe o '''Technology Map''' dos circuitos gerados e verifique a localização dos FFs no '''Chip Planner'''.
<center> [[Arquivo:Ex4_5_NoAttribute.png | Sem Attribute| 400 px]] <br> '''Fig 12. Technology Map do Circuito sem Attribute'''</center>
<center> [[Arquivo:Ex4_5_PreserveAttribute.png| Preserve (or Keep) Attribute |400 px]] <br> '''Fig 13. Technology Map do Circuito com Attribute Preserve (or Keep) '''</center>
<center> [[Arquivo:Ex4_5_NopruneAttribute.png| Noprune Attribute| 400 px]] <br> '''Fig 14. Technology Map do Circuito com Attribute Noprune '''</center>
:* Group
:* Alias
::*Exemplo de uso no pacote numeric_std.vhd
<syntaxhighlight lang=vhdl>
  function ADD_UNSIGNED (L, R: UNSIGNED; C: STD_LOGIC) return UNSIGNED is
    constant L_LEFT: INTEGER := L'LENGTH-1;
    alias XL: UNSIGNED(L_LEFT downto 0) is L;
    alias XR: UNSIGNED(L_LEFT downto 0) is R;
    variable RESULT: UNSIGNED(L_LEFT downto 0);
    variable CBIT: STD_LOGIC := C;
  begin
    for I in 0 to L_LEFT loop
      RESULT(I) := CBIT xor XL(I) xor XR(I);
      CBIT := (CBIT and XL(I)) or (CBIT and XR(I)) or (XL(I) and XR(I));
    end loop;
    return RESULT;
  end ADD_UNSIGNED;
</syntaxhighlight>
:* Exercício 4.17: Discussão de possibilidades de implementação
:: Ver pag. 108 a 119, 140 a 142 de <ref name="PEDRONI2010b"/>
<!--
;Aula 13 (11 mar):
*Tempo livre para implementar/testar o [EL3 - Conversor de Binário para BCD].
-->


==Avaliações==
==Avaliações==

Edição das 13h29min de 24 de fevereiro de 2017

1 Registro on-line das aulas

1.1 Unidade 1

Aula 1 (10 Fev)
Ler Dispositivos Lógicos Programáveis - Kamila Rose da Silva, IFSC
Aula 2 (14 Fev)
  • Introdução aos dispositivos lógicos programáveis:
  • Conceito, tipos de PLDs
  • SPLD: PAL, PLA e GAL
  • CPLDs
Exemplos de PLDs
Figura 1.1 - Macrobloco do PLD EP300 da ALTERA
FONTE: https://www.altera.com/solutions/technology/system-design/articles/_2013/in-the-beginning.html
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
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
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
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 In the beginning - ALTERA
Ver ALTERA history
Ver pag. 413 a 422 de [1]
Ver pag. 495 a 499 de [2]
  • 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 (17 Fev)
  • Fabricantes de DLPs/FPGAs e familias de DLPs atuais.
  • Preços
  • Historia, processo de produção dos chips.

1.2 Unidade 2

Aula 4 (20 Fev) - Introdução ao VHDL e ambiente 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;
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)
Figura 2.3 - Technology Map do Exemplo 2.2
Figura 2.4 - Chip Planner do Exemplo 2.2
  • Realizar as simulações funcional e temporal do circuito
  • Modifique o circuito para que ele passe a ter 16 flip-flops, e realize as simulações funcional e temporal do circuito.
Aula 5 (21 Fev) - 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.
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]


1.3 Unidade 3

1.3.1 ATUAL

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]
  • 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]


2 Avaliações

  • Avaliação A1 - Unidade 2 a 4 (XX/XX/2017) - Local: Lab Redes I.
  • Avaliação A2 - Unidade 5 a 7 (XX/XX/2017) - Local: Lab Redes I.
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 (XX/XX/2017) - Local: Lab Redes I.
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 (XX/XX/2017).

3 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,0 2,1 2,2 2,3 2,4 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