KR100290597B1 - 이중 버퍼링을 지원하는 유니버설 시리얼 버스 종단점 파이프의 실시장치 및 실시방법 - Google Patents

이중 버퍼링을 지원하는 유니버설 시리얼 버스 종단점 파이프의 실시장치 및 실시방법 Download PDF

Info

Publication number
KR100290597B1
KR100290597B1 KR1019990000088A KR19990000088A KR100290597B1 KR 100290597 B1 KR100290597 B1 KR 100290597B1 KR 1019990000088 A KR1019990000088 A KR 1019990000088A KR 19990000088 A KR19990000088 A KR 19990000088A KR 100290597 B1 KR100290597 B1 KR 100290597B1
Authority
KR
South Korea
Prior art keywords
data
endpoint
storage element
serial bus
universal serial
Prior art date
Application number
KR1019990000088A
Other languages
English (en)
Other versions
KR19990067733A (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 KR19990067733A publication Critical patent/KR19990067733A/ko
Application granted granted Critical
Publication of KR100290597B1 publication Critical patent/KR100290597B1/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
    • 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/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4295Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1835Buffer management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1848Time-out mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0094Bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

수 개의 종단점 사이에서 공유되는 메모리를 사용하여, 유니버설 시리얼 버스(Universal Serial Bus : USB)에 데이터 송신 및 수신하는 방법을 위한 장치를 발표한다. 메모리는 현재의 패킷 (packet)이 송신되는 중에 다음 패킷이 준비되는 것을 허용하는 더블 버퍼이다. 본 발명은 송신 재시도 역시 지원한다.

Description

이중 버퍼링을 지원하는 유니버설 시리얼 버스 종단점 파이프의 실시장치 및 실시방법 {APPARATUS AND METHOD OF IMPLEMENTING A USB ENDPOINT PIPE WITH DOUBLE BUFFERING SUPPORT}
본 발명은 유니버설 시리얼 버스 프로토콜 (USB protocol)에 관한 것이다. 더욱 구체적으로, 본 발명은 데이터의 송신과 수신을 위한 공유 버퍼 (buffer)의 사용에 관한 것이다.
유니버설 시리얼 버스 (USB)는 개인용 컴퓨터를 다양한 장치: 예를 들면, 디지털 전화선, 모니터, 모뎀, 마우스, 프린터, 스캐너, 게임 제어기, 키보드 (keyboard), 및 다른 주변기기에 연결하기 위한 표준 주변기기 인터페이스 (interface) 이다. 그러므로 유니버설 시리얼 버스는 RS-232C 직렬 포트, 병렬 포트, PS/2 인터페이스, 및 게임/미디(midi) 포트와 같은 현재의 인터페이스를 대치한다.
유니버설 시리얼 버스에 따르면, 모든 연결 장치는 티어드 스타 (tiered-star) 토폴로지 (topology)를 사용한 단일 접속기 형태를 통하여 개인용 컴퓨터에 연결된다. 호스트 개인용 컴퓨터는 단일 유니버설 시리얼 버스 제어기를 포함한다. 호스트 제어기는 유니버설 시리얼 버스 네트워크와 호스트 개인용 컴퓨터 사이에 인터페이스를 제공한다. 호스트 제어기는 유니버설 시리얼 버스 자원에 대한 모든 액세스를 제어하고 버스의 토폴로지를 검사한다. 유니버설 시리얼 버스 허브 (hub)는 유니버설 시리얼 버스 장치를 위한 유니버설 시리얼 버스 부착지점을 제공한다.
유니버설 시리얼 버스 펑션 (function)은 버스에 정보를 송신하고 수신할 수 있는 유니버설 시리얼 버스 장치이다. 펑션은 각각 장치를 구성하는 인터페이스를 정의하는 하나 또는 그 이상의 구성을 가질 수 있다. 차례로, 각각의 인터페이스는 더 많은 종단점의 하나로 구성된다.
종단점은 데이터의 궁극적인 소스 (source) 또는 싱크 (sink)이다. 종단점 파이프는 유니버설 시리얼 버스와 메모리 사이의 데이터 이동을 위하여 제공되고, 유니버설 시리얼 버스 호스트와 펑션 종단점 사이의 경로를 완성시킨다.
각각의 종단점은 유니버설 시리얼 버스에 번지 지정이 가능한 엔티티 (entity)이고 유니버설 시리얼 버스 호스트 (전형적으로 개인용 컴퓨터)로부터의 IN 토큰 (token)과 OUT 토큰에 응답할 필요가 있다. IN 토큰은 호스트가 종단점으로부터 정보를 수신할 것을 요청하는 것을 표시하고, OUT 토큰은 호스트가 종단점에 정보를 보내려고 하는 것을 표시한다.
종단점에 번지 지정된 IN 토큰이 감지될 때, 종단점은 데이터 패킷에 응답하여야 한다. 종단점이 현재 기능정지 (stall)되고 있으면, 기능정지 응답확인 (handshake) 패킷이 송신된다. 종단점이 인에이블 (enable)이면서, 데이터가 존재하지 않으면, 부정응답 (Negative Acknowledgment : NAK) 응답확인 패킷이 송신된다.
유사하게, 종단점에 번지 지정된 OUT 토큰이 감지될 때, 종단점은 호스트에 의하여 송신되는 데이터 패킷을 수신하고 그것을 버퍼에 저장해야한다. 종단점 파이프가 현재 기능정지되어 있으면, 데이터 송신의 말미에서, 기능정지 응답확인 패킷이 송신된다. 종단점 파이프가 현재 디스에이블 (disable)이면, 데이터 송신의 말미에, 응답확인 패킷은 송신되지 않는다. 종단점 파이프가 인에이블이고, 데이터를 저장하고 있는 버퍼가 존재하지 않으면, 부정응답 응답확인 패킷이 송신된다.
디스에이블된 종단점, 또는 현재 종단점 파이프에 매핑 (mapped)되어 있지 않는 종단점은 IN, OUT 또는 SETUP 토큰에 응답하지 않는다.
몇몇 개발자들이 유니버설 시리얼 버스 표준의 실시를 개발하였다. 예를 들면, Intel Corp. 는 8x931Ax, 8x931Hx, 8x930Ax, 및 8x930Hx 장치를 발표했다.
그러나, 이러한 장치들은 몇 가지 제한점을 갖고 있다. 8x930 및 8x931은 각각 한 쌍의 종단점을 위한 송신 버퍼와 수신 버퍼를 갖는다. 그러므로 종단점의 수는 버퍼의 크기를 제한할 수 있고, 또는 그 반대의 경우일 수 있다. 전체 버퍼 크기에 해당하는 증가 없이 종단점의 수를 증가할 필요가 있다.
추가적으로, 데이터를 수신한 후에, 8x930 및 8x931은 버퍼가 채워지기 전에 버퍼로부터 데이터를 제거하는 처리기 조정이 필요하다. 데이터를 수신한 후에 처리기 조정을 감소시킬 필요가 있다.
도 1 은 본 발명의 실시예의 구성을 도시하는 블럭도이다.
도 2 는 본 발명의 데이터 송신 실시예의 동작을 도시하는 상태도이다.
도 3 은 본 발명의 또 다른 데이터 송신 실시예의 동작을 도시하는 상태도이다.
도 4 는 본 발명의 데이터 수신 실시예의 동작을 도시하는 상태도이다.
도 5 는 본 발명의 또 다른 데이터 수신 실시예의 동작을 도시하는 상태도이다.
도 6 는 본 발명의 바람직한 실시예에 따른 상태도이다.
* 도면의 주요부분에 대한 부호의 설명 *
110. 종단점 120. 데이터 처리기
130. 메모리 140. 메모리
150. 제어기 160. 포인터 메모리
170. 종단점 파이프 180. 호스트
본 발명은 수 개의 종단점사이에서 공유될 수 있는 버퍼를 제공함으로써 전술한 문제들을 해결하고자 한다.
일 실시예에 따르면, 본 발명에서의 유니버설 시리얼 버스 종단점으로부터 유니버설 시리얼 버스 호스트에 데이터를 송신하는 장치는 제 1 메모리, 제 2 메모리, 데이터 처리기, 포인터 메모리 및 제어기를 포함한다. 데이터 처리기는 적어도 제 1 메모리에서 데이터의 제 1 데이터 패킷과 제 2 메모리에서 데이터의 제 2 데이터 패킷을 발생시키는 구성으로 되어있다. 포인터 메모리는 메모리에 해당하는 포인터를 포함하는 구성으로 되어있다. 제어기는 유니버설 시리얼 버스 종단점 파이프에서 유니버설 시리얼 버스 종단점으로부터 유니버설 시리얼 버스 호스트에 데이터를 송신하고, 신호를 수신하는 구성으로 되어있다. 데이터 처리기는 제 1 메모리에서 제 1 데이터 패킷 및 제 2 메모리에서 제 2 데이터 패킷을 발생시킨다. 제어기는 포인터 메모리에서 제 1 메모리에 포인터를 발생시키고, 포인터에 의하여 지정된 데이터 패킷을 송신하고, 이어서 호스트로부터 긍정응답 신호를 대기한다. 제어기가 신호를 수신하지 않으면, 데이터 패킷을 재송신한다. 제어기가 신호를 수신하지 않으면, 포인터 메모리에서 제 2 메모리에 제 2 포인터를 발생시키고 그 포인터에 의하여 지정된 데이터 패킷을 송신한다.
또 다른 실시예에 따르면, 신호가 수신된 후에, 데이터 처리기는 제 1 메모리에서 데이터의 제 3 데이터 패킷을 발생시킨다. 제어기가 신호를 수신하고 제 2 데이터 패킷을 송신하고, 이어서 제어기는 제 2 긍정응답 신호를 대기한다. 제어기가 제 2 신호를 수신하지 않으면, 제 2 데이터 패킷을 재송신한다. 제어기가 신호를 수신하면, 포인터 메모리에서 제 1 메모리에 제 3 포인터를 발생시키고 그 포인터에 의하여 지정된 데이터 패킷을 송신한다.
또 다른 실시예에 따르면, 유니버설 시리얼 버스 호스트로부터 데이터를 수신하는 장치는 제 1 메모리, 제 2 메모리, 데이터 처리기, 포인터 메모리, 및 제어기를 포함한다. 데이터 처리기는 적어도 제 1 메모리에서 제 1 데이터 패킷으로부터 데이터를 발생시킨다. 포인터 메모리는 메모리에 대응하는 포인터를 포함하는 구성으로 되어있다. 제어기는 유니버설 시리얼 버스 종단점 파이프의 유니버설 시리얼 버스 호스트로부터의 데이터 패킷을 유니버설 시리얼 버스 종단점에서 수신하고, 에러를 검출하는 구성으로 된다. 제어기는 포인터 메모리에서 제 1 메모리에 제 1 포인터를 발생시키고, 그 포인터에 의하여 지정되는 메모리로 제 1 데이터를 수신하고, 이 후 제 1 에러가 발생하였는지를 검출한다. 에러가 검출되면, 제어기는 수신을 계속한다. 에러가 검출되지 않으면, 데이터 처리기는 제 1 데이터 패킷으로부터 데이터를 발생시키고, 제어기는 제 2 메모리에 제 2 포인터를 발생시키고 그 포인터에 의하여 지정된 메모리로 제 2 데이터 패킷을 수신한다.
또 다른 실시예에 따르면, 제 2 데이터 패킷이 수신된 후에, 제어기는 제 2 에러가 발생했는지를 검출한다. 제 2 에러가 검출되면, 제어기는 수신을 계속한다. 제 2 에러가 검출되지 않으면, 데이터 처리기는 제 2 데이터 패킷으로부터 데이터를 발생시키고, 제어기는 제 1 메모리에 제 3 포인터를 발생시키고 그 포인터에 의하여 지정된 메모리로 제 3 데이터 패킷을 수신한다.
또 다른 실시예에 따르면, 본 발명에서의 유니버설 시리얼 버스 종단점으로부터 유니버설 시리얼 버스 호스트에 데이터를 송신하는 수단은 제 1 메모리에서 데이터의 제 1 데이터 패킷을 발생시키고, 제 2 메모리에서 데이터의 제 2 데이터 패킷을 발생시키고, 제 1 메모리에 제 1 포인터를 발생시키고, 그 포인터에 의하여 지정된 데이터 패킷을 유니버설 시리얼 버스 종단점으로부터 유니버설 시리얼 버스 호스트에 송신하는 단계를 포함한다. 이어서, 그 이후의 수단은 호스트로부터 긍정응답 신호를 대기하고 신호가 수신이 되지 않으면 계속적으로 데이터를 송신하는 단계를 포함한다. 그 이후의 수단은, 신호가 수신되면, 제 2 메모리에 제 2 포인터를 발생시키고, 그 포인터에 의하여 지정된 데이터 패킷을 송신하는 단계를 포함한다.
또 다른 실시예에 따르면, 신호가 수신된 후에, 그 이후의 수단은 제 1 메모리에서 데이터의 제 3 데이터 패킷을 발생시키는 단계를 포함한다. 신호를 수신하고 데이터 패킷을 송신하는 단계 이후에, 그 이후의 수단은 호스트로부터 제 2 긍정응답 신호를 대기하고, 제 2 신호가 수신이 되지 않으면 계속적으로 제 2 데이터 패킷을 송신하는 단계를 포함한다. 그 이후의 수단은, 제 2 신호가 수신되면, 제 1 메모리에 제 3 포인터를 발생시키고, 이어서 그 포인터에 의하여 지정된 데이터 패킷을 송신하는 단계를 포함한다.
또 다른 실시예에 따르면, 본 발명에서의 유니버설 시리얼 버스 호스트로부터 유니버설 시리얼 버스 종단점의 데이터를 수신하는 수단은 제 1 메모리에 제 1 포인터를 발생시키고, 제 1 메모리에 제 1 데이터 패킷을 수신하는 단계를 포함한다. 그 이후의 수단은 에러를 검출하고 에러가 검출되지 않을 때 까지 제 1 데이터 패킷을 계속적으로 수신하고, 제 1 데이터 패킷으로부터 데이터를 발생시키는 단계를 포함한다. 이후의 수단은 에러가 검출되지 않으면, 제 2 메모리에 제 2 포인터를 발생시키고, 이어서 그 제 2 포인터에 의하여 지정된 메모리에 제 2 데이터 패킷을 수신하는 단계를 포함한다.
또 다른 실시예에 따르면, 제 2 데이터 패킷이 수신된 후에, 이후의 수단은 제 2 에러를 검출하고 제 2 에러가 검출되지 않을 때까지 계속적으로 제 2 데이터 패킷을 수신하고, 이어서 제 2 데이터 패킷으로부터 데이터를 발생시키는 단계를 포함한다. 이후의 수단은 제 2 에러가 검출되지 않으면, 제 1 메모리에 제 3 포인터를 발생시키고, 이어서 그 제 3 포인터에 의해 지정된 메모리로 제 3 데이터 패킷을 수신하는 단계를 포함한다.
본 발명의 특징과 장점을 본 발명의 원리가 사용된 실시예를 나타내는 이하의 상세한 설명과 첨부 도면을 참조하면서 더욱 상세하게 설명한다.
본원에 기재된 발명은 본원의 출원인이 모든 권리를 소요하고 있고, 참조로 본 명세서에 포함되는, 미국 출원일이 98년 1월 7일이고 미국특허출원번호가 제09/003,963호이며 발명의 명칭이 'Apparatus and Method of Implementing a Versatile USB Endpoint Pipe'인 미국 출원; 미국 출원일이 98년 1월 7일이고 미국특허출원번호가 제09/004,004를 우선권 주장하여 본원과 동일자로 99년 1월 6일 한국에 출원된 발명의 명칭이 '유니버설 시리얼 버스 디바이스 내부로 및 외부로 데이터를 송신 및 수신하기 위한 장치 및 방법'인 한국출원; 미국 출원일이 98년 1월 7일이고 미국특허출원번호가 제09/003,897호를 우선권 주장하여 본원과 동일자로 99년 1월 6일 한국에 출원된 발명의 명칭이 'Apparatus and Method of Transmitting and Receiving USB Isochronous Data'인 미국출원; 미국 출원일이 98년 1월 7일이고 미국특허출원번호가 제09/004,002호를 우선권 주장하여 본원과 동일자로 99년 1월 6일 한국에 출원된 발명의 명칭이 '유니버설 시리얼 버스 제어 이전을 처리하는 장치 및 방법'인 한국출원; 미국 출원일이 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 은 본 출원과 동일자로 심사 참고자료로서 제출하고 참조에 의해 본 명세서에 포함된다.
도 1 은 본 발명의 일부분에 대한 일반적인 실시예를 도시한다. 도 1 은 종단점 (110), 데이터 처리기 (120), 제 1 메모리 (130), 제 2 메모리 (140), 제어기 (150), 포인터 메모리 (160), 종단점 파이프 (170), 및 호스트 (180)를 도시한다. 데이터 처리기 (120)는 메모리 (130)와 메모리 (140)에서 데이터를 데이터 패킷으로 처리한다. 제어기 (150)는 종단점 파이프 (170)에서 데이터 패킷의 흐름을 제어한다. 메모리 (160)는 메모리 (130) 또는 메모리 (140)를 지정하는 포인터를 유지한다. 호스트 (180)는 종단점 파이프 (170)의 다른 종단에 위치하고 종단점 (110)과 데이터 패킷을 교환한다.
도 1에 도시한 구조는 도 2 내지 도 5에 도시한 다음의 수단을 실시하도록 구성될 수 있다.
도 2는 종단점으로부터 호스트에 데이터 패킷을 송신하는 수단의 상태도를 도시한다. 도 2는 포인터 지정 및 발생 상태 (210), 송신 상태 (220), 수신 상태 (230), 포인터 지정 상태 (240), 및 제 2 송신 상태 (250)를 도시한다.
도 3은 도 2에서 도시된 수단이 그 이후의 단계를 어떻게 포함하는지 도시한다. 도 3은 포인터 지정 및 발생 상태 (310), 송신 상태 (320), 수신 상태 (330), 제 2 포인터 지정 및 발생 상태 (340), 제 2 송신 상태 (350), 제 2 수신 상태 (360), 포인터 지정 상태 (370), 및 제 3 송신 상태 (380)를 도시한다.
도 4는 호스트로부터 종단점f,; 데이터 패킷을 수신하는 수단의 상태도를 도시한다. 도 4는 포인터 지정 상태 (410), 수신 상태 (420), 결정 상태 (430), 포인터 지정 및 발생 상태 (440), 및 제 2 수신 상태 (450)를 도시한다.
도 5는 도 4에 도시된 수단이 그 이후의 단계를 어떻게 포함하는지를 도시한다. 도 5는 포인터 지정 상태 (510), 수신 상태 (520), 결정 상태 (530), 포인터 지정 및 발생 상태 (540), 제 2 수신 상태 (550), 제 2 결정 상태 (560), 제 2 포인터 지정 및 발생 상태 (570), 및 제 3 수신 상태 (580)를 도시한다.
도 1 및 도 2에서 도시된 본 발명은 다음과 같이 동작한다. 상태 (210)에서, 데이터 처리기 (120)는 종단점 (110)의 데이터로부터 메모리 (130)에 적어도 하나의 데이터 패킷을 발생시키고 메모리 (140)에 적어도 또 하나의 데이터 패킷을 발생시키며, 그리고 제어기 (150)는 메모리 (160)에 저장된 포인터로써 메모리 (130)를 지정한다. 상태 (220)에서, 제어기 (150)는 종단점 파이프 (170)에 있는 메모리 (160)의 포인터에 의하여 지정된 메모리의 데이터 패킷을 호스트 (180)에 송신한다. 상태 (230)에서, 제어기 (150)는 제한 시간 동안에 호스트로부터 긍정응답 신호를 받거나 데이터 패킷을 재송신하기 위하여 상태 (220)로 복귀한다. 상태 (240)에서, 호스트 (180)는 긍정응답을 송신하여, 제어기 (150)는 포인터로써 메모리 (140)를 지정한다. 상태 (250)에서, 제어기 (150)는 그 포인터에 의하여 지정된 메모리에서 데이터 패킷을 호스트 (180)에 송신한다.
이 명세서에서 '데이터 패킷'이라는 용어를 사용하더라도, 그리고, 데이터가 개별 패킷에 포함되어 있지 않다고 하더라도 본 발명은 복수의 데이터에도 적용된다.
도 1 및 도 3에서 도시된 본 발명은 다음과 같이 동작한다. 상태 (310-350)는 다음의 사항이 추가되어, 각각 상태 (210-250)에 해당한다. 상태 (340)에서, 데이터 처리기 (120)는 종단점 (110)의 데이터로부터 메모리 (130)에 적어도 제 3 데이터 패킷을 발생시킨다. 상태 (360)에서, 제어기 (150)는 제한 시간 동안에 호스트로부터 긍정응답 신호를 받거나 데이터 패킷을 재송신하기 위하여 상태 (350)로 복귀한다. 상태 (370)에서, 호스트 (180)는 긍정응답을 송신하여, 제어기 (150)는 포인터로써 메모리 (130)를 지정한다. 상태 (380)에서, 제어기 (150)는 그 포인터에 의하여 지정된 메모리에서 데이터 패킷을 호스트 (180)에 송신한다.
도 1 및 도 4에서 도시된 본 발명은 다음과 같이 동작한다. 상태 (410)에서, 제어기 (150)는 메모리 (160)에 저장된 포인터로써 메모리 (130)를 지정한다. 상태 (420)에서, 제어기 (150)는 호스트 (180)로부터 그 포인터에 의하여 지정된 메모리로 제 1 데이터 패킷을 수신한다. 상태 (430)에서, 제어기 (150)는 제 1 데이터 패킷에 에러가 없는지 결정하거나 제 1 데이터 패킷을 재수신하기 위하여 상태 (420)로 복귀한다. 상태 (440)에서, 에러가 없으며, 제어기 (150)는 포인터로써 메모리 (140)를 지정하고, 종단점 (110)에서 제 1 데이터 패킷으로부터 데이터를 발생시킨다. 상태 (450)에서, 제어기 (150)는 호스트 (180)로부터 그 포인터에 의하여 지정된 메모리로 제 2 데이터 패킷을 수신한다.
도 1 및 도 5에서 도시된 본 발명은 다음과 같이 동작한다. 상태 (510-550)는 각각 상태 (410-450)에 해당한다. 상태 (560)에서, 제어기 (150)는 제 2 데이터 패킷에서 에러가 없다고 결정하거나 제 2 데이터 패킷을 재수신하기 위하여 상태 (550)로 복귀한다. 상태 (570)에서, 에러가 없으며, 제어기 (150)는 포인터로써 메모리 (130)를 지정하게 하고, 종단점 (110)에서 제 2 데이터 패킷으로부터 데이터를 발생시킨다. 상태 (580)에서, 제어기 (150)는 호스트 (180)로부터 그 포인터에 의하여 지정된 메모리로 제 3 데이터 패킷을 수신한다.
본 명세서에서 '메모리'라는 용어를 사용하더라도, 본 발명은 또한 다른 형태의 데이터 저장 요소에도 적용된다.
이 개괄적인 설명부는 본 발명의 부분에 대한 바람직한 실시예를 설명하는 다음에 상술된다.
실시예
바람직한 실시예에서, 전술한 발명은 유니버설 시리얼 버스 노드 인터페이스 모듈 (USB Node Interface Module : UNIM)의 부분으로 구현된다. 본원의 발명에 관련된 유니버설 시리얼 버스 노드 인터페이스 모듈의 부분들은 종단점 제어기, 시리얼 인터페이스 엔진 (serial interface engine), 종단점 파이프 제어기, 제어 워드 (control word), 여러 개의 레지스터, 상태도, 그리고 벌크 (bulk) 종단점 동작을 포함한다. 이러한 부분들은 부록 A에 첨부된 유니버설 시리얼 버스 노드 인터페이스 구조 명세표, 수정안 0.6에서 삭제되었다.
종단점 제어기 (Endpoint Controller)
바람직한 실시예에서, 종단점 제어기는 종단점 파이프 상태, 버퍼링(buffering) 및 전송을 포함하는 종단점과 관련된 작동을 다룬다. 바람직한 실시예에서, 임의의 시점에서 종단점 파이프 (그리고 그에 해당하는 종단점)가 16개까지 지원된다. 각각의 종단점 파이프는 코어 버스 (core bus) 번지 공간에서 수신 및 송신 동작에 사용되는 2개까지의 버퍼에 배정될 수 있다. 버퍼가 종단점 파이프에 배치되지 않으면, 제어기는 입력 토큰과 출력 토큰을 위한 적절한 응답확인을 제공한다.
종단점 제어기는 몇 개의 펑션 블록을 포함한다. 종단점 스테이트 머신 (state machine)은 데이터 배열 멀티플렉서 (Data Alignment Multiplexer : DALM), 번지 발생기 (Address Generator : ADGen), 및 부분 종단점 파이프 (Partial Endpoint Pipe : PEP) 저장장치의 유틸리티 블록 (utility block)에 중앙화된 제어를 제공한다. 번지의 확인과 발생과 같은 장치 펑션은 장치 펑션 블록에서 실시된다. 바람직한 실시예에서, 모든 스테이트 머신은 12 MHz 유니버설 시리얼 버스 클록 (clock)에서 동작한다. 모든 데이터 전송은 코어 버스 클록에서 동작한다. 번지 발생기 블록의 부분과, 모든 데이터 배열 멀티플렉서 블록은 코어 버스 클록을 사용하여 동작한다. 종단점 제어기의 모든 다른 블록은 12MHz의 로칼 (local) 클록을 독점적으로 사용한다. 영역 사이의 데이터 바이트는 MAC 사용자 인터페이스에서 각각 전송된 바이트의 비동기 응답확인과 동기한다.
바람직한 실시예에서, 종단점 제어기는 필요한 메모리 액세스 회수를 최소화한다. 메모리 액세스는 토큰의 수신인 경우에만 종단점 배열에 요구된다. 상주 종단점 상태와 함께, 싱글 더블-워드 액세스는 종단점 파이프가 호스트 요청 (request)을 처리할 수 있도록 하는데 충분하다. 이 액세스는 데이터 전송을 위한 위치와 크기 정보를 판독한다. 데이터 전송은 연속적인 더블-워드 판독 또는 기록 동작에서 발생한다. 모듈 (module)은 전송을 위한 코어 버스에 최우선권을 가지고, 전송 비율은 유니버설 시리얼 버스의 전송 비율보다 상당히 높다. 그러므로, 현재의 액세스에 뒤이은 액세스를 중첩하기 위한 추가적인 워드를 제외하고는, 종단점 제어기 내에서 데이터 버퍼링을 위한 최소한의 필요조건이 있다.
바이트 카운터는 전송되는 바이트의 수를 기록한다. 전송의 마지막 액세스는 메모리의 부분적인 판독 또는 기록이 필요하기도 하다. 마지막 액세스의 부분적인 기록은 마지막 바이트 카운트에 의하여 결정된다.
전송의 말미에서, 현재의 제어 워드는 전송을 위한 상태로 기록되고, 이 종단점을 위한 다른 제어 워드는 다른 버퍼가 준비되어 있는지를 확인하기 위하여 판독된다. 제어 워드 동작 후에, 종단점 파이프 상태는 갱신된다.
하드웨어와 소프트웨어의 조합을 통하여, 유니버설 시리얼 버스 노드 인터페이스 모듈은 동기화의 분류로 정의된 세 개의 유니버설 시리얼 버스인 비동기, 동기, 적응(adaptive)을 지원한다. 종단점 제어기는 8KHz 기준과 같은 외부 기준에 따른 유니버설 시리얼 버스 1KHz 버스 클록을 검사하고, 유니버설 시리얼 버스 1KHz 버스 클록의 특성과 일관성을 조사하기 위한 하드웨어를 지원한다. 외부 기준 클록의 상승 에지 (rising edge)는 기준 카운트 레지스터를 참조하여 카운트된다. 이것은 유니버설 시리얼 버스 프레임 수를 비교하기 위하여 사용될 수 있다. 호스트가 유니버설 시리얼 버스의 버스 클록 주파수를 조절하여, 기준 클록과 유니버설 시리얼 버스 클록 사이의 주파수 차이는 호스트에 패킷으로 신호를 보낼 수 있다; 그리하여 유니버설 시리얼 버스 기준이 기준 클록에 로크 (lock)될 수 있도록 한다.
종단점 제어기는 또한 유니버설 시리얼 버스 1KHz버스 클록에 로크되는 시기와, 프레임 시작 (Start_Of_Frame)이 미스 (missing)되거나 옳지 않아서 발생하는 유니버설 시리얼 버스의 버스 클록에서의 불연속성이 발생하는 시기를 표시하기 위하여 상태를 유지한다. 이것은 등시성 패킷의 대기열을 조절하기 위하여 소프트웨어에 의하여 사용된다. 현재의 프레임 수는 그 다음에 송신할 등시성의 버퍼가 어떤 것인지 결정하기 위하여 종단점 제어기에 의하여 사용된다.
시리얼 인터페이스 엔진 (Serial Interface Engine)
바람직한 실시예에서, 유니버설 시리얼 버스 시리얼 인터페이스 엔진 (SIE) 는 PHY와 MAC 레벨을 포함한다. PHY 레벨은 디지털-클록 리커버리 (recovery) 회로, 디지털 결함 (glitch) 필터, 패킷 종료 (End_Of_Packet) 검출 회로, 그리고 비트 스터핑 (bit-stuffing) 및 디스터핑(de-stuffing) 논리회로를 포함한다. MAC 레벨은 패킷 포매팅 (formatting), CRC 발생과 확인, 및 종단점 번지 검출을 포함하고, 지정된 종단점 파이프를 위한 종단점 파이프 제어기 (Endpoint Pipe Controller : EPC)에 의하여 결정된 부정응답, 긍정응답, 및 기능정지 응답을 제공하기 위하여 필요한 제어를 제공한다. 시리얼 인터페이스 엔진은 또한 재설정 (Reset), 서스펜드 (Suspend) 그리고 리쥼 (Resume)과 같은 유니버설 시리얼 버스-지정 동작의 검출에 대한 검출 및 보고를 담당한다. 유니버설 시리얼 버스 노드 인터페이스 모듈에서 송수신기로의 송신기 출력은 (1ns 이하) 유니버설 시리얼 버스 신호에서의 비대칭 (skew)을 최소화하기 위하여 정합되어 있다.
종단점 파이프 제어기 (Endpoint Pipe Controller)
바람직한 실시예에서, 종단점 파이프 제어기는 유니버설 시리얼 버스 펑션 종단점을 위한 인터페이스를 제공한다. 바람직한 실시예에서, 주어진 시간에서 각각 같은 펑션 번지를 가지는 그러한 종단점 파이프 16개까지가 지원된다. 종단점 파이프 제어기는 각각의 종단점 파이프에 대하여 개별적인 상태 정보를 유지하고 있다.
즉각적인 결정 (부정응답 또는 기능정지 응답확인에 응답하는 것과 같은) 을 하기 위해 필요한 상태 정보는 항상 각각의 종단점 파이프를 위하여 모듈 내에 보관된다. 종단점 동작에 필요한 다른 정보는 메모리에서 종단점 배열에 보관된다. 바람직한 실시예에서, 더블 버퍼 및 종단점 파이프 스테이트 머신이 모든 종단점 파이프 사이에서 공유될 수 있도록, 주어진 시점에 단지 하나의 종단점 파이프만이 활성화되어 있다.
IN 토큰 일 때, 종단점 파이프 제어기는 정의된 버퍼로부터 호스트에 데이터를 전송하는 것을 담당한다. OUT 토큰 일 때, 종단점 파이프 제어기는 호스트로부터, 정의된 버퍼에 데이터를 전송하는 것을 담당한다. 종단점 파이프에 버퍼를 배정할 때, 유연성을 더욱 제공하기 위하여, 바람직한 실시예에서는 더블 버퍼링 구조가 각각의 종단점 파이프에 허용된다. 이것은 종단점 파이프 제어기가 부정응답을 사용하지 않고 이 모듈에 모든 트랜잭션에 대한 즉각적인 응답을 제공하는 것을 허용한다.
OUT 전송일 때, 패킷 인식자 (Packet Identifier : PID) (예를 들면, DATA0에는 0, DATA1에는 1) 에서의 토글 (toggle) 회수가 현재의 제어 워드 포인터 (Control Word Pointer : CWP) 에 일치하지 않으면, 데이터는 메모리에 전송되지 않는다. 버퍼 상태가 OCMP 또는 ORDY 이면 이어서 전송의 말미에서 반드시 긍정응답을 송신하고 제어 워드 포인터를 갱신하지 않는다.
새로운 종단점 파이프 (EPP) 상태는 미스(missed) 긍정응답 (I_MAK)으로 정의될 수 있다. 호스트가 긍정응답 신호에 응답하지 않았거나 호스트의 긍정응답 신호가 노드로 이동 중에 손상되었을 때, 명령이 종단점 파이프이면 이 상태는 I_ACT 상태로부터 진입될 수 있다. 양쪽의 경우에, 버퍼의 상태는 I_WT에 기록되고 제어 워드 포인터는 증가되지 않는다.
I_MAK 상태에 있고 IN 토큰이 수신되면, 이전과 동일하게, 종단점은 데이터를 재송신한다.
I_MAK 상태에 있고 OUT 토큰이 수신되면, 이어서 이것은 노드로 복귀 중에 이전의 긍정응답 신호가 손상되었다는 것을 확인한다. 현재의 OUT 트랜잭션이 부정응답되면, 종단점 상태가 차례로 갱신되도록 (정상적인 상태 처리), 데이터는 무시되고 (하지만 I_CMP 버퍼 상태는 기록된다), 제어 워드 포인터는 반전되고, 제어 워드는 판독된다. 버퍼 상태는 O_RDY 또는 SKIP 이어야 한다.
버퍼의 상태가 O_RDY이면 다음의 데이터 패킷은 정상적인 동작에서 수신될 것이다. 버퍼의 상태가 SKIP 이면 또 다른 부정응답 신호가 송신될 것이다. 데이터는 현재 제어 워드 포인터에서 재송신된다.
바람직한 실시예에서, 데이터 전송 중에 종단점 파이프에 의하여 사용되는 모든 정보는 램 (RAM)에 위치해 있는, 종단점 배열에 유지된다. 이 배열은 종단점 배열 베이스 번지 레지스터 (Enpoint Array Base Address Register : EABAR)에서 정의된 베이스 (base)로부터 종단점 파이프에 의하여 지수화 되어있다. 이 배열은 종단점마다 2개의 더블-워드를 포함한다. 각각의 더블 워드는 포인터에서 버퍼의 시작, 버퍼의 크기, 버퍼의 상태, 및 다른 관련 있는 매개 변수와 같은 종단점 파이프를 위한 명령과 상태 정보를 포함하는 제어 워드이다.
버퍼 상태는 그 버퍼가 입력이나 출력 트랜잭션에 사용되는지, 그리고 현재 액세스가 되는지 또는 원하는 동작을 완결하는지를 정의한다.
IN 또는 OUT 전송이 버퍼가 존재하는 종단점 파이프를 요청할 경우, 적절한 제어 워드가 판독된다. 이 제어 워드는 종단점 제어기에 트랜잭션을 완료하는 방법을 알려준다. 트랜잭션의 말미에서, 제어 워드는 이 버퍼를 방출하고 새로운 버퍼를 공급하라는 표시로써 소프트웨어에 의하여 사용되는 상태로써 기록된다.
제어 워드 (Control Word)
바람직한 실시예에서, 종단점 파이프 배열은 각각의 종단점 파이프에 두 개씩, 32개의 제어 워드를 포함한다. 종단점 파이프 배열은 종단점 배열 베이스 어드레스 레지스터에 의하여 지정된 번지의 메모리에 위치한다. 이 번지는 128-바이트로 정렬되어 있다 (다시 말하여, 7개의 최하위 비트들은 0이다). 종단점 파이프 배열은 4-비트 종단점 파이프 번호 (Endpoint Pipe Number : EPN)에 의하여 지수화되고, 액세스된 제어 워드는 1 비트의 종단점 파이프 제어 워드 포인터에 의하여 결정된다. 25-비트 종단점 배열 베이스 번지 레지스터, 4-비트 종단점 파이프 번호, 그리고 1-비트 컨트롤 워드 는 함께 더블 워드 (32-비트) 경계에 정렬된 32-비트 번지를 발생시키며, 32-비트 제어 워드를 액세스하는데 사용된다.
활성화 상태에서, 32-비트 제어 워드는 이 종단점 파이프를 동작시키는데 필요한 모든 정보를 포함한다. 각각의 종단점 파이프에 대하여 2개의 상기 입력이 존재한다. 다음에 액세스될 제어 워드는 종단점 파이프 제어 워드 포인터의 값에 의하여 결정된다. 준비 상태에서 현재 IN, OUT 또는 SETUP 토큰이 종단점 파이프에 수신된 직후, 현재의 제어 워드 포인터에서 선택된 종단점 파이프의 제어 워드는 토큰에 대한 응답 방법을 결정하도록 판독된다. 전송의 말미에서, 완료 상태가 기록되면, 제어 워드는 현재의 상태로 갱신되고, 제어 워드 포인터는 증가하며, 또 다른 제어 워드가 판독된다. 중간 상태가 기록될 때, 제어 워드의 최상위비트만이 갱신된다. 제어 워드의 구성은 다음과 같다:
비트 펑션 라벨
31-28 버퍼 상태 (BS)
27 (예비 영역)
26-16 버퍼 번지 (BA)
15 버퍼 페이지 (BP)
14 버퍼 라운딩 (BR)
13 토글 인에이블 (TE)
12 타입 등시성 (TI)
11 패킷완료에 대한 인터럽트 (Interrupt) (IC)
10 패킷에러에 대한 인터럽트 (IE)
9-0 바이트 카운트 (BC)
4-비트 버퍼상태 (BS)는 본원의 발명에 관련된 제어 워드의 한 패킷이다. 버퍼상태는 소프트웨어 및 종단점 파이프 제어기 사이의 이들 버퍼의 제어를 동기하기 위하여 소프트웨어 및 종단점 파이프 제어기에 의하여 갱신된다. 종단점 파이프 제어기는 버퍼의 사용을 표시하는 상태를 기록한다. 이 필드는 노드 펌웨어 (firmware)에 의하여 출력 레디, 입력 레디, 셋업 레디, 스킵, 기능정지 및 디스에이블로 설정된다. 다른 모든 값은 종단점 파이프 제어기에 의해 설정된다. 종단점 파이프 제어기는 에러 조건에 기능정지와 디스에이블 값도 기록할 수 있다. 버퍼 상태가 완료 값의 어느 값이더라도, 버퍼는 노드 펌웨어에 의하여 다시 요구될 수 있다; 이것은 입력/출력 완료 상태와 에러 코드를 포함한다.
버퍼상태 (BS)는 다음의 값을 갖는다:
0 : 스킵. 이 값은 출력 레디 명령과 함께 사용된다. 스킵은 수신된 다음의 데이터 패킷을 무시하고 제어 워드 포인터를 증가시킨다. 제어 종단점에서, 이것은 종단점 파이프 상태를 입력/레디 상태에서 출력/입력 유휴 (idle) 상태로 전환시킨다. TE 및 TI의 상태는 어떤 응답확인이 복귀되는 지와, 종단점 파이프의 다음 상태를 결정한다. TE 와 TI 중 어느 것도 설정되지 않으면 부정응답이 복귀된다. TI가 설정되고, TE는 설정되지 않으면, 응답확인이 복귀되지 않는다. TE가 설정되면, 올바른 패킷 인식자를 가진 패킷이 수신될 때 긍정응답이 복귀되고 완료 상태가 기록된다.
1: 입력 레디 (IRDY). 이 값은 버퍼가 IN 토큰에 응답으로 송신되는 데이터에 의해 기록되었다는 것을 표시한다.
2: 출력 레디 (ORDY). 이 값은 버퍼가 기록을 하기 위하여 배정되어 있다는 것을 표시한다.
3: 셋업 레디 (SRDY). 이 값은 버퍼가 기록을 하기 위하여 배정되어 있다는 것을 표시한다. 이것은 제어 판독과 제어 기록 동작의 제 1 전송 중에 제어 종단점에만 사용된다. 제어 워드 0으로만 기록한다.
4: 출력 대기 (OWT). 이 값은 호스트로부터 OUT 데이터를 수신하는 중에 에러가 발생했다는 것을 표시한다. 이것은 비트 스터프(bit stuff) 에러의 검출을 포함한다. 완료 상태로 간주되는 등시성의 OUT 종단점인 경우를 제외한 재시도는 중간 단계로 간주된다.
5: CRC 에러 (CRCE). 이 값은 OUT 트랜잭션의 말미에서 손상된 CRC가 검출된 것을 표시한다. 완료 상태로 간주되는 등시성의 OUT 종단점인 경우를 제외한 재시도는 중간 단계로 간주된다.
6: 버퍼 에러 (BUFE). 이 값은 OUT 중에, 메모리에 기록될 수 있는 것 보다 더 빨리 데이터가 유니버설 시리얼 버스로부터 수신된 것을 표시한다. IN 중에 데이터는 유니버설 시리얼 버스 데이터 비율을 따라갈 만큼 충분하게 메모리로부터 판독될 수 없다. 이 종단점에서 재시도가 예상된다.
7: 입력 대기 (IWT). 이 값은 버퍼가 종단점 제어기에 의하여 유지되고 다음 기회에 이 버퍼를 송신하기 위한 시도 또는 재시도를 대기한다. 이것은 긍정 응답이 미스(missed)된 경우에 발생한다.
8: 입력 완료 (ICMP). 이 값은 이 입력 동작의 성공적인 완료를 표시한다. 이 버퍼는 소거된다.
9: 출력 완료 (OCMP). 이 값은 버퍼가 데이터로 채워져 있고 에러가 검출되지 않았다는 것을 표시한다.
10: 토큰 에러 (TKNE). 이 값은 이 제어 종단점 파이프의 현재 내용에 대한 옳지 않은 타입의 토큰이 수신된 것을 표시한다. 이것이 출력 버퍼였다면, 종단점은 홀트 상태가 된다. 이것이 입력 버퍼였다면, 부정응답이 송신되고 다른 제어 워드의 상태가 검사된다. 이것은 완료 상태로 간주된다.
11: 등시성 동기 에러 (SYNE). 이 값은 TE=1 이고 TI=1인 버퍼에 데이터가 수신되고 제어 워드 포인터는 FNR의 최하위 비트와 일치하지 않는다는 것을 표시한다. 이것은 완료 상태로 간주된다.
12: 데이터 에러 (DATE). OUT 데이터에 대하여, CW.BR이 설정되지 않을 때 호스트로부터 수신되는 데이터의 양이 예상했던 것보다 적거나, 배당된 버퍼가 OUT 데이터를 저장하기에 충분하지 않다. IN 데이터에 대하여, 버퍼링 에러가 발생하고, CW.TE가 설정되거나 CW.TI가 설정되면, 이것이 설정된다. 이것은 완료 상태로 간주된다.
13: (예비 영역).
14: 홀트. 현재의 종단점 파이프를 홀트 상태로 진입시키거나, 종단점이 홀트 상태로 진입한 것을 표시한다.
15: 디스에이블. 현재의 종단점 파이프를 디스에이블 상태로 진입시키거나, 종단점이 디스에이블 상태로 진입한 것을 표시한다.
토글 인에이블 비트 (TE)는 데이터 패킷 인식자 (PID)의 값 (DATA0/DATA1)을 발생시키고 제어 워드 포인터와 비교하는데 사용되며 다음의 값들을 사용한다:
0: 데이터 토글 패킷 인식자는 OUT 트랜잭션에서 확인되지 않고 IN 토큰에 대응한 현재의 제어 워드 포인터 값에 기초하여 발생된다. 긍정응답이 수신되지 않아도, 각각의 트랜잭션 이후에 제어 워드 포인터는 증가(반전)된다. 등시성의 종단점에 대하여, 제어 워드 포인터가 프레임수의 최하위 비트, FNR.FN(0)에 일치할 때까지, OUT 데이터는 메모리에 기록되지 않는다. 이것은 IN 토큰에 대응하여 송신되는 데이터에 영향을 주지 않는다. 데이터 토글은 SETUP 토큰과 함께 송신된 데이터를 수신하기 위해 배정된 버퍼를 위해 활성화되어서는 안된다.
1: 데이터 토글 패킷 인식자는 OUT 트랜잭션에서 확인되지 않고 IN 토큰에 대응한 현재의 제어 워드 포인터 값에 기초하여 발생한다. OUT 트랜잭션에서, 패킷 인식자 값 (DATA0/DATA1)이 제어 워드 포인터와 일치하지 않는 출력 패킷에 대응하여 긍정응답을 송신한다. IN 트랜잭션에서, 제한시간 기간에 대응하여 긍정응답 응답확인 신호가 복귀되면, 각 트랜잭션 이후에 제어 워드 포인터는 증가(반전)된다. 등시성의 종단점에 대하여, OUT 데이터는 항상 메모리에 기록되지만, FNR.FN(0)이 제어 워드 포인터와 일치하지 않으면, 등시성 동기 에러 (SYNE) 버퍼 상태가 다시 기록된다.
IN 트랜잭션에서, 유효한 긍정응답이 제한시간 기간에 수신되지 않더라도 TE는 송신된 데이터 패킷 인식자 값이 변화하도록 허용한다. 이것은 인터럽트 IN 종단점의 어떤 응용에 중요할 수 있다.
OUT 트랜잭션에서, 패킷을 받아들일지를 결정하기 위하여 DATA0 또는 DATA1 중 어느 쪽인지 확인 여부를 결정하는데 TE가 사용될 수 있다. 이것은 최근의 데이터가 수신되어야하는 인터럽트 OUT 종단점에 대하여 중요할 수 있다.
출력 트랜잭션에서, 버퍼 라운딩 비트 (BR)는 수신된 데이터 패킷과 다른 크기의 데이터 버퍼를 가지는 것이 허용되는지를 지정하며, 다음의 값들을 가질 수 있다:
0: 데이터 패킷은 정의된 데이터 버퍼를 정확히 채워야 한다. 패킷이 버퍼에 정확히 맞지 않으면 버퍼 오버런 (overrun) 또는 언더런 (underrun) 상태로 된다.
1: 종단점에 에러 조건을 발생시키지 않으면서 데이터 패킷이 정의된 버퍼보다 작을 수 있다.
출력 완료 (OCMP) 또는 데이터 에러 (DATE) 버퍼 상태와 함께 판독될 경우, 이 필드는 수신된 패킷 인식자의 값을 표시한다: DATA0에는 0, 그리고 DATA1에는 1.
버퍼 페이지 비트 (BP)는 다음의 값을 가질 수 있다:
0: 입력/출력 버퍼의 상위번지로써 버퍼 페이지 A를 사용한다.
1: 입력/출력 버퍼의 상위번지로써 버퍼 페이지 B를 사용한다.
버퍼 어드레스 비트 (BA)는 버퍼 어드레스의 하위 11비트를 유지한다. 버퍼는 정렬된 더블 워드 경계에서 시작해야 하고 바이트 경계에서 종료될 수 있다. 모든 완료 전송의 말미에, 버퍼 번지의 잉여값이 기록된다. 상태가 입력 또는 출력 대기에 기록될 때와 같은 미완료 전송의 말미에, 이 필드는 중복 기록되지 않는다.
OUT 버퍼에서, 저장된 제 1 바이트는 패킷 인식자 다음의 바이트이다. IN 버퍼에서와 유사하게, 번지는 송신되어야 할 데이터의 첫 바이트, 즉 패킷에서 패킷 인식자 바로 다음의 바이트, 를 지정한다. IN 토큰이 IS_RDY 상태로부터 수신이 되고 제어 워드가 1로 설정된 IS 필드를 갖지 못한 경우를 제외하고는, CRC는 자동적으로 계산되고 패킷에 추가된다.
바이트 카운트 비트 (BC)는 사용된 데이터 버퍼의 크기를 유지한다. 버퍼는 짝수 더블 워드 경계에서 시작하고, 임의의 바이트 경계에서 종료될 수 있다. IN 트랜잭션에서, 이것은 송신될 데이터의 크기를 표시한다. OUT 트랜잭션에서, 이것은 데이터가 수신될 수 있는 버퍼의 크기를 표시한다. 0은 바이트 카운트로서 적절한 값이다. 모든 완료 전송 말미에, 바이트 카운터의 잉여값이 기록된다. 상태가 입력 또는 출력 대기에 기록될 때와 같은, 미완료 전송 말미에, 이 필드는 중복 기록되지 않는다.
레지스터 (Registers)
바람직한 실시예에서, 본원의 발명에 관련된 4개의 레지스터는 종단점 명령 레지스터, 유니버설 시리얼 버스 데이터 레지스터, 버퍼 페이지 A 레지스터, 및 버퍼 페이지 B 레지스터이다.
바람직한 실시예에서, 종단점 명령 레지스터 (Endpoint Command Register : ECR)는 워드 폭의 판독/기록 레지스터이다. 종단점 명령 레지스터는 지정된 종단점에서 명령을 수행하는데 사용된다. 재설정되면, 이 레지스터의 내용은 소거된다. 종단점 명령 레지스터 형식은 다음과 같다:
비트 펑션 라벨
15 - 8 (예비 영역)
7 - 4 종단점 파이프 번호 (EPN)
3 - 0 종단점 명령 (CMD)
종단점 파이프 번호 (EPN)는 명령이 수행되는 종단점 파이프를 결정한다. 바람직한 실시예에서, 이 레지스터는 고속의 버스 인터페이스 로직에서 구현될 수 있다. 데이터는 비동기 인터페이스를 통하여 전달된다. 2개의 신호는 종단점 제어기로부터 전달된다; 제 1 신호는 명령이 처리되었다는 것과 명령 값이 '0'으로 소거되었다는 것을 표시하고, 제 2 신호는 명령이 처리될 수 없다는 것과 'F'로 설정되어야 한다는 것을 표시한다.
종단점 명령 (CMD)은 다음의 값을 갖는다 :
0000 : 완료. 이 값은 전송의 명령이 완료되고 종단점 제어기가 또 다른 명령을 수용할 준비가 되어 있다는 것을 표시한다.
0001 : 입력 인에이블 (CMD.IENB). 이 값은 지정된 종단점을 기능정지(홀트) 또는 디스에이블 상태에서 입력 유휴 상태 (I_IDL)로 진입시킨다. 지정된 종단점 파이프에 대한 제어 워드 포인터는 0으로 재설정된다. 현재 상태가 디스에이블 또는 기능정지가 아니라면, 적절치 않은 명령이 이 종단점에서 시도되었고 그 명령이 무시된 것을 표시하기 위하여 'F'가 복귀된다.
0010 : 입력 레디 (CMD.IRDY). 현재 입력 유휴 상태 (I_IDL)에 있다면, 이 값은 지정된 종단점 파이프를 입력 레디 단계로 진입시킨다. 입력 레디 버퍼 상태 (I_RDY)와 함께 제어 워드가 해당 종단점에 해당하는 종단점 배열에 기록된 후에 이 명령이 발행된다. 이 명령은 메모리에서 제어 워드가 판독되도록 할 수 없다; 대신에, IN 토큰 수신에 대응하여 판독되는 것은 허용한다. 종단점의 현재 상태가 입력 유휴 (I_IDL)가 아니라면, 명령은 무시된다. 현재 상태가 출력 또는 셋업 상태 또는 디스에이블 또는 기능정지 중의 한 경우라면, 이 종단점에서 부적절한 명령이 시도되었다는 것을 표시하기 위하여 'F'가 복귀된다.
0011 : 입력 등시성 레디 (CMD.ISRDY). 현재 입력 유휴 상태 (I_IDL)에 있다면, 이 값은 지정된 종단점 파이프를 입력 등시성 레디 상태 (IS_RDY)에 진입시킨다. 입력 레디 버퍼 상태와 함께 제어 워드가 종단점에 해당하는 종단점 배열에 기록된 후에, 이 명령이 발행된다. 이 명령은 메모리에서 제어 워드가 판독되도록 할 수 없다; 대신에, IN 토큰 수신에 대응하여 판독되는 것은 허용한다. 제어 워드의 타입 필드 (TI)는 등시적으로 설정된 것으로 예상되지만, 확인되지는 않는다. 종단점의 현재 상태가 입력 유휴 (I_IDL)가 아니라면, 명령은 무시된다. 현재 상태가 출력 및 셋업 중의 한 상태이거나, 디스에이블 또는 기능정지라면, 이 종단점에서 부적절한 명령이 시도되었다는 것을 표시하기 위하여 'F'가 복귀된다.
0100 : 출력 인에이블 (CMD.OENB). 이 값은 지정된 종단점 파이프를 기능정지 또는 디스에이블 상태로부터 출력 유휴 상태 (O_IDL)로 진입시킨다. 지정된 종단점 파이프에 대한 제어 워드 포인터는 0으로 재설정된다. 현재 상태가 디스에이블 또는 기능정지가 아니라면, 부적절한 명령이 이 종단점에서 시도되고, 그 명령이 무시되었다는 것을 표시하기 위하여 'F'가 복귀된다.
0101 : 출력 레디 (CMD.ORDY). 현재 출력 유휴 상태 (O_IDL)에 있다면, 이 값은 지정된 종단점 파이프를 출력 레디 상태 (O_RDY)로 진입시킨다. 출력 레디 상태와 함께 제어 워드가 종단점에 해당하는 종단점 배열에 기록된 후에 이 명령이 발행된다. 이 명령은 메모리에서 제어 워드가 판독되도록 할 수 없다; 대신에, OUT 토큰 수신에 대응하여 판독되는 것은 허용한다. 종단점의 현재 상태가 출력 유휴가 아니라면, 명령은 무시된다. 현재 상태가 입력 상태, 기능정지, 또는 디스에이블 중의 한 경우라면, 이 종단점에서 부적절한 명령이 시도되었다는 것을 표시하기 위하여 'F'가 복귀된다.
0110 : 출력 등시성 인에이블 (CMD.OSENB). 이 값은 지정된 종단점 파이프를 기능정지 또는 디스에이블 상태로부터 출력 등시성 유휴 상태 (OS_IDL)로 진입시킨다. 지정된 종단점에 대한 제어 워드 포인터는 0으로 재설정된다. 현재 상태가 디스에이블 또는 기능정지가 아니라면, 부적절한 명령이 이 종단점에서 시도되고, 그 명령이 무시되었다는 것을 표시하기 위하여 'F'가 복귀된다.
0111 : 출력 등시성 레디 (CMD.OSRDY). 현재 출력 등시성 유휴 상태 (OS_IDL)에 있다면, 이 값은 지정된 종단점 파이프를 출력 등시성 레디 상태 (OS_RDY)로 진입시킨다. 출력 레디 상태와 함께 제어 워드가 종단점에 해당하는 종단점 배열에 기록된 후에 이 명령이 발행된다. 이 명령은 메모리에서 제어 워드가 판독되도록 할 수 없다; 대신에 OUT 토큰 수신에 대응하여 판독되는 것은 허용한다. 종단점의 현재 상태가 출력 등시성 유휴가 아닌 경우 명령은 무시된다. 현재 상태가 입력상태, 기능정지, 또는 디스에이블 중의 한 경우라면, 이 종단점에서 부적절한 명령이 시도되었다는 것을 표시하기 위하여 'F'가 복귀된다.
1000 : 셋업 레디 (CMD.SRDY). 이 값은 지정된 종단점 파이프를 셋업 레디 상태 (S_RDY)로 진입시킨다. 출력 레디 버퍼 상태와 함께 제어 워드가 종단점에 해당하는 종단점 배열에 기록된 후에 이 명령이 발행된다. 이 명령은 메모리에서 제어 워드가 판독되도록 하지 않는다; 대신에, SETUP 토큰 수신에 대응하여 판독되는 것은 허용한다. 종단점의 현재 상태가 기능정지 또는 디스에이블이 아닌 경우, 명령은 무시된다.
1001 : 디스에이블 (CMD.DISAB). 이 값은 지정된 종단점 파이프를 디스에이블 상태 (DISABLE)로 진입시킨다. 이것은 임의의 상태로부터 즉시 발생한다. 종단점 파이프가 현재 활성화인 경우, 상태는 종단점이 디스에이블 되었다는 것을 표시하기 위하여 제어에 기록된다.
1010 : 기능정지 (CMD.HALT). 이 값은 지정된 종단점 파이프를 임의의 상태로부터 기능정지 상태 (홀트)로 진입시킨다. 이것은 임의의 상태로부터 즉시 발생한다. 현재 종단점 파이프가 활성화인 경우, 상태는 종단점이 기능정지되었다는 것을 표시하는 제어에 기록된다.
1011 - 1101 : 예비 영역. 이 값들은 아무런 작용을 하지 않고, 0을 복귀한다.
1110 : 토글 제어 워드 포인터. 이 값은 제어 워드 포인터가 토글되도록 한다. 데이터 단계 중에 송신 또는 수신되는 홀수의 패킷과 함께 제어 이전에 사용된다.
1111 : 에러. 이 값은 현재 상태에 대한 현재 종단점 파이프에서 부적절한 명령이 시도되었고, 새로운 명령이 수용될 수 있다는 것을 표시한다.
바람직한 실시예에서, 유니버설 시리얼 버스 데이터 레지스터 (USB Data Register : UDR)는 워드 폭의 판독/기록 레지스터이다. 판독 액세스는 모든 위치에서 허용된다. 데이터 레지스터는 모든 시점에 유니버설 시리얼 버스 지수 레지스터 (USB Index Register : UIR)에 의해 선택된 레지스터를 위하여 판독된 데이터로 탑재된다. 유니버설 시리얼 버스 지수 레지스터의 선택 비트 (UIR.SEL)가 2를 가질 때 이 레지스터의 기록은 유니버설 시리얼 버스 허브 레지스터에서만 허용된다. 상태 비트는 기록 동작이 성공적이었다는 것을 표시하기 위하여 유니버설 시리얼 버스 지수 레지스터의 비트 15에 정의된다. 이것은 허브 펑셔널러티 (functionality)가 포함될 때만 필요하다.
본원의 발명에 관련된 유니버설 시리얼 버스 데이터 레지스터의 부분은 8-비트 종단점 파이프 상태이다. 이 상태는 현재 지수화된 종단점 파이프에 복귀될 각각의 종단점 파이프에 저장된다. 부적절한 종단점 파이프가 지수화되면, 0이 복귀된다. 유니버설 시리얼 버스 데이터 레지스터 포맷은 다음과 같다 :
비트 펑션 라벨
7 제어 (CTL)
6 제어 워드 포인터 (CWP)
5-4 (예비 영역)
3-0 종단점 파이프 상태 (EPS)
제어 (CTL) : 이 종단점 파이프가 SETUP 토큰에 관련한 제어 시퀀스 (sequences)를 수용할 수 있으면 제어가 사용된다. 이 비트는 종단점이 디스에이블될 때까지 이 종단점 파이프에 CMD.SRDY가 수행되고 설정된 후, 설정 상태로 남아있다.
제어 워드 포인터 (CWP) : 제어 워드 비트가 0일 때, 종단점 배열에서 이 종단점의 제어 워드 0은 그 다음에 액세스된다. 제어 워드 비트가 1일 때, 이 종단점의 제어 워드 1은 그 다음에 액세스된다. 종단점이 인에이블될 때면 이것은 0으로 설정된다.
종단점 파이프 상태 (EPS)는 다음의 값들을 갖고 있다 :
값 상태
0 디스에이블 (DIS)
1 입력 유휴 (I_IDL)
2 입력 레디 (I_RDY)
3 입력 활성화 (I_ACT)
4 기능정지 (HALT)
5 입력 미스(missed) 긍정응답 (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)
바람직한 실시예에서, 주어진 시점에서 단지 하나의 종단점 파이프만이 활성화된다.
바람직한 실시예에서, 버퍼 페이지 A 레지스터 (BPA)는 더블 워드의 판독/기록 레지스터이다. BPA의 상위 21 비트는 데이터 전송을 위한 버퍼가 정의되어 있는 2K 바이트의 페이지를 정의한다. 이 버퍼 페이지는 종단점 배열에서 메모리에 기록된 제어 워드의 버퍼 페이지 선택 비트 값 (CW.BP)에 의하여 결정된다. 재설정시, 이 레지스터는 소거된다. BPA 레지스터 포맷은 다음과 같다:
비트 펑션 라벨
31-11 BPA
10-0 00000000000
바람직한 실시예에서, 버퍼 페이지 B 레지스터 (BPB)는 더블 워드의 판독/기록 레지스터이다. BPB의 상위 21 비트는 데이터 전송을 위한 버퍼가 정의되어 있는 2K 바이트의 페이지를 정의한다. 이 버퍼 페이지는 종단점 배열에서 메모리에 기록된 제어 워드의 버퍼 페이지 선택 비트 값 (CW.BP)에 의하여 결정된다. 재설정시, 이 레지스터는 소거된다. BPB 레지스터 포맷은 다음과 같다:
비트 펑션 라벨
31-11 BPB
10-0 00000000000
종단점 파이프 상태 (Endpoint Pipe States)
바람직한 실시예에서, 종단점은 다음의 상태를 가질 수 있다. 동작과 제어를 유지하기 위하여, 각각의 종단점 파이프는 암묵적인(implicit) 하드웨어/소프트웨어 동기에 관련된 상태 사이에서 전송을 위한 올바로 정의된 조건을 가진 상태를 유지한다. 종단점 파이프 상태 전이는 :
- 종단점 명령 레지스터 (ECR)를 통하여 종단점에 외부 소프트웨어 명령에서;
- 전송의 말미에 이 종단점에 대한 다른 제어 워드에서 다른 버퍼의 버퍼상태를 판독함으로써; 및
- IN, OUT 그리고 SETUP 토큰과 긍정응답 응답확인의 수신과 같은 유니버설 시리얼 버스에 대한 동작의 결과로써 발생한다.
도 6 은 IN 및 OUT 트랜잭션을 실시하기 위한 단순화된 종단점 파이프 스테이트 머신을 도시한다. 제어 판독과 제어 기록 트랜잭션은 유사한 방법으로 실시된다.
현재의 종단점 파이프 상태는 유니버설 시리얼 버스 지수와 데이터 레지스터를 통하여 액세스 가능한, 종단점 상태 레지스터에 표시된다. 바람직한 실시예에서, 단지 1개의 종단점 파이프만이 임의의 주어진 시점에서 임의의 활성화 상태로 된다. 이것은 모든 종단점 파이프에서 활성화 상태 로직 (logic)의 공유를 허용한다.
도 6에 도시된 바와 같이, 종단점 파이프는 다음 상태를 가질 수 있다 :
디스에이블 . 재설정 시에, 이 종단점 파이프로의 디스에이블 명령 시에, 그리고 제어 워드의 버퍼상태에서 디스에이블 상태가 검출 시에, DISABLE 상태로 진입된다. 이러한 상태 동안에 이 종단점 파이프에 수신되는 토큰은 응답확인 없이 복귀된다. 소프트웨어 조정은 전형적으로 유휴 상태 중 하나로의 인에이블 명령을 통하여 이 상태로부터 종단점 파이프를 제거하기 위하여 필요하다.
홀트 . 이 종단점 파이프로의 기능정지 명령이며, 제어 워드의 버퍼 상태에서 기능정지 상태가 검출되며, 에러 조건이 생기면, HALT 상태로 진입된다. 이 상태 동안에 이 종단점 파이프에 수신되는 토큰은 종단점이 현재 기능정지된 것을 표시하기 위하여 STALL 응답확인을 복귀한다. 소프트웨어 조정은 전형적으로 유휴 상태 중 하나로의 인에이블 명령을 통하여, 이 상태로부터 종단점 파이프를 제거하기 위하여 필요하다.
입력 유휴 (I_IDL). 이 상태에서, 종단점은 버퍼가 곧 배정될 것이라고 예상한다. 부정응답 응답확인은 이 종단점 파이프에 매핑된 IN 토큰에 대응하여 복귀된다. 이 종단점 파이프로부터는 OUT 토큰에 응답을 복귀하지 않는다.
입력 레디 (I_RDY). 이 종단점 파이프로의 입력 레디 명령을 통하여 또는 전송의 말미에서 다른 입력 버퍼의 검출에 의하여 이 상태로 진입된다. 종단점 배열에서 적절한 위치에 제어 워드를 기록함으로써 버퍼가 이 종단점에 배정된 후에 명령은 주어져야 한다. 이 제어 워드는 이 종단점 파이프에 수신된 다음의 IN 토큰에 대응하여 호스트에 복귀할 데이터와 함께 데이터 버퍼를 지정해야 한다. 패킷 인식자 값은 제어 워드 포인터가 0일 때 DATA0으로 그리고 제어 워드 포인터가 1일 때 DATA1이 송신된다.
입력 활성화 (I_ACT). 선택된 종단점 상태가 현재 입력 레디일 때 IN 토큰이 수신되면 이 상태로 진입된다. 이러한 상태 동안에, 데이터는 메모리로부터 유니버설 시리얼 버스에 전송된다. 데이터 전송이 완료되면, 긍정응답 응답확인은 16 비트시간 이내에서 수신되어야 한다. 이 제한 시간 기간의 말미에서, 긍정응답이 수신되지 않으면, 버퍼 대기 상태는 제어 워드에 다시 기록된다. 그러나, 재송신이 발생하고 현재 값이 다시 사용될 필요가 있기 때문에 번지와 바이트 카운터는 중복 기록되지 않는다. 긍정응답이 수신되면, 버퍼 상태는 어드레스와 바이트 카운터의 현재 값과 함께 기록된다. 이어서 이 종단점에서의 다른 제어 워드는 토큰이 이 종단점 파이프에 지시되는 다음 시기에 사용될 종단점의 다음 상태를 결정하기 위하여 판독된다. 이 종단점이 제어 전이를 위하여 사용되면 제어 판독 전송의 상황 단계를 완료하기 위하여 출력 레디 또는 출력 유휴 상태로의 전송이 발생할 수 있다.
입력 등시성 레디 (IS_RDY). 이 종단점으로의 입력 레디 명령을 통하여 또는 전송의 말미에서 다른 입력 버퍼의 검출에 의하여 이 상태로 진입된다. 종단점 배열에서 적절한 위치에 제어 워드를 기록함으로써 버퍼가 이 종단점에 배정된 후에만 명령이 주어져야 한다. 이 제어 워드는 이 종단점 파이프에 수신된 다음 IN 토큰에 대응하여 호스트에 복귀할 데이터와 함께 데이터 버퍼를 지정해야 한다. 패킷 인식자 값은 제어 워드 포인터의 값과 독립적으로 항상 DATA0으로서 송신된다.
입력 등시성 활성화 (IS_ACT). 선택된 종단점 상태가 현재 입력 레디일 경우 IN 토큰이 수신되면 이 상태로 진입된다. 이 상태 동안에 데이터는 메모리로부터 유니버설 시리얼 버스에 전송된다. 데이터 전송이 완료되면, 전송의 말미에 어드레스와 바이트 카운터의 현재 값과 함께 버퍼 상태가 기록된다. 이어서 이 종단점에서의 다른 제어 워드는 토큰이 이 종단점 파이프에 지시되는 다음 시기에 사용될 종단점의 다음 상태를 결정하기 위하여 판독된다.
출력 유휴 (O_IDL). 이 상태에서, 종단점은 버퍼가 곧 배정될 것이라고 예상한다. 부정응답 응답확인은 이 종단점 파이프에 매핑된 OUT 토큰에 대응하여 복귀된다. 이 종단점 파이프에서는 IN 토큰에 응답을 복귀하지 않는다.
출력 레디 (O_RDY). 데이터가 기록될 버퍼가 이 종단점 파이프에 주어진 이후에 이 상태로 진입된다. 종단점 배열에 적절한 워드가 기록된 후 또는 전송의 말미에 또 다른 출력 버퍼가 검출될 때, O_IDL로부터의 출력 레디 명령을 통하여 이것으로 진입될 수 있다.
출력 활성화 (O_ACT). OUT 토큰을 수신하면 이 상태로 진입된다. 이 상태 동안에 유니버설 시리얼 버스로부터의 데이터는 메모리에 기록된다. 출력 전송의 말미에, 상태는 제어 워드 포인터에서 제어 워드에 기록된다. 전송이 성공하지 못하면, 즉, CRC 또는 비트 스터핑 에러가 검출되면, 이것이 버퍼 상태로써 기록된다. 전송이 성공하면, 출력 완료 버퍼 상태가 기록되고, 제어 워드 포인터가 반전되고, 그리고 이 종단점 파이프에 대한 다른 제어 워드가 판독된다. 버퍼 상태에 기초하여 적절한 전이가 발생한다. 이 종단점이 제어 이전에 사용되면, 제어 기록 전송의 상태 단계를 완료하기 위하여 입력 레디 또는 입력 유휴 상태로의 전송이 발생할 수 있다.
출력 등시성 유휴 (OS_IDL). 이 상태에서, 종단점은 버퍼가 곧 배정될 것이라고 예상한다. 이 종단점 파이프에 매핑된 OUT 토큰에 대응하여 응답확인은 복귀되지 않는다. 이 종단점 파이프에서는 IN 토큰에 대하여 데이터 또는 응답확인이 복귀되지 않는다.
출력 등시성 레디 (OS_RDY). 데이터가 기록될 버퍼가 이 종단점 파이프에 주어진 이후에 이 상태로 진입된다. 이것은 종단점 배열에 적절한 워드가 기록된 후, 또는 전송의 말미에 또 다른 출력 버퍼가 검출될 때 OS_IDL 상태로부터의 OSRDY를 통하여 진입될 수 있다.
출력 등시성 활성화 (OS_ACT). OS_RDY 상태로부터 OUT 토큰을 수신하면 이 상태로 진입된다. 이 상태 동안에 유니버설 시리얼 버스로부터의 데이터가 메모리에 기록된다. 출력 전송의 말미에, 상태는 제어 워드 포인터에서 제어 워드에 기록된다. 전송이 성공하지 못하면, 즉, CRC 이나 비트 스터핑 에러가 검출되면, 이것이 버퍼 상태로써 기록된다. 전송이 성공하면, 출력 완료 버퍼 상태가 기록된다. 상태 전송의 말미에, 제어 워드 포인터는 반전되고, 그리고 이 종단점 파이프에 다른 제어 워드가 판독된다. 버퍼 상태에 기초하여 적절한 전이가 발생한다.
셋업 레디 (S_RDY). 데이터가 기록될 버퍼가 이 종단점 파이프에 주어진 이후에 이 상태로 진입된다. 이 상태는 종단점 배열에 적절한 워드가 기록된 후, 또는 셋업 레디 버퍼 상태가 검출될 때, 셋업 레디 명령을 통하여 진입된다.
셋업 활성화 (S_ACT). 셋업 레디 상태로부터 SETUP 토큰을 수신하면 이 상태로 진입된다. 이 상태 동안에, 유니버설 시리얼 버스로부터의 데이터가 메모리에 기록된다. 출력 전송의 말미에, 상태는 제어 워드 포인터에서 제어 워드에 기록되고, 제어 워드 포인터가 반전되고, 이 종단점 파이프에 다른 제어 워드가 판독된다. 제어 이전과 버퍼 상태 판독의 형태에 따라서 출력 유휴, 출력 레디, 입력 유휴, 또는 입력 레디 상태에 대한 버퍼 상태에 기초하여 적절한 전이가 발생한다.
재설정 이후에, 모든 종단점은 디스에이블된다. 종단점은 종단점에 인에이블 명령을 부여하여 인에이블된다. 이것은 입력 및/또는 출력 버퍼가 곧 이 종단점에 배정될 때만 성립되어야 한다. 종단점 파이프에 현재 매핑되지 않은 모든 종단점은 디스에이블로 간주된다.
소프트웨어는 필요한 경우에 종단점 파이프에 버퍼를 배정한다. 각각의 버퍼가 배정된 이후에, 종단점 파이프에서 입력 또는 출력 레디 명령을 수행한다. 종단점 파이프가 현재 유휴 상태에 있다면, 적절한 레디 상태로 진입한다. 종단점 파이프가 현재 레디 또는 활성화 상태에 있으면, 이것은 즉시 처리되는, 종단점 파이프에 대한 디스에이블과 기능정지 명령 이외의 명령은 모두 무시한다. 유니버설 시리얼 버스 노드 인터페이스 모듈 종단점 파이프 처리는 소프트웨어 동작에 비동기적으로 동작하므로 소프트웨어는 잠재적인 동기 문제를 피하기 위하여 이 기록을 실시해야한다.
2개의 버퍼까지는 각각의 종단점에 배정될 수 있기 때문에, 현재의 버퍼가 데이터 전송을 가속화하고 불필요한 부정응답 응답확인을 회피하기 위하여 처리되는 동안에, 다음 버퍼가 준비될 수 있다.
벌크 종단점 동작 (Bulk Endpoint Operation)
바람직한 실시예에서, 전형적으로 더 큰 데이터 전송이 관련되고 IN 및 OUT 방향에서 발생하는 경우를 제외하고, 벌크 종단점은 인터럽트 종단점과 유사하게 동작한다. 토글 프로토콜은 항상 벌크 종단점에 뒤따르고, 그래서 모든 제어 워드에서, TE가 설정된다. 특별한 벌크 종단점은 입력 또는 출력 방향에 사용된다. 벌크 종단점이 최초 초기화될 때, 입력 인에이블 또는 출력 인에이블 명령은 적절한 종단점 파이프 번호 (ECR.(I/OENB,EPN))에 주어진다.
입력으로 사용될 종단점에서, 데이터가 사용 가능할 때, 버퍼에 기록되고 제어 워드는 IRDY 상태와 함께 기록되고, TE는 설정된다. 그 이후 IRDY 명령이 수행된다. 2개까지의 데이터 버퍼가 주어진 시간에 종단점에 첨부될 수 있다. 이것은 대량의 데이터 전송 중에 부정응답 송신을 피할 필요가 있는 경우, 이중 버퍼 형태(Scheme)를 허용한다. 소프트웨어 동기는 버퍼상태를 조사함으로써 발생한다. 완료 버퍼 상태만이 중복 기록될 수 있다.
출력으로 종단점이 사용될 경우, 데이터를 전송할 버퍼를 준비해두어야 한다. 이 버퍼가 사용 가능할 때, 이것에 대한 포인터와 함께 제어 워드는 적절한 제어 워드로 기록된다. 토글 인에이블 비트 (TE) 또한 여기에서 설정되어야 한다. ORDY 명령은 종단점 파이프에 주어진다. OUT 토큰의 부분으로서 데이터가 이 버퍼에 수신된 후에, 메모리에서의 제어 워드는 갱신된다. 데이터 패킷의 크기를 알 수 없으면, 제어 워드의 버퍼 라운딩 비트가 설정되어야 한다. 이것은 수신될 버퍼의 크기보다 작은 패킷을 허용하고 에러 상태는 기록되지 않는다. 버퍼 라운딩 비트가 설정되지 않으면, 배정된 버퍼를 정확히 채우지 않는 수신된 패킷은 데이터 에러 상태 에러와 함께 기록된다. 모든 경우에 이 종단점에 기대 이상의 데이터가 수신되면 데이터 상태 에러는 기록된다. 데이터를 수신하는 동안 에러가 검출되면, 중간 버퍼 상태는 메모리에 다시 기록되고, 다음 OUT 토큰에서 버퍼는 다시 사용된다. 이것은 소프트웨어가 재시도 프로토콜의 복잡성으로서가 아니라, 데이터를 수신하기 위하여 제공되는 버퍼만을 고려할 필요가 있다는 것을 의미한다.
요약하면, 바람직한 실시예에서, 종단점 파이프 제어기는 다음의 단계를 수행한다. 첫째, 현재의 종단점 파이프 상태에 기반을 두어, 종단점 명령 레지스터가 갱신된다. 종단점 명령 레지스터는 다른 종단점 파이프가 활성화되어 있는 동안에 하나의 종단점 파이프의 상태가 갱신되도록 한다.
다음, 종단점은 토큰을 수신한다. 번지는 펑션의 번지에 대하여 비교되고, 종단점 번호 (EPN)는 종단점 파이프 맵 (map)으로의 지수로써 사용되며, 수신된 종단점 파이프 번호는 결정된다. 버퍼 상태 변수는 버퍼의 현재 상태의 정보를 계속 기록해야 한다. 버퍼 상태는 트랜잭션 중에 3번 갱신될 수 있고 잔여 값은 제어 워드에 다시 기록된다. 이 값은 보다 정확한 상태에 의하여 이후에 중복 기록될 수 있다.
다음, 종단점은 토큰에 대응하여 제어 워드를 판독한다. 단계 1 버퍼 상태는 IWT 또는 OWT로 설정된다. 이러한 경우에 제어 워드에서 정의된 번지와 크기를 사용하여, 제어 워드는 메모리로부터 판독되고 이어서 데이터 전송을 시작할지를 결정하기 위하여 사용된다. 버퍼 상태의 다음 값 또한 결정된다. 이것은 이전의 설정으로 버퍼 상태를 중복 기록하는데 사용된다. IN 토큰이 수신되면, 번지에서 데이터는 판독되고 유니버설 시리얼 버스에 전송된다. OUT 또는 SETUP 토큰이 수신되면, 유니버설 시리얼 버스로부터 32 비트의 데이터가 수신되면, 제어 워드로부터의 번지에서 데이터 전송이 시작된다.
다음, 전송의 말미에, 버퍼의 상태와 응답확인 (HS)은 갱신된다. EABAR+cEPP+CWP에서 제어 워드를 갱신하도록 하는 요청이 발생되면, 버퍼상태와 응답확인이 즉시 갱신된다.
IN 패킷의 마지막 바이트가 송신될 때, 복귀되는 긍정응답을 대기하는 타이머가 시작된다. 긍정응답이 패킷종료 (end-of-packet)가 송신된 이후 16 비트시간 내에 수신되지 않으면 시간제한이 신호된다. 이 값은 파이프라인의 지연에 대처하기 위하여 증가될 수 있다. 유니버설 시리얼 버스 전송률을 따라갈 정도로 데이터를 빠르게 불러오지 못할 경우 버퍼 에러가 발생하고, 언더플로우 (underflow) 조건이 발생한다.
OUT 패킷의 말미에서, 마지막 예상 바이트가 종단점 제어기로부터 전송될 때 기록종료 (end-of-write) 신호 (EOW)가 사용된다. 데이터가 메모리에 충분히 빠르게 기록될 수 없을 때 버퍼 에러가 발생하고 오버플로우 (overflow)가 발생한다. 데이터 오버플로우 또는 라운딩 에러가 발생하였을 때 데이터 에러가 발생한다. 수신된 패킷이 배정된 버퍼보다 클 경우에 데이터 오버플로우가 발생한다, 즉, EOW가 사용된 후에 바이트가 수신된다. 버퍼 라운딩 (CW.BR) 이 설정되지 않고 CRC의 시작에서 버퍼 카운트가 0이 아닐 때 라운딩 에러가 발생한다 (즉, 패킷은 버퍼를 정확히 채우지 못한다).
결국,이 종단점 파이프에 대한 종단점 파이프 상태는 갱신된다. 제어 워드 포인터가 증가되면, 제어 워드 포인터가 증가(반전)된 직후 판독된 새로운 제어 워드로부터 다음 종단점 파이프 상태가 수신된다.
본원에서 기술한 발명의 실시예에 대한 다양한 다른 실시예는 본 발명을 실시하는데 사용될 수 있다. 다음의 청구항은 본 발명의 범위를 정의하며, 그러므로 이들 청구항의 범위내의 구조 및 그 동등한 것도 보호된다.
본 발명의 실시예에 따르면, 전술한 몇 가지 제한점을 해결할 수 있다. 부언하면, 유니버설 시리얼 버스가 각각 한 쌍의 종단점을 위한 송신 버퍼와 수신 버퍼를 포함하는 경우, 종단점의 수가 버퍼의 크기를 제한하거나 버퍼의 크기가 종단점의 수를 제한할 수 있으나, 본 발명의 실시예에 따르면 전술한 문제점을 해결하여 전체 버퍼 크기에 해당하는 증가 없이 종단점의 수를 증가할 수 있다. 또한 유니버설 시리얼 버스가 데이터를 수신한 이후에 버퍼가 채워지기 전에 버퍼로부터 데이터를 제거하는 처리기 조정이 필요하지만, 본 발명의 실시예에 의하여 상기 문제점을 해결하여 데이터를 수신한 후에 처리기 조정을 감소시키는 것이 가능하다.

Claims (6)

  1. 비등시성 종단점 파이프에서 유니버설 시리얼 버스 종단점으로부터 유니버설 시리얼 버스 호스트에 데이터를 송신하는 장치에 있어서,
    제 1 데이터 저장 요소와;
    제 2 데이터 저장 요소와;
    상기 제 1 데이터 저장 요소에서 적어도 제 1의 복수 데이터와 상기 제 2 데이터 저장 요소에서 적어도 제 2의 복수 데이터를 발생하도록 구성된 데이터 처리기와;
    데이터 저장 요소에 해당하는 포인터를 포함하도록 구성된 포인터 데이터 저장 요소와; 및
    유니버설 시리얼 버스 종단점 파이프에서 유니버설 시리얼 버스 종단점으로부터 유니버설 시리얼 버스 호스트에 복수의 데이터를 송신하고 신호를 수신하도록 구성된 제어기를 포함하며,
    상기 데이터 처리기가 상기 제 1 데이터 저장 요소에서 상기 제 1의 복수 데이터와 상기 제 2 데이터 저장 요소에서 상기 제 2의 복수 데이터를 발생시키고, 상기 제어기가 상기 포인터 데이터 저장 요소에서 상기 제 1 데이터 저장 요소에 제 1 포인터를 발생시키고, 상기 제 1의 복수 데이터를 송신하고, 이어서 상기 유니버설 시리얼 버스 호스트로부터의 호스트 신호와 시간 제한 신호 중의 하나가 되는 제 1 신호를 수신하며,
    상기 제어기는, 상기 호스트 신호가 수신될 때까지, 상기 제 1의 복수 데이터를 재송신하며,
    상기 호스트 신호가 수신되면, 상기 제어기가 상기 포인터 데이터 저장 요소에서 상기 제 2 데이터 저장 요소에 제 2 포인터를 발생시키고, 상기 제 2의 복수 데이터를 송신하는 것을 특징으로 하는, 비등시성 종단점 파이프에서 유니버설 시리얼 버스 종단점으로부터 유니버설 시리얼 버스 호스트에 데이터를 송신하는 장치.
  2. 비등시성 종단점 파이프에서 유니버설 시리얼 버스 종단점으로부터 유니버설 시리얼 버스 호스트에 데이터를 송신하는 장치에 있어서,
    제 1 데이터 저장 요소와;
    제 2 데이터 저장 요소와;
    상기 제 1 데이터 저장 요소에서 적어도 제 1의 복수 데이터와 상기 제 2 데이터 저장 요소에서 제 2의 복수 데이터를 발생시키도록 구성된 데이터 처리기와;
    데이터 저장 요소에 해당하는 포인터를 포함하도록 구성된 포인터 데이터 저장 요소와; 및
    유니버설 시리얼 버스 종단점 파이프에서 유니버설 시리얼 버스 종단점으로부터 유니버설 시리얼 버스 호스트에 복수의 데이터를 송신하고 신호를 수신하도록 구성된 제어기를 포함하며,
    상기 데이터 처리기가 상기 제 1 데이터 저장 요소에서 상기 제 1의 복수 데이터와 상기 제 2 데이터 저장 요소에서 상기 제 2의 복수 데이터를 발생시키고, 상기 제어기가 상기 포인터 데이터 저장 요소에서 상기 제 1 데이터 저장 요소에 제 1 포인터를 발생시키고, 상기 제 1의 복수 데이터를 송신하고, 이어서 상기 유니버설 시리얼 버스 호스트로부터의 호스트 신호와 시간 제한 신호 중의 하나가 되는 제 1 신호를 수신하며,
    상기 제어기는, 상기 호스트 신호가 수신될 때까지, 상기 제 1의 복수 데이터를 재송신하며,
    상기 호스트 신호가 수신되면, 상기 데이터 처리기가 상기 제 1 데이터 저장 요소에서 제 3 의 복수 데이터를 발생시키고, 상기 제어기가 상기 포인터 데이터 저장 요소에서 상기 제 2 데이터 저장 요소에 제 2 포인터를 발생시키고, 상기 제 2의 복수 데이터를 송신하고, 이어서 상기 유니버설 시리얼 버스 호스트로부터의 제 2의 호스트 신호와 제 2의 시간 제한 신호 중의 하나가 되는 제 2신호를 수신하며,
    상기 제어기는, 상기 제 2의 호스트 신호가 수신될 때까지, 상기 제 2의 복수 데이터를 재송신하며,
    상기 제 2의 호스트 신호가 수신되면, 상기 제어기는 상기 포인터 데이터 저장 요소에서 상기 제 1 데이터 저장 요소에 제 3 포인터를 발생시키고, 상기 제 3의 복수 데이터를 송신하는 것을 특징으로 하는, 비등시성 종단점 파이프에서 유니버설 시리얼 버스 종단점으로부터 유니버설 시리얼 버스 호스트에 데이터를 송신하는 장치.
  3. 비등시성 종단점 파이프의 유니버설 시리얼 버스 호스트로부터 유니버설 시리얼 버스 종단점의 데이터를 수신하는 장치에 있어서,
    제 1 데이터 저장 요소와;
    제 2 데이터 저장 요소와;
    상기 제 1 데이터 저장 요소에서 적어도 제 1의 복수 데이터로부터의 데이터를 발생시키도록 구성된 데이터 처리기와;
    데이터 저장 요소에 해당하는 포인터를 포함하도록 구성된 포인터 데이터 저장 요소와; 및
    유니버설 시리얼 버스 종단점 파이프의 유니버설 시리얼 버스 호스트로부터 유니버설 시리얼 버스 종단점의 복수의 데이터를 수신하고 에러를 검출하도록 구성된 제어기를 포함하며,
    상기 제어기는 상기 포인터 데이터 저장 요소에서 상기 제 1 데이터 저장 요소에 제 1 포인터를 발생시키고, 상기 제 1 데이터 저장 요소에의 상기 제 1의 복수 데이터를 수신하고, 이어서 제 1 오류가 발생했는지를 검출하며,
    상기 제어기는 상기 제 1 에러가 검출되면, 수신을 계속하며,
    상기 제 1 에러가 검출되지 않으면, 상기 데이터 처리기가 상기 제 1의 복수 데이터로부터의 상기 데이터를 발생시키고, 상기 제어기가 상기 포인터 데이터 저장 요소에서 상기 제 2 데이터 저장 요소에 제 2 포인터를 발생시키고, 상기 제 2 데이터 저장 요소에의 상기 제 2의 복수 데이터를 수신하는 것을 특징으로 하는, 비등시성 종단점 파이프의 유니버설 시리얼 버스 호스트로부터 유니버설 시리얼 버스 종단점의 데이터를 수신하는 장치.
  4. 비등시성 종단점 파이프의 유니버설 시리얼 버스 호스트로부터 유니버설 시리얼 버스 종단점의 데이터를 수신하는 장치에 있어서,
    제 1 데이터 저장 요소와;
    제 2 데이터 저장 요소와;
    상기 제 1 데이터 저장 요소의 적어도 제 1의 복수 데이터 및 상기 제 2 데이터 저장 요소의 적어도 제 2의 복수 데이터로부터의 데이터를 발생시키도록 구성된 데이터 처리기와;
    데이터 저장 요소에 해당하는 포인터를 포함하도록 구성된 포인터 데이터 저장 요소와; 및
    유니버설 시리얼 버스 종단점 파이프의 유니버설 시리얼 버스 호스트로부터 유니버설 시리얼 버스 종단점의 복수의 데이터를 수신하고 에러를 검출하도록 구성된 제어기를 포함하며,
    상기 제어기는 상기 포인터 데이터 저장 요소에서 상기 제 1 데이터 저장 요소에 제 1 포인터를 발생시키고, 상기 제 1 데이터 저장 요소에의 상기 제 1의 복수 데이터를 수신하고, 이어서 제 1 에러가 발생했는지를 검출하며,
    상기 제어기는 상기 제 1 에러가 검출되면, 수신을 계속하며,
    상기 제 1 에러가 검출되지 않으면, 상기 데이터 처리기가 상기 제 1의 복수 데이터로부터의 상기 데이터를 발생시키고, 상기 제어기가 상기 포인터 저장 요소에서 상기 제 2 데이터 저장 요소에 제 2 포인터를 발생시키고, 상기 제 2 데이터 저장 요소에의 상기 제 2의 복수 데이터를 수신하고, 이어서 제 2 에러가 발생했는지를 검출하며,
    상기 제어기는 상기 제 2 에러가 검출되면, 수신을 계속하며,
    상기 제 2 에러가 검출되지 않으면, 상기 데이터 처리기가 상기 제 2의 복수 데이터로부터의 상기 데이터를 발생시키고, 상기 제어기가 상기 포인터 데이터 저장 요소에서 상기 제 1 데이터 저장 요소에 제 3 포인터를 발생시키고, 상기 제 1 데이터 저장 요소에의 상기 제 3의 복수 데이터를 수신하는 것을 특징으로 하는, 비등시성 종단점 파이프의 유니버설 시리얼 버스 호스트로부터 유니버설 시리얼 버스 종단점의 데이터를 수신하는 장치.
  5. 비등시성 종단점 파이프에서 유니버설 시리얼 버스 종단점으로부터 유니버설 시리얼 버스 호스트에 데이터를 송신하는 방법에 있어서,
    제 1 데이터 저장 요소에서 제 1의 복수 데이터를 발생시키고 상기 제 1 데이터 저장 요소에 제 1 포인터를 발생시키는 단계와;
    제 2 데이터 저장 요소에서 제 2의 복수 데이터를 발생시키는 단계와;
    유니버설 시리얼 버스 종단점으로부터 유니버설 시리얼 버스 호스트에 상기 제 1의 복수 데이터를 송신하고, 이어서 상기 유니버설 시리얼 버스 호스트로부터의 호스트 신호와 시간 제한 신호 중의 하나가 되는 신호를 수신하는 단계와;
    상기 호스트 신호가 수신될 때까지 상기 제 1의 복수 데이터를 계속 송신하는 단계와; 및
    상기 호스트 신호가 수신되면, 상기 제 2 데이터 저장 요소에 제 2 포인터를 발생시키고, 이어서 상기 유니버설 시리얼 버스 종단점으로부터 상기 유니버설 시리얼 버스 호스트에 상기 제 2의 복수 데이터를 송신하는 단계들을 포함하는 것을 특징으로 하는, 비등시성 종단점 파이프에서 유니버설 시리얼 버스 종단점으로부터 유니버설 시리얼 버스 호스트에 데이터를 송신하는 방법.
  6. 비등시성 종단점 파이프에서 유니버설 시리얼 버스 종단점으로부터 유니버설 시리얼 버스 호스트에 데이터를 송신하는 방법에 있어서,
    제 1 데이터 저장 요소에서 제 1의 복수 데이터를 발생시키고 상기 제 1 데이터 저장 요소에 제 1 포인터를 발생시키는 단계와;
    제 2 데이터 저장 요소에서 제 2의 복수 데이터를 발생시키는 단계와;
    유니버설 시리얼 버스 종단점으로부터 유니버설 시리얼 버스 호스트에 상기 제 1의 복수 데이터를 송신하고, 이어서 상기 유니버설 시리얼 버스 호스트로부터의 호스트 신호와 시간 제한 신호 중의 하나가 되는 신호를 수신하는 단계와;
    상기 호스트 신호가 수신될 때까지 상기 제 1의 복수 데이터를 계속 송신하는 단계와;
    상기 호스트 신호가 수신되면, 상기 제 2 데이터 저장 요소에 제 2 포인터를 발생시키고, 상기 제 1 데이터 저장 요소에서 상기 데이터의 제 3의 복수 데이터를 발생시키고, 이어서 상기 유니버설 시리얼 버스 종단점으로부터 상기 유니버설 시리얼 버스 호스트에 상기 제 2의 복수 데이터를 송신하고, 이어서 제 2의 호스트 신호와 제 2의 시간 제한 신호 중의 하나가 되는 제 2의 신호를 수신하는 단계와;
    상기 제 2의 호스트 신호가 수신될 때까지 상기 제 2의 복수 데이터를 계속 송신하는 단계와; 및
    상기 제 2의 호스트 신호가 수신되면, 상기 제 1 데이터 저장 요소에 제 3 포인터를 발생시키고, 이어서 상기 유니버설 시리얼 버스 종단점으로부터 상기 유니버설 시리얼 버스 호스트에 상기 제 3의 복수 데이터를 송신하는 단계들을 포함하는 것을 특징으로 하는, 비등시성 종단점 파이프에서 유니버설 시리얼 버스 종단점으로부터 유니버설 시리얼 버스 호스트에 데이터를 송신하는 방법.
KR1019990000088A 1998-01-07 1999-01-06 이중 버퍼링을 지원하는 유니버설 시리얼 버스 종단점 파이프의 실시장치 및 실시방법 KR100290597B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/004,003 US6145045A (en) 1998-01-07 1998-01-07 System for sending and receiving data on a Universal Serial Bus (USB) using a memory shared among a number of end points
US9/004,003 1998-01-07

Publications (2)

Publication Number Publication Date
KR19990067733A KR19990067733A (ko) 1999-08-25
KR100290597B1 true KR100290597B1 (ko) 2001-05-15

Family

ID=21708652

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990000088A KR100290597B1 (ko) 1998-01-07 1999-01-06 이중 버퍼링을 지원하는 유니버설 시리얼 버스 종단점 파이프의 실시장치 및 실시방법

Country Status (3)

Country Link
US (2) US6145045A (ko)
KR (1) KR100290597B1 (ko)
DE (1) DE19900331A1 (ko)

Families Citing this family (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6307543B1 (en) * 1998-09-10 2001-10-23 Silicon Image, Inc. Bi-directional data transfer using two pair of differential lines as a single additional differential pair
US6311294B1 (en) * 1998-10-20 2001-10-30 Cypress Semiconductor Corp. Device and method for efficient bulk data retrieval using a universal serial bus
US6721805B1 (en) * 1998-11-12 2004-04-13 International Business Machines Corporation Providing shared-medium multiple access capability in point-to-point communications
US6499079B1 (en) 1998-11-23 2002-12-24 Advanced Micro Devices, Inc. Subordinate bridge structure for a point-to-point computer interconnection bus
US6457084B1 (en) * 1998-11-23 2002-09-24 Advanced Micro Devices, Inc. Target side distributor mechanism for connecting multiple functions to a single logical pipe of a computer interconnection bus
US6611891B1 (en) 1998-11-23 2003-08-26 Advanced Micro Devices, Inc. Computer resource configuration mechanism across a multi-pipe communication link
US6618782B1 (en) 1998-11-23 2003-09-09 Advanced Micro Devices, Inc. Computer interconnection bus link layer
US6470410B1 (en) * 1998-11-23 2002-10-22 Advanced Micro Devices, Inc. Target side concentrator mechanism for connecting multiple logical pipes to a single function utilizing a computer interconnection bus
US6457081B1 (en) 1998-11-23 2002-09-24 Advanced Micro Devices, Inc. Packet protocol for reading an indeterminate number of data bytes across a computer interconnection bus
JP3228249B2 (ja) * 1998-12-04 2001-11-12 日本電気株式会社 ルータ装置
US6233628B1 (en) * 1999-01-08 2001-05-15 Oak Technology, Inc. System and method for transferring data using separate pipes for command and data
US6389495B1 (en) * 1999-01-16 2002-05-14 Cypress Semiconductor Corp. Dedicated circuit and method for enumerating and operating a peripheral device on a universal serial bus
US6321350B1 (en) * 1999-02-22 2001-11-20 International Business Machines Corporation Method and apparatus for error detection using a queued direct Input-Output device
US6148354A (en) 1999-04-05 2000-11-14 M-Systems Flash Disk Pioneers Ltd. Architecture for a universal serial bus-based PC flash disk
US6671765B1 (en) * 1999-11-22 2003-12-30 Texas Instruments Incorporated Architecture enabling code overlay using a dedicated endpoint
US6502097B1 (en) * 1999-12-23 2002-12-31 Microsoft Corporation Data structure for efficient access to variable-size data objects
AU761064C (en) * 2000-02-21 2004-02-26 Trek 2000 International Ltd A portable data storage device
FI113606B (fi) * 2000-05-03 2004-05-14 Nokia Corp Menetelmä sanomien välittämiseksi, tiedonsiirtojärjestelmä ja päätelaite
US6718412B2 (en) * 2000-12-14 2004-04-06 Agilent Technologies, Inc. Apparatus and method for universal serial bus communications
US7401126B2 (en) * 2001-03-23 2008-07-15 Neteffect, Inc. Transaction switch and network interface adapter incorporating same
US6931465B1 (en) 2001-03-31 2005-08-16 Cypress Semiconductor Corp. Intelligent, extensible SIE peripheral device
JP3680762B2 (ja) * 2001-05-14 2005-08-10 セイコーエプソン株式会社 データ転送制御装置及び電子機器
JP3680763B2 (ja) * 2001-05-14 2005-08-10 セイコーエプソン株式会社 データ転送制御装置及び電子機器
WO2003003295A1 (en) * 2001-06-28 2003-01-09 Trek 2000 International Ltd. A portable device having biometrics-based authentication capabilities
IL159391A0 (en) 2001-06-28 2004-06-01 Trek 2000 Int Ltd Method and devices for data transfer
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
US6718405B2 (en) * 2001-09-20 2004-04-06 Lsi Logic Corporation Hardware chain pull
JP2005504393A (ja) * 2001-09-27 2005-02-10 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ バス・システムおよびバス・インターフェース
EP1433069B1 (en) * 2001-09-27 2010-11-10 Nxp B.V. Bus system and bus interface for connection to a bus
KR100944892B1 (ko) * 2001-09-28 2010-03-03 에스티 에릭슨 에스에이 버스 시스템 및 버스 인터페이스
US7110389B2 (en) * 2001-11-19 2006-09-19 International Business Machines Corporation Fanning route generation technique for multi-path networks
ATE488840T1 (de) * 2002-02-07 2010-12-15 Trek 2000 Int Ltd Tragbare datenspeicher- und bildaufzeichnungs einrichtung mit der fähigkeit zur direkt verbindung mit einem computer-usb-port
US20030167347A1 (en) * 2002-02-11 2003-09-04 Combs James Lee Home network printer adapter
US7987007B2 (en) * 2002-03-18 2011-07-26 Creative Technology Ltd Memory module with audio playback mode
US20030184960A1 (en) * 2002-03-28 2003-10-02 Compaq Information Technologies Group, L.P. Enumeration, manageability, and security of a KVM extension device
AU2002258343B2 (en) 2002-05-13 2005-09-29 Trek 2000 International Ltd. System and apparatus for compressing and decompressing data stored to a portable data storage device
CN1822204B (zh) * 2002-05-13 2010-10-13 特科2000国际有限公司 对便携式数据存储设备中存储的数据进行压缩及解压缩的系统和方法
US7478235B2 (en) * 2002-06-28 2009-01-13 Microsoft Corporation Methods and systems for protecting data in USB systems
US6745264B1 (en) * 2002-07-15 2004-06-01 Cypress Semiconductor Corp. Method and apparatus for configuring an interface controller wherein ping pong FIFO segments stores isochronous data and a single circular FIFO stores non-isochronous data
TW588243B (en) * 2002-07-31 2004-05-21 Trek 2000 Int Ltd System and method for authentication
US6985977B2 (en) 2002-08-30 2006-01-10 National Instruments Corporation System and method for transferring data over a communication medium using double-buffering
US7069373B2 (en) * 2002-11-07 2006-06-27 Nec Electronics America, Inc. USB endpoint controller flexible memory management
JP4050135B2 (ja) * 2002-11-25 2008-02-20 富士通株式会社 通信デバイス、ホスト装置、及び通信方法
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
US7823133B2 (en) * 2003-04-23 2010-10-26 Stmicroelectronics, Inc. Smart card device and method for debug and software development
US7044390B2 (en) * 2003-06-02 2006-05-16 Stmicroelectronics, Inc. Smart card emulator and related methods using buffering interface
US7127649B2 (en) * 2003-06-09 2006-10-24 Stmicroelectronics, Inc. Smartcard test system and related methods
CN1302382C (zh) * 2003-06-13 2007-02-28 联想(北京)有限公司 基于usb闪存盘存储介质私有空间的验证方法
TWI296083B (en) * 2003-09-29 2008-04-21 Sharp Kk Communication controller, host-side controller, communication system, usb system, communication equipment, communication method, packet-based communication method, packet-based communication program, and storage medium
US20050097198A1 (en) * 2003-10-08 2005-05-05 Getler Robert M. Printer monitoring system and method
US7562360B2 (en) * 2003-12-01 2009-07-14 Texas Instruments Incorporated Method and system for firmware downloads
US20060020721A1 (en) * 2004-05-26 2006-01-26 Microchip Technology Incorporated Configurable ping-pong buffers for USB buffer descriptor tables
US20050278472A1 (en) * 2004-06-14 2005-12-15 Gierke Justin T USB extender
US20060227759A1 (en) * 2004-09-14 2006-10-12 Bohm Mark R Peripheral Sharing USB Hub
US20060059293A1 (en) * 2004-09-14 2006-03-16 Henry Wurzburg Universal serial bus switching hub
JP2006107450A (ja) 2004-09-30 2006-04-20 Emc Corp トライアングル非同期複製(triangularasynchronousreplication)
US8078813B2 (en) 2004-09-30 2011-12-13 Emc Corporation Triangular asynchronous replication
US8458280B2 (en) * 2005-04-08 2013-06-04 Intel-Ne, Inc. Apparatus and method for packet transmission over a high speed network supporting remote direct memory access operations
US20060268691A1 (en) * 2005-05-31 2006-11-30 International Business Machines Corporation Divide and conquer route generation technique for distributed selection of routes within a multi-path network
US7978719B2 (en) * 2005-06-10 2011-07-12 International Business Machines Corporation Dynamically assigning endpoint identifiers to network interfaces of communications networks
US7889762B2 (en) * 2006-01-19 2011-02-15 Intel-Ne, Inc. Apparatus and method for in-line insertion and removal of markers
US7782905B2 (en) * 2006-01-19 2010-08-24 Intel-Ne, Inc. Apparatus and method for stateless CRC calculation
US7433990B2 (en) * 2006-01-24 2008-10-07 Standard Microsystems Corporation Transferring system information via universal serial bus (USB)
US8078743B2 (en) * 2006-02-17 2011-12-13 Intel-Ne, Inc. Pipelined processing of RDMA-type network transactions
US7849232B2 (en) * 2006-02-17 2010-12-07 Intel-Ne, Inc. Method and apparatus for using a single multi-function adapter with different operating systems
US8316156B2 (en) * 2006-02-17 2012-11-20 Intel-Ne, Inc. Method and apparatus for interfacing device drivers to single multi-function adapter
US7526590B2 (en) * 2006-03-31 2009-04-28 Intel Corporation Systems and methods for remote pipe resource management in wireless adapters
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
US20080005262A1 (en) * 2006-06-16 2008-01-03 Henry Wurzburg Peripheral Sharing USB Hub for a Wireless Host
US20080034106A1 (en) * 2006-08-02 2008-02-07 Sanjay Bakshi Reducing power consumption for bulk data transfers
US8315269B1 (en) 2007-04-18 2012-11-20 Cypress Semiconductor Corporation Device, method, and protocol for data transfer between host device and device having storage interface
TWI448902B (zh) * 2007-08-24 2014-08-11 Cypress Semiconductor Corp 具頁存取基礎處理器介面之橋接裝置
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
US8090894B1 (en) 2007-09-21 2012-01-03 Cypress Semiconductor Corporation Architectures for supporting communication and access between multiple host devices and one or more common functions
US7895387B1 (en) 2007-09-27 2011-02-22 Cypress Semiconductor Corporation Devices and methods for sharing common target device with two different hosts according to common communication protocol
US7908421B2 (en) * 2008-09-30 2011-03-15 Intel Corporation Universal serial bus endpoint context caching
US8166225B2 (en) * 2009-04-09 2012-04-24 Tenx Technology Inc. USB interface data transmission device and USB interface data communication system
JP5456434B2 (ja) 2009-10-22 2014-03-26 ルネサスエレクトロニクス株式会社 パイプ調停回路、パイプ調停方法
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
US9807161B2 (en) * 2013-09-16 2017-10-31 Axis Ab Distributed events in an access control system
CN105335320B (zh) 2014-08-14 2020-05-15 恩智浦美国有限公司 具有可动态配置的端点分配的usb设备
US20160232119A1 (en) * 2014-09-17 2016-08-11 Thomson Licensing SHARING MEMORY BETWEEN USB Enabled Devices
GB2539445A (en) 2015-06-16 2016-12-21 Nordic Semiconductor Asa Data processing
US20220070018A1 (en) * 2020-09-02 2022-03-03 Cypress Semiconductor Corporation Usb type-c/pd port real time monitoring and control in an automotive or industrial ecosystem

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0648822B2 (ja) * 1985-03-04 1994-06-22 株式会社日立製作所 デイジタル伝送系における異常処理方法
US4858112A (en) * 1985-12-17 1989-08-15 General Electric Company Interface comprising message and protocol processors for interfacing digital data with a bus network
US5058110A (en) * 1989-05-03 1991-10-15 Ultra Network Technologies Protocol processor
US5243596A (en) * 1992-03-18 1993-09-07 Fischer & Porter Company Network architecture suitable for multicasting and resource locking
US5438575A (en) * 1992-11-16 1995-08-01 Ampex Corporation Data storage system with stale data detector and method of operation

Also Published As

Publication number Publication date
KR19990067733A (ko) 1999-08-25
US6145045A (en) 2000-11-07
DE19900331A1 (de) 1999-07-08
US6173355B1 (en) 2001-01-09

Similar Documents

Publication Publication Date Title
KR100290597B1 (ko) 이중 버퍼링을 지원하는 유니버설 시리얼 버스 종단점 파이프의 실시장치 및 실시방법
KR100290943B1 (ko) 유니버설 시리얼 버스 제어 이전을 처리하는 장치 및 방법
US6157975A (en) Apparatus and method for providing an interface to a compound Universal Serial Bus controller
US6678760B2 (en) Apparatus and method of transmitting and receiving USB isochronous data
US4974150A (en) Fault tolerant digital data processor with improved input/output controller
US6418504B2 (en) System and method for coupling peripheral buses through a serial bus using a split bridge implementation
EP1764703B1 (en) A system for providing access to multiple data buffers of a data retaining and processing device
US4864496A (en) Bus adapter module for interconnecting busses in a multibus computer system
US4979097A (en) Method and apparatus for interconnecting busses in a multibus computer system
EP0415551A2 (en) Protocol for transfer of DMA data
WO1997046941A9 (en) Digital data processing methods and apparatus for fault isolation
JPH02232758A (ja) マルチプロセッサ用システム制御ユニットをインタフェースするための装置
US6070208A (en) Apparatus and method for implementing a versatile USB endpoint pipe
US4858234A (en) Method and apparatus for error recovery in a multibus computer system
US4837767A (en) Bus adapter module with improved error recovery in a multibus computer system
US20050050244A1 (en) Method for controlling data transfer unit, data transfer unit, channel control unit, and storage device control unit
JP2002323988A (ja) 遠隔割り込み信号の処理方法、システムおよびネットワークインターフェースシステム
US20040010625A1 (en) Interface device and method for transferring data over serial ATA
EP1306766B1 (en) Method and apparatus for providing address parity checking for multiple overlapping address spaces on a shared bus
JPH11191073A (ja) Pciバス処理装置
JP3141948B2 (ja) 計算機システム
JPH11232243A (ja) 通信制御装置、方法および通信制御システム
JPH07109599B2 (ja) 処理システムの情報転送装置
JP2003281087A (ja) メモリターゲット装置及びデータ転送システム
KR19980076868A (ko) 하이파이 버스시스템의 주기억 장치

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