Vous êtes sur la page 1sur 41

TP 1:

Initiation au
Quartus 2 (Projet
de conception
schmatique)
Exercice 1 :

Entres : a, b, c, d, e, f | Entres logiques sur 1 bit

Sortie : X | Sortie sur 1 bit

1_ Ralisation le circuit du montage suivant :

2_lquation de la sortie :
X = [(a.b)+(c.d)]+e+f

Nombre de CLB= 7

Taux doccupation= (7 / 240)*100 =2.92 %


3_schma RTL:

lquation de la sortie implante : X = [(a.b)+(c.d)]+e+f

4_Montrez que : d.(a.b+ /c)+a.b./d=a.b+/c.d


d.(a.b+/c)+a.b./d=d.ab+d.c/+ab/d

= a.b(d+/d)+d/c

=ab+/c.d

Exercice 2:

Entres : a, b, c, d, e, f | Entres logiques sur 1 bit

Sorties : X =a.b+/a.c+b.c

Y=(a+b+c).(a+/b+c).(/c+d).(a+d)
1_Ralisation le circuit du montage

a b c d X Y
0 0 0 0 0 0
0 0 0 1 0 0
0 0 1 0 1 0
0 0 1 1 1 1
0 1 0 0 0 0
0 1 0 1 0 0
0 1 1 0 1 0
0 1 1 1 1 1
1 0 0 0 0 1
1 0 0 1 0 1
1 0 1 0 0 0
1 0 1 1 0 1
1 1 0 0 1 1
1 1 0 1 1 1
1 1 1 0 1 0
1 1 1 1 1 1
TP 2: Les circuits
Logique
combinatoire
(Description
Schmatique)
Exercice 1:

1_table de vrit de codeur:

Chiffre Code binaire Segments


s anaturela a 2 a A B C D E F G
affich 4 3 1
0 0 0 0 0 1 1 1 1 1 1 0
1 0 0 0 1 0 1 1 0 0 0 0
2 0 0 1 0 1 1 0 1 1 0 1
3 0 0 1 1 1 1 1 1 0 0 1
4 0 1 0 0 0 1 1 0 0 1 1
5 0 1 0 1 1 0 1 1 0 1 1
6 0 1 1 0 1 0 1 1 1 1 1
7 0 1 1 1 1 1 1 0 0 0 0
8 1 0 0 0 1 1 1 1 1 1 1
9 1 0 0 1 1 1 1 1 0 1 1

2_codage:
3-circuit du montage:
Exercice 2:
*Demi-Additionneur:
A Hadder d

B C

1_table de vrit:

2_quations des sortie D et C:

3_circuit du montage:

*Additionneur 1 Bit:
1_table de vrit:

2_quations des sortie Cout et s:


R= CoutAB+CoutAB+CoutAB+CoutAB

s= CoutAB+CoutAB+CoutAB+CoutAB=AB+Cout (A+B)

3_circuit du montage:

*Additionneur 4 Bits:

A R
Adder 4
B Cout
1_circuit du montage:

TP 3: Les circuits
Logique
combinatoire
(Description
VHDL)
Exercice 1:
1_code en vhdl :
Dclaration des
Bibliothques:

library ieee;

use ieee.std_logic_1164.all;

Dclaration de l'entit:

Entity Trans is

port (E:in std_logic_vector(3 downto 0);

S:out std_logic_vector(6 downto 0));

END Trans ;

Declaration de l' architecture :

architecture transcodeur of Trans is

begin

S <= "1111110" when E="0000" else

"0110000" when E="0001" else

"1101101" when E="0010" else

"1111001" when E="0011" else

"0110011" when E="0100" else

"1011011" when E="0101" else

"1011111" when E="0110" else


"1110000" when E="0111" else

"1111111" when E="1000" else

"1111011" when E="1001" else

"1001111" ;

END transcodeur ;

Exercice 2:
1_Multiplexeur2vers1:

Cs A B Sel S
1 X X X X
0 0 X 0 0
0 1 X 0 1
0 X 0 1 0
0 X 1 1 1

Dclaration des Bibliothques:

library ieee;

use ieee.std_logic_1164.all;

Dclaration de l'entit:

entity mux is
port (a ,b ,sel :in std_logic ; s : out std_logic )

end mux ;

Declaration de l' architecture :

architecture archmux of mux is

begin

with sel select

s <= a when '0',

b when others ;

end archmux ;

2_ Multiplexeur4vers1

