목차
없음
본문내용
efinitions
m_clk_process :process
begin
m_clk <= '0';
wait for m_clk_period/2;
m_clk <= '1';
wait for m_clk_period/2;
end process;
-- Stimulus process
stim_proc: process
begin
-- hold reset state for 100 ns.
wait for 100 ns;
m_reset <= '0';
wait for 50 ns;
startsig <= '1';
wait for 50 ns;
startsig <= '0';
wait for 50 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 50 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 50 ns;
startsig <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for m_clk_period*10;
-- insert stimulus here
wait;
end process;
END;
6. Simulation 결과
test bench를 이용하여 우선 startsig를 입력한 뒤에
m_input 값을 다음과 같이 설정하였다.
0011101111011111001111110011111111001110111101111100111
이 때, 15개의 111이 detect된 뒤에 멈추는가를 확인하고 그 뒤에는 아무것도 작동하지 않는지를 보았다. 그 뒤에 starsig 입력을 다시 주어 초기값으로 되돌려 동작함을 확인하였다.
startsig에 의해 starter에 1이 들어오면 stop 상태에서 work 상태로 바뀐다. work 상태에서 m_input에 1이 입력되면 a state에서 b state로 이동하는 것을 확인할 수 있다. 그리고 이와 마찬가지로 clock의 rising edge일 때 들어온 input이 있을 때 위에서 그린 state diagram 대로 state가 변한다.
이처럼 state가 변하면서, 111이 세 번 연속으로 입력된 상태인 d, f, g에서 각각 한번씩 count한다. 따라서 맨 아래 변수 cx를 보면 4bit의 2진수로 1씩 커져감을 확인할 수 있다.
이처럼 cx가 계속 증가하다가 15인 “1111”이 되면 주어진 조건대로 동작을 멈춘다.
이 때는 stop으로 이동하여 위 사진에 보이는 바와 같이 input이 더 들어와도 count하지 않는다.
s=1이 입력되면 다시 work state로 이동하여 처음부터 같은 과정을 되풀이한다.
m_clk_process :process
begin
m_clk <= '0';
wait for m_clk_period/2;
m_clk <= '1';
wait for m_clk_period/2;
end process;
-- Stimulus process
stim_proc: process
begin
-- hold reset state for 100 ns.
wait for 100 ns;
m_reset <= '0';
wait for 50 ns;
startsig <= '1';
wait for 50 ns;
startsig <= '0';
wait for 50 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 50 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '0';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 50 ns;
startsig <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for 10 ns;
m_input <= '1';
wait for m_clk_period*10;
-- insert stimulus here
wait;
end process;
END;
6. Simulation 결과
test bench를 이용하여 우선 startsig를 입력한 뒤에
m_input 값을 다음과 같이 설정하였다.
0011101111011111001111110011111111001110111101111100111
이 때, 15개의 111이 detect된 뒤에 멈추는가를 확인하고 그 뒤에는 아무것도 작동하지 않는지를 보았다. 그 뒤에 starsig 입력을 다시 주어 초기값으로 되돌려 동작함을 확인하였다.
startsig에 의해 starter에 1이 들어오면 stop 상태에서 work 상태로 바뀐다. work 상태에서 m_input에 1이 입력되면 a state에서 b state로 이동하는 것을 확인할 수 있다. 그리고 이와 마찬가지로 clock의 rising edge일 때 들어온 input이 있을 때 위에서 그린 state diagram 대로 state가 변한다.
이처럼 state가 변하면서, 111이 세 번 연속으로 입력된 상태인 d, f, g에서 각각 한번씩 count한다. 따라서 맨 아래 변수 cx를 보면 4bit의 2진수로 1씩 커져감을 확인할 수 있다.
이처럼 cx가 계속 증가하다가 15인 “1111”이 되면 주어진 조건대로 동작을 멈춘다.
이 때는 stop으로 이동하여 위 사진에 보이는 바와 같이 input이 더 들어와도 count하지 않는다.
s=1이 입력되면 다시 work state로 이동하여 처음부터 같은 과정을 되풀이한다.
키워드
추천자료
[전산기구조론] 사칙연산을 수행하는 6bit 컴퓨터의 설계
vhdl 셀계를 이용한 디지털 논리 회로 3장연습문제
하드웨어기술언어의 이해와 디지털 논리회로의 설계환경 변천 HDL의 종류
vhdl을 이용한 8-bit MPU(Micro processor unit) 설계
36계 인생설계 레포트
버튼 빨리 누르기 설계 최종보고서(설계도 패턴도 포함)
SONAR 최종 설계 보고서
VHDL 설계과제 LINE TRACER
비안정 멀티바이브레이터 설계결과보고서
미약생체신호, 인체신호전달, 68000의 신호, 디지털신호처리의 압축알고리즘, 컬러TV의 신호...
[디지털 논리 회로] 디지털 공중전화
디지털 회로 (자판기 회로 레포트)
디지털 논리회로 Final HW
소개글