Académique Documents
Professionnel Documents
Culture Documents
Plan
Dcomposition architecturale
Introduction et cots
Cot relatif
1
Conception
10
Prototypage
100
Production
1000
Distribution
10000+
Dcomposition architecturale
Dcomposition en modules
Dcomposition architecturale
Partitionnement
Dcomposition architecturale
Modlisation haut niveau
annotation
des dlais
code HDL
schma
diagramme
dtats
gnration
de code
HDL
synthse
implmentation
gnration du
fichier de
configuration
puce
contraintes
(temps et
espace)
Extraction statique des mtriques dimplmentation
(ressources, dlai, puissance)
La description du module peut se faire par une combinaison de code HDL dans
plusieurs langages, de schmas, diagrammes dtats ou encore flots de
donnes.
Textual HDL
Top-level
block-level
schematic
Graphical Flowchart
VHDL: Conception et implmentation de systmes numriques
Block-level schematic
Source: Maxfield, Mentor Graphics, 2004
annotation
des dlais
code HDL
schma
diagramme
dtats
gnration
de code
HDL
synthse
implmentation
gnration du
fichier de
configuration
puce
contraintes
(temps et
espace)
Extraction statique des mtriques dimplmentation
(ressources, dlai, puissance)
un chronogramme;
un tableau;
des messages la console;
un fichier.
VHDL: Conception et implmentation de systmes numriques
10
11
entity demodelaidelta is
port(
A : in STD_LOGIC;
B : in STD_LOGIC;
F : out STD_LOGIC
);
end demodelaidelta;
S1
I1
I0
S3
I1
I0
I1
O S2 I0
S4
library ieee;
use ieee.std_logic_1164.all;
entity demodelaidelta_tb is
end demodelaidelta_tb;
ux
a
n
sig
s
c
r
fo
process (A, B, C)
begin
F <= not(A and (B xor not(C)));
end process;
13
14
S1
I1
I0
S3
I1
I0
I1
I
S2 I0
S4
* ces moments, le simulateur a assez dinformation pour calculer la valeur du signal parce
quun 0 lentre dune porte NON-ET implique automatiquement un 1 sa sortie
15
n D = 0 units de temps:
exemple avec collapse deltas
16
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity add3bits is
port (
Cin : in std_logic;
X : in std_logic;
Y : in std_logic;
Cout : out std_logic;
S : out std_logic
);
end add3bits;
entity add3bitsTBsimple is
end add3bitsTBsimple;
Signal
Dpend de
T1 , Cin
Cout
T3, T2
T1
X, Y
T2
X, Y
T3
Cin, T1
18
Dpend de
T1 , Cin
Cout
T3, T2
T1
X, Y
T2
X, Y
T3
Cin, T1
19
quivalence
process
begin
T1 <= A and B;
T2 <= not(T1);
wait on A, B, T1;
end process;
20
Variable
Au dbut de la premire
excution du processus
Signal
Valeur au lancement du
processus
Valeur au lancement du
processus ou bien dernire
valeur assigne juste avant
lnonc wait qui prcde
lexpression
21
22
boolean
FALSE
natural
positive
integer
typiquement -231
std_logic
std_logic_vector
UUU.U
Il est possible, lors de la simulation dun modle, que la valeur de certains de ses
signaux ne se stabilise pas. Par exemple, un circuit peut inclure un chemin de
rtroaction qui le fait entrer en oscillation.
Le temps de simulation navance alors quen deltas.
Un simulateur doit pouvoir dtecter cet tat de chose, sarrter lui-mme et
afficher un message derreur.
C
I1
I0
S6
S5
24
process
begin
T1 <= A and B;
wait for 0 ns;
T2 <= not(T1);
end process;
process
begin
T1 <= A and B;
T2 <= not(T1);
wait on A, B, T1;
end process;
process
begin
wait on A, B, T1;
T1 <= A and B;
T2 <= not(T1);
end process;
process
begin
wait until A = B;
T1 <= A and B;
T2 <= not(T1);
end process;
25
annotation
des dlais
code HDL
schma
diagramme
dtats
gnration
de code
HDL
synthse
implmentation
gnration du
fichier de
configuration
puce
contraintes
(temps et
espace)
Extraction statique des mtriques dimplmentation
(ressources, dlai, puissance)
26
27
28
entity boucledynamique is
port (
x0, xmax : in integer range 0 to 255;
somme : out integer range 0 to 65535
);
end boucledynamique;
architecture arch of boucledynamique is
begin
process(x0, xmax)
variable sommet : integer;
begin
sommet := 0;
for k in x0 to xmax loop
sommet := sommet + k;
end loop;
somme <= sommet;
end process;
entity registremanque1 is
port (
clk, D : in std_logic;
Q : out std_logic
);
end registremanque1;
architecture arch of registremanque1 is
begin
process(clk)
begin
if (rising_edge(CLK) or falling_edge(CLK)) then
Q <= D;
end if;
end process;
end arch;
end arch;
29
library ieee;
use ieee.std_logic_1164.all;
entity registremanque is
port (
clk, reset, enable, D : in std_logic;
Q : out std_logic
);
end registremanque;
architecture arch of registremanque is
begin
process(clk, reset)
begin
if (rising_edge(CLK) and reset = '0' and enable = '1') then
Q <= D;
end if;
end process;
end arch;
30
http://www.ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=1342563
This document specifies a standard for use of VHDL to model synthesizable
register-transfer level digital logic. A standard syntax and semantics for VHDL
register-transfer level synthesis is defined. The subset of the VHDL language,
which is synthesizable, is described, and nonsynthesizable VHDL constructs are
identified that should be ignored or flagged as errors.
31
Les types std_logic ou std_logic_vector ne devraient tre utiliss que pour des
valeurs logiques.
Pour reprsenter des nombres pour les ports dune entit, les types prfrs
sont tirs du package numeric_std :
unsigned pour une interprtation non signe
signed pour une interprtation signe en complment deux.
Pour reprsenter des signaux internes dun module, on a avantage utiliser les
types plus abstraits comme integer, character ou string, mme sil est plus
difficile, de retrouver ces signaux pour dbogage dans les produits de la
synthse ou de limplmentation.
Pour les constantes et les paramtres dun module, on peut en gnral utiliser
tous les types abstraits supports par VHDL, comme real, integer, ou string.
32
Parenthse:
Exemple de code utilisant les types character et string
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity banderolev2 is
Port (
reset, clk : in STD_LOGIC;
charout : out unsigned(7 downto 0)
);
end banderolev2;
architecture arch of banderolev2 is
constant message : string := "bonjour et bienvenue!";
begin
process (clk, reset)
variable index : integer range 1 to message'length;
begin
if (rising_edge(clk)) then
if reset = '1' then
index := 1;
else
charout <= to_unsigned(character'pos(message(index)), 8);
if index = message'length then
index := 1;
else
index := index + 1;
end if;
end if;
end if;
end process;
end arch;
33
D
C
B
A
F1
S2
S1
D
C
B
A
V?
F2
(V?)
V?
end demo;
34
Oprateurs synthtisables
Les oprateurs ne sont pas dfinis pour tous les types, il faut utiliser les librairies
correspondantes.
parce quil ny a pas (pour linstant, en 2010), de modules
matriels simples sur les FPGAs qui permettent deffectuer ces
oprations.
VHDL: Conception et implmentation de systmes numriques
35
lintrieur dun processus, on peut utiliser des boucles et des conditions pour
modliser le comportement dun circuit.
Les boucles sont une manire compacte de reprsenter plusieurs noncs relis
logiquement entre eux.
Les paramtres dexcution de la boucle doivent prendre des valeurs statiques
au moment de la synthse.
Les boucles sont implmentes en les droulant: les noncs dassignation
quelles contiennent sont rpliqus, un pour chaque itration de la boucle.
Pour les circuits combinatoires, les conditions permettent deffectuer un choix.
Lnonc case a lavantage de reprsenter des choix qui sont mutuellement
exclusifs et qui ont la mme prsance. Il correspond assez exactement laction
dun multiplexeur.
Lnonc if, est plus gnral avec les clauses elsif ainsi quune clause else. Il est
possible de lutiliser pour donner prsance certaines conditions par rapport
dautres. Cela peut rsulter en un circuit plus complexe que ncessaire, parce que le
comportement dcrit peut tre plus restrictif que ce que le concepteur a en tte.
VHDL: Conception et implmentation de systmes numriques
36
37
38
Un loquet ou un multiplexeur ?
library ieee;
use ieee.std_logic_1164.all;
library ieee;
use ieee.std_logic_1164.all;
entity mystere1 is
port (a, b, c: in std_logic;
s : in std_logic_vector (1 downto 0);
o : out std_logic);
end mystere1;
entity mystere2 is
port (a, b, c: in std_logic;
s : in std_logic_vector (1 downto 0);
o : out std_logic);
end mystere2;
39
40
process(CLK, A)
begin
if rising_edge(CLK)
then
Z <= A;
end if;
end process;
process(A, B)
begin
T1 <= A and B;
T2 <= not(T1);
end process;
41
42
annotation
des dlais
code HDL
schma
diagramme
dtats
gnration
de code
HDL
synthse
implmentation
gnration du
fichier de
configuration
puce
contraintes
(temps et
espace)
Extraction statique des mtriques dimplmentation
(ressources, dlai, puissance)
43
Implmentation
44
Association (1)
45
Association (2)
XOR
a
b
|
NOT
XNOR
|
a b c
0
1
0
1
0
1
0
1
0
1
1
0
1
0
0
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
46
Association (3)
Le processus dassociation est rendu plus complexe quand une fonction logique
a plus dentres que les tables de conversion des blocs logiques.
Il faut donc que loutil dassociation fasse un partitionnement et une
distribution de ces fonctions
Ce processus peut tre trs complexe parce quil ny a pas ncessairement
quune seule solution.
Loutil doit alors se baser sur des contraintes doptimisation imposes par
lutilisateur, comme une rduction de lespace utilis ou une rduction des
dlais de propagation.
47
Placement (1)
48
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
CLB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
IOB
49
50
Routage (1)
51
Routage (2):
Rseau hirarchique dinterconnexions du XC2VP30
Longues lignes: toute la puce
Lignes hex: chaque 3e ou6e bloc
Lignes double: chaque 2e ou 4e bloc
52
Routage (3)
Dans un FPGA, les connexions sont bien caractrises et les dlais et les
longueurs des chemins sont bien connus.
53
annotation
des dlais
code HDL
schma
diagramme
dtats
gnration
de code
HDL
synthse
implmentation
gnration du
fichier de
configuration
puce
contraintes
(temps et
espace)
Extraction statique des mtriques dimplmentation
(ressources, dlai, puissance)
54
Mtriques de performance
et simulation du circuit implment
Les FPGAs ont une structure trs rgulire et la prcision des dlais est grande
On peut donc simuler cette liste des interconnexions avec le mme banc dessai
initial pour observer le comportement rel du circuit.
Cette simulation prend en gnral un ordre de grandeur supplmentaire en
temps faire que la simulation de la description initiale du circuit, cause du
grand nombre de composantes et de fils dont le simulateur doit tenir compte.
On obtient aussi un rapport dtaill sur les ressources utilises sur le FPGA, ainsi
quune description du chemin critique avec le dlai sur celui-ci.
Si les spcifications ne sont pas rencontres, on peut alors retourner lune des
tapes du flot de conception pour corriger les problmes.
55
annotation
des dlais
code HDL
schma
diagramme
dtats
gnration
de code
HDL
synthse
implmentation
gnration du
fichier de
configuration
puce
contraintes
(temps et
espace)
Extraction statique des mtriques dimplmentation
(ressources, dlai, puissance)
56
57
Configuration data in
Configuration data out
= I/O pin/pad
= SRAM cell
58