You are on page 1of 12

Arquiteturas em VHDL

Tipos de descrição de arquitetura:


• Descrição de Fluxo de Dados (dataflow) ou concorrente (aula 2)
• As atribuições dos sinais ocorrem simultaneamente;
• Baseia-se na descrição do fluxo de dados no sistema.

• Descrição Estrutural (aula 3)


• As atribuições dos sinais são realizadas através do mapeamento dos
componentes (COMPONENT) do sistema e suas interligações;
• Baseia-se na descrição da interligação dos componentes sistema.

• Descrição Comportamental (aula 4)


• As atribuições dos sinais são realizadas através de processos (PROCESS),
que podem representar sistemas de lógica sequencial;
• Baseia-se na descrição das iterações (eventos) que ocorrem no sistema.

1 Autor: Valter Avelino

Arquitetura – Descrição de Fluxo de Dados


Descrição de Fluxo de Dados (dataflow) ou concorrente
• Aplica-se essencialmente na descrição de lógica combinacional;
• As atribuições dos valores das saídas geralmente são realizadas diretamente a
partir das expressões lógicas (derivadas das tabelas verdade);
• Utilizam-se construções concorrentes (tipicamente: WHEN-ELSE e
WITH-SELECT);
• As atribuições dos sinais de saída ocorrem simultaneamente;
• A descrição da lógica representa o fluxo de informações (dados) entre as
entradas e saídas do sistema.

Importante:
A descrição de fluxo de dados baseia-se em comandos
concorrentes, assim a ordem da descrição textual desses
comandos não representa a ordem da sua execução. Todos
os elementos de hardware são ativados em paralelo ou
concorrentemente.
2 Autor: Valter Avelino

1
Exercício 1 – Mux_2x1
Implementar em VHDL o projeto de um multiplexador de duas entradas (A,
B), duas saídas (X, Y), sendo uma complementar à outra, e uma variável de
seleção (S), representado na figura abaixo.
• Utilizar o ambiente de desenvolvimento da ferramenta Quartus Prime;
• Realizar a descrição da arquitetura no formato de fluxo de dados ;
• Obter a representação em RTL do circuito implementado;
• Realizar a simulação funcional do circuito;
• Registrar os resultados no Moodle (Relatório Aula2).

Mux_2x1

3 Autor: Valter Avelino

Exercício 1 – Mux_2x1

Mux_2x1

Funções das saídas:


x = ( a AND s ) OR ( b AND s )
y=x

4 Autor: Valter Avelino

2
Exercício 1 – Mux_2x1
Procedimento para iniciar projeto VHDL no Quartus Prime:
1. Abrir novo projeto (File > New Project Wizard)
2. Definir pasta do projeto no Pen Drive (Directory > E:\Aula2) ou
(alternativamente) no drive local (Directory > C:\Alunos\Aula2)
3. Definir nome do projeto (Project Name > Mux_2x1)
4. Definir FPGA (Device Family > Cyclone IV E: Name > EP4CE115F29C7 )
5. Concluir abertura de projeto: > Finish
6. Abrir o editor VHDL (File > New > Design Files > VHDL File)
7. Inserir um template VHDL (Edit > Insert Template > VHDL > Full Designs
> Arithmetic > Adders > Signed Adder)
8. Alterar a descrição do arquivo VHDL para do projeto Mux_2x1 utilizando a
arquitetura do tipo fluxo de dados (conforme a figura seguinte)

5 Autor: Valter Avelino

Exercício 1 – Mux_2x1

6 Autor: Valter Avelino

3
Exercício 1 – Mux_2x1
9. Salvar o arquivo VHDL editado (File > Save As > Mux_2x1)
10. Realizar a síntese do projeto e corrigir eventuais erros (Processing > Start >
Start Analysis & Synthesis)
11. Gerar a visão RTL do projeto (Tools > Netlist Viewers > RTL Viewer)

