하드웨어
VMEbus에서는 연속되는 어드레스로 계속 액세스할 경우가 있을 때 블록 전송이라는 전송방식을 규정해 놓고 있다.
즉 프로세서에서의 burst 사이클과 유사하게 마스터 보드에서 블록 전송 사이클을 시작하면 슬레이브 보등서는 연속적으로 데이터를 주거나 받을 수 있다.
VMEbus 사양에서는 한 번 에 전송할 수 있는 블록 전송 데이터양의 양을 256byte 이내로 규정하고 있다.
블록 전송 동안에는 다른 마스터가 VMEbus를 사용할 수 없기 때문에 256byte의 블록 전송 후 에는 반드시 를 release 하게 한다.
한 번에 많은 양의 데이터를 보낼 때는 블록 전송 사이클을 여러 번 수행하게 해서 다른 마스터가 VMEbus를 액세스할 수 있게 한다.
마스터가 블록 전송 사이클을 시작했을 때, 해당되는 슬레이브 보드는 온 보드 어드레스 카운터에 어드레스를 latch해야 한다.
마스터는 AS*를 stretch 한 상태로 슬레이브 보드로부터의 DTACK* 신호에 따라 계속해서 DS*를 드라이브하면서 필요한 데이터를 전송하거나 받는다.
슬레이브 보드는 자신의 온-보드 카운터를 통해서 데이터 strobe의 low-to-high transition에 따라 다음 어드레스를 만든다.
블록 전송이 256byte까지만으로 규정되어 있고 또 256byte 어드레싱 boundary에 일치시켜야 하기 때문에 슬레이브 보드는 8bit의 어드레스 카운터(byte 단위의 block transfer 시 ) 또는 6bit의 어드레스 카운터 (4byte 데이터 블록 전송시)만이 필요하다.
블록 전송은 빠른 데이터 전송을 위함이기 때문에 보통 4byte 단위로 전송하고 이때 어드레스 카운터는 A7-A2의 어드레스를 카운터한다.
A7-A2 이외의 상위 어드레스는 블록 전송 시작 시점에서 latch 하여 둔다. 그림 7은 블록 전송 사이클시 DS0*, DS1* 과 DTACK*이 서로 토글되는 것을 나타낸 타이밍이다.
출처:http://blog.naver.com/elechole/20035763438