Protocole Wishbone : signaux, ACK et pipeline
Comprendre le bus Wishbone en VHDL : signaux master/slave, handshake ACK, transferts pipeline et différences avec AXI.
Qu'est-ce que Wishbone ?
Wishbone est un bus système open-source développé par Silicore Corporation et standardisé par l'OpenCores Foundation. Il est très utilisé dans les designs open-hardware (OpenCores, LiteX, OpenRISC) comme bus interne de SoC.
Ses caractéristiques :
- Open-source : spécification libre et gratuite
- Simple : peu de signaux, facile à implémenter
- Flexible : supporte des transferts simples, en burst et en pipeline
- Synchrone : toutes les transactions se font sur des fronts d'horloge
Signaux Wishbone
Les signaux sont préfixés par _i (input) ou _o (output) selon la perspective maître/esclave.
| Signal | Direction (Maître) | Description |
|---|---|---|
| CLK_I | Entrée | Horloge partagée |
| RST_I | Entrée | Reset synchrone actif haut |
| ADR_O | Sortie | Adresse |
| DAT_O | Sortie | Données maître → esclave |
| DAT_I | Entrée | Données esclave → maître |
| WE_O | Sortie | Write Enable : '1' = écriture |
| SEL_O | Sortie | Sélecteur d'octets actifs |
| STB_O | Sortie | Strobe : transaction active sur ce cycle |
| CYC_O | Sortie | Cycle : le maître occupe le bus |
| ACK_I | Entrée | Acknowledgment : l'esclave termine la transaction |
| ERR_I | Entrée | (optionnel) Erreur |
| RTY_I | Entrée | (optionnel) Retry |