Вы находитесь на странице: 1из 57

PCWrite

PC B
PCWriteC


Ior

0
1
D

MemWrite
i2 a2 a1
Memor MemRead
y

*
Instruc(on register IR IRWrite

25:0
20:16
25:21
31:26

15:0
15:11
MemToReg
RegDest
0

1
1

0
Controller

i3 a3 a2 a1 RegWrit
sign_

Speiche
extend

Reg e
r o1
o2
Niveau RTL

ALUSelB
4

<<2
ALUSelA
0
0

3
2
1
1

alu_
control ALU ALUOp
TargetWrite
T

31: 28

PCSource
0

1
2

* "00
RTL implementaRon
Hardware descripRon language
VHDL
Verilog

Target plaVorms
ALTERA : Apex, StraRx
Quartus II StraRxII EP2S60

Model sim 48.352 LC


493 Pins
XILINX : Spartron, Virtex
288 DSP block
2.5 Mb Memory
2
Exemple de simulaRon RTL

3
Le prototypage tradiRonnel

4
Le prototypage tradiRonnel

5
FPGA: Field Programmable Gate Array

Avantages :
=> technologie facile matriser
=> temps de dveloppement rduit
=> reprogrammable pour certains ( idal pour le prototypage )
=> cot peu lev

Inconvnients :
=> performances non opRmises
=> architecture interne enRrement ge
=> systme numrique seul ( avec quelques excepRons )

6
Technologie des FPGA
Plusieurs types :

=> programms par RAM ( XILINX et ALTERA )

=> programms par EEPROM ou FLASH ( LATTICE et ACTEL)

=> programms par anRfusible ( ACTEL )

Les premiers se prtent parRculirement bien au prototypage des


Systmes sur puce programmable (SOPC)

7
Les FPGA de type SRAM
CaractrisRques dun circuit rcent :

8
Architecture interne dun FPGA

9
StraRx dALTERA
Cellule logique de base

10
StraRx dALTERA
Cellule logique de base

Virtex de XILINX

11
Les FPGA pour les SOPC
Grand nombre de cellules logiques
QuanRt de mmoire congurable importante
Entres sorRes compaRbles avec de mulRples normes
Blocs spcialiss ( mulRplieurs, PLLs )
Reprogrammable

Pour russir implanter un systme dans un FPGA de


manire ecace, il est indispensable de bien connatre
sa structure interne et ses limites du point de vue des
Performances.

12
Dirence entre le langauge C et VHDL

VHDL C/C++/pascal

EquaRon compilaRon

Synthse assembleur

1. mov al,a
2. Mov bl,b
3. Xor al,bl
4. Not al

13
Plan
1.IntroducRon aux systmes embarqus (SE)
2.Flots de concepRon
3.OuRls pour la simulaRon, la modlisaRon et
lvaluaRon des performances
4.Langage VHDL
5.Langage SystemC

14
ObjecRfs et caractrisRques du VHDL
Langage unique pour
la spcicaRon, la documentaRon
la vricaRon (preuve formelle), la simulaRon
la synthse : le langage sert d'entre des ouRls intelligents qui perme{ent la
ralisaRon de circuits intgrs (customs, ASICs) ou programmables (PALs, PLDs,
CPLDs, FPGAs)

concepRon, simulaRon, synthse de circuits numriques


(du + simple au plus compliqu)
Interprtable par l'homme et la machine
Indpendent des process et des technologies, indpendent des systmes-
htes

15
Quest-ce quun langage de
descripRon?
Ce nest pas un langage informaRque classique: il
sert dcrire un matriel et crer un circuit.

blocs dinstrucRons excuts simultanment


prise en compte de la ralit : possibilit de spcier des retards, de prciser
ce qui se passe en cas de conits de bus,
linformaRon est associe des signaux qui modlisent des quipotenRelles;
elle peut tre date et perme{re de construire des chronogrammes

16
LE VHDL PAR LEXEMPLE
OPERATIONS COMBINATOIRES.
Etude dun comparateur de deux fois 4 bits.
Etudions un comparateur charg de comparer deux nombres de
quatre lments binaires.

Nous pouvons y disRnguer les direntes parRes le consRtuant, savoir :


Les entres A et B de quatre bits chacunes, la sorRe A = B.
Le corps du design dlimite la fronRre entre la structure interne du
comparateur et le monde extrieur.

17
LE VHDL PAR LEXEMPLE
Organisa8on simple dune descrip8on vhdl.
Une descripRon vhdl est compose de deux parRes: une enRt et une
architecture.

LenRt dcrit linterface entre le design et le monde extrieur.


Larchitecture dcrit la structure interne du composant. Il y a plusieurs
faons de dcrire ce foncRonnement.

18
LE VHDL PAR LEXEMPLE
La descripRon vhdl du comparateur est donne ci-dessous :
-- comparateur de deux fois quatre bits
ENTITY eqcomp4 IS
PORT ( a0,a1,a2,a3 : IN BIT;
b0,b1,b2,b3 : IN BIT;
aeqb : OUT BIT);
END eqcomp4;
ARCHITECTURE logique OF eqcomp4 IS
BEGIN
aeqb <= '1 WHEN (
(a0=b0) and
(a1=b1) and
(a2=b2) and
(a3=b3)
)
ELSE '0';
END logique;
LenRt est dcrite par lintermdiaire de linstrucRon PORT.Celle-ci liste
les direntes entres et sorRes du design. Pour chaque donne
transfre travers un PORT on dnit son mode et son type.

19
Len(t
Les signaux dentre/sorRe de lenRt sont des PORTS
un PORT est dni par :
rst
un nom q[7:0]
d[7:0] BOITE_NOIRE
un mode (sens) co
clk
un type

le MODE correspond au sens de transfert


IN entre (monodirecRonnelle)
OUT sorRe (monodirecRonnelle)
INOUT entre/sorRe (bidirecRonnelle)
BUFFER sorRe reboucle

20
LE VHDL PAR LEXEMPLE
Le type peut tre un type bit, bit_vector, std_logic, std_logic_vector, un enRer ou
encore un type dni par luRlisateur. Certains type ncessitent, pour tre
employs, luRlisaRon de bibliothque parRculire.
URlisons un autre type en regroupant nos entres en deux vecteurs de quatre bits
chacun :

21
Les types
Tout objet VHDL doit tre associ un type (objet = signal, constante
ou variable)

Un type dnit:
Lensemble des valeurs possibles
Lensemble des oprateurs disponibles

OrganisaRon des types en VHDL:


Types prdnis (integer, bit, bit_vector, boolean,etc)
Types complmentaires
IEEE1164 (std_logic, td_logic_vector)
Types spciques dnis par les ouRls des fournisseurs
Types uRlisateur (type numr, sous-type)

22
Types et oprateurs prdnis
TYPE CLASSE
boolean type numr
bit type numr
character type numr
integer type numrique Tout type apparRent une
natural sous-type numrique classe.
posiRve sous-type numrique
string chane de caractres
bit_vector array of bit
Rme physique

OPERATEURS
Boolens (logiques) not, and, or, nand, nor, xor, xnor
De comparaison =, /=, <, <=, >, >=
De dcalage sll, srl, sla, sra, rol, ror
ArithmRques sign +, sign -, abs, +, -, *
De concatnaRon &

23
Le type std_logic (IEEE1164)
Le type bit de VHDL peut prendre les valeurs '0' et '1'. Ce type est
insusant pour dcrire des signaux logiques rels (haute-impdance,
forage, etc.)
Le standard IEEE1164 dnit des signaux mulR-valeurs rpondant aux
besoins de systmes rels, et facilitant la simulaRon
Le type std_logic (et std_logic_vector) possde 9 valeurs :
'0', '1', 'X', 'L', 'H', 'W', 'Z', 'U', '-'
L'emploi du type std_logic est possible via la library IEEE1164
(cf. dclaraRon d'une Library) :
library ieee;
use ieee.std_logic_1164.all;

24
Les types uRlisateurs (exemples)
Syntaxe dune dclaraEon de type:

type nom_type_enRer is range start to end;


type nom_type_numr is (liste des valeurs);
type nom_type_tableau is array (start to end) of element_type;

Exemples:

type memory_size is range 1 to 1024; -- intervalle montant


type etat is (reset, stop, wait, go);
type my_word is array (0 to 31) of bit;
type table_vrit is array (bit, bit) of bit;

25
Les objets
Objet = lment nomm ayant des valeurs dun type donn
4 classes dobjets : - contantes
- variables
- signaux
- chiers
La constante possde une valeur xe pendant la simulaRon.
DclaraEon dune constante :
constant nom_constant : type [:= expression] ;
exemple : constant PERIODE : Rme :=20 ns;
constant BUS : std_logic :=1;

26
Les variables
Cest un simple conteneur dont la valeur peut changer en cours de
simulaRon.
DclaraEon dune variable
variable nom_variable : type [:= expression];

La variable a une valeur iniRale explicite (si elle est prcise dans la dclaraRon) ou
implicite. Dans ce cas elle dpend du type.
Exple : 0 pour le type std_logic
false pour le type boolean
de manire gnrale, la valeur iniRale est la valeur la plus gauche des
valeurs prises par le type

27
Les signaux
Les signaux reprsentent des formes dondes logiques sous forme de paires
temps/valeur. Ils perme{ent de modliser les caractrisRques temporelles
des signaux rels et de prendre en compte les dirents dlais.
Ils sont essenRels pour la modlisaRon de comportements concurrents.
Un signal peut tre de nimporte quel type.
DclaraEon dun signal
signal nom_signal: type [:= expression] ;

valeur iniRale : mme chose que pour les variables.

28
LE VHDL PAR LEXEMPLE
-- comparateur de deux fois quatre bits
--
-- utilisation de la bibliothque ncssaire au type std_logic
library ieee;
use ieee.std_logic_1164.all;
ENTITY eqcomp4 IS
PORT ( a : IN STD_LOGIC_VECTOR(3 downto 0);
b : IN STD_LOGIC_VECTOR(3 downto 0);
aeqb : OUT STD_LOGIC);
END eqcomp4;
ARCHITECTURE logique OF eqcomp4 IS
BEGIN
aeqb <= '1' WHEN ( a = b ) ELSE '0';
END logique;

29
Exercices
Exercice 1 : Dfinir
lentit dcrivant un
additionneur de deux
fois un bit.

Exercice 2 : Dfinir
lentit dcrivant un
additionneur de deux
mots de quatre bits.

30
DclaraRon denRt
Syntaxe dune dclaraRon denRt:
en(ty nom_enRt is
[generic(liste_generique)]
[port(liste_port)]
end [en(ty] nom_enRt;

EXEMPLES en(ty comparateur is


port(
en(ty full_adder is signal a : in bit_vector(7 downto 0);
port( X,Y,Cin: in bit; signal b : in bit_vector(7 downto 0);
Cout, Sum: out bit);
signal egal : out bit);
end full_adder; end comparateur ;

31
DclaraRon dun corps darchitecture
Syntaxe dune architecture:
architecture nom_architecture of nom_enRt is
{signal_declaraRon} | {constant_declaraRon}
{type_declaraRon} | {component_declaraRon}
begin
{ instrucRon_concurrente}
end [architecture] nom_architecture;

EXEMPLES :
architecture dataow of full_adder is
signal A, B: bit;
architecture simple of comparateur is begin
-- zone de dclaraRon vide
A<=X xor Y;
begin
B<=A xor Cin;
egal <= 1 when a = b else 0; Cout<=B xor (X and Y);
Sum<=A xor Cin;
end simple ; end architecture dataow;

32
Larchitecture
L'ARCHITECTURE dcrit le foncRonnement de la bote noire dclare dans
l'ENTITY
VHDL permet dirents niveaux de descripRon :
Haut niveau (comportemental) : descripRon de la foncRonnalit, sans
rfrence au 'hardware' sous-jacent
Bas niveau (structurel) : descripRon par uRlisaRon et interconnexion de
'components' (par ex. portes logiques), comme pour un schma
D'une manire gnrale les descripRons de haut niveau favorisent la
portabilit, les descripRons de bas niveau l'ecacit
A tout moment (y compris l'intrieur d'une mme architecture), c'est le
concepteur qui choisit le niveau de descripRon adquat

33
Architecture : descripRon
comportementale

architecture ARCH1 of COMPARATEUR is


begin
C <= '1' when (A=B) else '0';
A
C end ARCH1;
Comparateur
B

architecture ARCH2 of COMPARATEUR is


begin
C <= not(A xor B);
end ARCH2;

34
Architecture : descripRon structurelle
A U0 U1
S C use work.gatespkg.all;
xor2 inv
B architecture ARCH3 of COMPARATEUR is
signal S : bit;
begin
U0 : xor2 port map (A,B,S);
U1 : inv port map (S,C);
end ARCH3;
Les signaux internes sont dclars
en tte de l'architecture (mme
dclaraRon que les signaux d'enRt,
sans 'mode')

35
Architecture : choix de la descripRon
Les descripRons comportementales sont recommandes.
en comportemental :
aeqb <= '1' WHEN a = b ELSE '0';

en structurel bas niveau :


u0: xnor2 PORT MAP (a(0), b(0), xnr(0));
u1: xnor2 PORT MAP (a(1), b(1), xnr(1));
u2: xnor2 PORT MAP (a(2), b(2), xnr(2));
u3: xnor2 PORT MAP (a(3), b(3), xnr(3));
u4: and4 PORT MAP (xnr(0), xnr(1), xnr(2), xnr
(3), aeqb);

meilleure compacit meilleure lisibilit


meilleure portabilit

36
Parallle / SquenRel
VHDL permet de dcrire des foncRonnements parallles (combinatoires) et
squenRels (synchrones)
Tout repose sur le PROCESS
l'extrieur d'un PROCESS les opraRons s'excutent simultanment, et en
permanence
l'intrieur d'un PROCESS les instrucRons s'excutent squenRellement
un PROCESS s'excute chaque changement d'tat des signaux auxquels il est
sensible ('sensiRvity list')
Les signaux modis par le process sont mis jour la n de celui-ci
les variables dclares conservent leur valeur dune acRvaRon une autre (ce qui
nest pas le cas des sous-programmes)

37
Les instrucRons concourantes
Rappels :
elles se trouvent entre les mots rservs begin et end architecture
elles sont values indpendamment de leur ordre dcriture
elles sont lextrieur du PROCESS

Liste dinstrucRons :
AssignaRon (<= )
assignaRon condiRonnelle (WHEN)
assignaRon slecRve (WITH)

38
AssignaRon simple de signal
Syntaxe: [label:] signal<= expression;

signal ne peut pas tre une entre (mode in).


expression ne peut pas uRliser de signaux de sorRe
(mode out)
signal et expression doivent tre de mme type.

Exemples C <= not(A xor B);

2007-2008 C. Soyer - M. Vernet 39


AssignaRon condiRonnelle
Syntaxe: [label:] signal <= {expression when condiRon else}
expression [when condiRon];
Une condiRon a forcment une valeur boolenne
(true, false).
Le rsultat dun test dgalit ou dune comparaison
en gnral est de type boolen
library ieee;
Exemple: use ieee.std_logic_1164.all;
enRty MUX4 is
MulRplexeur 4-->1 port( a,b,c,d : in std_logic_vector(3 downto 0);
e : out std_logic_vector(3 downto 0);
4 s1,s0 : in std_logic );
a end MUX4;
b 4 architecture ARCHMUX4 of MUX4 is
4 e
c 4 begin
4 e <= a when (s1 & s0) = "00" else
d b when (s1 & s0) = "01" else
c when (s1 & s0) = "10" else
d;
s1 s0 end ARCHMUX4;

40
AssignaRon slecRve
Comme lassignaRon condiRonnelle, lassignaRon slecRve de signal
permet de slecRonner une expression aecter un signal, sur la base
dune condiRon

Dirences:
Une seule condiRon
La condiRon porte sur les valeurs possibles dune expression ou dun signal
(appel slecteur)
valeurs testes pas forcment boolennes (plus de
deux valeurs possibles)

41
AssignaRon slecRve
Syntaxe: [label:] with expression select
signal <= {expression when valeur,}
expression when valeur;

Les condiRons sont mutuellement exclusives (une


condiRon ne peut tre un sous-cas dune autre
condiRon)
Exemple:
with sel select
s <= E0 when 00,
E1 when 01,
E2 when 10,
E3 when 11;

42
Le Processus
Syntaxe: [label :] process [liste_de_sensibilit)] [is]
type_declaraRon | subtype_declaraRon |
constant_declaraRon | variable_declaraRon |
funcRon_declaraRon | procedure_declaraRon
begin
{instrucRon_squenRelle}
end process [label];

InstrucRons squenRelles:
sont values dans lordre dans lequel elles sont crites
analogues avec les instrucRons des langage de programmaRon convenRonnels

43
Le Processus
Liste de sensibilit
Liste des signaux (spars par des virgules) dont un vnement
(changement de valeur) entrane lexcuRon du processus
A chaque excuRon, lensemble des instrucRons du processus sont
values, puis le processus sarrte en a{endant un nouvel vnement
Ce{e liste est opRonnelle. Dans le cas o elle est omise (et seulement
dans ce cas), on doit trouver une instrucRon wait dans la zone des
instrucRons squenRelles.

Zone de dclaraRon
Les objets dclars dans ce{e zone sont locaux au processus.

44
LinstrucRon WAIT
InstrucRon squenRelle, plusieurs instrucRons possibles dans un mme
process.
Exemples :

45
Le Processus

InstrucRons squenRelles
assignaRon simple (de signal ou de variable)
if
case
for

46
InstrucRon IF
C est l quivalent squenRel de l assignaRon condiRonnelle
Syntaxe : [label :] if condiRon then
{instrucRon_sequenRelle}
{elsif condiRon then
{instrucRon_sequenRelle} }
[else {instrucRon_sequenRelle} ]
end if [label];
Exemples

process (a,b) process (a,b,sel1,sel2)


begin begin
if a=b then if sel1=1 then z<=a;
equal <=1;
else elsif sel2=1 then z<=b;
equal<=0; else z<=c;
end if; end if;
end process; end process;

47
InstrucRon CASE
C est l quivalent squenRel de lassignaRon slecRve de signal.
(Permet l execuRon d une opraRon en foncRon de la valeur prise par une
expression)

Syntaxe : [label :] case expression is


when valeur => {instrucRon_sequenRelle}
{when valeur => {instrucRon_sequenRelle}}
end case [label];
Exemple : process(light) A{enRon : valeur et
begin expression doivent tre
case light is du mme type
when red => next_light <= green;
when amber => next_light <= red;
when green => next_light <= amber;
end case;
end process;

48
InstrucRon de boucle (1/3)
InstrucEon FOR
Syntaxe :
[eRque{e :] for idenRant in discrete_range loop
{instrucRon_sequenRelle}
end loop [eRque{e];

Exemple :
-- a, b et s sont des signaux de type
-- std_logic_vector(7 downto 0)

process(a,b)
begin
for i in 7 downto 0 loop
s(i) <= not(a(i) xor b(i));
end loop;
end process;

49
InstrucRon de boucle (2/3)
InstrucEon WHILE
Syntaxe :
[eRque{e :] while condiRon loop
{instrucRon_sequenRelle}
end loop [eRque{e];

Exemple :

process(a,b)
begin
while i < 10 loop
i<=i+1;
end loop;
end process;

50
InstrucRon de boucle (3/3)
Boucle gnrale
Syntaxe :
[eRque{e :] loop
{instrucRon_sequenRelle}
end loop [eRque{e];

Exemples : LinstrucRon exit stoppe


litraRon et sort de la boucle.
LinstrucRon next stoppe
litraRon courante et execute
la suivante.
Boucle innie Boucle avec sorEe
loop L:loop
wait un(l clk = 1 ; exit L when value = 0;
q<=d aXer 5 ns; valeur := valeur /2;
end loop; end loop;

51
SynchronisaRon par une horloge
Les 2 descripRons suivantes sont quivalentes :
PROCESS PROCESS (clock)
BEGIN BEGIN
WAIT UNTIL clock='1'; IF (clock'EVENT and clock='1');
IF enable='1' THEN
enable
D Q
q_out IF enable='1' THEN
q_out <= d_in; d_in q_out <= d_in;
ELSE ELSE
q_out <= '0'; clock q_out <= '0';
END IF; END IF;
END PROCESS; END IF;
END PROCESS;

Rmq : LinstrucRon WAIT UNTIL peut se subsRtuer la liste de sensiRvit dun


PROCESS. Elle suRlise essenRellement lorsque le process nest acRv que par un seul
signal.

52
DclaraRon du reset

Reset synchrone Reset asynchrone

PROCESS (clk) PROCESS (clk, rst)


BEGIN BEGIN
IF clkEVENT AND clk= '1' THEN IF rst = '1' THEN count <= x"0";
IF reset = '1' THEN count <= "0000"; ELSIF (clkEVENT AND clk = '1') THEN
ELSE count <= count + 1;
count <= count + 1;
END IF;
END IF;
END IF;
END PROCESS;
END PROCESS;

Le process nest sensible quau Le process est sensible aux signaux CLK
signal clk et RST. Le reset est prioritaire.

53
Remarque : la mmorisaRon implicite

En VHDL, les signaux ont une valeur courante, et une valeur suivante.
Si la valeur suivante d'un signal n'est pas spcie, elle est suppose
idenRque la valeur courante.

Avantage : la descripRon dlments mmoire est simplie

if (clk'event and clk='1') then Q<= D; if (clk'event and clk='1') then Q<= D;
end if; else Q <= Q;
end if;
Inconvnient : la logique gnre peut devenir beaucoup plus complique

54
DescripRon de machines dtat
Machine de Moore et de Mealy
descripRon de circuits squenRels, o on raisonne en
tat prsent tat futur
avec des condiRons de transiRons

entres tat
Circuit futur Circuit
registre sorties
combinatoire combinatoire

tat prsent

55
Machine dtat
Exemple (1/2 )
initialisation
Etat 1

Condition 2

Condition 1
Condition 4
Etat 2
Condition 3

Etat 3

56
Machine dtat
Exemple (2/2)
Architecture machine_arch of machine is
signal etat : integer range 1 to 3;
begin
process (clk)
begin Remarque :on peut dfinir un type tat
if clkevent and clk=1 then
architecture is
if iniRalisaRon = 1 then etat <= 1;
else type etat_type is (etat1, etat2, etat3);
case etat is
signal etat : etat_type;
when 1=> if condiRon 1 then etat <=3;
elsif condiRon 2 then etat <=2; begin
end if;
..
when 2 => if condiRon 3 then etat <= 3; end if;
when 3 => if condiRon 4 then etat <=1; end if; Le type tat est un type numr, le nom
end case; des tat peut tre quelconque (dbut, fin,
end if; vitesse, marche, arrt,..
end process;
end machine-arch;

57