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
(Criou página com ';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 ve...') |
|||
Linha 1: | Linha 1: | ||
;Objetivos: | ;Objetivos: | ||
* Projetar um circuito digital que realize a conversão de uma entrada BCD para um saída de um mostrador de 7 segmentos. | * 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 | + | * 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 | + | * 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 | + | * Fazer a descrição do hardware (em VHDL) do circuito obtido. |
* Utilizar um kit FPGA para implementar o circuito. | * Utilizar um kit FPGA para implementar o circuito. | ||
* Verificar se o circuito funciona | * Verificar se o circuito funciona | ||
Linha 11: | Linha 11: | ||
;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 | ||
− | * Escreva a tabela verdade do conversor | + | * Escreva a tabela verdade do conversor. Lembre-se que nesse kit o mostrador é de catodo comum, e portanto o led acende em BAIXO e apaga em ALTO. |
+ | |||
+ | {| class="wikitable" style="text-align:center;" | ||
+ | |- style="text-align:left;" | ||
+ | ! | ||
+ | ! style="font-weight:bold;" | | ||
+ | ! style="text-align:center; font-weight:bold;" | Entradas | ||
+ | ! colspan="7" style="text-align:center; font-weight:bold;" | Saídas | ||
+ | |- style="font-weight:bold;" | ||
+ | | Valor | ||
+ | | Mostrador | ||
+ | | ABCD | ||
+ | | a | ||
+ | | b | ||
+ | | c | ||
+ | | d | ||
+ | | e | ||
+ | | f | ||
+ | | g | ||
+ | |- | ||
+ | | 0 | ||
+ | | [[Arquivo:ssd0.png|10px]] | ||
+ | | 0000 | ||
+ | | 0 | ||
+ | | 0 | ||
+ | | 0 | ||
+ | | 0 | ||
+ | | 0 | ||
+ | | 0 | ||
+ | | 1 | ||
+ | |- | ||
+ | | 1 | ||
+ | | [[Arquivo:ssd1.png|10px]] | ||
+ | | 0001 | ||
+ | | 1 | ||
+ | | 0 | ||
+ | | 0 | ||
+ | | 1 | ||
+ | | 1 | ||
+ | | 1 | ||
+ | | 1 | ||
+ | |- | ||
+ | | 2 | ||
+ | | [[Arquivo:ssd2.png|10px]] | ||
+ | | 0010 | ||
+ | | 0 | ||
+ | | 0 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 3 | ||
+ | | [[Arquivo:ssd3.png|10px]] | ||
+ | | 0011 | ||
+ | | 0 | ||
+ | | 0 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 4 | ||
+ | | [[Arquivo:ssd4.png|10px]] | ||
+ | | 0100 | ||
+ | | 1 | ||
+ | | 0 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 5 | ||
+ | | [[Arquivo:ssd5.png|10px]] | ||
+ | | 0101 | ||
+ | | 0 | ||
+ | | 1 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 6 | ||
+ | | [[Arquivo:ssd6.png|10px]] | ||
+ | | 0110 | ||
+ | | 0 | ||
+ | | 1 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 7 | ||
+ | | [[Arquivo:ssd7.png|10px]] | ||
+ | | 0111 | ||
+ | | 0 | ||
+ | | 0 | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |- | ||
+ | | 8 | ||
+ | | [[Arquivo:ssd8.png|10px]] | ||
+ | | 1000 | ||
+ | | 0 | ||
+ | | 0 | ||
+ | | 0 | ||
+ | | 0 | ||
+ | | 0 | ||
+ | | 0 | ||
+ | | 0 | ||
+ | |- | ||
+ | | 9 | ||
+ | | [[Arquivo:ssd9.png|10px]] | ||
+ | | 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 [https://moodle.ifsc.edu.br/pluginfile.php/260765/mod_resource/content/2/Simplifica%C3%A7%C3%A3o%20de%20express%C3%B5es%20l%C3%B3gicas%20-%20Mapas%20de%20Karnaugh-Veitch.pdf Simplificação de expressões lógicas - Mapas de Karnaugh-Veitch] | * 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 [https://moodle.ifsc.edu.br/pluginfile.php/260765/mod_resource/content/2/Simplifica%C3%A7%C3%A3o%20de%20express%C3%B5es%20l%C3%B3gicas%20-%20Mapas%20de%20Karnaugh-Veitch.pdf Simplificação de expressões lógicas - Mapas de Karnaugh-Veitch] | ||
+ | * Confira a expressão lógica obtida com [https://www.docjava.com/cpe210/kmapExplorer.html Karnaugh Map Explorer 2.0] | ||
;Passo 2 - Obtenção do circuito em VHDL | ;Passo 2 - Obtenção do circuito em VHDL | ||
Linha 29: | Linha 160: | ||
begin | begin | ||
-- Descrever as funcoes logicas minimizadas de cada saida SSD | -- Descrever as funcoes logicas minimizadas de cada saida SSD | ||
− | -- a = A + C + | + | -- a = (A + C + B D + B'D')' (a inversão é necessária pois a função obtida em aula é para display de anodo comum) |
− | ssd_a <= bcd_A or bcd_C or (bcd_B and bcd_D) or ((not bcd_B) and (not bcd_D)); | + | ssd_a <= not (bcd_A or bcd_C or (bcd_B and bcd_D) or ((not bcd_B) and (not bcd_D))); |
− | -- b = | + | -- a = A'B'C'D + B C'D' (função obtida para o display de catodo 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 catodo comum) | ||
ssd_b <= | ssd_b <= | ||
... | ... | ||
Linha 44: | Linha 177: | ||
*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''' | ||
*Defina que as chaves SW3, SW2, SW1, SW0 serão utilizadas como as entradas bcd_A, bcd_B, bcd_C, bcd_D. | *Defina que as chaves SW3, SW2, SW1, SW0 serão utilizadas como as entradas bcd_A, bcd_B, bcd_C, bcd_D. | ||
− | *Defina que os leds | + | *Defina que os leds LEDR3, LEDR2, LEDR1, LEDR0 serão utilizados para mostrar quando as entradas estão em alto |
*Defina que o mostrador HEX0 será usado para mostrar a saída. | *Defina que o mostrador HEX0 será usado para mostrar a saída. | ||
− | * | + | *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: |
<center> | <center> | ||
{| class="wikitable" style="background-color:#ffffff; color:#202122;" | {| class="wikitable" style="background-color:#ffffff; color:#202122;" | ||
Linha 115: | Linha 248: | ||
|} | |} | ||
</center> | </center> | ||
− | *[[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: | |
− | + | * 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: | + | ;Passo 5 - Documentação: |
− | * | + | * Ao longo do procedimento anote os valores e procedimentos realizados para incluí-los no relatório. |
− | |||
− | |||
− | |||
− | |||
− | |||
;Relatório Técnico: | ;Relatório Técnico: | ||
Linha 184: | Linha 270: | ||
* 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}} | {{collapse bottom}} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Edição das 18h36min de 18 de outubro 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
- Escreva a tabela verdade do conversor. Lembre-se que nesse kit o mostrador é de catodo 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
- 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)
-- declaração da entidade. descrição dos nomes do circuito, entradas e saidas
entity bcb2ssd 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;
architecture ifsc_v1 of bcb2ssd is
begin
-- Descrever as funcoes logicas minimizadas de cada saida SSD
-- a = (A + C + B D + B'D')' (a inversão é necessária pois a função obtida em aula é para display de anodo comum)
ssd_a <= not (bcd_A or bcd_C or (bcd_B and bcd_D) or ((not bcd_B) and (not bcd_D)));
-- a = A'B'C'D + B C'D' (função obtida para o display de catodo 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 catodo 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, e verifique se os valores das saídas estão corretos para 0 até 9. (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.
- Passo 2 - 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
- Defina que as chaves SW3, SW2, SW1, SW0 serão utilizadas como as entradas bcd_A, bcd_B, bcd_C, bcd_D.
- Defina que os leds LEDR3, LEDR2, LEDR1, LEDR0 serão utilizados para mostrar quando as entradas estão em alto
- Defina que o mostrador HEX0 será usado para mostrar a saída.
- 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[1] | |
ssd_d | HEX0[1] | |
ssd_e | HEX0[1] | |
ssd_f | HEX0[1] | |
ssd_g | HEX0[1] |
- 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 do funcionamento do circuito nos Passos 3 e 5
- O relatório deve também responder as questões levantadas e mostrar que os objetivos apresentados na introdução foram atendidos.
|}