100% ont trouvé ce document utile (1 vote)
288 vues63 pages

Décodeur BCD et Commande des LEDs VHDL

Ce rapport présente les étapes de compilation d'un projet VHDL dans Quartus et la simulation dans ModelSim. Il décrit le principe de fonctionnement d'un décodeur BCD à 7 segments et d'un circuit de commande logique de LED. Le code VHDL est compilé et les différentes étapes de compilation sont comparées.

Transféré par

soukaiinabensnah01
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
288 vues63 pages

Décodeur BCD et Commande des LEDs VHDL

Ce rapport présente les étapes de compilation d'un projet VHDL dans Quartus et la simulation dans ModelSim. Il décrit le principe de fonctionnement d'un décodeur BCD à 7 segments et d'un circuit de commande logique de LED. Le code VHDL est compilé et les différentes étapes de compilation sont comparées.

Transféré par

soukaiinabensnah01
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Systèmes Embarqués

Travaux Pratiques

Préparé par: Encadré par:


 Bensnah Soukayna  Mr Latif Rachid
 Addi Hamdi

Année Universitaire 2022 – 2023


TABLE DES MATIERES
LAB 0: 7 segment BCD decoder Décodeur BCD à 7 segments

I-Objectifs:
II- Principe de fonctionnement
III Compilation
 Code VHDL
 Explication
 Comparaison entre le post mapping\fitting

IV Simulation

Lab 1 : Commande Logique des LEDs

I. L’objectifs
[Link] de fonctionnement
III. Compilation
 Code VHDL
 Explication
 Comparaison entre RTL Viewr, Post-Mapping et Post-fitting
Résumé : Rapport de synthèse
 Etapes de compilation

[Link] 2: Simulation

2
Lab 2 :Additionneur 4 bits avec Affichage des Résultats

I.L’objectifs
[Link] defonctionnement:
III. Compilation
 Code VHDL
 Explication
 Comparaison entre RTL Viewr, Post-Mapping et Post-fitting
 Résumé : Rapport de synthèse
 Etapes de compilation

[Link] 2 : Simulation

Lab 3 : Compteur Modulo N

I.L’objectif s

[Link] de fonctionnement :

III. Compilation
 Code VHDL
 Explication
 Comparaison entre RTL Viewr, Post-Mapping et Post-fitting
 Résumé : Rapport de synthèse

IV. Simulation

3
Lab0 : 7 segment BCD decoder
Décodeur BCD à 7segments

[Link]:

Ce TP vise à créer une description VHDL d'un décodeur BCD à 7 segments en utilisant les outils Quartus 2 et
Modelsim pour la compilation et la simulation, afin de se familiariser avec ces outils.

4
II .Principe de fonctionnement

Convertir un nombre en format BCD (Binary Coded Decimal) en une représentation affichable
sur un écran à 7 segments. Le décodeur BCD reçoit en entrée un nombre en BCD sur plusieurs lignes
d'entrée et active les segments appropriés sur l'écran à 7 segments pour afficher le chiffre
correspondant. Chaque segment de l'écran est contrôlé par une sortie spécifique du décodeur BCD.

5
III Compilation

1 Code VHDL :

library IEEE;

use IEEE.std_logic_1164.all;
entity Lab0 is
port (
SW: in STD_LOGIC_VECTOR (3 downto 0);
HEX0: out STD_LOGIC_VECTOR (6 downto 0)
);
end Lab0;
architecture Lab0_arch of Lab0 is
begin
process(SW)
begin
case SW is
when "0000"=>HEX0<="0000001";
when "0001"=>HEX0<="1001111";
when "0010"=>HEX0<="0010010";
when "0011"=>HEX0<="0000110";
when "0100"=>HEX0<="1001100";
when "0101"=>HEX0<="0100100";
when "0110"=>HEX0<="0100000";
when "0111"=>HEX0<="0001111";
when "1000"=>HEX0<="0000000";
when "1001"=>HEX0<="0000100";
when others => HEX0<="1001000";
end case;
end process;

end Lab0_arch;

