DLP29006-Engtelecom(2017-1) - Prof. Marcos Moecke: mudanças entre as edições
Ir para navegação
Ir para pesquisar
Linha 159: | Linha 159: | ||
:* Modifique o circuito para que ele passe a ter 16 flip-flops, e realize as simulações funcional e temporal do circuito. | :* Modifique o circuito para que ele passe a ter 16 flip-flops, e realize as simulações funcional e temporal do circuito. | ||
;Aula 5 (21 Fev) - Introdução ao VHDL e ambienta EDA - QUARTUS | ;Aula 5 (21 Fev) - Introdução ao VHDL e ambienta EDA - QUARTUS | ||
* Estrutura do código VHDL | * Estrutura do código VHDL | ||
Linha 199: | Linha 198: | ||
::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=== | |||
====ATUAL==== | |||
;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"/> | |||
:* 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"/> | |||
<!-- | |||
;Aula 6 (29 Ago): | |||
*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 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== |
Edição das 13h29min de 24 de fevereiro de 2017
1 Registro on-line das aulas
1.1 Unidade 1
- Aula 1 (10 Fev)
- Ler Dispositivos Lógicos Programáveis - Kamila Rose da Silva, IFSC
- Aula 2 (14 Fev)
- Introdução aos dispositivos lógicos programáveis:
- Conceito, tipos de PLDs
- SPLD: PAL, PLA e GAL
- CPLDs
Exemplos de PLDs |
---|
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
- Ver In the beginning - ALTERA
- Ver ALTERA history
- Ver pag. 413 a 422 de [1]
- Ver pag. 495 a 499 de [2]
- 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 (17 Fev)
-
- 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
1.2 Unidade 2
- Aula 4 (20 Fev) - Introdução ao VHDL e ambiente 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

- Realizar as simulações funcional e temporal do circuito
- Modifique o circuito para que ele passe a ter 16 flip-flops, e realize as simulações funcional e temporal do circuito.
- Aula 5 (21 Fev) - 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]
1.3 Unidade 3
1.3.1 ATUAL
- Aula 5 (25 Ago)
- Tipos de Dados em VHDL.
- Objetos de VHDL: CONSTANT, SIGNAL, VARIABLE, FILE.
- Palavra chave OTHERS
- Ver pag. 31 a 35 de [2]
- Bibliotecas padrão IEEE (std_logic_1164, numeric_std).
- ATENÇÃO!!! Não use as bibliotecas que não são padrão (std_logic_arith, std_logic_unsigned, std_logic_signed)
- Classificação dos tipos de dados.
- Tipos de dados: BIT, BIT_VECTOR, BOOLEAN, INTEGER, NATURAL, POSITIVE, CHARACTER, STRING, STD_(U)LOGIG, STD_(U)LOGIG_VECTOR
- Exemplo 3.1 Buffer Tri-state
- Exemplo 3.2 Circuito com Saida "don't care"
- Ver pag. 39 a 51 de [2]
2 Avaliações
- Avaliação A1 - Unidade 2 a 4 (XX/XX/2017) - Local: Lab Redes I.
- Avaliação A2 - Unidade 5 a 7 (XX/XX/2017) - Local: Lab Redes I.
- As avaliações A1 e A2 são com consulta apenas as folhas de consulta entregues VHDL QUICK REFERENCE CARD e 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/2017) - Local: Lab Redes I.
- 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/2017).
3 Referências Bibliográficas: