Mudanças entre as edições de "Laboratório - Projeto e implementação de um conversor BCD para SSD"
Ir para navegação
Ir para pesquisar
(→Dicas) |
|||
(14 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 9: | Linha 9: | ||
;Procedimento de laboratório: | ;Procedimento de laboratório: | ||
− | + | ==Passo 1 - Preparação== | |
* Identifique no kit FPGA (DE2-115) as chaves, leds e mostrador que será utilizado | * Identifique no kit FPGA (DE2-115) as chaves, leds e mostrador que será utilizado | ||
:*As chaves SW3, SW2, SW1, SW0 serão utilizadas como as entradas bcd_A, bcd_B, bcd_C, bcd_D. | :*As chaves SW3, SW2, SW1, SW0 serão utilizadas como as entradas bcd_A, bcd_B, bcd_C, bcd_D. | ||
Linha 151: | Linha 151: | ||
a = (A + C + B D + B'D')' | a = (A + C + B D + B'D')' | ||
− | + | ==Passo 2 - Obtenção do circuito em VHDL== | |
* Uma vez obtidas as expressões lógicas de cada saída, escreva o código VHDL que implemente essas funções, utilizando apenas portas ('''and''', '''or''' e '''not''') | * Uma vez obtidas as expressões lógicas de cada saída, escreva o código VHDL que implemente essas funções, utilizando apenas portas ('''and''', '''or''' e '''not''') | ||
<syntaxhighlight lang=vhdl> | <syntaxhighlight lang=vhdl> | ||
+ | -- File: bcd2ssd.vhd | ||
+ | -- Autor: Marcos Moecke | ||
+ | -- Data: 19 out. 2023 | ||
+ | |||
-- declaração da entidade. descrição dos nomes do circuito, entradas e saidas | -- declaração da entidade. descrição dos nomes do circuito, entradas e saidas | ||
− | entity | + | entity bcd2ssd is |
port ( | port ( | ||
bcd_A, bcd_B, bcd_C, bcd_D : in bit; -- bits da entrada BCD | bcd_A, bcd_B, bcd_C, bcd_D : in bit; -- bits da entrada BCD | ||
Linha 162: | Linha 166: | ||
end entity; | end entity; | ||
-- descrição do circuito a ser implementado no FPGA | -- descrição do circuito a ser implementado no FPGA | ||
− | architecture ifsc_v1 of | + | architecture ifsc_v1 of bcd2ssd is |
begin | begin | ||
+ | -- Conectar as entradas aos leds | ||
+ | led_a <= bcd_A; | ||
+ | led_b <= | ||
+ | |||
-- Descrever as funcoes logicas minimizadas de cada saida SSD | -- Descrever as funcoes logicas minimizadas de cada saida SSD | ||
− | -- a = A'B'C'D + B C'D' (função obtida para o display de | + | -- a = A'B'C'D + B C'D' (função obtida para o display de anodo comum) |
ssd_a <= ((not bcd_A) and (not bcd_B) and (not bcd_C) and bcd_D) or (bcd_B and (not bcd_C) and (not bcd_D)); | ssd_a <= ((not bcd_A) and (not bcd_B) and (not bcd_C) and bcd_D) or (bcd_B and (not bcd_C) and (not bcd_D)); | ||
− | -- b = B C'D + B C D' (função obtida para o display de | + | |
+ | -- b = B C'D + B C D' (função obtida para o display de anodo comum) | ||
ssd_b <= | ssd_b <= | ||
− | + | ||
end architecture; | end architecture; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
* Fazer a análise e síntese desse circuito. Corrija eventuais erros. | * Fazer a análise e síntese desse circuito. Corrija eventuais erros. | ||
− | * Se desejar realize a simulação com o Modelsim, variando as entradas de 0 a 15 | + | * Se desejar realize a simulação com o Modelsim, variando as entradas de 0 a 15. (opcional) |
− | * Anote os valores das saídas para as entradas entre 10 e 15. | + | :* Verifique se os valores das saídas estão corretos para 0 até 9. |
+ | :* Anote os valores das saídas para as entradas entre 10 e 15. Como os valores não foram predeterminados (foi usado o ''don't care''), o mostrador pode acender de forma aleatória. | ||
− | + | ==Passo 3 - Gravação do circuito no kit FPGA== | |
*Veja a documentação em [[Preparando para gravar o circuito lógico no FPGA]] | *Veja a documentação em [[Preparando para gravar o circuito lógico no FPGA]] | ||
*Para o kit DE2-115, devemos escolher a FAMILY: '''Cyclone® IV E''' e o DEVICE: '''EP4CE115F29C7''' | *Para o kit DE2-115, devemos escolher a FAMILY: '''Cyclone® IV E''' e o DEVICE: '''EP4CE115F29C7''' | ||
Linha 229: | Linha 239: | ||
|- | |- | ||
| ssd_c | | ssd_c | ||
− | | HEX0[ | + | | HEX0[2] |
| | | | ||
|- | |- | ||
| ssd_d | | ssd_d | ||
− | | HEX0[ | + | | HEX0[3] |
| | | | ||
|- | |- | ||
| ssd_e | | ssd_e | ||
− | | HEX0[ | + | | HEX0[4] |
| | | | ||
|- | |- | ||
| ssd_f | | ssd_f | ||
− | | HEX0[ | + | | HEX0[5] |
| | | | ||
|- | |- | ||
| ssd_g | | ssd_g | ||
− | | HEX0[ | + | | HEX0[6] |
| | | | ||
|} | |} | ||
Linha 251: | Linha 261: | ||
* Após feita a configuração, realiza a programação (download do bitstream), conforme descrito em[[Programando o FPGA através da USB-Blaster]] | * Após feita a configuração, realiza a programação (download do bitstream), conforme descrito em[[Programando o FPGA através da USB-Blaster]] | ||
− | + | ==Passo 4 - Testes== | |
*Para verificar se o circuito funciona, realie seguintes testes, acionando as chaves e observando o resultado nos LEDs e no mostrador: | *Para verificar se o circuito funciona, realie seguintes testes, acionando as chaves e observando o resultado nos LEDs e no mostrador: | ||
* Selecione nas chaves SW3, SW2, SW1, SW0, seguidamento os valores binários correspondentes aos valores de 0 a 15 | * Selecione nas chaves SW3, SW2, SW1, SW0, seguidamento os valores binários correspondentes aos valores de 0 a 15 | ||
Linha 258: | Linha 268: | ||
* Anote quais leds acendem para os valores 10 a 15. | * Anote quais leds acendem para os valores 10 a 15. | ||
− | + | ==Passo 5 - Documentação== | |
* Ao longo do procedimento anote os valores e procedimentos realizados para incluí-los no relatório. | * Ao longo do procedimento anote os valores e procedimentos realizados para incluí-los no relatório. | ||
Linha 268: | Linha 278: | ||
:* Resultados obtidos (com imagens dos itens importantes) e análise dos resultados; | :* Resultados obtidos (com imagens dos itens importantes) e análise dos resultados; | ||
:* Conclusão. | :* Conclusão. | ||
− | :* Apêndice (se desejar pode ser disponibilizados vídeos | + | :* Apêndice (se desejar pode ser disponibilizados vídeos dos testes do circuito) |
− | * O relatório deve também responder as questões levantadas e mostrar que os objetivos apresentados na introdução foram atendidos. | + | :*O relatório deve também responder as questões levantadas e mostrar que os objetivos apresentados na introdução foram atendidos. |
− | {{ | + | *Enviar pela tarefa AE1 - Atividade de Laboratório 1 do Moodel da UC o arquivo PDF com o relatório. |
+ | ;Arquivos do projeto: | ||
+ | *Além do relatório é necessário que o aluno envie o arquivo QAR. | ||
+ | |||
+ | ==Dicas== | ||
+ | *Para acessar o Quartus na nuvem, use o ssh (no IFSC) ou X2GO (de casa). | ||
+ | :*Acesso a VM Quartus e Matlab em nuvem | ||
+ | :*PRIMEIRO ACESSO | ||
+ | :*[https://wiki.sj.ifsc.edu.br/index.php/Acesso_ao_IFSC-CLOUD_(NUVEM)#Configura.C3.A7.C3.A3o_do_X2GO Configuração do X2GO] | ||
+ | :*[https://wiki.sj.ifsc.edu.br/index.php/Acesso_ao_IFSC-CLOUD_(NUVEM)#Acesso_via_ssh Acesso via ssh] | ||
+ | *[[Como elaborar e enviar o arquivo QAR]] | ||
+ | |||
+ | *Para copiar arquivos da nuvem para a maquina local use o sftp. | ||
+ | :*[https://wiki.sj.ifsc.edu.br/index.php/Acesso_ao_IFSC-CLOUD_(NUVEM)#LINUX Como transferir arquivos do computador local para a CLOUD-IFSC: LINUX] | ||
+ | |||
+ | *Video explicando como criar o QAR e como mover da nuvem para o computador local. | ||
+ | <center>{{#ev:youtube|FlFs9NNxVnU}}</center> | ||
+ | *Mesmo que haja erro na Analysis & Synthesis você pode criar o QAR. | ||
+ | <center>{{#ev:youtube|AJyaltzjkl0}}</center> |
Edição atual tal como às 17h22min de 9 de novembro de 2023
- Objetivos
- Projetar um circuito digital que realize a conversão de uma entrada BCD para um saída de um mostrador de 7 segmentos.
- Descrever através de uma tabela verdade o funcionamento de um circuito.
- Usar a técnica do mapa de Karnaugh para minimizar a função lógica de cada saída.
- Fazer a descrição do hardware (em VHDL) do circuito obtido.
- Utilizar um kit FPGA para implementar o circuito.
- Verificar se o circuito funciona
- Redigir um relatório completo sobre a atividade realizada
- Procedimento de laboratório
Passo 1 - Preparação
- Identifique no kit FPGA (DE2-115) as chaves, leds e mostrador que será utilizado
- As chaves SW3, SW2, SW1, SW0 serão utilizadas como as entradas bcd_A, bcd_B, bcd_C, bcd_D.
- Os leds LEDR3, LEDR2, LEDR1, LEDR0 serão utilizados para mostrar quando as entradas estão em alto
- O mostrador SSD HEX0 será usado para mostrar os números de 0 a 9 na saída.
- Escreva a tabela verdade do conversor. Lembre-se que nesse kit o mostrador é de anodo comum, e portanto o led acende em BAIXO e apaga em ALTO.
Entradas | Saídas | ||||||||
---|---|---|---|---|---|---|---|---|---|
Valor | Mostrador | ABCD | a | b | c | d | e | f | g |
0 | 0000 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | |
1 | 0001 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | |
2 | 0010 | 0 | 0 | ||||||
3 | 0011 | 0 | 0 | ||||||
4 | 0100 | 1 | 0 | ||||||
5 | 0101 | 0 | 1 | ||||||
6 | 0110 | 0 | 1 | ||||||
7 | 0111 | 0 | 0 | ||||||
8 | 1000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
9 | 1001 | 0 | 0 |
- Use a técnica do mapa de Karnaugh para minimizar a função lógica de cada saída (a, b, c, d, e, f, g) (reveja a aula de Simplificação de expressões lógicas - Mapas de Karnaugh-Veitch
- Confira a expressão lógica obtida com Karnaugh Map Explorer 2.0
- Dica: se quiser faça o projeto inteiro para catodo comum (conforme feito em aula) e inverta as saídas com um not
a = (A + C + B D + B'D')'
Passo 2 - Obtenção do circuito em VHDL
- Uma vez obtidas as expressões lógicas de cada saída, escreva o código VHDL que implemente essas funções, utilizando apenas portas (and, or e not)
-- File: bcd2ssd.vhd
-- Autor: Marcos Moecke
-- Data: 19 out. 2023
-- declaração da entidade. descrição dos nomes do circuito, entradas e saidas
entity bcd2ssd is
port (
bcd_A, bcd_B, bcd_C, bcd_D : in bit; -- bits da entrada BCD
led_A, led_B, led_C, led_D : out bit; -- bits da entrada BCD
ssd_a, ssd_b, ssd_c, ssd_d, ssd_e, ssd_f, ssd_g : out bit); -- bits da saida SSD para o mostrador
end entity;
-- descrição do circuito a ser implementado no FPGA
architecture ifsc_v1 of bcd2ssd is
begin
-- Conectar as entradas aos leds
led_a <= bcd_A;
led_b <=
-- Descrever as funcoes logicas minimizadas de cada saida SSD
-- a = A'B'C'D + B C'D' (função obtida para o display de anodo comum)
ssd_a <= ((not bcd_A) and (not bcd_B) and (not bcd_C) and bcd_D) or (bcd_B and (not bcd_C) and (not bcd_D));
-- b = B C'D + B C D' (função obtida para o display de anodo comum)
ssd_b <=
end architecture;
- Fazer a análise e síntese desse circuito. Corrija eventuais erros.
- Se desejar realize a simulação com o Modelsim, variando as entradas de 0 a 15. (opcional)
- Verifique se os valores das saídas estão corretos para 0 até 9.
- Anote os valores das saídas para as entradas entre 10 e 15. Como os valores não foram predeterminados (foi usado o don't care), o mostrador pode acender de forma aleatória.
Passo 3 - Gravação do circuito no kit FPGA
- Veja a documentação em Preparando para gravar o circuito lógico no FPGA
- Para o kit DE2-115, devemos escolher a FAMILY: Cyclone® IV E e o DEVICE: EP4CE115F29C7
- Realize a associação dos pinos do FPGA com as portas do circuito. Consulte as Interfaces de entrada e saída da DE2-115 para encontrar o número dos pinos, e complete a tabela abaixo:
porta da ENTITY | nome do pino no FPGA | número do pino no FPGA |
---|---|---|
bcd_A | SW[3] | |
bcd_B | SW[2] | |
bcd_C | SW[1] | PIN_AC28 |
bcd_D | SW[0] | PIN_AB28 |
led_A | LEDR[3] | |
led_B | LEDR[2] | |
led_C | LEDR[1] | PIN_F19 |
led_D | LEDR[0] | PIN_G19 |
ssd_a | HEX0[0] | PIN_G18 |
ssd_b | HEX0[1] | PIN_F22 |
ssd_c | HEX0[2] | |
ssd_d | HEX0[3] | |
ssd_e | HEX0[4] | |
ssd_f | HEX0[5] | |
ssd_g | HEX0[6] |
- Após feita a configuração, realiza a programação (download do bitstream), conforme descrito emProgramando o FPGA através da USB-Blaster
Passo 4 - Testes
- Para verificar se o circuito funciona, realie seguintes testes, acionando as chaves e observando o resultado nos LEDs e no mostrador:
- Selecione nas chaves SW3, SW2, SW1, SW0, seguidamento os valores binários correspondentes aos valores de 0 a 15
- Verifique se o leds LEDR3, LEDR2, LEDR1, LEDR0 acendem conforme os números.
- Verifique também se o mostrador mostra corretamente os valores de 0 a 9.
- Anote quais leds acendem para os valores 10 a 15.
Passo 5 - Documentação
- Ao longo do procedimento anote os valores e procedimentos realizados para incluí-los no relatório.
- Relatório Técnico
- Documentar o experimento em um relatório técnico que contenha no mínimo:
- Identificação (título, disciplina, data, autores);
- Introdução;
- Descrição do procedimento realizado;
- Resultados obtidos (com imagens dos itens importantes) e análise dos resultados;
- Conclusão.
- Apêndice (se desejar pode ser disponibilizados vídeos dos testes do circuito)
- O relatório deve também responder as questões levantadas e mostrar que os objetivos apresentados na introdução foram atendidos.
- Enviar pela tarefa AE1 - Atividade de Laboratório 1 do Moodel da UC o arquivo PDF com o relatório.
- Arquivos do projeto
- Além do relatório é necessário que o aluno envie o arquivo QAR.
Dicas
- Para acessar o Quartus na nuvem, use o ssh (no IFSC) ou X2GO (de casa).
- Acesso a VM Quartus e Matlab em nuvem
- PRIMEIRO ACESSO
- Configuração do X2GO
- Acesso via ssh
- Para copiar arquivos da nuvem para a maquina local use o sftp.
- Video explicando como criar o QAR e como mover da nuvem para o computador local.
- Mesmo que haja erro na Analysis & Synthesis você pode criar o QAR.