[토끼] 응용논리_4× 1 MUX를 4가지 구문을 이용하여 VHDL로 설계, 시뮬레이션, 합성 과제 ( IF 문, CASE 문, When~else 문, With~select
- 최초 등록일
- 2013.01.14
- 최종 저작일
- 2010.07
- 17페이지/ 한컴오피스
- 가격 3,000원
소개글
과제 : 4× 1 MUX를 다음의 4가지 구문을 이용하여 VHDL로 설계 하고 시뮬레이션, 합성 하여라. ( IF 문, CASE 문, When~else 문, With~select문 )
목차
(1-1) IF 문을 이용한 4×1 MUX의 VHDL CODE
(1-2) IF 문을 이용한 4×1 MUX의 SIMULATION
(1-3) IF 문을 이용한 4×1 MUX의 Synplify 합성
(2-1) CASE 문을 이용한 4×1 MUX의 VHDL CODE
(2-2) CASE 문을 이용한 4×1 MUX의 SIMULATION
(2-3) CASE 문을 이용한 4×1 MUX의 Synplify 합성
(3-1) When else 문을 이용한 4×1 MUX의 VHDL CODE
(3-2) When else 문을 이용한 4×1 MUX의 SIMULATION
(3-3) When else 문을 이용한 4×1 MUX의 Synplify 합성
(4-1) With Select 문을 이용한 4×1 MUX의 VHDL CODE
(4-2) With Select 문을 이용한 4×1 MUX의 SIMULATION
(4-3) With Select 문을 이용한 4×1 MUX의 Synplify 합성
(5-1) 각 구문별 합성 비교 < Technology View >
(5-2) 각 구문별 합성 비교 < RTL VIEW >
(6) Result and Analysis
※ 추가 사항 테스트 벤치 CODE
본문내용
과제: 4× 1 MUX를 다음의 4가지 구문을 이용하여 VHDL로 설계 하고 시뮬레이션, 합성 하여라. ( IF 문, CASE 문, When~else 문, With~select문 )
(1-1) IF 문을 이용한 4×1 MUX의 VHDL CODE
library IEEE;
use IEEE.std_logic_1164.all;
entity mux41 is
port( A: in std_logic;
B: in std_logic;
C: in std_logic;
D: in std_logic;
SEL: in std_logic_vector(1 downto 0);
Y: out std_logic
);
end mux41;
architecture BEHAVE of mux41 is
begin
process(A,B,C,D,SEL)
begin
if SEL="00" then
Y<=A;
elsif SEL="01" then
Y<=B;
elsif SEL="10" then
Y<=C;
else
Y<=D;
end if;
end process;
end BEHAVE;
VHDL 코딩 시 수업시간에 필기 해주었던 내용을 기반으로 삼아 코딩을 하였다. VHDL을 처음인지라 컴파일 에러를 잡아내는 데에만 3시간이 걸렸다. 하지만 덕분에 문법의 틀을 확실하게 기억 할 수 있었다. 예를 들어 Entity 선언에서도 사소한 ‘.’을 빠뜨려서 계속 컴파일 에러가 났으며 architecture에서도 beahave를 end시키지 않아 에러가 났었다. 인터넷을 뒤져본 결과 compile report를 이용하여 하나씩 여러 에러들을 잡아내었으며 결국 컴파일을 성공 할 수 있었다.
(1-2) IF 문을 이용한 4×1 MUX의 SIMULATION
시뮬레이션 또한 툴 사용의 미숙으로 3시간 이상 허비해야 했다. 하지만 덕분에 테스트 벤치의 개념을 확실하게 알 수 있었다. 다른 코드를 참고 하였을 때 정확한 시뮬레이션을 위해 테스트 벤치라는 것을 하고 시그널을 넣어주는 것을 알 수 있었다. 하지만 그것보다 모든 경우의 수를 표현하는 정확한 시뮬레이션을 만들 수 있는 다른 방법이 있지 않을 까 하는 고민 끝에 정확히 SEL값의 모든 경우의 수안에 인풋 값의 모든 경우의 수를 집어넣고 시뮬레이션을 돌리기로 하였다. 결국 시뮬레이션의 결과를 보면 SEL 값이 ‘00’일 때만 A가 출력되고 SEL값이 `01`일 때 B가 출력, SEL값이 ‘10’일 때 C가 출력, 마지막으로 SEL 값이 ‘11’일 때 D가 출력 되는 것을 확인 할 수 있다. 이번 과제의 가장 큰 난관 이였는데 이런 식으로 하는 게 일일이 테스트벤치를 짜는 것보다 더 효과적이라고 생각된다.
< 입력 신호에 인가하는 방법 >
Tool에 대한 이해가 부족하여 피스파이스와 같이 자동으로 시뮬레이션이 될줄 알았지만 요지부동이였다. 알고보니 입력값을 일일이 지정해줘야는데 여러번의 메뉴를 클릭 끝에 counter, clock의 기능을 인가하여 효과적인 시뮬레이션을 할 수 있도록 하였다.
참고 자료
디지털논리와 컴퓨터설계 (p.167~172)
프로그램 논리 소자를 위한 VHDL (P.107~210)
Xilinx/Alerra FPGA 보드를 이용한 실습으로 배우는 VHDL (p. 100~152)