Cours:TP M1102 TP 2 Corr : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
m (Exercice 2 : Transcodeur binaire 7 segments)
m (Exercice 1 : Multiplieur de deux nombres de 2 bits)
Ligne 2 : Ligne 2 :
 
=TP2=
 
=TP2=
 
==Exercice 1 : Multiplieur de deux nombres de 2 bits==
 
==Exercice 1 : Multiplieur de deux nombres de 2 bits==
 +
Si X est un nombre sur 2 bits (X1,X0)<sub>2</sub>, Y est un nombre sur 2 bits (Y1,Y0)<sub>2</sub> et enfin Z est un nombre sur 2 bits (Z3,Z2,Z1,Z0)<sub>2</sub>, alors la table de vérité est :
 
; Table de vérité
 
; Table de vérité
 
:{| border cellspacing="0" width="150"
 
:{| border cellspacing="0" width="150"
 
|- style = "background:#b3e2d1;text-align:center"
 
|- style = "background:#b3e2d1;text-align:center"
 
| colspan="4"|Entrées||colspan="4"|Sorties  
 
| colspan="4"|Entrées||colspan="4"|Sorties  
 +
|- style = "background:#b3e2d1;text-align:center"
 +
| colspan="2"|X||colspan="2"|Y||colspan="4"|Z
 
|- style="text-align:center"
 
|- style="text-align:center"
 
|'''X1'''||'''X0'''||'''Y1'''||'''Y0'''||'''Z3'''||'''Z2'''||'''Z1'''||'''Z0'''
 
|'''X1'''||'''X0'''||'''Y1'''||'''Y0'''||'''Z3'''||'''Z2'''||'''Z1'''||'''Z0'''
Ligne 41 : Ligne 44 :
 
|1||1||1||1||1||0||0||1
 
|1||1||1||1||1||0||0||1
 
|}
 
|}
 +
 
==Exercice 2 : Transcodeur binaire 7 segments==
 
==Exercice 2 : Transcodeur binaire 7 segments==
 
Si l'on vous demande de lire attentivement la première ligne de la table de vérité, c'est simplement pour vous faire constater qu'un '''zéro''' se fait en éteignant le segment 'g' et que donc pour éteindre un segment il faut lui mettre un 1 logique ce qui permet de déduire que pour allumer un segment il faut mettre un 0 logique.
 
Si l'on vous demande de lire attentivement la première ligne de la table de vérité, c'est simplement pour vous faire constater qu'un '''zéro''' se fait en éteignant le segment 'g' et que donc pour éteindre un segment il faut lui mettre un 1 logique ce qui permet de déduire que pour allumer un segment il faut mettre un 0 logique.

Version du 24 septembre 2020 à 15:12

Il s’agit d’une page protégée.

TP2

Exercice 1 : Multiplieur de deux nombres de 2 bits

Si X est un nombre sur 2 bits (X1,X0)2, Y est un nombre sur 2 bits (Y1,Y0)2 et enfin Z est un nombre sur 2 bits (Z3,Z2,Z1,Z0)2, alors la table de vérité est :

Table de vérité
Entrées Sorties
X Y Z
X1 X0 Y1 Y0 Z3 Z2 Z1 Z0
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 1 0 0 0 0 0
0 0 1 1 0 0 0 0
0 1 0 0 0 0 0 0
0 1 0 1 0 0 0 1
0 1 1 0 0 0 1 0
0 1 1 1 0 0 1 1
1 0 0 0 0 0 0 0
1 0 0 1 0 0 1 0
1 0 1 0 0 1 0 0
1 0 1 1 0 1 1 0
1 1 0 0 0 0 0 0
1 1 0 1 0 0 1 1
1 1 1 0 0 1 1 0
1 1 1 1 1 0 0 1

Exercice 2 : Transcodeur binaire 7 segments

Si l'on vous demande de lire attentivement la première ligne de la table de vérité, c'est simplement pour vous faire constater qu'un zéro se fait en éteignant le segment 'g' et que donc pour éteindre un segment il faut lui mettre un 1 logique ce qui permet de déduire que pour allumer un segment il faut mettre un 0 logique.

Table de vérité
Entrées Sorties
sw3 sw2 sw1 sw0 g f e d c b a
0 0 0 0 1 0 0 0 0 0 0
0 0 0 1 1 1 1 1 0 0 1
0 0 1 0 0 1 0 0 1 0 0
0 0 1 1 0 1 1 0 0 0 0
0 1 0 0 0 0 1 1 0 0 1
0 1 0 1 0 0 1 0 0 1 0
0 1 1 0 0 0 0 0 0 1 0
0 1 1 1 1 1 1 1 0 0 0
1 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 1 0 0 0 0
1 0 1 0 0 0 0 1 0 0 0
1 0 1 1 0 0 0 0 0 1 1
1 1 0 0 1 0 0 0 1 1 0
1 1 0 1 0 1 0 0 0 0 1
1 1 1 0 0 0 0 0 1 1 0
1 1 1 1 0 0 0 1 1 1 0

Et voici un programme VHDL de correction :

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
ENTITY transcod7segs IS PORT(
  sw : in std_logic_vector(3 downto 0);
  s7segs : out std_logic_vector(6 downto 0));
END transcod7segs;
ARCHITECTURE arch of transcod7segs IS 
BEGIN
  with sw select
             --gfedcba
    s7segs <= "1000000" when "0000",
              "1111001" when "0001",
              "0100100" when "0010",
              "0110000" when "0011",
              "0011001" when "0100",
              "0010010" when "0101",
              "0000010" when "0110",
              "1111000" when "0111",
              "0000000" when "1000",
              "0010000" when "1001",
              "0001000" when "1010",
              "0000011" when "1011",
              "1000110" when "1100",
              "0100001" when "1101",
              "0000110" when "1110",
              "0001110" when others;
END;