You are on page 1of 3

V s khi (khng cn bng trng thi). Vit chng trnh m t. m.

m. Bi tp mu: Bi 1 (4) : Vit chng trnh m t mch iu khin 16 led sng dn t phi sang tri, tri sang phi, t ngoi vo trong, t trong ra ngoi. C s (gii thch thm, khng lm trong bi thi): Phi sang tri : 32 xung CK 0 => 31 Tri sang phi : 32 xung CK 32 => 63 T ngoi vo trong : 16 xung CK 64 => 79 T trong ra ngoi : 16 xung CK 80 => 95 Tng cng : 96 xung CK => reset sau 96 xung. S khi:

Chng trnh: ENTITY BAI1 IS PORT (CK, CLR : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)) ; END BAI1; ARCHITECTURE BAI1_STD OF BAI1 IS BEGIN PROCESS (CK, CLR) VARIABLE QT : STD_LOGIC_VECTOR(15 DOWNTO 0) ; VARIABLE I : INTEGER; BEGIN IF CLR = 0 THEN I = 0; QT = X 0000 ; ELSIF CKEVENT AND CK = 1 THEN IF I < 32 THEN QT := QT(14 DOWNTO 0) & NOT QT(15) ; ELSIF (I >= 32) AND (I < 64) THEN QT := NOT QT(0) & QT(15 DOWNTO 1) ; ELSIF (I >= 64) AND (I < 80) THEN QT(15 DOWNTO 8) := NOT QT(8) & QT(15 DOWNTO 9) ; QT( 7 DOWNTO 0) := QT(6 DOWNTO 1) & NOT QT(7) ; ELSE QT(15 DOWNTO 8) := QT(14 DOWNTO 8) & NOT QT(15) ; QT( 7 DOWNTO 0) := NOT QT(0) & QT(7 DOWNTO 1) ; END IF; IF I = 96 THEN I := 0 ;

ELSE I := I + 1 ; END IF ; END IF ; Q <= QT ; END PROCESS ; END BAI1_STD ; Lu : X 0000 c ngha l s hex 0000, tng ng vi s nh phn 16 bit, ch dng s hex khi s bit bi yu cu (s led) chia ht cho 4. 0000h = 0000 0000 0000 0000b Nu bi yu cu mt s khng chia ht cho 4, chng hn nh 18 th ch QT = X 0000 phi thay bng s nh phn 18 bit : QT = 000000000000000000 , v cc thng s ca QT bn trong lnh IF cng thay i tng ng. Bi 2 (4): Vit chng trnh m t mch m t 0 n 65, hin th trn 2 led 7 on. C s (gii thch thm, khng lm trong bi thi): m t 0 => 65 mt 66 xung CK, mi trng thi phi gii m v xut ra led 7 on. Reset sau 66 xung CK. S khi:

Chng trnh: ENTITY BAI2 IS PORT (CK, CLR : IN STD_LOGIC ; QDV, DCH : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)) ; END BAI2 ; ARCHITECTURE BAI2_DEM65 OF BAI2 IS BEGIN PROCESS (CK, CLR) VARIABLE DV, CH : INTEGER ; BEGIN IF CK = 0 THEN DV := 0 ; CH := 0 ; IF CKEVENT AND CK = 1 THEN DV := DV + 1 ; IF DV = 6 AND CH = 6 THEN DV := 0 ; CH :=0 ; ELSIF DV := 10 THEN DV := 0 ; CH := CH + 1 ; END IF ;

END IF ; CASE DV IS WHEN 0 => QDV <= X C0 ; //s 0 WHEN 1 => QDV <= X F9 ; //s 1 WHEN 2 => QDV <= X A4 ; //s 2 WHEN 3 => QDV <= X B0 ; //s 3 WHEN 4 => QDV <= X 99 ; //s 4 WHEN 5 => QDV <= X 92 ; //s 5 WHEN 6 => QDV <= X 82 ; //s 6 WHEN 7 => QDV <= X F8 ; //s 7 WHEN 8 => QDV <= X 80 ; //s 8 WHEN 9 => QDV <= X 90 ; //s 9 WHEN OTHERS => QDV <= X FF ; //tt led END CASE ; CASE CH IS WHEN 0 => QCH <= X C0 ; WHEN 1 => QCH <= X F9 ; WHEN 2 => QCH <= X A4 ; WHEN 3 => QCH <= X B0 ; WHEN 4 => QCH <= X 99 ; WHEN 5 => QCH <= X 92 ; WHEN 6 => QCH <= X 82 ; WHEN 7 => QCH <= X F8 ; WHEN 8 => QCH <= X 80 ; WHEN 9 => QCH <= X 90 ; WHEN OTHERS => QCH <= X FF ; END CASE ; END PROCESS ; END BAI2_DEM65 ; __________________

You might also like