vhdl 디지털시계(stop_watch,시계.도트매트릭스,lcd)소스 완벽~
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
해당 자료는 10페이지 까지만 미리보기를 제공합니다.
10페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

vhdl 디지털시계(stop_watch,시계.도트매트릭스,lcd)소스 완벽~에 대한 보고서 자료입니다.

본문내용

ntity div1 is
port(
clk: in std_logic;
in_data: in integer range 0 to 999;
o_data: out std_logic_vector(15 downto 0);
--o_data_100: out std_logic_vector(3 downto 0);
--o_data_10: out std_logic_vector(3 downto 0);
--o_data_1: out std_logic_vector(3 downto 0);
o_cmplt: out std_logic
);
end div1;
architecture arc of div1 is
signal mode: integer range 0 to 3;
signal a, b, c : std_logic_vector(3 downto 0);
signal c_1 : integer range 0 to 9;
begin
process(clk)
variable buf_data: integer range 0 to 999;
variable cnt: integer range 0 to 3;
begin
if clk'event and clk = '1' then
if mode = 0 then
buf_data := in_data;
mode <= 1;
elsif mode = 1 then
if buf_data >= 900 then
buf_data := buf_data - 900;
a <= "1001";
mode <= 2;
elsif buf_data >= 800 then
buf_data := buf_data - 800;
a <= "1000";
mode <= 2;
elsif buf_data >= 700 then
buf_data := buf_data - 700;
a <= "0111";
mode <= 2;
elsif buf_data >= 600 then
buf_data := buf_data - 600;
a <= "0110";
mode <= 2;
elsif buf_data >= 500 then
buf_data := buf_data - 500;
a <= "0101";
mode <= 2;
elsif buf_data >= 400 then
buf_data := buf_data - 400;
a <= "0100";
mode <= 2;
elsif buf_data >= 300 then
buf_data := buf_data - 300;
a <= "0011";
mode <= 2;
elsif buf_data >= 200 then
buf_data := buf_data - 200;
a <= "0010";
mode <= 2;
elsif buf_data >= 100 then
buf_data := buf_data - 100;
a <= "0001";
mode <= 2;
else
a <= "0000";
mode <= 2;
end if;
elsif mode = 2 then
if buf_data >= 90 then
buf_data := buf_data - 90;
b <= "1001";
c_1 <= buf_data;
mode <= 3;
elsif buf_data >= 80 then
buf_data := buf_data - 80;
b <= "1000";
c_1 <= buf_data;
mode <= 3;
elsif buf_data >= 70 then
buf_data := buf_data - 70;
b <= "0111";
c_1 <= buf_data;
mode <= 3;
elsif buf_data >= 60 then
buf_data := buf_data - 60;
b <= "0110";
c_1 <= buf_data;
mode <= 3;
elsif buf_data >= 50 then
buf_data := buf_data - 50;
b <= "0101";
c_1 <= buf_data;
mode <= 3;
elsif buf_data >= 40 then
buf_data := buf_data - 40;
b <= "0100";
c_1 <= buf_data;
mode <= 3;
elsif buf_data >= 30 then
buf_data := buf_data - 30;
b <= "0011";
c_1 <= buf_data;
mode <= 3;
elsif buf_data >= 20 then
buf_data := buf_data - 20;
b <= "0010";
c_1 <= buf_data;
mode <= 3;
elsif buf_data >= 10 then
buf_data := buf_data - 10;
b <= "0001";
c_1 <= buf_data;
mode <= 3;
else
b <= "0000";
c_1 <= buf_data;
mode <= 3;
end if;
elsif mode = 3 then
--o_data_100 <= a;
--o_data_10 <= b;
--o_data_1 <= c;
o_data(15 downto 12) <= a;
o_data(11 downto 8) <= b;
o_data(7 downto 4) <= c;
o_data(3 downto 0) <= "0000";
if cnt = 3 then
o_cmplt <= '0';
mode <= 0;
cnt := 0;
else
cnt := cnt + 1;
mode <= 3;
o_cmplt <= '1';
end if;
else
mode <= 0;
end if;
end if;
end process;
process(clk)
begin
if clk'event and clk = '1' then
case c_1 is
when 0 =>
c <= "0000";
when 1 =>
c <= "0001";
when 2 =>
c <= "0010";
when 3 =>
c <= "0011";
when 4 =>
c <= "0100";
when 5 =>
c <= "0101";
when 6 =>
c <= "0110";
when 7 =>
c <= "0111";
when 8 =>
c <= "1000";
when 9 =>
c <= "1001";
when others => null;
end case;
end if;
end process;
end arc;
  • 가격3,500
  • 페이지수50페이지
  • 등록일2007.12.06
  • 저작시기2007.12
  • 파일형식한글(hwp)
  • 자료번호#440714
본 자료는 최근 2주간 다운받은 회원이 없습니다.
  • 편집
  • 내용
  • 가격
청소해
다운로드 장바구니