x = (a AND s ) OR (b AND s)
y=x
12. Gerar a visão no nível de portas (Tools> Netlist Viewers> Technology Map
Viewer)
13. Registrar o arquivo VHDL e a visão RTL no relatório de aula
14. Abrir o arquivo para simulação de formas de onda do projeto (New >
Verification/Debugging Files > University Program VWF)
15. Inserir sinais de entrada e saída (Edit > Insert > Insert Node or Bus > Node
Finder > List) (obs: lembrar de selecionar “Filter > Pins: all”)
7 Autor: Valter Avelino

Exercício 1 – Mux_2x1
16. Editar as formas de onda de entrada com valores adequados (vide exemplo)

17. Salvar as formas de onda (File > Save As > Waveform)


18. Simular o projeto no modo funcional (Simulation > Run Functional
Simulation)
19. Registrar o resultado da simulação no relatório da Aula2.
20. Observações:
 Se for necessário refazer a simulação feche a janela com as formas de onda
de saída e faça as modificações na janela de formas de onda de entrada;
 Se você modificar o nome do arquivo de formas de onda pode ser necessário
restaurar a definição da simulação (Simulation Settings > Restore Autor:
Defaults)
Valter Avelino
8

4
Exercício 2 – Mux8_2x1
Implementar em VHDL o projeto de um multiplexador de duas entradas de
oito bits (A, B), duas saídas de oito bits, complementares (X, Y) e uma
variável de seleção (S), representado na figura da página seguinte.
• Realizar a descrição da arquitetura no formato de fluxo de dados utilizando
a representação de vetores;
• Obter a representação em RTL do circuito implementado;
• Realizar a simulação funcional do circuito;
• Registrar os resultados no Moodle (Relatório Aula2).

Representação de Vetores em VHDL:


Constant I: std_logic_vector (0 to 3 ):= “1000”
I(0) I(1) I(2) I(3)
Constant J: std_logic_vector (3 downto 0):= “1000”
J(3) J(2) J(1) J(0)

Observar que: I(0) = J(3) ; I(1)= J(2) ; I(2)= J(1) ; I(3)= J(0)

Portanto: I = J
9 Autor: Valter Avelino

Exercício 2 – Mux8_2x1

10
Mux8_2x1
Autor: Valter Avelino

5
Exercício 2 – Mux8_2x1

Mux8_2x1

Funções das saídas:


x (0) = ( a(0) AND s ) OR ( b(0) AND s ) y(0) = x(0)
x(1) = ( a(1) AND s ) OR ( b(1) AND s ) y(1) = x(1)
●●● ●●●
x(7) = ( a(7) AND s ) OR ( b(7) AND s ) y(7) = x(7)
11 Autor: Valter Avelino

Exercício 2 – Mux8_2x1
Procedimento para iniciar projeto VHDL no Quartus Prime:
1. Abrir novo projeto no Quartus Prime (Project Name > Mux8_2x1)
2. Abrir o editor VHDL (File > New > Design Files > VHDL File)
3. Inserir o arquivo VHDL do Mux_2x1 (Edit > Insert File > Mux_2x1.vhd)
4. Editar esse arquivo com a descrição VHDL no formato de fluxo de dados
para o Mux8_2x1 (ver alternativas apresentadas a seguir)
5. Salvar arquivo VHDL editado (File > Save As > Mux8_2x1)
6. Realizar a análise e síntese do projeto, corrigindo eventuais erros
7. Gerar a visão RTL do projeto (Tools > Netlist Viewers > RTL Viewer)
8. Gerar a visão no nível de portas (Tools> Netlist Viewers> Technology Map
Viewer)
9. Registrar o arquivo VHDL e a visão RTL no relatório da Aula2.

12 Autor: Valter Avelino

6
Exercício 2 – Mux8_2x1 – Alternativa 1
Alternativas de implementação:
1 – Utilizando o mesmo tipo de descrição do Mux_2x1

13 Autor: Valter Avelino

Exercício 2 – Mux8_2x1 – Alternativa 1


Representação RTL da descrição 1 Representação no nível de portas
para o Mux8_2x1: da descrição 1 para o Mux8_2x1:

14 Autor: Valter Avelino

7
Exercício 2 – Mux8_2x1 – Alternativa 2
2 – Descrição utilizando o comando WITH-SELECT

15 Autor: Valter Avelino

