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 381: Linha 381:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
{{collapse bottom}}
 
{{collapse bottom}}
 +
{{collapse top | expand=true | AL2 -  Conversor de Binário para BCD}}
 +
*Para o exercício 4.17 escreva um código VHDL e analise o número de elementos lógicos necessários.  Compare sua implementação com os outros estudantes e analise as diferenças, observe o código RTL.
 +
::Para separar os dígitos decimais do número de entrada utilize operadores de "/", "REM" ou "MOD".
 +
::Para facilitar os testes e a troca de informações entre as equipes, a ENTITY deverá ter o seguinte formato:
 +
<syntaxhighlight lang=vhdl>
 +
entity bin2bcd is
 +
port (
 +
X_bin         : in std_logic_vector(9 downto 0);
 +
C_bcd : out std_logic_vector(3 downto 0);
 +
D_bcd : out std_logic_vector(3 downto 0);
 +
U_bcd : out std_logic_vector(3 downto 0));
 +
 +
end entity;
 +
</syntaxhighlight>
 +
:: Note que com ''X_bin'' 10 bits é possível representar números sem sinal entre ''0'' e <math> 2^{10}-1 </math>.  No entanto, os testes devem ser limitados a números entre 000 e 999, pois não há especificação para valores maiores que 999.
 +
:: Existe um algoritmo [https://en.wikipedia.org/wiki/Double_dabble Double Dabble] que possibilita fazer essa conversão com menos hardware.
 +
{{collapse bottom}}
 +
 
<!--
 
<!--
 
{{collapse top | expand=true| EL2 - Resolução dos exercícios do Cap 3}}
 
{{collapse top | expand=true| EL2 - Resolução dos exercícios do Cap 3}}

Edição das 17h52min de 18 de abril de 2016

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


Registro on-line das aulas

Unidade 1

Aula 1 (23 Mar)
  1. Dispositivos lógicos programáveis.
  2. Bases da linguagem VHDL.
  3. Tipos de dados, libraries, conversão de tipos, operadores, atributos.
  4. Código VHDL concorrente e sequencial.
  5. Projeto hierárquico.
  6. Simulação e Testbench
  7. Maquina de estado finita (FSM).
  8. Projeto Final de circuitos lógicos.
  9. Avaliações.
  • Introdução aos dispositivos lógicos programáveis:
  • Conceito, tipos de PLDs
  • SPLD: PAL, PLA e GAL
  • CPLDs
Ver pag. 413 a 422 de [1]
Ver pag. 495 a 499 de [2]
Aula 2 (28 Mar)
  • Introdução aos dispositivos lógicos programáveis:
  • Arquitetura de FPGAs (Xilinx e Altera): CLB, LAB, RAM, DSP, Clock, PLL, I/O
  • Fabricantes de DLPs
  • 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]

Unidade 2

Aula 3 e 4 (30-31 Mar) - Introdução ao VHDL e ambienta EDA - QUARTUS
  • Exemplo de programação de um full adder.
Utilize os arquivos full_adder.qar
  • Estrutura do código VHDL
  • Libraries, Entity, Architecture
  • Exemplo 2.2 (VHDL) - programação de um flip-flop
 LIBRARY ieee;
 USE ieee.std_logic_1164.all;

 ENTITY flip_flop IS
  PORT (d, clk, rst: IN STD_LOGIC;
   q: OUT STD_LOGIC);
 END;

 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 1 - 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 - Technology Map do Exemplo 2.2
ChipPlanner Ex2 2 Pedronib.png
Figura 3 - Chip Planner do Exemplo 2.2


  • 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 4 - 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]
Aula 5 (4 Abr)
  • Introdução ao VHDL.
  • Exemplo de decodificador de endereço genérico
ENTITY address_decoder IS
	GENERIC (N: NATURAL := 2);
	PORT (
		address: IN NATURAL RANGE 0 TO 2**N-1;
		ena: BIT;
		word_line: OUT BIT_VECTOR(2**N-1 DOWNTO 0));
