forked from tanchou/Verilog
86 lines
3.2 KiB
Markdown
86 lines
3.2 KiB
Markdown
![]() |
# 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 |
|