강좌 & 팁
32bit mcu 를 사용해 회로를 꾸미는 경우 어드레스 버스의 A0 는 아예 연결을 하지 않는 것을 볼 수 있습니다.
왜 그럴까요?
요즘 나오는 MCU 들은 일반적으로 16Bit data bus 와 25~27 bit 정도의 address 버스를 갖습니다.
A0 의 사용 여부는 여기서data bus 의 bit 수와 상관이 있겠습니다.
addrss 는 1byte 데이터의 저장소 위치를 최소 단위로 하고 있는데, 16bit data bus 는 한번에 2byte 의 데이터를 표현 할 수있기 때문에 2byte 데이터의 주소만큼씩 변경 하게 됩니다. 만약 데이터 bus 가 8bit 라면 a0 는 사용 해야 합니다.
따라서 16bit data bus 를 갖는 mcu 에서 32 bit 데이터를 출력 하게 되면, 16bit 씩 두번 출력 하게 되며,
이때 address 는 2의 배수로 움직이게 됩니다. 또한 2byte 의 데이터는 연속해야 하므로, 00,02,04.. 처럼
홀수 주소로 엑세스 할 수 없 으며, 짝수 주소를 갖게 됩니다.
따라서 A0 는 아래 표와 같이 사용 할 일이 없어집니다.
ADDRESS | DATA | A1 | A0 |
0x00 | 1byte | 0 | 0 |
0x01 | 1byte | 0 | 1 |
0x02 | 1byte | 1 | 0 |
0x03 | 1byte | 1 | 1 |
2byte 단위로 엑세스 하게되어, 결국 A0 의 값은 의미가 없어지며, A1 만 확인 하면 되겠습니다.
그래서 A0 는 아예 제거를 하는 것 입니다.
앞으로 왜 A0 연결이 안되었는지 .. 연결해야 하나?? 실수로 빠졌나? 하는 의문은 버립시다. ~
삼성S5PV210 의 A0은 레지스트 설정값에 따라 A1이 되었다가 A0되었다가 해서 상위 어드레스를 더 쓸수가 있더군요.