Vous êtes sur la page 1sur 7

ECOLE NATIONALE POLYTECHNIQUE

1° ANNEE ELN
Modélisation et Synthèse de Circuits Logiques

1° Année Approche RTL


Série d’Exercices
Exercice 1
1- Dresser la table de vérité du circuit ci bas, les entrées Réponse
étant les signaux de contrôle, et la sortie est le signal
output, exprimés en fonction des Di

2- Décrire en Vhdl de ce chemin de données


Exercice 2
Réaliser un chemin de données qui exécute l’algorithme ci après en utilisant un seul additionneur/soustracteur
pour effectuer toutes les opérations. Définir clairement les signaux d’état et de contrôle.
ALGORITHME
w =0
x =0
y =0
INPUT z
WHILE (z ≠ 0)
{ w = w –2
IF (z is an odd number) THEN
x = x +2 ELSE
y = y +1
END
z = z –1 }

Exercice 3
Concevoir un chemin de données 4 bits pour implémenter l’algorithme ci-après en utilisant un seul
additionneur pour effectuer toutes les opérations, définir tous les signaux d’état et de contrôle.
Algorithme
s1=0;
s2=0;
FOR(i=0; i≠10; i++)
{ INPUT j;
IF (j is even) THEN
s1++;
ENP/ ELN/ 1 Année Modélisation et Synthèse de Circuits Logiques MSCL
Taghi Serie de TD N°6 Page 1
ELSE s2++;
END IF }
OUTPUT s1;
OUTPUT s2;

Exercice 4
Concevoir un processeur spécifique qui réalise l’algorithme ci après :
Algorithme Unité de Contrôle
1 INPUT A
2IF(A = 5) THEN
3 B =8
4 ELSE
5 B =13
6 END IF
7 OUTPUT B
Chemin de données

Exercice 5
Réaliser un processeur 4 bit pour générer et afficher les nombres de 1 à 10
Algorithme Signaux de contrôle
1 i =0
2 WHILE (i ≠ 10){
3 i = i +1
4 OUTPUT i
5}
Chemin de données
Fsm

ENP/ ELN/ 1 Année Modélisation et Synthèse de Circuits Logiques MSCL


Taghi Serie de TD N°6 Page 2
Exercice 6
Réaliser un processeur 8 bits pour calculer la Somme 1+2+...+n et l’afficher
Algorithme
1 sum =0
2 INPUT n
3 WHILE (n ≠ 0){
4 sum = sum + n
5 n = n -1
6}
7 OUTPUT sum
Datapath

Exercice 7
Réaliser un processeur 8 bits pour calculer la factorielle de n (n!=1.2.3…n)
Algorithme
INPUT n
2 product =1
3 WHILE (n >1){
4 product = product * n
5 n = n –1
} 6 OUTPUT product

- Proposer la machine d’état qui régit l’unité de contrôle du


processeur

ENP/ ELN/ 1 Année Modélisation et Synthèse de Circuits Logiques MSCL


Taghi Serie de TD N°6 Page 3
Exercice 8
Réaliser un processeur pour le calcul du PGCD DE 2 ENTIERS NON SIGNES codés sur 8 BITS
Algorithme Chemin de données
1 input X
2 input Y
3 while (X ≠ Y){
4if(X > Y) then
5 X = X - Y
6 else
7 Y = Y - X
8 end if
9}
10 output X
Mots de contrôle

FSM PROCESSEUR

Exercice 9
Modifier le processeur PGCD en utilisant 2 soustracteurs
Chemin de données

ENP/ ELN/ 1 Année Modélisation et Synthèse de Circuits Logiques MSCL


Taghi Serie de TD N°6 Page 4
Exercice 10
Concevoir un Processeur calculant la somme ∑x, x étant des nombres codés sur 8 bits reçus en
entrée. x#0
l’arrêt de la sommation aura lieu si un ‘0’ se présente à l’entrée
ALGORITHME
1 Sum =0
2 begin loop
3 input X
4 Sum = Sum + X
5if(X = 0) then
6 exit loop
7 end if
8 output X
9 end loop
10 output Sum
Mots de contrôle

