Professional Documents
Culture Documents
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
Exercício 1 – Mux_2x1
Mux_2x1
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)
Exercício 1 – Mux_2x1
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)
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).
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
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.
6
Exercício 2 – Mux8_2x1 – Alternativa 1
Alternativas de implementação:
1 – Utilizando o mesmo tipo de descrição do Mux_2x1
7
Exercício 2 – Mux8_2x1 – Alternativa 2
2 – Descrição utilizando o comando WITH-SELECT
8
Exercício 2 – Mux8_2x1 – Alternativa 3
3 – Descrição utilizando o comando WHEN-ELSE
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.
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).
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).
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)
12