Contador de segundos em VHDL com 7 segmentos 4 dígitos

Contador de segundos em decimal utilizando FPGA e VHDL

Um contador de segundos é um bom exemplo para explorarmos alguns pontos do desenvolvimento de uma descrição de hardware. O contador aqui desenvolvido está em formato decimal (0000~9999).

image

O projeto foi desenvolvido com o kit de desenvolvimento Cyclone IV, disponível no mercado nacional, os detalhes deste kit podem ser visto no artigo Placa de FPGA com Cyclone IV.

A figura abaixo traz a representação do RTL (register transfer level) do nível mais alto do projeto (top level), nele podemos notar que o projeto está dividido em seis sub módulos de três componentes diferentes.

image 2

Contador

O primeiro módulo tem como função efetuar a contagem do ciclo de clock. No momento que este atingir o valor equivalente em Hz, o contador incrementa os dígitos em uma unidade, representando que um segundo se passou e distribui os dígitos em formato BCD ao próximo módulo. Por exemplo:

valor atual = 5639

saída esperada = 0101 0110 0011 1001

A descrição do hardware pode ser vista abaixo:

Note que no momento que o signal unit_counter atinge o valor de 10, esta retorna para 0 e incrementa o outro signal tens_counter. O processo se repete para os demais dígitos.

O bloco possui ainda um reset, para retornar ao valor 0.

Conversor BCD para 7- segmentos

Este é um módulo básico, presente em quase todos os cursos de FPGA disponíveis. Consiste de uma entrada em BCD e uma saída em 7 segmentos.

Neste projeto, foram utilizados quatro componentes desse, um para cada dígito.

Mux 4 dígitos

O terceiro componente deste projeto está representado por um multiplexador, responsável por integrar os quatro dígitos ao display, variando o anodo, ativando um a cada ciclo de aproximadamente 330µs.

A cada ciclo a saída, o digit_o e o anode_o variam seus valores em quatro fases, sendo uma para unidade, outra para dezena, mais uma para centena e uma última para milhar.

Contador de 4 dígitos (top level)

O top level deste projeto não possui nenhuma lógica em sua arquitetura, apenas a instância dos componentes e sua integração através dos signals.

Testbench e forma de onda

Abaixo pode ser visto o Test Bench desenvolvido para simular este projeto. O Testbench, traduzido literalmente como bancada de teste, é uma descrição auxiliar (mas indispensável), que permite simular o funcionamento da descrição de hardware.

Podemos notar na forma de onda da simulação o fato de que a partir do 1s um dígito apresenta valor 1 e os demais permanecem como 0.

image 4

Conexão com os pinos

Abaixo podemos ver a planilha de conexão com os pinos físicos do kit de desenvolvimento.

image 5

Conclusão

Esta proposta bem simples consegue nos fornecer a ideia de como integrar componentes em VHDL. Caso queira ver mais a fundo, os links do projeto estão disponíveis neste link!

Se interessou e não sabe por onde começar? Recomendo a publicação Projetos para Começar com HDL.

Referencias

Foto de capa tirada por Akshaylals

VHDL code for Seven-Segment Display on Basys 3 FPGA

Notificações
Notificar
guest
1 Comentário
recentes
antigos mais votados
Inline Feedbacks
View all comments
Domingos Tomé
Domingos Tomé
05/06/2021 04:09

Trabalho muito bom. Parabéns!

WEBINAR

Visão Computacional para a redução de erros em processos manuais

DATA: 23/09 ÀS 17:00 H