Vous êtes sur la page 1sur 15

Synthse dun circuit squentiel

Pierre Langlois

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

INF3500 : Conception et implmentation de systmes numriques


Sujets de ce thme

Reconnatre des bascules et des loquets dans du code VHDL.


tapes de synthse.
Schma correspondant au code VHDL.
Implmenter un circuit squentiel sur un FPGA.
Bonnes pratiques de modlisation de circuits squentiels pour FPGA.

INF3500 : Conception et implmentation de systmes numriques 2


La synthse dun modle VHDL

La synthse du code VHDL est effectue par un


synthtiseur.
Le processus de synthse peut tre dcompos et vrification de la puce

effectu en plusieurs passes. Ce processus est trs annotation


vrification par simulation
complexe sauf pour les circuits les plus simples. des dlais

Le produit du synthtiseur est communment code HDL

appel liste des interconnexions (netlist), qui gnration du


schma synthse implmentation fichier de
inclut: gnration
de code
configuration
puce

HDL
la liste des composantes de base utilises; et, diagramme
dtats

les liens qui les relient. contraintes


(temps et
espace)
Aprs le processus de synthse, il est possible Extraction statique des mtriques dimplmentation

dobtenir un estim de la performance et des (ressources, dlai, puissance)

ressources utilises par le circuit.

INF3500 : Conception et implmentation de systmes numriques 3


Reconnatre les loquets et bascules - rappel

Les bascules et les loquets sont reconnus par des process(G, D) is


