You are on page 1of 5

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY modul4 IS
PORT ( CLK ,d, s : IN STD_LOGIC;
M_US : OUT STD_LOGIC;
M_BT : OUT STD_LOGIC;
K_US : OUT STD_LOGIC;
K_BT : OUT STD_LOGIC;
H_US : OUT STD_LOGIC;
H_BT : OUT STD_LOGIC

);
END modul4;

ARCHITECTURE behavioral OF modul4 IS


TYPE state is (S1,S2,S3,S4);

SIGNAL currentstate: state;


SIGNAL C : integer;
BEGIN

PROCESS (d,CLK,s)
variable C : integer := 1;
BEGIN
IF CLK'EVENT AND CLK='1' AND d = '1' THEN
IF (C = 1) THEN
M_US <= '0';
K_US <= '1';
H_US <= '0';
M_BT <= '0';
K_BT <= '1';
H_BT <= '0';
C := C + 1;

ELSIF (C=2) THEN


M_US <= '0';
K_US <= '0';
H_US <= '0';
M_BT <= '0';

Laporan Praktikum - Laboratorium Dasar Teknik Elektro –STEI ITB


[40] K_BT <= '0';
[41] H_BT <= '0';
[42] C := C + 1;

[43] ELSIF (C=3) THEN


[44] M_US <= '0';
[45] K_US <= '1';
[46] H_US <= '0';
[47] M_BT <= '0';
[48] K_BT <= '1';

[49] H_BT <= '0';

[50] C := C + 1;
[51] ELSIF (C=4) THEN
[52] M_US <= '0';
[53] K_US <= '0';
[54] H_US <= '0';
[55] M_BT <= '0';
[56] K_BT <= '0';
[57] H_BT <= '0';
[58] C := 1;
[59]
ELSIF C>4 and d = '1' then
[60] C := 0;
[61] else
[62] currentstate <= S1;
[63]
[64] END IF;
[65]
ELSIF CLK'EVENT AND CLK='1' AND s ='1' AND d = '0' THEN
[66] CASE currentstate IS
[67]
WHEN S1 =>
[68]
IF (C<8) THEN
[69] M_US <= '1';
[70]
K_US <= '0';
[71]
H_US <= '0';
[72]
M_BT <= '0';
[73]
K_BT <= '0';
[74]
H_BT <= '1';
[75] C := C + 1;
[76] currentstate <= S1;
[77]
ELSE
[78]
currentstate <= S2;

Laporan Praktikum - Laboratorium Dasar Teknik Elektro –STEI ITB 5


[79] C := 1;
[80] END IF;
[81] WHEN S2 =>
[82] IF (C<2) THEN
[83] M_US <= '1';
[84] K_US <= '0';
[85] H_US <= '0';
[86] M_BT <= '0';
[87] K_BT <= '1';
[88] H_BT <= '0';
[89] C := C + 1;
[90] currentstate <= S2;

[91] ELSE
[92] currentstate <= S3;
[93] C := 1;
[94] END IF;
[95] WHEN S3 =>
[96] IF (C<8) THEN
[97] M_US <= '0';
[98]
K_US <= '0';
[99] H_US <= '1';
[100] M_BT <= '1';
[101] K_BT <= '0';
[102] H_BT <= '0';
[103] C := C + 1;
[104] currentstate <= S3;
[105]
ELSE
[106] currentstate <= S4;
[107] C := 1;
[108]
END IF;
[109] WHEN S4 =>
[110]
IF (C<2) THEN
[111] M_US <= '0';
[112]
K_US <= '1';
[113]
H_US <= '0';
[114]
M_BT <= '1';
[115]
K_BT <= '0';
[116] H_BT <= '0';
[117] C := C + 1;

Laporan Praktikum - Laboratorium Dasar Teknik Elektro –STEI ITB 6


[118] currentstate <= S4;
[119] ELSE
[120] currentstate <= S1;
[121] C := 1;
[122] END IF;
[123]
[124] END CASE;
[125] ELSIF CLK'EVENT AND CLK='1' AND s ='0' AND d = '0' THEN
[126] CASE currentstate IS
[127] WHEN S1 =>
[128] IF (C<4) THEN
[129] M_US <= '1';
[130] K_US <= '0';
[131] H_US <= '0';
[132] M_BT <= '0';
[133] K_BT <= '0';
[134] H_BT <= '1';
[135] C := C + 1;
[136] currentstate <= S1;
[137]
ELSE
[138] currentstate <= S2;
[139] C := 1;
[140]
END IF;
[141] WHEN S2 =>
[142]
IF (C = 1) THEN
[143] M_US <= '1';
[144]
K_US <= '0';
[145]
H_US <= '0';
[146]
M_BT <= '0';
[147]
K_BT <= '1';
[148] H_BT <= '0';
[149] C := C + 1;
[150] currentstate <= S3;
[151] C := 1;
[152]
END IF;
[153]
WHEN S3 =>
[154]
IF (C<4) THEN
[155]
M_US <= '0';
[156] K_US <= '0';

Laporan Praktikum - Laboratorium Dasar Teknik Elektro –STEI ITB 7


[157] H_US <= '1';
[158] M_BT <= '1';
[159] K_BT <= '0';
[160] H_BT <= '0';
[161] C := C + 1;
[162] currentstate <= S3;

[163] ELSE
[164] currentstate <= S4;
[165] C := 1;
[166] END IF;
[167] WHEN S4 =>
[168] IF (C=1) THEN
[169] M_US <= '0';
[170] K_US <= '1';
[171] H_US <= '0';
[172] M_BT <= '1';
[173] K_BT <= '0';
[174] H_BT <= '0';
[175]
C := C + 1;
[176] currentstate <= S1;
[177] C := 1;
[178]
END IF;
[179]
[180]
END CASE;
[181]
[182]
END IF;
[183]
END PROCESS;
END behavioral;

You might also like