노무현 대통령 배너


2007. 4. 5. 12:53

VME Bus에서의 Data Transfer 규격

Block-Transfer
VMEbus에서는 연속되는 어드레스로 계속 액세스할 경우가 있을 때 블록 전송이라는 전송방식을 규정해 놓고 있다. 즉 프로세서에서의 burst 사이클과 유사하게 마스터 보드에서 블록 전송 사이클을 시작하면 슬레이브 보등서는 연속적으로 데이터를 주거나 받을 수 있다.
VMEbus 사양에서는 한 번 에 전송할 수 있는 블록 전송 데이터양의 양을 256byte 이내로 규정하고 있다. 블록 전송 동안에는 다른 마스터가 VMEbus를 사용할 수 없기 때문에 256byte의 블록 전송 후 에는 반드시 bus를 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*이 서로 토글되는 것을 나타낸 타이밍이다.

마스터, 슬레이브 타이밍 파라미터
VMEbus는 기본적으로 비동기 전송이며, signal hand-shake 방식을 사용하기 때문에 타이밍에 대한 정밀한 규정은 하지 않는다. 그러나 아래의 타이밍 규정은 반드시 지켜야 한다. 이것은 슬레이브 보드의 오동작을 방지하기 위함이다.

VMEbus Arbitration
VMEbus는 멀티프로세싱 시스템이기 때문에 VMEbus상에 여러 개의 마스터가 동시에 VME bus의 사용을 요구할 수 있지만 어느 순간에는 어느 하나만의 마스터 만이 VMEbus를 사용할 수 있다.
즉, VMEbus의 사용요구에 대한 중재와 허가를 하는 버스 아비터가 필요하다. VMEbus규격에서는 VMEbus의 사용허가를 중재하는 방법으로 ① 우선 순위(Prioritzed)방식, ② round-robin 방식, ③ single level 방식의 3가지 방식을 권고하고 있다.

우선순위 방식
VMEbus request 신호BR3* -BR0*를 BR3* > BR2* > BR1* > BR0* 식으로 우선 순위를 매겨서 동시에 bus request가 여러 개가 있을 때는 가장 우선순위가 높은 보드에 VMEbus의 사용허가를 해주는 방식이다. 이 방식은 우선 순위가 낮은 보드는 VMEbus를 계속해서 잡지 못할 확률이 많기 때문에 잘 쓰이지 않는다. 아비터 로직을 쉽게 구현할 수 있다.

Round-robin방식
BR3* →BR2*→BR1*→BR0*→BR3*순으로 순차적으로 현재 사용중인 VMEbus grant 레벨 다음 레벨에 VMEbus의 사용허가를 해주는 방법이다. 이 방법은 일반적으로 많이 쓰이는 방법이다. 아비터 로직 구현이 좀 까다롭다.

VMEbus 릴리스 방식
RWD(release-when-done) 현재 수행하고 있는 VME버스 사이클이 끝나면 BBSY*를 릴리스 한다.

ROR(release-on-request)
다른 보드에서 bus request를 하지 않는 한 BBSY*를 계속 low로 드라이브한다.
ROR 방식은 VMEbus를 많이 사용하는 마스터 보드에서 bus arbitrtion 수를 줄인다.

우선 인터럽트 Bus Lines
VMEbus에서는 7개의 인터럽트 request line이 있는데 IRQ7*이 우선순위가 가장 낮다.
IACK*는 인터럽트 핸들러의 인터럽트 ackno-wledge 사이클을 나타내며, IAC-KIN*/IACK OUT*은 IACK*신호가 슬롯0에서 슬롯n으로의 daish-chain 신호이다.

인터럽트 핸들러
인터럽트핸들러의 동작

ㆍIRQ7* - IRQ1* line중 어느 하나 이상이 low로 되면 우선 순위에 따라 인터럽트 acknowlidge
싸이클을 시작한다.

nterrupt Line Being Acknowledged
A03
A02
A01
IRQ1*
IRQ2*
IRQ3*
IRQ4*
IRQ5*
IRQ6*
IRQ7*
L
L
L
H
H
H
H
L
H
H
L
L
H
H
H
L
H
L
H
L
H
(표 4) IRQX*와 인터럽트 Acknowledge cycle시 A3-A1의 관계
ㆍ 온 보드 bus request에 의해 VMEbus 사용권을 얻는다.
ㆍ IACK*를 low로 드라이브한다.
ㆍ AM코드는 드라이브하지 않는다.
ㆍ 인터럽트 acknowledge 1레벨에 따라 어드레스 라인A03-A01을 드라이브한다.
ㆍ 데이터 버스는 드라이브 하지 않는다.
ㆍ 인터럽트로부터 status/ID를 읽고 사이클을 종료한다.

인터럽트 핸들러는 인터럽트 request에 대해 현재 수행중인 인터럽트 acknow-ledge 레벨을 어드레스 라인 A03-A01을 통하여 나타내는데 이를 표 4에 나타내었다.

'Interface > VME Bus' 카테고리의 다른 글

VME 보드 설계자료-3  (0) 2007.04.05
VME 보드 설계자료-2  (3) 2007.04.05
VME 보드 설계자료-1  (0) 2007.04.05
인터럽터의 동작  (3) 2007.04.05
VME Bus에서의 신호규격  (2) 2007.04.05