begin
patrons de code spcifiques. if (G = '1') then
Q <= D;
Un loquet est reconnu par un nonc if-then end if;
end process;
o toutes les conditions ne sont pas couvertes.
Une bascule est reconnue par lassignation dun process(CLK) is
signal ou dune variable lintrieur dun begin
if (CLK = '1' and CLK'event) then
processus, lintrieur dune condition de Q <= D;
end if;
transition sur un signal dhorloge. end process;

INF3500 : Conception et implmentation de systmes numriques 4


tapes de la synthse dun modle squentiel dcrit en VHDL

library IEEE;
1. Identifier les entres et sorties du circuit. use IEEE.std_logic_1164.all;

2. Identifier les lments mmoire. entity cctsequentielex1 is


port (
3. Pour chaque lment mmoire, trouver lquation reset, CLK, X : in STD_LOGIC;
boolenne de son entre. Rduire lquation si Z : out STD_LOGIC
);
ncessaire. Identifier les entres spciales: horloge et end cctsequentielex1;
initialisation. architecture arch1 of cctsequentielex1 is
signal A, B : STD_LOGIC;
4. Pour chaque sortie, trouver lquation boolenne ou la begin
table de vrit correspondante. Rduire lquation si
process(CLK, reset) is
ncessaire. begin
if (reset = '0') then
5. Si la cible est un FPGA, dcouper les quations selon la A <= '0';
B <= '0';
taille des tables de correspondance disponibles. elsif (rising_edge(CLK)) then
6. Implmentation: choisir des ressources spcifiques sur A <= A xor B;
B <= x or not(B);
la puce pour les ports et les fonctions logiques. end if;
end process;

z <= not(A or B);

end arch1;

INF3500 : Conception et implmentation de systmes numriques 5


Exemple: donner le schma correspondant ce module

library IEEE; process(CLK, reset) is


use IEEE.std_logic_1164.all; begin
if (reset = '0') then
entity cctsequentielex4 is W <= '0';
port ( X <= '0';
clk, reset : in STD_LOGIC; elsif (rising_edge(CLK)) then
A, B, C: in STD_LOGIC; W <= A xor B;
U, V, W, X, Y, Z : out STD_LOGIC X <= not(B);
); end if;
end cctsequentielex4; end process;

architecture arch of cctsequentielex4 is process(A, C) is


begin begin
if (A = '0') then
U <= B xor C; Y <= C nor B;
Z <= not(B);
process(A, B) else
begin Z <= B nand C;
V <= A and B; end if;
end process; end process;

end arch;

INF3500 : Conception et implmentation de systmes numriques 6


Exemple: donner le schma correspondant ce module (1)

library IEEE;
use IEEE.std_logic_1164.all;

entity cctsequentielex4 is
port (
clk, reset : in STD_LOGIC;
A, B, C: in STD_LOGIC;
U, V, W, X, Y, Z : out STD_LOGIC
);
end cctsequentielex4;

architecture arch of cctsequentielex4 is


begin

U <= B xor C;

process(A, B)
begin
V <= A and B;
end process;

...

end arch;

INF3500 : Conception et implmentation de systmes numriques 7


Exemple: donner le schma correspondant ce module (2)

library IEEE;
use IEEE.std_logic_1164.all;

entity cctsequentielex4 is
port (
clk, reset : in STD_LOGIC;
A, B, C: in STD_LOGIC;
U, V, W, X, Y, Z : out STD_LOGIC
);
end cctsequentielex4;

architecture arch of cctsequentielex4 is


begin

...

process(CLK, reset) is
begin
if (reset = '0') then
W <= '0';
X <= '0';
elsif (rising_edge(CLK)) then
W <= A xor B;
X <= not(B);
end if;
end process;

...

end arch;
INF3500 : Conception et implmentation de systmes numriques 8
Exemple: donner le schma correspondant ce module (3)

library IEEE;
use IEEE.std_logic_1164.all;

entity cctsequentielex4 is
port (
clk, reset : in STD_LOGIC;
A, B, C: in STD_LOGIC;
U, V, W, X, Y, Z : out STD_LOGIC
);
end cctsequentielex4;

architecture arch of cctsequentielex4 is


begin

...

process(A, C) is
begin
if (A = '0') then
Y <= C nor B;
Z <= not(B);
else
Z <= B nand C;
end if;
end process;

end arch;

INF3500 : Conception et implmentation de systmes numriques 9


Rappel: architecture dun FPGA

Un FPGA est compos la base de :


un rseau de blocs de logique programmable IOB IOB IOB IOB IOB IOB

(Configurable Logic Block CLB);


un rseau dinterconnexions programmables entre
les blocs; et, CLB CLB CLB CLB CLB

des blocs dentre et de sortie avec le monde


extrieur (Input/Output Block IOB).
Dans la figure, on a: CLB CLB CLB CLB CLB

12 IOBs, 3 5 CLBs
Le FPGA XC5VLX50TFFG1136C a plutt: CLB CLB CLB CLB CLB

480 IOBs, 120 30 CLBs

IOB IOB IOB IOB IOB IOB

INF3500 : Conception et implmentation de systmes numriques 10


Rappel: tranche dun FPGA Virtex 5

Une tranche comprend:


Quatre tables de correspondance (Look-up Table
LUT) 6 entres, pouvant tre programmes
comme:
fonction logique
mmoire ROM
Quatre lments mmoire: bascule ou loquet.
Des multiplexeurs pour router les signaux.
Des portes logiques pour laddition rapide.

INF3500 : Conception et implmentation de systmes numriques Xilinx inc., Virtex-5 FPGA User Guide (ug190 v. 5.4), March 2012
11
Modle simplifi dune tranche (~ une tranche du Virtex 2 Pro)

G4

Deux tables de correspondance 4 entres: G3 D Q


YQ

Table de
fonction logique G2
correspondance
G CLK
S0
mmoire RAM G!
16 X 1

mmoire ROM Y

dcalage H

Deux lments mmoire, bascule ou loquet. H1 S1

Des multiplexeurs pour router les signaux. F4


XQ
F3 D Q
Table de
correspondance
F2 F CLK
16 X 1 S2
F1

S3
CLK

INF3500 : Conception et implmentation de systmes numriques 12


A
D Q

Exemple: Implmenter le circuit suivant sur un FPGA CLK


reset

B Z
D Q
X

CLK
reset

G4 G4
YQ YQ
G3 D Q G3 D Q
Table de Table de
conversion conversion
G2 G G2 G
reset reset
16 X 1 S0 16 X 1 S0
G1 G1

Y Y

H H

H1 S1 H1 S1

F4 F4
XQ XQ
F3 D Q F3 D Q
Table de Table de
conversion conversion
F2 F F2 F
reset reset
16 X 1 S2 16 X 1 S2
F1 F1

X X

S3 S3
CLK CLK

reset reset

INF3500 : Conception et implmentation de systmes numriques 13


Trois bonnes pratiques respecter avec les FPGA

1. Utiliser des bascules, viter les loquets. 3. Le signal de rinitialisation reset est spcial:
Les lments mmoire dun FPGA peuvent Les circuits squentiels doivent pouvoir tre placs
implmenter une bascule ou un loquet: il ny a pas dans un tat de dpart connu.
de diffrence de cot. En principe, on mne toutes les bascules avec le
Le dsavantage du loquet est son mode mme signal de rinitialisation.
transparent. Certaines bascules peuvent tre initialises 0,
Pour le reste du cours, nous allons utiliser dautres 1.
exclusivement des bascules. On ne fait pas doprations logiques sur le signal de
2. Le signal dhorloge CLK est spcial: rinitialisation.
En principe, on mne toutes les bascules avec le
mme signal dhorloge CLK.
On ne fait pas doprations logiques sur le signal On ne fait pas doprations logiques sur les signaux
CLK. dhorloge et de rinitialisation!

INF3500 : Conception et implmentation de systmes numriques 14


Vous devriez maintenant tre capable de

Expliquer comment on peut effectuer la synthse dun Spcification


Code VHDL
module squentiel dcrit en VHDL. (B2) textuelle

Donner le schma correspondant au code VHDL dun


circuit squentiel. (B3)
Diagramme Implmentation
Effectuer la synthse dun module squentiel dcrit en dtats sur FPGA
VHDL et montrer son implmentation sur FPGA. (B3)
Expliquer et appliquer les bonnes pratiques de la
modlisation de circuits squentiels pour FPGA. (B2, B3) Schma du
circuit

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


B1 Connaissance - mmoriser de linformation.
B2 Comprhension interprter linformation.
B3 Application confronter les connaissances des cas pratiques simples.
B4 Analyse dcomposer un problme, cas pratiques plus complexes.
B5 Synthse expression personnelle, cas pratiques plus complexes.
INF3500 : Conception et implmentation de systmes numriques 15