Mudanças entre as edições de "DLP1-EngTel (página)"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 355: Linha 355:
  
 
*Tempo livre para implementar/testar o [EL3 - Conversor de Binário para BCD].
 
*Tempo livre para implementar/testar o [EL3 - Conversor de Binário para BCD].
 +
-->
 +
 +
===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)
 +
<syntaxhighlight lang=vhdl>
 +
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;
 +
</syntaxhighlight>
 +
 +
:* Para selecionar uma entre várias arquiteturas para a mesma ENTITY use a CONFIGURATION.
 +
<syntaxhighlight lang=vhdl>
 +
CONFIGURATION which_mux OF mux IS
 +
  FOR Operator_only END FOR;
 +
--  FOR with_WHEN END FOR;
 +
--  FOR with_SELECT END FOR;
 +
END CONFIGURATION;
 +
</syntaxhighlight>
 +
::Ver pag. 121 a 127 de <ref name="PEDRONI2010b"/>
 +
<!--
 +
;Aula  14  (28 Abr):
 +
*Código Concorrente.
 +
:* Uso de GENERATE
 +
 +
<i><code>
 +
label: FOR identificador IN faixa GENERATE
 +
  [Parte_Declarativa
 +
BEGIN]
 +
  Instruções_concorrentes
 +
  ...
 +
END GENERATE [label];
 +
</syntaxhighlight> </i>
 +
 +
::Exemplo 5.4 - Decodificador genérico de endereços.
 +
::Exemplo 5.5 - Instanciação de COMPONENTE com GENERATE.
 +
::Ver pag. 127 a 134 de <ref name="PEDRONI2010b"/>
 +
 +
;Aula  15  (2 Mai):
 +
*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 (4 Mai):
 +
*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 <math> N </math> bits.  Para tipos '''UNSIGNED''' a faixa é de <math> 0  </math> até <math>  2^{N}-1 </math>, enquanto que para '''SIGNED''' a faixa é de <math> -2^{N-1} </math> até <math> 2^{N-1}-1 </math>.  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 17 (9 Mai):
 +
*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;
 +
<center> [[Arquivo:RTL_Bin2Gray4bits.png | Bin2Gray| 300 px]] <br> '''Fig 16. código RTL do conversor binário para Gray '''</center>
 +
:: Ex2 - Conversor de Gray para Binário genérico;
 +
<center> [[Arquivo:RTL_Gray2Bin4bits.png | Gray2Bin| 400 px]] <br> '''Fig 17. código RTL do conversor Gray para binário '''</center>
 +
:: Ex3 - Utilizando os dois circuitos anteriores e um incrementador binário escreva um código VHDL que implemente um incrementador Gray;
 +
<center> [[Arquivo:RTL_Inc_Gray4bits.png | Inc_Gray| 800 px]] <br> '''Fig 18. código RTL do incrementador de código Gray '''</center>
 +
<center> [[Arquivo:SF_Inc_Gray4bits.png | Inc_Gray| 800 px]] <br> '''Fig 19. Simulação Funcional do incrementador de código Gray '''</center>
 +
:Ver também [[Código Gray]];
 +
 +
;Aula 18 e 19  (11 e 12 Maio):
 +
*Código Concorrente.
 +
:* 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.
 
-->
 
-->
  

Edição das 09h30min de 13 de setembro de 2016

MURAL DE AVISOS E OPORTUNIDADES DA ÁREA DE TELECOMUNICAÇÕES


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]

Avaliações

  • Avaliação A1 - Unidade 2 a 4 (XX/XX/2016) - Local: Lab Redes II.
  • Avaliação A2 - Unidade 5 a 7 (XX/XX/2016) - Local: Lab Redes II.
As avaliações A1 e A2 são com consulta apenas as folhas VHDL QUICK REFERENCE CARD e VHDL 1164 PACKAGES QUICK REFERENCE CARD.
  • Recuperação R1-2 - Unidade 2 a 7 (XX/XX/2016) - Local: Lab Redes II.
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/2016).

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 - Circuitos de Processamento de Imagem por interface VGA em VHDL (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 - (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 6 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.


ARTIGOS ENTREGUES

2016-2
2016-1
2015-2
2015-1

ESTUDOS SEM ENTREGA DE DOCUMENTAÇÃO

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


Recursos de Laboratório

Quartus/Modelsim/QSIM

Nos laboratórios do IFSC, os softwares Quartus/Modelsim/QSIM estão disponíveis diretamente na plataforma LINUX. Utilize preferencialmente a versão 13.0sp1 (32 bits), pois ela tem suporte para os FPGAs mais antigos como a familia Cyclone I.

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).

Sharelatex

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.


Links auxiliares

Livros/Resumos sobre VHDL

Packages não padronizados

Simulador Modelsim

Fabricantes de DLPs

Fabricantes de kits com DLPS

Leituras recomendadas


Padrões IEEE para o VDHL

Os padrões IEEE [4]estão disponíveis para consulta se você estiver na rede do IFSC. Para a linguagem VHDL consulte os padrões: 1164,1076

Packages da IEEE

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 2,5 2,6 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