END ENTITY;
 
ARCHITECTURE ad_arch1 OF address_decoder IS
BEGIN
	gen: 	FOR i IN address'RANGE GENERATE
				word_line(i) <= '1' WHEN ena='0' ELSE
							 '0' WHEN i=address ELSE
							 '1';
			END GENERATE;
END ARCHITECTURE;

ARCHITECTURE ad_arch2 OF address_decoder IS
	signal word_tmp: BIT_VECTOR(2**N-1 DOWNTO 0);
BEGIN
	word_line <= (others => '1') WHEN ena='0' ELSE word_tmp;
	gen: 	FOR i IN address'RANGE GENERATE
				word_tmp(i) <= '0' WHEN i=address ELSE '1';
			END GENERATE;
END ARCHITECTURE;

CONFIGURATION ad_conf OF address_decoder is
	FOR ad_arch1 END FOR;
END CONFIGURATION;
  • Utilize Family = Cyclone e Device = EP1C4F400C6
  • Observe que o uso de um valor GENERIC permite criar diferentes tamanhos de hardware de forma muito simples.
  • Usando N = 2, verifique o RTL e o TECHNOLOGY MAP obtido para as duas ARCHITECTURES {ad_arch1, ad_arch2}. A função do CONFIGURATION é definir qual das ARCHITECTURE será associada a ENTITY.
RTL Ex2 4 Pedronib.png
Figura 5 - Código RTL do Exemplo 2.4 (N=2)
TM Ex2 4 Pedronib.png
Figura 6 - Technology Map do Exemplo 2.4 (N=2)
  • Comente a linha (word_line <= (others => '1') WHEN ena='0' ELSE word_tmp;) e veja o RTL obtido.
  • Verifique o RTL gerado para os casos de N = 2, 3, 4, 8. Perceba que o número de pinos necessário cresce exponencialmente com N. Use o [Processing > Compilation Report] e anote o número de pinos usados, o número de elementos lógicos e o tempo de propagação do caminho crítico (TimeQuest Timing Analyser > Datasheet Report > Propagation Delay).
  • Restrinja o tempo de propagação entre entrada(s) e saída(s). Para isso é necessário acrescentar ao projeto um arquivo .sdc (Synopsys Design Constraints File). No exemplo abaixo é inserida um restrição de máximo atraso (set_max_delay) entre todas as portas de entradas para todas as portas de saída de 15 ns. Para inserir esta restrição crie um arquivo sdc1.sdc com o seguinte conteúdo:
set_max_delay -from [get_ports *] -to [get_ports *]  15
Experimente restringir o tempo máximo atraso em 11ns, 8ns, 6ns e observe o resultado da compilação. Observe o Chip Planner e também o tempo de propagação.
Ver pag. 22 a 30 de [2]

Unidade 3

Aula 6 (6 Abr)
  • Tipos de Dados em VHDL.
  • Objetos de VHDL: CONSTANT, SIGNAL, VARIABLE, FILE.
  • Palavra chave OTHERS
  • Bibliotecas padrão.
  • ATENÇÃO!!! Não use as bibliotecas que não são padrão (std_logic_arith, std_logic_unsigned, std_logic_signed)
Ver pag. 31 a 39 de [2]
Aula 7 (11 Abr)
  • Tipos de Dados em VHDL.
  • 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]
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 [2]
Aula 9 (14 Abr)
  • Qualificação de tipos, conversão de tipos (automática, casting e funções de conversão).
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;
  • Exercício:
  • Implementar em VHDL um circuito que efetue a operação , utilizando portas do tipo INTEGER para valores de entrada e com sinal e ocupando 4 bits, utilize na saída 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 , e . Note que para valores maiores de entrada e pode ocorrer overflow devido a limitação do número de bits da saída.
