Índice:

Cronômetro básico usando VHDL e Basys3 Board: 9 etapas
Cronômetro básico usando VHDL e Basys3 Board: 9 etapas

Vídeo: Cronômetro básico usando VHDL e Basys3 Board: 9 etapas

Vídeo: Cronômetro básico usando VHDL e Basys3 Board: 9 etapas
Vídeo: Cronômetro 0:00 - 9:59 em VHDL Basys3 2024, Julho
Anonim
Image
Image

Bem-vindo ao instrutivo sobre como construir um cronômetro usando VHDL básico e placa Basys 3. Estamos ansiosos para compartilhar nosso projeto com você! Este foi um projeto final para o curso CPE 133 (Design Digital) na Cal Poly, SLO no outono de 2016. O projeto que construímos é um cronômetro simples que inicia, redefine e pausa o tempo. Leva três botões na placa Basys3 como entradas, e a hora é exibida no display de quatro dígitos e sete segmentos da placa. O tempo decorrido é exibido no formato segundos: centissegundos. Ele usa o relógio do sistema da placa como uma entrada para controlar o tempo decorrido e gera o tempo para os quatro dígitos do display de sete segmentos.

Etapa 1: Materiais

Definir entradas e saídas
Definir entradas e saídas

Os materiais de que você precisará para este projeto:

  • 1 computador com Vivado Design Suite WebPack instalado a partir do Xilinx (preferir versão 2016.2)
  • 1 placa Digilent Basys3 Xilinx Artix-7 FPGA
  • 1 cabo de porta USB

Etapa 2: Definir entradas e saídas

A figura acima mostra um diagrama de blocos de nível superior do módulo principal do cronômetro. O cronômetro recebe as entradas "CLK" (relógio), "S1" (botão iniciar), "S2" (botão de pausa) e "RST" (redefinir) e tem uma saída de 4 bits "Anodos", um 7 bits saída "segmento" e uma saída de bit único "DP" (ponto decimal). Quando a entrada "S1" é alta, o cronômetro começa a contar o tempo. Quando "S2" está baixo, o cronômetro pausa o tempo. Quando "RST" está alto, o cronômetro para e zera a hora. Existem quatro submódulos dentro do circuito: o divisor de relógio, o contador de dígitos, o driver de exibição de sete segmentos e o codificador de exibição de sete segmentos. O módulo principal do cronômetro conecta todos os submódulos e às entradas e saídas.

Etapa 3: Fazendo relógios

Fazendo Relógios
Fazendo Relógios

O módulo divisor de relógio recebe um relógio do sistema e usa uma entrada divisora para criar um relógio de qualquer velocidade não maior que a do relógio do sistema. O cronômetro usa dois módulos de relógio diferentes, um que cria um relógio de 500 Hz e outro que cria um relógio de 100 Hz. O esquema do divisor de relógio é mostrado na figura acima. O divisor de clock recebe uma entrada de bit único "CLK" e uma entrada de 32 bits "Divisor" e a saída de bit único "CLKOUT". "CLK" é o relógio do sistema e "CLKOUT" é o relógio resultante. O módulo também inclui uma porta NOT, que alterna o sinal "CLKTOG" quando a contagem atinge o valor do divisor.

Etapa 4: contando até dez

Contando até Dez
Contando até Dez

O contador de dígitos conta cada dígito de 0 a 10 e cria outro relógio para o próximo dígito funcionar, o que oscila quando a contagem chega a 10. O módulo recebe 3 entradas de bit único "S", "RST" e "CLK "e resulta em uma saída de bit único" N "e uma saída de 4 bits" D ". A entrada "S" é a habilitação na entrada. O relógio liga quando "S" está alto e desliga quando "S" está baixo. "RST" é a entrada de reset, então o relógio é reiniciado quando "RST" está alto. "CLK" é a entrada do relógio para o contador de dígitos. "N" é a saída do relógio que se torna o relógio de entrada para o próximo dígito. A saída "D" apresenta o valor binário do dígito em que o contador está.

Etapa 5: Exibindo Números

Exibindo Números
Exibindo Números

O codificador do display de sete segmentos codificará o número binário recebido do módulo driver do display de sete segmentos e o transformará em um fluxo de bits que será interpretado como valores '1' ou '0' para cada segmento do display. O número binário é recebido pelo módulo como o "dígito" de entrada de 4 bits e resulta nos "segmentos" de saída de 7 bits. O módulo consiste em um único bloco de processo de caso que atribui um fluxo específico de 7 bits para cada valor de entrada possível de 0 a 9. Cada bit nos fluxos de sete bits representa um dos sete segmentos dos dígitos no visor. A ordem dos segmentos no fluxo é "abcdefg" com '0s representando os segmentos que acendem para o número fornecido.

Etapa 6: como exibir o cronômetro

Como exibir o cronômetro
Como exibir o cronômetro

No módulo de driver de display de sete segmentos, há quatro entradas de 4 bits "D0", "D1", "D2" e "D3", cada uma representando os quatro dígitos a serem exibidos. A entrada "CLK" é a entrada do relógio do sistema. A saída de bit único "DP" representa o ponto decimal no display de sete segmentos. A saída de 4 bits "Anodos" determina qual dígito no display de sete segmentos é mostrado e a saída de 4 bits "temp" depende do estado da entrada de controle de 2 bits "SEL". O módulo utiliza 4 multiplexadores para a entrada de controle "SEL" e as três saídas; "Ânodos", "temp" e "DP".

Etapa 7: juntando tudo

Um bloco de processo 'if' fora do clock de 500 Hz é usado para criar os botões de início e pausa. Em seguida, vincule todos os submódulos no módulo principal do cronômetro, declarando os componentes de cada submódulo individual e usando vários sinais. Os submódulos de dígitos recebem a saída de relógio do submódulo de dígitos anterior, com o primeiro levando o relógio de 100Hz. As saídas "D" dos submódulos de dígitos tornam-se então as entradas "D" do módulo driver de exibição de sete segmentos. E, por último, a saída "temp" do módulo do driver do display de sete segmentos torna-se a entrada "temp" do módulo codificador de sete segmentos.

Etapa 8: restrições

Restrições
Restrições

Use 3 botões (W19, T17 e U18) para as entradas "RST", "S1" e "S2". W19 é o botão de reinicialização, T17 é o botão iniciar (S1) e U18 é o botão de pausa (S2). Uma restrição para a entrada de entrada do relógio também é necessária usando a porta W5. Além disso, lembre-se de adicionar esta linha à restrição de relógio:

create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports {CLK}]

Também vincule os ânodos e segmentos ao quadro para que o cronômetro seja exibido no visor de sete segmentos, conforme visto no arquivo de restrições.

Etapa 9: Teste

Testando
Testando

Certifique-se de que seu dispositivo funcione brincando com os três botões: pressionando e segurando-os em todas as ordens possíveis para encontrar quaisquer problemas possíveis com seu código.

Recomendado: