Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
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
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
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 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 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
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
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
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
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
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.