FSM

Interface du processeur dans le kit FPGA

ENP/ ELN/ 1 Année Modélisation et Synthèse de Circuits Logiques MSCL


Taghi Serie de TD N°6 Page 5
Exercice 11 Comptage du nombre de 0 et de 1
Construire un chemin de données de taille 8 bits d’un circuit qui affiche 1 si le nombre reçu en
entrée (8 bits), possède autant de 0 que de 1 sinon le circuit affichera 0. ( par exemple, le nombre
10111011 aura en sortie 0; tandis que pour 10100011 ,la sortie sera 1.)
Algorithme
INPUT n
countbit = 0
counteight = 0
WHILE (counteight ≠ 8)
{ IF (n= 1) THEN
countbit = countbit + 1
ELSE countbit = countbit –1
END IF
n = n >> 1
counteight = counteight +1; }
IF (countbit = 0) THEN
OUTPUT 1
ELSE OUTPUT 0
END IF
Done

Code Vhdl du datapath


LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY Datapath IS
PORT ( Clock: IN STD_LOGIC;
-- primary datapath input
Input: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
-- control signals
nLoad: IN STD_LOGIC;
nShift: IN STD_LOGIC;
eightCount: IN STD_LOGIC;
Clear: IN STD_LOGIC;
bitCount: IN STD_LOGIC;
Down: IN STD_LOGIC;
OutDone: IN STD_LOGIC;
-- status signals
eq8: OUT STD_LOGIC;
N0eq1: OUT STD_LOGIC;
-- primary datapath output
Count: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -- for debug
Done: OUT STD_LOGIC;
Output: OUT STD_LOGIC);
END Datapath;
ARCHITECTURE Structural OF Datapath IS
COMPONENT shiftreg
PORT (
Clock: IN STD_LOGIC;
SHSel: IN STD_LOGIC_VECTOR(1 DOWNTO 0);
D: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
Q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END COMPONENT;
COMPONENT counter
PORT ( Clock: IN STD_LOGIC;

ENP/ ELN/ 1 Année Modélisation et Synthèse de Circuits Logiques MSCL


Taghi Serie de TD N°6 Page 6
Clear: IN STD_LOGIC;
Count: IN STD_LOGIC;
Down: IN STD_LOGIC;
Q: OUT INTEGER RANGE 0 TO 15);
END COMPONENT;
SIGNAL SHSel: STD_LOGIC_VECTOR(1 DOWNTO 0);
SIGNAL ShiftOut: STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL CountbitOut: INTEGER RANGE 0 TO 15;
SIGNAL CounteightOut: INTEGER RANGE 0 TO 15;
SIGNAL Equal: STD_LOGIC; SIGNAL Up: STD_LOGIC;
BEGIN
SHSel <= nShift & nLoad;
U0: shiftreg PORT MAP(Clock,SHSel,Input,ShiftOut);
N0eq1 <= ShiftOut(0);
-- counteight
Up <= '0';
U1: counter PORT MAP(Clock,Clear,eightCount,Up,CounteightOut);
eq8 <= '1' WHEN CounteightOut = 8 ELSE '0';
Count <= CONV_STD_LOGIC_VECTOR(CounteightOut, 4);-- for debug
--countbit
U2: counter PORT MAP(Clock,Clear,bitCount,Down,CountbitOut); Equal <= '1'
WHEN CountbitOut = 0 ELSE '0';
Output <= Equal WHEN OutDone = '1' ELSE 'Z';
Done <= OutDone;
END Structural;

ENP/ ELN/ 1 Année Modélisation et Synthèse de Circuits Logiques MSCL


Taghi Serie de TD N°6 Page 7