목차
1. 연구 소개
2. 개발 내용
3. 개발 일정
4. 세부 동작
5. 문제점 및 발전 방향
첨부 : Source 파일
2. 개발 내용
3. 개발 일정
4. 세부 동작
5. 문제점 및 발전 방향
첨부 : Source 파일
본문내용
(A = 4) then
seg_out := "1001100";
elsif (A = 5) then
seg_out := "0100100";
elsif (A = 6) then
seg_out := "0100000";
elsif (A = 7) then
seg_out := "0001101";
elsif (A = 8) then
seg_out := "0000000";
else
seg_out := "0000100";
end if;
return seg_out;
end sec_dec;
signal T_min_one: integer range 0 to 9;
signal T_min_ten: integer range 0 to 5;
signal T_hou_one: integer range 0 to 9;
signal T_hou_ten: integer range 0 to 2;
begin
process(clk16m)
variable cnt : integer range 0 to 7999999;
begin
if(clk16m'event and clk16m = '1')then
cnt:= cnt+1;
if(cnt=7999999)then
cnt:=0;
clock1s<= not clock1s;
end if;
end if;
end process;
process(clock1s,reset)
variable cnt:integer range 0 to 59;
begin
if reset ='1' then
T_min_one<=0;
T_min_ten<=0;
T_hou_one<=0;
T_hou_ten<=0;
m_one<="0000000";
m_ten<="0000000";
h_one<="0000000";
h_ten<="0000000";
elsif(clock1s'event and clock1s='1')then
if(en='1')then
if (cnt = 59) then
cnt := 0;
if (T_min_one = 9)then
T_min_one <=0;
if (T_min_ten = 5)then
T_min_ten <=0;
if(T_hou_ten = 2 and T_hou_one = 3)then
T_hou_ten <=0;
T_hou_one <=0;
elsif(T_hou_one = 9) then
T_hou_one <=0;
T_hou_ten <=T_hou_ten + 1;
else T_hou_one <=T_hou_one + 1;
end if;
else T_min_ten <= T_min_ten + 1;
end if;
else T_min_one <= T_min_one + 1;
end if;
else cnt := cnt +1;
end if;
elsif(en = '0' and
mode_mo ='1' and
mode_mt ='0' and
mode_ho ='0' and
mode_ht ='0')then
if(set='0')then
T_min_one <= T_min_one + 1;
if(T_min_one = 9)then
T_min_one <= 0;
end if;
end if;
elsif(en = '0' and
mode_mt ='1' and
mode_mo ='0' and
mode_ho ='0' and
mode_ht ='0')then
if(set='0')then
T_min_ten <= T_min_ten + 1;
if(T_min_ten = 5)then
T_min_ten <= 0;
end if;
end if;
elsif(en = '0' and
mode_ho ='1' and
mode_mo ='0' and
mode_mt ='0' and
mode_ht ='0')then
if(set='0')then
T_hou_one <= T_hou_one + 1;
if(T_min_ten = 9)then
T_hou_one <= 0;
end if;
end if;
elsif(en = '0' and
mode_ht ='1' and
mode_ho ='0' and
mode_mt ='0' and
mode_mo ='0')then
if(set='0')then
T_hou_ten <= T_hou_ten + 1;
if(T_hou_ten = 2)then
T_hou_ten <= 0;
end if;
end if;
else
null;
end if;
h_ten<= sec_dec(T_hou_ten);
h_one<= sec_dec(T_hou_one);
m_ten<= sec_dec(T_min_ten);
m_one<= sec_dec(T_min_one);
end if;
end process;
end arc;
seg_out := "1001100";
elsif (A = 5) then
seg_out := "0100100";
elsif (A = 6) then
seg_out := "0100000";
elsif (A = 7) then
seg_out := "0001101";
elsif (A = 8) then
seg_out := "0000000";
else
seg_out := "0000100";
end if;
return seg_out;
end sec_dec;
signal T_min_one: integer range 0 to 9;
signal T_min_ten: integer range 0 to 5;
signal T_hou_one: integer range 0 to 9;
signal T_hou_ten: integer range 0 to 2;
begin
process(clk16m)
variable cnt : integer range 0 to 7999999;
begin
if(clk16m'event and clk16m = '1')then
cnt:= cnt+1;
if(cnt=7999999)then
cnt:=0;
clock1s<= not clock1s;
end if;
end if;
end process;
process(clock1s,reset)
variable cnt:integer range 0 to 59;
begin
if reset ='1' then
T_min_one<=0;
T_min_ten<=0;
T_hou_one<=0;
T_hou_ten<=0;
m_one<="0000000";
m_ten<="0000000";
h_one<="0000000";
h_ten<="0000000";
elsif(clock1s'event and clock1s='1')then
if(en='1')then
if (cnt = 59) then
cnt := 0;
if (T_min_one = 9)then
T_min_one <=0;
if (T_min_ten = 5)then
T_min_ten <=0;
if(T_hou_ten = 2 and T_hou_one = 3)then
T_hou_ten <=0;
T_hou_one <=0;
elsif(T_hou_one = 9) then
T_hou_one <=0;
T_hou_ten <=T_hou_ten + 1;
else T_hou_one <=T_hou_one + 1;
end if;
else T_min_ten <= T_min_ten + 1;
end if;
else T_min_one <= T_min_one + 1;
end if;
else cnt := cnt +1;
end if;
elsif(en = '0' and
mode_mo ='1' and
mode_mt ='0' and
mode_ho ='0' and
mode_ht ='0')then
if(set='0')then
T_min_one <= T_min_one + 1;
if(T_min_one = 9)then
T_min_one <= 0;
end if;
end if;
elsif(en = '0' and
mode_mt ='1' and
mode_mo ='0' and
mode_ho ='0' and
mode_ht ='0')then
if(set='0')then
T_min_ten <= T_min_ten + 1;
if(T_min_ten = 5)then
T_min_ten <= 0;
end if;
end if;
elsif(en = '0' and
mode_ho ='1' and
mode_mo ='0' and
mode_mt ='0' and
mode_ht ='0')then
if(set='0')then
T_hou_one <= T_hou_one + 1;
if(T_min_ten = 9)then
T_hou_one <= 0;
end if;
end if;
elsif(en = '0' and
mode_ht ='1' and
mode_ho ='0' and
mode_mt ='0' and
mode_mo ='0')then
if(set='0')then
T_hou_ten <= T_hou_ten + 1;
if(T_hou_ten = 2)then
T_hou_ten <= 0;
end if;
end if;
else
null;
end if;
h_ten<= sec_dec(T_hou_ten);
h_one<= sec_dec(T_hou_one);
m_ten<= sec_dec(T_min_ten);
m_one<= sec_dec(T_min_one);
end if;
end process;
end arc;