Cs A B C D Sel S
1 X X X X X X
0 0 X X X 00 0
0 1 X X X 00 1
0 X 0 X X 01 0
0 X 1 X X 01 1
0 X X 0 X 10 0
0 X X 1 X 10 1
0 X X X 0 11 0
0 X X X 1 11 1
table de vrit de circuit

multiplixeur 4 vers 1 avec deux multiplixeur 2 vers 1

Dclaration des Bibliothques:


library ieee;

use ieee.std_logic_1164.all;

Dclaration de l'entit:

entity muxx is

port ( a,b,c,d :in std_logic;

sel: in std_logic_vector(1 downto 0);

s : out std_logic );

end muxx ;

Declaration de l' architecture :

architecture archmuxx of muxx is

begin

with sel select

s <= a when "00",

b when "01",

c when "10",

d when others ;

end archmuxx ;

Exercice 3:
1_comparateur 1 bit:

Dclaration des Bibliothques:

library ieee;

use ieee.std_logic_1164.all;

Dclaration de l'entit:
entity comp is

port (A ,B:in std_logic;

Sinf,Seg,Ssup :out std_logic );

end comp ;

Declaration de l' architecture :

architecture arch_comp of comp is

begin

Sinf <='1' when A<B else '0';

Seg <='1' when A=B else '0';

Ssup <='1' when A>B else '0';

end arch_comp;

2_ comparateur 4 Bits:

Dclaration des Bibliothques:

library ieee;

use ieee.std_logic_1164.all;

Dclaration de l'entit:

entity compa is

port ( A ,B:in std_logic_vector(3 downto 0);

Sinf,Sey,Ssup :out std_logic );


end compa ;

Declaration de l' architecture :

architecture arch_compa of compa is

begin

Sinf <='1' when A<B else '0';

Sey <='1' when A=B else '0';

Ssup <='1' when A>B else '0';

end arch_compa;
TP 4: Les circuits
Logique
combinatoire(Description
VHDL)
Exercice 1:
1.1Bascule D:

D Q
DFF
CLK Qb

Rle :
Cest une bascule D synchronise sur le front montant. La caractristique de cette bascule rside dans
le fait quelle ne charge et ne conserve que la valeur d prsente au moment de lactivation du signal
de synchronisation.

Entres:
CLK | Horloge de synchronisation (sur le front montant).
D | Entre de donne sur 1 bit

Sorties :

Q | Sortie de donne sur 1 bit


Qb | Complment de la sortie Q.

Dclaration des bibliothques :

library ieee ;

use ieee.std_logic_1164.all;

Dclaration des de lentit:

entity bd is

port(d,h:in std_logic;
q,qb:out std_logic);

end bd;

Dclaration de larchitecture :

architecture basculeD of bd is

signal x:std_logic;

begin

process(h)

begin

