Mudanças entre as edições de "DLP1-EngTel (página)"
Linha 202: | Linha 202: | ||
::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=== | ||
+ | ;Aula 5 (25 Ago): | ||
+ | *Tipos de Dados em VHDL. | ||
+ | :*Objetos de VHDL: CONSTANT, SIGNAL, VARIABLE, FILE. | ||
+ | :*Palavra chave OTHERS | ||
+ | :* 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. 31 a 39 de <ref name="PEDRONI2010b"/> | ||
+ | :: Ver pag. 39 a 51 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== | ||
Linha 511: | Linha 652: | ||
{{collapse bottom}} | {{collapse bottom}} | ||
--> | --> | ||
− | |||
==Recursos de Laboratório== | ==Recursos de Laboratório== |
Edição das 07h30min de 25 de agosto de 2016
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 (11 Ago)
- Introdução aos dispositivos lógicos programáveis:
- Conceito, tipos de PLDs
- SPLD: PAL, PLA e GAL
- CPLDs
Exemplos de PLDs |
---|
|
- 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
- Aula 3 (18 Ago)
-
- Fabricantes de DLPs/FPGAs e familias de DLPs atuais.
- Preços
- Historia, processo de produção dos chips.
- A Brief History of the Fabless Semiconductor Industry
- Taiwan Semiconductor Manufacturing Corporation (TSMC), [http://www.globalfoundries.com/ GLOBALFOUNDRIES
- Fabless: The Transformation of the Semiconductor Industry, 2014 - Download free
- 14nm FinFET Technology, Samsung & Globalfounfries, Funcionamento do FinFET, Produção do FinFET, [1]
- Processo de fabricação de um chip
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;
- 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
- 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.
- 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
- 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
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): XX Agosto 2016, Prazo de entrega do artigo: XX setembro 2016) |
---|
|
ARTIGOS ENTREGUES
- 2016-2
- 2016-1
- Arquitetura FPGAs e CPLDs da ALTERA (André Felippe Weber, Helenluciany Cechinel, Maria Luiza Theisges)
- Aplicações de FPGA em Robótica (Letícia Aparecida Coelho, Katharine Schaeffer Fertig, Kristhine Schaeffer Fertig)
- FPGA aplicado a aviônica: Problemas e soluções (Gabriel Cantu, Lucas Lucindo, Thiago Grisolfi)
- Aplicações na Área Espacial (Marcos Vinicios Pinho, Fabiano Kraeamer, Iago Soares)
- Arquitetura FPGAs e CPLDs da XILINK (Anderson Demetrio, Gustavo Constante, Tamara Arrigoni)
- 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
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).
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
- Dicas para resolver ERROS de síntese do VHDL no Quartus II
- 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
- DLP29006-Engtelecom(2016-1) - 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)
- VDHL ref
- 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
Leituras recomendadas
- USE OF FIELD PROGRAMMABLE GATE ARRAY TECHNOLOGY IN FUTURE: SPACE AVIONICS, Roscoe C. Ferguson, Robert Tate, NASA.
- Expect a Breakthrough Advantage in NextGeneration FPGAs, Stephen Lim, ALTERA.
- A Reconfigurable Fabric for Accelerating Large-Scale Datacenter Services, Microsoft.
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
- 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: