forked from tanchou/Verilog
78 lines
2.8 KiB
Plaintext
78 lines
2.8 KiB
Plaintext
Projet à faire avec un FPGA (tang nano 20k) et un esp32 :
|
||
Le but global est de pouvoir se connecter à l'esp32 et ensuite de pouvoir communiquer avec le pc (ou autre appareil connecté en USB au FPGA)
|
||
l'esp 32 agis comme esclave pour le FPGA et sert uniquement de portail wifi, le FPGA quand à lui, fera le lien entre les appareils en wifi et le périphérique USB
|
||
|
||
[ PC via USB-C ] ←→ [ FPGA (Tang Nano 20K) ] ←→ [ ESP32 ] ←→ [ Clients en Wi-Fi ]
|
||
|
||
|
||
Rôles des composants
|
||
FPGA (Tang Nano 20K) :
|
||
- Gère l’interface UART avec l’ESP32
|
||
- Gère la communication USB avec le PC
|
||
- Fait le routage bidirectionnel des données (une sorte de mux / buffer intelligent)
|
||
|
||
ESP32 :
|
||
- Crée un réseau Wi-Fi local
|
||
- Écoute via une connexion série (UART) avec le FPGA
|
||
- Reçoit des commandes du FPGA et envoie les données des clients Wi-Fi
|
||
|
||
PC (ou autre appareil USB) :
|
||
- Peut recevoir/envoyer des données (par exemple, un terminal série ou un logiciel personnalisé)
|
||
|
||
Architecture
|
||
|
||
[ PC via USB ]
|
||
│
|
||
┌───────▼────────┐
|
||
│ uart_usb │ <— UART avec le PC
|
||
└──────┬─────────┘
|
||
│
|
||
▼
|
||
┌──────────────┐
|
||
│ uart_core │ <— Routeur/contrôleur central
|
||
└────┬────┬────┘
|
||
│ │
|
||
┌─────────────┘ └────────────┐
|
||
▼ ▼
|
||
[uart_wifi] [user_logic] (capteur, LEDs, etc.)
|
||
<— UART avec ESP32 (comporte les modules fonctionnels)
|
||
|
||
uart_usb
|
||
Interface UART vers le PC (via USB-UART)
|
||
|
||
Peut utiliser un convertisseur USB-UART sur uart_rx_pc / uart_tx_pc
|
||
|
||
Fournit :
|
||
|
||
rx_data, rx_valid, rx_ready
|
||
|
||
tx_data, tx_valid, tx_ready
|
||
|
||
uart_wifi
|
||
UART avec l'ESP32
|
||
|
||
Même interface que uart_usb, mais sur uart_rx_esp / uart_tx_esp
|
||
|
||
Sert à communiquer avec le monde Wi-Fi
|
||
|
||
uart_core
|
||
Module central de routage UART
|
||
C’est lui qui gère la logique :
|
||
|
||
Tu peux le coder comme un FSM maître ou un router
|
||
|
||
Il fait par exemple :
|
||
|
||
Lecture des commandes depuis le PC → envoie à ESP32
|
||
|
||
Réception d’une réponse de l’ESP32 → envoie au PC
|
||
|
||
|
||
uart_rx_pc UART RX depuis le PC
|
||
uart_tx_pc UART TX vers le PC
|
||
uart_rx_esp UART RX depuis ESP32
|
||
uart_tx_esp UART TX vers ESP32
|
||
fifo_rx_pc_to_esp Données du PC à transférer à l’ESP
|
||
fifo_rx_esp_to_pc Données de l’ESP à transférer au PC
|
||
link_manager Logique de contrôle des transferts entre buffers et UART
|
||
status_led Gère les LEDs de statut |