Você está na página 1de 2

Laboratório de Sistemas Digitais

(Guia 02: Estrutura básica do projeto VHDL)

Vitor Ângelo F. Torres


UFMG – Departamento de Engenharia Eletrônica
2o Semestre - 2022 (Plano de Ensino 2022/1)

Turma: Horário: Data:


Nomes: Matrículas:

Essa atividade de desenvolvimento explorará a estrutura básica de projeto e simulação de um circuito digital
em VHDL, adaptando um código base com diversas melhorias em sequência.

Objetivos

1. Design Units e modelo de descrição de um sistema em VHDL;


2. Declaração de Sinais e Variáveis;
3. Síntese e simulação de um circuito digital;

Estudo Dirigido

Espera-se que ao final do Estudo Dirigido o aluno saiba responder às questões 1 a 9 utilizando o
Capítulo 3 livro gratuito: “Free Range VHDL 10” (versão revisada 2022, disponível no Moodle):
1. Quais são as Design Units do VHDL apresentadas no livro?
2. O que é uma library em VHDL e quais são as libraries fundamentais usadas em um projeto?
3. O que é um package em VHDL e quais os principais packages padronizados pela library ieee?
4. Para que serve uma design unit: entity em VHDL?
5. Para que serve uma design unit: architecture em VHDL?
6. Qual o modelo padrão de codificação de um sistema digital em VHDL?
7. Como se define signals em VHDL?
8. Como se define variables em VHDL?
9. O que significa síntese de um sistema digital?
10. O que é uma simulação funcional?
11. Quais as condições mínimas necessárias para realização de uma simulação funcional?
12. O que é um testbench?
13. Quais palavras reservadas de VHDL são usadas somente para descrever testbenchs em VHDL?
Não se preocupe com as questões 10 a 13, que serão respondidas no início da aula.
laboratório de sistemas digitais (guia 02: estrutura básica do projeto vhdl) 2

Esse é o projeto base, que vamos modificar durante a aula:

1 -- Somador com uso do package std_logic_unsigned da Synopsys da IEEE


2 -- Se usar o GHDL da GNU é necessário incluir a opção de compilação: -fsynopsys em "Make Options"
3

4 library ieee;
5 use ieee.std_logic_1164.all;
6 use ieee.std_logic_unsigned.all; -- Não padronizado. Evite!!!
7 -- use ieee.numeric_std.all; -- Padrão. Use esse!
8

9 library ieee;
10 use ieee.std_logic_1164.all;
11

12 entity somador is
13 port ( x, y : in std_logic_vector(3 downto 0);
14 s : out std_logic_vector(3 downto 0));
15 end somador;
16

17 architecture fluxo_de_dados of somador is


18 begin
19 s <= x + y; -- slv + slv, só no não padronizado!
20 end fluxo_de_dados;

Esse é o testbench para projeto base, que vai ser modificado de acordo com as mudanças no projeto:

1 library IEEE;
2 use IEEE.STD_LOGIC_1164.all;
3

4 entity tb_somador is
5 end tb_somador;
6

7 architecture teste of tb_somador is


8

9 component somador is
10 port ( x, y : in std_logic_vector(3 downto 0);
11 s : out std_logic_vector(3 downto 0));
12 end component;
13

14 signal A, B: std_logic_vector(3 downto 0);


15 signal S: std_logic_vector(3 downto 0);
16 begin
17 instancia_somador: somador port map(x=>A,y=>B,s=>S);
18

19 A <= x"0", x"3" after 20 ns, x"2" after 40 ns, x"4" after 60 ns, x"F" after 70 ns, x"0" after 80 ns;
20 B <= x"0", x"4" after 10 ns, x"3" after 30 ns, x"1" after 50 ns, x"F" after 70 ns, x"0" after 80 ns;
21 end teste;

Você também pode gostar