Exercice2:compteurbinaire4bitsàremiseàzéroasynchroneetvalidationdecomptagesynchroneetretenue.Ecrirel’entitéetl’architectured’uncompteurdécimal4bits (desortiecount)àremiseàzéro (raz)asynchroneactiveà1.Lecomptageestrendupossiblelorsquelesignalenableestactif.Unsignaldesortiecarry (àtraiter)permetlechaînagedeplusieurscompteursélémentairespourlaréalisationd'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'eventandclk='1'thenifenable='1'thenifcnt<cntmaxthencnt<=cnt+1;elsecnt<=(others=>'0');endif;endif;endif;endprocess;count<=cnt;carry<='0'whencnt<cntmaxelse'1';endBehavioral;Exercice4:multiplexeurdesignauxmux4_4.Ecrirel’entitéetl’architectureducomposantmux4_4utilisésurleschéma.Levecteurdesortiedépendradelavaleurduvecteurdecommande.entitymux4_4isPort (cde:inSTD_LOGIC_VECTOR (1downto0);in_0:inSTD_LOGIC_VECTOR (3downto0);in_1:inSTD_LOGIC_VECTOR (3downto0);in_2:inSTD_LOGIC_VECTOR (3downto0);in_3:inSTD_LOGIC_VECTOR (3downto0);mux_out:outSTD_LOGIC_VECTOR (3downto0));endmux4_4;architectureBehavioralofmux4_4isbeginwithcdeselectmux_out<=in_0when"00",in_1when"01",in_2when"10",in_3when"11","1111"whenothers;endBehavioral;Exercice5:regroupementdecomposantssousformetextuelle.Regroupementdescomposantscountersousformetextuelledansl'objectif d'utilisercenouveaucomposantdansleschémaenremplacementdescompteurssimples.Question:regroupementdecompteursenVHDL.EcrirelecodeVHDL (entitéetarchitecture)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).entityis.......entitycounter_0_999isPort (clk:inSTD_LOGIC;raz:inSTD_LOGIC;enable:inSTD_LOGIC;count_u,count_d,count_c,:outSTD_LOGIC_VECTOR (3downto0);carry:outSTD_LOGIC);endcounter_0_999;architecturearchofcounter_0_999issignalcarry_u,carry_d:std_logic;beginC1:counterportmap(clk,raz,enable,count_u,carry_u);C2:counterportmap(clk,raz,carry_u,count_d,carry_d);C3:counterportmap(clk,raz,carry_d,count_c,carry);end;Questiona:rôledelaportelogiqueou.Donnerlerôledelaporteoudansleschémacomplet.Laporteoupermetderemettreà0lescompteurslorsdurazmaisaussilorsdudéclenchementd'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édemesurechoisie.Ilvapermettredegénérerunehorlogeadaptéeàcetteunitédemesure.L'exploitation du compteur étant directe lors de l'affichage,onpeutendéduirequel''horlogedecomptagevaut58μspourdesunitésencmet143μspourdesunitéseninch.Exercice2:compteurbinaire76bitsàremiseàzéroetvalidationdecomptagesynchrones.Ecrirel’entitéetl’architectured’uncompteurbinaire76bits (desortiecount)àremiseàzéro (raz)synchroneactiveà1.Lecomptageestrendupossiblelorsquelesignalenableestactifetlecompteurdoits'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'eventandclk='1'thenifraz='1'thencnt<=(others=>'0');elsifenable='1'thenifcnt<cntmaxthencnt<=cnt+1;endif;endif;endif;endprocess;count<=cnt;endBehavioral;endBehavioral;Exercice3:générateurdeparitépaireouimpaire.Lesgénérateursdeparitésontdesélémentsélectroniquesutilisésdanscertainstypesdecommunicationspourdétecterdeserreursdetransmissions.Question:donnerl’entitéetl’architectured’ungénérateurdeparitépaireouimpaireselonl'é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'utilisationd'un opérateur ou exclusif s'avèreefficace.entityparity_genisPort (data:inSTD_LOGIC_VECTOR (5downto0);raz:inSTD_LOGIC;ptype:inSTD_LOGIC;pcheck:inSTD_LOGIC;pbit:outSTD_LOGIC);endparity_gen;architectureBehavioralofparity_genissignalpsig:std_logic;beginprocess (pcheck)variablepvar:std_logic;beginifpcheck'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'uncomposantsync_inpdestinéàsynchronisersurfrontmontantd'horloge
les informations provenant des entrées externes. Il s'agitd'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'eventandclk='1'thensync_o<=async_i;endif;endprocess;endBehavioral;Exercice5:architecturecomplètesousformetextuelle.Représenterleschémafournisousformed'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'unedel'autre (correspond à un changement d'étatduboutonpoussoir).Questionb:unequestiondetiming.Enconsidérantquel’horlogeduFPGAfonctionneà50MHz,quelledoitêtrelatailleducompteurpourobtenirunfiltragevoisinde10ms.Vousdonnerezaussilavaleurobtenueà0,1msprès.2^n=50*10^6/100=500000Log22n=n=log2500000=ln (500000)/ln (2)≈18.93Lavaleurentièrelaplusprocheestdoncn=19lapériodeobtenueseravoisinede9,5ms
During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:
Ensure the proper functioning of the site (essential cookies); and
Track your browsing to send you personalized communications if you have created a professional account on the site and can be contacted (audience measurement cookies).
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.