1) 이번 주 목표
- 4-to-1 멀티플렉서 설계 및 검증
- 3-to-8 디코더 설계 및 검증
- 테스트벤치를 통해 입력 변화에 따른 출력 동작 확인 및 파형 해석
2) 4-to-1 멀티플렉서 (Multiplexer_4to1.v)
설계 아이디어
- 입력: x, y, z, w (4개), 선택선: signal_1, signal_2 (2개), 표시용 in_led[3:0], 출력 out_led.
- 동작식(정합된 minterm OR):
out = (~s1 & ~s2 & x) + (~s1 & s2 & y) + (s1 & ~s2 & z) + (s1 & s2 & w)
- 구현은 각 minterm을 wire(fir, sec, thi, fou)로 만들고 최종 OR로 결합.
- data flow modeling 연습
Multiplexer_4to1.v
테스트 (tb_multiplexer_4to1.v)
- x,y,z,w 자리에 reg [3:0] input_을 매핑하고, sel은 reg [1:0]로 5 time unit마다 00→01→10→11 순환 증가하도록 설정.
- 초기값 input_ = 4’b1010, sel = 2’b00. 선택선이 2’b01과 2’b11일 때 out_led가 1로 나오는 것을 확인(초기 패턴에서 y, w가 1).
시나리오 예시
- (x,y,z,w)=(0,1,0,0), sel=(0,1) → ON
- (x,y,z,w)=(0,1,0,0), sel=(0,0) → OFF
- (x,y,z,w)=(1,0,0,0), sel=(0,0) → ON
- (x,y,z,w)=(1,0,0,0), sel=(1,0) → OFF
tb_multiplexer_4to1.v
시뮬레이션 결과
3) 3-to-8 디코더 (_3_to_8_decoder.v)
설계 아이디어
- 입력: x, y, z (3개), 출력: led[7:0] (8개).
- 디코더는 (x,y,z)가 000~111 중 하나일 때 정확히 한 출력만 1이 되는 구조(minterm 8개 AND 게이트).
- A0~A7까지 8개의 AND 연산으로 각 minterm을 생성.
- gate level modeling 연습
_3_to_8_decoder.v
테스트 (tb_3_to_8_decoder.v)
- reg [2:0] input_을 3’b000에서 시작해 10 time unit마다 1씩 증가시켜 000→…→111까지 순회.
- 각 입력 조합에서 딱 하나의 led 비트만 1로 켜지는지 파형/출력으로 확인.
시나리오 예시
- (x,y,z)=(1,0,0) → 다섯 번째(led[4]) ON
- (x,y,z)=(0,1,0) → 세 번째(led[2]) ON
- (x,y,z)=(1,1,1) → 여덟 번째(led[7]) ON
(인덱스는 0부터 시작한다고 가정)
🔎 팁: 디코더 검증에서는 “정확히 하나만 1”인지(원-핫, one-hot) 위반 케이스가 없는지에 주목하자. 파형에서 입력 천이 시점의 글리치가 없는지도 함께 점검하면 좋다.
tb_3_to_8_decoder.v
시뮬레이션 결과