6
2 Explication:
près avoir créé le projet dans Quartus 2, nommé "AtelierTP0", nous procédons à la création d'un fichier
VHDL que nous enregistrons sous le nom de "[Link]".
On écrit notre code tel que l’entité au même nom du fichier :

On compile le code afin de vérifier s’il est correct :

L’ensemble du rapport de compilation et d’analyse des performances sont dans cette fenêtre :

7
La réussite de la compilation est exprimée par un message

Nous vérifions les informations du rapport de compilation, appelé Flow Summary, afin de s'assurer qu'il ne
contient aucune erreur après la compilation.

8
3 Comparaison entre le post mapping\fitting :
Nous produisons la netlist des descriptions structurées du système, à la fois après le mappage (Post-Mapping) et
après l'ajustement (Post-Fitting).

Post-Mapping

Post-Fitting

4 Code VHDL :

9
Lorsque nous voulons appliquer des contraintes de temps à notre conception dans TimeQuest
Timing Analyzer, nous avons deux options : une netlist post-fit ou une netlist post-map.
La netlist post-map est disponible après une simple synthèse de la conception. En revanche,
la netlist post-fit n'est disponible qu'après l'ajustement et contient des informations de synchronisation.
Le processus de mapping met en œuvre le comportement spécifié dans la technologie choisie,
mais n'affecte pas les ressources physiques spécifiques des éléments individuels. La simulation à ce
niveau modélise les délais de porte de manière assez précise, mais utilise des moyennes statistiques
pour les délais de câblage.

IV . Simulation
Apres la compilation de la descriptionappropriée ,on passe à la vérification du comportement temporel
et fonctionnel de description flot de données , structurelles et comportementales .

On lance le logiciel de simulation Modelsim et on fait appel au code compilé dans Quartus

10
Le téléchargement du projet est nécessaire

11
On commence la simulation on passons à la bibliothèque work

On sélectionne notre programme pour lancer la simulation

12
nosentree et sorrties sont là

on sélectionne tout les signaux et fait add to wave pour les visualiser

13
on modifie les propriétés de chaque signal ; couleur….

On définit les entrées Bcd de type Clock

14
On execute

15
Lab1 : Commande Logique des LEDs

16
I. L’objectif s :
L'objectif de ce TP est de se familiariser avec les outils de conception et de découvrir les différentes technologies
FPGA. Pour l'implémentation embarquée, la carte utilisée dans ce TP est la FPGA-DE0 d'Intel-Altera, qui est de type
Cyclone III.

II. Principe de fonctionnement :

SW2 SW1 SW LE LED LED5 LED4 LED3 LED2 LED1 LED0


0 D7 6

0 0 0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0 1 0
0 1 0 0 0 0 0 0 1 0 0
0 1 1 0 0 0 0 1 0 0 0
1 0 0 0 0 0 1 0 0 0 0
1 0 1 0 0 1 0 0 0 0 0
1 1 0 0 1 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0

Le SW représente l’entrée du système (Switch) et LED est la sortie de système.

17
III. Partie 1 : Compilation
1. Code VHDL

Library IEEE; architecture Behavioral of Lab1 is


;
use IEEE.std_logic_1164.all; begin

process(SW(0),SW(1),SW(2))

entity Lab1 is begin

port( LEDG(0) <= (NOT SW(0)) and (NOT SW(1)) and


(NOT SW(2)) ;
SW : in std_logic_vector(2 downto 0);
LEDG(1) <= (SW(0)) and (NOT SW(1)) and
LEDG : out std_logic_vector(7 downto 0)
(NOT SW(2)) ;
);
LEDG(2) <= (NOT SW(0)) and ( SW(1)) and
end Lab1 (NOT SW(2));

LEDG(3) <= ( SW(0)) and ( SW(1)) and (NOT


SW(2)) ;

LEDG(4) <= (NOT SW(0)) and (NOT SW(1)) and


( SW(2)) ;

LEDG(5) <= ( SW(0)) and (NOT SW(1)) and (


SW(2)) ;

