카테고리 없음

[베릴로그] 4:1 mux 만들기 (먹스 만들기)

이지원 2021. 1. 26. 13:06

지난 포스팅에 2:1 mux를 만들었으니

오늘은 4:1 먹스를 만들것이다.

저번에 만든 2:1 먹스를 활용하여

비트수를 늘려 만들 수 있다.

먼저 4:1 mux는 이렇게 생겼다.

4개의 입력이 들어오고 중에서 셀렉션 신호 ( S) 에 따라 output이 결정되는 것이다.

먼저 지난번에 2:1 mux를 만들 때는

s ? d1 : d0 를 사용했었다. 이와 마찬가지로 생각해서 코드를 보면

s0가 0이면 뒤의 괄호 1이면 앞의 괄호를 선택하고

괄호 안에 있는

s1 ? d3 :d2 와 s1 ? d1 : d0

를 보면 s0에 의해 선택된 괄호 중

s1의 신호에 따라

0이면 뒤 1이면 앞을 선택하는 것이다.

그렇다면 최종적으로 1개의 출력이 나올 것이다.

이렇게 2:1 먹스 3개로 구성한 4:1 먹스가 있고

다른 방식으로는 if 문을 사용하여 만들 수 있다.

4:1 mux 이므로 각각 입출력에 1:0으로 비트를 할당해주고

s의 신호에 따라 나오는 출력을 if문을 사용하여 적어주면 된다.

그렇다면 제대로 작동하는지를 확인하기 위해 오늘도

testbench를 만들어보면

두개를 한번에 적어 같은 4:1 mux 이므로 같은 값이 나올것이다.

먼저 항상 그렇듯이 입력을 reg 출력을 wire로 적어주고

우리가 만들었던 dut의 이름을 적어 불러온 뒤 각각 입출력을 적어준다.

옆에 display 내용이 잘렸는데 위에 표처럼 나오기 위해

d0 d1 d2 d3 s0 s1 y1 y2 를 순서대로 display 창에 적어주었다.

s0와 s1의 각각 신호일 때를 확인하기 위해

00, 01 , 10, 11 를 적어주었고

그때 어떤 값이 y에 나오는지 확인하기 위해

각각 d0는 00 d1은 01 d2는 10 d3는 11 로 적어주었다.

(만약 y에 d0가 출력으로 나온다면 00 이 찍힐 것)

시뮬레이션을 돌려보면

보면 s 신호가 00 일때 d0가 output으로 나오고

01 일때 d1이 output으로 나오고

11일때 d3가 output으로 나오는 걸 확인할 수 있다.

더 늘리면 8:1 mux도 만들 수 있을것이다. 얏호!