본문 바로가기

개발 이야기/computer science

multi bit buses / 로직 게이트에 여러 비트 정보 전달하기

싸이 강남스타일 MV

 

이전 포스팅에서는 로직 게이트에서는 선 당 하나의 값, 즉 1 bit만 받아서 처리했다. 하지만 하나의 값에도 4비트, 8비트, 16비트 등 여러 비트로 처리할 수 있다.

 

이를 Multi Bit Buses 라고 한다. 여러 비트가 함께 태워져 전송된다는 의미에서 'Bus'라고 한다.

비트 버스, 이벤트 버스 등 컴퓨터에서 버스는 여러 데이터를 한번에 전달하는 의미로 쓰인다.

 

*HDL(Hardware Description Language)로 16비트를 입력값과 출력값으로 사용하는 Chip을 기술해보면 다음과 같다.

*HDL: 하드웨어를 시뮬레이션할 때 쓰는 하드웨어 언어이다. 칩이나 회로에 대해서 기술할 수 있다.

 

CHIP Chip16 {
    IN a[16], b[16];
    OUT out[16];
       
    PARTS:
    Add16(a=a, b=b, out=addab);
    Not16(in=addab, out=notaddab);
}

 

Chip16이라는 칩(게이트)을 만든다. 입력값은 16비트 a, 16비트 b이고, 출력값은 16비트 out이다.

Chip16을 구성하는 것은 입력값을 a, b로 받고, 출력값이 out인 'Add16 칩'과 입력값을 in으로 받고, 출력값이 out인 'Not16' 칩이다.

 

Add16칩 a에는 Chip16의 입력값인 a가, b에는 Chip16의 입력값인 b가 그대로 들어가고, Add 16의 out 값을 addab라고 한다.

Not16칩 in은 Add16칩의 out인 값인 addab를 입력값으로 받아, notaddab를 출력한다.

 

 

+ 참고로 논리 게이트 Add 16는 각 자리수마다 and 연산을 한다. 

a 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1
b 0 0 0 0 0 0 1 1 1 0 1 0 1 1 1 0
& 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0