Mudanças entre as edições de "DLP29006-Engtelecom(2020-2) - Prof. Marcos Moecke"
(→ATUAL) |
|||
Linha 200: | Linha 200: | ||
{{fig|2.5|RTL 4 FF| RTL_4FF.png| 400 px |}} | {{fig|2.5|RTL 4 FF| RTL_4FF.png| 400 px |}} | ||
− | |||
;Aula 5 (19 nov): | ;Aula 5 (19 nov): | ||
:*Realize as simulações funcional e temporal do circuito com 4 FF usando o QSIM. | :*Realize as simulações funcional e temporal do circuito com 4 FF usando o QSIM. | ||
Linha 225: | Linha 224: | ||
:* Objetivos: Copiar e colar o código no Quartus; diferença entre analise e síntese e compilação; observar o RTL (usar UNGROUP); simulação funcional e simulação temporal; observar os atrasos de propagação na simulação temporal. | :* Objetivos: Copiar e colar o código no Quartus; diferença entre analise e síntese e compilação; observar o RTL (usar UNGROUP); simulação funcional e simulação temporal; observar os atrasos de propagação na simulação temporal. | ||
+ | ====ATUAL==== | ||
+ | ;Aula 6 (23 nov): | ||
* Uso das bibliotecas no VHDL. | * Uso das bibliotecas no VHDL. | ||
:*Library '''std''' | :*Library '''std''' | ||
Linha 276: | Linha 277: | ||
*Os arquivos dessa biblioteca do padrão (versão 2008) estão apenas disponíveis a partir do Quartus II versão 16.0 instalado na IFSC_CLOUD? | *Os arquivos dessa biblioteca do padrão (versão 2008) estão apenas disponíveis a partir do Quartus II versão 16.0 instalado na IFSC_CLOUD? | ||
ls /opt/altera/16.0/quartus/libraries/vhdl/ieee/2008 | ls /opt/altera/16.0/quartus/libraries/vhdl/ieee/2008 | ||
+ | |||
+ | :* 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. | ||
+ | {{fig|2.10|Código RTL do Exemplo 2.3| RTL_Ex2_3_Pedronib.png| 400 px |}} | ||
+ | |||
+ | Note que na simulação funcional a mudança da saída Q ocorre no instante em que ocorre a borda de subida do clock ou no momento do reset. No entanto, no caso da simulação com timing, existe um atraso nestas mudanças. | ||
+ | |||
+ | ''IMPORTANTE:'' Na prática normalmente não é necessário fazer a simulação temporal, pois através do Time Quest Report é possivel verificar se o circuito atende as restrições de tempo. | ||
+ | * Para definir as restrições de tempo do clock por exemplo, pode ser adicionado um arquivo .sdc ao projeto definindo a frequencia do clock esperada através da seguinte linha: | ||
+ | |||
+ | create_clock -name CLK50MHz -period 50MHz [get_ports {*}] | ||
+ | ::ver [[Media:Quartus_II_Simulation.pdf | Tutorial do QSIM - 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> | ||
<big> Video motivational para apreender FPGA, VHDL [https://youtu.be/ecyyZ6zTLic Microsoft's Bing* Intelligent Search with Intel® FPGAs] </big> | <big> Video motivational para apreender FPGA, VHDL [https://youtu.be/ecyyZ6zTLic Microsoft's Bing* Intelligent Search with Intel® FPGAs] </big> | ||
− | |||
<!-- | <!-- | ||
Linha 404: | Linha 445: | ||
;Aula 6 (25 fev): | ;Aula 6 (25 fev): | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
--> | --> | ||
{{collapse bottom}} | {{collapse bottom}} |
Edição das 09h29min de 23 de novembro de 2020
MURAL DE AVISOS E OPORTUNIDADES DA ÁREA DE TELECOMUNICAÇÕES
Registro on-line das aulas
Unidade 1 - Introdução a disciplina
- 3 AULAS
Unidade 1 - Introdução a disciplina | ||||
---|---|---|---|---|
|
Unidade 2 - Introdução ao VHDL e ambienta EDA - QUARTUS
- 3 AULAS
Unidade 2 - Introdução ao VHDL e ambienta EDA - QUARTUS |
---|
Figura 2.1 - Fluxo simplificado do projeto de FPGA
library library_name;
use library_name.package_name.all;
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 arch_name of entity_name is
[declarative_part]
begin
statement_part
end [architecture] [arch_name];
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;
-- 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;
Figura 2.2 - Código RTL do Exemplo 2.2
Figura 2.3 - Technology Map do Exemplo 2.2
Figura 2.4 - Chip Planner do Exemplo 2.2
Figura 2.5 - RTL 4 FF
Figura 2.6 - Simulação Funcional de 4 FF 100ns Figura 2.7 - Simulação Temporal de 4 FF 100ns Note que na simulação funcional a mudança da saída Q ocorre no instante em que ocorre a borda de subida do clock ou no momento do reset. No entanto, no caso da simulação com timing, existe um atraso de ~6ns nestas mudanças. IMPORTANTE: Na prática normalmente não é necessário fazer a simulação temporal, pois através do Time Quest Report é possível verificar se o circuito atende as restrições de tempo.
create_clock -name CLK50MHz -period 50MHz [get_ports {*}]
ATUAL
ls /opt/altera/13.0sp1/quartus/libraries/vhdl/std
ls /opt/altera/13.0sp1/quartus/libraries/vhdl/ieee
ls /opt/altera/13.0sp1/quartus/libraries/vhdl/mentor/arithmetic (Mentor Graphics) ls /opt/altera/13.0sp1/quartus/libraries/vhdl/synopsys/ieee (Synopsys)
ls /opt/altera/16.0/quartus/libraries/vhdl/ieee/2008
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;
Figura 2.10 - Código RTL do Exemplo 2.3 Note que na simulação funcional a mudança da saída Q ocorre no instante em que ocorre a borda de subida do clock ou no momento do reset. No entanto, no caso da simulação com timing, existe um atraso nestas mudanças. IMPORTANTE: Na prática normalmente não é necessário fazer a simulação temporal, pois através do Time Quest Report é possivel verificar se o circuito atende as restrições de tempo.
create_clock -name CLK50MHz -period 50MHz [get_ports {*}]
Video motivational para apreender FPGA, VHDL Microsoft's Bing* Intelligent Search with Intel® FPGAs |