Índice:

Despertador Basys 3: 9 etapas
Despertador Basys 3: 9 etapas

Vídeo: Despertador Basys 3: 9 etapas

Vídeo: Despertador Basys 3: 9 etapas
Vídeo: Projeto do Sistema Embarcado de um Relógio Digital usando o Kit Basys 3, Artix 7, e Vivado. 2024, Novembro
Anonim
Despertador Basys 3
Despertador Basys 3

Nosso projeto cria um despertador usando a placa FPGA Basys 3, um Arduino e uma placa de driver de alto-falante. O usuário pode inserir a hora atual na placa usando 11 interruptores de entrada no Basys 3 e travar o valor usando o botão do meio na placa. O usuário pode então inserir a hora do alarme usando os mesmos interruptores, mas pressione o botão esquerdo para bloquear a hora do alarme. Se a hora errada for inserida, o botão de reinicialização (botão superior) pode ser pressionado e a hora do relógio atual e a hora do alarme serão ajustadas para 00:00. O usuário pode então iniciar o relógio usando a chave mais à esquerda e ligar o alarme usando a próxima chave. Quando o alarme é ativado, o despertador emite um som quando a hora do relógio e a hora definida para o alarme coincidem.

Etapa 1: Diagrama de caixa preta

Diagrama de caixa preta
Diagrama de caixa preta
Diagrama de caixa preta
Diagrama de caixa preta

Começamos nosso projeto desenhando um diagrama de caixa preta para visualizar as entradas e saídas necessárias em nosso programa. As seguintes entradas para o nosso programa, como entrada de 5 bits (Hour_in) foram inicializadas para especificar o tempo de 24 horas, entrada de 6 bits (Min_in) para exibir até 60 minutos, um botão de reset (Rst_b) para permitir ao usuário alterar sua entrada de tempo, uma entrada de 1 bit (alm_en) que carrega a entrada de alarme, uma entrada de 1 bit (alarm_sw) para desligar o despertador quando ele é ativado, uma entrada de 1 bit (e_sec) que controla quando o contador de segundos será executada, uma entrada de 1 bit (Led_btn) que define a hora atual e, por último, uma entrada de 1 bit (clk) que controla a hora exibida pela placa Basys 3. As saídas são (alm_on) que envia o sinal para o Arduino, a saída sseg que exibe o tempo de entrada no Basys 3 e a saída anodo que controla onde as entradas são exibidas no display de sete segmentos.

Etapa 2: Relógio lento

Relógio lento
Relógio lento

O relógio lento ou arquivo clock_div2 cria um relógio cuja frequência é 2 Hz. Se alimentarmos este relógio com nosso contador de segundos, o valor dos segundos aumentará em um a cada segundo. O clock lento é usado para criar um sinal de clock confiável que muda de baixo para alto uma vez por segundo.

Etapa 3: contador

Contador
Contador
Contador
Contador

Contador de componentes (minutos e segundos):

A função básica dos minutos e segundos é que eles são contadores. O contador de minutos recebe a entrada (Vin), que é o sinal das entradas (Min_in), e então conta até atingir a entrada desejada inserida. Os segundos levam apenas a entrada do switch (e_Sec), uma vez que não pode ser exibido no segmento sete, e conta em segundo plano quando o switch está alto '1'. Ambos emitem seu valor para (Qout) e, em seguida, é armazenado em (dados) que o envia para SSEG, o que é feito no arquivo de vinculação. Além disso, quando os minutos e segundos atingem os valores de 59, ele é redefinido e a saída deles é '1' para incrementar os minutos / hora. Ele também pode ser mapeado com um reset (rst_b) para suas entradas.

Etapa 4: hora do contador

Hora do contador
Hora do contador
Hora do contador
Hora do contador

Hora do contador de componentes

Da mesma forma, para o contador de componente de minutos e segundos, o componente de hora leva em entradas s como (Vin) que é um sinal de vinculação de entrada de arquivo (Hour_in), e tem saídas que são vinculadas da mesma maneira a minutos e segundos. Quando o valor de contagem da hora atinge 24 00, ele é redefinido para 00 00.

Etapa 5: Alarme

Alarme
Alarme
Alarme
Alarme
Alarme
Alarme
Alarme
Alarme

O arquivo.vhd de alarme é composto de d-flip-flops, que são dispositivos de armazenamento que podem armazenar dados digitais. O arquivo de alarme é usado para armazenar a hora em que o alarme será ativado. Para armazenar os dados de horas (entrada de 5 bits) e minutos (entrada de 6 bits), devemos estampar 11 d-flip-flops em nosso arquivo de alarme. Para fazer isso, devemos primeiro importar a lógica que rege a operação de d-flip-flops e mapear os componentes. Cada um dos 11 d-flip-flops armazenará um bit de dados das entradas e permitirá que os dados sejam mapeados para as saídas do arquivo de alarme. Como os d-flip-flops armazenam dados, podemos usar os dados posteriormente, mesmo que as chaves de entrada tenham sido alteradas.

Etapa 6: Driver de exibição universal de sete segmentos

Driver de exibição universal de sete segmentos
Driver de exibição universal de sete segmentos
Driver de exibição universal de sete segmentos
Driver de exibição universal de sete segmentos
Driver de exibição universal de sete segmentos
Driver de exibição universal de sete segmentos

O driver de exibição universal de sete segmentos recebe as entradas do relógio e do ajuste do relógio e é capaz de enviá-las para a exibição de sete segmentos na placa. O driver é capaz de gerar duas contagens separadas na placa ao mesmo tempo. Usamos esta função para exibir as horas e os minutos separadamente. O display de sete segmentos só é capaz de ativar um número de cada vez; portanto, o arquivo sseg deve usar multiplexação para exibir todos os números do tempo simultaneamente. O sinal do clock das placas é alimentado no sseg para manter a hora correta para a multiplexação. É necessário um codificador decimal binário para binário codificado para converter as entradas para o arquivo em um formato que possa ser enviado para o display de sete segmentos. A saída final do arquivo sseg é mapeada para o display de sete segmentos e a hora correta é mostrada no display.

Etapa 7: Arquivo de link

Arquivo de link
Arquivo de link
Arquivo de link
Arquivo de link
Arquivo de link
Arquivo de link

O arquivo de link conecta todos os outros aspectos do programa e mapeia os sinais para sua localização correta. Cada componente é trazido e instanciado dentro do arquivo. Os sinais são usados para transferir dados de um componente para outro. O mapeamento da porta seguirá o diagrama de caixa preta listado acima. O arquivo de link também contém a lógica que rege quando o alarme é ativado. A maior parte do projeto já estará concluída neste ponto. O trabalho restante é rotear cada sinal para o local apropriado.

Etapa 8: Arduino

Arduino
Arduino
Arduino
Arduino

O arduino é usado para ativar o alto-falante, bem como controlar o tom e a duração da nota tocada pelo alto-falante. O arduino lê um sinal digital da placa Basys 3. Quando este sinal está alto, o arduino emitirá um sinal PWM controlando o tom e a duração do alarme. O sinal de saída do Arduino se conecta ao sinal de entrada de uma placa de driver de alto-falante que aumenta o volume do alto-falante. O arduino faz esse processo muito rápido, repetindo-se muitas vezes por segundo.

Etapa 9: Roteamento de cabos

Roteamento de cabo
Roteamento de cabo

As placas arduino e Basys 3 devem estar fisicamente conectadas para transferir sinais entre as placas. O primeiro cabo a ser conectado será o pino de aterramento do JA PMOD do Basys 3 para o pino de aterramento do arduino. Em seguida, conecte um fio do pino 1 do JA PMOD do Basys 3 ao pino digital 7 do arduino. Em seguida, conecte dois pinos de aterramento do arduino aos pinos de aterramento do driver do alto-falante. Em seguida, conecte a saída de 3,3 V do arduino ao pino Vcc do driver do alto-falante. Em seguida, conecte o pino digital 9 do arduino ao pino de entrada do driver do alto-falante.

Recomendado: