Mudanças entre as edições de "ELD129003-Engtelecom (Diário) - Prof. Marcos Moecke"
(→ATUAL) |
|||
(3 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 637: | Linha 637: | ||
====ATUAL==== | ====ATUAL==== | ||
− | ;Encontro 12 ( | + | ;Encontro 12 (2 abr.): |
Instruções do tipo '''LOOP''': LOOP incondicional, '''FOR-LOOP''', '''WHILE-LOOP''', '''NEXT''', '''EXIT''' | Instruções do tipo '''LOOP''': LOOP incondicional, '''FOR-LOOP''', '''WHILE-LOOP''', '''NEXT''', '''EXIT''' | ||
Linha 690: | Linha 690: | ||
*Instrução '''CASE''' | *Instrução '''CASE''' | ||
<syntaxhighlight lang=vhdl> | <syntaxhighlight lang=vhdl> | ||
− | [rótulo:] CASE expressão IS | + | [rótulo opcional:] CASE expressão IS |
− | WHEN valor => | + | WHEN valor => -- valor único |
− | + | afirmação_sequencial; | |
− | WHEN valor1 | valor2 | ... | valorN => | + | afirmação_sequencial; |
− | + | ... | |
− | WHEN valor1 TO valor2 | + | WHEN valor1 | valor2 | ... | valorN => -- lista de valores |
− | ... | + | afirmação_sequencial; |
− | + | afirmação_sequencial; | |
+ | ... | ||
+ | WHEN valor1 TO valor2 => -- faixa de valores | ||
+ | afirmação_sequencial; | ||
+ | afirmação_sequencial; | ||
+ | ... | ||
+ | WHEN OTHERS => -- para evitar latches | ||
+ | afirmação_sequencial; | ||
+ | afirmação_sequencial; | ||
+ | ... | ||
END CASE; | END CASE; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Linha 733: | Linha 742: | ||
{{fig|5.15|Simulação do leading_zeros| SIM_LZ.png| 800 px | }} | {{fig|5.15|Simulação do leading_zeros| SIM_LZ.png| 800 px | }} | ||
− | * Contador de zeros ( | + | * Contador de zeros (LOOP com NEXT ou apenas LOOP) - Esse circuito deve determinar quantos zeros tem em um vetor de entrada '''Data'''. |
:*Fazer a síntese do circuito; fazer simulação no Modelsim; analisar a forma como o compilador implementou o incrementador. | :*Fazer a síntese do circuito; fazer simulação no Modelsim; analisar a forma como o compilador implementou o incrementador. | ||
{{fig|5.16|Simulação do counting_zeros| SIM_CZ.png| 800 px | }} | {{fig|5.16|Simulação do counting_zeros| SIM_CZ.png| 800 px | }} | ||
Linha 749: | Linha 758: | ||
*A4 - : | *A4 - : | ||
*R - Recuperação de A1 a A4 : | *R - Recuperação de A1 a A4 : | ||
+ | *[[Folha de consulta de VHDL]] | ||
== Atividade relâmpago (AR) == | == Atividade relâmpago (AR) == |
Edição das 21h46min de 1 de abril de 2024
Registro on-line das aulas
Unidade 1 - Aula inicial, Introdução a disciplina
- 1 ENCONTRO
Unidade 1 - Aula inicial, Introdução a disciplina |
---|
|
Unidade REV - PRIMEIRO CONTATO COM VHDL
- 3 ENCONTROS
Unidade REV - PRIMEIRO CONTATO COM VHDL | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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];
Para ilustrar essas instruções utilizaremos o exemplo de um Mux4x1. Um multiplexador digital de N entradas e 1 saída, frequentemente abreviado como MUX N:1, é um circuito digital muito utilizado para rotear sinais digitais. Ele desempenha a função de selecionar uma das entradas para ser encaminhada para a saída com base em um sinal de seleção (ou controle).
Dada a função booleana do MUX4:1 é simples para descreve-lo em VHDL utilizando apenas operadores lógicos. entity mux4x1 is
port
(
-- Input ports
X: in bit_vector (3 downto 0);
Sel : in bit_vector (1 downto 0);
-- Output ports
Y : out bit
);
end entity;
-- Implementação com lógica pura
architecture v_logica_pura of mux4x1 is
begin
Y <= (X(0) and (not Sel(1)) and (not Sel(0))) or
...
end architecture;
No entanto, o MUX4:1 também pode ser descrito utilizando a instrução WHEN-ELSE <optional_label>: <target> <=
<value> when <condition> else
<value> when <condition> else
...
<value> else
<value>;
Warning (13012): Latch ... has unsafe behavior
No caso do MUX4:1 ele poderia ser descrito como: -- Implementação com WHEN ELSE
architecture v_WHEN_ELSE of mux4x1 is
begin
Y <= X(0) when Sel = "00" else
X(1) when Sel = "01" else
X(2) when Sel = "10" else
X(3);
end architecture;
Outra forma de descrever o MUX4:1 seria utilizando a instrução WITH-SELECT <optional_label>: with <expression> select
<target> <=
<value> when <choices>,
<value> when <choices>,
...
<value> when others;
Error (10313): VHDL Case Statement error ...: Case Statement choices must cover all possible values of expression
-- Implementação com WITH SELECT
architecture v_WITH_SELECT of mux4x1 is
begin
with Sel select
Y <= X(0) when "00", -- note o uso da ,
X(1) when "01",
X(2) when "10",
X(3) when others; -- note o uso de others, para todos os demais valores.
-- Não pode ser substituido por "11" mesmo que o signal seja bit_vector.
end architecture;
CONFIGURATION <configuration_name> OF <entity_name> IS
FOR <architecture_name> END FOR;
END CONFIGURATION;
-- Design Unit que associa a architecture com a entity
CONFIGURATION cfg_ifsc OF mux4x1 IS
FOR v_logica_pura END FOR;
-- FOR v_WHEN_ELSE END FOR;
-- FOR v_WITH_SELECT END FOR;
END CONFIGURATION;
Figura 2.1 - Código RTL do mux4x1 v_logica_pura Figura 2.2 - Código RTL do mux4x1 v_WHEN_ELSE Figura 2.3 - Código RTL do mux4x1 v_WITH_SELECT
|
Unidade 2 - Dispositivos Lógicos Programáveis
- 3 ENCONTROS
Unidade 2 - Dispositivos Lógicos Programáveis | ||||
---|---|---|---|---|
Unidade 3 - Circuitos sequenciais (Implementação com HDL)
AvaliaçõesDurante o semestre serão realizadas 4 avaliações. As avaliações devem ser enviadas pela plataforma Moodle com os arquivos solicitados.
Atividade relâmpago (AR)As atividades relâmpago devem ser entregues no Moodle da disciplina. A não entrega dessas atividades não gera nenhum desconto, apenas geram pontos de BÔNUS que são adicionados aos conceitos das avaliações A1 a AN. Atividade extra-classe (AE)A média ponderada das atividades extra-classe será considerada no cálculo do conceito final da UC. A entrega das mesmas será feita pelo Moodle, e cada dia de atraso irá descontar 0,2 na nota da atividade. Muitas dessas atividades também geram pontos de BÔNUS que são adicionados aos conceitos das avaliações A1 a AN. Para os BÔNUS só serão considerados projetos entregues no prazo. AE1 - Conhecendo os dispositivos lógicos programáveis
Referências Bibliográficas:
|