Você está na página 1de 7

Tradução do “Laboratory Exercise 1” disponível em

<http://www.altera.com/education/univ/materials/digital_logic/labs/unv-labs.html>

Exercícios de Laboratório 1
Switches (chaves), Luzes (LEDs) e Multiplexadores

O objetivo desse exercício é aprender como conectar dispositivos de entrada e saída


simples no chip do FPGA e implementar circuitos que usem esses dispositivos. Nos vamos usar
as chaves SW17-0 na placa DE2 como entradas para o circuito. Os LEDs e os displays de sete
segmentos funcionarão como dispositivos de saída.

Parte I

A DE2 possui 18 chaves, nomeadas SW17-0, que podem ser usadas como entradas para
circuitos, e 18 LEDs vermelhos, nomeados LEDR 17-0, que podem ser usados para mostrar
valores de saídas. A Figura 1 mostra uma entidade simples em VHDL que usa os LEDs
vermelhos para mostrar o estado das chaves. Como existem LEDs vermelhos na mesma
quantidade das chaves, é conveniente representarmos vetores utilizando os mesmos, como
mostrado. Usamos atribuições simples para as 18 saídas (nos LEDs vermelhos), o que equivale
as seguintes atribuições individuais

A DE2 tem conexões hardwired entre o chip FPGA e as luzes e chaves. Para usar SW17-0 e
LEDR17-0 é necessários incluir no projeto do Quartus II o mapeamento correto dos pinos,
fornecido no Manual de Usuário da DE2. Por exemplo, o manual especifica que o SW0 está
conectado ao pino 25 do chip FPGA e o LEDR0 está ao pino AE23. Uma boa maneira de fazer as
associações de pinos é importar o arquivo chamado DE2_pin_assignments.csv, que é fornecido
no CD que acompanha a placa (DE2 Systems CD) ou na seção do programa universitário no site
da Altera. O procedimento para fazer as associações é descrito no tutorial Quartus II
Introduction using VHDL Design (Introdução ao Quartus II usando VHDL), que também pode
ser encontrado no site da Altera.

É importante entender que o arquivo de associação de pinos é útil somente se os


nomes utilizados nas entidades VHDL forem exatamente os mesmos que constam em tal
arquivo. O arquivos usa os nomes SW[0]...SW[17] e LEDR[0]...SW[17] para as chaves e luzes,
sendo essa a razão de usarmos esses nomes na entidade da Figura 1 (note que o Quartus II
usa "[]" chaves para elementos de um vetor enquanto a sintaxe de vetores em VHDL usa "()"
parênteses).
Figura 1. Código VHDL que usa chaves e LEDs da DE2.

Execute os passos abaixo para implementar um circuito correspondente ao código na Figura 1


na DE2.
1. Crie um novo projeto no Quartus II. Selecione o chip Cyclone II EP2C35F672C6, o
qual é o chip FPGA presente na DE2.
2. Em seu projeto, crie uma entidade VHDL e digite o código da Figura 1.
3. Inclua o arquivo de associação de pinos em seu projeto. Compile o projeto.
4. Carregue o projeto compilado no chip FPGA. Teste o funcionamento do circuito
mudando a posição das chaves.

Parte II

A Figura 2a mostra um circuito multiplexador 2-para-1 com um seletor de entrada s. Se s=0 a


saída do multiplexador será igual a x (m=x); se s=1, igual a y (m=y). A Figura 2b mostra a
tabela verdade do circuito, e 2c mostra a simbologia do mesmo.

Figura 2. Multiplexador 2-para-1

O multiplexador pode ser descrito (em VHDL) da seguinte forma:

