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                           |
 |