Buscar

745325_729663_Labsisdig-Roteiro-Aulas-9e10-26Jan2014

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 1 
 
 
 
Aulas 9 e 10 
 
Circuitos combinacionais: 
Multiplexadores, demultiplexadores, 
somadores e comparadores. 
 Introdução ao uso de blocos (ou módulos) 
e de megafunções 
 
 
Objetivo 
 
O objetivo destas aulas é aprender a projetar e implementar sistemas digitais por meio da 
combinação de outros sistemas, mais simples, denominados blocos ou módulos, que já tenham 
sido previamente desenvolvidos pelo próprio projetista ou que façam parte de uma “biblioteca” 
de módulos, desenvolvida por terceiros e colocada à disposição do projetista. No ambiente 
Quartus II esses módulos se denominam “megafunções”. 
 
Uma megafunção é um bloco construtivo que pode ser combinado com outros blocos para o 
desenvolvimento de sistemas mais complexos, no ambiente Quartus II. Uma biblioteca de 
megafunções denominada “Biblioteca de Módulos Parametrizáveis” (em inglês, Library of 
Parameterized Modules – LPM”) faz parte do ambiente Quartus II. 
 
Será dado um problema, para cuja solução serão utilizados os seguintes blocos, desenvolvidos 
nesta aula, em VHDL, pelos próprios alunos: 
 
 Multiplexador com quatro entradas de dados e uma entrada de habilitação; 
 Dois tipos diferentes de decodificador para displays de sete segmentos. 
 
Também serão utilizadas as seguintes megafunções, constantes na Biblioteca de Módulos 
Parametrizáveis (LPM) do Quartus II, devidamente configuradas pelo aluno: 
 
 LPM_ADD_SUB (somador/subtrator) 
 LPM_COMPARE (comparador). 
 
O experimento deverá ser feito no laboratório, em grupos de três alunos. 
 
A pasta com todos os arquivos do projeto (“project”) aula_9, desenvolvido nas aulas 9 e 10, 
deverá ser preservada em um CD ou pen drive. Esse projeto será utilizado novamente na 
Aula 14, que abordará o tema “Teste e Simulação do Funcionamento de Sistemas Digitais”. 
 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 2 
 
 
 
Anexos a este Guia de Aulas 
 
Visando facilitar a execução do experimento, este Guia de Aulas contém três documentos 
anexos, abordando os seguintes assuntos: 
 
 Anexo I: Multiplexadores e demultiplexadores 
Faz uma breve síntese dos principais conceitos relacionados a multiplexadores e 
demultiplexadores, incluindo exemplos de produtos disponíveis comercialmente 
(multiplexador TTL 74LS151 e demultiplexador TTL 74LS138). 
 
 Anexo II: Somadores e comparadores 
Faz uma breve síntese dos principais conceitos relacionados a somadores e comparadores: 
somador completo, somador paralelo, somador BCD e somador/subtrator. São dados 
exemplos de produtos disponíveis comercialmente (somador TTL 74LS83 e comparador de 
magnitude TTL 74LS85). 
 
 Anexo III: Descrição de multiplexadores em VHDL 
Contém cinco descrições completas de um multiplexador com duas entradas de dados. 
Também contém uma descrição de multiplexador com quatro entradas de dados, sem entrada 
de habilitação, e uma última descrição, correspondente a um multiplexador com quatro 
entradas de dados e uma entrada de habilitação. O objetivo desse Anexo é mostrar que um 
mesmo sistema pode ser descrito de várias maneiras diferentes. Descrições diferentes poderão 
gerar circuitos diferentes. Com a prática, o projetista aprenderá a descrever seus sistemas de 
forma a permitir que o compilador gere circuitos mais simples, mais rápidos e/ou mais 
econômicos. 
 
 
 
 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 3 
 
 
 
Experimento de Laboratório 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
O trabalho consistirá em primeiramente construir os módulos necessários, ou configurar 
megafunções de acordo a necessidade e, depois, juntar esses módulos em uma entidade de nível 
mais alto que contenha o sistema proposto. 
 
As descrições dos circuitos deverão ser salvas, obrigatoriamente, em arquivos cujo nome é 
idêntico ao nome da entidade (“entity”) do código VHDL. 
 
Observar também que, antes de cada compilação, é fundamental que se informe ao Quartus II 
qual é, naquele momento, a entidade de maior nível. 
 
Projete um sistema combinacional com as seguintes características: 
 
Entradas: A=A1A0; B=B1B0; Sel=Sel1Sel0. 
Saídas: NUM (display de sete segmentos); LETRA: (display de sete segmentos). 
 
A, B e Sel são variáveis binárias, de dois bits cada uma. 
 
Sel é usado para escolher o que será mostrado no display NUM: 
 Sel = “00”  Display NUM mostra o valor de A, em decimal; 
 Sel = “01”  Display NUM mostra o valor de B, em decimal; 
 Sel = “10”  Display NUM mostra o resultado de A+B, em decimal; 
 Sel = “11”  Display NUM é apagado; 
 
O display LETRA mostrará a letra “A”, maiúscula, quando A>B; mostrará a letra “b”, 
minúscula, quando B>A; mostrará três traços horizontais quando A=B. 
 
Implemente o sistema proposto no kit Altera DE2. 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 4 
 
1. Diagrama em bloco do sistema a ser construído 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2. Diagrama do sistema com seus blocos funcionais 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Vcc 
Sel0 
Sel1 
GND 
GND I02 
I01 
I00 
NUM 
LETRA6 
LETRA5 
LETRA4 
LETRA3 
LETRA2 
LETRA1 
LETRA0 
NUM6 
NUM5 
NUM4 
NUM3 
NUM2 
NUM1 
NUM0 
A1 
 
A0 
B1 
 
B0 
Sel1 
 
Sel0 
Aulas_9e10 
LETRA 
NUM 
Sel 
B 
A 
Meu_Mux 
S1 S0 
I32 
I31 
I30 
I22 
I21 
I20 
I12 
I11 
I10 X2 
X1 
X0 
NUM6 
NUM5 
NUM4 
NUM3 
NUM2 
NUM1 
NUM0 
Conv_NUM-7seg 
LETRA 
LETRA6 
LETRA5 
LETRA4 
LETRA3 
LETRA2 
LETRA1 
LETRA0 
Conv_LETRA-7seg 
Somador 
S2 
S1 
S0 
A0 
A1 
B0 
B1 
Comparador 
C1 
 
C0 
Vcc 
Vcc 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 5 
 
3. Implementação dos blocos funcionais 
 
3.1 Implementação de um multiplexador no kit DE2 
 
a) Crie, no diretório c:, uma pasta denominada A9dddhhmmGx, onde: 
ddd: Dia da semana em que ocorre a aula (seg, ter, qua, qui, sex, sab) 
hhmm: Horário de início da aula (0700, 0850, 1040, 1330, etc.) 
x: Número do grupo, conforme o número da bancada correspondente (I, II, III, IV) 
Ao final da aula, salve essa pasta em um CD ou pen drive, pois ela será necessária para 
o desenvolvimento da Aula 14 
 
b) Usando o software Quartus II, crie um projeto (“project”) denominado aula_9 na pasta 
criada no item a. O nome da entidade de mais alto nível de seu projeto é automaticamente 
escolhido pelo Quartus como “aula_9”, mesmo nome do projeto criado e poderá ser alterado 
sempre que necessário. Levando em consideração que o projeto será implementado 
fisicamente no kit Altera DE2, é obrigatório que se escolha, como alvo da compilação, a 
família de dispositivos Cyclone II e o dispositivo EP2C35F672C6. 
 
c) Crie um novo arquivo de entradade projeto (“design”) em VHDL (New  Design Files  
VHDL file). Copie deste roteiro o código de um multiplexador com quatro entradas de 
dados e uma entrada de habilitação. Cole esse código no arquivo criado. 
 
d) Salve o código no diretório de seu projeto (“Project”), com a extensão “.vhd” e o mesmo 
nome da entidade (“entity”) do seu código VHDL (mux_4entr_c_enable). 
 
e) Altere o nome da entidade de mais alto nível de seu projeto para o nome do arquivo VHDL 
que estiver sendo editado (com o arquivo aberto na tela, faça: Project  Set as Top Level 
Entity). 
 
f) Compile seu “design” (Processing  Start Compilation). Caso ocorram mensagens de erro, 
corrija-os editando seu “design” e compilando novamente, até que não ocorram mais erros. 
 
g) Leia cuidadosamente as mensagens de aviso (“Warning”), pois algumas dessas mensagens 
podem ser muito importantes. Veja primeiro os avisos críticos (“Critical Warning”) e depois 
veja os demais avisos. 
 
h) Caso ocorra o aviso: “Warning: The Reserve All Unused Pins setting has not been specified, 
and will default to 'As output driving ground'”, deve-se obrigatoriamente mudar para: “As 
input tri-stated”, para evitar o risco de danos ao kit DE2. (Assignments  Device  
Device and Pin Options  Unused Pins  As input tri-stated  OK  OK). Compile 
novamente o “design”, assegurando-se de que o aviso não aparece mais. 
 
i) Os avisos “Warning: Feature LogicLock is only available with a valid subscription license. 
Please purchase a software subscription to gain full access to this feature” e “Warning: 
Found ‘n’ output pins without output pin load capacitance assignment” não são 
importantes para nosso projeto. 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 6 
 
 
j) Quando o projeto foi criado, é provável que tenha sido automaticamente assumido pelo 
Quartus II que o nome da entidade de mais alto nível era “aula_9”. Posteriormente, o nome 
da entidade de maior nível foi alterado e a entidade “aula_9” passou a não existir mais em 
nosso projeto. Se isso ocorreu, pode ocorrer o aviso “Warning: Ignored assignments for 
entity ‘aula_9’ -- entity does not exist in design”, que deverá ser desconsiderado. 
 
k) Se desejado, o Quartus II pode mostrar um diagrama do circuito que ele gerou a partir da 
descrição do circuito compilada, que corresponde à entidade de mais alto nível do projeto 
(Tools  Netlist Viewers  RTL Viewer). 
 
l) Conforme será visto na Aula 14, neste momento também poderia ser feita uma simulação do 
funcionamento do circuito, observando as formas de onda de saída geradas pelo Quartus II a 
partir das formas de onda de entrada desenhadas pelo projetista (New  
Verification/Debugging Files  Vector Waveform Files). No caso deste experimento, todos 
os circuitos propostos já foram previamente testados e por isso a execução das simulações 
não é necessária. 
m) Nos experimentos deste laboratório que envolvem FPGA, os circuitos utilizarão, como 
entradas e como saídas, os recursos físicos disponíveis no kit DE2 (chaves, botões, LEDs, 
displays, etc.). Deve-se lembrar que esses recursos já estão fisicamente conectados a pinos 
muito bem definidos do FPGA. Portanto, neste momento é indispensável escolher os 
recursos do kit DE2 que serão usados na implementação. Para este projeto, poderíamos 
escolher os seguintes recursos: 
 
 
 
Pinos do 
projeto 
Entrada/Saída 
Recursos físicos do 
kit DE2 
Nº do pino 
do FPGA 
a Entrada SW17 PIN_V2 
b Entrada SW16 PIN_V1 
c Entrada SW15 PIN_U4 
d Entrada SW14 PIN_U3 
Sel[1] Entrada SW1 PIN_N26 
Sel[0] Entrada SW0 PIN_N25 
En Entrada SW8 PIN_B13 
Z Saída LEDG0 PIN_AE22 
 
As informações necessárias ao preenchimento da coluna mais à direita desta tabela 
encontram-se no documento DE2 User Manual. No capítulo quatro do Manual do Usuário 
do DE2 existem diversas tabelas que mostram como os recursos do kit DE2 estão ligados 
aos pinos do FPGA. 
 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 7 
 
