DLP29006-Engtelecom (Diário) - Prof. Marcos Moecke
Registro on-line das aulas
Unidade 1 - Introdução a disciplina
- 4 ENCONTROS
Unidade 1 - Introdução a disciplina | ||||
---|---|---|---|---|
|
|}
Unidade 3 - Tipos de Dados e Operadores em VHDL
|}
Unidade 4 - Código Concorrente
|}
Unidade 5 - Código Sequencial
|}
Unidade 6 - Projeto a nível de Sistema
- Encontro 39 e 40 (12 e 14 jul.)
- Instanciação de COMPONENT com GENERATE.
gen: for i in 0 to 7 generate
comp: flip_flop port map (clk, rst, d(i), q(i));
end generate;
- Uso da instrução CONFIGURATION.
- Ligação direta: ARCHITECTURE-ENTITY.
- Ligação da instanciação dos componentes: COMPONENT-ENTITY(ARCHITECTURE).
- FUNCTION e PROCEDURE (são chamados de subprogramas), e podem ser construídos 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 síntese e/ou simulação. Pode ser condicional ou incondicional (condição_booleana = FALSE). A sintaxe da instrução é:
[rótulo:] assert condição_booleana
[report mensagem]
[severity nivel_severidade];
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. ERROR é o valor "default" [2].
- A FUNCTION: declaração, uso, mapeamento posicional x nominal, PURE x IMPURE.
function nome_funçao (lista_parametros_entrada) return tipo_saida is
declarações
begin
afirmações sequenciais
end function;
- A PROCEDURE: declaração e uso
procedure nome_procedimento (lista_parâmetros_entrada, lista_parâmetros_saída) is
declarações
begin
afirmações sequenciais
end procedure;
- Exemplos de uso ASSERT, FUNCTION e PROCEDURE
- Exemplo: 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.
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;
- Exemplo: Declaração de FUNCTION em ARCHITECTURE Ex.9.1
- Aplicação no projeto do timer0_9
- Exemplo: Declaração em FUNCTION PACKAGE Ex. 9.2
-- FILE: comparator.vhd
-- Fonte: PEDRONI, Volnei A. Circuit Design and Simulation with VHDL; 2 ed. Massachusetts-EUA:MIT, 2010.
library ieee;
use ieee.numeric_std.all;
use work.my_package.all;
entity organizer is
generic (size : natural := 3);
port
(
x : in UNSIGNED(2 to 5);
y : out UNSIGNED(size - 1 downto 0)
);
end entity;
architecture organizer of organizer is
begin
y <= order_and_fill(x, size);
end architecture;
-- FILE: my_pkg.vhd
-- Fonte: PEDRONI, Volnei A. Circuit Design and Simulation with VHDL; 2 ed. Massachusetts-EUA:MIT, 2010. 608 p. ISBN 9780262014335
library ieee;
use ieee.numeric_std.all;
package my_package is
function order_and_fill (input : UNSIGNED; bits : natural) return UNSIGNED;
end package;
package body my_package is
function order_and_fill (input : UNSIGNED; bits : natural) return UNSIGNED is
variable a : UNSIGNED(input'LENGTH - 1 downto 0);
variable result : UNSIGNED(bits - 1 downto 0);
begin
assert (input'LENGTH <= bits)
report "Improper input size!"
severity FAILURE;
if (input'LEFT > input'RIGHT) then
a := input;
else
for i in a'range loop
a(i) := input(input'LEFT + i);
end loop;
end if;
if (a'LENGTH < bits) then
result(bits - 1 downto a'LENGTH) := (others => '0');
result(a'LENGTH - 1 downto 0) := a;
else
result := a;
end if;
return result;
end function;
end package body;
- Exemplo: min_max Ex.9.4
Figura 6.1 - Fluxograma da PROCEDURE min_max
-- FILE: comparator.vhd
-- Fonte: PEDRONI, Volnei A. Circuit Design and Simulation with VHDL; 2 ed. Massachusetts-EUA:MIT, 2010.
use work.my_package.all;
entity comparator is
port
(
a, b, c : in integer range 0 to 255;
min, max : out integer range 0 to 255
);
end entity;
architecture comparator of comparator is
begin
min_max(a, b, c, min, max);
end architecture;
-- FILE: my_pkg.vhd
-- Fonte: PEDRONI, Volnei A. Circuit Design and Simulation with VHDL; 2 ed. Massachusetts-EUA:MIT, 2010.
package my_package is
procedure min_max (
signal a, b, c : in integer;
signal min, max : out integer
);
end package;
package body my_package is
procedure min_max (
signal a, b, c : in integer range 0 to 255;
signal min, max : out integer range 0 to 255) is
begin
if (a >= b) then
if (a >= c) then
max <= a;
if (b >= c) then
min <= c;
else
min <= b;
end if;
else
max <= c;
min <= b;
end if;
else
if (b >= c) then
max <= b;
if (a >= c) then
min <= c;
else min <= a;
end if;
else
max <= c;
min <= a;
end if;
end if;
end procedure;
end package body;
- Encontro 41 e 42 (16 jul. Sábado)
|}
Unidade 7 - Maquinas de Estado Finitas
|}
Avaliações
Nas avaliações A1 e A2 serão realizadas de forma presencial e vocês poderão consultar apenas as folhas entregues:
- VHDL Quick Reference - SynthWorks
- VHDL Types and Operators Quick Reference - SynthWorks
- ModelSim Quick Reference - SynthWorks
- Tabelas das figuras 3.6, 3.10 e 4.1 do livro do Pedroni.
- Arquivo:Numeric std conversions.png
- Dica use também como fonte de consulta os templates do Quartus.
- Ao final das avaliações o aluno deverá enviar a avaliação para a plataforma Moodle com os arquivos solicitados.
Figura 1 - Interface transmissora serial
Figura 2 - Interface receptora serial
- A entrada DATA_IN deve ter apenas 8 bits e usar as chaves do kit como entrada de dados, e o valor deve ser mostrado em dois displays de sete segmentos em hexadecimal (0 a F)
- A saída DATA_OUT deve ter apenas 8 bits usar os leds como saída de dados, e o valor também deve ser mostrado em dois displays de sete segmentos em hexadecimal (0 a F)
- As taxa de transmissão deverão ser geradas a partir do clock principal CLK50MHz do kit a ser utilizado.
- A seleção da taxa de transmissão será feita através das chaves SW_BAUD_TX[1..0] para o transmissor e das SW_BAUD_RX[1..0] para o receptor.
- Por exemplo:
- 00 => 0.1 bps, 01 => 10 bps, 10 => 9600 bps, 11 => 100 kbps.
- Na transmissão deverá ser enviado um bit paridade (par ou impar) de acordo com a chave seletora SW_PARITY.
- 0 => paridade par, 1 => paridade impar.
- No receptor a saída RX_ERROR deve ser usada para indicar que houve erro na recepção do dado.
- O sistema no seu TOP LEVEL deverá ser constituído de um Conversor Paralelo Serial, um Conversor Serial Paralelo, dois Geradores de Baud Rate, um Gerador de Paridade, um Detector de Paridade, um Circuito de Entrada de Dados, e um Circuito de Saída de Dados.
- O projeto deve ser desenvolvido integrando estes componentes no TOP LEVEL, de modo que neste nível existam apenas conexões entre estes componentes. Recomenda-se utilizar também componentes para a criação dos circuitos no segundo nível. O reuso de componentes já desenvolvidos nas aulas é fortemente encorajado.
- Durante a fase das simulações recomenda-se alterar o valor da frequência do CLK50MHz para um clock menor de modo a viabilizar uma simulação mais rápida. As simulações de cada componente do TOP LEVEL e da integração de todos componentes no TOP LEVEL devem ser feitas no MODELSIM.
- O sistema deverá ser implementado, testado e demonstrado no kit de hardware FPGA DE2-115 usando as chaves e leds disponíveis e os pinos da GPIO para acionar circuitos externos. (opcional)
- O arquivo QAR do projeto, e os arquivos .do do MODELSIM devem ser enviados antecipadamente para o professor para conferencia antes da implementação no kit de hardware.
- Escreva um relatório técnico contendo os resultados em no máximo 10 paginas A4. O relatório além das tabelas com os dados de frequência máxima, número de componente, número de pinos, deverá conter a figura dos circuitos RTL da ENTITY top level com uma explicação do seu funcionamento. Também devem ser apresentadas as simulações funcionais e uma análise textual dos resultados obtidos. A descrição da função dos pinos no Kit DE2-115 também deve ser feita.
- Para entender o sistema de transmissão recomenda-se consulte materiais complementares sobre Comunicação serial assíncrona, bit de paridade, UART, Taxa de bits.
- Para o teste da transmissão serial pode ser utilizada a interface DB9 disponível nos computadores, em conjunto com o software minicom.
|}
ATIVIDADE EXTRA-CLASSE (AE)
A soma das atividades Extra-classe será correspondente a 20% do conceito final na disciplina. A entrega das mesmas será feita pelo Moodle da disciplinas, e cada dia de atraso irá descontar 0,2 na nota da atividade. Muitas dessas atividades também possuem BÔNUS que são adicionados aos conceitos das avaliações A1 e A2. Para os BÔNUS só serão considerados projetos entregues no prazo.
|}