Bus란 장치들이 정보 공유를 위해 공유하는 선들의 집합인데, 한 번에 한 녀석만 다닐 수 있는 Freeway에 가깝다.
어느 특정 시점에 시간을 멈추고 bus를 바라본다면 bus 위에는 그 당시 bus를 쓰도록 허가 받은 장치들의 신호만이 보인다고 생각하면 된다. clock 별로 바라보면 마치 clock 단위마다 네온 사인처럼 왔다갔다 하는 형국이다.
아래처럼 길 하나를 함께 쓰되 특정 시점에 허가 받은 녀석만 사용할 수 있다.
MUX를 이용한 register 끼리의 통신 통로로써의 bus를 예로 들어보자. 각각의 register는 4bit latch이며 4개의 MUX에 연결되어 있다. S1, S0가 MUX control신호이며, 이 신호에 의해 MUX의 enabled port 번호가 결정된다. 진리표를 다음으로 가정하자. MUX애 적혀있는 번호가 포트 번호이다.
S1 |
S0 |
Enabled port |
버스를 사용하게 되는 Register |
0 |
0 |
0 |
A |
0 |
1 |
1 |
B |
1 |
0 |
2 |
C |
1 |
1 |
3 |
D |
바로 Arbiter가 algorithm policy에 의하여 S0, S1 같은 신호를 제어한다.
Bus에는 주소벗, 데이터 버스, 제어 및 상태버스 등 3가지 종류가 있다.
주소 버스 : 현재 MCU가 접근하려는 주소가 번쩍. MCU에서 나오는 단뱡향 신호이다.
데이터 버스 : 양방향 신호로써 MCU가 data를 주거나 받을 수 있다.
제어 버스 : 단방향 혹은 양방향이고 MPU가 참조하려는 상태에 관한 정보들이 번쩍.