Agora escreva uma entidade VHDL que inclua oito atribuições como as usadas
anteriormente para descrever o circuito da Figura 3a. Esse circuito terá duas entradas de oito
bits, X e Y, e produzirá uma saída M, também de oito bits. Se s=0, M=X; se s=1, M=Y. Nós nos
referimos a esse circuito como um multiplexador de oito bits de largura. A Figura 3b mostra a
simbologia do multiplexador citado, no qual X, Y e M são identificados como conexões de 8bits.
Execute os passos a seguir:
Figura 3. Multiplexador 2-para-1 com 8bits de largura

1. Crie um novo projeto no Quartus.


2. Inclua o arquivo do multiplexador de 8bits no projeto. Use a chave SW17 como s, as
chaves SW7-0 como X e SW15-8 com Y. Conecte as chaves SW aos LEDRs e a saída M
aos LEDG7-0.
3. Inclua o arquivo de associação de pinos no seu projeto. Como foi discutido na Parte I,
garantem que sejam usados os pinos certos do chip FPGA da DE2, garantindo a correta
conexão das chaves e LEDs utilizados no projeto.
4. Compile o projeto.
5. Carregue o circuito compilado no chip FPGA. Teste a funcionalidade do multiplexador
de oito bits mudando a posição das chaves e observe as mudanças nos LEDs.

Parte III

Na Figura 2 nós mostramos o multiplexador 2-para-1, que seleciona entre duas entrados x e y.
Para essa etapa, considere que o circuito com saída m deve selecionar entre cinco saídas
diferentes u, v, w, x, e y. A parte a da figura 4 mostra como podemos descrever um
multiplexador 5-para-1 usando quatro multiplexadores 2-para1. O circuito usa um seletor de 3
bits s2s1s0 e implementa a tabela verdade mostrada na Figura 4b. A parte c da mesma figura
mostra a simbologia do circuito.
Relembre [da Figura 3] que um multiplexador 2-para-1 de oito bits de largura pode ser
implementado usando-se instâncias de um multiplexador 2-para-1 simples. A Figura 5 aplica
esse conceito para definir um multiplexador 5-para-1 de três bits de largura, o qual contém três
instâncias do circuito da Figura 4a.
Figura 4. Multiplexador 5-para-1

Figura 5. Multiplexador 5-para-1 com seletor de 3 bits

Execute os seguintes passos para implementar o multiplexador 5-para-1 de três bits de


largura.

1. Crie um novo projeto no Quartus II.


2. Crie uma entidade VHDL para o multiplexador a ser criado. Conecte a entrada de
seleção às chaves SW17-15 e use o restante das chaves para criar cinco entradas de
3bits cada (entradas U até Y). Conecte as chaves aos LEDs vermelhos e a saída M a
três LEDs verdes.
3. Inclua o arquivo de associação de pinos no seu projeto.
4. Carregue o projeto compilado no FPGA. Teste a funcionalidade do novo circuito
mudando a posição das chaves e observe a saída nos LEDs.

Parte IV

A Figura 6 mostra um módulo decodificador para um display de 7 segmentos que tem uma
entrada de 3bits c2c1c0. Esse decodificador produz sete saídas, as quais são usadas para
mostrar um caractere no display de 7 segmentos. A Tabela 1 lista os caracteres que devem ser
mostrados para cada valos da entrada c2c1c0. Para manter a simplicidade, somente quatro
caracteres são incluídos na tabela (mais o caractere "branco", os quais são selecionados com os
códigos 100 - 111).
O display de 7 segmentos é identificados pelo índices de 0 a 6 mostrado na figura
abaixo. Cada segmento é iluminado se o valor lógico 0 for atribuído ao mesmo. Você deve
escrever uma entidade que implemente que represente os funções lógicas necessárias para
ativar cada um dos sete segmentos. Use somente atribuições simples para especificar cada
expressão booleana usada nas funções lógicas.

Figura 6. Decodificador de 7 segmentos.

Tabela 1. Códigos de caracteres.

Execute os passos seguintes:

1. Crie um novo projeto no Quartus II para o novo circuito.


2. Crie uma entidade para o decodificador de 7 segmentos. Conecte c2c1c0 às chaves
SW2-0 e conecte as saídas do decodificador no HEX0 para ser mostrado na DE2. Os
segmentos do display são chamados HEX00, HEX01, ..., HEX06, de acordo com a Figura
6. Você deve declarar uma porta de 7bits

no seu código para que os pinos sejam associados corretamente.


3. Compile o projeto.
4. Carregue o circuito criado no FPGA. Teste o circuito alterando a posição das chaves
SW2-0 e observe o display de 7 segmentos.

Parte V

Considere o circuito mostrado na Figura 7. Ele usa o multiplexador 5-para-1 de três bits de
largura para habilitar a seleção de cinco caracteres H, E, L, O e "branco". O código dos
caracteres estão na Tabela 1, usando as chaves SW14-0 para inseri-los e usando as chaves
SW17-15 para especificar o display que vai exibi-lo.
Um rascunho de código que representa o circuito é mostrado na figura 8. Note que
usamos os circuitos criados nas parte II e IV como módulos (ou subcircuitos). Você deverá
estender o código da figura 8 para que possamos usar cinco displays de 7 segmentos ao invés
de somente um. Você vai precisar de cinco instâncias para cada módulo. O propósito do circuito
final é mostrar uma palavra utilizando os cinco displays compostos de caracteres da Tabela 1 e
poder rotacionar a palavra de forma circular, movendo as letras através de dos cinco displays
quando a posição das chaves SW17-15 for alterada. Como exemplo, se a palavra a ser mostrada
for HELLO, o circuito deverá criar os padrões de saída mostrados na Tabela 2.
Figura 7. Circuito que pode selecionar e exibir cinco caracteres.

Figura 8. Código VHDL para o circuito da Figura 7.

Tabela 2. Rotação da palavra HELLO em cinco displays.

Execute os passos seguintes.


1. Crie um novo projeto no Quartus II.
2. Inclua sua entidade no projeto. Conecte as chaves SW17-15 no seletor de cada instância
do multiplexador 5-para-1 de três bits de largura. Também conecte SW14-0 em cada
instância dos multiplexadores para que seja possível criar os padrões de caracteres
mostrados na Tabela 2. Conecte as saídas dos cinco multiplexadores aos displays de 7
segmentos HEX4, HEX3, HEX2, HEX1 e HEX0.
3. Inclua o arquivo de associação de pinos e compile o projeto.
4. Carregue o projeto compilado no FPGA e teste o novo circuito alterando a posição das
chaves SW14-0 para selecionar o padrão de caracteres e das chaves SW17-15 para ver a
rotação da palavra.

Parte VI

Estenda seu circuito criado na Parte V para que todos os displays de 7 segmentos sejam
utilizados. Seu circuito deve ser capaz de mostrar palavras com até cinco caracteres nos oito
displays, e rotacionar a palavra que está sendo exibida quando o padrão das chaves SW17-15 for
alterado. Se a palavra é HELLO, então seu circuito deve produzir os padrões mostrados na
Tabela 3.

Tabela 3. Rotação da palavra HELLO em oito displays.

Siga os passos seguintes:

1. Crie um novo projeto no Quartus II.


2. Inclua sua entidade no projeto. Conecte as chaves SW17-15 nos seletores de cada
instância dos multiplexadores em seu projeto. Conecte também as chaves SW14-0 em
cada instância dos multiplexadores para que possam ser produzidos os padrões de
caracteres mostrados na Tabela. (Dica: para algumas entradas dos multiplexadores
você irá desejar selecionar o caractere "branco".) Conecte as saídas dos
multiplexadores aos displays HEX7, ..., HEX0.
3. Inclua o arquivo de associações de pinos e compile seu projeto.
4. Carregue o projeto no FPGA. Teste a funcionalidade do circuito selecionando a posição
das chaves SW14-0 na sequência correta e alterando SW17-15 para observar a rotação da
palavra.

Você também pode gostar