# Projet FPGA (Tang Nano 20K) + ESP32 ## Objectif global Le but est de pouvoir se connecter à l’ESP32 via Wi-Fi, et de communiquer avec un PC (ou autre appareil USB connecté au FPGA). L’ESP32 agit comme **esclave** pour le FPGA et sert uniquement de **portail Wi-Fi**. Le FPGA fait le lien entre les appareils Wi-Fi et le périphérique USB. --- ## 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 (mux / buffer intelligent) ### ESP32 - Crée un réseau Wi-Fi local - Écoute via une connexion UART avec le FPGA - Reçoit les commandes du FPGA et envoie les données des clients Wi-Fi ### PC (ou autre appareil USB) - Envoie et reçoit des données (via terminal série ou logiciel personnalisé) --- ## Architecture ``` [ PC via USB ] │ ┌───────▼────────┐ │ uart_usb │ <— UART avec le PC └──────┬─────────┘ │ ▼ ┌──────────────┐ │ uart_core │ <— Routeur/contrôleur central └────┬────┬────┘ │ │ ┌─────────────┘ └────────────┐ ▼ ▼ [uart_wifi] [user_logic] (LEDs) <— UART avec ESP32 (comporte les modules fonctionnels) ``` --- ## Détails des modules ### `uart_usb` - Interface UART vers le PC (via USB-UART) - Peut utiliser un convertisseur USB-UART via `uart_rx_pc` / `uart_tx_pc` - Fournit : - `rx_data`, `rx_valid`, `rx_ready` - `tx_data`, `tx_valid`, `tx_ready` ### `uart_wifi` - Interface UART avec l’ESP32 - Même interface que `uart_usb`, mais avec `uart_rx_esp` / `uart_tx_esp` - Sert à la communication Wi-Fi ### `uart_core` - Module central de routage UART - Gère la logique de communication : - Lecture des commandes depuis le PC → envoie à l’ESP32 - Réception de réponse de l’ESP32 → envoie au PC - Peut être codé comme une FSM maître ou un router simple --- ## Signaux principaux | Signal | Description | |------------------------|------------------------------------------------------| | `uart_rx_pc` | UART RX depuis le PC | | `uart_tx_pc` | UART TX vers le PC | | `uart_rx_esp` | UART RX depuis l’ESP32 | | `uart_tx_esp` | UART TX vers l’ESP32 | | `fifo_rx_pc_to_esp` | Données du PC à transférer à l’ESP32 | | `fifo_rx_esp_to_pc` | Données de l’ESP32 à transférer au PC | | `link_manager` | Logique de contrôle des transferts entre buffers/UART| | `status_led` | Gestion des LEDs de statut |