LEDG(6) <= (NOT SW(0)) and ( SW(1)) and (


SW(2)) ;

LEDG(7) <= ( SW(0)) and ( SW(1)) and ( SW(2))


;

endprocess;

endBehavioral;

18
2. Explication

Dans cette manipulation, nous allons expérimenter la commande des LED, qui seront déclarées en tant que
vecteur de sortie, à l'aide des interrupteurs qui seront également un vecteur de [Link] code au dessus est plus
au moins optimisé que celui-ci :

entity Lab1 is

port ( --- SW0 : in std_logic; --switch 0

--- SW1 : in std_logic;--switch 1

--- SW2 : in std_logic;--switch 2

-- LEDG0 : out std_logic; -- LED 0

-- LEDG1 : out std_logic;-- LED 1

-- LEDG2 : out std_logic;-- LED 2

-- LEDG3 : out std_logic;-- LED 3

-- LEDG4 : out std_logic;-- LED 4

-- LEDG5 : out std_logic;-- LED 5

-- LEDG6 : out std_logic;-- LED 6

-- LEDG7 : out std_logic -- LED 7 );

end Lab1;

19
3. Comparaison entre RTL Viewr, Post-Mapping et Post-fitting
RTLViewer
Le niveau de transfert de registre (RTL) est une méthode de description des architectures microélectroniques.
Dans la conception RTL, le comportement d'un circuit est défini en termes d'envois de signaux ou de transferts de
données entre registres, ainsi que les opérations logiques effectuées sur ces signaux. Le RTL est utilisé dans les
langages de description matérielle (HDL) tels que Verilog et VHDL pour créer des représentations de circuits à
un niveau élevé, à partir desquelles des représentations à des niveaux inférieurs et le câblage réel peuvent être
dérivés.

Post-Mapping

Post-Fitting
Il est possible de voir le schéma avant et après l’intégration dans le FPGA. Tools – Netlist Viewers
- Technologie Map Viewver (Post Fitting). Quartus crée le symbole correspondant à la synthèse
obtenue.

Ça nous permet aussi de visualiser les LOGIC_CELL et r la structure logique après optimisation

20
21
4. Résumé : Rapport de synthèse
Flow Summary

Analysis & Synthesis Summary

22
Ressources Utilisation

Assembler Summary

TimeQuest Timing Analyzer Summary

23
IV. Simulation
Cette manipulation est basée sur l’outil de simulation ModelSim.

Nous avons crée un nouveau projet ModelSim, et nous avons ajouté le fichier vhdl compilé dans
la première partie contenant le code de la description VHDL.

Après la simulation voici le résultat :

24
On a ajouté tout les signaux à la partie Wave comme suit :

On utilise la fonction FORCE pour préciser les valeur des entrées et tester le résultat

Pour le switch 0, on a forcé la valeur 1

Pour le switch 1, on a forcé la valeur 1

Pour le switch 2, on a forcé la valeur 0

25
Après la simulation, coici le résultat.

Selon la table de vérité proposé au début dans le cas de SW = 011 , on aura la LED 3 qui sera
allumée.

Dans le cas SW=000, on aura la LED 0

26
Cette fois si, on va désactiver le FORCE, et on va travaillé avec le clock ; qu’on va régler comme
suit :

Clk SW0 =100

Clk SW1=75

Clk SW2 =50

27
Après la simulation , on aura un résultat avec le clock réglé pour ben visualiser les résultants
d’une façon arbitraire

28
Lab2 : 7 segment BCD decoder
Décodeur BCD à 7segments

29
I. L’objectifs
Le but de ce TP est de proposer une architecture d’un additionneur 4 bits avec affichage des résultats
dans les LEDs et afficheurs 7 segments via Quartus 2 d’Intel -Altera et ensuite passer à la simulation à
l’aide de MODELSIM.

La carte proposée dans ce TP pour l’implémentation embarquée est FPGA-DE0 d’Intel-Altera de type
Cyclone III.

II. Principe de fonctionnement:


Le principe de fonctionnement de ce TP est fondé sur un additionneur 4 bits. Les entrées de ce
système sont 8 switches (2 * 4 bits) est comme sortie les LEDs et 4 afficheurs 7 segments. Le mot à
afficher est le suivant : « S=XX ». XX représente la somme en décimal. Le reset permet la remise à
zéro des processus de cet additionneur.

III. Compilation

1 .Code VHDL
Le code VHDL que nous avons conçu pour Cette manipulation est le suivant :

library IEEE;

SW(4), SW(5), SW(6), SW(7), SW(8),


SW(9)) -- inputs

variable s: integer; -- initialiser s


PORT(
variablecout1:integer;--initialisercout1

outstd_logic_vector(4downto0);--sum,cout
cout3:integer;

downto0)--7segmentdisplaysfors -- initialiser cout3

); variable cout4: integer;

-- initialiser cout4

38
--CATS DE RESULTATS S, CATS DE Cout

IF((SW(6)='1'xorSW(1)='1')xorSW(0)='1')THEN

s:=s+1;

cout1 := 0;

ELSIF(((SW(6)='1'xorSW(1)='1')andSW(0)='1')or(SW(6)='1'andSW(1)='1'))THEN s

:=0;

cout1:=1;

ELSIF(SW(6)='1'andSW(1)='1'andSW(0)='1')THEN--specialcase

s:=s+1;

cout1 := 1;

end if;

IF ((SW(7) = '1' xor SW(2) = '1') or cout1 = 1) THEN

s:=s+2;

cout2 := 0;

ELSIF(((SW(7)='1'xorSW(2)='1')andcout1=1)or(SW(7)='1'andSW(2)='1'))THEN

s:=s+0;

cout2 := 1;

ELSIF(SW(7)='1'andSW(2)='1'andcout1=1)THEN--specialcase

s:=s+2;

cout2 := 1;

end if;

39
--sLEDSturnon/off,7-Segmentdisplay

IFs=0THEN

LEDG(0) <= '0'; -- "string", 'int'

LEDG(1)<='0';

LEDG(2)<='0';

LEDG(3)<='0';

HEX0<="1000000";--'0'

HEX1<="1111111";--OFF

ELSIF s = 1 THEN

ELSIFs=15THEN LEDG(0)

<='1';

LEDG(1)<='1';

LEDG(2)<='1';

LEDG(3)<='1';

HEX1 <= "1111001"; -- '1'

HEX0<="0010010";--'5' END IF;

HEX3<="0010010";HEX2<="1011011";

ENDPROCESS;

END FULADDER;

40
41
2. Explication
Dans cette manipulation nous allons réaliser l’opération d’addition de deux nombres A et B de 4
bits chacun et puis afficher le résultat de la sommation dans 4 afficheurs 7 segments deux indiquant
le résultat et les autres pour afficher « S= »

LIBRARY ieee; Begin --component instantiation

USE ieee.std_logic_1164.all; I1:comparator port map (Comp_in=>link,


z=>outComp);
use work.circuit_components.all;
I2:CircuitAportmap(CircA_in=>link(3
entity lab2 is downto0),CircA_out=>outCircuitA);
port (SW : in std_logic_vector(8 downto 0); I3:muxportmap(a=>link(3),
HEX0,HEX1,HEX2,HEX3:outstd_logic_vector(0to6); b=>outCircuitA(3),
s=>outComp,m=>outMux(3));
LEDG:outstd_logic_vector(8downto0));
I4:mux port map (a=>link(2),
end; b=>outCircuitA(2), utComp,m=>outMux(2));

architecture behavior of lab2 is

--signal statement

signal outComp,c1,c2,c3 : std_logic;

signaloutCircuitA:std_logic_vector(3downto0);

signaloutMux:std_logic_vector(3downto0);

42
3. Comparaison entre RTL Viewr, Post-Mapping et Post-fitting
RTLViewer

43
Post-Mapping

44
Post-Fitting

Tools – Netlist Viewers - Technologie Map Viewver (Post Fitting). Quartus crée le symbole
correspondant à la synthèse obtenue.

