View
5
Download
0
Category
Preview:
Citation preview
Générateur d ’architecture pour plate-forme reconfigurable dédié au
traitement d ’image
P.E.R.C.I.P. : Programming Environment on Reconfigurable Components for Image Processing
Positionnement
Implantation en FPGA de nouveaux algorithmesEtudier et formaliser l ’approche Extraire une méthodologieMettre au point un environnement de développement
Plan de la présentation
Traitement d ’imageLes systèmes reconfigurablesMéthodologie suivieMoyens de description UtilisésL ’environnement PERCIPApplicationsConclusion et perspectives
Traitement d ’image et architectures parallèles
Toute manipulation d ’image met en jeu un volume considérable de données
le volume de calcul des applications de T.I. excède souvent la capacité de traitement d ’une machine conventionnellele problème s ’accentue davantage dans un contexte temps réel (suivre le taux vidéo)
Niveaux de traitement d’image
Haut niveau (Reconnaissance des formes, Stéréovision, etc.)
Niveau intermédiaire(LPE, FFT, Hough, etc.)
Bas niveau(Sobel, Laplacien, Médian, etc.)
Chaîne classique de traitement d ’image
Acquisition Filtrages Extraction
Prise deDécision
Reconnaissance
Puissance de calcul et complexité des algorithmes
Acquisition Filtrages Extraction Reconnaissance Décision
Puissance de calcul
FPGA, ASIC
Complexité des algorithmes
μP
Niveau de Traitement d ’Image choisi
Choix : Traitement Bas Niveau d ’Image (TBNI)
les algorithmes linéaires (filtre de Sobel, Prewitt, etc.)les algorithmes non-linéaires (filtre médian, etc…)
Facilité de générer les architectures câblées
Les architectures reconfigurables
Objectif :La flexibilitéLa rapiditéLa compacité
L’élément technologique qui a permis la mise au point de ces architectures est le FPGA (Field Programmable Gate Array)
Exemple de FPGA
IOB
CLB CLB CLB
CLB
CLB
CLB CLB
CLB CLB
Plan de cellules SRAM Ressources d’interconnexion
Matrice d’interrupteurs
Cycle de câblage d ’une application
Codage en VHDL
Simulation fonctionnelle
Erreur ?Non
Oui
1- Synthèse logique ; 2- Simulation post-synthèse ;
Erreur ?Non
Oui
1- Routage ; 2- Simulation post-routage ;
Erreur ?
Non
Oui
Configuration du FPGA
La méthode classique et celle utilisant PERCIP
Programme Apply
P.E.R.C.I.P.
Configuration des FPGAs
Synthèse logique
Codage en VHDL
Simulation fonctionnelle
Simulations temporelles :Simulation post-synthèseSimulation post-routage
Configuration des FPGAs
a : Approche classique b : Approche PERCIP
Pourquoi Apply
Un langage procéduralNiveau d ’abstraction élevé
liberté pour générer l ’architectureun choix libre du modèle d ’exécutiondétacher la description de l ’algorithme du modèle d ’entrée/sortie
Traitement d ’imageLes systèmes reconfigurablesMéthodologie suivieMoyens de description UtilisésL ’environnement PERCIPApplicationsConclusion et perspectives
Approche de développement en utilisant Apply
P(-1,0) P(0,0)
P(0,1)
P(-1,-1)
P(1,0)
P(-1,1)
P(0,-1) P(1,-1)
P(1,1)
Exemple de programme Apply
procedure Sobel ( inimg : in array (-1. . 1, -1. . 1) of byte border 0, --1thresh : const real,mag : out real) is --2
horiz, vert : integer ; --3
begin --4horiz := inimg(-1, -1) + 2 * inimg(-1, 0) + inimg(-1, 1) --5
- inimg(1, -1) - 2 * inimg(1, 0) - inimg(1, 1) ;vert := inimg(-1, -1) + 2 * inimg(0, -1) + inimg(1, -1) --6
- inimg(-1, 1) - 2 * inimg(0, 1) - inimg(1, 1) ;mag := sqrt(horiz*horiz + vert * vert) ; --7if mag < thresh then --8
mag := 0.0 ; --9end if ; --10
end Sobel ; --11
Types de modélisation en VHDL
VHDLcomportemental
VHDLStructurel
VHDL R.T.L.
(Register Transfer Level)
Niveaux de
Hiérarchie
Exemple de code VHDLentity fir_filter is
port(entree : in integer; sortie : out integer; horloge : in bit; reset : in bit);end fir_filter;
architecture structurelle of fir_filter iscomponent reg port ( d : in integer; clk, reset : in bit; q : out integer); end component;component mul port ( a, b : in integer; s : out integer); end component; component add port ( a, b : in integer; s : out inetger) ; end component;
constant coefficient1 : integer := 1; constant coefficient2 : integer := 2;constant coefficient3 : integer := 3;
signal tmp1, som1 : integer; signal tmp2, som2 : integer; signal prod1, prod2, prod3 : integer;
begin
mul1 : mul port map (a => entree, b => coefficient1, s => prod1);reg1 : reg port map ( d => prod1, q => tmp1, clk => horloge, reset => reset);mul2 : mul port map (a => entree, b => coefficient2, s => prod2);add1 : add port map (a => prod2, b => tmp1, s => som1);reg2 : reg port map(d => som1, q => tmp2, clk => horloge, reset => reset);mul3 : mul port map (a => entree, b => coefficient3, s => prod3);add2 : add port map (a => prod3, b => tmp2, s => som2);reg3 : reg port map(d => som2, q => sortie, clk => horloge, reset => reset);
end structurelle;
P.E.R.C.I.P.
procedure entree(x : in array(-1..0)of byte,s : out byte) isbegins := x(-1) + x(0);end entree;
GENERATEUR D’ARCHITECTURE
BIBLIOTHEQUE
X
S+
PERCIP
Traitement d ’imageLes systèmes reconfigurablesMéthodologie suivieMoyens de description UtilisésL ’environnement PERCIPApplicationsConclusion et perspectives
Etapes du générateur d’architectures de PERCIP
programme.apl (code Apply)
Analyse lexicale
Analyse syntaxique
Génération de l’architecture
Optimisation de l’architecture
Génération du code VHDL
architecture.vhdl
Le générateur d’architecture de PERCIP
Réseau FIR
MXK
W0W1
W2 WN-1
YK
M
+
M
+ +
M Elément de retard
XK-1 XK-2 XK-N+1
• 1122110 ... +−−−− ++++= NKNKKKK XWXWXWXWY
FIR 1D (-1, -1, -1)
FIR 1D (-1, 8, -1)
FIR 1D (-1, -1, -1)
+
image(k, -1)
image(k, 0)
image(k, +1)
sortie
Réseau systolique
+
*
+
*
+
*X4X4X3X3X2X2 X1 X1
W3W2W1
Y0
PT1
M
M
M
M
M
M
• Y = W1X3 + W2X2 + W3X1
• PT1 = X1X1 X2X2 X3X3 ...
Etapes du générateur d’architectures de PERCIP
programme.apl (code Apply)
Analyse lexicale
Analyse syntaxique
Génération de l’architecture
Optimisation de l’architecture
Génération du code VHDL
architecture.vhdl
Le générateur d’architecture de PERCIP
Organisation non optimale
+
+
+
+
+
E0
E1
E2
E3
EN-1S
(N-1) * τ
τ
Organisation optimale
+
++E0
E1
E2
E3
EN-1
S
P * τ
τ
+
+EN-2
⎩⎨⎧
+=
nonsiNentierestNsiN
P1))(int(log
)(log)(log
2
22
Réseau systolique
+
*
+
*
+
*X4X4X3X3X2X2 X1 X1
W3W2W1
Y0
PT1
M
M
M
M
M
M
• Y = W1X3 + W2X2 + W3X1
• PT1 = X1X1 X2X2 X3X3 ...
Optimisation des cellules MAC
Cellule
MAC
ENDMAC
MAC0
MAC1
ENDMAC1
MACM1
ENDMACM1
MAC2
ENDMAC2
Coefficient
x
x
0
1
1
-1
-1
2
-2
Coût (CLBs)
99
87
12
21
9
37
34
37
34
T.B.N.I. non-linéaire (1/2)
ComparateurS = (A<B)
A
B
S
MUX
sel0
1s
e1
e2
procedure if_complet (e1, e2 : in byte,s : out byte) is
begin
if e1 < e2 thens := e1 ;
elses := e2 ;
end if ;
end if_complet;
T.B.N.I. non-linéaire (2/2)
ComparateurS = (A<B)
A
BS
e1
e2
e5
e6
e3
e4
MUX
sel01
f1f2
f3
S
ComparateurS = (A<B)
A
BS
ComparateurS = (A<B)
A
BS
MUX
sel01
MUX
sel01
procedure if_deux (e1, e2, e3, e4, e5, e6 : in byte,f1, f2 : in byte,
S : out byte) is
begin
if e1 < e2 thenif e3 < e4 then
S := f1;else
S := f2;end if;
elseif e5 < e6 then
S := f3;end if;
end if;end if_deux;
Applications : T.B.N.I. linéaires
procedure SobelVertical ( inimg : in array (-1. . 1, -1. . 1) of byte, vert : out integer) is
beginvert := inimg(-1, -1) + 2 * inimg(0, -1) + inimg(1, -1)
- inimg(-1, 1) - 2 * inimg(0, 1) - inimg(1, 1) ;end SobelVertical ;
1
0
-1
2
0
-2
1
0
-1
1
2
1
0
0
0
-1
-2
-1Sobel vertical Sobel horizontal
Architecture systolique du filtre de Sobel
++
inimgM1
M M
M
M
M
++
inimgP1
M M
M
M
M
+ vert
* 2
* (-2)* (-1) * (-1)
Architecture FIR du filtre de Sobel
inimgM1
1 2 1M
+
M
+
inimgP1-1 -2 -1
M
+
M
+
+ vert
Applications : T.B.N.I. non-linéaires (filtre médian)
MEDIAN
1 3 57 9 1113 2 4
5
Image originale TraitementImage traitée
Médian 1D
Max(A,B)
Min(A,B)
A
B
A>BComparateur
A
B
Max(A,B)
Min(A,B)
Médiane
A
B
C
UCE : Unité de Comparaison et Echange
Médian 2D simplifié
MEDIAN1D
Médiane
Description Apply du Médian 2D simplifié
procedure Median2D ( inimg : in array (-1..1, -1..1) of byte,Mediane : out byte) is
si : array(-1..1) of byte;
beginif inimg(-1, -1) < inimg(-1,0) then
if inimg(-1,0) < inimg(-1,1) thensi(-1) := inimg(-1,0);
else if inimg(-1, -1) < inimg(-1,1) thensi(-1) := inimg(-1,1);
elsesi(-1) := inimg(-1,-1);
end if;end if;
else if inimg(-1,-1) < inimg(-1,1) thensi(-1) := inimg(-1,-1);
else if inimg(-1, 0) < inimg(-1,1) thensi(-1) := inimg(-1,1);
elsesi(-1) := inimg(-1,0);
end if;end if;
end if ;
.
.
. if si(-1) < si(0) then
if si(0) < si(1) thenMediane := si(0);
else if si(-1) < si(1) thenMediane := si(1);
elseMediane := si(-1);
end if;end if;
else if si(-1) < si(1) thenMediane := si(-1);
else if si(0) < si(1) thenMediane := si(1);
elseMediane := si(0);
end if;end if;
end if ;
end Median2D;
M Minimg(1,-1) inimg(0,-1) inimg(-1,-1)
M Minimg(1,0) inimg(0,0) inimg(-1,0)
M Minimg(1,1) inimg(0,1) inimg(-1,1)
comp<
mux0 1
comp<
mux0 1
comp<
comp<
mux0 1
comp<
mux0 1
mux1 0
si(1)
MEDIAN 1D
MEDIAN1D
MEDIAN1D
MEDIAN1D
si(0) si(-1)
Mediane
Contre exemple
MEDIAN1D
1
2
5
3
4
6
7
89
2
4
84
Médian basé sur un tri complet (tri-bulle)
AB
Max(A,B)Min(A,B)
UCE
4
3
4
3 8 4 13
8
8
13
8
7
8
7 13 3 7
13
4
7
13 7 3
3 4
PIXELS
proc
edur
eM
edia
n2D
( ini
mg
: in
arra
y (-
1..1
, -1.
.1) o
f byt
e,M
edia
ne: o
ut b
yte)
is
UC
EMA
X:a
rray
(1..2
9)of
byt
e;U
CEM
IN:a
rray
(1..2
8)of
byt
e;
begi
n
--U
CE1
ifin
img(
1, 0
) < in
img(
1,-1
) the
nU
CEM
AX
(1):
= in
img(
1,-1
);U
CEM
IN(1
):=
inim
g(1,
0);
else U
CEM
AX
(1):
= in
img(
1,0)
;U
CEM
IN(1
):=
inim
g(1,
-1);
end
if;
--U
CE2
ifin
img(
0, -1
) < in
img(
1, 1
) the
nU
CEM
AX
(2):
= in
img(
1, 1
);U
CEM
IN(2
):=
inim
g(0,
-1);
else U
CEM
AX
(2):
= in
img(
0, -1
);U
CEM
IN(2
):=
inim
g(1,
1);
end
if;
-- --…
-- --U
CE3
0if
UC
EMA
X(2
7) <
UC
EMA
X(2
9) th
enM
edia
ne:=
UC
EMA
X(2
9);
else M
edia
ne:=
UC
EMA
X(2
9);
end
if;
end
Med
ian2
D;
Filtre médian hybride
moyenne
moyenne
MEDIAN Médiane
proc
edur
eM
edia
nHyb
ride
(inim
g: i
n ar
ray
(-1.
.1, -
1..1
) of b
yte,
Med
iane
: out
byt
e)
isM
1, M
2: b
yte;
begi
n
M1
:= (i
nim
g(-1
, 0) +
inim
g(-1
, -1)
+ in
img(
0, -1
) + in
img(
1, -1
))/4
;M
2:=
(ini
mg(
-1, 1
) + in
img(
0, 1
) + in
img(
1, 1
) + in
img(
1, 0
))/4
;
ifM
1 <
inim
g(0,
0) th
enif
inim
g(0,
0) <
M2
then
Med
iane
:= in
img(
0,0)
;el
seif
M1
< M
2 th
enM
edia
ne:=
M2;
else M
edia
ne:=
M1;
end
if;en
d if;
else
ifM
1 <
M2
then
Med
iane
:= M
1;el
seif
inim
g(0,
0) <
M2
then
Med
iane
:= M
2;el
se Med
iane
:= in
img(
0, 0
);en
d if;
end
if;en
d if
;
end
Med
ianH
ybrid
e;
Conclusion et perspectives
PERCIP génère un VHDL synthétisableLe réseau systolique est modulaire => faciliter la génération des architectures massivement parallèlesAvec des FPGAs de 1 000 000 d ’équivalents portes les environnements tel que PERCIP trouvent leur intérêtApply est dédié au T.B.N.I., une extension aux autres niveaux est intéressante
Etapes d’un compilateur
Programme source
Analyse lexicale
Analyse syntaxique
Analyse sémantique
Programme cible
Le compilateur
Génération de code intermédiaire
Optimisation du code
Génération de code
Analyse
Synthèse
Gestion de la table des symboles
Gestion des erreurs
Recommended