Ver pag. 73 a 78 de [2]
Aula 10 (23 Out)
  • Operadores em VHDL.
  • Operadores predefinidos: Atribuição, Lógicos, Arithmé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)
Ver pag. 91 a 104 de [2]

Avaliações

  • Avaliação A1 - Unidade 2 a 4 (XX/XX/2016) - Local: Lab Programação.
  • Avaliação A2 - Unidade 5 a 8 (XX/XX/2016) - Local: Lab Programação.
  • Recuperação R1-2 - Unidade 2 a 6 e 8 (XX XXX 2016) - Local: Lab Programação.
As avaliações são com consulta a todo tipo de material impresso ou digital. O aluno tem 5 minutos para preparar o computador depois disso a rede será desconectada.
Ao final do avaliação o aluno deverá enviar para o email do professor os arquivos solicitados.
  • Entrega dos diversos trabalhos ao longo do semestre AE1 a AE(N-1).
  • Projeto Final AE(N). Tem peso equivalente a duas avaliações, sendo avaliado nos quesitos: 1) Implementação do Sistema, 2) Documentação, 3) Avaliação Global do aluno no projeto.

Atividades extra

Neste tópico serão listadas as atividades extras que os alunos da disciplina deverão realizar ao longo do curso. É importante observar o prazo de entrega, pois os conceitos serão reduzidos conforme o atraso na entrega. Para a entrega no prazo os conceitos possíveis são (A, B, C, D). Entrega com até uma semana de atraso (B, C, D). Entrega com até duas semanas de atraso (C ou D). Entrega com mais de duas semanas de atraso (D).

PARA ENTREGAR

AE1 - Temas relacionados aos FPGAs (Prazo de entrega: 9 Maio 2016)
  • Formar equipes com 2 ou 3 alunos, e em conjunto façam uma pesquisa sobre um dos temas abaixo, relacionados aos DLPs.
TEMA 1 - Arquitetura FPGAs e CPLDs da ALTERA (Maria, Helen André)
TEMA 2 - Aplicações de FPGA (Katharine, Kristhine, Leticia)
TEMA 3 - Aplicações em Avionic (Lucas, Gabriel, Thiago)
TEMA 4 - Aplicações na Área Espacial (Fabiano, Marcos, Iago).
TEMA 5 - Arquitetura FPGAs e CPLDs da XILINK (Gustavo, Tamara, Anderson).
INSPIRAÇÃO para temas:
  • Escrever um relatório na forma de artigo com 4 a 6 paginas A4.
  • 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 - AE1 - Temas relacionados aos FPGAs.
  • O artigo deve ser completo, incluindo todas as referências utilizadas.
  • Dê um título coerente ao artigo. Seja criativo...
  • Veja alguns artigos de semestres anteriores em: ARTIGOS DE SEMESTRES ANTERIORES
AE2 - Operações Aritméticas Básicas em VHDL (Prazo de entrega: 28 Abril 2016)
  • Formar equipes com 2 ou 3 alunos.
  • Escreva um código VHDL para cada uma das operações matemáticas indicadas abaixo. Para facilitar os testes, utilize como base o seguinte código, no qual é realizada o cálculo da multiplicação de números UNSIGNED de N=4 bits:
LIBRARY ieee;
USE ieee.numeric_std.all;
----------------------------------------
ENTITY calcular IS
GENERIC (N: NATURAL := 4);
PORT (
	a, b: IN UNSIGNED(N-1 DOWNTO 0);  -- N bits
	y: OUT UNSIGNED(2*N-1 DOWNTO 0));  -- 2N bits
END ENTITY;
----------------------------------------
ARCHITECTURE arch_op OF calcular IS
BEGIN
	y <= a * b;
END ARCHITECTURE;
----------------------------------------

Outras operações matemáticas: y <= a + b; -- se entrada tem N bits saída deve ter N bits. y <= a - b; -- se entrada tem N bits saída deve ter N bits. y <= a * b; -- se entrada tem N bits saída deve ter 2*N bits. y <= a / b; -- se entrada tem N bits saída deve ter N bits. </syntaxhighlight>

  • Comparar o hardware necessário para implementar os circuitos utilizando as seguintes famílias de FPGA [CYCLONE & STRATIX II & MAX 3000]. Utilize sempre o menor Device de cada família, que possua os elementos e pinos suficientes para o circuito proposto.
  • Compilar cada circuito utilizando N= 4, 8, 16 e 32, e utilizando os sinais de entrada e saída do tipo SIGNED e depois também com o tipo UNSIGNED.
  • Teste cada um dos circuitos 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), multiplicadores usados, maior atraso de propagação, e 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)
  • Escreva um relatório técnico na forma de artigo com 4 a 6 paginas A4. O relatório além das tabelas com os dados, as figuras dos circuitos RTL com entrada de 8 bits, simulações funcionais com entrada de 8 bits e uma análise textual dos resultados obtidos. Um arquivo ZIP com o QAR dos projetos 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), com o ASSUNTO: DLP29006 - AE2 - Operações Aritméticas Básicas em VHDL.

JÁ ENCERRADAS

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 2
  • Resolva os exercícios do capítulo 2 (1, 2, 3) pag. 28 a 30
Exercise 2.1
Multiplexer:
  • Complete o código VHDL abaixo para que ele seja correspondente a um multiplexador que selecione a entrada A quando sel ="01", B quando sel ="10", coloque "0...0" na saída quando sel ="00" e mantenha a saída em alta impedância "Z...Z" quando sel="11".
  • Compile o código e em seguida faça a simulação, para verificar se o circuito funciona conforme

especificado.

  • Anote as mensagens de warning do compilador.
---------------------------------------
-- File: mux.vdh
---------------------------------------
-- Declaração das Bibliotecas e Pacotes 
--
LIBRARY ieee;
USE _________________________ ;

---------------------------------------
-- Especificação das entradas e saídas e nome da ENTITY
ENTITY mux IS
  PORT ( 
   __ , __ : ___ STD_LOGIC_VECTOR (7 DOWNTO 0);
   sel : IN ____________________________ ;
   ___ : OUT STD_LOGIC_VECTOR (7 DOWNTO 0));
END _____ ;
---------------------------------------
ARCHITECTURE example OF _____ IS
BEGIN
  PROCESS (a, b, ____ )
  BEGIN
    IF (sel = "00") THEN
      c <= "00000000";
    ELSIF (__________) THEN
      c <= a;
    _____ (sel = "10") THEN
      c <= __;
    ELSE
      c <= (OTHERS => '__');
    END ___ ;
  END _________ ;
END _________ ;
---------------------------------------
AL2 - Conversor de Binário para BCD
  • Para o exercício 4.17 escreva um código VHDL e analise o número de elementos lógicos necessários. Compare sua implementação com os outros estudantes e analise as diferenças, observe o código RTL.
Para separar os dígitos decimais do número de entrada utilize operadores de "/", "REM" ou "MOD".
Para facilitar os testes e a troca de informações entre as equipes, a ENTITY deverá ter o seguinte formato:
entity bin2bcd is
	port (
		X_bin	        : in std_logic_vector(9 downto 0);
		C_bcd		: out std_logic_vector(3 downto 0);
		D_bcd		: out std_logic_vector(3 downto 0);
		U_bcd		: out std_logic_vector(3 downto 0));

end entity;
Note que com X_bin 10 bits é possível representar números sem sinal entre 0 e . No entanto, os testes devem ser limitados a números entre 000 e 999, pois não há especificação para valores maiores que 999.
Existe um algoritmo Double Dabble que possibilita fazer essa conversão com menos hardware.


ARTIGOS ENTREGUES

2015-2
2015-1

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


Padrões IEEE para o VDHL

Os padrões IEEE [3]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 2,7 2,8 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