Sie sind auf Seite 1von 15

Synthèse et implémentation de circuits arithmétiques sur FPGA

Pierre Langlois

http://creativecommons.org/licenses/by-nc-sa/2.5/ca/

INF3500 : Conception et implémentation de systèmes numériques


Synthèse et implémentation de circuits arithmétiques sur FPGA
Sujets de ce thème

• Ressou es de al ul d’u e t a he de t pe L
• I pl e tatio de l’additio et de la soust a tio da s u e t a he
• Valeur absolue
• Multiplication par une constante
• Blo s DSP4 E pou l’i pl e tatio de la ultipli atio et de la ultipli atio -accumulation
• Décalage et modulo

INF3500 : Conception et implémentation de systèmes numériques 2


FPGA de Xilinx série 7 :
tranche de type L (SLICEL)

• Une tranche de type L comprend:


– Quatre tables de correspondance (Look-up Table –
LUT) à 6 entrées (A6:A1) et deux sorties O6 et O5.
– Trois multiplexeurs (en gris, verticaux) pour réaliser
des fonctions logiques de 7 ou 8 entrées.
– Des po tes logi ues pou l’additio apide.
– Huit éléments à mémoire.
– Des multiplexeurs programmables (en blanc) pour
router les signaux.

Xilinx inc., 7 Series FPGAs Configurable Logic Block User Guide (ug474 v. 1.7), Nov. 2014
INF3500 : Conception et implémentation de systèmes numériques Xilinx inc., Virtex-5 FPGA User Guide (ug190 v. 5.4), March 2012
3
A hite tu e d’u additio eu

Cin
S
• La o figu atio d’additio eu la plus si ple est T3 X Y
l’additio eu à ete ue p opag e ripple carry X
Y
T1
Cout Cin

adder). T2 Cout S

• Le module de base est un compresseur 3:2 qui


prend trois bits en entrée et encode leur somme
Cin X Y Cout S
sur 2 bits.
0 0 0 0 0
• Une cascade de compresseurs 3:2 réalise une
addition à plusieurs bits. 0 0 1 0 1
0 1 0 0 1
B3 A3 B2 A2 B1 A1 B0 A0
0 1 1 1 0
0110
1 0 0 0 1
X Y X Y X Y X Y 9 1001
1 0 1 1 0
Cout Cin Cout Cin Cout Cin Cout Cin 0
+3 0011
S S S S 1 1 0 1 0
12 01100
1 1 1 1 1
S4 S3
INF3500 S2
: Conception et implémentation S1numériques
de systèmes S0 4
Implémentation de l’additio da s u e t a he d’u FPGA

• Les FPGA de Xilinx implémentent le module du Cin X Y


T1 =
Cout S
compresseur avec un circuit spécial dédié en X xor Y
reformulant les équations du compresseur 3:2. 0 0 0 0 0 0
• La première porte OUX est réalisée dans une LUT. 0 0 1 1 0 1
• Le multiplexeur et la deuxième porte OUX font 0 1 0 1 0 1
partie du circuit dédié de chaque tranche. 0 1 1 0 1 0
• Les sig au de ete ue so t p opag s à l’i t ieu
1 0 0 0 0 1
d’u e t a he et de t a he e t a he.
1 0 1 1 1 0
1 1 0 1 1 0
1 1 1 0 1 1
X T1
Y T1 = X xor Y
X Y
S = T1 xor Cin
Cout = T1  Cin + T ’  Y
Cout Cin

S
= T1  Cin + T ’  X
INF3500 : Conception et implémentation de systèmes numériques 5
Xilinx inc., Spartan-3 Generation FPGA User Guide (ug331 v. 1.8), June 2011
Fonctionnement interne des LUT à 6 entrées A6:A1 et deux sorties O6 et O5

A6
A6:1 A6:A1 5-LUT
A5
A4
A3
A2
A1

O6 5-LUT O6

O5 O5

INF3500 : Conception et implémentation de systèmes numériques 6


Implémentation de l’additio
dans u e t a he d’u FPGA

• Cha ue t a he peut alise l’additio ou la


soustraction de deux nombres de 4 bits.
• La configuration pré-connectée et les
interconnexions entre tranches rendent le circuit
très rapide.

A(i)
B(i)

Xilinx inc., Spartan-3 Generation FPGA User Guide (ug331 v. 1.8), June 2011

En VHDL:
signal A, B, sum : signed (W – 1 downto 0);

sum <= A + B;
Xilinx inc., 7 Series FPGAs Configurable Logic Block User Guide (ug474 v. 1.7), Nov. 2014
INF3500 : Conception et implémentation de systèmes numériques 7
A hite tu e d’u additio eu -soustracteur

0 1
• Nous supposons une représentation à Bi
Bi
Bi
Bi
complément à deux.
• La soustraction A – B peut être faite par A + (-B).
• Cha ge le sig e d’u o e o siste à i ve se B3 A3 B2 A2 B1 A1 B0 A0

Sub/Add’
ses bits et ajouter 1.
• Quand Sub/Add’ = , u e additio est faite.
• Quand Sub/Add’ = , les its de B so t i ve s s et
o ajoute u e ete ue à l’additio eu de poids
faible: la soustraction est réalisée. X Y X Y X Y X Y

• L’i pl e tatio su u e t a he de t pe L est


Cout Cin Cout Cin Cout Cin Cout Cin

S S S S
laissée en exercice.
S4 S3 S2 S1 S0