n) Para vincular os “pinos” de entrada e de saída do projeto aos pinos físicos do FPGA: 
(Assignments  Pins). Dar um clique duplo em “Location”, na linha correspondente a cada 
pino (“node”), e digitar o nome do pino correspondente no FPGA. Compile novamente o 
projeto. 
 
o) Configuração (“programação”) do kit DE2. 
 
1. Certifique-se de que a chave RUN/PROG do kit DE2 esteja na posição RUN. Ligue a 
entrada “USB Blaster” do kit DE2 ao computador, utilizando para isso um cabo USB. 
Conecte o kit DE2 a uma fonte de energia 127V A.C. e ligue-o (botão vermelho). 
 
2. O FPGA pode agora ser configurado, utilizando o módulo de programação do Quartus II 
(Tools  Programmer) e selecionando o arquivo de configuração adequado, com a 
extensão “sof” (SRAM Object File). 
 
p) Concluída a configuração, o circuito desenvolvido já poderá ser utilizado. Esse circuito será 
posteriormente utilizado como um dos módulos de nosso projeto. 
 
q) Crie um símbolo para o multiplexador que você desenvolveu. Com o arquivo 
mux_4entr_c_enable.vhd aberto na tela do Quartus II, faça: File  Create/Update  Create 
Symbol Files for Current File. 
 
r) É recomendável que o procedimento utilizado para o desenvolvimento do módulo 
mux_4entr_c_enable , incluindo a implementação no kit DE-2, seja repetido para cada um 
dos módulos desenvolvidos dentro de seu projeto (“Project”). Isso não está sendo feito aqui 
apenas por uma questão de economia de tempo, já que todos os módulos já foram 
previamente testados pelo professor. 
 
3.2 Introdução ao uso de megafunções 
 
a) Crie um novo arquivo de projeto (“design”) do tipo Block Diagram/Schematic File. Salve-o 
dentro de seu projeto (“project”) com o nome de somador_comparador.bdf. 
b) Informe ao Quartus II que agora somador_comparador.bdf passou a ser a entidade de mais 
alto nível do projeto aula_9. (com o arquivo aberto na tela, faça: Project  Set as Top Level 
Entity). 
c) Crie uma megafunção denominada AmaisB: 
1. Clique no ícone com o símbolo de uma porta AND. 
2. Clique em MegaWizard Plug-In Manager 
3. Escolha “Create a new custom megafunction variation” e clique “Next” 
4. Escolha a família “Cyclone II”, o tipo VHDL para o arquivo de saída e o nome AmaisB 
para o arquivo de saída. Expanda o item “Arithmetic” em “Select a megafunction from 
the list below”. Selecione “LPM_ADD_SUB”. Clique “Next”. 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 8 
 
5. Escolha “2 bits” como a largura de “dataa” e “datab”. Escolha “Addition only” como o 
modo de operação do somador/subtrator. Clique “Next”. 
6. Informe ao Quartus II que A e B são variáveis sem sinal. Clique “Next”. 
7. Marque o quadrinho create a carry output. Clique “Next”. 
8. Clique em “No” como resposta à pergunta “Do you want to pipeline the function”. Clique 
“Next”. 
9. Clique “Finish”. 
10. Clique “Finish”. 
11. Clique “OK”. 
12. Sua megafunção está pronta e já pode ser usada em seu projeto. 
d) Use procedimento similar para criar uma megafunção “Compara”: 
1. Clique no ícone com o símbolo de uma porta AND. 
2. Clique em MegaWizard Plug-In Manager 
3. Escolha “Create a new custom megafunction variation” e clique “Next” 
4. Escolha a família “Cyclone II”, o tipo VHDL para o arquivo de saída e o nome 
Comparador para o arquivo de saída.Expanda o item “Arithmetic” em “Select a 
megafunction from the list below”. Selecione “LPM_COMPARE”. Clique “Next”. 
5. Escolha 2 bits como resposta à pergunta “How many ‘dataa’ input bits do you want to 
compare to the ‘datab’ input bits”. Escolha “a>b” e “a<b” como resposta à pergunta 
“Which outputs do you want?”. Clique “Next”. 
6. Informe ao Quartus II que ‘datab’ não é constante e que a comparação é sem sinal. 
Clique “Next”. 
7. Clique em “No” como resposta à pergunta “Do you want to pipeline the function”. Clique 
“Next”. 
8. Clique “Next”. 
9. Clique “Finish”. 
10. Clique “OK”. 
11. Sua megafunção está pronta e já pode ser usada em seu projeto. 
 
3.3 Construção de decodificadores para displays de sete segmentos 
 
a) Crie um novo arquivo de entrada de projeto (“design”) em VHDL (New  Design Files  
VHDL file). Copie deste roteiro o código a seguir. Cole esse código no arquivo criado. 
 
b) Salve o código no diretório de seu projeto (“Project”), com a extensão “.vhd” e o mesmo 
nome da entidade (“entity”) do seu código VHDL (Conv_zero_a_seis_para_7seg). 
 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 9 
 
c) Altere o nome da entidade de mais alto nível de seu projeto para o nome do arquivo VHDL 
que estiver sendo editado (com o arquivo aberto na tela, faça: Project  Set as Top Level 
Entity). 
 
d) Compile seu “design” (Processing  Start Compilation). Caso ocorram mensagens de erro, 
corrija-os editando seu “design” e compilando novamente, até que não ocorram mais erros. 
 
e) Leia cuidadosamente as mensagens de aviso (“Warning”), pois algumas dessas mensagens 
podem ser muito importantes. Veja primeiro os avisos críticos (“Critical Warning”) e depois 
veja os demais avisos. 
 
f) Crie um símbolo para este decodificador (com o arquivo aberto na tela, faça: File  Create / 
Update  Create Symbol Files for Current File). 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
g) Crie um novo arquivo de entrada de projeto (“design”) em VHDL (New  Design Files  
VHDL file). Copie deste roteiro o código a seguir. Cole esse código no arquivo criado. 
 
-- Conversor especial, de código de binário para display de sete segmentos 
-- Três bits de entrada, em binário. 
-- Para entradas variando de “000” até “110”, a saída mostra o decimal correspondente. 
-- Para entrada igual a “111”, o display é apagado. 
-- Adaptado de Peter Ashenden, Digital Design, págs. 67-69. 
 
library ieee; 
use ieee.std_logic_1164.all; 
 
entity Conv_zero_a_seis_para_7seg is 
 port ( binario : in std_logic_vector(2 downto 0); 
 seg : out std_logic_vector(7 downto 1) ); 
end entity Conv_zero_a_seis_para_7seg; 
 
architecture behavior of Conv_zero_a_seis_para_7seg is 
begin 
 with binario select 
 seg <= "1000000" when "000", -- 0 (só segmento g fica desligado) 
 "1111001" when "001", -- 1 (segmentos b, c ficam ligados) 
 "0100100" when "010", -- 2 
 "0110000" when "011", -- 3 
 "0011001" when "100", -- 4 
 "0010010" when "101", -- 5 (só segmentos b, e ficam desligados) 
 "0000010" when "110", -- 6 
 "1111111" when others; -- (apaga o display) 
end architecture behavior; 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 10 
 
h) Salve o código no diretório de seu projeto (“Project”), com a extensão “.vhd” e o mesmo 
nome da entidade (“entity”) do seu código VHDL (Conv_esp_7seg). 
 
i) Altere o nome da entidade de mais alto nível de seu projeto para o nome do arquivo VHDL 
que estiver sendo editado (com o arquivo aberto na tela, faça: Project  Set as Top Level 
Entity). 
 
j) Compile seu “design” (Processing  Start Compilation). Caso ocorram mensagens de erro, 
corrija-os editando seu “design” e compilando novamente, até que não ocorram mais erros. 
 