Ça nous permet aussi de visualiser les LOGIC_CELL et la structure logique après optimisation

45
4. Résumé : Rapport de synthèse

Flow Summary

Analysis & Synthesis Summary

46
RessourcesUtilisation

Assembler Summary

47
TimeQuest Timing Analyzer Summary

48
5 .Etapes de compilation
Après la création d’un nouveau projet sous le nom de l’entité, nous avons ajouté ce code à ce
projet.

Puis nous avons compilé ce code, afin d’avoir le résultat suivant :

Nous avons généré Le Netlist des descriptions structurées de système, le RTL Viewer, le post
Mapping et le Post fitting qu’on a vu dans la partie précédente.

49
IV. Partie 2 : Simulation

Cette manipulation sera simulée par l’outil de simulation Modélisme.

Nous avons créé un nouveau projet Modélisme, et nous avons ajouté le fichier vhdl compilé dans
la première partie contenant le code de la description VHDL.

Après la simulation voici le résultat :

Après la réussite de la compilation du


code, on a visualisé le code pour
s’assurer.

Par la suite on s’est assuré des


Entrées ET sorties.

50
On a ajouté tous les signaux à la partie Wave comme suit :

On utilise la fonction FORCE pour préciser les valeurs des entrées et tester le résultat Pour le

switch 0, qui désigne le reste, on a forcé la valeur 0

Pour le switch 2et le switch 6, on a forcé la valeur 1

Pour les autres switch (SW2 …SW9), on a forcé la valeur

51
Après la simulation, voici le résultat.

L’opération d’addition du nombre 1 avec le nombre 2 avec un reste 0 dans le cas de SW =

0001000100, on aura la LED 0 LED 1 qui seront allumées. Ce qui présente le nombre 3 en binaire,

l’afficheur HEX0 affiche le nombre 3 et l’autre afficheur HEX1 est éteint.

52
Dans le cas SW=1000000011, la sommation du nombre 8 avec le nombre 1 avec un reste de 1
on aura la LED 1 et LED 3 allumées alors on a le résultat 10 affiché.

53
Lab3 : Compteur Modulo N
Travail

54
55
I. L’objectif du TP :

L’objectif de ce TP est de proposer une architecture d’un compteur modulo N avec affichage des
résultats dans les LEDs et des afficheurs 7 segments via Quartus II d’intel-Altera et de validercette
architecture en utilisant l’outil de simulation ModelSim. Le but de la partie II est l’implémentation
embarquée de l’architecture proposée d’un compteur modulo N avec affichage des résultats dans
les LEDs et les afficheurs 7 segments.

II. Principe de fonctionnement :

Le principe de fonctionnement de ce TP est basé sur un compteur modulo N. Le compteur a


comme limite de compter de 0 à 30 selon le choix de l’utilisateur. Si le choix dépasse cette limite,
l’afficheur affiche une erreur sinon il affiche le résultat de comptage de l façon suivante :

C = XX
XX représente le résultat en décimal. En cas d’erreur

XX = Er
Le reset permet la remise à zéro du compteur.

 Le SW représente l’entrée du système ou l’utilisateur va indiquer le N à compter.


 Le reset sera un bouton Key.

56
III. Partie 1 : Compilation
1. Code VHDL
Le code VHDL que nous avons conçu pour cette manipulation est le suivant :
library IEEE;

use IEEE.std_logic_1164.all;

use IEEE.numeric_std.all;

entity LAB_3 is

port

CLOCK_50 : in std_logic;

KEY0: in std_logic;

SW : in std_logic_vector(4 downto 0);

HEX0, HEX1, HEX2,HEX3: out std_logic_vector(6 downto 0);

LEDG : out std_logic_vector(4 downto 0)

);

end entity;

architecture arc of LAB_3 is

signal q :unsigned (7 downto 0);

signal q_int :unsigned (7 downto 0);

signal tmp : unsigned (7 downto 0);

signal e :unsigned (1 downto 0);

signal err : unsigned (1 downto 0);

