Wishbone (bus informatique)

Le bus Wishbone est un bus de matériel informatique libre destiné à permettre à différents circuits intégrés de communiquer entre eux. L'objectif est de permettre une connexion de différents cœurs entre eux dans un circuit. Un très grand nombre de conception open-source pour des CPUs, ou des périphériques auxiliaires, ont été adaptés à l'interface Wishbone. Beaucoup peuvent être trouvés chez OpenCores (en), une fondation qui essaie de rendre disponible le matériel open-source.

Interfaces maître et esclave du bus Wishbone.

Wishbone a comme prétention d'être un "bus logique". Il ne spécifie donc pas d'information électrique ou de topologie de bus. Ainsi, la spécification est écrite en termes de "signaux", cycles d'horloge, et niveau logiques hauts et bas.

Cette ambigüité est intentionnelle. Wishbone est fait pour laisser les concepteurs combiner plusieurs conceptions décrites en Verilog, VHDL ou un autre langage de description logique pour la Conception assistée par ordinateur pour l'électronique. Wishbone fournit une façon standard pour les concepteurs de combiner ces conceptions matérielles (appelées "cœurs" - core en anglais). Wishbone est défini pour avoir des bus 8, 16, 32 bits. Tous les signaux sont synchrones à une horloge unique mais les réponses des esclaves peuvent être générées de manière combinatoires pour un maximum de performances. Wishbone permet l'addition d'un "tag bus" pour décrire les données. Mais un reset, une simple lecture adressée ou son écriture, mouvement des blocs de données, et les cycles indivisibles du bus cycles travaillent tous sans tags.

Topologies des bus Wishbone

modifier

Les bus Wishbone s'adaptent facilement aux topologies courantes comme le point-à-point, plusieurs-à-plusieurs (i.e. le bus classique), hiérarchique, où même commutés. Pour des topologies moins courantes, Wishbone requiert un contrôleur de bus ou arbitre, avec des composants gardant la même interface.

Comparaisons

modifier

Signaux de contrôle du bus Wishbone comparé aux autres bus standards pour System on Chip

Wishbone ⇒ Avalon
Wishbone Avalon Bus Description
cyc = !write_n or !read_n indique qu'un cycle valide du bus est en cours
stb = chipselect indique un cycle de transfert de données valide
we = !write_n and read_n indique si le bus courant local est un cycle d'écriture ou de lecture. Le signal estpositionné à 0 durant un cycle de lecture, et positionné à 1 durant un cycle d'écriture.
ack = !waitrequest indique la terminaison d'un cycle normal de bus par l'esclave.
Avalon ⇒ Wishbone
Avalon Bus Wishbone Description
chipselect = stb indique qu'un esclave est sélectionné.
write_n = !(cyc and we) indique que la requête du maître est pour une écriture dans un esclave.
read_n = !(cyc and !we) indique que la requête du maitre est pour une lecture d'un esclave.
waitrequest = !ack indique que le maître attend une requête de l'esclave.

Autres bus

modifier

Liens externes

modifier