KR100290943B1 - 유니버설 시리얼 버스 제어 이전을 처리하는 장치 및 방법 - Google Patents

유니버설 시리얼 버스 제어 이전을 처리하는 장치 및 방법 Download PDF

Info

Publication number
KR100290943B1
KR100290943B1 KR1019990000086A KR19990000086A KR100290943B1 KR 100290943 B1 KR100290943 B1 KR 100290943B1 KR 1019990000086 A KR1019990000086 A KR 1019990000086A KR 19990000086 A KR19990000086 A KR 19990000086A KR 100290943 B1 KR100290943 B1 KR 100290943B1
Authority
KR
South Korea
Prior art keywords
endpoint
data
memory
state
buffer
Prior art date
Application number
KR1019990000086A
Other languages
English (en)
Other versions
KR19990067731A (ko
Inventor
브리프데이비드
펜소어데이비드제이.
와터슨켄트브루스
딘그레고리루이스
Original Assignee
클라크 3세 존 엠.
내셔널 세미콘덕터 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 클라크 3세 존 엠., 내셔널 세미콘덕터 코포레이션 filed Critical 클라크 3세 존 엠.
Publication of KR19990067731A publication Critical patent/KR19990067731A/ko
Application granted granted Critical
Publication of KR100290943B1 publication Critical patent/KR100290943B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4247Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus
    • G06F13/426Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus using an embedded synchronisation, e.g. Firewire bus, Fibre Channel bus, SSA bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

유니버설 시리얼 버스 (USB) 디바이스상에 제어 이전을 수행하기 위한 방법 및 장치. USB 디바이스는 USB 네트워크를 통해 송신되는 데이터의 기록 데이터 및 판독 데이터를 위한 메모리 공간을 포함한다. 메모리 공간은 다수의 종단점간에 공유된다. 호스트는 SETUP 토큰을 제 1 종단점에 송신함으로써 제어 이전을 초기화한다. 종단점은 SETUP 토큰을 수신하여야만 한다. 만약 제 1 종단점이 SETUP 토큰을 원하지 않거나, 또는 다른 종단점이 활성화되어 있으면, 버퍼가 할당되고 제 1 종단점이 활성화될 때까지 디바이스는 토큰을 저장한다.

Description

유니버설 시리얼 버스 제어 이전을 처리하는 장치 및 방법{An Apparatus and Method For Handling Universal Serial Bus Control Transfer}
이 장치와 방법은 유니버설 시리얼 버스를 통해 제어 이전을 수행하는 것에 관한 것이고, 특히 제어 이전의 셋업, 데이터, 및 상태 트랜잭션에 대한 응답에 관한 것이다.
유니버설 시리얼 버스 (USB)는 개인용 컴퓨터를, 예를 들어 디지털 전화선, 모니터, 모뎀, 마우스, 프린터, 스캐너, 게임 제어기, 키보드, 및 다른 주변 기기와 같은 다양한 장치에 접속시키기 위한 표준 주변 인터페이스이다. 그러므로 USB는 현존하는 RS-232C 직렬 포트, 병렬 포트, PS/2 인터페이스, 및 게임/MIDI 포트를 대체한다.
USB에서는, 부착된 디바이스는 티어드-스타 (tiered-star) 구조를 사용하는 단일 커넥터형으로 개인용 컴퓨터에 접속한다. 호스트 개인용 컴퓨터는 단일 USB 제어기를 포함한다. 호스트 제어기는 USB 네트워크와 호스트 개인용 컴퓨터간의 인터페이스를 제공한다. 호스트 제어기는 USB 자원에 대한 모든 접근을 제어하며 버스의 구조를 감시한다. USB 허브는 USB 디바이스를 위하여 USB 접속 점을 제공한다.
USB 네트워크의 티어드-스타 구조의 한 예가 도 1 에 도시되어 있다. 호스트 PC (100) 는 호스트 제어기 (102)를 통한 USB 포트 접속부를 구비하는 통상적인 개인용 컴퓨터이다. 호스트 제어기 (102)는 루트 허브 (110)와 직접 접속하고, 이는 통상적으로 호스트 PC (100)의 일 부분으로 구현된다. 복합 디바이스 (120), 허브 (130), 및 디바이스 (140)는 루트 허브 (110)를 통해 호스트 제어기 (102)에 접속한다. 디바이스 (132,134)는 허브 (130)와 허브 (110)를 통해 호스트 제어기 (102)에 접속한다.
복합 디바이스 (120)는 디바이스 (124,126)와 허브 (122)를 포함한다. 복합 디바이스 (120)의 허브 (122)는 허브 (110)를 통하여 호스트 제어기에 접속한다. 복합 디바이스 (120)의 디바이스 (124,126)는 허브 (122)와 허브 (110)를 통하여 호스트 제어기 (102)에 접속한다. 복합 디바이스의 실용적인 예는 집적형 프린터- 팩스이다. 프린터는 디바이스 (124)가 될 수 있고, 팩스는 디바이스 (126)가 될 수 있다.
도 1 에 도시되어 있는 티어드-스타 구조는 호스트 PC (100)로의 데이터 송신 및 호스트 PC (100)로부터 다양한 디바이스로의 데이터 송신을 허용한다. 데이터가 호스트로부터 디바이스로 송신될 경우에는 데이터는 상호 접속 허브를 통하여 하부로 송신된다. 데이터가 디바이스로부터 호스트로 송신될 경우에는 데이터는 상호 접속 허브를 통하여 상부로 송신된다.
USB 허브와 디바이스는 USB 네트워크를 완전히 재구동 시키지 않고도 접속 또는 비접속될 수도 있다. 상부 허브에 디바이스 또는 허브의 접속시, 상부 허브는 상태의 변화를 호스트 제어기에 통지한다. USB 프로토콜에 따라, 호스트 제어기는 디바이스가 접속된 허브의 포트를 인에이블시킨다. 그러면 호스트 제어기는 각 디바이스에 고유의 기능적 주소를 부여한다. 포트는 호스트 제어기 (102)가 고유의 기능적 주소를 부여할 때마다 하나씩 인에이블된다. 복합 디바이스의 접속시, 호스트 제어기는 고유의 기능적 주소를 복합 디바이스 내에 포함되는 각 디바이스에 부여한다. 도 1 을 다시 참조하면, 허브 (110,122,130)와 연결되어 있는 디바이스 (124,126,132,134,140)에는 USB 네트워크에 접속시 하나의 고유의 기능적 주소가 부여된다.
USB 펑션(Function)은 버스 상에서 정보를 송·수신할 수 있는 일종의 USB 디바이스이다. 펑션은 하나 이상의 구성체를 가질 수도 있으며, 그 각각은 디바이스를 구성하는 인터페이스를 정의한다. 이로 인하여 각 인터페이스는 하나 이상의 종단점(endpoint)으로 구성된다.
종단점은 데이터의 종극적인 소스, 즉 싱크이다. 종단점 파이프는 USB와 메모리간의 데이터의 이동을 위해 제공되며, USB 호스트와 펑션 종단점간의 경로를 완성한다. USB 디바이스는 어떠한 주어진 시간에서도 종단점 파이프를 16 개까지 지원할 수도 있다. 각 종단점 파이프는 동일한 기능적 주소를 갖는다.
디바이스의 초기화시에, 호스트 제어기는 파이프와 종단점 펑션들을 연계시킨다. 파이프는 호스트 제어기가 호스트 메모리 버퍼로, 호스트 메모리 버퍼로부터 종단점으로, 그리고 종단점으로부터 데이터를 이동시키도록 허용한다. USB는 스트림(stream)과 메시지(message)라는 두 종류의 파이프 통신 모드를 구현한다. 스트림 데이터는 정의된 USB 구조를 구비하지 않는다. 메시지 데이터는 정의된 USB 구조를 구비한다.
초기화 시에, 파이프에는 USB 버스 접근과 대역폭 사용의 요구가 할당된다. 이 할당은 특정의 파이프를 통해 종단점으로의 데이터의 송신에 대한 우선 순위를 결정한다. 종단점의 특성은 초기화시의 파이프와도 연계되어 있다. 이런 특성은 최대 데이터 페이로드(payload) 크기, 전송의 방향성, 및 다른 적절한 특성 데이터를 포함한다. 이런 특성은 파이프를 통해 데이터 전송을 수행하는 호스트에 의하여 사용된다.
파이프에 USB 버스 접근과 대역폭의 요구를 할당하는 것은 호스트 제어기가 종단점으로의 모든 입·출력 데이터 요청이 USB 버스의 사용 가능한 대역폭을 통해 적절히 처리되는 것을 보장하기 위하여 최선의 노력을 기울이는 것을 허용한다. 파이프에 버스 접근과 대역폭의 요구를 할당하는 것은 후에 구성된 디바이스로의 할당을 제한한다. USB 버스의 대역폭이 완전히 할당되면, 후에 구성되는 디바이스는 버스 대역폭을 할당받지 못한다. 이의 결과로 후에 구성되는 디바이스는 파이프를 할당받지 못한다.
초기화 처리가 종료된 후에, 디바이스의 특정 종단점에 대한 파이프의 할당은 고정되며, 디바이스가 비접속되거나 재설정되지 않는 한 변경될 수 없다. 그러므로, 복수의 펑션 종단점을 포함하는 디바이스는 복수의 파이프가 할당된다 (각각은 특정의 종단점과 연계된다).
각 종단점은 USB 상에서 주소 지정이 가능한 엔티티이며, USB 호스트 제어기로부터의 IN 과 OUT 토큰에 응답하여야만 한다. IN 토큰은 호스트가 종단점으로부터 정보 수신을 요청했다는 것을 나타내며, OUT 토큰은 호스트가 종단점으로 정보를 송신하려 한다는 것을 나타낸다.
종단점에 주소 지정된 IN 토큰을 검출하면, 그 종단점은 데이터 패킷으로써 응답할 책임이 있다. 만약 종단점이 현재 기능 정지 (stalled)되어 있으면, STALL 핸드쉐이크 패킷이 송신된다. 만약 종단점이 인에이블되어 있지만 현재 데이터가 없으면, NAK (Negative Acknowledgement) 핸드쉐이크 패킷이 전송된다.
이와 유사하게, 종단점에 주소 지정된 OUT 토큰을 검출하면, 종단점은 호스트에 의하여 송신된 데이터 패킷을 수신하고 버퍼에 이를 저장할 책임이 있다. 만약 종단점 파이프가 현재 기능 정지되어 있으면, 데이터 전송의 끝에는 STALL 핸드쉐이크 패킷이 송신된다. 만약 종단점 파이프가 현재 디스에이블 되어있다면, 데이터 송신의 끝에는 아무런 핸드쉐이크 패킷도 송신되지 않는다. 만약 종단점이 인에이블되어 있지만 데이터를 저장할 버퍼가 존재하지 않으면, NAK 핸드쉐이크 패킷이 송신된다.
디스에이블된 종단점 또는 현재 어떠한 종단점 파이프에도 매핑되지 않은 종단점은 IN, OUT, 또는 SETUP 토큰에 응답하지 않는다.
USB는 제어, 벌크(bulk), 인터럽트, 및 등시성의 4 가지 형태의 파이프를 통한 데이터 전송을 정의한다.
제어 이전은 허브에 부착시 디바이스를 구성하는데 호스트에 의하여 사용된다. 제어 이전은 호스트 제어기에 의하여 디바이스와의 소정의 트랜잭션을 구현하는데 사용될 수도 있다.
벌크 전송은 통상적으로 대량의 데이터의 순차적 전송이다. 벌크 전송은 에러 검출과 손상된 데이터의 재송신을 사용하여 신뢰성 있는 트랜잭션을 제공한다. 벌크 전송은 시간에 민감하지 않으므로, 벌크 전송에 할당된 버스 대역폭은 현재 사용 가능한 어떤 것이나 될 수 있다.
인터럽트 전송은 디바이스로부터 발송되는 작은 자발적인 데이터 트랜잭션이다.
등시성 전송은 계속적이며 실시간의 데이터 트랜잭션이다. 등시성 전송은 등시성 트랜잭션의 적시 완료를 보장하기 위하여 USB 네트워크의 대역폭의 전용된 부분을 할당받는다.
USB 규약은 구성, 명령, 및 디바이스 상태 검사에 사용할 제어 이전 프로토콜을 정의한다. 제어 이전은 요청 정보를 호스트로부터 디바이스로 이동시키는 셋업 트랜잭션, 셋업 트랜잭션이 지정하는 방향으로 데이터를 송신하는 선택적 데이터 트랜잭션, 및 상태 정보를 디바이스로부터 호스트로 복귀시키는 상태 트랜잭션으로 구성된다. 셋업 트랜잭션은 데이터 트랜잭션동안에 송신되어야할 데이터의 양을 지정한다.
제어 트랜잭션 내에서 IN 또는 OUT 데이터 트랜잭션의 발생은 제어 기록 시퀀스, 제어 판독 시퀀스, 및 제어 무-데이터 (no-data) 시퀀스의 3 개의 가능한 트랜잭션 시퀀스를 제공한다. 이들의 각각은 더욱 자세히 설명될 것이다.
도 4a 에는 제어 기록 시퀀스가 도시되어 있다. 제어 기록 시퀀스는 셋업 스테이지, 데이터 스테이지, 및 상태 스테이지의 3 개의 스테이지를 포함한다. 셋업 스테이지는 DATA0 PID를 구비하는 SETUP 트랜잭션(410)으로 구성된다. SETUP 트랜잭션(410)은 OUT 데이터 스테이지가 후속할 것을 지정한다. 데이터 스테이지는 DATA1 PID를 구비하는 OUT 트랜잭션(412)으로 구성된다. DATA0 PID를 구비하는 OUT 트랜잭션(414)이 OUT 트랜잭션(412)에 이어 계속된다. 호스트로부터 필요한 데이터를 전송하는데 필요한 트랜잭션만큼의 트랜잭션이 이 트랜잭션에 이어 계속된다. 이는 호스트내의 데이터 크기와 전송된 패킷의 크기에 달려있다. DATA PID는 데이터 스테이지에서 사용되는 OUT 트랜잭션 동안에 1 과 0 사이를 교번한다. 최종 OUT 트랜잭션 (416)이 데이터 스테이지를 종료한다. 상태 스테이지는 DATA1 PID를 구비하는 단일 IN 트랜잭션(418)으로 구성된다.
도 4b 에는 제어 판독 시퀀스가 도시되어 있다. 제어 데이터 IN 시퀀스는 셋업 스테이지, 데이터 스테이지, 및 상태 스테이지의 3 개의 시퀀스의 스테이지를 포함한다. 셋업 스테이지는 DATA0 PID를 구비하는 SETUP 트랜잭션(420)으로 구성된다. SETUP 트랜잭션(420)은 IN 데이터 스테이지가 계속된다는 것을 지정한다. 데이터 스테이지는 DATA1 PID를 구비하는 IN 트랜잭션(422)으로 구성된다. DATA0 PID를 구비하는 IN 트랜잭션(424)이 IN 트랜잭션(422)에 이어 계속된다. 디바이스로부터 필요한 데이터를 전송하는데 필요한 트랜잭션만큼의 트랜잭션이 이 토큰에 이어 계속된다. 이는 디바이스내의 데이터 크기와 전송된 패킷의 크기에 달려있다. DATA PID는 데이터 스테이지에서 사용되는 IN 트랜잭션 동안에 1 과 0 사이를 교번한다. 최종 IN 트랜잭션 (426)이 데이터 스테이지를 종료한다. 상태 스테이지는 DATA1 PID를 구비하는 하나의 OUT 트랜잭션(428)으로 구성된다.
도 4c 에는 제어 무-데이터 시퀀스가 도시되어 있다. 제어 무-데이터 시퀀스는 셋업 스테이지와 상태 스테이지 두 스테이지를 포함한다. 셋업 스테이지는 DATA0 PID를 구비하는 SETUP 트랜잭션(430)으로 구성되어 있다. 상태 스테이지는 DATA1 PID를 구비하는 하나의 IN 트랜잭션 (432)으로 구성되어 있다.
SETUP 트랜잭션을 도시하는 흐름도는 도 3 에 도시되어 있다. 트랜잭션은 호스트로부터 송신된 SETUP 토큰 (310)으로 시작된다. SETUP 트랜잭션은 데이터 필드로 DATA0 PID를 항상 포함한다. 그러면 디바이스는 SETUP 트랜잭션을 완료 위하여 ACK 핸드쉐이크를 송신함으로써 응답한다.
IN 트랜잭션을 도시하는 흐름도는 도 5 에 도시되어 있다. IN 트랜잭션은 호스트로부터 디바이스로 송신된 IN 토큰 (510)으로 시작한다. 디바이스는 적절한 DATA 패킷 (512) (DATAO 또는 DATA1 패킷)으로 응답하여야만 한다. 그렇지만 만약 디바이스가 잠시동안 DATA 패킷을 복귀시킬 수 없으면, 대신 NAK 핸드쉐이크 (514)를 복귀시킨다. 만약 디바이스가 DATA 패킷을 복귀시킬 수 없고 회복하기 위해서 호스트 개입을 필요로 하면, STALL 핸드쉐이크 (516)를 복귀시킨다. DATA 패킷 (512)으로 복귀하여, 호스트는 이 패킷의 응답시 ACK 핸드쉐이크 (518)로 응답한다.
OUT 트랜잭션을 도시하는 흐름도는 도 6 에 도시되어 있다. OUT 트랜잭션은 호스트로부터 디바이스로 송신된 OUT 토큰 (610)으로 시작한다. 그리고 호스트는 적절한 DATA 패킷 (612) (DATAO 또는 DATA1 패킷)을 송신한다. 만약 디바이스가 DATA 패킷 (612)을 에러 없이 수신하고 다른 패킷을 수신할 준비가 되어 있으면, ACK 핸드쉐이크 (614)를 복귀시킨다. 만약 디바이스가 DATA 패킷 (612)을 에러 없이 수신하지만 호스트의 패킷의 재송신이 필요하면, NAK 핸드쉐이크 (616)를 복귀시킨다. NAK 핸드쉐이크는 DATA 패킷의 목적 종단점이 잠시동안 DATA 패킷을 수신하는 것을 방지하는 상태일 경우 사용된다. 만약 디바이스가 DATA 패킷 (612)을 수신하지만 기능 정지 조건에 있으면, 호스트는 패킷의 재전송을 시도해서는 안된다는 것을 나타내기 위해 STALL 핸드쉐이크를 복귀시킨다. DATA 패킷 (612)이 CRC 또는 비트 스터핑 (stuffing) 에러와 함께 수신되면, 핸드쉐이크는 복귀되지 않는다.
유니버설 시리얼 버스는 만약 접속된 디바이스가 기대하지 않았던 SETUP 토큰을 수신하면 디바이스는 SETUP 토큰을 채택하여야만 한다는 것을 필요로 한다.
SETUP 토큰과 그에 대응하는 DATA0 패킷을 채택하기 위해서는, USB 디바이스는 이 데이터를 수신하기 위해서 메모리를 지정한다. 더군다나, USB 디바이스는 적어도 하나의 다른 종단점을 위한 토큰을 수신하기 위한 메모리를 할당한다. USB 디바이스는 16 개까지의 종단점을 지지할 수도 있으므로, 종종 메모리는 그 종단점의 토큰을 수신하고 데이터를 송·수신하기 위하여 각 종단점에 전용된다.
일정 시간 동안에는 하나의 종단점만이 활성화될 수도 있다. 그러므로, 비활성화된 종단점과 연계되는 메모리는 유니버설 시리얼 버스를 통하여 데이터를 송신하기 위하여 판독되지 않는다. 이와 유사하게, 비활성화된 종단점과 연계되는 메모리는 유니버설 시리얼 버스로부터의 데이터로는 기록되지 않는다. 그렇지만, 각 종단점은 통상적으로 할당된 메모리를 유지한다.
그러므로, 각 종단점을 위해 할당된 메모리 버퍼를 필요로 하지 않는 USB 디바이스가 필요하다. 더군다나, 제어 종단점을 위하여 전용된 메모리 버퍼를 필요로 하지 않으면서 기대하지 않던 SETUP 토큰을 수락할 수 있는 USB 디바이스가 필요하다.
본 발명의 목적은 데이터를 송신하기 위하여 다수의 종단점 파이프에 의하여 접근될 수도 있는 메모리 공간을 제공하는 것이다.
본 발명의 다른 목적은 데이터를 수신하기 위하여 다수의 종단점 파이프에 의하여 접근될 수도 있는 메모리 공간을 제공하는 것이다.
본 발명의 또 다른 목적은 준비 상태에서 SETUP 토큰을 항상 채택하는 것이다.
본 발명의 다른 목적은 제어 종단점 파이프에 전용되어야만 하는 메모리의 양을 감소시키는 것이다.
본 발명의 장점은 다른 종류의 종단점 파이프 사이에서 공유될 수도 있는 메모리 공간을 제공하는 것이다.
본 발명의 다른 장점은 프로세서가 메모리 내에서 제어 이전의 셋업 패킷을 시험하도록 허용하고 프로세서가 제어 이전의 나머지를 준비하도록 허용하는 것이다.
본 발명의 또 다른 장점은 제어기를 제공하는 것이고, 이는 제어 이전을 수행하며 자동적으로 적절한 핸드쉐이크로 응답한다.
본 발명의 특징은 데이터의 송신과 수신을 위한 이중 메모리 버퍼를 제공하는 것이다.
본 발명의 다른 특징은 유니버설 시리얼 버스로부터의 데이터를 메모리로 전송하기 위한 메모리 파이프라인을 제공하는 것이다.
본 발명의 일 태양에 따르면, 유니버설 시리얼 버스상의 제어 종단점을 동작하는 방법은 데이터의 송·수신을 위한 유니버설 시리얼 버스와 동작적으로 결합된 트랜시버를 제공하고, 유니버설 시리얼 버스를 통한 송신을 위해 데이터를 트랜시버에 제공하며 유니버설 시리얼 버스를 통해 트랜시버가 수신하는 데이터를 채용하며 트랜시버와 동작적으로 결합된 제어기를 제공하고, 제 1 메모리에 데이터를 저장할 수도 있고 제 1 메모리로부터 데이터를 복제할 수도 있는 제어기와 동작적으로 결합된 메모리를 제공하고, 명령을 제어기에 제공할 수도 있고 메모리에 데이터를 저장할 수도 있고 메모리로부터 데이터를 복제할 수도 있으며 메모리와 제어기와 동작적으로 결합된 펑션을 제공하며, 유니버설 시리얼 버스상의 호스트로부터, 호스트가 제어 이전을 수행할 것이라는 것을 나타내는 SETUP 토큰을 수신하고, 유니버설 시리얼 버스상의 호스트로부터 제어 이전은 적어도 하나의 데이터 트랜잭션을 구비하는 데이터 스테이지를 포함한다는 것을 나타내는 제 1 DATA0 패킷을 수신하며, 펑션이 할당을 수행하며 제어기에 제 1 메모리 주소를 제공하고 제 1 메모리 주소가 메모리의 부분내의 제 1 메모리 위치지정을 지시하는데 있어 적어도 하나의 데이터 트랜잭션을 위하여 메모리의 부분을 할당한다.
본 발명의 다른 태양에 따르면, 유니버설 시리얼 버스에 접속하기 위한 디바이스는 데이터 저장을 위한 버퍼 메모리; 버퍼 메모리와 유니버설 시리얼 버스와 동작적으로 결합되고, 버퍼 메모리 내에 주소를 유지하는 제 1 및 제 2 메모리 주소 포인터 및 종단점 파이프의 현재 상태를 유지하고 종단점 파이프가 유니버설 시리얼 버스를 통해 송신할 데이터의 포함 유무를 나타내는 종단점 파이프 상태 논리를 포함하는 제어기; 및 제어기와 버퍼 메모리와 동작적으로 결합되는 버퍼 메모리 내에 데이터를 저장하고 대응하는 주소를 제 1 및 제 2 버퍼 메모리 포인터에 지정하고, 제어기가 제어 판독 전송의 IN 토큰을 수신할 경우, 만약 종단점 파이프 상태 논리가 종단점 파이프가 데이터를 포함하지 않는다는 것을 나타내면 제어기가 자동적으로 NAK를 송신하며, 만약 종단점 파이프 상태 논리가 종단점 파이프가 데이터를 포함한다는 것을 나타내면 제어기가 자동적으로 상기 데이터를 송신하는 펑션을 활용한다.
이런 목적, 특징, 및 장점 및 다른 목적, 특징, 및 장점은 하기의 설명과 참조 도면을 참조하여 분명해 질 것이다.
도 1 은 유니버설 시리얼 버스 네트워크의 블록도.
도 2 는 본 발명에 따르는 유니버설 시리얼 버스에 대한 인터페이스 모듈의 하나의 바람직한 실시예의 블록도.
도 3 은 SETUP 트랜잭션 동안 USB 네트워크를 통한 데이터의 흐름을 도시하는 흐름도.
도 4a 는 제어 기록 전송 동안 USB 네트워크를 통한 데이터의 흐름을 도시하는 흐름도.
도 4b 는 제어 판독 전송 동안 USB 네트워크를 통한 데이터의 흐름을 도시하는 흐름도.
도 4c 는 제어 무-데이터 전송 동안 USB 네트워크를 통한 데이터의 흐름을 도시하는 흐름도.
도 5 는 IN 트랜잭션 동안 USB 네트워크를 통한 데이터의 흐름을 도시하는 흐름도.
도 6 은 OUT 트랜잭션 동안 USB 네트워크를 통한 데이터의 흐름을 도시하는 흐름도.
도 7 은 본 발명에 따르는 유니버설 시리얼 버스에 대한 인터페이스 모듈의 하나의 바람직한 실시예의 블록도.
도 8 은 도 7 의 종단점 제어기의 바람직한 실시예의 블록도.
도 9 는 본 발명에 따르는 유니버설 시리얼 버스에 대한 프로그래밍 모듈의 하나의 바람직한 실시예의 블록도.
도 10 은 본 발명의 하나의 실시예에 따르는 제어 트랜잭션 동안 종단점의 상태와 상태 전이를 나타내는 블록도.
※도면의 주요부분에 대한 부호의 설명※
100 : 호스트 PC 102 : 호스트 제어기
110, 122, 130 : 허브 210 : USB 디바이스
212 : RAM 220 : USB 인터페이스 모듈
214 : 레지스터 세트 216 : 버스 인터페이스 유니트 (BIU)
218 : 코어 버스 710 : 종단점 제어기
712 : 직렬 인터페이스 엔진 (SIE) 714 : 집적 USB 트랜시버
802 : 미디어 접근 제어 인터페이스 804 : 디바이스 펑션 블록
806 : 종단점 상태 머신 808 : 부분 종단점 파이프 기억 장치
810 : 주소 생성기 812 : 데이터 정렬 멀티플렉서
910 : 레지스터
912 : 종단점 배열 베이스 주소 레지스터 (EABAR)
920 : 메모리 922 : 종단점 파이프 배열
CW0 : 제 1 제어 워드 CW1 : 제 2 제어 워드
932 : 0 번 종단점 파이프 (EP0) (932)
CWP : 종단점 파이프 제어 워드 포인터(CWP)
BS : 버퍼 상태 BA : 버퍼 주소
BP : 버퍼 페이지 BR : 버퍼 라운딩
TE : 토글 인에이블 TI : 타입 등시성
IC : 패킷 완료에 대한 인터럽트 IE : 패킷 에러에 대한 인터럽트
BC : 바이트 카운터 IRDY : 입력 준비
ORDY : 출력 준비 OWT : 출력 대기
CRCE : CRC 에러 BUFE : 버퍼 에러
IWT : 입력 대기 ICMP : 입력 완료
OCMP : 출력 완료 TKNE: 토큰 에러
SYNE : 등시성 동기 에러 DATE: 데이터 에러
BR : 버퍼 라운딩 비트 TE : 토글 인에이블 비트
PID : 데이터 패킷 식별자 BC : 바이트 카운트 비트
918 : 종단점 명령 레지스터 EPN : 종단점 파이프 번호
CMD : 종단점 명령 CMD.IENB : 입력 인에이블
CMD.IRDY : 입력 준비 CMD.ISRDY : 입력 등시성 준비
TI : 제어 워드의 타입 필드 I_IDL: 입력 유휴
CMD.OENB : 출력 인에이블 CMD.RDY : 출력 준비
CMD.OSENB : 출력 등시성 인에이블 CMD.OSRDY : 출력 등시성 준비
CMD.SRDY : 셋업 준비 CMD.DISAB : 디스에이블
CMD.HALT : 기능 정지 CTL : 제어
CWP : 제어 워드 포인터 1010 : DIS 상태
1020 : 셋업 준비 (S_RDY 상태) 1030 : 셋업 활성화 (S_ACT 상태)
1050 : 입력 유휴 (I_IDL 상태) 1052 : 입력 준비 (I_RDY 상태)
1054 : 입력 활성화 (I_ACT 상태) 1040 :출력 유휴 (O_IDL 상태)
1044 : 출력 활성화 (O_ACT 상태) 1070 : HALT/STL 상태
본원에 기재된 발명은 본원의 출원인이 모든 권리를 소유하고 있고, 참조로 본 명세서에 포함되는, 미국 출원일이 97년 1월 7일이고 미국특허출원번호가 제09/003,963호이며 발명의 명칭이 'Apparatus and Method of Implementing a Versatile USB Endpoint Pipe'인 미국출원; 미국 출원일이 98년 1월 7일이고 미국특허출원번호 제09/004,003호를 우선권 주장하여 본원과 동일자로 99년 1월 6일 한국에 출원된 발명의 명칭이 '이중 버퍼링을 지원하는 유니버설 시리얼 버스 종단점 파이프의 실시장치 및 실시방법'인 한국출원; 미국 출원일이 98년 1월 7일이고 미국특허출원번호 제09/004,004호를 우선권 주장하여 본원과 동일자로 99년 1월 6일 한국에 출원된 발명의 명칭이 '유니버설 시리얼 버스 디바이스 내부로 및 외부로 데이터를 송신 및 수신하기 위한 장치 및 방법'인 한국출원; 미국 출원일이 98년 1월 7일이고 미국특허출원번호가 제09/003,897호이며 발명의 명칭이 'Apparatus and Method of Transmitting and Receiving USB Isochronous Data'인 미국출원; 미국 출원일이 98년 1월 7일이고 미국특허출원번호 제09/004,005호를 우선권 주장하여 본원과 동일자로 99년 1월 6일 한국에 출원된 발명의 명칭이 '복합 유니버설 시리얼 버스 제어기에 인터페이스를 제공하기 위한 장치 및 방법'인 한국출원; 및 미국 출원일이 98년 1월 7일이고 미국특허출원번호 제09/003,925호를 우선권 주장하여 본원과 동일자로 99년 1월 6일 한국에 출원된 발명의 명칭이 '유니버설 시리얼 장치를 초기화하는 장치 및 방법'인 한국출원에 기재된 더 큰 발명군의 일태양이다.
추가적으로, 내셔널 세미컨덕터 (National Semiconductor) 문서 USB Node Interface Architecture Specification, Revision 0.6 은 본 출원과 동일자로 심사참고자료로서 제출하고 참조에 의해 본 명세서에 포함된다.
도 2 를 참조하면, 본 발명에 따르는 USB 디바이스 (210)가 설명되어 있다. 디바이스의 바람직한 실시예는 종래의 USB 디바이스보다 많은 장점을 제공하며 USB 규약 수정안 1.0 의 조건을 충족한다. USB 디바이스 (210)는 USB 인터페이스 모듈 (220), 레지스터 세트 (214), RAM (212), 및 버스 인터페이스 유니트 (BIU) (216)를 포함한다.
인터페이스 모듈 (220)은 USB 네트워크에 접속하여 데이터를 송·수신한다. 인터페이스 모듈 (220)은 레지스터 세트 (214), RAM (212), 및 BIU (216)에도 접속한다. 코어 버스 (218)는 인터페이스 모듈 (220)이 레지스터 세트 (214)와 RAM (216)에 접근하도록 한다.
BIU (216)는 마스터로서의 판독과 기록 송신과 슬레이브로서의 레지스터 접근을 수행함으로써 코어 버스 (218) 주소 공간으로의 접근을 제공한다. 게다가 BIU는 데이터 파이프라인을 제공한다. 데이터 파이프라인은 메모리 위치로 가는 데이터를 임시적으로 유지하는데 사용될 수도 있다.
도 7 에는 도 1 의 USB 인터페이스 모듈 (220)이 도시되어 있다. USB 인터페이스 모듈 (220)은 USB 디바이스 (210)를 USB 네트워크에 접속하기 위한 인터페이스를 제공한다. 인터페이스 모듈 (220)은 집적 USB 트랜시버 (714), 직렬 인터페이스 엔진 (SIE) (712), 및 종단점 제어기 (710)를 포함한다.
트랜시버 (714)는 USB 네트워크와의 물리적 인터페이스를 제공한다. 트랜시버는 USB 규약의 수정안 1.0 의 물리적 계층 구조에 해당하는 드라이버와 리시버를 모두 포함한다.
직렬 인터페이스 엔진 (712)은 트랜시버 (714)와 동작적으로 결합되어 있으며 물리적 (PHY) 레벨과 미디어 접근 제어 (MAC) 레벨로 구성된다. 물리적 레벨은 디지털 클럭 복구 회로, 디지털 글리치 필터, End_Of_Packet 검출 회로 및 비트 스터핑 및 디스터핑 (de-stuffing) 논리 회로를 포함한다.
미디어 접근 제어 레벨은 패킷 포맷, 주기적 리던던시 검사 (CRC)의 생성 및 검사, 및 종단점 주소 검출을 포함하며, 소정의 종단점 파이프를 위하여 종단점 제어기 (710) 에 의해 결정된 NAK, ACK 및 STALL 응답을 보내기 위해 필요한 제어를 제공한다. 또한, 직렬 인터페이스 엔진 (712) 은 리셋 (Reset), 중단 (Suspend), 재시작 (Resume) 과 같은 USB 특정 이벤트를 검출하고 보고하는 책임을 갖는다.
종단점 제어기 (710)는 직렬 인터페이스 엔진 (712) 과 동작적으로 결합되어 있으며, USB 펑션 종단점을 위한 인터페이스를 제공한다.
종단점 제어기 (710)는 코어 버스 (218) 상에서 마스터 및 슬레이브로 동작하며 모든 USB 종단점 클래스, 즉, 제어, 벌크, 등시성 및 인터럽트를 지원한다. 슬레이브 접근은 레지스터 세트 (214) 의 내부 제어 레지스터에 접근하는데 사용되며, 마스터 접근은 종단점과 RAM (212) 간의 데이터 송신에 사용된다.
종단점 제어기 (710)는 각 종단점 파이프에 대한 개별 상태 정보를 유지한다. NAK 또는 STALL 핸드쉐이크로 응답하는 것과 같은 즉시 결정에 필요한 상태 정보는 부분 종단점 파이프 기억장치내의 각 종단점 파이프를 위해 항상 종단점 제어기 (710) 내에 보관된다. 이 정보는 직렬 인터페이스 엔진 (712)의 미디어 접근 제어층이 적절한 ACK, NAK 및 STALL 응답을 하도록 관리하는데 사용된다. 종단점 동작에 필요한 다른 정보는 RAM (212) 의 종단점 배열 내에 보관된다.
도 8 에는 종단점 제어기 (710)의 구조가 더욱 상세히 설명되어있다. 종단점 제어기 (710)는 몇 개의 기능적 블록으로 구성된다. 자세하게는, 종단점 제어기 (710)는 미디어 접근 제어 (MAC : Media Access Control) 인터페이스 (802), 디바이스 펑션 블록 (804), 종단점 상태 머신 (806), 부분 종단점 파이프 기억 장치 (PEPS : Partial Endpoint Pipe Storage)(808), 주소 생성기 (810) 및 데이터 정렬 멀티플렉서 (DALM : Data Alignment Multiplexor) (812) 를 포함한다.
미디어 접근 제어 인터페이스 (802) 는 종단점 상태 머신 (806) 및 데이터 정렬 멀티플렉서 (812)와 결합되어 직렬 인터페이스 엔진 (712)의 미디어 접근 제어 레벨에 인터페이스를 제공한다. 종단점 제어기 (710) 의 어떤 도메인은 코어 버스 (218)상의 클럭을 사용하여 동작하며, 다른 도메인은 종단점 제어기 (710)의 지역 클럭을 사용하여 동작한다. 미디어 접근 제어 인터페이스 (802)는 종단점 제어기 (710)로부터 송신된 각 바이트에 대해 비동기 핸드쉐이크로서 다양한 도메인간의 데이터 바이트를 동기한다.
디바이스 펑션 블록 (804)은 주소 검색 및 생성과 같은 디바이스 기능을 수행한다. 디바이스 펑션 블록 (804)은 종단점 상태 머신 (806)과 동작적으로 결합되어 현재 접근된 종단점 파이프에 관련한 정보를 제공한다.
종단점 상태 머신 (806)은 활성 종단점 파이프의 상태를 유지하는 것과 관련된 펑션을 수행한다. 종단점 상태 머신 (806)은 하드웨어와 소프트웨어의 상호작용을 동기시키기 위하여 잘 정의된 전이를 가진 활성 종단점 파이프의 상태를 유지한다. 현재 상태는 종단점 상태 레지스터를 통해 호스트 제어기에 알려진다. 바람직한 실시예에서는, 어떤 주어진 시점에서도 오직 하나의 종단점 파이프만이 활성화된다. 따라서, 종단점 파이프 상태 머신 (806)은 모든 종단점 파이프들 사이에 공유된다.
부분 종단점 파이프 기억 장치 (808)는 각 종단점 파이프에 대하여 항상 NAK 또는 STALL 핸드쉐이크로 응답하는 것과 같은 즉시 결정에 필요한 상태 정보를 저장한다.
주소 생성기 (810)는 코어 버스를 통해 RAM에 기록과 판독에 사용하는 필요한 주소를 제공한다.
데이터 정렬 멀티플렉서 (812)는 코어 버스를 통해 송신하기 전에 필요한 데이터 바이트 정렬을 제공한다.
상술한 종단점 파이프 배열의 바람직한 실시예를 더욱 상세히 설명한다. 도 9 를 참조하면, 바람직한 프로그래밍 모델이 도시되어 있다. 이 프로그래밍 모델은 USB 디바이스의 동작을 제어하고 감시하는데 사용되는 다수의 레지스터 (910)를 나타낸 것이다. 또한, 이 모델은 메모리 (920)에 위치한 종단점 파이프 배열 (922)을 포함한다. 종단점 파이프 배열 (922)은 특정 종단점 전송에 한정되는 종단점 매개 변수를 제어하는데 사용된다.
도 9 의 프로그래밍 모델은 레지스터 세트 (910)와 메모리 (920)를 포함한다. 레지스터 세트 (910)의 부분 및 메모리 (920)의 부분은 특정 종단점 전송을 감시하고 제어하도록 조율한다. 또한, 도 9 는 본 발명에 따른 레지스트 세트 (910) 와 메모리 (920)간의 관계의 바람직한 실시예를 나타낸다.
종단점 파이프 배열 (922)은 16 개의 종단점 파이프 각각에 대한 제 1 제어 워드 (CW0) 및 제 2 제어 워드 (CW1)를 포함한다. 종단점 파이프 배열 (922)은 종단점 배열 베이스 주소 레지스터 (EABAR)(912)에 저장된 주소로 메모리에 위치된다. 이 종단점 파이프 배열은 4 비트의 종단점 파이프 번호 및 1 비트의 종단점 파이프 제어 워드 포인터에 의해 색인된다. 도시된 바와 같이, 0 번 종단점 파이프 (EP0) (932)는 종단점 파이프 배열 (922)의 제어 워드의 첫 번째 쌍을 가리킨다. 이와 유사하게, EP1는 제어 워드의 두 번째 쌍을 가리키고, EP2는 제어 워드의 세 번째 쌍을 가리키는 방식이다. EP15는 바람직한 실시예에서의 제어 워드의 마지막 쌍을 가리킨다.
제어 워드는 활성 종단점 파이프를 동작시키는데 필요한 모든 정보를 포함한다. 블록 (924) 에 도시된 바와 같이, 각 제어 워드는 종단점 파이프를 위한 상태, 매개 변수, 주소 및 크기 정보를 포함한다. 각 종단점 파이프에 대한 2 개의 그러한 엔트리가 있다. 다음에 접근될 제어 워드는 종단점 파이프 제어 워드 포인터(CWP) 값에 의해 결정된다. 현재 준비 상태인 종단점 파이프에 IN, OUT 또는 SETUP 토큰이 수신된 직후, 현재의 제어 워드 포인터에서의 선택된 종단점 파이프의 제어 워드는 토큰에 어떻게 응답해야할지를 결정하기 위하여 판독된다. 전송 끝에, 완료 상태가 기록될 경우, 제어 워드는 현재 상태로 갱신되고, CWP는 증가하며, 다른 제어 워드가 판독된다. 중간 상태가 기록될 경우, 제어 워드의 최상위 바이트만이 갱신된다. 제어 워드 포맷은 다음과 같다:
비트 펑션 라벨
31-28 버퍼 상태 (BS)
27 예약 (reserved)
26-16 버퍼 주소 (BA)
15 버퍼 페이지 (BP)
14 버퍼 라운딩 (BR)
13 토글 인에이블 (TE)
12 타입 등시성 (TI)
11 패킷 완료에 대한 인터럽트 (IC)
10 패킷 에러에 대한 인터럽트 (IE)
9-0 바이트 카운터 (BC)
소프트웨어와 종단점 파이프 제어기 (EPC)간의 버퍼의 제어를 동기시키기 위해, 소프트웨어 및 종단점 파이프 제어기 (EPC)에 의해 4-비트 버퍼 상태 (BS)가 갱신된다. EPC는 버퍼의 사용을 나타내는 상태를 기록한다. 이 필드는 노드 펌웨어에 의해 출력 준비, 입력 준비, 셋업 준비, 스킵, 기능 정지 및 디스에이블로 설정된다. 다른 모든 값은 EPC에 의하여 설정된다. 또한, EPC는 에러 조건에서는 기능 정지 및 디스에이블 값도 기록할 수 있다. 버퍼 상태가 입력/출력 완료 상태 및 에러 코드를 포함하는 완료 값중 하나일 경우, 버퍼는 노드 펌웨어에 의해 재 요구된다.
버퍼 상태 (BS)는 다음과 같은 값을 갖는다.
0 : Skip. 이 값은 출력 준비 명령과 함께 사용된다. 스킵은 수신된 다음 데이터 패킷이 무시되도록하고, 제어 워드 포인터가 증가 되도록한다. 또한, 제어 종단점에 대해서는, 스킵은 종단점 파이프 상태를 입력/준비 상태에서 출력/입력 유휴 상태로 전환시킨다. TE 및 TI의 설정은 어떤 핸드쉐이크가 복귀되었는지와 종단점 파이프의 다음 상태를 결정한다. TE 또는 TI 중 어느 것도 설정되지 않을 경우, NAK가 복귀된다. 만약 TE가 아니고 TI가 설정되면, 어떤 핸드쉐이크도 복귀되지 않는다. 만약 TE가 설정되면, ACK가 복귀되고, 올바른 PID를 갖는 패킷이 수신될 경우 완료 상태가 기록된다.
1: 입력 준비 (IRDY). 이 값은 버퍼가 IN 토큰에 응답하여 송신하기 위하여 데이터로 기록되었음을 나타낸다.
2: 출력 준비 (ORDY). 이 값은 기록을 위해 버퍼가 할당되었음을 나타낸다.
3: 셋업 준비 (SRDY). 이 값은 기록을 위해 버퍼가 할당되었음을 나타낸다. 이 값은 제어 기록과 제어 판독 동작의 제 1 전송 동안 제어 종단점 상에서만 사용된다. 제어 워드 0 에만 기록한다.
4: 출력 대기 (OWT). 이 값은 호스트로부터 OUT 데이터를 수신하는 동안 에러가 발생했다는 것을 나타낸다. 이것은 비트 스터프 (stuff) 에러 검출을 포함한다. 완료 상태로 취급되는 등시성의 OUT 종단점의 경우를 제외하고 이것은 중간 상태로 간주되므로 재시도가 기대된다.
5: CRC 에러 (CRCE). 이 값은 OUT 트랜잭션의 끝에서 불량 CRC가 검출되었음을 나타낸다. 완료 상태로 취급되는 등시성의 OUT 종단점의 경우를 제외하고, 이것은 중간 상태로 간주되므로 재시도가 기대된다.
6: 버퍼 에러 (BUFE). 이 값은 OUT 동안에 데이터가 메모리에 기록될 수 있는 것 보다 더 빨리 USB 로부터 수신되었음을 나타낸다. IN 동안에는, USB 데이터 속도를 따라갈 수 있을 정도의 빠른 속도로 데이터는 메모리로부터 판독되지 않음을 나타낸다. 이 종단점에서 재시도가 기대된다.
7: 입력 대기 (IWT). 이 값은 버퍼가 종단점 제어기에 의해 유지되고 있고, 다음 기회에 이 버퍼를 송신하기 위한 시도 또는 재시도를 위해 대기중임을 나타낸다. 이는 승인 신호가 없는 경우에 발생된다.
8: 입력 완료 (ICMP). 이 값은 입력 동작이 성공적으로 완료됐음을 나타낸다. 버퍼는 해제될 수도 있다.
9: 출력 완료 (OCMP). 이 값은 버퍼가 데이터로 가득 차있고 에러가 검출되지 않았음을 나타낸다.
10: 토큰 에러 (TKNE). 이 값은 이 제어 종단점 파이프의 현재 내용에 대해 잘못된 타입의 토큰이 수신되었음을 나타낸다. 만약 이것이 출력 버퍼였다면, 종단점은 정지 상태가 된다. 만약 이것이 입력 버퍼였다면, NAK가 송신되고 다른 제어 워드의 상태가 검사된다. 이는 완료 상태로 간주된다.
11: 등시성 동기 에러 (SYNE). 이 값은 버퍼로 데이터가 TE=1 이고 TI=1 인 상태에서 수신되었으나, CWP 가 FNR 의 LSB 와 동등하지 않았음을 나타낸다. 이는 완료 상태로 간주된다.
12: 데이터 에러 (DATE). OUT 데이터에 대해, 제어워드.BR 이 설정되지 않고 호스트로부터 수신된 데이터의 양이 기대했던 것보다 적은 경우에 할당된 버퍼가 OUT 데이터를 저장하기에 충분히 크지 않았음을 나타낸다. IN 데이터에 대해서는, 만약 버퍼링 에러가 발생했고, 제어워드.TE가 설정되지 않았거나 제어워드.TI가 설정되었으면, 이것이 설정된다. 이는 완료 상태로 간주된다.
13: 예약 (Reserved)
14: 정지. 현재의 종단점 파이프를 HALT 상태에 진입 되도록 하거나, 종단점이 HALT 상태에 진입하였음을 나타낸다.
15: 디스에이블. 현재의 종단점 파이프가 DISABLE 상태에 진입 되도록 하거나, 종단점이 DISABLE 상태가 되었음을 나타낸다.
버퍼 주소 (BA)는 버퍼 주소의 11 개 하위 비트를 유지한다. 버퍼는 정렬된 더블-워드 (double-word) 경계에서 시작하여야 하며, 어떤 바이트 경계에서도 종료할 수 있다. 완전 전송이 종료되는 시점에서, 버퍼 주소의 잔여 값이 기록된다. 상태가 입력 또는 출력 대기에 기록될 경우와 같은 불완전 전송이 종료되는 시점에서는, 이 필드는 중복 기재되지 않는다. OUT 버퍼의 경우, 저장된 제 1 바이트는 PID 다음의 바이트이다. 이와 유사하게, IN 버퍼의 경우에도, 그 주소는 송신될 데이터의 제 1 바이트, 즉 패킷 내의 PID 바로 다음 바이트를 가리킨다. IN 토큰이 IS_RDY 상태로부터 수신되고 제어 워드가 1 로 설정된 IS 필드를 갖지 않았을 경우를 제외하고, CRC는 자동적으로 계산되어 패킷에 첨부된다.
버퍼 페이지 비트(BP)는 버퍼 페이지 A 레지스터 (BPA : 912)와 버퍼 페이지 B 레지스터 (BPB) (916) 사이에서 선택한다. BP 는 0 상태의 BPA 를 선택하고, 현재의 입력/출력 버퍼의 상위 메모리 주소로 사용하기 위하여 1 상태의 BPB 를 선택한다.
버퍼 라운딩 비트 (BR) 는 OUT 트랜잭션용으로 사용된다. 이것은 수신된 데이터 패킷이 그 데이터 버퍼보다 더 작은지 아닌지를 나타낸다. BR 이 0 일 경우에, 그 데이터 패킷은 정의된 데이터 버퍼를 정확히 채워야만 한다. 패킷이 버퍼에 정확히 맞지 않을 경우에는 버퍼 오버런(overrun) 또는 버퍼 언더런(underrun)이 주어진다.
출력 완료 또는 데이터 에러 버퍼 상태가 함께 판독될 경우에, BR은 수신된 PID 의 값을 나타낸다. 특히 이는 DATAO에 대하여 0 이고 DATA1에 대하여는 1 이다.
토글 인에이블 비트 (TE)는 DATA0 또는 DATA1 중 하나의 값을 가지는 데이터 패킷 식별자 (PID)와 OUT 토큰에 대한 제어 워드 포인터를 비교하는데 사용되며, IN 토큰에 대한 데이터 패킷 식별자를 생성하는데 사용된다.
TE가 0 상태일 경우, 데이터 토글 PID는 OUT 트랜잭션에서 검사되지 않고, IN 토큰에 대응하는 현재의 CWP 값을 기초로 하여 생성된다. ACK가 수신되지 않아도, 각각의 트랜잭션 이후에 CWP는 증가(반전)된다. 등시성의 종단점에 대하여, CWP가 프레임 수 (FNR)의 최하부 비트에 일치할 때까지, OUT 데이터는 메모리에 기록되지 않는다. 이것은 IN 토큰에 대응하여 송신된 데이터에 영향을 주지 않는다. 데이터 토글은 SETUP 토큰과 함께 송신된 데이터를 수신하기 위해 할당된 버퍼에 대해 인에이블 되서는 안된다.
TE가 1 일 경우에는 데이터 토글 PID는 OUT 트랜잭션에서 검사되며, IN 토큰에 대응하여 CWP의 현재 값에 기초하여 생성된다. OUT 트랜잭션 동안, TE는 PID 값 (DATA0 또는 DATA1)이 CWP와 일치하지 않는 아우트 패킷에 응답하여 ACK가 송신되도록 한다. IN 트랜잭션 동안, 응답 타임 아웃 주기 내에 ACK 핸드쉐이크 신호가 복귀된다면, 각 트랜잭션 이후에 CWP는 증가(반전)된다. 등시성의 종단점에 대하여, OUT 데이터는 항상 메모리에 기록되지만, FNR의 최하부 비트가 CWP와 동등하지 않으면, ISO sync 에러 버퍼 상태가 다시 기록된다.
타입 등시성 비트 (TI)는 종단점 파이프가 등시성인지 아닌지를 나타낸다. TI가 1 상태일 경우 데이터는 등시성이다. TI가 0 상태일 경우, 종단점 파이프는 제어, 벌크, 또는 인터럽트 종단점 파이프일 수 있다.
패킷 완료상에 대한 인터럽트 (IC) 비트는 버퍼 상태가 패킷 에러상의 입력 또는 출력 완료에 기록될 때마다 또는 종단점 파이프가 기능정지 되었을 때 설정된다.
패킷 에러 비트에 대한 인터럽트 (IE)는 버퍼 상태가 버퍼 에러 코드중 하나에 기록될 때마다, 또는 종단점 파이프가 기능정지될 때 설정된다. IC와 IE 둘 다 설정될 경우, CRC 와 비트 스터프 에러는 연계된 버퍼가 정상 동작 중에 재사용 되지 않도록 한다. 이는 연관된 버퍼의 계속적인 진단 평가가 가능하도록 한다.
바이트 카운트 비트(BC)는 사용될 데이터 버퍼의 크기를 나타낸다. 버퍼는 우수 이중-워드 경계에서 시작하여야 하지만, 그렇지만 어떤 바이트 경계에서도 끝날 수 있다. IN 트랜잭션동안에는, BC는 송신될 데이터의 크기를 나타낸다. OUT 트랜잭션동안에는, BC는 데이터가 수신될 수 있는 버퍼의 크기를 나타낸다. BC는 길이 0 의 데이터 패킷을 나타내기 위하여 0 을 유지할 수도 있다. 완전 전송의 종료 시점에서, 바이트 카운터의 잔류 값은 기록된다. 상태가 입력 또는 출력 대기에 기록될 경우와 같은 불완전 전송의 종료 시점에서는 필드는 중복 기록되지 않는다.
바람직한 실시예에서, 종단점 명령 레지스터 (ECR : 918)는 전체 워드에 관한 판독/기록 레지스터이다. ECR (918)은 소정의 종단점 명령을 수행하는데 사용된다. 재설정이 되면, 이 레지스터의 내용은 삭제된다. ECR (918) 레지스터 포맷은 다음과 같다 :
비트 기능 라벨
15 - 8 예비 영역
7 - 4 종단점 파이프 번호 (EPN)
3 - 0 종단점 명령 (CMD)
종단점 파이프 번호 (EPN)는 명령이 수행되는 종단점 파이프를 결정한다. 바람직한 실시예에서, 이 레지스터는 고속의 버스 인터페이스 논리로 구현될 수 있다. 데이터는 비동기 인터페이스를 통해 통과한다. 2개의 신호는 종단점 제어기로부터 다시 복귀되는데, 하나는 명령이 처리되었다는 것과 명령 값이 '0'으로 설정되어야 한다는 것을 나타내고, 다른 하나는 명령은 처리될 수 없다는 것과 'F'로 설정되어야 한다는 것을 나타낸다.
종단점 명령 (CMD)은 다음의 값을 가진다 :
0000 : 완료 (Complete). 이 값은 이전의 명령이 완료되었고 종단점 제어기가 또 다른 명령을 수용할 준비가 되어 있다는 것을 나타낸다.
0001 : 입력 인에이블 (Input Enable) (CMD.IENB). 이 값은 소정의 종단점 파이프가 기능 정지(정지) 혹은 디스에이블 상태로부터 입력 유휴 상태 (I_IDL)에 진입시킨다. 소정의 종단점 파이프에 대한 제어 워드 포인터는 0 으로 재설정된다. 만약 현재 상태가 디스에이블 또는 기능 정지가 아니라면, 올바르지 않은 명령이 이 종단점에서 시도되었고, 그 명령이 무시되었다는 것을 나타내는 'F'가 복귀된다.
0010 : 입력 준비 (Input Ready) (CMD.IRDY). 현재 입력 유휴 상태 (I_IDL)에 있다면, 이 값은 소정의 종단점 파이프를 입력 준비 상태 (I_RDY)에 진입시킨다. 입력 준비 버퍼 상태 (I_RDY)를 가지는 제어 워드가 해당 종단점에 대한 종단점 배열에 기록된 후에 이 명령이 발송된다. 이 명령은 메모리내의 제어 워드가 판독되도록 하지 않는 대신에 IN 토큰의 수신에 응답하여 판독되는 것을 허용한다. 만약 종단점의 현 상태가 입력 유휴 (I_IDL)이 아니면, 이 명령은 무시된다. 만약, 현 상태가 출력 또는 셋업 상태 또는 디스에이블 또는 기능 정지 중의 한 경우라면, 이 종단점에 적절하지 않은 명령이 시도되었다는 것을 나타내기 위하여 'F'가 복귀된다.
0011 : 입력 등시성 준비 (Input Isochronous Ready) (CMD.ISRDY). 이 값은 소정 종단점 파이프의 현재 상태가 입력 유휴 상태 (I_IDL)면, 소정 종단점 파이프를 입력 등시성 준비 상태 (IS_RDY)에 진입시킨다. 이 명령은 입력 준비 버퍼 상태를 가지는 제어 워드가 해당 종단점에 대한 종단점 배열에 기록된 후에, 이 명령이 발송된다. 이 명령은 메모리내의 제어 워드가 판독되도록 하지 않는 대신에 IN 토큰의 수신에 응답하여 판독되는 것을 허용한다. 제어 워드의 타입 필드(type field : TI)는 등시적으로 설정되도록 기대되지만 검사되지는 않는다. 종단점의 현 상태가 입력 유휴 (I_IDL)가 아니라면, 이 명령은 무시된다. 만약, 현 상태가 출력 또는 셋업 상태 중 하나이거나 디스에이블 또는 기능 정지이면, 이 종단점에 적절하지 않은 명령이 시도되었다는 것을 나타내기 위하여 'F'가 복귀된다.
0100 : 출력 인에이블 (Output Enable : CMD.OENB). 이 값은 소정 종단점이 기능 정지 또는 디스에이블 상태에서 출력 유휴 상태 (O_IDL)로 진입하도록 한다. 소정 종단점 파이프에 대한 제어 워드 포인터는 0 으로 재설정된다. 만약 현재 상태가 디스에이블 또는 기능 정지가 아니라면, 올바르지 않은 명령이 이 종단점에 시도되었다는 것을 나태내기 위하여 'F'가 복귀되고, 그 명령은 무시된다.
0101 : 출력 준비 (Output Ready : CMD.RDY). 만약 소정 종단점 파이프가 현재 출력 유휴 상태 (O_IDL)에 있다면, 이 값은 소정 종단점 파이프를 출력 준비 상태 (O_RDY)에 진입시킨다. 출력 준비 상태를 가지는 제어 워드가 해당 종단점에 대한 종단점 배열에 기록된 후에, 이 명령은 발송된다. 이 명령은 메모리내의 제어 워드가 판독되도록 하지 않는 대신에 OUT 토큰 수신에 응답하여 판독되도록 한다. 종단점의 현 상태가 출력 유휴 (I_IDL)이 아니라면, 명령은 무시된다. 만약, 현 상태가 입력 상태, 기능 정지, 또는 디스에이블 중의 한 경우라면, 이 종단점에 적절하지 않은 명령이 시도되었다는 것을 나타내기 위하여 'F'가 복귀된다.
0110 : 출력 등시성 인에이블 (Output Isochronous Enable : CMD.OSENB). 이 값은 소정 종단점 파이프가 기능 정지 또는 디스에이블 상태에서 출력 등시성 유휴 상태 (OS_IDL)로 진입시킨다. 소정 종단점 파이프에 대한 제어 워드 포인터는 0 으로 재설정된다. 만약 현재 상태가 디스에이블 또는 기능 정지가 아니라면, 올바르지 않은 명령이 이 종단점에서 시도되었다는 것을 나타내기 위하여 'F' 가 복귀되고, 명령은 무시된다.
0111 : 출력 등시성 준비 (Output Isochronous Ready : CMD.OSRDY). 만약 소정 종단점 파이프가 현재 출력 등시성 유휴 상태 (OS_IDL)에 있다면, 이 값은 소정 종단점 파이프를 출력 등시성 준비 상태 (OS_RDY)에 진입시킨다. 출력 준비 상태를 가지는 제어 워드가 해당 종단점에 대한 종단점 배열에 기록된 후에, 이 명령은 발송된다. 이 명령은 메모리내의 제어 워드가 판독되도록 하지 않는 대신에 OUT 토큰 수신에 응답하여 판독되도록 한다. 종단점의 현 상태가 출력 등시성 유휴가 아니라면, 명령은 무시된다. 만약, 현 상태가 입력 상태, 기능 정지, 또는 디스에이블 중의 한 경우라면, 이 종단점에 적절하지 않은 명령이 시도되었다는 것을 나타내기 위하여 'F'가 복귀된다.
1000 : 셋업 준비 (Setup Ready : CMD.SRDY). 이 값은 소정의 종단점 파이프를 셋업 준비 상태 (S_RDY)에 진입시킨다. 이 명령은 출력 준비 상태를 가지는 제어 워드가 해당 종단점에 대한 종단점 배열에 기록된 후에, 이 명령은 발송된다. 이 명령은 메모리내의 제어 워드가 판독되도록 하지 않는 대신에 SETUP 토큰 수신에 응답하여 판독되도록 한다. 만약, 종단점의 현 상태가 기능 정지 또는 디스에이블 중의 하나가 아니면, 이 명령은 무시된다.
1001 : 디스에이블 (Disable : CMD.DISAB). 이 값은 소정 종단점 파이프를 디스에이블 상태에 진입되도록 한다. 이 명령은 어떤 상태로부터도 즉시 발생한다. 만약, 현재 종단점 파이프가 활성화되어있는 경우, 상태는 제어부에 기록되어 종단점이 비활성되었다는 것을 나타낸다.
1010 : 기능 정지 (Stall : CMD.HALT). 이 값은 소정 종단점 파이프를 어떠한 상태로부터도 기능 정지 상태 (HALT)에 진입 되도록 한다. 이는 어떤 상태로부터도 즉시 발생한다. 만약, 현재 종단점 파이프가 활성화되어 있으면, 상태는 제어부에 기록되어 종단점이 기능 정지되어 있다는 것을 나타낸다.
1011 - 1100 : 예비. 이 값들은 아무런 동작을 수행하지 않으며, 0을 복귀시킨다.
1110 : 토글 CWP. 이 값은 제어 워드가 토글되도록 한다. 이 값은 데이터 페이즈 동안에 송신 또는 수신되는 홀수의 패킷을 가지는 제어 이전과 함께 사용된다.
1111 : 에러. 이 값은 현재 상태에 대한 종단점 파이프에서 부적절한 명령이 시도되었다는 것과 새로운 명령이 받아들여질 수도 있다는 것을 나타낸다.
본 출원의 발명과 관련된 UDR의 부분은 8-비트 종단점 파이프 상태이다. 이 상태는 현재 색인된 종단점 파이프에 대하여 복귀되는 각 종단점 파이프를 위하여 저장된다. 무효 종단점 파이프가 색인되면, 0 이 복귀된다. ECR 레지스터 포맷은 다음과 같다 :
비트 펑션의 라벨
7 제어(CTL)
6 제어 워드 포인터(CWP)
5-4 예비
3-0 종단점 파이프 상태 (EPS)
제어 (CTL) : 제어는 종단점 파이프가 SETUP 토큰을 포함하는 제어 시퀀스를 받아들일 수 있으면 표명된다. 이 비트는 이 종단점 파이프에 대해 CMD.SRDY가 수행된 후 설정되고, 종단점이 디스에이블될 때까지 설정된 상태로 남아 있다.
제어 워드 포인터 (CWP) : 제어 워드 비트가 0 일 때, 이 종단점의 배열내의 종단점의 제어 워드 0 이 다음에 접근된다. 제어 워드 비트가 1 일 때, 이 종단점의 제어 워드 1 은 그 다음에 접근된다. 이는 종단점이 인에이블될 때마다 0 으로 설정된다.
종단점 파이프 상태 (EPS)는 다음의 값들을 가지고 있다 :
값 상태
0 디스에이블 DIS
1 입력 유휴 I_IDL
2 입력 준비 I_RDY
3 입력 활성화 I_ACT
4 기능 정지 HALT
5 입력 미스 ACK I_MAK
6 입력 등시성 준비 IS_RDY
7 입력 등시성 활성화 IS_ACT
8 셋업 준비 S_RDY
9 출력 유휴 O_IDL
10 출력 준비 O_RDY
11 출력 활성화 O_ACT
12 셋업 활성화 S_ACT
13 출력 등시성 유휴 OS_IDL
14 출력 등시성 준비 OS_RDY
15 출력 등시성 활성화 OS_ACT
바람직한 실시예에서는, 어떤 주어진 시간에서도 단지 하나의 종단점 파이프만이 활성화된다.
바람직한 실시예에서는, 각각의 종단점 파이프는 내재적 하드웨어/소프트웨어의 동기화를 포함하는 상태 사이에서 전송을 위한 올바로 정의된 조건으로 상태를 유지한다. 종단점 파이프 상태 변화는 종단점 명령 레지스터 (ECR)를 통하여 종단점에 명시적 소프트웨어 명령에서, 전송의 종료시에 이 종단점에 대한 다른 제어워드내의 다른 버퍼의 버퍼상태를 읽음으로써, 그리고 IN, OUT, 및 SETUP 토큰의 수신과 ACK 핸드쉐이크와 같은 USB상의 이벤트의 결과로써 발생한다.
도 10 은 SETUP 트랜잭션을 취급하는 단순화된 종단점 파이프 상태 머신을 보여준다. 현재의 종단점 파이프 상태는 USB 색인과 데이터 레지스터를 통하여 접근할 수 있는 종단점 상태 레지스터에서 보여진다. 바람직한 실시예에서, 많아야 1 개의 종단점 파이프가 어떤 주어진 시간에서도 어떠한 활성화 상태에도 있다. 이것은 모든 종단점 파이프간의 활성화 상태 논리의 공유를 허용한다.
종단점 파이프는 SETUP 트랜잭션 동안 도 10 에 도시된 다음의 상태를 가진다.
디스에이블 : 재설정시, 이 종단점 파이프에 디스에이블 명령이 주어질 때, 및 제어 워드의 버퍼 상태내의 디스에이블 상태의 검출시에 DIS 상태 (1010)에 진입된다. 이 상태 동안에 이 종단점 파이프에 수신되는 어떠한 토큰도 핸드쉐이크 없이 복귀된다. 전형적으로 유휴 상태중 하나로의 인에이블 명령을 통한 소프트웨어 개입이 이 상태로부터 종단점을 이동시키기 위하여 요구된다.
정지/기능 정지 : 이 종단점 파이프에 기능 정지 명령이 받아들여지고, 제어 워드의 버퍼 상태 내에서 기능 정지 상태가 검출되고, 일정의 에러 조건에서, HALT/STL 상태 (1070)에 진입된다. 이 상태 동안에 이 종단점 파이프에 수신되는 어떠한 토큰도, 현재 종단점이 기능 정지되어 있다는 것을 나타내기 위하여 STALL 핸드쉐이크가 복귀된다. 유휴 상태중 하나로의 인에이블 명령을 통한 소프트웨어의 개입이 종단점 파이프를 이 상태로부터 이동시키기 위하여 요구된다.
셋업 준비 : S_RDY 상태 (1020)는 데이터를 기록할 버퍼가 이 종단점 파이프에 주어진 이후에 진입된다. 이 상태는 종단점 배열내의 적절한 워드가 기록된 후, 또는 셋업 준비 버퍼 상태가 검출될 때, 셋업 준비 명령에 의하여 진입된다.
셋업 활성화 : S_ACT 상태 (1030)는 셋업 준비 상태로부터 SETUP 토큰을 수신할 때 진입된다. 이 상태 동안에 USB로부터의 데이터가 메모리에 기록된다. 출력 전송의 끝에서, 상태는 CWP에서 제어 워드에 기록되고, CWP가 반전되고, 이 종단점 파이프에 대한 다른 제어 워드가 판독된다. 버퍼 상태를 기초로 제어 이전의 종류와 버퍼 상태 판독에 따라서 출력 유휴, 출력 준비, 입력 유휴, 또는 입력 준비 상태로 적절한 전이가 발생한다.
입력 유휴 : I_IDL 상태 (1050)에서는, 종단점은 버퍼가 곧 할당될 것을 기대한다. NAK 핸드쉐이크는 이 종단점파이프에 매핑된 IN 토큰에 응답하여 복귀된다. 이 종단점 파이프로부터는 OUT 토큰에 대하여서는 아무런 응답도 복귀되지 않는다.
입력 준비 : 이 I_RDY 상태 (1052)는 이 종단점으로의 입력 준비 명령을 통하여 또는 전송의 종료 시점에서 다른 입력 버퍼의 검출에 의하여 이 상태는 진입된다. 이 명령은 종단점 배열내의 적절한 장소에 제어 워드를 기록함으로써 버퍼가 이 종단점에 할당된 후에만 주어져야 한다. 이 제어 워드는 이 종단점 파이프에 수신된 다음 IN 토큰에 응답하여 호스트로 복귀될 데이터를 구비하는 데이터 버퍼를 지정해야 한다. PID 값은 CWP가 0 일 때 DATA0으로서, CWP가 1 일 때 DATA1로서 송신된다.
입력 활성화 : I_ACT 상태 (1054)는 선택된 종단점 상태가 현재 입력 준비일 경우 IN 토큰이 수신될 때 진입된다. 이 상태 동안에, 데이터는 메모리로부터 USB로 송신된다. 데이터 전송이 완료되면, ACK 핸드쉐이크는 16 비트 시간이내에 수신되어야만 한다. 이 타임 아웃 주기의 종료 시점에서, 만약 ACK가 수신되지 않으면, 버퍼 대기 상태가 제어 워드에 다시 기록된다. 그렇지만, 재송신이 발생하고 현재값이 다시 사용될 필요가 있기 때문에, 주소와 바이트 카운터는 다시 기록되지 않는다. 만약 ACK가 수신되면, 주소의 현재 값과 바이트 카운터와 함께 버퍼 상태가 기록된다. 그러면, 이 종단점에서의 다른 제어 워드는 판독되어 토큰이 이 종단점 파이프로 향하는 다음 시기에 사용될 종단점의 다음 상태를 결정한다. 만약 이 종단점이 제어 이전을 위하여 사용되면, 제어 기록 전송의 페이즈 단계를 완료하기 위하여 출력 준비 혹은 출력 유휴 상태로의 전이가 발생할 수 있다.
출력 유휴 : O_IDL 상태 (1040)에서는, 종단점은 버퍼가 곧 할당될 것이라고 기대한다. NAK 핸드쉐이크는 이 종단점 파이프에 매핑된 OUT 토큰에 응답하여 복귀된다. 이 종단점 파이프상의 IN 토큰에 대하여서는 아무런 응답도 복귀되지 않는다.
출력 준비 : O_RDY 상태는 데이터를 기록할 버퍼가 이 종단점 파이프에 주어진 이후에 진입된다. 이 상태는 종단점 배열 내에 적절한 워드가 기록된 후 O_IDL 상태 (1040)로부터의 출력 준비 명령을 통하여, 또는 전송의 종료 시점에서 또 다른 출력 버퍼가 검출될 때 진입된다.
출력 활성화 : O_ACT 상태 (1044)는 OUT 토큰을 수신할 경우 진입된다. 이 상태 동안에 USB로부터의 데이터는 메모리에 기록된다. 출력 전송의 종료 시점에서, 상태는 CWP에서의 제어 워드에 기록된다. CRC 나 비트 스터핑 에러가 검출되는 것과 같이, 만약 전송이 성공하지 못하면, 이것이 버퍼 상태로서 기록된다. 만약 전송이 성공하면, 출력 완료 버퍼 상태가 기록되고, CWP가 반전되고, 이 종단점 파이프에 대한 다른 제어 워드가 판독된다. 버퍼 상태를 토대로 적절한 전이가 수행된다. 이 종단점이 제어 이전에 사용되면, 제어 기록 전송의 상태 페이즈를 완료하기 위하여 입력 준비 또는 입력 유휴 상태로의 전송이 발생할 수 있다.
재설정 이후에, 모든 종단점은 디스에이블 된다. 한 종단점은 종단점에 인에이블 명령을 부여함으로써 인에이블된다. 이는 입력 및/또는 출력 버퍼가 곧 이 종단점에 할당될 경우에만 이루어져야 한다. 종단점 파이프에 매핑되지 않은 모든 종단점은 디스에이블된 것으로 간주된다.
소프트웨어는 필요한 기준에 근거하여 종단점 파이프에 버퍼를 할당한다. 각각의 버퍼가 할당된 후에, 종단점 파이프에 입력 또는 출력 준비 명령을 수행한다. 만약 종단점 파이프가 현재 유휴 상태에 있다면, 적절한 준비 상태에 진입한다. 종단점 파이프가 현재 준비 혹은 활성화 상태에 있으면, 이것은 즉시 처리하는 종단점 파이프에 대한 디스에이블과 기능 정지 명령 이외에는 모두 무시한다. UNIM 종단점 파이프 처리는 소프트웨어 동작과 비동기하므로, 소프트웨어는 잠재적인 동기 문제를 피하기 위하여 이 기록을 해야만 한다.
2 개의 버퍼까지는 각각의 종단점에 할당될 수 있으므로, 현재의 버퍼가 데이터 전송을 가속화하고 불필요한 NAK 핸드쉐이크를 회피하기 위하여 처리되는 동안에, 다음 버퍼가 준비될 수 있다.
계속되는 설명에서, 제어 종단점으로서의 디바이스의 동작이 제어 기능적 소프트웨어의 관점에서 자세히 설명된다. 종단점 0 은 통상적으로 제어 종단점이다. 추가적으로 매핑 매커니즘은 다른 종단점이 제어 종단점이 되는 것을 허용한다. 제어 종단점에서는, 제어 워드 1 과 제어 워드 0 은 항상 함께 기록되어야 한다. 예를 들어, 다음 제어 이전을 위한 SRDY 명령은 현 제어 이전의 상태 전송을 위한 버퍼 또는 패킷과 함께 기록되어야 한다. 제어 판독 또는 기록 동작의 데이터 페이즈 동안 기수의 데이터 패킷이 송신될 경우, 상태 페이즈가 송신되기 전에, 상태 페이즈는 제어 워드 1 에 입력되어야만 하고 다음 SRDY 버퍼는 제어 워드 0 에 입력되어야만 하기 때문에, 소프트웨어는 제어 워드 포인터를 조절하여야만 한다. 이를 달성하기 위해서, 소프트웨어는 스킵 버퍼의 삽입과 또는 토글 CWP 명령을 발송할 수도 있다. 소프트웨어는 상태 페이즈 버퍼를 위한 준비 명령을 발송할 수도 있다.
현재 SRDY 버퍼가 사용가능하지 않은 제어 종단점에서 SETUP 토큰이 검출되면, SETUP 토큰을 수신하기 위한 노력이 수행된다. 소프트웨어가 버퍼를 할당하기를 기다리는 동안, SETUP 토큰은 메모리 파이프의 데이터 파이프라인 내에 저장된다.
만약 유효한 SETUP이 수신되면, 인터럽트 비트를 통하여 인터럽트가 표명된다. 인터럽트에 응답하여, 소프트웨어는 제어 워드의 버퍼를 0 으로 기록하고 SRDY 명령을 발송하여야 한다. 이는 보류중의 SETUP이 메모리에 기록되도록 한다. SRDY 명령은 종단점이 제어 종단점으로 고려되도록 하고, 입력 인에이블 또는 출력 인에이블 명령이 수행될 때까지 상태를 유지한다. SRDY 버퍼는 인터럽트가 표명될 경우 어떤 추가적인 데이터 송신으로부터도 데이터 경로를 막음으로 가능한 한 빨리 제공되어야만 한다. 버퍼를 대기하는 동안, USB 네트워크를 통하여 수신된 토큰은 NAK가 복귀된다.
SETUP이 수신된 후에, 적절한 응답 결정하기 위하여 이는 재검토되어야 한다. 이 시점에서 펌웨어는 적절하게 추가적인 입력 또는 출력 버퍼를 채용한다. 만약 Setup 이 펑션에 의하여 지원되는 명령이 아니면, 새로운 SRDY 버퍼가 제어 워드 0 에 생성되고 SRDY 명령이 주어진다. 다음 SETUP이 수신될 때까지 이는 종단점 상의 모든 토큰이 NAK 핸드쉐이크를 복귀받도록 한다. 소프트웨어가 SETUP을 분석하는 중간 기간 동안에, NAK는 토큰에 응답하여 송신된다.
비록 여기서 설명된 실시예는 소정의 디바이스 구조, 프로그래밍 상태, 프로그래밍 모델과 연관되지만, 본 발명은 본 발명의 범위를 벗어나지 않으면서 다른 프로그래밍 상태와 모델을 이행하는 다양한 다른 장치에 적용될 수 있다. 당업자들은 여기에서 기재된 실시예로부터 본 발명의 내용으로부터 벗어나지 않으면서 많은 변경이 가능하다는 것을 알 수 있을 것이다. 이런 모든 변경은 다음의 청구항에 포함되는 것이 의도된다.
본 발명은 다른 종류의 종단점 파이프 사이에서 공유될 수도 있는 메모리 공간을 제공하고, 프로세서가 메모리 내에서 제어 이전의 셋업 패킷을 시험하도록 허용하고 프로세서가 제어 이전의 나머지를 준비하도록 허용하고, 제어기를 제공하는 것이고, 이는 제어 이전을 수행하며 자동적으로 적절한 핸드쉐이크로 응답한다. 또 본 발명은 데이터의 송신과 수신을 위한 이중 메모리 버퍼를 제공하고, 유니버설 시리얼 버스로부터의 데이터를 메모리로 송신하기 위한 메모리 파이프라인을 제공하는 것이다.

Claims (5)

  1. 데이터의 송신과 수신을 위한 유니버설 시리얼 버스와 동작적으로 결합되는 트랜시버를 제공하는 단계;
    상기 트랜시버와 동작적으로 결합되고, 상기 유니버설 시리얼 버스를 통한 송신을 위하여 데이터를 상기 트랜시버에 제공하고, 상기 트랜시버가 상기 유니버설 시리얼 버스를 통하여 수신하는 데이터를 채용하는 제어기를 제공하는 단계;
    제 1 메모리에 데이터를 저장할 수도 있고, 상기 제 1 메모리로부터 데이터를 복제할 수도 있는 상기 제어기와 동작적으로 결합된 메모리를 제공하는 단계;
    상기 메모리와 상기 제어기에 동작적으로 결합되고, 상기 제어기에 명령을 제공할 수도 있고, 상기 메모리에 데이터를 저장할 수도 있고, 상기 메모리로부터 데이터를 복제할 수도 있는 펑션을 제공하는 단계;
    호스트가 제어 전이를 수행할 것이라는 것을 나타내는 SETUP 토큰을 상기 유니버설 시리얼 버스를 통하여 상기 호스트로부터 수신하는 단계;
    상기 제어 이전은 적어도 하나의 데이터 트랜잭션을 가지는 데이터 스테이지를 포함할 것이라는 것을 나타내는 제 1 DATA0 패킷을 상기 유니버설 시리얼 버스를 통하여 상기 호스트로부터 수신하는 단계; 및
    상기 적어도 하나의 데이터 트랜잭션을 위하여 상기 메모리의 부분을 할당하는 단계로서, 상기 펑션이 상기 할당을 수행하고 제 1 메모리 주소를 상기 제어기에 제공하고, 상기 제 1 메모리 주소가 상기 메모리의 부분내의 제 1 메모리 위치를 지시하는 것을 포함하는 것을 특징으로 하는 유니버설 시리얼 버스상의 제어 종단점 동작 방법.
  2. 제 1 항에 있어서,
    상기 제 1 DATA0 패킷은 상기 데이터 트랜잭션이 IN 트랜잭션이라는 것을 나타내는 것을 특징으로 하는 제어 종단점 동작 방법.
  3. 제 1 항에 있어서,
    기대하지 않던 SETUP 토큰을 수신하는 단계와 상기 기대하지 않던 SETUP 토큰을 데이터 파이프라인 내에 저장하는 단계를 더 포함하는 것을 특징으로 하는 제어 종단점 동작 방법.
  4. 데이터 저장을 위한 버퍼 메모리;
    상기 버퍼 메모리와 유니버설 시리얼 버스와 동작적으로 결합되고, 상기 버퍼 메모리 내에 주소를 유지하는 제 1 및 제 2 메모리 주소 포인터 및 종단점 파이프의 현재 상태를 유지하고 상기 종단점 파이프가 상기 유니버설 시리얼 버스를 통해 송신할 데이터의 포함 유무를 나타내는 종단점 파이프 상태 논리를 포함하는 제어기; 및
    상기 제어기와 상기 버퍼 메모리와 동작적으로 결합되는 상기 버퍼 메모리 내에 데이터를 저장하고, 대응하는 주소를 상기 제 1 및 제 2 버퍼 메모리 포인터에 지정하고, 상기 제어기가 제어 판독 전송의 IN 토큰을 수신할 경우, 만약 상기 종단점 파이프 상태 논리가 상기 종단점 파이프가 데이터를 포함하지 않는다는 것을 나타내면 상기 제어기가 자동적으로 NAK를 송신하며, 만약 종단점 파이프 상태 논리가 상기 종단점 파이프가 데이터를 포함한다는 것을 나타내면 상기 제어기가 자동적으로 상기 데이터를 송신하는 펑션을 포함하는 것을 특징으로 하는 유니버설 시리얼 버스에 접속하기 위한 디바이스.
  5. 제 4 항에 있어서,
    상기 제어기는 상기 유니버설 시리얼 버스로부터 수신된 데이터를 임시적으로 저장하는 데이터 파이프라인을 더 포함하며,
    상기 종단점 파이프 상태 논리는 상기 종단점 파이프가 SETUP 트랜잭션을 수신하기 위한 준비 상태에 있는지 여부를 더 나타내고,
    SETUP 토큰이 유니버설 시리얼 버스를 통해 수신되고 상기 종단점 파이프 상태 논리가 상기 종단점 파이프가 준비 상태에 있지 않는 것을 나타내는 경우에 상기 SETUP 토큰은 상기 데이터 파이프라인 내에 저장되는 것을 특징으로 하는 유니버설 시리얼 버스에 접속하기 위한 디바이스.
KR1019990000086A 1998-01-07 1999-01-06 유니버설 시리얼 버스 제어 이전을 처리하는 장치 및 방법 KR100290943B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US9/004,002 1998-01-07
US09/004,002 US6205501B1 (en) 1998-01-07 1998-01-07 Apparatus and method for handling universal serial bus control transfers

Publications (2)

Publication Number Publication Date
KR19990067731A KR19990067731A (ko) 1999-08-25
KR100290943B1 true KR100290943B1 (ko) 2001-05-15

Family

ID=21708649

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990000086A KR100290943B1 (ko) 1998-01-07 1999-01-06 유니버설 시리얼 버스 제어 이전을 처리하는 장치 및 방법

Country Status (3)

Country Link
US (1) US6205501B1 (ko)
KR (1) KR100290943B1 (ko)
DE (1) DE19900369B4 (ko)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100290729B1 (ko) 1998-01-07 2001-05-15 클라크 3세 존 엠. 유에스비 등시 데이타를 전송 및 수신하는 장치 및 방법
US6324625B1 (en) * 1999-03-16 2001-11-27 Fujitsu Network Communications, Inc. Rotating rationed buffer refresh
US6574231B1 (en) * 1999-05-21 2003-06-03 Advanced Micro Devices, Inc. Method and apparatus for queuing data frames in a network switch port
DE19935512A1 (de) * 1999-07-28 2001-02-08 Siemens Ag Vorrichtung zur Verbindung einer industriellen Steuereinheit mit einem industriellen Bedienpanel
JP3641169B2 (ja) * 1999-08-06 2005-04-20 株式会社エヌ・ティ・ティ・ドコモ Usb対応電子機器
JP3409749B2 (ja) * 1999-09-09 2003-05-26 エヌイーシーマイクロシステム株式会社 Usbファンクションの評価装置及びその方法
US6804243B1 (en) * 1999-11-22 2004-10-12 Texas Instruments Incorporated Hardware acceleration for segmentation of message packets in a universal serial bus peripheral device
US6523081B1 (en) * 1999-11-22 2003-02-18 Texas Instruments Incorporated Architecture using dedicated endpoints and protocol for creating a multi-application interface and improving bandwidth over universal serial bus
US7215670B1 (en) * 1999-11-22 2007-05-08 Texas Instruments Incorporated Hardware acceleration for reassembly of message packets in a universal serial bus peripheral device
US7512082B1 (en) * 1999-12-14 2009-03-31 Intel Corporation Tracking transaction status for a bus system providing legacy bus compatibility
JP3415567B2 (ja) * 2000-06-21 2003-06-09 エヌイーシーマイクロシステム株式会社 Usb転送制御方法およびusbコントローラ
FR2817058B1 (fr) * 2000-11-21 2003-01-24 St Microelectronics Sa Dispositif et procede de traitement des interruptions dans une transmission d'informations sur un bus
US6718412B2 (en) * 2000-12-14 2004-04-06 Agilent Technologies, Inc. Apparatus and method for universal serial bus communications
US7076536B2 (en) * 2000-12-21 2006-07-11 Microsoft Corporation Method and system to access software pertinent to an electronic peripheral device at an address based on a peripheral device identifier
US7165109B2 (en) * 2001-01-12 2007-01-16 Microsoft Corporation Method and system to access software pertinent to an electronic peripheral device based on an address stored in a peripheral device
US6883047B2 (en) * 2001-05-25 2005-04-19 Intel Corporation Concurrent asynchronous USB data stream destuffer with variable width bit-wise memory controller
US6775733B2 (en) * 2001-06-04 2004-08-10 Winbond Electronics Corp. Interface for USB host controller and root hub
US7228366B2 (en) * 2001-06-29 2007-06-05 Intel Corporation Method and apparatus for deterministic removal and reclamation of work items from an expansion bus schedule
TW518502B (en) * 2001-07-13 2003-01-21 Prolific Technology Inc USB compound device and the realization method thereof
US7028124B2 (en) * 2001-09-26 2006-04-11 Intel Corporation Method and apparatus for dual queue head processing of interrupt endpoints
TW536900B (en) * 2001-10-09 2003-06-11 Prolific Technology Inc Local area network in compliance with universal serial bus standard
US6889265B2 (en) 2001-11-05 2005-05-03 Intel Corporation Apparatus and method to allow and synchronize schedule changes in a USB enhanced host controller
US7222240B2 (en) * 2001-11-06 2007-05-22 Safenet, Inc. Token for storing installation software and drivers
JP3609051B2 (ja) * 2001-11-21 2005-01-12 Necエレクトロニクス株式会社 Usb−hubデバイスおよびその制御方法
US20030167347A1 (en) * 2002-02-11 2003-09-04 Combs James Lee Home network printer adapter
US6757776B1 (en) * 2002-07-17 2004-06-29 Cypress Semiconductor Corp. Control transaction handling in a device controller
US7114105B2 (en) * 2002-12-05 2006-09-26 Qualcomm, Inc. System and method for software download to wireless communication device
US7185126B2 (en) * 2003-02-24 2007-02-27 Standard Microsystems Corporation Universal serial bus hub with shared transaction translator memory
US6959355B2 (en) * 2003-02-24 2005-10-25 Standard Microsystems Corporation Universal serial bus hub with shared high speed handler
US20060059293A1 (en) * 2004-09-14 2006-03-16 Henry Wurzburg Universal serial bus switching hub
US20060227759A1 (en) * 2004-09-14 2006-10-12 Bohm Mark R Peripheral Sharing USB Hub
TWI297439B (en) * 2006-01-20 2008-06-01 Via Tech Inc Method for exchanging data with an usb device
US7433990B2 (en) * 2006-01-24 2008-10-07 Standard Microsystems Corporation Transferring system information via universal serial bus (USB)
US7523243B2 (en) * 2006-04-14 2009-04-21 Standard Microsystems Corporation Multi-host USB device controller
US7480753B2 (en) * 2006-04-27 2009-01-20 Standard Microsystems Corporation Switching upstream and downstream logic between ports in a universal serial bus hub
US8081184B1 (en) * 2006-05-05 2011-12-20 Nvidia Corporation Pixel shader program thread assembly
US20080005262A1 (en) * 2006-06-16 2008-01-03 Henry Wurzburg Peripheral Sharing USB Hub for a Wireless Host
WO2008038266A1 (en) * 2006-09-28 2008-04-03 Sandisk Il Ltd. Devices and methods for a device-mapping connectivity hub
US8131890B1 (en) * 2007-03-23 2012-03-06 Cypress Semiconductor Corporation Circuit and method for increasing universal serial bus (USB) device endpoints
US20090063717A1 (en) * 2007-08-28 2009-03-05 Bohm Mark R Rate Adaptation for Support of Full-Speed USB Transactions Over a High-Speed USB Interface
US7908421B2 (en) * 2008-09-30 2011-03-15 Intel Corporation Universal serial bus endpoint context caching
JP5456434B2 (ja) 2009-10-22 2014-03-26 ルネサスエレクトロニクス株式会社 パイプ調停回路、パイプ調停方法
US9037907B2 (en) 2011-06-10 2015-05-19 International Business Machines Corporation Operator message commands for testing a coupling facility
US8560737B2 (en) * 2011-06-10 2013-10-15 International Business Machines Corporation Managing operator message buffers in a coupling facility
US8799522B2 (en) 2011-06-10 2014-08-05 International Business Machines Corporation Executing a start operator message command
US8918797B2 (en) 2011-06-10 2014-12-23 International Business Machines Corporation Processing operator message commands
US8689240B2 (en) 2011-06-10 2014-04-01 International Business Machines Corporation Transmitting operator message commands to a coupling facility
US8799532B2 (en) 2011-07-07 2014-08-05 Smsc Holdings S.A.R.L. High speed USB hub with full speed to high speed transaction translator
US8805855B2 (en) * 2012-08-17 2014-08-12 International Business Machines Corporation Efficiently storing and retrieving data and metadata
US20140208134A1 (en) * 2013-01-21 2014-07-24 Texas Instruments Incorporated Host controller interface for universal serial bus (usb) power delivery
US10127181B2 (en) 2014-04-30 2018-11-13 Microchip Technology Incorporated Port disconnect charging function for USB hub
US9971395B2 (en) 2014-08-20 2018-05-15 Microchip Technology Incorporated Low power connection detect method and system for USB charging
US10042784B2 (en) 2014-10-13 2018-08-07 Microchip Technology Incorporated Side channel access through USB streams
US9804977B2 (en) 2015-04-28 2017-10-31 Microchip Technology Incorporated Universal serial bus smart hub
US10191874B2 (en) 2015-12-22 2019-01-29 Microchip Technology Incorporated Method and apparatus for providing USB power delivery negotiated through a dedicated transmission channel
US10162788B2 (en) 2016-08-19 2018-12-25 Microchip Technology Incorporated USB on the go (OTG) multi-hub endpoint reflector hub
US11336791B2 (en) 2020-08-31 2022-05-17 Xerox Corporation Printer USB hub for peripheral connections

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996041274A1 (en) 1995-06-07 1996-12-19 Advanced Micro Devices, Inc. Dynamically reconfigurable data bus
US5911152A (en) * 1995-09-05 1999-06-08 Compaq Computer Corporation Computer system and method for storing data in a buffer which crosses page boundaries utilizing beginning and ending buffer pointers
US5751951A (en) 1995-10-30 1998-05-12 Mitsubishi Electric Information Technology Center America, Inc. Network interface
US5848293A (en) * 1995-11-03 1998-12-08 Sun Microsystems, Inc. Method and apparatus for transmission and processing of virtual commands
US5729721A (en) 1995-11-13 1998-03-17 Motorola, Inc. Timebase synchronization in separate integrated circuits or separate modules
US5774680A (en) 1995-12-11 1998-06-30 Compaq Computer Corporation Interfacing direct memory access devices to a non-ISA bus
US5835791A (en) 1996-03-26 1998-11-10 Vlsi Technology, Inc. Versatile connection of a first keyboard/mouse interface and a second keyboard/mouse interface to a host computer
US5841471A (en) 1996-09-12 1998-11-24 Eastman Kodak Company Timing control for a digitally interfaced camera using variable line readout intervals
US5818948A (en) 1996-10-23 1998-10-06 Advanced Micro Devices, Inc. Architecture for a universal serial bus-based PC speaker controller
US5778218A (en) 1996-12-19 1998-07-07 Advanced Micro Devices, Inc. Method and apparatus for clock synchronization across an isochronous bus by adjustment of frame clock rates
US5933611A (en) * 1997-06-23 1999-08-03 Opti Inc. Dynamic scheduler for time multiplexed serial bus
US5987530A (en) * 1997-07-10 1999-11-16 National Instruments Coporation Method for caching data and generating only one read request to read the requested data and additional data in universal serial bus system
US5974486A (en) * 1997-08-12 1999-10-26 Atmel Corporation Universal serial bus device controller comprising a FIFO associated with a plurality of endpoints and a memory for storing an identifier of a current endpoint

Also Published As

Publication number Publication date
US6205501B1 (en) 2001-03-20
DE19900369B4 (de) 2005-04-21
KR19990067731A (ko) 1999-08-25
DE19900369A1 (de) 1999-07-08

Similar Documents

Publication Publication Date Title
KR100290943B1 (ko) 유니버설 시리얼 버스 제어 이전을 처리하는 장치 및 방법
KR100290944B1 (ko) 복합 유니버설 시리얼 버스 제어기에 인터페이스를 제공하기 위한 장치 및 방법
US6173355B1 (en) System for sending and receiving data on a universal serial bus (USB) using a memory shared among a number of endpoints
US6122676A (en) Apparatus and method for transmitting and receiving data into and out of a universal serial bus device
US6678760B2 (en) Apparatus and method of transmitting and receiving USB isochronous data
US6353866B1 (en) Apparatus and method for initializing a universal serial bus device
US7069373B2 (en) USB endpoint controller flexible memory management
EP1046111B1 (en) Data transferring in source-synchronous and common clock protocols
US5594882A (en) PCI split transactions utilizing dual address cycle
EP0422103B1 (en) I/o bus to system bus interface
EP1764703B1 (en) A system for providing access to multiple data buffers of a data retaining and processing device
US5919254A (en) Method and apparatus for switching between source-synchronous and common clock data transfer modes in a multiple processing system
US5261057A (en) I/O bus to system interface
US6070208A (en) Apparatus and method for implementing a versatile USB endpoint pipe
US9542251B2 (en) Error detection on a low pin count bus
US20010051994A1 (en) Computer system and a data transfer method thereof
US7143206B2 (en) Method for controlling data transfer unit having channel control unit, storage device control unit, and DMA processor
US7437593B2 (en) Apparatus, system, and method for managing errors in prefetched data
US5764935A (en) High speed active bus
EP1306766A1 (en) Method and apparatus for providing address parity checking for multiple overlapping address spaces on a shared bus
JP2859178B2 (ja) プロセッサ間データ転送方式及びプロセッサ間データ転送用リングバッファメモリ
WO1994019743A1 (en) Intermediate processor disposed between a host processor channel and a storage director with error management
CA1336459C (en) I/o bus to system bus interface
JPH1011387A (ja) 情報処理装置
JPH07109599B2 (ja) 処理システムの情報転送装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130227

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20140227

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20150227

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20151230

Year of fee payment: 16

LAPS Lapse due to unpaid annual fee