if(h'event and h='1') then

x<=d;

else x<=x;

end if;

end process;

q<=x;

qb<=not x;

end basculeD;

1.2Bascule D avec Forage:

D Q
DFF-R
CLK Qb

RA

Rle :
Cest une bascule D synchronise sur le front montant avec deux entres de forage 1et 0.

Le forage zro est le prioritaire.

Entres:
CLK | Horloge de synchronisation (sur le front montant).
D | Entre de donne sur 1 bit
RA0 | Entre de forage un active au niveau bas(Q=1 si RA1=0)
RA1 | Entre de forage zro active au niveau bas(Q=1 si RA1=0)

Sorties :

Q | Sortie de donne sur 1 bit


Qb | Complment de la sortie Q.

Dclaration des bibliothques :

library ieee ;

use ieee.std_logic_1164.all;

Dclaration des de lentit:

entity bdf is

port(d,h,ra0,ra1:in std_logic;

q,qb:out std_logic);

end bdf;

Dclaration de larchitecture :

architecture basculeD of bdf is

signal x:std_logic;

begin

process(h,ra0,ra1)

begin

if (ra0='0' and ra1='0')then x<='0';

elsif (ra0='0' and ra1='1')then x<='0';

elsif (ra0='1' and ra1='0')then x<='1';

elsif (ra0='1' and ra1='1')then

if(h'event and h='1') then

x<=d;

else x<=x;

end if;

end if;

end process;

q<=x;
qb<=not x;

end basculeD;

1.3Bascule JK:

k Q
JKFF
CLK Qb

Rle :
Cest une bascule JK synchronise sur le front montant

Entres:
CLK | Horloge de synchronisation (sur le front montant).
J,K | Entre de bascule chacune sur 1 bit

Sorties :

Q | Sortie de donne sur 1 bit


Qb | Complment de la sortie Q.

la table de vrit du circuit :

CLK J K Qt+1
1 0 0
1 0 1
1 1 0
1 1 1

Dclaration des bibliothques :

library ieee ;

use ieee.std_logic_1164.all;
Dclaration des de lentit:

entity bdj is

port(j,k,h:in std_logic;

q,qb:out std_logic);

end bdj;

Dclaration de larchitecture:

architecture basculeD of bdj is

signal x:std_logic;

begin

process(h)

begin

if(h'event and h='1') then

if(k='0' and j='0')then x<=x;

elsif(k='0' and j='1')then x<='1';

elsif(k='1' and j='0')then x<='0';

else x<= not (x);

end if;

end if;

end process;

q<=x;

qb<=not x;

end basculeD;

1.4Bascule JK avec forage:

j
Q
K
JKFF-R
Qb
CLK

RA avec deux entres de forage 1et 0.


Cest: une bascule JK synchronise sur le front montant
Rle
Le forage zro est le prioritaire.
Entres:
CLK | Horloge de synchronisation (sur le front montant).
D | Entre de donne sur 1 bit
RA0 | Entre de forage un active au niveau bas(Q=1 si RA1=0)
RA1 | Entre de forage zro active au niveau bas(Q=1 si RA1=0)

Sorties :

Q | Sortie de donne sur 1 bit


Qb | Complment de la sortie Q.

Dclaration des bibliothques :

library ieee ;

use ieee.std_logic_1164.all;

Dclaration des de lentit:

entity jkf is

port(j,k,h,ra0,ra1:in std_logic;

q,qb:out std_logic);

end jkf;

Dclaration de larchitecture :

architecture basculeD of jkf is

signal x:std_logic;

begin

process(h,ra0 ,ra1)

begin

if (ra0='0' and ra1='0')then x<='0';

elsif (ra0='0' and ra1='1')then x<='0';

elsif (ra0='1' and ra1='0')then x<='1';

elsif (ra0='1' and ra1='1')then

if(h'event and h='1') then

if(k='0' and j='0')then x<=x;

elsif(k='0' and j='1')then x<='1';

elsif(k='1' and j='0')then x<='0';


else x<= not (x);

end if;

end if;

end if;

end process;

q<=x;

qb<=not x;end basculeD;

Partie recherche

Utilisation du Logiciel
QUARTUS

1 -Cration d'un projet

2 -Description Schmatique

3 -Description VHDL

4 -Utilisation des megafonctions

5 - Simulation du Projet

6 -Implantation du Projet
ANNEXE :

Brochage du FPGA de la carte DE2

1 - Cration d'un projet

Ouvrir le logiciel QUARTUS II et crer un nouveau projet ( "FILE" "NEW PROJECT WIZARD").
Cliquez sur "Next" l'apparition de la premire fentre.

Dfinir le rpertoire de travail (crez, sur votre cl USB ou votre disque rseau, un dossier pour chaque

projet Quartus): "" ...\VOTRE_RPERTOIRE \ PROJETS_QUARTUS \ PROJET_1".

Dfinir le nom du projet : "MON_PROJET" ".

L'assistant de cration de projet attribue par dfaut le nom du projet l'entit "top-level". Garder ce nom.
cliquer sur "NEXT".

La fentre suivante nous propose d'inclure des fichiers dj cres au projet. Passez cette
tape. La fentre de choix du composant apparat alors :

- Cocher la case "SPECIFIC DEVICE SELECTED IN 'AVAILABLE LIST' "

- Choisir dans la liste des rfrences : EP2C35F672C6

(Slectionnez les options CYCLONE II pour la famille de composants et 672 pour le nombre de broches comme sur
l'image ci-dessous afin de trouver la rfrence plus rapidement :)
remarque : on pourra toujours modifier ce choix par la suite, si les ressources du composant ne permettent pas
l'implantation du design (nombre insuffisant de portes) ou au contraire si un composant moins cher serait suffisant,
ou encore si les performances dynamiques (temps de propagation) sont insuffisantes.

Il est galement possible de ne pas choisir de composant en cochant la case " AUTO DEVICE SELECTED BY THE FITTER ", ce qui
signifie que la cible optimale sera choisie par le logiciel une fois le design saisi.

Passez l'tape suivante en cliquant sur 'NEXT' et cliquez sur 'FINISH'.

Le projet est maintenant cre.


2 - Description Schmatique

Ce paragraphe indique la marche suivre pour dcrire sous forme de schma ( logigramme ) la fonction
logique que l'on souhaite implanter dans le composant.

Nous allons pour cette exemple implanter la fonction logique suivante :

S = E1.E2 + E3

Le logigramme correspondant cette quation est :

Crer un nouveau fichier dans votre projet ("FILE"" NEW") et slectionner le type "BLOCK DIAGRAM, SCHEMATIC
FILE". Sauver ce fichier en gardant le nom par dfaut (celui de votre projet).

Saisir le logigramme prcdemment tabli :

Placer les blocs logiques : cliquez sur l'icne , dveloppez le rpertoire "LIBRAIRIES" "PRIMITIVE""LOGIC"
et chercher les portes souhaites (and2 et or2).

Ajouter les broches d'entres (INPUT) et de sorties (OUTPUT) : , puis "LIBRAIRIES" "PRIMITIVE""PIN" et
nommez les en double cliquant dessus.

Slection du symbole broche d'entre dans la bibliothque de composants.

Interconnecter les portes et les E/S en cliquant sur puis en glissant d'un point un autre avec la souris en
maintenant le bouton gauche enfonc.

Remarque : A tout moment vous pouvez passez en plein cran en cliquant sur .

On obtient le logigramme suivant

Il reste alors associer les signaux E1, E2, E3 et S 4 des broches du composant utilis. Pour cela :

Cliquez sur (si l'icne n'est pas directement accessible : "PROCESSSING""ANALYSE & SYNTHSE" , afin que le
logiciel prenne en compte les diffrents signaux du schma et vrifie des ventuelles erreurs de connexion.
Ensuite, slectionner dans la partie suprieure de l'cran : "ASSIGNEMENTS""PINS" :

L'cran montre une vue du composant cible, avec ses diffrentes broches ainsi que leur fonction. Le tableau dans
la partie infrieure de l'cran fait apparatre les diffrents signaux du schma.
Il suffit de cliquer dans la colonne location en face du signal que l'on souhaite assigner et de
slectionner dans la liste droulante la broche dsire.

Par exemple, pour faire correspondre les signaux d'entre E1, E2 et E3 respectivement aux interrupteurs

( switches ) SW0, SW1 et SW2 de la maquette et la sortie S la LED verte 0 (LEDG0) de la maquette, on
affectera les N de broche suivants :

E1 => N25

E2 => N26

E3 => P25

S => AE22

Une fois l'ensemble de ces oprations effectues, il faut compiler le projet en cliquant sur dans la barre de menu

suprieure (si l'icne n'est pas directement accessible : "PROCESSSING""COMPILE" ). Cette opration sert gnrer les
fichiers ncessaires la simulation et la programmation du composant.
3 - Description VHDL
Il est galement possible de programmer une fonction en saisissant sa description VHDL. Nous allons, pour illustrer
cette mthode, implanter une fonction logique reprsente par la table de vrit suivante :

A B C x

0 0 0 0

0 0 1 1

0 1 0 1

0 1 1 0

1 0 0 1

1 0 1 0

1 1 0 1

1 1 1 1

Crez un nouveau fichier, de type vhdl, dans votre projet :


Sauvez-le sous le nom table_verite ;

Compltez ce fichier en crivant l'entit et l'architecture correspondant la table de vrit prsente ci-
dessus (le nom de l'entit doit tre le mme que celui du fichier VHDL):

Vrifiez la syntaxe de votre fichier : menu PROCESSING ANALYSE CURRENT FILE .

Crez un symbole associ votre description VHDL : menu FICHIER CREATE SYMBOL FOR CURRENT FILE

Vous pouvez maintenant retourner sur votre fichier schmatique et aller chercher le symbole qui vient d'tre cr
comme n'importe quel autre composant. Il se trouve dans le rpertoire de votre projet

Placez-le sur votre schma et connectez les broches d'E/S aux entres et sorties de la fonction table_verite :
La suite des oprations (placement des broches d'E/S, affectation des n de broches, compilation) est identique
celle dcrite au chapitre 2.
4 - Utilisation des megafonctions

L'objectif de cette partie est de mettre en uvre les "megafonctions" offertes par le logiciel.
Il s'agit d'une bibliothque de fonctions prdfinies (on y trouve des fonctions logiques
combinatoires complexes (dcodeurs, multiplexeurs...) , des fonctions arithmtiques
(additions, multiplications...), des fonctions squentielles etc...).

Toutes ces fonctions sont entirement paramtrables par l'utilisateur, qui peut ainsi en
quelques clics de souris crer des fonctions complexes adaptes ses besoin.

Nous allons dans cet exemple crer un multiplexeur 8 vers 1 (8 entres, 1 sortie) :

Crez un projet, puis un fichier de description schmatique.

Cliquez sur puis MEGAFUNCTIONS gates LPM_mux

L'assistant de cration de megafonctions s'ouvre :


Cochez VHDL Laisser les paramtres par dfaut et cliquer sur Next

L'cran suivant apparat :

Il suffit de slectionner les options dsires pour le multiplexeur dans les menus droulants,
savoir 8 pour le nombre d'entres et 1 pour le nombre de sorties.

Cliquer sur Finish , le multiplexeur est cre et peut tre plac sur le schma.

La suite des oprations (placement des broches d'E/S, affectation des n de broches,
compilation) est identique celle dcrite au chapitre 2.
5 - Simulation du Projet

La simulation du projet permet de visualiser l'cran le comportement de la fonction cre avant de programmer le
composant. Il faut, pour pouvoir effectuer cette opration, que le projet ait auparavant t compil.

Cette visualisation se fait sous forme de chronogramme reprsentant l'volution des entres et sorties de la fonction
logique simule.

Pour fonctionner, la simulation ncessite que l'utilisateur dfinisse l'allure des signaux d'entre de la fonction, le
simulateur se charge quant lui de calculer l'volution des signaux de sortie correspondants.

La premire tape consiste dfinir les signaux appliquer sur les entres du circuit...

FILE "NEW" ONGLET : "OTHER FILES" SLECTIONNER : "WAVEFORM VECTOR FILE".

Ajouter au fichier les entres du design. Pour cela, faire un clic droit comme indiqu ci-dessous :

slectionner "INSERT NODE OR BUS" puis cliquer sur "NODE FINDER". Dans "FILTER" slectionner "PINS : INPUT". Cliquer

sur "LIST". La liste des entres apparat :Cliquez sur pour ajouter toutes les entres au fichier puis "OK" et

encore "OK".
Slection des signaux d'entre pour la simulation (ici E1, E2 et E3)

On peut choisir la dure de la simulation (taille des chronogrammes) : EDIT "END TIME" . Choisir par exemple
10ms.

Pour afficher la totalit du chronogramme, pressez 'CTRL + W'.

Pour dfinir l'tat des entres, il suffit de slectionner une portion du chronogramme (un ou plusieurs signaux
la fois) puis de cliquer sur pour mettre '0' ou sur pour mettre '1'.

On peut galement dfinir l'volution des signaux de faon automatique, en faisant varier une entre de faon

priodique ('CLOCK VALUE' : ) ou encore en groupant les signaux en un bus ( slectionner les lignes E1, E2 et

E3, clic droit 'GROUPER' , radix binary, puis 'COUNT VALUE'. Dans l'onglet 'I=TIMING', choisir 'COUNT EVRY 1MS'.
On obtient le chronogramme suivant :

chronogramme des signaux d'entre.

Sauvegarder le fichier (l'extension .wvf waveform vector file est automatiquement ajoute).
Lancer la simulation en cliquant sur : . Vrifier les rsultats obtenus pour les signaux de sortie :

Rsultat de la simulation.
6 - Implantation du Projet

La dernire tape consiste programmer le composant, c'est dire implanter la description dans la cible matrielle
(FPGA dans notre cas). Il faut pour cela que le projet ait auparavant t compil.

Cette opration se fait dans notre cas via un des port USB du PC connect au port BLASTER de la carte DE2.

Pour programmer le composant, il faut cliquer sur l'icne correspondante :

Un cran apparat, avec un fichier d'extension .pof list. Il s'agit du fichier de programmation final :

fentre de programmation.

Si aucun matriel de programmation n'est dfini (inscription 'NO HARDWARE'), cliquez alors sur 'HARDWARE SETUP' et
slectionnez 'USB BLASTER'.

Cocher les cases "PROGRAM/CONFIGURE" et "VERIFY" et lancer la programmation en cliquant sur START

Le fonctionnement est maintenant prt tre test sur la platine de test.


ANNEXE :

Brochage du FPGA de la carte


DE2

Switches :

Keys :
LEDs :
Afficheurs 7

Vous aimerez peut-être aussi