programme.py

Created by mailystrehel

Created on May 11, 2023

9.05 KB


Exercice 2: compteur binaire 4 bits à remise à zéro asynchrone et validation de comptage synchrone et retenue.
Ecrire lentité et larchitecture dun compteur décimal 4 bits (de sortie count) à remise à zéro (raz) asynchrone active à 1. Le comptage est rendu possible lorsque le signal enable est actif. Un signal de sortie carry (à traiter) permet le chaînage de plusieurs compteurs élémentaires pour la réalisation d'un compteur multi digits comme sur le schéma complet. 

Question : entité et architecture du compteur. 
entity counter is
Port ( clk : in STD_LOGIC; 
raz : in STD_LOGIC;
enable : in STD_LOGIC;
count : out STD_LOGIC_VECTOR (3 downto 0); 
carry : out STD_LOGIC); 
end counter; 

architecture Behavioral of counter is
constant cntmax : std_logic_vector (3 downto 0):= "1001";
signal cnt : std_logic_vector (3 downto 0);
begin 

process (clk,raz)
begin 
if raz='1' then
cnt <= ( others => '0'); 
elsif clk'event and clk='1' then
if enable = '1' then 
if cnt < cntmax then
cnt <= cnt+1; 
else 

cnt <= ( others => '0'); 
end if;end if; 
end if; 

end process;count <= cnt;carry <= '0' when cnt<cntmax else '1';
end Behavioral; 

Exercice 4: multiplexeur de signaux mux4_4.Ecrire lentité et larchitecture du composant mux4_4 utilisé sur le schéma. Le vecteur de sortie dépendra de 
la valeur du vecteur de commande. 

entity mux4_4 isPort ( cde : in STD_LOGIC_VECTOR (1 downto 0); 
in_0 : in STD_LOGIC_VECTOR (3 downto 0);in_1 : in STD_LOGIC_VECTOR (3 downto 0);in_2 : in STD_LOGIC_VECTOR (3 downto 0);in_3 : in STD_LOGIC_VECTOR (3 downto 0); mux_out : out STD_LOGIC_VECTOR (3 downto 0)); 
end mux4_4;
architecture Behavioral of mux4_4 is 
beginwith cde selectmux_out <= in_0 when "00", 

in_1 when "01", 
in_2 when "10",
in_3 when "11",
"1111" when others; 
end Behavioral; 