Exercício 2 – Mux8_2x1 – Alternativa 2


Representação RTL da descrição 2 Representação no nível de portas
para o Mux8_2x1: da descrição 2 para o Mux8_2x1:

16 Autor: Valter Avelino

8
Exercício 2 – Mux8_2x1 – Alternativa 3
3 – Descrição utilizando o comando WHEN-ELSE

17 Autor: Valter Avelino

Exercício 2 – Mux8_2x1 – Alternativa 3


Representação RTL da descrição 3 Representação no nível de portas
para o Mux8_2x1: da descrição 3 para o Mux8_2x1:

18 Autor: Valter Avelino

9
Exercício 2 – Mux8_2x1
10. Simular o projeto no modo Funcional utilizando como vetores de entrada 2
bytes compostos pela representação BCD dos quatro últimos dígitos do
número de matrícula do aluno. Por exemplo: para n° matrícula: 11108293-4
Neste caso: 11108293–4
8 2 B A
B[7..0] = 1000 0010 (82h)
9 3
A[7..0] = 1001 0011 (93h)
Atenção: Os valores de A e B não podem ser iguais.

11. Editar e salvar as formas de onda de entrada, utilizando esses vetores de


entrada, comutando a variável de seleção para demonstrar o adequado
funcionamento do multiplexador.
12. Registrar o resultado da simulação no relatório da Aula2.

19 Autor: Valter Avelino

Geração de Símbolos a partir do VHDL


• Todos os projetos realizados em VHDL podem ser transformados em
símbolos na ferramenta Quartus Prime;
• Para gerar um símbolo basta abrir o editor VHDL e realizar o comando:
File > Create/Update > Create Symbol Files for Current File;
• Para utilizar esse símbolo em uma descrição esquemática o símbolo do bloco
(Projeto.bsf – Block Symbol File) e o arquivo VHDL do mesmo
(Projeto.vhd) devem estar na pasta do projeto principal;
• Dessa forma, os projetos realizados com a descrição VHDL podem ser
utilizados na descrição esquemática do sistema (atividades realizadas no
Laboratório de Sistemas Digitais I);
• Adicionalmente, para finalizar o projeto criado em VHDL basta associar os
pinos do componente utilizado (Assignments > Pin Planner), compilar o
projeto no modo completo (Processing > Start Compilation) e realizar a
configuração do FPGA (Tools > Programmer).

20 Autor: Valter Avelino

10
Exercício 3 – MUX/Decodificador
Implementar a partir dos exercícios em VHDL do Multiplexador
(MUX8_2x1) e do Decodificador BCD para Display de 7 segmentos (aula 1)
um projeto associando esses dois tipos de componentes.
Utilizar a representação por símbolos a partir dos códigos VHDL. Interligar
cada conjunto de 4 bits da saída do MUX a um Decodificador BCD (ver
figura a seguir).
• Obter a representação em diagrama de blocos (arquivo .bdf);
• Realizar a simulação funcional do circuito (utilizando como vetores de
entrada o código BCD dos quatro últimos dígitos do seu número de
matrícula, vide exemplo no último slide);
• Registrar os resultados com o código VHDL do decodificador, o diagrama
de blocos do circuito e as formas de onda da simulação funcional no Moodle
(Relatório Aula2).

21 Autor: Valter Avelino

Exercício 3 – MUX/Decodificador
Diagrama de blocos do circuito a ser implementado no exercício 3,
utilizando os símbolos gerados pelos códigos VHDL do mux8_2x1 e do
decodificador BCD para display de 7 segmentos (dec_bcd_dispa).

22 Autor: Valter Avelino

11
Exercício 3 – MUX/Decodificador
Na simulação utilizar como dados de entrada A e B a composição do código
BCD dos quatro últimos dígitos do número de matrícula do aluno.
Por exemplo: matrícula 1 2 1 0 4 1 8 3 - 4
B A
B=0100 0001 (41h)
A=1000 0011 (83h)
A figura abaixo mostra o resultado esperado da simulação funcional do
exercício 3 utilizando como dados de entrada A = (83)h e B = (41)h)

23 Autor: Valter Avelino

12

You might also like