bonjour,je suis débutant dans le domaine de la programmation, et j'ai un mini projet qui consiste à programmer un chronomètre avec 4 afficheurs en VHDL sur le QUARTUS II.
voila à quoi j'ai pensé en premier lieu:
utilisation de 4 bascules et chacune comme étant un compteur MOD10.
corrigez moi svp,ou réorientez moi
(PS:je n'ai pas sus comment simuler aussi sur ce logiciel)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY W89 IS
PORT (H,R,H1,R1,H2,R2,H3,R3,H4,R4:I N STD_LOGIC;
QA1,QA2,QA3,QA4:OUT STD_LOGIC;
Q1,Q2,Q3,Q4:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END W89;
ARCHITECTURE A_89 OF W89 IS
SIGNAL (QA1in,QA2in,QA3in,QA4in:STD_L OGIC);
Qin1,Qin2,Qin3,Qin4:STD_LOGIC_ VECTOR(3 DOWNTO 0));
BEGIN
PROCESS(H1,R1)
BEGIN
IF R1='1' THEN Qin1<="0000";
ELSIF RINSING_EDGE(H1) THEN
IF Qin1<"1001" THEN
Qin1<=Qin1+1;
ELSE Qin1<="0000";
END IF;END IF;END PROCESS;
Q1<=Qin1;
PROCESS(H2,R2)
BEGIN
IF R2='1' THEN Qin2<="0000";
ELSIF RINSING_EDGE(H2) THEN
IF Qin2<"1001" THEN
Qin2<=Qin2+1;
ELSE Qin2<="0000";
END IF;END IF;END PROCESS;
Q2<=Qin2;
PROCESS(H3,R3)
BEGIN
IF R3='1' THEN Qin3<="0000";
ELSIF RINSING_EDGE(H3) THEN
IF Qin3<"1001" THEN
Qin3<=Qin3+1;
ELSE Qin3<="0000";
END IF;END IF;END PROCESS;
Q3<=Qin3;
PROCESS(H4,R4)
BEGIN
IF R4='1' THEN Qin4<="0000";
ELSIF RINSING_EDGE(H4) THEN
IF Qin4<"1001" THEN
Qin4<=Qin4+1;
ELSE Qin4<="0000";
END IF;END IF;END PROCESS;
Q4<=Qin4;
PROCESS(H,R)
BEGIN
IF R='1' THEN QA1in<='0';
ELSIF FALLING_EDGE(H)THEN
QA1in<=NOT(QA1in);
END IF;END PROCESS;
PROCESS(QA1in,R)
BEGIN
IF R='1' THEN QA2in<='0';
ELSIF FALLING_EDGE(QA1iN)THEN
QA2in<=NOT(QA2in);
END IF;END PROCESS;
PROCESS(QA2in,R)
BEGIN
IF R='1' THEN QA3in<='0';
ELSIF FALLING_EDGE(QA2in)THEN
QA3in<=NOT(QA3in);
END IF;END PROCESS;
PROCESS(QA3in,R)
BEGIN
IF R='1' THEN QA4in<='0';
ELSIF FALLING_EDGE(QA3in)THEN
QA4in<=NOT(QA4in);
END IF;END PROCESS;
QA1<=QA1in;
QA2<=QA2in;
QA3<=QA3in;
QA4<=QA4in;
END A_W89;
-----