Mudanças entre as edições de "Laboratório - Projeto e implementação de um conversor BCD para SSD"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(15 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:
+
==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
+
==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 bcb2ssd is
+
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 161: Linha 165:
 
     ssd_a, ssd_b, ssd_c, ssd_d, ssd_e, ssd_f, ssd_g  : out bit);  -- bits da saida SSD para o mostrador
 
     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;
 
end entity;
 +
-- descrição do circuito a ser implementado no FPGA
 +
architecture ifsc_v1 of bcd2ssd is
  
architecture ifsc_v1 of bcb2ssd is
+
begin
 +
  -- Conectar as entradas aos leds
 +
  led_a <= bcd_A;
 +
  led_b <=
  
begin
 
 
   -- 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 catodo comum)
+
   -- 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 catodo comum)
+
 
 +
   -- 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, e verifique se os valores das saídas estão corretos para 0 até 9. (opcional)
+
* 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.  Os valores não foram predeterminados, pois foi usado o don't care para estas entradas.
+
:* 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 2 - Gravação do circuito no kit FPGA:
+
==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[1]
+
| HEX0[2]
 
|  
 
|  
 
|-
 
|-
 
| ssd_d
 
| ssd_d
| HEX0[1]
+
| HEX0[3]
 
|  
 
|  
 
|-
 
|-
 
| ssd_e
 
| ssd_e
| HEX0[1]
+
| HEX0[4]
 
|  
 
|  
 
|-
 
|-
 
| ssd_f
 
| ssd_f
| HEX0[1]
+
| HEX0[5]
 
|  
 
|  
 
|-
 
|-
 
| ssd_g
 
| ssd_g
| HEX0[1]
+
| 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:
+
==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:
+
==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 do funcionamento do circuito nos Passos 3 e 5
+
:* 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.
{{collapse bottom}}
+
*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 Ssd0.png 0000 0 0 0 0 0 0 1
1 Ssd1.png 0001 1 0 0 1 1 1 1
2 Ssd2.png 0010 0 0
3 Ssd3.png 0011 0 0
4 Ssd4.png 0100 1 0
5 Ssd5.png 0101 0 1
6 Ssd6.png 0110 0 1
7 Ssd7.png 0111 0 0
8 Ssd8.png 1000 0 0 0 0 0 0 0
9 Ssd9.png 1001 0 0
 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

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]

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).
  • 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.