Exercice 5 : regroupement de composants sous forme textuelle.Regroupement des composants counter sous forme textuelle dans l'objectif d'utiliser ce nouveau composant dans le schéma en remplacement des compteurs simples. 
Question : regroupement de compteurs en VHDL.Ecrire le code VHDL (entité et architecture) d' un compteur de 0 à 999 regroupant les 3 compteurs du schéma avec leurs interconnexions.
Vous déclarerez les signaux nécessaires au câblage interne. On supposera qu’une bibliothèque a permis la déclaration du composant counter (ne pas le déclarer juste l'instancier). 
entity is ....... 

entity counter_0_999 isPort ( clk : in STD_LOGIC; 
raz : in STD_LOGIC;enable : in STD_LOGIC;count_u, count_d, count_c,: out STD_LOGIC_VECTOR (3 downto 0); 
carry : out STD_LOGIC);
end counter_0_999 ; 

architecture arch of counter_0_999 issignal carry_u, carry_d : std_logic;beginC1: counter port map(clk ,raz, enable, count_u , carry_u);
C2: counter port map(clk ,raz, carry_u, count_d , carry_d);
C3: counter port map(clk ,raz, carry_d, count_c, carry );
end; 


Question a: rôle de la porte logique ou. 
Donner le rôle de la porte ou dans le schéma complet.La porte ou permet de remettre à 0 les compteurs lors du raz mais aussi lors du déclenchement d'une 
nouvelle mesure. 

Question b: rôle du composant clkgen_meas
Donner le rôle du composant clkgen_meas dans le schéma complet. 
La sortie de ce composant dépend de l'unité de mesure choisie. Il va permettre de générer une horloge adaptée à cette unité de mesure. L'exploitation du compteur étant directe lors de l'affichage, on peut en déduire que l''horloge de comptage vaut 58μs pour des unités en cm et 143μs pour des unités en inch. 


Exercice 2: compteur binaire 76 bits à remise à zéro et validation de comptage synchrones. 
Ecrire lentité et larchitecture dun compteur binaire 7 6bits (de sortie count) à remise à zéro (raz) synchrone active à 1. Le comptage est rendu possible lorsque le signal enable est actif et le compteur doit s'arrêter à son maximum. 
NOTE : un compeur 6 pour coller au schéma ou 7 bit comme demandé est accepté 
Question : entité et architecture du compteur. 

entity counter is
Port ( clk : in STD_LOGIC; 
raz : in STD_LOGIC;
enable : in STD_LOGIC;
count : out STD_LOGIC_VECTOR (5 downto 0)); 
end counter; 

architecture Behavioral of counter is
constant cntmax : std_logic_vector (5 downto 0):= "111111";
signal cnt : std_logic_vector (5 downto 0);
begin 

process (clk)
begin 
if clk'event and clk='1' then
if raz='1' then 
cnt <= ( others => '0');
elsif enable = '1' then 
if cnt < cntmax then
cnt <= cnt+1; 
end if; 
end if;end if; 
end process;
count <= cnt;
end Behavioral; 
end Behavioral; 


Exercice 3 : générateur de parité paire ou impaire.Les générateurs de parité sont des éléments électroniques utilisés dans certains types de communications pour détecter des erreurs de transmissions. 
Question : donner lentité et larchitecture dun générateur de parité paire ou impaire selon l'état du signal ptype (1=> impaire). Le générateur traite un vecteur de 6 bits (data) et fournit le résultat pbit sur un front descendant de la commande pcheck. 
Notes :
Parité paire : le nombre de bits à 1 y compris le bit de parité doit être paire.
Parité impaire : le nombre de bits à 1 y compris le bit de parité doit être impaire.
L'utilisation d'un opérateur ou exclusif s'avère efficace. 

entity parity_gen isPort ( data : in STD_LOGIC_VECTOR (5 downto 0); 
raz : in STD_LOGIC;
ptype : in STD_LOGIC; 
pcheck : in STD_LOGIC; 
pbit : out STD_LOGIC);
end parity_gen; 

architecture Behavioral of parity_gen is
signal psig : std_logic; 
beginprocess (pcheck)variable pvar : std_logic; 

begin 
if pcheck'event and pcheck='0' then
pvar := data(5) xor data(4) xor data(3) xor data(2) xor data(1) xor data(0);
psig <= pvar; 
end if;
end process; 

pbit <= '0' when raz='1' else
psig when ptype='0' else not psig; 
end Behavioral; 


Exercice 4: synchronisation de signaux externes.
Ecrire l’entité et l’architecture d'un composant sync_inp destiné à synchroniser sur front montant d'horloge 
les informations provenant des entrées externes.
Il s'agit d'un verrou comme indiqué en cours de contrôle. 

entity synch_inp is
Port ( clk : in STD_LOGIC; 
async_i : in STD_LOGIC;
sync_o : out STD_LOGIC); 
end synch_inp;

architecture Behavioral of synch_inp is 
begin
process (clk)
begin 
if clk'event and clk='1' then
sync_o <= async_i; 
end if;
end process; 
end Behavioral; 


Exercice 5 : architecture complète sous forme textuelle. Représenter le schéma fourni sous forme d'une description VHDL textuelle. 
Question : implémentation en VHDL du système
Ecrire le code VHDL (entité et architecture) correspondant au système complet.
Vous déclarerez les signaux nécessaires au câblage interne. On supposera qu’une bibliothèque a permis la déclaration des composants internes (pas de déclaration de composant). 

entity SCHEMA is
port ( as_pulse : in std_logic; 
BTN0 : in std_logic; 
clk : in std_logic;
reset : in std_logic;
SW0 : in std_logic; 
count  : out std_logic_vector (5 downto 0); 
DEL6 : out std_logic; 
DEL7  : out  std_logic); 
end SCHEMA; 

architecture BEHAVIORAL of SCHEMA is 
signal XLXN_6 : std_logic;
signal XLXN_9 : std_logic;
signal XLXN_18 : std_logic;
signal XLXN_20 : std_logic;
signal XLXN_37 : std_logic;
signal count_DUMMY : std_logic_vector (5 downto 0);

begin
count(5 downto 0) <= count_DUMMY(5 downto 0);

XLXI_1 : machine     port map (clk=>clk, read_p=>XLXN_6, RESET=>reset, syncpulse=>XLXN_9, 
en_cnt=>XLXN_37, pulse_end=>DEL7, raz_cnt=>XLXN_20); 

XLXI_2 : synch_inp   port map (async_i=>BTN0, clk=>clk, sync_o=>XLXN_6); 

XLXI_4 : synch_inp   port map (async_i=>as_pulse, clk=>clk, sync_o=>XLXN_9); 

XLXI_5 : diviseur  port map (clki=>clk, clko=>XLXN_18); 

XLXI_7 : counter port map (clk=>XLXN_18, enable=>XLXN_37, raz=>XLXN_20, count(5 downto 0) => count_DUMMY (5 downto 0)); 

XLXI_8 : parity_gen port map (data(5 downto 0)=>count_DUMMY(5 downto 0), pcheck=>XLXN_37, ptype=>SW0, raz=>reset, pbit=>DEL6); 

end BEHAVIORAL; 


Exercice 2: compteur binaire 4 bits à remise à zéro synchrone et entrée de validation (3 questions) 
Ecrire l’entité et l’architecture d’un compteur binaire à remise à zéro SCLR synchrone active à 1. La valeur du compteur est incrémentée à chaque front montant de l’horloge clk. Une sortie Cout indiquera, lorsqu’elle est à 1, que le compteur a atteint sa valeur maximale (la valeur du compteur n’est pas sortie). L’entrée ENA active à 0 permet au compteur de fonctionner (bloqué si = 1). 
Question a : rôle de la porte logique xor. 
Donner l’explication fonctionnelle de la présence de la porte logique vis-à-vis du bouton et du compteur. 

La porte XOR est là pour provoquer le RAZ du compteur si les bascules FF1 et FF2 délivrent une sortie différente l'une de l'autre (correspond à un changement d'état du bouton poussoir). 

Question b : une question de timing. 
En considérant que lhorloge du FPGA fonctionne à 50MHz, quelle doit être la taille du compteur pour obtenir un filtrage voisin de 10ms. Vous donnerez aussi la valeur obtenue à 0,1 ms près. 
2^n =50*10^6/100=500000 
Log2 2n = n = log2 500000 = ln (500000)/ln (2)  18.93La valeur entière la plus proche est donc n=19 la période obtenue sera voisine de 9,5 ms 

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our cookies policy.