begin

--q_int <= "00000000";

process (CLOCK_50,KEY0,SW,q_int)

variable SW_int : integer;

variable q_int_int : integer;

begin

SW_int := to_integer(unsigned(SW));

if (SW_int < 31) and (SW_int > 0) THEN

57
e <= "00";
end if;
if KEY0 = '0' then
end if;
q_int <= (others =>'0');
end if;

HEX3 <= "1000110";


elsif rising_edge (CLOCK_50) then
HEX2 <= "0110111";
_int <= q_int + 1;
CASE affichage IS

WHEN 1 =>
q_int_int := to_integer(unsigned(q_int));
LEDG <= "11110";
if (q_int_int = SW_int) then
WHEN 2 =>
q_int <= (others =>'0');
LEDG <= "11101";

WHEN 3 =>
end if;
LEDG <= "11100";
end if;
WHEN 4 =>
elsif (SW_int >30 ) or (SW_int < 0) then
LEDG <= "11011";
e <= "11";
WHEN 5 =>
end if;
LEDG <= "11010";
end process;
WHEN 6 =>
q <= q_int;
LEDG <= "11001";
tmp <= q_int;
WHEN 7 =>
err <= e;
LEDG <= "11000";
process (tmp,err)
WHEN 8 =>
variable affichage :integer;
LEDG <= "10111";
begin
WHEN 9 =>
if ( err = "00") then
LEDG <= "10110";
affichage := to_integer(unsigned(tmp));
WHEN 10 =>
CASE affichage IS
LEDG <= "10101";
WHEN 0 | 10|20 |30 =>
WHEN 11 =>
HEX0 <= "1000000";
LEDG <= "10100";
WHEN 1 |11|21 =>
WHEN 12 =>
HEX0 <= "1111001";
LEDG <= "10011";
WHEN 2|12|22 =>
WHEN 13 =>
HEX0 <= "0100100";
LEDG <= "10010";

58
WHEN 3|13|23=> WHEN 14 =>

HEX0 <= "0110000"; LEDG <= "10001";

WHEN 4|14|24 => WHEN 15 =>

HEX0 <= "0011001"; LEDG <= "10000";

WHEN 5|15|25 => WHEN 16 =>

HEX0 <= "0010010"; LEDG <= "01111";

WHEN 17 =>

WHEN 6|16|26 => LEDG <= "00010"; LEDG <= "01110";

HEX0 <= "0000010"; WHEN 18 =>


WHEN 30 =>
WHEN 7|17|27 => LEDG <= "01101";

HEX0 <= "1111000"; WHEN 19 =>


LEDG <= "00001";
WHEN 8|18|28 => LEDG <= "01100";

WHEN OTHERS => WHEN 20 =>


HEX0 <= "0000000";

WHEN 9|19|29 => LEDG <= "01011";


LEDG <= "11111";
HEX0 <= "0010000"; WHEN 21 =>

WHEN OTHERS => END CASE; LEDG <= "01010";

HEX0 <= "1111111"; WHEN 22 =>

END CASE; LEDG <= "01001";


elsif (err = "11") then
if (affichage>0) and (affichage<10) then WHEN 23 =>
HEX0 <= "1010000";
HEX1 <= "1000000"; LEDG <= "01000";

else if (affichage>9) and (affichage<20) then HEX1 <= "0000110"; WHEN 24 =>

HEX1 <= "1111001"; LEDG <= "00111";


HEX3 <= "1000110";
else if (affichage>19) and (affichage<30) then WHEN 25 =>

HEX1 <= "0100100"; HEX2 <= "0110111"; LEDG <= "00110";

else if (affichage=30) then HEX1 <= "0110000"; WHEN 26 =>


LEDG <= "00000";
end if; LEDG <= "00101";
end if ;
WHEN 27 =>

end process;
LEDG <= "00100";
end arc;
WHEN 28 =>

LEDG <= "00011";

WHEN 29 =>

59
Après la compilation du code propose, sous Le cyclone IV E , on aye le résultat de compilation
suivant

