80 likes | 286 Views
정보제어 기초실험 작품 발표 자료. 실험 4 조 2003731072 오윤진 2003731161 설장수. 작품의 목표. VHDL 사용법을 익힌다 . CPLD 를 사용하여 논리회로를 구성한다 . Decorder, BCD 코드 , Counter 의 사용법을 익힌다 . VHDL 로 Stop-watch 를 구성한다. 작품 설명. 1MHz 오실레이터와 VHDL 을 이용하여 100Hz 의 클럭을 설정한다 .
E N D
정보제어 기초실험작품 발표 자료 실험 4조 2003731072 오윤진 2003731161 설장수
작품의 목표 • VHDL사용법을 익힌다. • CPLD를 사용하여 논리회로를 구성한다. • Decorder, BCD코드, Counter의 사용법을 익힌다. • VHDL로 Stop-watch를 구성한다. www.themegallery.com
작품 설명 • 1MHz오실레이터와 VHDL을 이용하여 100Hz의 클럭을 설정한다. • 0.01초마다 세그먼트의 숫자가 변한다. • 59.99초가되면 00.00으로 바뀐다. • VHDL로 Decorder를 작성하여 세그먼트에 숫자를 표시해 준다. www.themegallery.com
VHDL란? • 1.1 HDL(Hardware Description Language)의 필요성 • n 대형회로를 설계시 기존의 설계 방법 비효율성(시간/비용 증가) • n 복잡한 하드웨어를 쉽게 기술하기 위하여 언어를 사용하는 방법 연구 • Programming 언어 : 회로의 지연처리, 합성 등의 문제점 • HDL : VHDL, Verilog HDL, AHPL, IDL, ISPS, UDL/I 등이 연구, 사용 • 1.2 VHDL의 유래 • n Very High Speed Integrated Circuit Hardware Description Language. • n 미국 국방성에서 집적회로 관련 업체들 상호간에 개발을 위한 정보교환 및 문서 화를 위해 • n 1987년 IEEE 1076-1987로 불리는 IEEE 표준 HDL 탄생. • n 1993년 IEEE 1076-1993으로 불리는 IEEE 표준 HDL new version 탄생. www.themegallery.com
STOP-WATCHVHDL소스(Library, Entity, Architecture) • library ieee; • use ieee.std_logic_1164.all; • use ieee.std_logic_arith.all; • use ieee.std_logic_unsigned.all; • entity stop3 is • port( clk_in, reset_start : in std_logic; • dec_d, dec_c, dec_b, dec_a : out std_logic_vector(6 downto 0)); • end stop3; • architecture ouj of stop3 is • signal clk : std_logic_vector(13 downto 0); • signal bcd_a : std_logic_vector(2 downto 0); • signal bcd_c, bcd_b, bcd_d : std_logic_vector(3 downto 0); • signal clk_100K, clk_10K, clk_1K, clk_100, clk_to : std_logic; www.themegallery.com
STOP-WATCH VHDL소스(CLK변환부분) • process(clk_in,clk,clk_to) • begin • if(clk_in'event and clk_in='1') then • if(clk = "10011100001111" ) then • clk_to <= '1'; • clk <= "00000000000000"; • else • clk_to <= '0'; • clk <= clk + "00000000000001"; • end if; • end if; • end process; www.themegallery.com
STOP-WATCH VHDL소스(Counter부분) • process(reset_start, bcd_c, clk_100K, clk_10K) • begin • if (reset_start = '1') then • bcd_c <= "0000"; • elsif (clk_100K'event and clk_100K='1') then • if (bcd_c = "1001") then • bcd_c <= "0000"; • clk_10K <= '1'; • else • bcd_c <= bcd_c + "0001"; • clk_10K <= '0'; • end if; • end if; • end process; www.themegallery.com
STOP-WATCH VHDL소스(Decorder부분) • process(bcd_a) • begin • case bcd_a is • when "000" => • dec_a <= "0111111" ; • when "001" => • dec_a <= "0000110" ; • when "010" => • dec_a <= "1011011" ; • when "011" => • dec_a <= "1001111" ; • when "100" => • dec_a <= "1100110" ; • when "101" => • dec_a <= "1101101" ; • when others => • dec_a <= "0000000" ; • end case; • end process; www.themegallery.com