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

De troyesGEII
Aller à : navigation, rechercher
m (Question 3)
m (Exercice 2)
Ligne 118 : Ligne 118 :
  
 
==Exercice 2==
 
==Exercice 2==
 +
; Table de vérité
 +
:{| border cellspacing="0" width="150"
 +
|- style = "background:#b3e2d1;text-align:center"
 +
| colspan="4"|Entrées||colspan="1"|Sortie
 +
|- style="text-align:center"
 +
|'''d'''||'''c'''||'''b'''||'''a'''||'''v'''
 +
|- style="text-align:center"
 +
|0||0||0||0||0
 +
|- style="text-align:center"
 +
|0||0||0||1||0
 +
|- style="text-align:center"
 +
|0||0||1||0||0
 +
|- style="text-align:center"
 +
|0||0||1||1||0
 +
|- style="text-align:center"
 +
|0||1||0||0||0
 +
|- style="text-align:center"
 +
|0||1||0||1||0
 +
|- style="text-align:center"
 +
|0||1||1||0||0
 +
|- style="text-align:center"
 +
|0||1||1||1||1
 +
|- style="text-align:center"
 +
|1||0||0||0||0
 +
|- style="text-align:center"
 +
|1||0||0||1||1
 +
|- style="text-align:center"
 +
|1||0||1||0||1
 +
|- style="text-align:center"
 +
|1||0||1||1||1
 +
|- style="text-align:center"
 +
|1||1||0||0||1
 +
|- style="text-align:center"
 +
|1||1||0||1||1
 +
|- style="text-align:center"
 +
|1||1||1||0||1
 +
|- style="text-align:center"
 +
|1||1||1||1||1
 +
|}

Version du 23 septembre 2020 à 17:57

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

M1102 : TP1 : solutions

Exercice 0

Avec deuxième fichier pour les contraintes

library ieee;
use ieee.std_logic_1164.all;
--use ieee.std_logic_arith.all;
--use ieee.std_logic_unsigned.all;

entity exo0tp1 is port (
  e0,e1 : IN std_logic;
  s_et,s_ou : OUT std_logic);
END entity;

ARCHITECTURE behavior OF exo0tp1 IS
  SIGNAL s_e,s_s: std_logic_vector(1 downto 0);
BEGIN
  s_e <= e1 & e0; -- A retenir : manière de regrouper des signaux
  s_et <= s_s(1);
  s_ou <= s_s(0);
  WITH s_e SELECT
    s_s <= "00" WHEN "00",
           "01" WHEN "01",
           "01" WHEN "10",
           "11" WHEN others;
END behavior;

et le fichier de contrainte :

To,Direction,Location,I/O Bank,VREF Group,Fitter Location,I/O Standard,Reserved,Current Strength,Slew Rate,Differential Pair,Strict Preservation
e0,Unknown,PIN_C10,7,B7_N0,PIN_C10,3.3-V LVTTL,,,,,
e1,Unknown,PIN_C11,7,B7_N0,PIN_C11,3.3-V LVTTL,,,,,
s_et,Unknown,PIN_A8,7,B7_N0,PIN_A8,3.3-V LVTTL,,,,,
s_ou,Unknown,PIN_A9,7,B7_N0,,3.3-V LVTTL,,,,,

Avec les contraintes dans le fichier VHDL

library ieee;
use ieee.std_logic_1164.all;
--use ieee.std_logic_arith.all;
--use ieee.std_logic_unsigned.all;

entity exo0tp1 is port (
  e0,e1 : IN std_logic;
  s_et,s_ou : OUT std_logic);
END entity;

ARCHITECTURE behavior OF exo0tp1 IS
  SIGNAL s_e,s_s: std_logic_vector(1 downto 0);
  attribute chip_pin : string;
  attribute chip_pin of e0 : signal is "c10";
  attribute chip_pin of e1 : signal is "c11";
  attribute chip_pin of s_et : signal is "a8";
  attribute chip_pin of s_ou : signal is "a9";
BEGIN
  s_e <= e1 & e0; -- A retenir : manière de regrouper des signaux
  s_et <= s_s(1);
  s_ou <= s_s(0);
  WITH s_e SELECT
    s_s <= "00" WHEN "00",
           "01" WHEN "01",
           "01" WHEN "10",
           "11" WHEN others;
END behavior;

Exercice 1

Question 1

Table de vérité
Entrées Sorties
e2 e1 e0 a b s
0 0 0 0 1 1
0 0 1 0 1 1
0 1 0 0 1 1
0 1 1 1 1 1
1 0 0 0 0 0
1 0 1 0 0 0
1 1 0 0 0 0
1 1 1 1 0 1

Question 2 : Équation en VHDL

Voici l'équation logique simplifiée : y = e2.e1.e0 + /e2.

Se rappeler qu'il n'y a pas de priorité des opérateurs en VHDL contrairement à l'algèbre de Boole, ce qui impose l'usage de parenthèses pour expliciter les priorités.

Voici comment s'écrit l'équation en VHDL. On vous laisse écrire l'entité et l'architecture.

s <= (e2 and e1 and e0) or (not e2);

Question 3

Complétez tout ceci pour avoir l'architecture et l'entité :

  signal a : std_logic_vector(2 downto 0);
begin
  a <= e2 & &e1 & e0;
  with a select
    s <= '0' when "100" | "101" | "110",
         '1' when others;
-- plus efficace que le listing équivalent à la table de vérité

Exercice 2

Table de vérité
Entrées Sortie
d c b a v
0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
0 1 0 1 0
0 1 1 0 0
0 1 1 1 1
1 0 0 0 0
1 0 0 1 1
1 0 1 0 1
1 0 1 1 1
1 1 0 0 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1