transparents

Transcription

transparents
Implantation d’algorithmes de
traitement du signal sur les
architectures virgule fixe
Plan
ƒ 1. Arithmétique virgule fixe
ƒ 2. Détermination du domaine de définition
ƒ 3. Codage des données
Daniel Ménard, Olivier Sentieys
IRISA/ENSSAT Lannion
Université de Rennes I
[email protected]
http://www.irisa.fr/R2D2
ARCHI’05 - 2
Codage en virgule fixe complément à 2
ƒ Définition :
2m-1
pMSB
m −1
x = −2 m S + ∑ bi 2i
2-n
S bm-1 bm-2
21
20 2-1
b1
b0
b-1 b-2
pLSB
ƒ Domaine de définition du codage : [− 2 m ,2 m − 2 − n ]
b-n+2 b-n+1 b-n
n
m
i =− n
Codage en virgule fixe complément à 2
Partie entière
Partie fractionnaire
ƒ m : distance (en nombre de bits) entre la position du bit le plus
ƒ Pas de quantification
significatif pMSB et la position de la virgule pV
q = 2−n
ƒ n : distance entre la position de la virgule pV et la position du bit le
moins significatif pLSB
20
2-1
2-2
x
x
x
b = m+ n+ 1 bits
format: (b,m,n)
ARCHI’05 - 3
m
pv
2m-1
2-3
2-4
2-n
2-5
S bm-1
2-6
2-7
b-6 b-7
pMSB
n
b
2-8
2-9
2-10
ƒ Exemple de codage
b=8
m = -3
n=10
b-n+1 b-n
pLSB
ex:
ex: 0.09472
0.09472 (8,-3,10)
(8,-3,10)
01100001
01100001
-10
0.0625+0.03125+2
0.0625+0.03125+2-10
• (6,3,2), Q26
ARCHI’05 - 5
0111.11
0111.11 7.75
7.75
0111.10
0111.10 7.5
7.5
0000.11
0000.11
0000.10
0000.10
0000.01
0000.01
0000.00
0000.00
1111.11
1111.11
1111.10
1111.10
1111.01
1111.01
0.75
0.75
0.5
0.5
0.25
0.25
00
-0.25
-0.25
-0.5
-0.5
-0.75
-0.75
1000.01
1000.01 -7.75
-7.75
1000.00
1000.00 -8
-8
-0.5 = -8+7. 5
-7.75 = -8+0.25
Règles de l’arithmétique virgule fixe
Exemple de calcul
ƒ Addition: r=a+b
ƒ Addition: r=a+b
• Règle : le format des opérandes a et b doit être identique
• Étapes
mc = max (m A ,mB )
o Choix d’un format commun (bc,mc,nc)
o Alignement de la virgule
o Extension des bits des opérandes a et b
mA
SAA
SA
bmA
mA
b11
+
SB
SR
bmR
SB
SB
b00
b-1-1
b-2-2
Extension du
nc = max (n A ,nB )
bit de signe
11 1
bc = mC + nC + 1
bmB
SbB0
bbmB
-1
bb-20
b1
b0
b-1
b-2
⎧m + 1 si a + b ∉ DC
mR = ⎨ C
si a + b ∈ DC
⎩ mC
nR = nC
bb-nA
nA
mB nB
mR
ARCHI’05 - 8
o Débordement présent si sign(r) ≠ sab
nA
mB
SB
• Débordement possible si sign(a) = sign(b) = sab
nB
bbb-nB
-1
nB
b0-2
b0nB
bR = mR + nR + 1
bnA
nR
00011 (3)
00111 (7)
0001 (1)
1010 (-6)
01010 (10)
ARCHI’05 - 9
ƒ Multiplication: r = a × b
ƒ Multiplication: r = a × b
• Règle : la représentation de a et b doit être identique
• Étapes
o Extension du signe des opérandes
o Extension des bits de signe des opérandes a et b
o Doublement du bit de signe du résultat
• Le bit redondant peut être intégré à la partie entière du résultat
mA
SB
SB
SA
SB
SA
SB
SA
×
SB
SA bmA
b1
SB
SB
b0
b-1
b-2
bmB
bnA
nB
ARCHI’05 - 10
SR bmR
b1
b0
mR = m A + mB ( + 1 )
b-1
1111100.
111100. .
b0
b-1
bnB
nR = n A + nB
b-2
nR = nA + nB
1 1 1
111110 (-2)
111100 (-4)
1110 . .
110 . . .
10 . . . .
1
mR = m A + mB + 1
bR = bA + bB
SR
1100 (-4)
0110 ( 6)
nA
mB
SB
Nécessité d’un bit
supplémentaire pour
coder le résultat
S’il n’y a pas de débordement la
dernière retenue peut être ignorée
Exemple de calcul
SA
1 11
0011 (3)
0111 (7)
Règles de l’arithmétique virgule fixe
SA
1 11
0110 (6)
1011 (-5)
11101000
-128+64+32+8 = -24
bnR
ARCHI’05 - 11
001000 (8)
Résumé des règles
Codage en virgule fixe : objectifs
ƒ Addition
ƒ Objectifs pour le codage en virgule fixe
• Choix du format commun
a
o Connaissance du domaine de définition des données
si bout = bin alors m c = max (m A ,m B ,m R )
bin
+
b
• Garantir l’absence de débordements
• Maximiser la précision
si bout > bin alors m c = max (m A ,m B )
r
bout
Partie entière : m bits
S
ƒ Multiplication
nR = n A + nB
×
bm-1 bm-1
b1
b0
b-1
b-2
b-n+2 b-n+1 b-n
Précision
Dynamique
a
Doublement
du bit de signe
mR = m A + mB + 1
r
Garantire l’absence
de débordement
bR = bA + bB
b
ARCHI’05 - 12
Respecter les règles de
l’arithmétique virgule fixe
Maximiser la
précision des calculs
ARCHI’05 - 15
Eléments de l’unité de calcul
Exemple : TMS320C54x
DB
Opérateurs
Nbits Entrées
Nbits Sortie
Multiplieur
b nat
2 b nat
2 b nat
2 b nat
2 b nat +b g
2 b nat +b g
2 b nat
b nat
2 b nat +b g
b nat
Additionneur/ UAL
Saturation/Arrondi
AA
Registre
Opérande source
Accumulateur
PBCB DB
bnat
bnat
×
1 additionneur 40 bits
1 ALU (40 bits)
P
Nbits
MAC
b nat
2 b nat
2 b nat +b g
Interconnexions
Interconnexions registres
registres -- opérateurs
opérateurs spécialisées
spécialisées
Ö
Ö Structure
Structure hétérogène
hétérogène
Ö
Ö Bonnes
Bonnes performances
performances en
en terme
terme
de
de consommation
consommation et
et de
de surface
surface
2 registres accumulation 40 bits
+
badd
CB DB CBDB EB
1 multiplieur 16*16 bits
Op source 1 : registre T
Op source 2 : mémoire
Op destination :
BB
bmult
ARCHI’05 - 18
RSBQ (Rapport Signal à
Bruit de Quantification)
Partie fractionnaire : n bits
bin
1 registre à décalage en barillet
Accumulateur
Accumulateur
1 unité dédiée Viterbi
Sat /Arr
ARCHI’05 - 19
Codage en virgule fixe : étapes
Fil rouge : filtre FIR
N −1
y ( n ) = ∑ ai × x ( n − i )
1. Détermination de la dynamique des données : D(xi)
ƒ
Méthodes statistiques ou analytiques
i =0
2. Détermination de la position de la virgule : mxi
x (n)
3. Détermination de la largeur des données : bxi
ƒ
z-1
×
a0
Opérateurs SIMD, précision multiple
z-1
×
a1
4. Evaluation de la précision des calculs
ƒ
ƒ
×
aN-2
+
Méthodes par simulation ou analytiques
Calcul du Rapport Signal à Bruit de Quantification
ARCHI’05 - 21
z-1
×
aN-1
+
+
y (n)
ARCHI’05 - 22
Fil rouge : filtre FIR
Fil rouge 2 : filtre récursif (IIR)
float x[N] = {0.123, -0.569,...} /* Signal d’entrée du filtre */
float h[N] = {-0.0295, 0.0364,.., -0.0295 }; /* Coefficients du filtre */
int main() {
float x[N], y[M], acc;
int i,j;
ƒ Cascade de cellules d’ordre
2
for(i=0; i<N; i++){x[i] = 0;}
wn
+
/* Initialisation variables internes */
×
×
×
a1
a2
ARCHI’05 - 24
z-1
wn
+yn
×
+
b0
×
a1
z-1
b1
×
×
b2
×
z-1
b1
×
×
}
+
b0
z-1
for(j=0; j<M; j++) {
/* Filtrage du vecteur d'entrée input */
x[0] = Input[j];
acc = x[0]*h[0] ;
for(i=N-1; i>0; i--)
{
acc = acc + x[i]*h[i]; /* Calcul d'une cellule du filtre */
x[i] = x[i-1];
/* Vieillissement des variables internes */
}
y[j] = acc;
}
ARCHI’05 - 23
ADD 1
ADD 0
xn
a2
b2
…
yn
Plan
Détermination du domaine de définition
ƒ 1. Arithmétique virgule fixe
ƒ 2. Détermination du domaine de définition
ƒ 3. Codage des données
ƒ Format des données: (b,m,n)
2m-1
21
20 2-1
S bm-1 bm-1
b1
b0
2-n
b-1 b-2
Partie entière
b-n+2 b-n+1 b-n
Partie fractionnaire
b = m+ n+ 1 bits
format: (b,m,n)
ƒ But: déterminer le nombre de bits minimal
pour représenter la partie entière (mxi)
mxi = ⎡log 2 (max( xi
ARCHI’05 - 25
))⎤
ARCHI’05 - 26
Méthodes pour déterminer D(xi)
Méthodes analytiques
ƒ Méthodes statistiques
ƒ Normes dans le cas des systèmes linéaires
• Simulation de l’algorithme en virgule flottante
• Détermination de la dynamique à partir des paramètres
statistiques du signal
Ö Estimation précise mais dépendante du signal d’entrée
• Détermination de l’expression de la dynamique
• Utilisation de normes (L1, …) ou de l’arithmétique
d’intervalle
∞
ymax1 = max n ( x(n) ). ∑ h(m)
m = −∞
ÖEstimation conservatrice mais absence de débordement garantie
ARCHI’05 - 27
ymax 2 = max n ( x(n) ) max ω ( H (ω ) )
• Norme L2
ymax 3 = max n ( x(n) ).
ARCHI’05 - 28
∞
∑ h( m)
H(z)
Y(z)
¾ Méthode garantissant
l’absence de débordement
• Norme L1
• Norme Chebychev
ƒ Méthodes analytiques
X(z)
2
¾ Méthode garantissant l’absence
de débordement pour un signal
d’entrée à bande étroite
( x(n)=cos(wt) )
¾ Méthode limitant la
probabilité de débordement
m = −∞
ymax 3 ≤ ymax 2 ≤ ymax1
Filtre FIR
Dynamique des données (IIR)
ƒ Propagation de la dynamique (intervalles) des
entrées au sein du GFS représentant l’application
ƒ Sources de débordements : additionneurs
[-1,1]
x (n)
z-1
×
a0
[- |a0|, |a0| ]
a1
z-1
×
z-1
×
aN-2
xn
×
aN-1
N −1
⎡ N −1
⎤
⎢− ∑ ai , ∑ ai ⎥
i =0
⎣ i =0
⎦
[- |a1|, |a1| ]
+
ƒ Norme L1
• IIR : 2 sources ADD0 et ADD1
+
+
∞
N −1
m = −∞
m =0
y (n)
ARCHI’05 - 30
×
×
∞
×
wmax1 = xmax . ∑ hD (m)
a1
z-1
∞
ymax1 = xmax . ∑ h(m)
b1
m = −∞
×
×
1
H D ( z) =
1 + a1 z −1 + a2 z − 2
yn
+
b0
z-1
m = −∞
max n ( y (n) ) = max n ( x(n) ). ∑ h(m) = ∑ ai = 1.65
ADD 1
wn
ADD 0
+
a2
H ( z) =
b2
ARCHI’05 - 31
Dynamique des données (IIR)
Dynamique des données (IIR)
ƒ Exemple
ƒ Comparaison des différentes méthodes
F iltre1 N um (z )/D en(z )
2
x ∈ [−1,1]
1.5
0.5 − 0.2428 z −1 + 0.5
H ( z) =
1 − 0.85 z −1 + 0.8417 z − 2
xmax
xmax
∑ h(m) = 2.5645 ⎯⎯→ m
m = −∞
∞
D
y
=2
0
0
0.5
1
1.5
2
2.5
3
3.5
F iltre 1/D en(z )
ARCHI’05 - 32
N2
Norme L1
2,56
2
9
4
Norme Chebychev
1.687
1
7,13
3
Méthodes statistiques
6
HD(jw)
4
2
= -27951
= 27581
= 16384
= 16384
= -7956
G2.max
0.5
( m) = 9 ⎯
⎯→ mw = 4 → k1 = 4
Codage des coefficients
N1
Méthodes analytiques
8
∑h
a1
a2
b2
b0
b1
G1.max
Méthodes
H(jw)
1
∞
m = −∞
b0 + b1 z −1 + b2 z − 2
1 + a1 z −1 + a2 z − 2
0
0
0.5
1
1.5
2
2.5
3
Chirp
1,66
1
7.12
3
Bruit blanc gaussien
0.74
0
2.34
2
Bruit blanc uniforme
1.4
1
4.87
3
3.5
Fonction de transfert des filtres H(z) et HD(z)
ARCHI’05 - 33
G1max =
ymax
xmax
N1 = ⎡log 2 (G1max )⎤
G2 max =
wmax
xmax
N 2 = ⎡log 2 (G2 max )⎤
Dynamique des données (IIR)
Plan
ƒ Cellules d’ordre 2 cascadées
ƒ 1. Arithmétique virgule fixe
ƒ 2. Détermination du domaine de définition
ƒ 3. Position de la virgule et codage des données
Bruits de quantification
H1 ( z ).H 2 ( z ).H 3 ( z )
H 1 ( z ). H 2 ( z )
H1 ( z )
x(n)
H1(z)
H 1D ( z )
y1(n)
H2(z)
w1(n)
H 1 ( z ). H 2 D ( z )
y2(n)
y3(n)
H3(z)
w2(n)
w3(n)
H1 ( z ).H 2 ( z ).H 3 D ( z )
H iD ( z ) =
1
1 + a1i z −1 + a 2 i z − 2
H i ( z) =
b0i + b1i z −1 + b2i z −2
1 + a1i z −1 + a2i z − 2
ARCHI’05 - 34
ARCHI’05 - 35
Contraintes du codage en virgule fixe
Introduction des bits supplémentaires
ƒ Respect des règles de l’arithmétique virgule fixe
ƒ Utilisation des bits de garde de l’accumulateur (bg bits)
• Alignement de la virgule des opérandes sources d’une
addition ou d’une soustraction
o Format commun pour les opérandes sources
• badd = bmult + bg
• Pas de débordement si le nombre de bits supplémentaires k
respecte k ≤ bg
mb
Coefficient
ƒ Prévenir les débordements
• Débordement possible lors d’une addition ou d’une
soustraction
o Nécessité d ’introduire des bits supplémentaires
(bnat, mb, nb)
b0
S
s0
mb+ ms+1
Signal
(bnat, ms, ns)
S
×
nb+ ns
bmult
S
badd
(bmult, mb+ ms+1, nb+ ns)
+
k-1
(badd, mb+ ms+k, nb+ ns)
ARCHI’05 - 37
ns
bnat
bnat
• Recadrage des données : adapter le format des données à la
dynamique des données
ARCHI’05 - 36
ms
nb
+
mb+ ms+1
S S S S
badd
bg
bmult
nb+ ns
Filtre FIR
Introduction des bits supplémentaires
ƒ Recadrage de la sortie du
multiplieur (badd = bmult)
b0
Coefficient
Signal
(bnat , ms , ns )
×
(bmult ,
mb+ ms+k,
nb+ ns -k+1)
• Recadrage interne
s0
bnat
(bnat , mb , nb )
Dx = 0.99
>> k-1
mx = 0
bmult
+
b0
• Recadrage de l’entrée
• Recadrage des coefficients
s0
(bnat , mb , nb )
(bmult ,
mb+ ms+k,
nb+ ns-k+1)
o réalisé lors du codage
de ces coefficients
Recadrage
de l’entrée
ARCHI’05 - 38
Signal
>> k-1
bnat
×
DACC = 1,65
bmult
+
(badd , mb+ ms+k, nb+ ns-k+1)
x (n)
b0
z-1
>>
>>
×
>>
b1
×
bN-2
Filtre FIR
1
m'MULT ' = 1
ACC
+
ARCHI’05 - 39
Graphe flot de données d’une cellule du FIR
Sources de bruit dans un FIR
z-1
>>
>>
×
>>
bN-1
+
+
e Recadrage
interne
Œ Bruit lié au renvoi en
mémoire du résultat
bx
x (n)
>>
Renvoi en
mémoire
du résultat
×
b0
>>
+
+
∆b0
K=
∑b
m
k = ⎡log 2 ( K )⎤
×
b1
z-1
+
∆b1
×
z-1
bN-2 +
×
∆b N-2
bgm0 +
bgm1 +
+
+
[− K .xm , K .xm ]
∞
z-1
+
>>
m = −∞
ARCHI’05 - 40
mMULT = 0
m ADD = max(mMULT , m ACC , m ACC ) = 1
y (n)
+
mMULT = mb + mx + 1 = 0
Œ Bruit de quantification associé à l’entrée
Œ Bruit lié au recadrage externe c
z-1
>>
×
ACC
m ACC = 1
badd
+
x[i-1]
>>
(bnat , ms+k-1, ns-k+1)
d Recadrage des
coefficients
[− xm , xm ]
ma = −1
ai
Recadrage des données dans un FIR
c Recadrage
externe
Da = 0,4
(badd , mb+ ms+k, nb+ ns-k+1)
Coefficient
z-1
x[i]
badd
+
ƒ Recadrage avant la
multiplication (badd = bmult)
ƒ Détermination de la position de la virgule pour les données et les opérations
ƒ Insertion des opérations de recadrage pour aligner la position de la virgule
bN-1 +
×
∆b N-1
bgm N-2 +
bgm N-1 +
+
+
bg mem
+
Filtre FIR
Œ Biais lié au codage
des coefficients d
ARCHI’05 - 41
Œ Bruit lié au recadrage interne e
y (n)
Filtre FIR
Filtre FIR : code C virgule fixe
ƒ Architecture du processeur cible
x[i]
• Données en mémoire sur 16 bits
• Multiplication 16 bits × 16 bits Ö 32 bits
• Addition 32 bits + 32 bits Ö 32 bits
(16,0,15)
(16,0,15)
x (n)
a0
z-1
×
(16,-1,16)
(16,-1,16)
×
a1
>>
×
bmult
+
ADD
×
aN-2
>>
1
aN-1
ARCHI’05 - 42
>>
1
(32,1,30)
(32,1,30)
+
y (n)
Filtre IIR d’ordre 2 (cellule i)
a2,i
+
×
a1,i
wi(n-2)
b1,i
×
/* Filtrage du vecteur d'entree input */
+
Recadrage
Recadrage de
de la
la sortie
sortie de
de la
la multiplication
multiplication ::
changement
changement de
de format
format :: (32,0,31)
(32,0,31) Ö
Ö (32,1,30)
(32,1,30)
for(i=N-1; i>0; i--) {
acc = acc + ((long)(x[i]*h[i])>>1);
x[i] = x[i-1];
}
y[j] = (int)(acc>>16);
}
/* Calcul d'une cellule du filtre */
/* Vieillissement des variables internes */
Réduction
Réduction de
de la
la largeur
largeur de
de la
la variable
variable 32
32 bits
bits Ö
Ö 16
16 bits
bits
Récupération
Récupération des
des 16
16 bits
bits les
les plus
plus significatifs
significatifs de
de la
la donnée
donnée (l(l ’opération
’opération de
de
}
cast
cast sur
sur acc
acc permet
permet de
de récupérer
récupérer les
les bits
bits de
de poids
poids faible
faible uniquement)
uniquement)
ARCHI’05 - 43
Dynamique des données (IIR)
F iltre1 N um (z )/D en(z )
2
x ∈ [−1,1]
×
wi(n-1)
b2,i
Le
Le signal
signal d’entrée
d’entrée et
et les
les coefficients
coefficients sont
sont spécifiés
spécifiés au
au niveau
niveau du
du code
code C
C en
en entiers
entiers
sur
sur 16
16 bits
bits (absence
(absence de
de type
type virgule
virgule fixe
fixe en
en C)
C) ::
15
•• l’entier
l’entier représentant
représentant xx (16,0,15)
(16,0,15) est
est obtenu
obtenu en
en multipliant
multipliant xx par
par 2215
16
•• l’entier
l’entier représentant
représentanthh (16,-1,16)
(16,-1,16) est
est obtenu
obtenu en
en multipliant
multipliant hh par
par 2216
ƒ Exemple
ADD0
+
*/
for(j=0; j<M; j++) {
x[0] = Input[j];
acc = (long)(x[0]*h[0])>>1;
1
Renvoi de la donnée en mémoire
(entrée) x(n)
/* Coefficients (16,-1,16)
/* Initialisation des variables internes du filtre */
(16,1,14)
(16,1,14)
+
/* Signal x, codage (16,0,15)*/
for(i=0; i<N; i++){x[i] = 0;}
×
1
(32,1,30)
(32,1,30)
wi(n)
b0,i
×
1.5
0.5 − 0.2428 z −1 + 0.5
H ( z) =
1 − 0.85 z −1 + 0.8417 z − 2
xmax
×
xmax
m = −∞
y
=2
0
0
0.5
1
1.5
2
2.5
3
3.5
F iltre 1/D en(z )
8
∞
∑h
m = −∞
H(jw)
1
0.5
∞
∑ h(m) = 2.5645 ⎯⎯→ m
D
( m) = 9 ⎯
⎯→ mw = 4 → k1 = 4
ADD1
6
HD(jw)
4
2
Codage des coefficients
+
y (n) (sortie)
yi(n) (entrée cellule suivante)
ARCHI’05 - 44
int main() {
int x[N]; y[M];
long acc;
int i,j;
z-1
+
yi-1(n)
sortie cellule
précédente
int x[M] = {-809, -6180, -1570, ...}
int h[N] = {-1933, 2386, 3631,};
ACC
z-1
(32,0,31)
(32,0,31)
>>
MULT
h[i]
a1
a2
b2
b0
b1
ARCHI’05 - 45
= -27951
= 27581
= 16384
= 16384
= -7956
0
0
0.5
1
1.5
2
2.5
3
Fonction de transfert des filtres H(z) et HD(z)
3.5
Position de la virgule (IIR)
Codage des données (IIR)
mx = ⎡log 2 (max n ( x(n) ))⎤ = 0
(16,0,15)
mwi = ⎡log 2 (max n ( wi (n) ))⎤ = 4
(
x(n)
))⎤ = 0
( ))⎤ = 0
mbij = ⎡log 2 max j bij
m ADD 0 = MAX (mx , mai + mwi + 1, mwi ) = 5
+
×
×
bmult
wi(n)
(16,4,11)
×
b2,i
+
+
(16,mw,nw)
wi(n-1)
×
b1,i
(32,5,16)
×
a1,i
wi(n-2)
MULT
(32, madd0 , nadd0)
+
a2,i
m yi = ⎡log 2 (max n ( yi (n) ))⎤ = 2
maij = ⎡log 2 (max j ( ai
ADD0
(16,mx,,nx)
b0,i
ADD1
×
ADD
+
ACC
m ADD1 = MAX (mbi + mwi + 1, m yi ) = 5
(16,my,ny)
(32, madd1, nadd1)
(16,2,13)
(32,5,16)
y (n)
ARCHI’05 - 46
Conclusion
ARCHI’05 - 47
Conversion flottant-fixe (IRISA)
ƒ Différentes étapes du flot de codage
C source
code
• Détermination des fonctions de transfert intermédiaires
• Calcul de leur réponse impulsionnelle
• Détermination du domaine de définition des données
• Analyse du graphe flot de données du programme
• Détermination du système d’équations régissant le format
des données
• Résolution du système d’équations
• Obtention des recadrages et du format des coefficients
ARCHI’05 - 48
#define pi 3.1416
#define pi 3.1416
main()
{
float x,h,z
for(i=1;i<n;i++)
{
*z= *y++ + *h++
}
for(i=1;i<n;i++)
{
*z= *y++ + *h++
}
Correlator.C
#define pi 3.1416
#define pi 3.1416
main()
{
float x,h,z
for(i=1;i<n;i++)
{
*z= *y++ + *h++
}
for(i=1;i<n;i++)
{
*z= *y++ + *h++
}
#define pi 3.1416
#define pi 3.1416
main()
{
float x,h,z
for(i=1;i<n;i++)
{
*z= *y++ + *h++
}
for(i=1;i<n;i++)
{
*z= *y++ + *h++
}
Floating-point
specification
Correlator.C
Correlator.C
Fixed-point conversion
Binary-point
position
determination
High level
synthesis tool
BSS
Selection
Scheduling
Allocation
Fixed-point
specification
optimization
Accuracy
evaluation
Precision
constraint
ARCHI’05 - 49
[Ménard02, Ménard04]
Fixed-point
specification
optimization
Code generation
tool
CALIFE
Selection
Scheduling
Allocation

Documents pareils