Implémentation efficace d'algorithmes sur FPGA : Machines à état

Magazine
Marque
Open Silicium
Numéro
2
Mois de parution
avril 2011
Spécialité(s)


Résumé

L'article précédent vous a présenté deux façons de réaliser un multiplieur complexe, toutes deux proches de la méthode naïve qui consiste à utiliser un circuit arithmétique de base (multiplieur, additionneur, soustracteur) par opération et à les connecter selon l'arbre de calcul. Nous allons maintenant voir comment partager le même circuit arithmétique entre plusieurs opérations.


1. Séquençage

Tout comme dans l'article précédent, notre problème est le suivant : étant donné quatre entrées a, b, c, d, nous devons calculer deux nombres, r = a*c - b*d et i = b*c + d*a (ce qui correspond à une multiplication complexe). Nous travaillons avec des entiers signés sur 9 bits.

Notre implémentation précédente utilise quatre multiplieurs, qui peuvent être une ressource assez coûteuse. Nous allons voir à présent comment n'utiliser qu'un seul multiplieur. Comment ? Exactement comme le font les microprocesseurs, en effectuant à tour de rôle et à chaque cycle chacune des multiplications. Dans un pseudo-langage assembleur, cela donnerait ceci :

mul r1, a, c

mul r2, b, d

sub r, r1, r2

mul r1, b, c

mul r2, d, a

add i, r1, r2

Autrement dit, nous devons séquencer les opérations. On peut bien sûr s'attendre à ce que la bande passante obtenue soit inférieure à celle des circuits précédents, mais c'est...

Cet article est réservé aux abonnés. Il vous reste 97% à découvrir.
S'abonner à Connect
  • Accédez à tous les contenus de Connect en illimité
  • Découvrez des listes de lecture et des contenus Premium
  • Consultez les nouveaux articles en avant-première
Je m'abonne


Article rédigé par

Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous