|
|
(99 revisões intermediárias por 2 usuários não estão sendo mostradas) |
Linha 2: |
Linha 2: |
| *Link curto http://bit.ly/IFSC-DLP29006 | | *Link curto http://bit.ly/IFSC-DLP29006 |
| *[[DLP1-EngTel|Carga horária, Ementas, Bibliografia, Professores]] | | *[[DLP1-EngTel|Carga horária, Ementas, Bibliografia, Professores]] |
− | *[[Cronograma de atividades (DLP1-EngTel) | Cronograma de atividades ]]
| |
| *[[DLP1-EngTel (Plano de Ensino) | Plano de Ensino]] | | *[[DLP1-EngTel (Plano de Ensino) | Plano de Ensino]] |
− | ==Registro on-line das aulas== | + | == Avisos importantes== |
− | ===Unidade 1===
| + | *A documentação das aulas será disponibilizada na página da [[DLP29006-Engtelecom (Diário) - Prof. Marcos Moecke | '''Wiki diária da disciplina'''.]]. |
− | ;Aula 1 (11 Ago):
| |
− | *[[DLP1-EngTel (Plano de Ensino) | Apresentação da disciplina]] | |
| | | |
− | *Introdução aos dispositivos lógicos programáveis: | + | * Nesta página wiki, você tem orientações para uso de ferramentas e também links que auxiliam no estudo da disciplina. Visite os links sempre que solicitado e lei essa página para lembrar futuramente onde estão as informações que necessita. |
− | :* Conceito, tipos de PLDs
| |
− | ::* SPLD: PAL, PLA e GAL
| |
− | ::* CPLDs
| |
− | {{collapse top | Exemplos de PLDs}}
| |
− | <center>[[Arquivo:ep310_macrocell.jpg| 400 px]] </center>
| |
− | <center> Figura 1.1 - Macrobloco do PLD EP300 da ALTERA </center>
| |
− | <center>FONTE: https://www.altera.com/solutions/technology/system-design/articles/_2013/in-the-beginning.html</center>
| |
− | | |
− | <center>[[Arquivo:Macrocell_EP900.png| 400 px]] </center>
| |
− | <center> Figura 1.2 - Macrocélula dos PLDs Clássicos EP600, EP900, EP1800 da ALTERA (1999) </center>
| |
− | <center> FONTE: https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ds/archives/classic.pdf</center>
| |
− | | |
− | <center>[[Arquivo:ep1800_block_diagram.jpg| 400 px]] [[Arquivo:ep1800_block_diagram2.jpg| 400 px]] </center>
| |
− | <center> Figura 1.3 - Architetura do PLD EP1800 da ALTERA </center>
| |
− | <center> FONTE: https://www.altera.com/solutions/technology/system-design/articles/_2013/in-the-beginning.html</center>
| |
− | <center> FONTE: https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ds/archives/classic.pdf</center>
| |
− | | |
− | <center>[[Arquivo:PackagePinOut_EP1810.png| 400 px]] [[Arquivo:ChipEP1810.png| 200 px]] </center>
| |
− | <center> Figura 1.5 - Pinagem e tipos de encapsulamento do PLD EP1800 da ALTERA </center>
| |
− | <center> FONTE: https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ds/archives/classic.pdf</center>
| |
− | <center> FONTE: http://alasir.com/software/multisound/multisound_tahiti.jpeg </center>
| |
− | | |
− | <center>[[Arquivo:max_5000_architecture.jpg| 400 px]] </center>
| |
− | <center> Figura 1.6 - Architetura do CPLD MAX 5000 da ALTERA </center>
| |
− | <center> FONTE: https://www.altera.com/solutions/technology/system-design/articles/_2013/in-the-beginning.html</center>
| |
− | {{collapse bottom}}
| |
− | ::Ver [https://www.dropbox.com/s/wvl3cudgcpchstr/ARTIGO_ACADEMICO_DLP.pdf?dl=0 Dispositivos Lógicos Programáveis] - Kamila Rose da Silva, IFSC
| |
− | ::Ver [https://www.altera.com/solutions/technology/system-design/articles/_2013/in-the-beginning.html In the befinning] - ALTERA
| |
− | ::Ver [https://www.altera.com/about/company/history.html ALTERA history]
| |
− | ::Ver pag. 413 a 422 de <ref name="PEDRONI2010a"> PEDRONI, Volnei A. Eletrônica digital moderna e VHDL; 1ª ed. Rio de Janeiro:Elsevier, 2010. 619p. . ISBN 9788535234657 </ref>
| |
− | ::Ver pag. 495 a 499 de <ref name="PEDRONI2010b"> PEDRONI, Volnei A. '''Circuit Design and Simulation with VHDL'''; 2ª ed. Massachusetts-EUA:MIT, 2010. 608 p. ISBN 9780262014335 </ref>
| |
− | | |
− | ;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
| |
− | ::*[[Conhecendo os dispositivos lógicos programáveis]]
| |
− | :* Vizualização no Chip Planner de um projeto. (importante todos alunos terem acesso a [[IFSC-CLOUD]]
| |
− | ::Ver pag. 419 a 431 de <ref name="PEDRONI2010a" />
| |
− | ::Ver pag. 499 a 501 de <ref name="PEDRONI2010b" />
| |
− | ::Ver pag. 418 a 429 de <ref name="PEDRONI2010a"> PEDRONI, Volnei A. Eletrônica digital moderna e VHDL; 1ª ed. Rio de Janeiro:Elsevier, 2010. 619p. . ISBN 9788535234657 </ref>
| |
− | | |
− | ;Aula 3 (18 Ago):
| |
− | :* Fabricantes de DLPs/FPGAs e familias de DLPs atuais.
| |
− | ::*[https://www.altera.com/products/fpga/overview.html ALTERA] - Stratix, Arria, Cyclone, Max
| |
− | ::*[https://www.xilinx.com/products/silicon-devices/fpga.html Xilinx] - Virtex, Kintex, Artix, Zynq (SoC)
| |
− | ::*[http://www.microsemi.com/products/fpga-soc/fpgas Microsemi] - Igloo
| |
− | ::*[http://www.latticesemi.com/Products.aspx#_D5A173024E414501B36997F26E842A31 Lattice] - ECP, iCE, Mach
| |
− | :* Preços
| |
− | ::* [https://www.altera.com/buy/devices.html ALTERA], [https://www.arrow.com/en/products/search?prodLine=FPGAs&q=FPGA ARROW],[http://www.digikey.com/product-search/en/integrated-circuits-ics/embedded-fpgas-field-programmable-gate-array/2556262?k=fpga Digikey]
| |
− | :* Historia, processo de produção dos chips.
| |
− | ::*[https://www.semiwiki.com/forum/content/1535-brief-history-fabless-semiconductor-industry.html A Brief History of the Fabless Semiconductor Industry]
| |
− | ::*[http://www.semiwiki.com/forum/content/1539-brief-history-tsmc.html Taiwan Semiconductor Manufacturing Corporation (TSMC)], [http://www.globalfoundries.com/ GLOBALFOUNDRIES
| |
− | ::*[https://www.linkedin.com/pulse/free-copy-fabless-transformation-semiconductor-industry-daniel-nenni-1 Fabless: The Transformation of the Semiconductor Industry, 2014] - Download free
| |
− | ::*[https://en.wikipedia.org/wiki/14_nanometer 14nm FinFET Technology], [https://www.youtube.com/watch?v=gLPscTDAaZU Samsung & Globalfounfries], [https://www.youtube.com/watch?v=Jctk0DI7YP8 Funcionamento do FinFET], [https://www.youtube.com/watch?v=W3rfVpkNquA Produção do FinFET], [https://www.youtube.com/watch?v=d9SWNLZvA8g]
| |
− | ::*[https://www.youtube.com/watch?v=UvluuAIiA50 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'''
| |
− | <i>
| |
− | library library_name;
| |
− | use library_name.package)name.all;
| |
− | </i>
| |
− | | |
− | :* '''ENTITY'''
| |
− | <i>
| |
− | 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];
| |
− | </i>
| |
− | | |
− | :* '''ARCHITECTURE'''
| |
− | <i>
| |
− | architecture arch_name of entity_name is
| |
− | [declarative_part]
| |
− | begin
| |
− | statement_part
| |
− | end [architecture] [arch_name];
| |
− | </i>
| |
− | * Exemplo - Declaração de uma porta NAND em VHDL
| |
− | <syntaxhighlight lang=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;
| |
− | </syntaxhighlight>
| |
− | | |
− | <!--
| |
− | <center>[[Arquivo:VHDL_nand_gate.png| 400 px]]</center>
| |
− | <center> Figura 2.1 - Declaração de uma porta NAND em VHDL </center>
| |
− | -->
| |
− | | |
− | * Exemplo 2.2 (VHDL) - programação de um flip-flop
| |
− | <syntaxhighlight lang=vhdl>
| |
− | -- 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;
| |
− | </syntaxhighlight>
| |
− | :* 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.
| |
− | | |
− | <center>[[Arquivo:RTL_Ex2_2_Pedronib.png| 400 px]]</center>
| |
− | <center> Figura 2.2 - Código RTL do Exemplo 2.2 </center>
| |
− | | |
− | :* 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)
| |
− | | |
− | <center>[[Arquivo:TM_Ex2_2_Pedronib.png| 400 px]]</center>
| |
− | <center> Figura 2.3 - Technology Map do Exemplo 2.2 </center>
| |
− | | |
− | :* Abra o [[Chip Planner]] e observe no [[Node Properties]] como esse circuito é conectado dentro do dispositivo FPGA selecionado
| |
− | | |
− | <center>[[Arquivo:ChipPlanner_Ex2_2_Pedronib.png| 400 px]]</center>
| |
− | <center> Figura 2.4 - Chip Planner do Exemplo 2.2 </center>
| |
− | | |
− | ;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
| |
− | <syntaxhighlight lang=vhdl>
| |
− | 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;
| |
− | </syntaxhighlight>
| |
− | :: 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.
| |
− | | |
− | <center>[[Arquivo:RTL_Ex2_3_Pedronib.png | 400 px]] </center>
| |
− | <center> Figura 2.5 - Código RTL do Exemplo 2.3 </center>
| |
− | | |
− | ::Para conhecer melhor o ambiente do simulador QSIM veja [[Arquivo:Quartus_II_Simulation.pdf | Introduction to Simulation of VHDL Designs]] da ALTERA.
| |
− | | |
− | ::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
| |
− | :: Ver pag. 31 a 35 de <ref name="PEDRONI2010b"/>
| |
− | | |
− | ;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 <ref name="PEDRONI2010b"/>
| |
− | :* 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):
| + | ==Instalação da VM com Quartus e Modelsim em seu computador== |
| | | |
− | *Tempo livre para implementar/testar o [EL3 - Conversor de Binário para BCD].
| + | Para importar a VM para o seu computador e configurar ela para acessar a licença do IFSC veja a página [[Teste de VM para uso pelos alunos no ensino remoto#VM Quartus e Modelsim | Instalação da VM com Quartus e Modelsim]] |
| --> | | --> |
− |
| |
− | ===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 ():
| |
− | *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 ():
| |
− | *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 ():
| |
− | *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 18 a 19 ():
| |
− | *Código Concorrente.
| |
− | * Relógio HH:MM:SS
| |
− |
| |
− | ;Aula 20 a 21 ():
| |
− | * Simulação com Modelsim
| |
− | :*Exemplo do Relógio HH:MM:SS
| |
− |
| |
− | ;Aula 22 ():
| |
− | *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 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.
| |
− |
| |
− |
| |
| <!-- | | <!-- |
− | ===Unidade 6=== | + | ==Instalar o Quartus II e Modelsim em seu computador== |
− | ; Aula 26 (6 Jun):
| + | A princípio não será necessário que vocês instalem o Quartus II diretamente em suas maquinas, pois podem utilizar a nuvem do IFSC ou então instalar a VM acima. Mesmo assim se alguém preferir instalar o Quartus recomendo que instalem a versão Quartus II Web Edition. |
− | *Projeto a nível de Sistema.
| |
− | :* O '''PACKAGE''' e '''PACKAGE BODY''': onde declarar e como usar.
| |
− | :* O '''COMPONENT''': declaração (cópia da '''ENTITY''') e instanciação.
| |
− | ::* Associação dos nomes das portas aos sinais. PORT -> '''PORT MAP''':
| |
− | ::* Mapeamento por posição e nominal.
| |
− | ::* Métodos de declaração de '''COMPONENT'''.
| |
− | :::*Exemplo: Registrador Circular Ex. 8.2
| |
− | :* Ver pag. 201 a 208 de <ref name="PEDRONI2010b"/>
| |
− | | |
− | | |
− | *Resolução dos exercícios:
| |
− | :*Ex 6.7 (Ordenador Binário) Tamara Arrigoni
| |
− | | |
− | ; Aula 27 (8 Jun):
| |
− | *Projeto a nível de Sistema.
| |
− | :* Criação de '''COMPONENT''' redimensionáveis. GENERIC -> '''GENERIC MAP'''
| |
− | ::*Exemplo: Porta E com N entradas.
| |
− | ::*Exemplo: Detector de Paridade Ex. 8.3
| |
− | :* Instanciação de '''COMPONENT''' com '''GENERATE'''.
| |
− | ::*Exemplo: Registrador de deslocamento M x N Ex. 8.4
| |
− | :* Ver pag. 208 a 213 de <ref name="PEDRONI2010b"/>
| |
− | | |
− | ; Aula 28 (13 Jun):
| |
− | *Projeto a nível de Sistema.
| |
− | :* Uso da instrução '''CONFIGURATION'''.
| |
− | ::* Ligação direta: ARCHITECTURE-ENTITY.
| |
− | ::* Ligação da instanciação dos componentes: COMPONENT-ENTITY(ARCHITECTURE).
| |
− | ::*Exercício 28.1: Inserir as duas soluções de ARCHITECTURE do exercício EX 6.10 (Timer de dois digitos) em uma única ENTITY. Utilizar CONFIGURATION para fazer a ligação com a arquitetura desejada.
| |
− | | |
− | <syntaxhighlight lang=vhdl>
| |
− | entity counter60seg is
| |
− | generic (fclk: integer := 2); -- valor usado para simulação.
| |
− | -- generic (fclk: integer := 50_000_000); -- valor usado para implementação com clk de 50 MHz.
| |
− | port (
| |
− | clk, rst : in std_logic;
| |
− | ssd_un, ssd_dz: out std_logic_vector(6 downto 0));
| |
− | end entity ;
| |
| | | |
− | architecture version1 of counter60seg is
| + | Apesar de existirem versões mais novas usem a versão mais leve 13.1. (https://fpgasoftware.intel.com/13.1/?edition=web). Será necessário apenas baixar e instalar os seguintes arquivos: |
− | -- Versão proposta por Gabriel Cantu (processo único)
| + | * Quartus II Software (includes Nios II EDS) Size: 1.5 GB MD5: 672AD34728F7173AC8AECFB2C7A10484 |
− | ...
| + | * ModelSim-Altera Edition (includes Starter Edition) Size: 817.7 MB MD5: 45FEA341405603F5CF5CD1249BF90976 |
− | begin
| + | * Cyclone III, Cyclone IV device support (includes all variations) Size: 548.4 MB MD5: 79AB3CEBD5C1E64852970277FF1F2716 |
− | ...
| |
− | end architecture ;
| |
| | | |
− | architecture version2 of counter60seg is
| + | * '''Esse vídeo aqui explica os passos do download [https://www.youtube.com/watch?v=4GgZ850h9Lg&feature=youtu.be&t=58 Download e instalação do Quartus Web Edition] |
− | -- Versão proposta por Gustavo Constante (5 processos)
| + | ''' |
− | ...
| |
− | begin
| |
− | ...
| |
− | end architecture ;
| |
− | | |
− | configuration counter60seg_cfg of counter60seg is
| |
− | for version1 end for;
| |
− | -- for version2 end for;
| |
− | end configuration;
| |
− | | |
− | </syntaxhighlight>
| |
− | :* Exercício 28.2: Componentização do circuito conversor de binário para display de sete segmentos. Também modifique a descrição vhdl de modo que a interface dos componentes sejam do tipo '''std_logic''' ou '''std_logic_vector'''.
| |
− | <syntaxhighlight lang=vhdl>
| |
− | entity bin2ssd is
| |
− | port (
| |
− | bin: in std_logic_vector(3 downto 0);
| |
− | ssd: out std_logic_vector(6 downto 0));
| |
− | end entity ;
| |
− | | |
− | architecture with_case of bin2ssd is
| |
− | ...
| |
− | begin
| |
− | ...
| |
− | end architecture ;
| |
− | </syntaxhighlight>
| |
− | | |
− | ; Aula 29 (15 Jun):
| |
− | *Projeto a nível de Sistema.
| |
− | FUNCTION e PROCEDURE (são chamados de subprogramas), e podem ser construidos em um PACKAGE, ENTITY, ARCHITECTURE, ou PROCESS.
| |
− | | |
− | A instrução '''ASSERT''' é útil para verificar as entradas de um subprograma. Seu propósito não é criar circuito, mas assegurar que certos requisitos são atendidos durante a sintese e/ou simulação. Pode ser condicional ou incondicional (condição_booleana = FALSE). A sintaxe da instrução é:
| |
− | | |
− | <syntaxhighlight lang=vhdl>
| |
− | [rótulo:] assert condição_booleana
| |
− | [report mensagem]
| |
− | [severity nivel_severidade];
| |
− | </syntaxhighlight>
| |
− | | |
− | A mensagem pode ser criada usando STRINGs que podem ser concatenadas.
| |
− | | |
− | O nível de severidade pode ser NOTE (para passar informação para o compilador/simulator), WARNING (para informar que algo não usual ocorreu), ERROR (para informar que alguma condição não usual "sério" ocorreu), ou FAILURE (para informar que uma condição não aceitável ocorreu). Normalmente o compilador para quando ocorre um ERROR ou FAILURE. NOTE é o valor "default".
| |
− | | |
− | :* A '''FUNCTION''': declaração, uso, mapeamento posicional x nominal, PURE x IMPURE.
| |
− | | |
− | <syntaxhighlight lang=vhdl>
| |
− | function nome_funçao (lista_parametros_entrada) return tipo_saida is
| |
− | declarações
| |
− | begin
| |
− | afirmações sequenciais
| |
− | end function;
| |
− | </syntaxhighlight>
| |
− | | |
− | :* Uso de '''FUNCTION''' e '''ASSERT'''.
| |
− | ::* Exemplo: Declaração em ARCHITECTURE Ex.9.1
| |
− | ::* Exemplo: Declaração em PACKAGE Ex. 9.2
| |
− | ::* Exemplo: Declaração em ENTITY Ex. 9.3
| |
− | | |
− | | |
− | Abaixo segue um exemplo de cálculo do '''log2''' de um número inteiro. Pode ser usado para determinar o número de bits necessário para um número natural.
| |
− | | |
− | <syntaxhighlight lang=vhdl>
| |
− | function log2c (n : integer) return integer is
| |
− | variable m , p : integer;
| |
− | begin
| |
− | m := 0;
| |
− | p : = 1;
| |
− | while p < n loop
| |
− | m : = m + 1;
| |
− | p := p * 2;
| |
− | end loop;
| |
− | return m;
| |
− | end log2c;
| |
− | </syntaxhighlight>
| |
| --> | | --> |
| | | |
− | ===Unidade 5=== | + | ==Recursos de Laboratório== |
− | ;Aula 20 ():
| + | Nos laboratórios do IFSC, os softwares '''Quartus''' e '''Modelsim''' estão disponíveis diretamente na plataforma LINUX. O laboratório também dispõe de diversos kits FPGA que podem ser programados para testar os sistemas implementados. |
− | *Código Sequencial.
| |
− | :*Diferenças entre código concorrente e sequencial <=> circuitos combinacional e sequencial
| |
− | :*Diferenças entre os objetos SIGNAL e VARIABLE
| |
− | :*Tipos de elementos de memória: Latch x Flip-flop
| |
− | ::* Latch D
| |
− | ::* Flip-flop tipo D com reset assíncrono e com reset (clear) síncrono
| |
− | :*Seção de código sequencial '''PROCESS''': lista de sensibilidade
| |
− | <syntaxhighlight lang=vhdl>
| |
− | [rótulo:] PROCESS [(lista_de_sensibilidade)] [IS]
| |
− | [parte_declarativa]
| |
− | BEGIN
| |
− | afirmação_sequencial;
| |
− | afirmação_sequencial;
| |
− | ...
| |
− | END PROCESS [rótulo];
| |
− | </syntaxhighlight>
| |
− | :*Instrução '''IF'''
| |
− | <syntaxhighlight lang=vhdl>
| |
− | [rótulo:] IF condição THEN
| |
− | afirmação_sequencial;
| |
− | afirmação_sequencial;
| |
− | ...
| |
− | ELSIF condição THEN
| |
− | afirmação_sequencial;
| |
− | afirmação_sequencial;
| |
− | ...
| |
− | ELSE
| |
− | afirmação_sequencial;
| |
− | afirmação_sequencial;
| |
− | ...
| |
− | END IF [rótulo];
| |
− | </syntaxhighlight>
| |
− | ::*Exemplos: DFFs with Reset and Clear (Variação Ex 6.1), Basic Counter (Ex. 6.2), Shift Register (Ex. 6.3)
| |
− | :*Instrução '''WAIT''': WAIT UNTIL, WAIT FOR (simulação apenas), WAIT ON (não implementada no Quartus II).
| |
− | ::Algumas instruções de '''WAIT''' serão utilizadas na criação de '''TestBench''' em VHDL para a simulação com o '''MODELSIM'''.
| |
− | ::Recomenda-se utilizar a lista de sensibilidade do PROCESS e a instrução IF no lugar do WAIT.
| |
− | :*Ver pag. 161 a 160 de <ref name="PEDRONI2010b"/>
| |
| | | |
− | ;Aula 21 ():
| + | ==Acesso a Nuvem do IFSC== |
− | *Código Sequencial.
| + | Para uso fora do IFSC dos recursos computacionais com licença educacional, o IFSC disponibiliza para seus alunos o IFSC-CLOUD (nuvem.sj.ifsc.edu.br). A forma mais eficiente de acesso a nuvem de fora do IFSC é através do Cliente X2GO, mas dentro da rede do IFSC o acesso pelo ssh também tem boa usabilidade. Veja detalhes em [[Acesso ao IFSC-CLOUD (NUVEM)]]. |
− | :*Instruções do tipo '''LOOP''': LOOP incondicional, FOR-LOOP, WHILE-LOOP, NEXT, EXIT
| |
| | | |
− | ::*LOOP incondicional:
| + | Para para utilizar o Quartus/Modelsim/QSIM através da Nuvem do IFSC, siga o procedimento de '''[[Acesso_ao_IFSC-CLOUD_(NUVEM)#Procedimento_para_uso_da_nuvem.sj.ifsc.edu.br | configuração do X2Go]]'''. '''Nota:''' O desempenho do Modelsim pode ficar ruim quando acesso da rede externa ao IFSC. |
− | <syntaxhighlight lang=vhdl>
| |
− | [rótulo:] LOOP | |
− | afirmação_sequencial;
| |
− | afirmação_sequencial;
| |
− | ...
| |
− | END LOOP [rótulo];
| |
− | </syntaxhighlight>
| |
| | | |
− | ::*FOR-LOOP:
| |
− | <syntaxhighlight lang=vhdl>
| |
− | [rótulo:] FOR identificador IN faixa LOOP
| |
− | afirmação_sequencial;
| |
− | afirmação_sequencial;
| |
− | ...
| |
− | END LOOP [rótulo];
| |
− | </syntaxhighlight>
| |
− |
| |
− | ::*WHILE-LOOP:
| |
− | <syntaxhighlight lang=vhdl>
| |
− | [rótulo:] WHILE condição LOOP -- Executa as "afirmações enquanto a "condição" for verdadeira
| |
− | afirmação_sequencial;
| |
− | afirmação_sequencial;
| |
− | ...
| |
− | END LOOP [rótulo];
| |
− | </syntaxhighlight>
| |
− |
| |
− | ::*LOOP com EXIT:
| |
− | <syntaxhighlight lang=vhdl>
| |
− | [rótulo:] [FOR identificador IN faixa] LOOP
| |
− | afirmação_sequencial;
| |
− | EXIT [rótulo] [WHEN condição]; -- Se a "condição" é verdadeira, termina o "LOOP"
| |
− | afirmação_sequencial;
| |
− | ...
| |
− | END LOOP [rótulo];
| |
− | </syntaxhighlight>
| |
− |
| |
− | ::*LOOP com NEXT:
| |
− | <syntaxhighlight lang=vhdl>
| |
− | [rótulo:] [FOR identificador IN faixa] LOOP
| |
− | afirmação_sequencial;
| |
− | NEXT [rótulo] [WHEN condição]; -- Se a "condição" é verdadeira, não executa as linhas até a linha "END LOOP"
| |
− | -- e incrementa o "identificador".
| |
− | afirmação_sequencial;
| |
− | ...
| |
− | END LOOP [rótulo];
| |
− | </syntaxhighlight>
| |
− |
| |
− | ::* Exemplos: Carry-Ripple Adder (FOR-LOOP) (Ex 6.4),
| |
− | :*Ver pag. 161 a 164 de <ref name="PEDRONI2010b"/>
| |
− |
| |
− | ;Aula 22 ():
| |
− | *Código Sequencial.
| |
− | :*Instrução '''CASE'''
| |
− | <syntaxhighlight lang=vhdl>
| |
− | [rótulo:] CASE expressão IS
| |
− | WHEN valor => atribuições; -- valor único
| |
− | ...
| |
− | WHEN valor1 | valor2 | ... | valorN => atribuições; -- lista de valores
| |
− | ...
| |
− | WHEN valor1 TO valor2 => atribuições; -- faixa de valores
| |
− | ...
| |
− |
| |
− | END CASE;
| |
− | </syntaxhighlight>
| |
− | :*Exemplos:
| |
− | ::* Leading Zeros (LOOP com EXIT) (Ex 6.5)
| |
− | ::* Contador de 0 a 9 segundos com saída SSD (Ex 6.6)
| |
− | ::* Projeto ruim com CASE incompleto (Ex. 6.7)
| |
− | :*Exercícios do Capitulo 6
| |
− | :*Ver pag. 164 a 176 de <ref name="PEDRONI2010b"/>
| |
− |
| |
− | ;Aula 23 (20/10):
| |
− | *Código Sequencial.
| |
− | :* Exercícios do Capítulo 6.
| |
− | ::Uso do ModelSim - salvamento do '''wave.do'''
| |
− | ::Divisão dos exercícios entre duplas de alunos.
| |
− | Ex 6.3 - Mateus, Paula, Andrey
| |
− | Ex 6.5 - Bruno, Murilo, Kleiton
| |
− | Ex 6.6 - Henrique, Matias
| |
− | Ex 6.7 - Natália, Luísa
| |
− | Ex 6.10a (incrementando de 00 até XX - Jessica e Letícia
| |
− | Ex 6.10a (decrementando de XX até 00 - Layssa e Alline
| |
− | Ex 6.11 - Gabriel S, Gustavo W,
| |
− | Ex.6.15 - Daniel, Nelson, Gabriel W
| |
− | * Durante a aula os alunos foram orientados na resolução dos exercícios, e simulação usando o Modelsim.
| |
− | * Os alunos devem enviar o arquivo QAR contendo o projeto e simulação para o email do professor.
| |
− | * Discuta com os colegas como resolveram o Exercício proposto para eles. Cada aluno deverá saber solucionar todos os exercícios.
| |
− |
| |
− | ===Unidade 6===
| |
− | ; Aula 26 ():
| |
− | *Projeto a nível de Sistema.
| |
− | :* O '''PACKAGE''' e '''PACKAGE BODY''': onde declarar e como usar.
| |
− | :* O '''COMPONENT''': declaração (cópia da '''ENTITY''') e instanciação.
| |
− | ::* Associação dos nomes das portas aos sinais. PORT -> '''PORT MAP''':
| |
− | ::* Mapeamento por posição e nominal.
| |
− | ::* Métodos de declaração de '''COMPONENT'''.
| |
− | :::*Exemplo: Registrador Circular Ex. 8.2, usando como componente básico o mux junto com o DFF.
| |
− | :* Ver pag. 201 a 208 de <ref name="PEDRONI2010b"/>
| |
− |
| |
− | *Resolução dos exercícios:
| |
− |
| |
− | ; Aula 27 ():
| |
− | *Projeto a nível de Sistema.
| |
− | :* Criação de '''COMPONENT''' redimensionáveis. GENERIC -> '''GENERIC MAP'''
| |
− | ::*Exemplo: Porta E com N entradas.
| |
− | ::*Exemplo: Detector de Paridade Ex. 8.3
| |
− | :* Instanciação de '''COMPONENT''' com '''GENERATE'''.
| |
− | ::*Exemplo: Alterar o exercício 8.2 realizando a instanciação dos componentes com FOR GENERATE. Instanciar duas vezes o Registrador Circular com 8 e 16 bits, sendo os 8 primeiros bits de entrada comuns aos dois registradores.
| |
− | ::*Exercício: Registrador de deslocamento M x N Ex. 8.4
| |
− | :* Ver pag. 208 a 213 de <ref name="PEDRONI2010b"/>
| |
− |
| |
− | ; Aula 28 ():
| |
− | *Projeto a nível de Sistema.
| |
− | :* Uso da instrução '''CONFIGURATION'''.
| |
− | ::* Ligação direta: ARCHITECTURE-ENTITY.
| |
− | ::* Ligação da instanciação dos componentes: COMPONENT-ENTITY(ARCHITECTURE).
| |
− | ::*Exercício 28.1: Inserir as duas soluções de ARCHITECTURE do exercício EX 6.10 (Timer de dois digitos) em uma única ENTITY. Utilizar CONFIGURATION para fazer a ligação com a arquitetura desejada.
| |
− |
| |
− | <syntaxhighlight lang=vhdl>
| |
− | entity counter60seg is
| |
− | generic (fclk: integer := 2); -- valor usado para simulação.
| |
− | -- generic (fclk: integer := 50_000_000); -- valor usado para implementação com clk de 50 MHz.
| |
− | port (
| |
− | clk, rst : in std_logic;
| |
− | ssd_un, ssd_dz: out std_logic_vector(6 downto 0));
| |
− | end entity ;
| |
− |
| |
− | architecture version1 of counter60seg is
| |
− |
| |
− | ...
| |
− | begin
| |
− | ...
| |
− | end architecture ;
| |
− |
| |
− | architecture version2 of counter60seg is
| |
− |
| |
− | ...
| |
− | begin
| |
− | ...
| |
− | end architecture ;
| |
− |
| |
− | configuration counter60seg_cfg of counter60seg is
| |
− | for version1 end for;
| |
− | -- for version2 end for;
| |
− | end configuration;
| |
− |
| |
− | </syntaxhighlight>
| |
− | :* Exercício 8.2: Componentização do circuito conversor de binário para display de sete segmentos. Também modifique a descrição vhdl de modo que a interface dos componentes sejam do tipo '''std_logic''' ou '''std_logic_vector'''.
| |
− | <syntaxhighlight lang=vhdl>
| |
− | entity bin2ssd is
| |
− | port (
| |
− | bin: in std_logic_vector(3 downto 0);
| |
− | ssd: out std_logic_vector(6 downto 0));
| |
− | end entity ;
| |
− |
| |
− | architecture with_case of bin2ssd is
| |
− | ...
| |
− | begin
| |
− | ...
| |
− | end architecture ;
| |
− | </syntaxhighlight>
| |
− |
| |
− | ;Aula 29 e 30 ():
| |
− | *Projeto hierárquico em equipes do circuito lançador de foguete.
| |
− | :*Subsistema 1a - Contador incrementador (de 00 a 99) -
| |
− | :*Subsistema 1b - Contador decrementador (de 99 a 00) -
| |
− | :*Subsistema 2a - Contador em anel -
| |
− | :*Subsistema 2a - Shift register -
| |
− | :*Subsistema 3a - Mostrador SSD com case - Daniel e Nelson
| |
− | :*Subsistema 3b - Mostrador SSD com with select - Natalia e Luisa
| |
− | :*
| |
− |
| |
− | :*Integração e implementação na DE2-115
| |
− | :*Integração e implementação na DE2-115
| |
− | :*Integração e implementação na Mercurio IV
| |
− |
| |
− | ;Aula 31(7/11):
| |
− | *Resolução de exercícios do capitulo 6
| |
− | :* Ex 6.5 Shift register - Bruno e Murilo
| |
− | :* Ex 6.3 Mux NxM - Matheus, Paulo e Andrey
| |
− | :* Ex 6.15 Serializador - Daniel e Nelson
| |
− |
| |
− | ;Aula 32 (8/11):
| |
− | *Projeto hierárquico em equipes do circuito lançador de foguete.
| |
− | <center>[[Arquivo:Top_level_foguete.png| 400 px]] </center>
| |
− | <center>'''Fig.1 - RTL do Top Level do projeto do simulador de lançamento de foguete.''' </center>
| |
− |
| |
− | <center>[[Arquivo:Components_foguete.png| 800 px]] </center>
| |
− | <center>'''Fig.2 - RTL dos componentes do simulador de lançamento de foguete.''' </center>
| |
− |
| |
− | <center>[[Arquivo:Simlation_foguete.png| 800 px]] </center>
| |
− | <center>'''Fig.3 - Simulação no ModelSim do lançamento de foguete.''' </center>
| |
− |
| |
− | ===ATUAL===
| |
− | ; Aula 33 (17/11):
| |
− | *Projeto a nível de Sistema.
| |
− | FUNCTION e PROCEDURE (são chamados de subprogramas), e podem ser construidos em um PACKAGE, ENTITY, ARCHITECTURE, ou PROCESS.
| |
− |
| |
− | A instrução '''ASSERT''' é útil para verificar as entradas de um subprograma. Seu propósito não é criar circuito, mas assegurar que certos requisitos são atendidos durante a sintese e/ou simulação. Pode ser condicional ou incondicional (condição_booleana = FALSE). A sintaxe da instrução é:
| |
− |
| |
− | <syntaxhighlight lang=vhdl>
| |
− | [rótulo:] assert condição_booleana
| |
− | [report mensagem]
| |
− | [severity nivel_severidade];
| |
− | </syntaxhighlight>
| |
− |
| |
− | A mensagem pode ser criada usando STRINGs que podem ser concatenadas.
| |
− |
| |
− | O nível de severidade pode ser NOTE (para passar informação para o compilador/simulator), WARNING (para informar que algo não usual ocorreu), ERROR (para informar que alguma condição não usual "sério" ocorreu), ou FAILURE (para informar que uma condição não aceitável ocorreu). Normalmente o compilador para quando ocorre um ERROR ou FAILURE. NOTE é o valor "default".
| |
− |
| |
− | :* A '''FUNCTION''': declaração, uso, mapeamento posicional x nominal, PURE x IMPURE.
| |
− |
| |
− | <syntaxhighlight lang=vhdl>
| |
− | function nome_funçao (lista_parametros_entrada) return tipo_saida is
| |
− | declarações
| |
− | begin
| |
− | afirmações sequenciais
| |
− | end function;
| |
− | </syntaxhighlight>
| |
− |
| |
− | :* Uso de '''FUNCTION''' e '''ASSERT'''.
| |
− | ::* Exemplo: Declaração em ARCHITECTURE Ex.9.1
| |
− | ::* Exemplo: Declaração em PACKAGE Ex. 9.2
| |
− | ::* Exemplo: Declaração em ENTITY Ex. 9.3
| |
− |
| |
− |
| |
− | Abaixo segue um exemplo de cálculo do '''log2''' de um número inteiro. Pode ser usado para determinar o número de bits necessário para um número natural.
| |
− |
| |
− | <syntaxhighlight lang=vhdl>
| |
− | function log2c (n : integer) return integer is
| |
− | variable m , p : integer;
| |
− | begin
| |
− | m := 0;
| |
− | p : = 1;
| |
− | while p < n loop
| |
− | m : = m + 1;
| |
− | p := p * 2;
| |
− | end loop;
| |
− | return m;
| |
− | end log2c;
| |
− | </syntaxhighlight>
| |
− |
| |
− | ==Avaliações==
| |
− | *Avaliação A1 - Unidade 2 a 4 (13/10/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 de consulta entregues [[Media:VHDL_QRC-Qualis.pdf | VHDL QUICK REFERENCE CARD]] e [[Media:VHDL1164_QRC-Qualis.pdf | 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/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====
| |
− | {{collapse top | 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''' - Processamento de vídeo em FPGA(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''' - Aplicação de Tecnologia de Segurança usando FPGA e SoCs(Kleiton, Gustavo W. e Gabriel W.)
| |
− | :'''TEMA 8''' - Aplicações em Imagens Médicas (João, Alline e Layssa)
| |
− | ::INSPIRAÇÃO para temas:
| |
− | :*https://www.altera.com/about/company/history.html
| |
− | :*https://www.altera.com/solutions/technology/system-design/articles/_2013/in-the-beginning.html
| |
− | :*https://www.altera.com/products/fpga/new-to-fpgas/resource-center/overview.html
| |
− | :*http://www.extremetech.com/extreme/184828-intel-unveils-new-xeon-chip-with-integrated-fpga-touts-20x-performance-boost
| |
− | :*https://www.altera.com/products/fpga/overview.html
| |
− | :*https://www.altera.com/products/cpld/max-series.html
| |
− | :*https://www.altera.com/solutions/industry.html
| |
− | :*http://www.xilinx.com/training/fpga/fpga-field-programmable-gate-array.htm
| |
− | :*http://www.springer.com/cda/content/document/cda_downloaddocument/9781461435938-c2.pdf
| |
− | :*Architecture of FPGAs (Xilinx, Altera, Atmel, Lattice, etc). [http://www.eecg.toronto.edu/~jayar/pubs/brown/survey.pdf], [http://isl.stanford.edu/groups/elgamal/abbas_publications/J029.pdf]
| |
− | :*http://ieeexplore.ieee.org/search/searchresult.jsp?queryText=fpga&newsearch=true
| |
− | :*http://ieeexplore.ieee.org/search/searchresult.jsp?queryText=vhdl&newsearch=true
| |
− |
| |
− | * Escrever um artigo com 4 a 8 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 [http://200.135.233.26:3000/project Sharelatex do IFSC-CLOUD]. Utilize preferencialmente o [http://200.135.233.26:3000/project/54750cb57ae8187440d60acd modelo de artigo no padrão ABNT]. Outro modelo de artigo que pode ser utilizado é o da [http://200.135.233.26:3000/project/57ccb6e06d9996d31bf5aca2 Elsevier]. Consulte também [[Uso do ShareLaTeX na IFSC-CLOUD]].
| |
− | * Envie o resumo em pdf para (<tt>moecke AT ifsc.edu.br</tt>), com o ASSUNTO: DLP29006 - AE1 - Temas relacionados aos DLPS - resumo.
| |
− | * Envie o artigo em pdf para (<tt>moecke AT ifsc.edu.br</tt>), com o ASSUNTO: DLP29006 - AE1 - Temas relacionados aos DLPS - artigo.
| |
− | {{collapse bottom}}
| |
− |
| |
− | {{collapse top | AE2 - Uso de código concorrente - ALU modificada (Prazo de entrega 30/09/2016)}}
| |
− | *Implemente em VHDL uma Unidade de Lógica e Aritmética que tem como entrada os sinais A e B e que execute as seguintes instruções lógicas e aritméticas conforme o '''opcode''' de entrada:
| |
− |
| |
− | ;Unidade Lógica:
| |
− | {| class="wikitable" border="1" cellpadding="3" cellspacing="0" style="text-align:left; font-size:100%" bgcolor="#efefef"
| |
− | ! scope="col" width=20% align="center"| Instrução
| |
− | ! scope="col" width=20% align="center"| Operação
| |
− | ! scope="col" width=20% align="center"| opcode
| |
− | ! scope="col" width=10% align="center"| GRUPO
| |
− | |-
| |
− | | Complemento de A || Y = not A || 00000 || 1
| |
− | |-
| |
− | | Complemento de B || Y = not B || 00001 || 2
| |
− | |-
| |
− | | And || Y = A nand B || 00010 || 3
| |
− | |-
| |
− | | Nand || Y = A and B || 00011 || 4
| |
− | |-
| |
− | | Or || Y = A nor B || 00100 || 1
| |
− | |-
| |
− | | Nor || Y = A or B || 00101 || 2
| |
− | |-
| |
− | | Xor || Y = A xor B || 00110 || 3
| |
− | |-
| |
− | | Xnor || Y = A xnor B || 00111 || 4
| |
− | |}
| |
− |
| |
− | ;Unidade Aritmética: (onde os valores de A e B podem ser positivos ou negativos)
| |
− |
| |
− | {| class="wikitable" border="1" cellpadding="3" cellspacing="0" style="text-align:left; font-size:100%" bgcolor="#efefef"
| |
− | ! scope="col" width=20% align="center"| Instrução
| |
− | ! scope="col" width=20% align="center"| Operação
| |
− | ! scope="col" width=20% align="center"| opcode
| |
− | ! scope="col" width=10% align="center"| GRUPO
| |
− | |-
| |
− | | Transfere A || Y = A || 01000 || 1
| |
− | |-
| |
− | | Transfere B || Y = B || 10001 || 2
| |
− | |-
| |
− | | complemento-2 de A || Y = -A || 01001 || 3
| |
− | |-
| |
− | | complemento-2 de B || Y = -B || 10001 || 4
| |
− | |-
| |
− | | Incrementa A || Y = A + 1 || 01010 || 1
| |
− | |-
| |
− | | Decrementa A || Y = A - 1 || 01011 || 2
| |
− | |-
| |
− | | Incrementa B || Y = B + 1 || 10010 || 3
| |
− | |-
| |
− | | Decrementa B || Y = B - 1 || 10011 || 4
| |
− | |-
| |
− | | Soma A e B|| Y = A + B || 11000 || 1,2,3,4
| |
− | |-
| |
− | | Subtrai B de A|| Y = A - B || 11001 || 1,3
| |
− | |-
| |
− | | Subtrai A de B|| Y = B - A || 11010 || 2,4
| |
− | |-
| |
− | | LSB da Multiplicação de A e B || Y = A * B || 11011 ||1,2
| |
− | |-
| |
− | | MSB da Multiplicação de A e B || Y = A * B || 11100 ||3,4
| |
− | |-
| |
− | | Dobra o valor A || Y = A * 2 || 01100 || 1
| |
− | |-
| |
− | | Dobra o valor B || Y = B * 2 || 10100 || 2
| |
− | |-
| |
− | | Metade do valor A || Y = A / 2 || 01101 || 3
| |
− | |-
| |
− | | Metade do valor B || Y = B / 2 || 10101 || 4
| |
− | |-
| |
− | | Divisão de A / B || Y = A / B || 11101 || 1,2,3,4
| |
− | |-
| |
− | | Resto da Divisão de A / B || Y = A REM B || 11110 || 1,2,3,4
| |
− | |}
| |
− | * A ENTITY deverá ter a seguinte interface:
| |
− | <syntaxhighlight lang=matlab>
| |
− | ENTITY alu IS
| |
− | GENERIC (N: INTEGER := 4); --word bits
| |
− | PORT (
| |
− | A, B: IN STD_LOGIC_VECTOR(N-1 DOWNTO 0);
| |
− | opcode: IN STD_LOGIC_VECTOR(4 DOWNTO 0);
| |
− | Y: OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0));
| |
− | END ENTITY;
| |
− | </syntaxhighlight>
| |
− | * Proponha uma ARCHITECTURE que implemente a ALU (Dica: utilize o tipo de dado tipo '''integer''').
| |
− | * Escolha no FACEBOOK um dos GRUPOS de instruções indicados pelos números 1, 2, 3 e 4 na coluna GRUPO.
| |
− | * Na multiplicação LSB são os N bits menos significativos do resultado, e MSB são os N bits mais significativos do resultado. Por exemplo se o resultado tem 10 bits "1001001011" MSB = "10010" e LSB = "01011".
| |
− | * Anote o número de Elementos Lógicos (ou ALUTs) utilizados [Compilation Report > Flow Summary].
| |
− | * Verifique o código RTL gerado [Tools > Netlist Viewers > RTL Viewer]
| |
− | * Faça a simulação funcional no QSIM com 8 pares de valores (use os valores mínimos e máximos e outros pares de valores representáveis) e verifique se o resultado das operações está correto. Teste cada instrução (opcode) em separado.
| |
− | * Analise os resultados obtidos para entradas com 4 bits. Verifique os casos em que há ''overflow''.
| |
− | * Escreva um relatório contendo o código VHDL, a figura do circuito RTL, as simulações funcionais solicitadas e uma análise dos resultados obtidos. Relate o número de elementos lógicos utilizados.
| |
− | * Envie o artigo em '''pdf''' e o '''qar''' para (<tt>moecke AT ifsc.edu.br</tt>), com o ASSUNTO: DLP29006 - AE2 - Uso de código concorrente - ALU modificada.
| |
− | {{collapse bottom}}
| |
− |
| |
− | {{collapse top | AE3 - Circuito de transmissão e recepção serial (Prazo de entrega: 27 Novembro 2016)}}
| |
− | * Formar equipes com 2 ou 3 alunos.
| |
− | * Escreva o código VHDL para implementar de modo hierárquico o sistema abaixo.
| |
− | <center>[[Arquivo:RTL_Serial_TX_RX.png| 800 px]]</center>
| |
− | * Os blocos verdes são componentes. Os nomes das portas do '''TOP LEVEL''' e de cada '''COMPONENT''' está indicado no diagrama. Todos os sinais de portas devem usar o tipo '''STD_LOGIC(_VECTOR)'''.
| |
− | * Procure reutilizar os componentes que já foram realizados durante o semestre.
| |
− | * Realizar a simulação do sistema, transmitindo um sinal de 7 bits da entrada '''data_in''' para a saída '''data_out'''.
| |
− | * Como taxas de '''baud_rate''' utilize 1 bps e 1000 bps.
| |
− | * Implemente o sistema usando uma placa DE2-115.
| |
− | * Identifique cada arquivo VHD com um cabeçalho indicando os autores, e data. Sugestão:
| |
− | <code>
| |
− | ------------------------------------------------------------------
| |
− | -- Projeto de um serial_TX e serial_RX
| |
− | -- AUTOR:
| |
− | -- DATA: XX Nov 2016
| |
− | -- DISCIPLINA: DLP29006 - ENG. TELECOMUNICAÇOES IFSC
| |
− | -- FILE: Nome_do_arquivo.vhd
| |
− | ------------------------------------------------------------------
| |
− | </syntaxhighlight>
| |
− |
| |
− | * Escreva um relatório técnico na forma de artigo com 4 a 6 paginas A4. O relatório deverá descrever o funcionamento do circuito e os testes de simulação e na placa realizados.
| |
− | * Para a geração de documentação/relatórios técnicos/artigos, está disponibilizada a plataforma [http://200.135.233.26:3000/project Sharelatex do IFSC-CLOUD]. Utilize preferencialmente o [http://200.135.233.26:3000/project/54750cb57ae8187440d60acd modelo de artigo no padrão ABNT].
| |
− | * Envie o artigo em pdf para (<tt>moecke AT ifsc.edu.br</tt>), com o ASSUNTO: DLP29006 - AE3 - Circuito de transmissão e recepção serial.
| |
− | {{collapse bottom}}
| |
− |
| |
− | {{collapse top | expand = true | APF - Projeto Final de Hardware (prazo final da documentação 19/12/2016 as 23:59, apresentação do projeto final no kit DE2-115 20/12/2016)}}
| |
− | * ATENÇÃO!!! Houve uma mudança na atividade deste projeto. A parte adicional que estava proposta para cada equipe não precisa mais ser realizada, pois a maioria das equipes não tem ainda um circuito transmissor e receptor funcionando de forma integrada com diferentes baud-rates. Por isso, o projeto final será simplicado e será apenas a continuidade/finalização da AE3.
| |
− | * Após ter o sistema de transmissão e recepção serial proposto em AE3 funcionando em simulação, cada equipe deverá para o projeto final fazer ainda:
| |
− | :* Implemente o sistema usando uma placa DE2-115 (Já previsto inicialmente)
| |
− | :* Utilize um sinal o sinal de clock de 50MHz para gerar os sinais de baud_rate de 1bps e 1000bps.
| |
− | :* utilize os displays conforme estabelecido na AE3.
| |
− | :* Para entrada de dados utilize as chaves deslizantes, utilizando 14 chaves como informação de entrada (use um mux para escolher os primeiros 7 bits ou os 7 últimos)
| |
− | :* Utilize uma das chaves deslizantes para selecionar o canal do mux.
| |
− | :* Utilize uma das chaves deslizantes para selecionar o baud rate.
| |
− | :* Utilize um led para monitorar a interface serial. (note que na taxa de 1bps é possível acompanhar a transmissão dos bits visualmente) outros leds podem ser utilizados para observar o dado transmitido e recebido (nas entrada e saída paralela), e também para o bit de paridade.
| |
− | * Escrever um relatório técnico na forma de artigo com 4 a 6 paginas A4. O relatório deverá descrever o funcionamento do circuito e os testes de simulação e na placa realizados.
| |
− | * Para a geração de documentação/relatórios técnicos/artigos, está disponibilizada a plataforma [http://200.135.233.26:3000/project Sharelatex do IFSC-CLOUD]. Utilize preferencialmente o [http://200.135.233.26:3000/project/54750cb57ae8187440d60acd modelo de artigo no padrão ABNT].
| |
− | * Envie o artigo em pdf para (<tt>moecke AT ifsc.edu.br</tt>), com o ASSUNTO: DLP29006 - APF - Projeto Final de Hardware.
| |
− |
| |
− | * Os projetos finais e alunos serão analisados em 5 quesitos:
| |
− | :*Correção do projeto, atendimento as especificações e requisitos do sistema.
| |
− | :*Documentação do projeto.
| |
− | :*Implementação no kit DE2-115.
| |
− | :*Apresentação do projeto.
| |
− | :*Avaliação individual do aluno no projeto.
| |
− | {{collapse bottom}}
| |
− |
| |
− | ====ARTIGOS ENTREGUES====
| |
− | ;2016-2:
| |
− |
| |
− | ;2016-1:
| |
− | *[[Media:DLP29006-AE1-Tema1-2016-1.pdf | Arquitetura FPGAs e CPLDs da ALTERA]] (André Felippe Weber, Helenluciany Cechinel, Maria Luiza Theisges)
| |
− | *[[Media:DLP29006-AE1-Tema2-2016-1.pdf | Aplicações de FPGA em Robótica]] (Letícia Aparecida Coelho, Katharine Schaeffer Fertig, Kristhine Schaeffer Fertig)
| |
− | *[[Media:DLP29006-AE1-Tema3-2016-1.pdf | FPGA aplicado a aviônica: Problemas e soluções]] (Gabriel Cantu, Lucas Lucindo, Thiago Grisolfi)
| |
− | *[[Media:DLP29006-AE1-Tema4-2016-1.pdf | Aplicações na Área Espacial]] (Marcos Vinicios Pinho, Fabiano Kraeamer, Iago Soares)
| |
− | *[[Media:DLP29006-AE1-Tema5-2016-1.pdf | Arquitetura FPGAs e CPLDs da XILINK]] (Anderson Demetrio, Gustavo Constante, Tamara Arrigoni)
| |
− |
| |
− | ;2015-2:
| |
− | *[[Media:DLP29006-AE1-Tema1-2015-2.pdf | DLPs: passado, presente e futuro]] (Walter Cardoso de Freitas Júnior, Gustavo Vieira Zacchi, Giulio Oliveira)
| |
− | *[[Media:DLP29006-AE1-Tema2-2015-2.pdf | Transitores CMOS, história e tecnologia]] (Fernando Müller da Silva, Gustavo Paulo Medeiros da Silva)
| |
− | *[[Media:DLP29006-AE1-Tema3-2015-2.pdf | Linguagens de Descrição de Hardware: Tipos e Características]] (João Vitor Rodrigues, Marcus Vinicius Bunn)
| |
− | *[[Media:DLP29006-AE1-Tema4-2015-2.pdf | Fabricantes e ferramentas para programação de DLPs]] (Ronaldo João Borges, Roicenir Girardi Rostirolla)
| |
− | *[[Media:DLP29006-AE1-Tema5-2015-2.pdf | Interface JTAG]] (Stephany Padilha Guimarães, Lucas Gomes de Farias, Vinicius Bandeira)
| |
− |
| |
− | ;2015-1:
| |
− | *[[Media:Formas como PLDs são Programados.pdf | Formas como PLDs são Programados]]
| |
− | *[[Media:EPROM - EEPROM Dispositivos Lógicos Programáveis.pdf | EPROM - EEPROM Dispositivos Lógicos Programáveis]]
| |
− | *[[Media:Aplicações de antifusíveis e PROMs na programação de PDLs.pdf | 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.
| |
− |
| |
− | <!--
| |
− | {{collapse top | 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.
| |
− |
| |
− | <syntaxhighlight lang=vhdl>
| |
− | ---------------------------------------
| |
− | -- 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 _________ ;
| |
− | ---------------------------------------
| |
− | </syntaxhighlight>
| |
− | {{collapse bottom}}
| |
− |
| |
− | {{collapse top | EL3 - Conversor de Binário para BCD}}
| |
− | *Considere um número decimal entre 0000 e 9999. Usando operadores predefinidos, obtenha na saída os digitos decimais separados.
| |
− | :*Escreva o código VHDL e analise o número de elementos lógicos necessários.
| |
− | :*Faça a simulação funcional do circuito.
| |
− | <center> [[Arquivo:tb_bin2bcd.jpg]]<br> '''Fig. 20 - Simulação da conversão de binário para BCD''' </center>
| |
− | :*Compare sua implementação com os outros estudantes e analise as diferenças, observe o código RTL, o número de elementos lógicos e também o tempo de propagação.
| |
− | ::Para separar os dígitos decimais do número de entrada pense nos operadores de "+", "-", "*", "/", "REM" e "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(13 downto 0); -- 0000 a 9999
| |
− | M_bcd : out std_logic_vector(3 downto 0); -- Milhar
| |
− | C_bcd : out std_logic_vector(3 downto 0); -- Centena
| |
− | D_bcd : out std_logic_vector(3 downto 0); -- Dezena
| |
− | U_bcd : out std_logic_vector(3 downto 0)); -- Unidade
| |
− |
| |
− | end entity;
| |
− |
| |
− | architecture example of bin2bcd is
| |
− | --declaração de sinais auxiliares
| |
− |
| |
− | begin
| |
− | --descrição do hardware
| |
− |
| |
− | end architecture;
| |
− | </syntaxhighlight>
| |
− | :: Note que com ''X_bin'' 14 bits é possível representar números sem sinal entre ''0'' e <math> 2^{14}-1 </math>. No entanto, os testes devem ser limitados a números entre 0000 e 9990, pois não há especificação para valores maiores que 9999.
| |
− | :: Existe um algoritmo [https://en.wikipedia.org/wiki/Double_dabble Double Dabble] que possibilita fazer essa conversão com menos hardware.
| |
− | ::Dica para converter de INTEGER para STD_LOGIC_VECTOR de 4 bits.
| |
− | M_bcd <= std_logic_vector(to_unsigned(M,4));
| |
− | {{collapse bottom}}
| |
− | -->
| |
− | {{collapse top | EL1 - Resolução dos exercícios do Cap 3}}
| |
− | *Resolva os exercícios do capítulo 3 (1, 2, '''9''', 11, 12, 13, 14-17, '''18''', '''20''', '''22''', 23-30) pag. 81 a 89
| |
− | {{collapse bottom}}
| |
− |
| |
− | {{collapse top | EL2 - Resolução dos exercícios do Cap 4}}
| |
− | *Resolva os exercícios do capítulo 4 (4-8, '''9''', 10-11, 13, 15-16, '''17''' ) pag. 115 a 120
| |
− | {{collapse bottom}}
| |
− |
| |
− | {{collapse top | EL3 - Resolução dos exercícios do Cap 5}}
| |
− | *Resolva os exercícios do capítulo 5 (1, 2, '''3''', 4, '''6''', '''7''', 8-9, '''10-11''', '''14-16''', 17-18, '''19''' ) pag. 144 a 150
| |
− | {{collapse bottom}}
| |
| <!-- | | <!-- |
− | {{collapse top | EL6 - Resolução dos exercícios do Cap 6}}
| + | ==Modelos para relatório== |
− | *Resolva os exercícios do capítulo 6 (1, '''2''', 3-4, '''5''', 6-7, '''9*''', '''10-11''', 12*, 13*, '''14''', '''15''') pag. 172 a 176.
| + | Para a geração de documentação/relatórios técnicos/artigos, use como base o modelo ABNTex2 para o padrão do IFSC para monografia que segue as normas da ABNT e do IFSC. |
− | {{collapse bottom}}
| + | Recomendo que os alunos da Engenharia de Telecomunicações utilizem esse modelo e o [https://www.overleaf.com Overleafv2], pois além de possibilitar o compartilhamento do documento entre os alunos, reduz o tempo perdido na formação do documento, permitindo que o aluno já aprenda alguma formatação de Latex que será útil na elaboração do TCC. |
| + | *[https://www.overleaf.com/read/dbjkqgsghfbk Modelo para relatório em LaTex] |
| | | |
− | {{collapse top | EL7 - Resolução dos exercícios do Cap 8 e 9}}
| + | ==Links importantes (mais consultados)== |
− | *Resolva os exercícios da capítulo 8 (1-7, 9*) pag. 219 a 220.
| |
− | *Resolva os exercícios da capítulo 9 (1-3, 6-9) pag. 238 a 239.
| |
− | {{collapse bottom}}
| |
− | -->
| |
− | | |
− | ==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 [http://200.135.233.32 Sharelatex do IFSC-CLOUD]. Utilize preferencialmente o [http://200.135.233.26:3000/project/54750cb57ae8187440d60acd modelo de artigo no padrão ABNT].
| |
− |
| |
− | <!--
| |
− | *[http://wiki.sj.ifsc.edu.br/images/a/a5/Sst-intro.pdf Aula inicial]
| |
− | *[[Introdução aos dispositivos lógicos programáveis]]
| |
− | *[[Introdução à tecnologia FPGA ]]
| |
− | *[[Introdução a linguagem VHDL]]
| |
| *[[Aritmética com vetores em VDHL]] | | *[[Aritmética com vetores em VDHL]] |
− | | + | *[[Preparando para gravar o circuito lógico no FPGA]] |
− | *[[Códigos VDHL - DLP]] | + | *[[Criação de um acesso remoto ao kit MERCURIO IV]] |
− | *[[Códigos VHDL para uso nas Aulas]] | + | *[[Dicas de como eliminar o repique das chaves mecânicas]] |
− | *[[Códigos VHDL para uso nas Aulas 2011-1]] | + | *[[Medição de tempos de propagação em circuitos combinacionais]] |
− | -->
| + | *[[Restringir a frequencia máxima de clock no Quartus II]] |
| + | *[[Acesso ao IFSC-CLOUD (NUVEM)]] |
| + | *[[Linguagem_.dot#Como_gerar_o_diagrama_de_uma_maquina_de_estados_finita_em_linguagem_dot |Gerar o diagrama de uma maquina de estados finita em linguagem dot]] |
| + | *[[Mensagens de Erros e Warnings do Quartus II]] |
| | | |
| ==Links auxiliares== | | ==Links auxiliares== |
− | *[[Aritmética com vetores em VDHL]] | + | *[[Media:Quartus_II_Simulation.pdf | Tutorial do QSIM - Introduction to Simulation of VHDL Designs]] da ALTERA. |
− | *[[Preparando para gravar o circuito lógico no FPGA]]
| |
| *[[Palavras reservadas do VHDL]] | | *[[Palavras reservadas do VHDL]] |
− | *[[Dicas de como eliminar o repique das chaves mecânicas]] | + | *[http://web.archive.org/web/20160313200350/http://vhdl.org/fphdl/index.html VHDL-2008 Support Library] |
| *[[Dicas para resolver ERROS de síntese do VHDL no Quartus II]] | | *[[Dicas para resolver ERROS de síntese do VHDL no Quartus II]] |
| *[ftp://ftp.altera.com/up/pub/Altera_Material/13.1/Tutorials/VHDL/ Materiais da ALTERA para Quartus II 13.1] | | *[ftp://ftp.altera.com/up/pub/Altera_Material/13.1/Tutorials/VHDL/ Materiais da ALTERA para Quartus II 13.1] |
Linha 1 223: |
Linha 60: |
| *[[Configuração e uso do Signal Tap]] | | *[[Configuração e uso do Signal Tap]] |
| *[http://docente.ifsc.edu.br/moecke/PAGES/Dec2C_2.html Calculadora de Complemento de 2] | | *[http://docente.ifsc.edu.br/moecke/PAGES/Dec2C_2.html Calculadora de Complemento de 2] |
− | *[[DLP29006-Engtelecom(2015-1) - Prof. Marcos Moecke]] | + | *[[Como utilizar a matriz de leds do kit Mercurio IV da Macnica]] |
− | *[[DLP29006-Engtelecom(2015-2) - Prof. Marcos Moecke]] | + | *[http://g2384.github.io/work/VHDLformatter.html VHDL Beautifier, Formatter] - para identar automaticamente um código VHDL. |
− | *[[DLP29006-Engtelecom(2016-1) - Prof. Marcos Moecke]]
| + | *[https://www.youtube.com/watch?v=08YHxtSI3Bk How to create a State Machine with the Quartus State Machine Wizard] |
− | <!--
| + | *[https://trends.google.com.br/trends/explore?date=today%205-y&q=vhdl,verilog Veja qual é a tendencia mundial em relação as linguagens HDL] |
− | *PS2 Interface
| + | *[https://www.intel.com/content/www/us/en/programmable/documentation/spj1513986956763.html Intel Quartus Prime Pro Edition User Guide: Getting Started] |
− | :*[http://www.quadibloc.com/comp/scan.htm Scan Codes Demystified]
| + | *[https://www.h-schmidt.net/FloatConverter/IEEE754.html IEEE 754 - Floating point number] |
− | :*Keyboard Scan Codes [http://www.computer-engineering.org/ps2keyboard/scancodes1.html Set 1], [http://www.computer-engineering.org/ps2keyboard/scancodes2.html Set 2], [http://www.computer-engineering.org/ps2keyboard/scancodes3.html Set 3]
| + | *[https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/an/an447.pdf AN 447: Interfacing Intel® FPGA Devices with 3.3/3.0/2.5 V LVTTL/LVCMOS I/O Systems] |
− | :*[https://en.wikipedia.org/wiki/Keyboard_layout Keyboard layout]
| |
− | :*[http://www.computer-engineering.org/ps2protocol/ PS2 Protocol], [http://retired.beyondlogic.org/keyboard/keybrd.htm]
| |
− | -->
| |
| | | |
| ==Livros/Resumos sobre VHDL== | | ==Livros/Resumos sobre VHDL== |
Linha 1 241: |
Linha 75: |
| *[[Media:VHDL1164_QRC-Qualis.pdf | VHDL 1164 PACKAGES QUICK REFERENCE CARD]] - Qualis (r2.2) | | *[[Media:VHDL1164_QRC-Qualis.pdf | VHDL 1164 PACKAGES QUICK REFERENCE CARD]] - Qualis (r2.2) |
| *[http://www.ics.uci.edu/~jmoorkan/vhdlref/ VDHL ref] | | *[http://www.ics.uci.edu/~jmoorkan/vhdlref/ VDHL ref] |
| + | *[http://www.vhdl.renerta.com/source/vhd00000.htm VHDL Language Reference Guide] |
| *[http://www.ics.uci.edu/~jmoorkan/vhdlref/vhdl_golden_reference_guide.pdf VHDL Golden Reference Guide] | | *[http://www.ics.uci.edu/~jmoorkan/vhdlref/vhdl_golden_reference_guide.pdf VHDL Golden Reference Guide] |
| *[http://www.cs.umbc.edu/portal/help/VHDL/stdpkg.html Listagem dos packages] | | *[http://www.cs.umbc.edu/portal/help/VHDL/stdpkg.html Listagem dos packages] |
Linha 1 246: |
Linha 81: |
| *[http://www.csee.umbc.edu/portal/help/VHDL/attribute.html Atributos predefinidos] | | *[http://www.csee.umbc.edu/portal/help/VHDL/attribute.html Atributos predefinidos] |
| *[https://blog.ufes.br/sistemasembarcados/files/2015/03/aritmetica-em-vhdl.pdf Aritmética em VHDL] | | *[https://blog.ufes.br/sistemasembarcados/files/2015/03/aritmetica-em-vhdl.pdf Aritmética em VHDL] |
| + | *[https://wiki.kip.uni-heidelberg.de/KIPwiki/images/d/d7/VHDL_Language_Reference_Guide_(help_file).pdf VHDL Language Reference Guide] |
| | | |
− | ==Packages não padronizados== | + | ==Packages não padronizados de VHDL== |
| *[[Std logic arith.vhd]] by Synopsys | | *[[Std logic arith.vhd]] by Synopsys |
| *[http://eda.org/rassp/vhdl/models/standards/std_logic_arith.vhd std_logic_arith.vhd] by Synopsys | | *[http://eda.org/rassp/vhdl/models/standards/std_logic_arith.vhd std_logic_arith.vhd] by Synopsys |
Linha 1 255: |
Linha 91: |
| *[[Std logic unsigned.vdh]] by Synopsys | | *[[Std logic unsigned.vdh]] by Synopsys |
| *[http://eda.org/rassp/vhdl/models/standards/std_logic_unsigned.vhd std_logic_unsigned.vhd] by Synopsys | | *[http://eda.org/rassp/vhdl/models/standards/std_logic_unsigned.vhd std_logic_unsigned.vhd] by Synopsys |
| + | |
| + | ==Quartus II== |
| + | *[https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/manual/TclScriptRefMnl.pdf Quartus II Scripting Reference Manual], ver como programar o FPGA sem interface gráfica com quartus_pgm |
| + | *[[Como instalar o Quartus no Ubuntu 20.04]] |
| + | *[https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/qts/archives/quartusii_handbook_archive_131.pdf Quartus II Handbook Version 13.1] |
| | | |
| ==Simulador Modelsim== | | ==Simulador Modelsim== |
Linha 1 286: |
Linha 127: |
| *[https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/Catapult_ISCA_2014.pdf A Reconfigurable Fabric for Accelerating Large-Scale Datacenter Services], Microsoft. | | *[https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/Catapult_ISCA_2014.pdf A Reconfigurable Fabric for Accelerating Large-Scale Datacenter Services], Microsoft. |
| | | |
− | <!--
| |
| ===Linguagens de programação de hardware=== | | ===Linguagens de programação de hardware=== |
| *[http://trends.google.com/trends/explore#q=vhdl,verilog Tendência Google] | | *[http://trends.google.com/trends/explore#q=vhdl,verilog Tendência Google] |
Linha 1 321: |
Linha 161: |
| *Motorola | | *Motorola |
| *[http://www.analog.com/en/embedded-processing-dsp/processors/index.html Analog Devices] | | *[http://www.analog.com/en/embedded-processing-dsp/processors/index.html Analog Devices] |
− | -->
| |
| | | |
| ==Padrões IEEE para o VDHL== | | ==Padrões IEEE para o VDHL== |
− | Os padrões IEEE [http://ieeexplore.ieee.org.ez130.periodicos.capes.gov.br/xpl/standards.jsp?item=0%20-%2099&sortType=standard_newest&pageNumber=1]estão disponíveis para consulta se você estiver na rede do IFSC. Para a linguagem VHDL consulte os padrões: [http://ieeexplore.ieee.org.ez130.periodicos.capes.gov.br/search/searchresult.jsp?action=search&sortType=&rowsPerPage=&searchField=Search_All&matchBoolean=true&queryText=(%22Standard%20Number%22:1164) 1164],[http://ieeexplore.ieee.org.ez130.periodicos.capes.gov.br/search/searchresult.jsp?action=search&sortType=&rowsPerPage=&searchField=Search_All&matchBoolean=true&queryText=(%22Standard%20Number%22:1076)&refinements=4294967269 1076] | + | Os padrões IEEE [http://ieeexplore.ieee.org.ez130.periodicos.capes.gov.br/xpl/standards.jsp?item=0%20-%2099&sortType=standard_newest&pageNumber=1]estão disponíveis para consulta se você estiver na rede do IFSC ou através do '''Periódicos CAPES via CAFE'''. Para a linguagem VHDL consulte os padrões de [https://ieeexplore-ieee-org.ez130.periodicos.capes.gov.br/browse/standards/collection/ieee?queryText=VHDL) VHDL] |
| *[http://ieeexplore.ieee.org.ez130.periodicos.capes.gov.br/xpl/articleDetails.jsp?arnumber=257627&newsearch=true&queryText=IEEE%20Standard%20Multivalue%20Logic%20System%20for%20VHDL%20Model%20Interoperability%20.LB.Std_logic_1164.RB. IEEE Standard Multivalue Logic System for VHDL Model Interoperability (Std_logic_1164)] | | *[http://ieeexplore.ieee.org.ez130.periodicos.capes.gov.br/xpl/articleDetails.jsp?arnumber=257627&newsearch=true&queryText=IEEE%20Standard%20Multivalue%20Logic%20System%20for%20VHDL%20Model%20Interoperability%20.LB.Std_logic_1164.RB. IEEE Standard Multivalue Logic System for VHDL Model Interoperability (Std_logic_1164)] |
| *[http://ieeexplore.ieee.org.ez130.periodicos.capes.gov.br/xpl/articleDetails.jsp?arnumber=5967868&newsearch=true&queryText=IEEE%20Std%201076.1:%20Behavioural%20languages%20%E2%80%93%20Part%201-1:%20VHDL%20language%20reference%20manual IEEE Std 1076.1: Behavioural languages – Part 1-1: VHDL language reference manual] | | *[http://ieeexplore.ieee.org.ez130.periodicos.capes.gov.br/xpl/articleDetails.jsp?arnumber=5967868&newsearch=true&queryText=IEEE%20Std%201076.1:%20Behavioural%20languages%20%E2%80%93%20Part%201-1:%20VHDL%20language%20reference%20manual IEEE Std 1076.1: Behavioural languages – Part 1-1: VHDL language reference manual] |
Linha 1 332: |
Linha 171: |
| *[http://ieeexplore.ieee.org.ez130.periodicos.capes.gov.br/stamp/stamp.jsp?tp=&arnumber=4384309 IEEE Standard VHDL Analog and Mixed-Signal Extensions] | | *[http://ieeexplore.ieee.org.ez130.periodicos.capes.gov.br/stamp/stamp.jsp?tp=&arnumber=4384309 IEEE Standard VHDL Analog and Mixed-Signal Extensions] |
| *[http://ieeexplore.ieee.org.ez130.periodicos.capes.gov.br/stamp/stamp.jsp?tp=&arnumber=592543 IEEE Standard VHDL Synthesis Packages] | | *[http://ieeexplore.ieee.org.ez130.periodicos.capes.gov.br/stamp/stamp.jsp?tp=&arnumber=592543 IEEE Standard VHDL Synthesis Packages] |
− | *[http://ieeexplore.ieee.org.ez130.periodicos.capes.gov.br/stamp/stamp.jsp?tp=&arnumber=1003477 IEEE Std 1076-2002: IEEE Standard VHDL Language Reference Manual] | + | *[http://ieeexplore.ieee.org.ez130.periodicos.capes.gov.br/stamp/stamp.jsp?tp=&arnumber=1003477 IEEE Std 1076-2002: IEEE Standard VHDL Language Reference Manual], ver mais rescentes [IEEE 1076-2008 - IEEE Standard VHDL Language Reference Manual] e [IEEE 1076-2019 - IEEE Standard for VHDL Language Reference Manual] |
| *[http://ieeexplore.ieee.org.ez130.periodicos.capes.gov.br/stamp/stamp.jsp?tp=&arnumber=556551 IEEE Std 1076.2-1996: IEEE Standard VHDL Mathematical Packages] | | *[http://ieeexplore.ieee.org.ez130.periodicos.capes.gov.br/stamp/stamp.jsp?tp=&arnumber=556551 IEEE Std 1076.2-1996: IEEE Standard VHDL Mathematical Packages] |
− | ===Packages da IEEE===
| + | ;Packages da IEEE: |
| *[[Std logic 1164.vhd]] | | *[[Std logic 1164.vhd]] |
| *[[Numeric std.vhd]] | | *[[Numeric std.vhd]] |
| + | --> |
| + | |
| + | ==Registro Diário e Avaliação Anteriores== |
| + | [https://wiki.sj.ifsc.edu.br/index.php?title=DLP29006-Engtelecom_(Di%C3%A1rio)_-_Prof._Marcos_Moecke&oldid=188893 2023-1], [https://wiki.sj.ifsc.edu.br/index.php?title=DLP29006-Engtelecom_(Di%C3%A1rio)_-_Prof._Marcos_Moecke&oldid=186913 2022-2], |
| + | [https://wiki.sj.ifsc.edu.br/index.php?title=DLP29006-Engtelecom_(Di%C3%A1rio)_-_Prof._Marcos_Moecke&oldid=184068 2022-1], |
| + | [https://wiki.sj.ifsc.edu.br/index.php?title=DLP29006-Engtelecom_(Di%C3%A1rio)_-_Prof._Marcos_Moecke&oldid=182146 2021-2], |
| + | [[DLP29006-Engtelecom(2021-1) - Prof. Marcos Moecke | 2021-1]], |
| + | [[DLP29006-Engtelecom(2020-2) - Prof. Marcos Moecke | 2020-2]], |
| + | [[DLP29006-Engtelecom(2020-1) - Prof. Marcos Moecke | 2020-1]], |
| + | [[DLP29006-Engtelecom(2019-2) - Prof. Marcos Moecke | 2019-2]], |
| + | [[DLP29006-Engtelecom(2019-1) - Prof. Marcos Moecke | 2019-1]], |
| + | [[DLP29006-Engtelecom(2018-2) - Prof. Marcos Moecke | 2018-2]], |
| + | [[DLP29006-Engtelecom(2018-1) - Prof. Marcos Moecke | 2018-1]], |
| + | [[DLP29006-Engtelecom(2017-2) - Prof. Marcos Moecke | 2017-2]], |
| + | [[DLP29006-Engtelecom(2017-1) - Prof. Marcos Moecke | 2017-1]], |
| + | [[DLP29006-Engtelecom(2016-2) - Prof. Marcos Moecke | 2016-2]], |
| + | [[DLP29006-Engtelecom(2016-1) - Prof. Marcos Moecke | 2016-1]], |
| + | [[DLP29006-Engtelecom(2015-2) - Prof. Marcos Moecke | 2015-2]], |
| + | [[DLP29006-Engtelecom(2015-1) - Prof. Marcos Moecke | 2015-1]]. |
| | | |
| ==Referências Bibliográficas:== | | ==Referências Bibliográficas:== |