DLP1-EngTel (página)
MURAL DE AVISOS E OPORTUNIDADES DA ÁREA DE TELECOMUNICAÇÕES
- Link curto http://bit.ly/IFSC-DLP29006
- Carga horária, Ementas, Bibliografia, Professores
- Cronograma de atividades
- Plano de Ensino
Registro on-line das aulas
Unidade 1
- Aula 1 (23 Mar)
- Dispositivos lógicos programáveis.
- Bases da linguagem VHDL.
- Tipos de dados, libraries, conversão de tipos, operadores, atributos.
- Código VHDL concorrente e sequencial.
- Projeto hierárquico.
- Simulação e Testbench
- Maquina de estado finita (FSM).
- Projeto Final de circuitos lógicos.
- Avaliações.
- Introdução aos dispositivos lógicos programáveis:
- Conceito, tipos de PLDs
- SPLD: PAL, PLA e GAL
- CPLDs
- 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. 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;
- Após a criação do projeto em VHDL utilizando a descrição de hardware acima, compile o código VHDL.
- Use o RTL Viewer para ver a descrição RTL do circuito.
- 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)
- Abra o Chip Planner e observe no Node Properties como esse circuito é conectado dentro do dispositivo FPGA selecionado
- 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.
- 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.
- 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).
- 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
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]
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) |
---|
|
AE2 - Operações Aritméticas Básicas em VHDL (Prazo de entrega: 28 Abril 2016) |
---|
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:
|
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 |
---|
especificado.
---------------------------------------
-- 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 _________ ;
---------------------------------------
|
ARTIGOS ENTREGUES
- 2015-2
- DLPs: passado, presente e futuro (Walter Cardoso de Freitas Júnior, Gustavo Vieira Zacchi, Giulio Oliveira)
- Transitores CMOS, história e tecnologia (Fernando Müller da Silva, Gustavo Paulo Medeiros da Silva)
- Linguagens de Descrição de Hardware: Tipos e Características (João Vitor Rodrigues, Marcus Vinicius Bunn)
- Fabricantes e ferramentas para programação de DLPs (Ronaldo João Borges, Roicenir Girardi Rostirolla)
- Interface JTAG (Stephany Padilha Guimarães, Lucas Gomes de Farias, Vinicius Bandeira)
- 2015-1
- Formas como PLDs são Programados
- EPROM - EEPROM Dispositivos Lógicos Programáveis
- Aplicações de antifusíveis e PROMs na programação de PDLs
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).
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
- Aritmética com vetores em VDHL
- Preparando para gravar o circuito lógico no FPGA
- Dicas de como eliminar o repique das chaves mecânicas
- Materiais da ALTERA para Quartus II 13.1
- Modelo para uso em relatórios
- Configuração e uso do Time Quest Analyser
- Configuração e uso do Signal Tap
- DLP29006-Engtelecom(2015-1) - Prof. Marcos Moecke
- DLP29006-Engtelecom(2015-2) - Prof. Marcos Moecke
Livros/Resumos sobre VHDL
- Regras de codificação em VHDL
- VHDL Handbook - Hardi (apenas VHDL’87 e VHDL’93)
- VHDL Math Tricks of the Trade by Jim Lewis
- VHDL QUICK REFERENCE CARD - Qualis (r2.1)
- VHDL 1164 PACKAGES QUICK REFERENCE CARD - Qualis (r2.2)
- Listagem dos packages
- Palavras reservadas
- Atributos predefinidos
- Aritmética em VHDL
Packages não padronizados
- Std logic arith.vhd by Synopsys
- std_logic_arith.vhd by Synopsys
- std_logic_arith.vhd by Mentor Graphics
- std_logic_arith.vhd by Vinaya
- Std logic unsigned.vdh by Synopsys
- std_logic_unsigned.vhd by Synopsys
Simulador Modelsim
- Site Mentor Graphics - Software Version 10.0
- ModelSim InfoHub - Software Version v10.2c
- ModelSim Quick Video Demo - precisa fazer login na Mentor Graphics.
- ModelSim® Tutorial -v10.0d
- ModelSim® Reference Manual -v10.0d
- ModelSim® User’s Manual -v10.0d
- ModelSim® Quick Guide -v10.0d
- ModelSim® SE GUI Reference Manual -v10.2c
Fabricantes de DLPs
- Altera, new Altera
- Xilinx, PLDs
- Lattice
- Microsemi
- Atmel
- Achronix
- Tabula, Who killed the FPGA startup Tabula semiconductor?
- Market share 2013
- INTEL
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
- IEEE Standard Multivalue Logic System for VHDL Model Interoperability (Std_logic_1164)
- IEEE Std 1076.1: Behavioural languages – Part 1-1: VHDL language reference manual
- IEEE Std 1076.1: Behavioural languages – Part 6: VHDL Analog and Mixed-Signal Extensions
- IEEE Std 1076.1.1™-2011 - IEEE Standard for VHDL Analog and Mixed-Signal Extensions—Packages for Multiple Energy Domain Support, REDLINE
- IEEE Standard for VHDL Register Transfer Level (RTL) Synthesis
- IEEE Standard VHDL Analog and Mixed-Signal Extensions
- IEEE Standard VHDL Synthesis Packages
- IEEE Std 1076-2002: IEEE Standard VHDL Language Reference Manual
- IEEE Std 1076.2-1996: IEEE Standard VHDL Mathematical Packages
Packages da IEEE
Referências Bibliográficas: