Índice:
Vídeo: Faça qualquer sensor de um FPGA: 4 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
A maioria dos fabricantes tentou construir pelo menos uma vez na vida um termômetro, talvez o que eles têm em casa não seja inteligente o suficiente, ou talvez eles pensem que podem construir o próximo NEST. No entanto, em algum momento eles tiveram um microcontrolador com seu software de última geração conectado a um sensor de temperatura (e talvez outros sensores: pressão, luz). Até agora tudo perfeito, o software está rodando e o sensor está detectando. Vamos testar!
Hmmmm … talvez ele devesse aquecer o sensor com um secador de cabelo e esfriar com gelo, funciona por um tempo. Mas não parece profissional, o sensor muda os valores muito rapidamente se você aquecê-lo, ele não aquece mais do que alguns graus. O projeto é um fracasso! Mas o algoritmo é novo, leva em consideração uma série de fatores, que pena que ele ficou preso nesta coisa estupidamente menor.
Minha solução é a seguinte: fazer um FPGA atuar como um sensor com valores transmitidos de um PC (ou armazenados na memória, ou criados ad-hoc dentro do FPGA). Portanto, para o seu precioso MCU, o FPGA parece um sensor, mas não qualquer sensor: o sensor que você quiser. Talvez você decida que precisa de mais resolução ou tempo de resposta mais rápido do que o esperado, você terá que trocar o sensor. Encomende online, chegará dentro de alguns dias, de alguns meses, quem sabe. Fixe novamente seu PCB ou solicite um módulo com o novo sensor. Ou… alguns cliques e o FPGA é configurado como seu novo sensor e pode emular a configuração interna exata.
No momento em que este artigo foi escrito, o FPGA poderia atuar como um LM75 com dados de temperatura armazenados no BRAM (no FPGA).
Etapa 1: O MCU
Meu MCU de escolha é um LPC4337 em um LPCXpresso. Em cima dele, eu tenho um escudo (LPC General Purpose Shield) com um display e um sensor LM75 real. LPC4337 é um ARM Cortex M4 rodando a 200 MHz e um Cortex M0 menor (não usado aqui). O sensor real é conectado ao periférico I2C1 e o nosso virtual será conectado ao I2C0. A fonte está disponível no meu GitHub.
Como construir? Baixe LPCXpresso IDE junto com a biblioteca LPCOpen. Importe essa biblioteca para o IDE e também abra o projeto do GitHub. Tudo deve ser configurado e você pode clicar em "Debug" no canto inferior esquerdo.
Todo o projeto é baseado em um dos exemplos do NXP (para mostrar que meu projeto simula um sensor real e não precisa de código especial no lado do MCU). No arquivo principal (chamado iox_sensor.cpp) está este código:
#define SENSORS_ON_SHIELD
#if definido (SENSORS_ON_SHIELD) #define SHIELD_I2C I2C1 #elif definido (SENSORS_ON_FPGA) #define SHIELD_I2C I2C0 #endif
Ao trocar SENSOR_ON_SHIELD e SENSOR_OR_FPGA o usuário pode trocar em tempo de compilação para qual sensor falar, o real ou o virtual, visto que estão em diferentes pinos I2C.
Etapa 2: O FPGA
Minha placa FPGA de escolha é uma Artix 7 da Digilent, com um Xilinx Arty 7. Dois dos conectores PMod são usados, um para depuração e um para a carga real, a conexão com a placa MCU.
Novamente, o código-fonte do FPGA está disponível no meu GitHub (pasta fpgaSide).
Como construir? Baixe, compre ou abra o IDE Xilinx Vivado. Importe os arquivos do projeto do GitHub. Um dos arquivos (content.coe) são os dados de temperatura em formato bruto que serão transmitidos ao sensor falso. Há também um arquivo Excel com o mesmo nome que ajuda a converter dados de temperatura legíveis por humanos em dados LM75 brutos. Estou planejando mudar isso para um processo automatizado com um software escrito em Java, mas até então essa solução funciona. A síntese e a implementação devem demorar um pouco, leve isso em consideração.
Etapa 3: Como funciona?
Como eu disse, para o MCU, o FPGA parece um sensor, mais exatamente um sensor I2C. A saída do periférico I2C é conectada à entrada do FPGA. Dentro do FPGA existem 3 componentes principais: - Controlador I2C - Dispositivo I2C - Dados O Controlador I2C recebe dados I2C dos pinos do FPGA e os envia para o resto do FPGA e faz o mesmo na ordem inversa. Ele mantém uma máquina de estado interna para o protocolo I2C (aliás, aqui está a documentação para ele). O que este componente envia para o dispositivo I2C? O byte recebido atualmente, a posição desse byte na comunicação atual e se o MCU está escrevendo ou lendo do FPGA. O dispositivo I2C recebe os bytes enviados e atualiza a estrutura interna simulada do sensor. Ele pode apenas atualizar o ponteiro do registro ou solicitar novos dados da fonte de dados. O componente de dados transmite novos pontos de dados. Atualmente é apenas uma memória ROM cujo endereço é incrementado (aproximadamente) duas vezes por segundo.
Qual é o meu objetivo final? Isso é mostrado na segunda foto. Ou seja: possibilitar que mais dispositivos I2C (sensores e outros) sejam simulados ao mesmo tempo dentro do FPGA. Os dados no backend do sensor devem ser armazenados em cache no FPGA e transmitidos do PC via USB ou Ethernet. Suporta sensores mais avançados e outros dispositivos I2C (memória, drivers de LED, etc.).
Etapa 4: juntando tudo
Agora é a hora de conectar tudo junto. Teoricamente, é simples: a placa mcu tem um conector PMod (I2C0 e SSP0 (pode funcionar como SPI)). A placa Artix possui 4 conectores PMod que podem ser usados como você quiser. Eu escolho o conector D para falar com o MCU e o conector B para conectar ao meu analisador lógico.
Aviso
Você não pode conectar as duas placas juntas assim. Porque? PMod foi construído para facilitar a conexão de uma placa Master / Host (que fornece energia) a uma placa Slave / Sensor (que recebe energia). Mas neste projeto ambas as placas fornecem energia e se você conectar a saída de 3,3 V de uma placa à saída de 3,3 V da outra placa, coisas ruins podem acontecer. Mas eles podem não e você pode apenas alterar os parâmetros dos trilhos de alimentação do FPGA (eles são projetados com muito cuidado). Portanto, não corra esse risco e mova o conector um pino para a esquerda (e também vire a placa FPGA) como pode ser visto nas fotos acima. Aqui está a especificação do PMod, você pode estudar, o que fiz em poucas palavras é não conectar os VCCs das duas placas.
Recomendado:
Faça você mesmo Ambilight com Raspberry Pi e SEM Arduino! Funciona em qualquer fonte HDMI: 17 etapas (com imagens)
Faça você mesmo Ambilight com Raspberry Pi e SEM Arduino! Funciona em qualquer fonte HDMI: Tenho um conhecimento bastante básico de eletrônica, e é por isso que estou muito orgulhoso da minha configuração DIY Ambilight em uma caixa de madeira básica com a capacidade de ligar e desligar as luzes como e quando eu quiser. Para quem não sabe o que é um Ambilight;
Módulo RF 433MHZ - Faça receptor e transmissor de módulo RF 433MHZ sem qualquer microcontrolador: 5 etapas
Módulo RF 433MHZ | Faça receptor e transmissor de módulo RF 433MHZ sem qualquer microcontrolador: gostaria de enviar dados sem fio? facilmente e sem a necessidade de microcontrolador? Vamos lá, neste instrutível vou mostrar meu transmissor e receptor rf básico pronto para ser usado! Neste instrutível você pode enviar e receber dados usando muito ver
Faça o suporte de montagem DSLR por menos de 6 $ usando tubos de PVC (monopé / tripé para qualquer câmera): 6 etapas
Faça o suporte de montagem DSLR por menos de 6 $ usando tubos de PVC (monopé / tripé para qualquer câmera): Sim …. Você pode fazer o seu próprio com apenas alguns tubos de PVC e T's É leve … É perfeitamente equilibrado … É sólido forte … É fácil de personalizar … Eu sou Sooraj Bagal e vou compartilhar minha experiência com este suporte de câmera que criei para
Converta (apenas cerca de) qualquer arquivo de mídia em (apenas cerca de) qualquer outro arquivo de mídia gratuitamente !: 4 etapas
Converter (apenas cerca de) qualquer arquivo de mídia em (apenas cerca de) qualquer outro arquivo de mídia de graça !: Meu primeiro instrutível, saúde! De qualquer forma, eu estava no Google procurando um programa gratuito que converteria meus arquivos Youtube.flv para um formato que é mais universal, como.wmv ou.mov. Pesquisei inúmeros fóruns e sites e depois encontrei um programa chamado
Use qualquer sistema de alto-falantes 5.1 com qualquer reprodutor de MP3 ou computador, de forma barata!: 4 etapas
Use qualquer sistema de alto-falantes 5.1 com QUALQUER MP3 player ou computador, de forma barata!: (Este é meu primeiro instrutível e inglês não é minha língua nativa) Naquela época, eu comprei um conjunto de alto-falantes Creative Inspire 5100 barato. Eu usei com meu desktop que tinha uma placa de som 5.1 (PCI). Em seguida, usei-o com meu laptop que tinha um