k) Leia cuidadosamente as mensagens de aviso (“Warning”), pois algumas dessas mensagens 
podem ser muito importantes. Veja primeiro os avisos críticos (“Critical Warning”) e depois 
veja os demais avisos. 
 
l) Crie um símbolo para este decodificador (com o arquivo aberto na tela, faça: File  Create / 
Update  Create Symbol Files for Current File). 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-- Conversor especial para para display de sete segmentos 
-- Dois bits de entrada. 
-- Para entrada igual a “01”, a saída mostra a letra “B”. 
-- Para entrada igual a “10”, a saída mostra a letra “A”. 
-- Para outras combinações de entrada, a saída mostra três traços horizontais. 
-- Adaptado de Peter Ashenden, Digital Design, págs. 67-69. 
 
library ieee; 
use ieee.std_logic_1164.all; 
 
entity Conv_esp_7seg is 
 port ( entrada : in std_logic_vector(1 downto 0); 
 seg : out std_logic_vector(7 downto 1) ); 
end entity Conv_esp_7seg; 
 
architecture behavior of Conv_esp_7seg is 
begin 
 with entrada select 
 seg <= "0001000" when "10", -- “A” (só segmento d fica desligado) 
 "0000011" when "01", -- “B” (só segmentos a e b ficam desligados) 
 "0110110" when others; -- (mostra três traços horizontais) 
end architecture behavior; 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 11 
 
4. Construção de sistemas utilizando módulos e megafunções 
previamente definidos 
 
a) Se já não estiver aberto, abra o arquivo somador_comparador.bdf. 
b) Informe ao Quartus II que que somador_comparador.bdf voltou a ser a entidade de mais alto 
nível do projeto aula_9 (com o arquivo aberto na tela, faça: Project  Set as Top Level 
Entity). 
c) Desenhe o circuito mostrado na página 12, observando o seguinte: 
 Na interligação de componentes do circuito, um traço fino representa um fio (“node”), 
enquanto que um traço grosso representa um conjunto de fios ou barramento (“bus”). Por 
exemplo, bina[2..0] indica um barramento composto de três fios: bina[2], Bina[1] e 
bina[0]. 
 No editor de arquivos do tipo “.bdf” existe uma ferramenta para desenhar fios 
(“Orthogonal Node Tool”) e uma ferramenta para desenhar barramentos (“Orthogonal 
Bus Tool”). 
 Quando necessário, dê nomes aos fios e aos barramentos: Escolha a ferramenta de 
seleção (“Selection Tool”). Clique com o botão direito do mouse sobre o fio ou 
barramento. Na janela que se abre escolha “Properties” e entre com o nome do fio ou do 
barramento. 
 Os dois pontos interligados por um barramento precisam ter a mesma dimensão do 
barramento. Por exemplo, um barramento B[2..6] pode ser utilizado para interligar uma 
saída denominada S[1..5] a uma entrada denominada A[0..4], pois todas essas entidades 
têm dimensão cinco. Nesse caso, o ponto S[1] será interligado a A[0] pelo fio B[2], o 
ponto S[2] será interligado a A[1] pelo fio B[3], e assim por diante. 
 Dois fios com o mesmo nome indicam que eles consistem em um único ponto, em termos 
elétricos. 
 Um único símbolo de pino pode representar vários pinos, o que é indicado pelo nome 
associado ao símbolo do pino. Por exemplo, um símbolo identificado pelo nome 
letra[7..1] indica um conjunto de sete pinos: letra[7], letra[6], ... letra[1]. 
d) Salve e compile seu projeto. Caso ocorram mensagensde erro, corrija-os editando seu 
“design” e compilando novamente, até que não ocorram mais erros. 
e) Leia cuidadosamente as mensagens de aviso (“Warning”), pois algumas dessas mensagens 
podem ser muito importantes. Veja primeiro os avisos críticos (“Critical Warning”) e depois 
veja os demais avisos. 
f) Escolha os recursos do kit DE2 que serão usados na implementação. 
g) Apague as designações de pinos feitas anteriormente (para o multiplexador) e faça a nova 
designação dos pinos do FPGA. Para este projeto, recomenda-se que os recursos e os pinos 
correspondentes sejam escolhidos conforme sugerido na tabela da página 13. 
 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 12 
 
 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 13 
 
 
Pinos do 
projeto 
Entrada/Saída 
Recursos físicos do 
kit DE2 
Nº do pino 
do FPGA 
Pino_A[1] Entrada SW17 PIN_V2 
Pino_A[0] Entrada SW16 PIN_V1 
Pino_B[1] Entrada SW15 PIN_U4 
Pino_B[0] Entrada SW14 PIN_U3 
Selec[1] Entrada SW1 PIN_N26 
Selec[0] Entrada SW0 PIN_N25 
num[6] Saída HEX7[6] PIN_N9 
num[5] Saída HEX7[5] PIN_P9 
num[4] Saída HEX7[4] PIN_L7 
num[3] Saída HEX7[3] PIN_L6 
num[2] Saída HEX7[2] PIN_L9 
num[1] Saída HEX7[1] PIN_L2 
num[0] Saída HEX7[0] PIN_L3 
letra[6] Saída HEX0[6] PIN_V13 
letra[5] Saída HEX0[5] PIN_V14 
letra[4] Saída HEX0[4] PIN_AE11 
letra[3] Saída HEX0[3] PIN_AD11 
letra[2] Saída HEX0[2] PIN_AC12 
letra[1] Saída HEX0[1] PIN_AB12 
letra[0] Saída HEX0[0] PIN_AF10 
 
h) Configuração (“programação”) do kit DE2: 
1. Certifique-se de que a chave RUN/PROG do kit DE2 esteja na posição RUN. Ligue a 
entrada “USB Blaster” do kit DE2 ao computador, utilizando para isso um cabo USB. 
Conecte o kit DE2 a uma fonte de energia 127V A.C. e ligue-o (botão vermelho). 
2. O FPGA pode agora ser configurado, utilizando o módulo de programação do Quartus 
II (Tools  Programmer) e selecionando o arquivo de configuração adequado, com a 
extensão “sof” (SRAM Object File). 
i) Concluída a configuração, o circuito desenvolvido já poderá ser utilizado. 
 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 14 
 
 
Para casa: 
 
Utilizando o ambiente Quartus II, projete um circuito para efetuar a soma de dois números 
decimais de um dígito cada um, codificados em BCD. A saída também deverá estar codificada 
em BCD. Sugestão: utilize megafunções ou VHDL. Não é necessário implementar o circuito no 
kit DE2. 
 
 
 
x[3..0]
y [3..0]
dez
unid[3..0]
soma_bcd
inst
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 15 
 
Anexo I: 
Multiplexadores e Demultiplexadores 
 
 
 
Multiplexadores 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Exemplo de multiplexador comercial TTL: 74LS151 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 16 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Demultiplexadores 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
O0 
O1 
I 
S 
Entrada 
de dados 
Entrada de 
seleção 
Saídas de 
dados 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 17 
 
Exemplo de demultiplexador comercial TTL: 74LS138 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 18 
 
 
Anexo II: 
Somadores e Comparadores 
 
 
 
 
 
Somadores binários 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Somador paralelo de quatro bits 
 
 
 
 
 
 
C
in
 A B C
out
 S 
0 0 0 0 0 
0 0 1 0 1 
0 1 0 0 1 
0 1 1 1 0 
1 0 0 0 1 
1 0 1 1 0 
1 1 0 1 0 
1 1 1 1 1 
Somador Completo 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 19 
 
 
Exemplo de somador comercial TTL: 74LS83 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Somador BCD 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 20 
 
 
Somador/Subtrator binário 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Comparador de magnitude comercial: 74LS85 (TTL) 
 
 
 
 
 
 
= “Full adder” - Somador completo (ou “total”) 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 21 
 
 
Anexo III: 
Descrição de Multiplexadores em VHDL 
 
 
 
Examine cada um dos códigos VHDL a seguir. Todos eles descrevem multiplexadores com duas 
entradas de dados e uma entrada de seleção. Procure entender cada uma das descrições 
apresentadas. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-- Multiplexador com duas entradas de dados 
-- Abordagem estrutural 
 
entity mux_equacao is 
 port ( I0, I1 : in bit; 
 sel : in bit; 
 Z : out bit); 
end mux_equacao; 
 
architecture arch of mux_equacao is 
begin 
 Z <= (I0 and not sel) or (I1 and sel); 
end arch; 
-- Multiplexador com duas entradas de dados 
-- Abordagem comportamental – Código concorrente 
 
entity mux_when_else is 
 port ( I0, I1 : in bit; 
 sel : in bit; 
 Z : out bit); 
end mux_when_else; 
 
architecture arch of mux_when_else is 
begin 
 Z <= I0 when sel = '0' else 
 I1; 
end arch; 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 22 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-- Multiplexador com duas entradas de dados 
-- Abordagem comportamental – Código concorrente 
 
entity mux_select is 
 port ( I0, I1 : in bit; 
 sel : in bit; 
 Z : out bit); 
end mux_select; 
 
architecture arch of mux_select is 
begin 
 with sel selectZ <= I0 when '0', 
 I1 when others; 
end arch; 
-- Multiplexador com duas entradas de dados. Código sequencial 
 
entity mux_if_then_else is 
 port ( I0, I1 : in bit; 
 sel : in bit; 
 Z : out bit); 
end mux_if_then_else; 
 
architecture arch of mux_if_then_else is 
begin 
 process (I0, I1, sel) 
 begin 
 if (sel = '0') then 
 Z <= I0; 
 else 
 Z <= I1; 
 end if; 
 end process; 
end arch; 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 23 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Cada um dos códigos VHDL a seguir descreve um multiplexador com quatro entradas de dados e 
duas entradas de seleção. Procure entender cada uma das descrições apresentadas. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-- Multiplexador com duas entradas de dados 
-- Código sequencial 
 
entity mux_case is 
 port ( I0, I1 : in bit; 
 sel : in bit; 
 Z : out bit); 
end mux_case; 
 
architecture arch of mux_case is 
begin 
 process (I0, I1, sel) 
 begin 
 case sel is 
 when '0' => Z <= I0; 
 when others => Z <= I1; 
 end case; 
 end process; 
end arch; 
-- Multiplexador com quatro entradas de dados 
 
library ieee; 
use ieee.std_logic_1164.all; 
 
entity mux_4entradas is 
 port ( a, b, c, d : in std_logic; 
 sel : in integer range 0 to 3; 
 Z : out std_logic); 
end mux_4entradas; 
 
architecture arch of mux_4entradas is 
begin 
 with sel select 
 Z <= a when 0, 
 b when 1, 
 c when 2, 
 d when others; 
end arch; 
 
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS 
Laboratório de Sistemas Digitais 
Guia de Aulas 
Elaborado por: Prof. Dr. Dilmar Malheiros Meira 
 
Domingo, 26/01/2014 – 17h50min Página 24 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-- Multiplexador com quatro entradas de dados e 
-- e uma entrada de habilitação ativa no nível alto. 
-- Código sequencial 
 
library ieee; 
use ieee.std_logic_1164.all; 
 
entity mux_4entr_c_enable is 
 port ( a, b, c, d : in std_logic; 
 sel : in integer range 0 to 3; 
 en : in std_logic; 
 Z : out std_logic); 
end mux_4entr_c_enable; 
 
architecture arch of mux_4entr_c_enable is 
begin 
 process (a, b, c, d, sel, en) 
 begin 
 if (en = '0') then 
 Z <= '0'; 
 else 
 case sel is 
 when 0 => Z <= a; 
 when 1 => Z <= b; 
 when 2 => Z <= c; 
 when others => Z <= d; 
 end case; 
 end if; 
 end process; 
end arch;

Outros materiais

Materiais relacionados

Perguntas relacionadas

Perguntas Recentes