60
2. Explication détaillée

Dans cette manipulation nous allons essayer de créer un compteur modulo N. Le N est un nombre
entier compris entre 0 et 30 entré par l’utilisateur.

Du coup, une erreur doit être déclenché une fois l’utilisateur entre une valeur hors de la marge
mentionnée

Nous avons créer pour cela une variable pour la gestion de l’erreur.

Le résultat du compteur doit être affiché sur des 7 Segments nombre par nombre selon le clock.

C = XX

If N 30 alors XX =Er

Généralement nous alons basé notre code sur un compteur asynchrone modulo 8,et on va changer
8 par la valeur entrée par l’utilisateur.

61
3. Comparaison entre RTL Viewr, Post-Mapping et Post-fitting
RTLViewer

Register Transfer Level (RTL) est une méthode de description des architectures
microélectroniques.

Dans la conception RTL, le comportement d'un circuit est défini en termes d'envois de signaux ou
de transferts de données entre registres, et les opérations logiques effectuées sur ces signaux. Le RTL
est utilisé dans les langages de description matérielle (HDL) comme Verilog et VHDL pour créer
des représentations d'un circuit à haut niveau, à partir duquel les représentations à plus bas niveau et
le câblage réel peuvent être dérivés.

Post-Mapping

62
Post-Fitting

Il est possible de voir le schéma avant et après l’intégration dans le FPGA. Tools – Netlist
Viewers - Technologie Map Viewver (Post Fitting).

Quartus crée le symbole correspondant à la synthèse obtenue.

Ça nous permet aussi de visualiser les LOGIC_CELL et r la structure logique après optimisation.

63
4. Résumé :Rapport de synthèse
Flow Summary

Analysis & Synthesis Summary

64
Fitter Summary

TimeQuest Timing Analyzer Summary

65
Assembler Summary

5. Etapes de compilation
Après la création d’un nouveau projet sous le nom de l’entité, nous avons ajouté le code à ce
projet.

Puis nous avons compilé ce code, pour finalement avoir le résultat suivant :

Nous avons générer Le Netlist des descriptions structurées de système à savoir le RTL Viewer,
le post Mapping et le Post fitting qu’on a vu dans la partie précédente.

66
IV. Partie 2: Simulation

Cette manipulation est basée sur l’outil de simulation ModelSim.

Nous avons crée un nouveau projet ModelSim, et nous avons ajouté le fichier vhdl compilé dans
la première partie contenant le code de la description VHDL.

Après la simulation voici le résultat :

Après la compilation du
code, on a visualisé le
code pour s’assurer.

Par la suite on s’est


assuré des entrées et
sorties qu’on ajouté à la
fenêtre wave pour

67
On a ajouté tout les signaux rentrée sorties à la partie Wave comme suit :

On utilise la fonction FORCE pour préciser les valeur des entrées et tester le résultat

Pour le switch , c’est l’entrée qui va prendre la valeur N préciser par l’utilisateur, alors dans la
simulation on peut la forcer à n’importe quelle valeur nous voulons, dans ce cas nous allon essayer
la valeur 3 en décimal , alors SW =00011

Le Clock sera aussi configuré.

Alors que Key est un boutton qui fait la tache du RESET A lors avant de commencer on le remet
à 0 pour initialiser le signal interne q à 0.

Puis on le remet à 1 et on observe les changements.

68
KEY = 0 SW = 00011 clock= 0101010101010101010101010100101….. err = 00

KEY = 1 SW = 00011 clock= 0101010101010101010101010100101….. err = 00

Les Afficheurs 7 segments afficheront C = XX , XX c’est la valeur en décimal

Quand le key est remis à zero, les valeurs commence à changer à chaque implusion du clock, et
il compte de 0 à 3.

69
EY = 1 SW = 11111 clock= 0101010101010101010101010100101….. err =11

Ici l’erreur = 11, alors la valeur entrée par l’utilisateur est supérieure à 30.

Alors les hex afficheront : C = ER

70
71

Vous aimerez peut-être aussi