INF3500 : Conception et implémentation de systèmes numériques 8


Valeur absolue

• La valeu a solue s’i pl e te ave u


additionneur-soustracteur. Si le bit de signe a une B3 A3 B2 A2 B1 A1 B0 A0
valeur de 1, on fait une inversion des bits et une Sub/Add’
addition de 1.

X Y X Y X Y X Y

Cout Cin Cout Cin Cout Cin Cout Cin

S S S S

S4 S3 S2 S1 S0

INF3500 : Conception et implémentation de systèmes numériques 9


Multiplication par une constante

• Quand un des termes de la multiplication est • On peut exploiter les produits partiels négatifs
constant, la technique de la décomposition en pour avoir le plus faible coût possible.
produits partiels peut grandement simplifier les • Par exemple:
calculs. A × 15 = A × (8 + 4 + 2 + 1) =
• Par exemple A << 3 + A << 2 + A << 1 + A
A × 10 = A × (8 + 2) = A × 8 + A × 2 = A << 3 + A << 1 ce qui prend trois additions.
• Le oût de l’op atio est donc limité à un seul • Une approche moins couteuse serait:
additionneur. A × 15 = A × (16 – 1) = A << 4 – A, ce qui ne prend
• Un synthétiseur peut implémenter la u’u e seule additio ou soust a tio .
multiplication par une constante avec une • Il existe des méthodes pour trouver la
o i aiso d’additio s et de d alages. ep se tatio d’u o e utilisa t u i i u
de chiffres signés.

INF3500 : Conception et implémentation de systèmes numériques 10


Architecture du FPGA XC7A100T et tranches de calcul DSP48E1
Vue d’ensemble du FPGA XC7A100T
Gros plan sur la région du rectangle rouge

INF3500 : Conception et implémentation de systèmes numériques 11


Tranches de calcul DSP48E1 et implémentation de la multiplication

• Les FPGA de série 7 de Xilinx incluent des tranches


spécialisées pour les calculs de traitement de
signal, les blocs DSP48E1.
• Les FPGA de type XC7A100T en contiennent 240.
• Ces blocs incluent entres autres un multiplicateur
de 25 × 18 bits en complément à deux.
• Les multiplications de très petits nombres (e.g. 4 ×
4) se font plutôt dans les tranches avec LUT.
• Les multiplications de très grands nombres se font
en utilisant plusieurs multiplicateurs de 25 × 18 et Xilinx inc., 7 Series DSP48E1 Slice User Guide (ug479 v. 1.8), November 2014

en combinant les produits.


En VHDL:
Signal Produit : signed(2 * W – 1 downto 0);
Signal A, B : signed(W – 1 downto 0);

Produit <= A * B;
INF3500 : Conception et implémentation de systèmes numériques 12
Multiplication-accumulation

• Les tranches de calcul DSP48E peuvent être


configurés pour des fonctions plus complexes
comme la multiplication-accumulation sur 48 bits.
• En anglais on appelle cette opération Multiply and
Accumulate (MAC).
• La multiplication-a u ulatio alise l’op atio
S=S+A*B Xilinx inc., XST user guide (ug627 v. 12.4), December 2010

• Elle est très fréquente en traitement de signal


signal S: signed(2 * W – 1 downto 0);
pour calculer la convolution ou le produit scalaire signal A, B : signed(W – 1 downto 0);
de deux vecteurs. …
process (clk)
y ( n)  h( n) * x ( n) begin
if rising_edge(clk) then
M
  h( k ) x ( n  k )
S <= S + mult;
mult <= A * B
k 0 end if;
 h(0) x(n)  h(1) x(n  1)  h(2) x(n  2)  ...  h( M ) x(n  M ) end process;

INF3500 : Conception et implémentation de systèmes numériques 13


Décalage, modulo et redimensionnement

1. Un décalage par un nombre constant de bits (A ×


2N, A / 2N, shift_left(A, N), shift_right(A, N) ne
nécessite aucune logique, seulement une
sélection de fils.
2. Le décalage vers la gauche par un nombre
a it ai e de its N ≤ s’i pl e te da s u e
tranche DSP48E en fixant une des entrées à 2N.
3. Le décalage vers la droite par un nombre
a it ai e de its s’i pl e te aussi ave u e
tranche DSP48E. Voir les exercices en classe.
4. Le modulo et le redimensionnement
(resize(arg, newsize)) ne nécessitent aucune
logique, seulement une sélection de fils.

INF3500 : Conception et implémentation de systèmes numériques 14


Vous dev iez ai te a t t e apa le de …

• Décrire et utiliser les ressources de calcul spécialisées


disponibles sur un FPGA: propagation des retenues et
blocs DSPs. (B2, B3)
• Effe tue le p o essus de s th se et d’i pl e tatio
d’op atio s arithmétiques simples sur les structures de
calcul disponibles sur un FPGA. (B3)

Code Niveau (http://fr.wikipedia.org/wiki/Taxonomie_de_Bloom)


B1 Connaissance – o ise de l’i fo atio .
B2 Compréhension – i te p te l’i fo atio .
B3 Application – confronter les connaissances à des cas pratiques simples.
B4 Analyse – décomposer un problème, cas pratiques plus complexes.
B5 Synthèse – expression personnelle, cas pratiques plus complexes.
INF3500 : Conception et implémentation de systèmes numériques 15

Das könnte Ihnen auch gefallen