KR100572165B1 - 유니버셜 직렬 버스 디바이스 컨트롤러 - Google Patents

유니버셜 직렬 버스 디바이스 컨트롤러 Download PDF

Info

Publication number
KR100572165B1
KR100572165B1 KR1020007001418A KR20007001418A KR100572165B1 KR 100572165 B1 KR100572165 B1 KR 100572165B1 KR 1020007001418 A KR1020007001418 A KR 1020007001418A KR 20007001418 A KR20007001418 A KR 20007001418A KR 100572165 B1 KR100572165 B1 KR 100572165B1
Authority
KR
South Korea
Prior art keywords
endpoint
data
fifo
host
controller
Prior art date
Application number
KR1020007001418A
Other languages
English (en)
Other versions
KR20010022816A (ko
Inventor
시드답파마헤시
Original Assignee
아트멜 코포레이숀
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 아트멜 코포레이숀 filed Critical 아트멜 코포레이숀
Publication of KR20010022816A publication Critical patent/KR20010022816A/ko
Application granted granted Critical
Publication of KR100572165B1 publication Critical patent/KR100572165B1/ko

Links

Images

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/14Handling requests for interconnection or transfer
    • 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

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)
  • Communication Control (AREA)

Abstract

범용 USB 컨트롤러는 호스트와의 접속을 위해 직렬 인터페이스 엔진(SIE)(140)을 포함한다. SIE는 디바이스의 재부팅이 적절한 상황에서 분리/접속 시퀀스를 시뮬레이션할 수 있다. 컨트롤러는 디바이스의 다수개의 엔드포인트의 트랙을 유지하는 제어 기억 장치(110)를 포함한다. FIFO(130)는 각 엔드포인트와 호스트 사이에서 데이터 전송을 제공한다. 상태 머신(120)은 각 엔드포인트에 대해 호스트와의 트랜잭션 시퀀스 제어를 제공한다. 바람직한 실시예의 변형예에서는, 제2 FIFO(130')를 포함하여 추가 버퍼링 용량을 제공한다.

Description

유니버셜 직렬 버스 디바이스 컨트롤러{A UNIVERSAL SERIAL BUS DEVICE CONTROLLER}
본 발명은 일반적으로 퍼스널 컴퓨터에서 사용되는 디바이스를 위한 디바이스 컨트롤러에 관한 것이며, 더욱 상세히 말하자면 유니버셜 직렬 버스 사양에 따라 동작하는 디바이스를 위한 디바이스 컨트롤러에 관한 것이다.
유니버셜 직렬 버스(USB) 사양은 주변 기기를 퍼스널 컴퓨터의 시스템 버스에 접속하기 위한 산업 규격의 인터페이스이다. USB는 마우스, 키보드, 모니터, 프린터, 대용량 기억 장치, 모뎀, 팩스 등을 포함하는 각종 주변 기기에 대한 단일 인터페이스를 특징으로 한다. 이것에 의해 제조 비용이 절감되며 퍼스널 컴퓨터 사용자는 그 시스템을 용이하게 구성할 수 있게 된다.
USB는 토큰 방식의 버스 구조를 이용하며, 이 구조는 토큰 링 네트워크 등의 기타 비슷한 방식의 버스와 유사하다. USB 호스트는 버스 상에 토큰을 제공하고, 이 토큰에 포함된 어드레스와 일치하는 USB 디바이스는 데이터를 호스트에 전송하거나, 호스트로부터 데이터를 수신함으로써 응답한다.
기능상의 범용성(functional versatility)을 향상시키기 위해, USB 디바이스는 호스트와의 통신의 다수의 논리 채널을 지원할 수 있다. USB 사양의 용어에 의하면, 이러한 논리 채널을 "파이프"라고 한다. 각 파이프는 호스트에 존재하는 소프트웨어 클라이언트와 디바이스 내에 규정된 엔드포인트 사이의 양방향성 데이터 흐름을 제공한다. 디바이스 내에서 구현된 기능은 그 각각의 엔드포인트에서 호스트로부터 데이터를 수신하고, 데이터를 그 각각의 엔드포인트에 기록함으로써 호스트에 송신한다.
USB 디바이스(10)는 도 10에 개략적으로 도시되어 있다. 데이터는 차동적으로 구동되는 한 쌍의 신호선(D+, D-)을 통해 전달된다. 직렬 인터페이스 엔진(SIE)(12)은 USB 사양에 따른, 패킷 발생과 디코딩, NRZI 변환, CRC 발생과 검사 및 비트 스터핑(bit stuffing) 등을 제공한다. 컨트롤러(14)는 다양한 트랜잭션, 즉 IN, OUT 및 SETUP을 위한 데이터 흐름을 조절한다. 도 11a 및 도 11b에 도시된 바와 같이, 트랜잭션은 최대 3개의 패킷, 즉 TOKEN, DATA 및 HANDSHAKE를 포함한다. 버스 트랜잭션은 호스트에서, PID 필드, 디바이스를 식별하는 어드레스 필드 및 디바이스 내의 채널을 식별하는 엔드포인트 필드를 포함하는 TOKEN 타입 패킷의 발행을 개시한다. 이 TOKEN 타입의 패킷 다음에, DATA 타입의 패킷이 후속하여 전송되는데, 이 패킷은 어드레스된 디바이스로부터 호스트로의 방향(도 11a)이나 호스트로부터 어드레스된 디바이스로의 방향(도 11b)으로 전송된다. 후자의 경우, 즉 패킷이 호스트로부터 어드레스된 디바이스로 전송되는 경우, 디바이스가 수신한 데이터는 TOKEN 패킷에서 식별된 엔드포인트에 대응하는 FIFO에 기억된다. 이어서 데이터 수신 장치는 HANDSHAKE 프로토콜을 데이터 송신 장치로 전송한다.
도 10을 참조하면, 전형적으로 구현된 USB 디바이스는 디바이스 소프트웨어(18)가 지원하는 각 엔드포인트(E1∼En)에 대해 하나의 FIFO(FIFO1∼FIFOn)를 할당하는 n개의 FIFO의 뱅크(16)를 포함한다. 예컨대, 상표명 Intel x8930Ax USB 마이크로컨트롤러 칩은 6개의 엔드포인트를 규정하는데, 각 엔드포인트는 관련된 송신 FIFO 및 관련된 수신 FIFO를 구비한다. 컨트롤러의 Cypress CY7C634xx 패밀리는 2개의 디바이스 어드레스, 즉 "A" 및 "B"를 지원한다. 디바이스 어드레스 "A"는 관련된 3개의 엔드포인트를 갖고, 디바이스 "B"는 관련된 2개의 엔드포인트를 가지며, 각 엔드포인트는 대응하는 FIFO를 갖는다. 상표명 Xilinx 컨트롤러는 3개의 엔드포인트에 대한 지원을 특징으로 하며 각각의 엔드포인트에 대해 온칩(on chip) FIFO을 구비한다. 더욱 융통성 있는 대체예로서는 FPGA에 대해 기능 코어를 제공하는 CAE 기술에 의한 것이 있다. 기능 코어는 엔드포인트의 수를 사용자가 규정할 수 있다는 것과 각 엔드포인트에 대한 FIFO의 용량을 사용자가 규정할 수 있다는 것을 특징으로 한다.
도 10을 계속 참조하면, 디바이스 소프트웨어(18)는 디바이스의 기능상의 능력을 제공한다. 각 기능은 그 관련된 엔드포인트(E1∼En)와 통신하여, 이들 엔드포인트에 대응하는 FIFO를 통해 데이터를 수신하고 송신한다. 특정 엔드포인트, 즉 엔드포인트 0은 디바이스의 구성, 상태 및 제어 정보에 대한 액세스를 제공하기 위한 목적으로 예약되어 있다.
전술한 다수의 설계는 디바이스의 가능한 엔드포인트의 수가 고정되어 있다는 공통적인 특징을 갖는다. 이는 CAE 기술의 기능 코어에 대해서도 동일하다. CAE 기능 코어가 사용자 규정가능한 엔드포인트의 수를 제공하더라도, 그 엔드포인트의 수는 일단 실리콘 설계를 행하게 되면 고정된다.
소정의 설계에서 엔드포인트의 수를 늘리게 되면 이들 설계 방식의 다른 결점이 초래되는데, 즉 각각의 엔드포인트가 FIFO를 필요로 하기 때문에 FIFO를 지원하는데 사용되는 실리콘의 실질 면적이 커지지 않을 수 없다는 것이다. 이것은 특히, 각각의 엔드포인트가 하나는 수신용이고 다른 하나는 송신용으로 사용되는 2개의 FIFO와 관련되는 상표명 INTEL 설계에 대해서 분명해진다.
설계되어 테스트를 마쳤다면, 디바이스 내의 임의의 수의 엔드포인트를 USB 규격의 최대 16개까지 지원할 수 있는 컨트롤러가 필요하다. 컨트롤러는 실리콘을 효율적으로 이용하는 동시에 임의개의 엔드포인트를 사용하도록 용이하게 구성되는 것이 바람직하다.
USB의 다른 특징은 버스 이뉴머레이션(bus enumeration)과 같이 공지된 기술에 대한 그의 지원인데, 여기에서 호스트는 버스의 장착물에 대해 디바이스를 식별하고 구성한다. 디바이스가 호스트에 의해 검출되면, 시스템 소프트웨어는 디바이스를 질의하고 그 능력을 판정하며, 디바이스 어드레스를 할당하고 디바이스를 구성한다. 디바이스가 더이상 호스트와 통신할 수 없는 상태에 대해 USB가 대비하고 있을 지라도, 디바이스를 완전히 재부팅하여, 마치 디바이스가 사용자에 의해 호스트에 장착되어져 있는 것처럼 호스트가 디바이스를 재구성할 수 있는 것이 바람직하다.
본 발명은 유니버셜 직렬 버스(USB) 사양에 따라 디바이스를 동작시키는 장치 및 방법에 관한 것이다. 본 발명은, 호스트로부터 패킷을 수신하는 수단과, 수신된 패킷에 포함된 데이터를 저장하는 FIFO를 포함한다. 패킷 제어 기억 장치는 수신된 TOKEN 타입 패킷에 포함된 엔드포인트(현재의 엔드포인트라고 함)를 식별한다. 따라서, 엔드포인트에 후속하여 FIFO에 기억된 데이터는 현재의 엔드포인트와 관련된다. 제2 TOKEN 패킷을 수신하면, 이 패킷에 포함된 엔드포인트는 새로운 현재의 엔드포인트가 된다. 그러므로, 후속하여 FIFO에 기억된 데이터는 제2 엔드포인트 식별자와 관련되게 된다. 단일 FIFO를 이용하여 2개 이상의 엔드포인트를 지원함으로써 실리콘 영역이 최소화된다.
다른 실시예에서는 제2 FIFO가 제공된다. 디바이스에 의해 지원되는 엔드포인트는 제1 FIFO 또는 제2 FIFO 중 하나에 할당된다. 이는 컨트롤러의 처리 부하를 경감시키는 동시에 FIFO를 구현하기 위해 할당되는 실리콘을 제한하는 장점이 있다. 본 발명에서 사용되는 FIFO의 개수는 지원되는 엔드포인트의 수보다 작기 때문에, 각각의 엔드포인트가 대응 FIFO에 의해 지원되는 경우보다 각 FIFO를 더욱 대용량으로 만들 수 있다.
본 발명은 단일 상태 머신을 이용하여 호스트와 디바이스 사이에서 모든 USB 트랜잭션 타입의 시퀀스를 제어한다. 범용 단일 상태 머신은 디바이스의 엔드포인트가 모든 타입의 데이터 전송, 즉 CONTROL, BULK, INTERRUPT 및 ISOCHRONOUS 전송을 지원할 수 있도록 한다.
본 발명의 다른 측면은 디바이스의 동작 속도를 개선시킨다. 이는 데이터를 필요로 하는 트랜잭션의 완료 전에 FIFO를 액세스함으로써 달성된다.
본 발명의 디바이스 컨트롤러는 또한, 디바이스의 분리 및 장착을 시뮬레이션하는 수단을 갖는 호스트-접속 포트를 포함한다. 이것에 의해 폐쇄된 디바이스가 자동적으로 다시 버스 이뉴머레이션을 개시하여, 실제로 그렇게 하지 않고서도, 마치 사용자가 디바이스를 물리적으로 분리 및 재장착하는 것처럼 디바이스를 재구성할 수 있다.
도 1은 본 발명에 따른 컨트롤러를 나타내는 도면이다.
도 2a∼2c는 컨트롤러의 블록도를 나타내는 도면이다.
도 3a∼3c는 PCS의 레지스터 구조를 나타내는 도면이다.
도 4a∼4i는 USB 규격의 트랜잭션의 트랜잭션도를 나타내는 도면이다.
도 5a∼5d는 프로토콜 상태 머신의 상태도를 나타내는 도면이다.
도 6은 장착/분리 발생을 시뮬레이션하는 회로이다.
도 7은 호스트/디바이스 트랜잭션의 전형적인 시퀀스를 나타내는 도면이다.
도 8은 트랜잭션의 데이터 시퀀스를 나타내는 도면이다.
도 9는 바람직한 실시예의 변형예를 나타내는 도면이다.
도 10은 종래의 전형적인 USB 컨트롤러를 개략적으로 나타내는 도면이다.
도 11a 및 11b는 포괄적인 USB 규격의 데이터 전송을 나타내는 도면이다.
도 1을 참조하면, USB 컨트롤러(100)는 USB 컴플라이언트 버스를 통해 통신하는 마우스, 키보드, 대용량 기억 장치, 디지털 카메라 등의 컴퓨터 주변 기기(디바이스)에 사용된다. USB 컨트롤러는 USB 호스트 유닛과 소정의 디바이스에 대해 규정된 복수의 엔드포인트 사이에서 트랜잭션의 동기화를 제공한다.
본 발명에 따라, USB 컨트롤러(100)는 디바이스의 USB 상태를 저장하고 데이터 전송 동안 제어를 제공하는 프로토콜 제어 및 상태(PCS) 유닛(110)을 포함한다. USB 데이터 패킷의 전송은 데이터 출력 및 핸드셰이크(DOH) 모듈(150)과 관련하여 동작하는 직렬 인터페이스 엔진(SIE)(140)을 통해 이루어진다. 프로토콜 상태 머신(PSM)(120)은 디바이스와 디바이스가 결합되는 USB 호스트간의 트랜잭션의 시퀀스를 제공한다. 수신된 데이터 및 송신될 데이터는 FIFO(130)에 유지된다. 컨트롤러(100)는 디바이스의 대부분의 기능성을 제공하는 마이크로컨트롤러로의 인터페이스를 제공한다.
도 2a∼2c를 참조하여, 모듈간의 인터페이스를 설명한다. 도 2a에 도시된 직렬 인터페이스 엔진 SIE(140)를 먼저 설명하면, SIE(140)는 USB 호스트와 디바이스간의 인터페이스를 제공한다. 신호선(D+, D-) 상에 데이터를 제공하고 차동 신호의 형태로 데이터를 수신하는 송수신기 회로(도시 생략)가 있다. 송수신기의 전기적 특성은 USB 사양에 의해 전적으로 규정된다. SIE(140)의 기능에는 USB 전송의 직렬화(serializing) 및 역직렬화(deserializing), TOKEN 타입 패킷의 디코딩 및 엔코딩, NRZI 엔코딩 및 디코딩, CRC 발생 및 검사, 비트 스터핑 및 SYNC 필드의 발생이 있다.
유효 패킷을 수신한 후, SIE(140)는 PacketOK 및 PacketEnd 신호선을 어서트하여 프로토콜 상태 머신 PSM(120)에게 호스트로부터 유효 패킷을 수신하였다고 시그널링한다. 이어서 SIE는 수신된 패킷으로부터 PID(SOF, SETUP, IN, OUT, DATA0/1, ACK)를 추출하여, SiePID를 통해 PCS(110)로 전송한다. TOKEN 타입 패킷은 PID(4비트), 디바이스 어드레스(7비트), 엔드포인트 어드레스(4비트) 및 CRC(5비트)로 구성되고, TOKEN 타입 패킷의 디바이스 어드레스 SieAddr 및 엔드포인트 어드레스 SieEndpt가 추출되어 PCS에 전송된다. DATA 타입 패킷은 PID, 데이터 바이트 및 CRC로 구성되고, DATA 타입 패킷의 데이터는 추출되어 SieData 데이터선 을 통해 한번에 1 바이트씩 PCS에 전송된다. USB 사양에 따라 비트 스터핑 위반을 대상으로 하는 CRC 확인 및 검사에 의해, 손상된 디바이스 어드레스 및 데이터가 검출된다. 신호선 AddrEndpValid 및 SieDataValid가 어서트되어 유효 디바이스 어드레스 및 유효 데이터를 각각 나타낸다. 업스트림 데이터를 전송할 때 사용되는 NextData 신호선은 SIE가 업스트림 전송을 위해 [DOH(150)으로부터] 다른 데이터의 바이트를 수신할 준비가 되었음을 나타낸다.
도 6을 참조하면, 본 발명의 특징이 호스트 디바이스 인터페이스의 일례로 도시되고 있다. USB 사양은 2종류의 동작 속도, 즉 저 속도(low speed) 및 최대 속(full speed)를 제공한다. 3.0V와 3.6V 사이의 전압원에 연결되는 풀업 종단 저항기가 동작 속도를 결정한다. 최대 속도 디바이스는 D+선상의 풀업 저항기에 의해 결정된다. 저속 디바이스는 D-선상의 풀업 저항기에 의해 결정된다. 본 발명에 따라, 2개의 접지 트랜지스터(142) 각각은 데이터선(D+, D-)과 접지 사이에 드레인/소스 결합을 갖는다. 접지 트랜지스터(142)는 카운터와 같은 타이머(144)에 의해 그의 각각의 게이트를 통해 턴온 및 턴오프되어 트리거될 때까지 LO를 출력한다.
최대 속도 풀업 저항기(146)는 패스 트랜지스터(145)를 통해 D+선에 연결되고, 저속 풀업 저항기(148)는 패스 트랜지스터(147)를 통해 D-선에 연결된다. 셀렉터(143)는 2개의 패스 트랜지스터 중 하나만을 턴온하여 최대 속도 디바이스 또는 저속 디바이스로서 동작시킨다. 도 6은 1:2 디코더(141)와 2개의 AND 게이트를 포함하는 전형적인 셀렉터(143)의 구성을 도시하고 있다. 속도 선택 신호는 디코더(141)로부터 2개의 출력 중 하나를 어서트하여 대응하는 패스 트랜지스터의 게이트를 구동시켜서, 그에 따라 대응 풀업 저항기를 데이터선에 연결한다. 셀렉터(143)는 타이머(144)의 출력을 AND 게이트를 통해 공급함으로써 타이머(144)에 의해 인에이블 및 디스에이블된다.
타이머(144)가 트리거되면, 타이머의 출력은 HI가 되어 접지 트랜지스터(142)는 턴온되며 그에 따라 데이터선(D+, D-)은 접지에 있게 된다. 동시에, 셀렉터(143)는 그의 AND 게이트로의 LO 입력으로 인해 디스에이블된다. 이는 그 대응하는 패스 트랜지스터를 턴오프함으로써 그 선택된 풀업 저항기를 분리시키는 효과를 갖는다. 역으로, 타이머가 타임아웃되면, 타이머(144)의 출력은 그 LO 상태로 회복되며, 그에 따라 트랜지스터(142)가 턴오프된다. 동시에, 셀렉터(143)가 다시 인에이블되면, 선택된 속도에 대응하는 패스 트래지스터는 턴온된다. 이것에 의해 대응하는 풀업 저항기가 데이터선에 재접속된다. 이러한 방식으로, 각 데이터선 상의 전위는 그 원래의 레벨로 회복된다.
타이머(144)가 적어도 2.5 ㎲의 지연을 제공하도록 설정되면, 접지 트랜지스터(142)를 턴온하고 패스 트랜지스터(145, 147)를 턴오프함으로써 USB 사양에 의해 규정된 바와 같은 디바이스 분리 요건인 단일 종단 제로(single-ended zero :SE0) 상태가 발생된다. 타이머(144)를 차단함으로써 데이터선(D+, D-)의 전위가 회복되면, 접속 상태가 발생한다(USB에 의해). 그러므로, 접지 트랜지스터(142) 및 패스 트랜지스터(145, 147)는 디바이스의 자동 재부팅을 발생시킬 수 있는 수단을 제공한다. 예컨대, 디바이스가 폐쇄되면 디바이스의 데드맨(워치도그) 타이머는 타이머(144)를 트리거하여 분리/접속 시퀀스를 개시할 수 있다. 접속 상태를 검출할 경우, 호스트는 디바이스를 재구성할 수 있다. 허브 애플리케이션에 있어서, 이러한 재부팅 기능을 특성화하여 버스 전원형(bus-powered) 허브와 셀프 전원형(self-powered) 허브간의 전환이 가능하다. 재부팅 기능에 의해 디바이스는 애플리케이션을 변경할 수 있다(FAX에서 스캐너로 또는 그 반대로). 이러한 정보는 접속 후 이뉴머레이션 시퀀스 동안에만 호스트에 의해 판독되기 때문에, 소비 전력 및 일시 지연과 같은 디바이스 디스크립터(device descriptor)의 변경은 재부팅 기능에 의해 호스트로 "업로드"될 수 있다.
바람직한 실시예에서, 도 6의 회로는 컨트롤러(100)의 SIE(140)의 전단부에 통합된다. 선택적으로, 회로는 오프칩(off-chip)으로 제공되면 좋다. 속도 선택(SPEED SELECT) 신호는 다양한 방식, 즉 마이크로컨트롤러로부터 시그널링하는 방식, PC 보드 상에 점퍼 옵션을 제공하는 방식, USB 컨트롤러(100)로부터 시그널링하는 방식으로 제공될 수 있다. 디바이스가 원래 저속으로 부팅된다면, 도 6의 회로에 의해 디바이스는 고속으로 자신을 재부팅할 수 있다. 선택적으로, 하나의 풀업 저항기/패스 트랜지스터 쌍만을 제공하는 것이 좋다. 이러한 경우에, 디바이스 속도는 최대 속도 디바이스 또는 저속 디바이스 중 하나로 고정된다. 실제로, 구성 요소(145, 146)만이 허브 구성에 유용하다. 셀렉터(143)는 타이머(144)를 패스 트랜지스터에 결합하도록 1개의 AND 게이트로 간단히 구성되게 된다. 접지 트랜지스터(142)는 SE0 상태를 제공하기 위해 여전히 필요하다.
SIE 인터페이스에 대해서 도 2c를 참조하여 계속 설명한다. 도 2c의 DOH 모듈(150)은 PCS(110)의 제어 하에 데이터를 SIE(140)에 전송한다. SendPID 신호선은 ResponsePID를 통해 PCS(110)에 의해 제공되는 PID(ACK, NAK 및 STALL)를 발행하도록 DOH에게 통지한다. SendData 신호선은 DOH에 시그널링하여 FIFO로부터의 데이터 전송을 개시시킨다. 어서트되면, SendData는 DOH(150)로 하여금 fifoData선을 통해 FIFO(130)로부터 데이터를 래치하게 하고 데이터를 UMIData선을 통해 SIE(140)에 전송하게 한다. SendData와 함께 동작하는 NextData 신호선은 DOH(150)로 하여금 이전에 래치된 데이터를 전송하게 하고 FIFO로부터 새로운 데이터를 래치하게 한다. 데이터가 SIE(140)로부터 수신되면, CRC는 연속적으로 계산된다. PCS가 SendData를 디어서트할 때, DOH는 LastData를 어서트하여, SIE(140)로 하여금 그 계산된 CRC를 전송하게 하고 EOP를 발생하게 한다. EndPtBusTurnaround는 호스트로의 전송이 개시되기 전에 최대 지연을 특정한다. 이하 도 8을 참조하여 설명되는 바와 같이, 이 지연은 활성 엔드포인트에 따라 변화한다. 신호선 SendSYNC는 SIE에게 SYNC 필드를 전송하도록 지시한다. 동기화(SYNC) 필드는 호스트로 전달되는 모든 데이터 패킷에 앞서 배치된다. 또한, DOH는 트랜잭션의 시퀀스 제어 동안에 PSM(120)을 클록킹하기 위한 클록 신호 StepPSM을 제공한다.
도 2b를 참조하여 이하 설명한다. FIFO(130)는 16 바이트의 용량을 가지며, 입출력되는 USB 데이터를 기억한다. FIFO(130)에 먼저 전송되는 데이터는 fifoWrData 상으로 제공된다. 다음으로, FIFO 기록 어드레스는 fifoWrAddr 상에 제공되고, 이어서 기록 데이터선 fifoWR가 어서트된다. 호스트로부터의 입력 데이터는 PCS(110)를 통해 FIFO에 기억되고, 후속하여 마이크로컨트롤러에 의해 판독된다. FIFO는, 또한 MData 상으로 데이터를 제공하고 FIFO 어드레스 MAddr을 특정하고 MWR을 어서트함으로써 마이크로컨트롤러에 의해 기록될 수 있다.
FIFO(130)로부터 판독될 데이터는 fifoRdAddr을 통해 어드레스되고, fifoData선 상에 제공된다. fifoData선으로부터, 데이터는 SIE(140)에 의한 호스트로의 후속 전송을 위해 DOH(150)에 래치되거나, 또는 PCSData를 통해 마이크로컨트롤러에 의해 PCS(110)를 통해 fifoData로부터 획득된다.
PCS(110)와 마이크로컨트롤러간의 데이터 전송은 MData선과 PCSData선 상에서 이루어진다. PCS(110) 내의 레지스터는 이하 설명되는 바와 같이, 그 어드레스를 MAddr 상으로 어서트함으로써 액세스된다. 데이터의 입력 및 출력은 MWR 및 MRD를 각각 어서트함으로써 일어난다.
프로토콜 상태 머신(PSM)에 대해 도 2b를 또한 참조하여 설명한다. PSM(120)은 PCS(110)와 함께 동작한다. PSM은 모든 엔드포인트 타입, 즉 BULK, CONTROL, INTERRUPT 및 ISOCHRONOUS에 대해서 트랜잭션 시퀀스 제어를 행한다. 현재의 엔드포인트에 대해 트랜잭션 시퀀스를 제어하는 동안, PCS는 상태 머신에게 엔드포인트에 관련된 정보를 전달하고, 상태 머신은 PCS에게 무엇을 할 것인지를 알림으로써 응답한다. PCS(110)가 제어 신호를 발생하여 트랜잭션을 제어하더라도, 마스터 타이밍은 PSM(120)에서 발생한다.
PSM은 SIE(140)가 유효 패킷을 수신하였다고 PacketOK 및 PacketEnd에 의해 시그널링된다. 이하 상세히 설명되는 바와 같이, 이것에 의해 PSM은 클록킹 신호(StepPSM)에 의해 다음 상태로 진행한다. PSM은 PCS(110)로부터 PID 네임(IN, OUT, SOF, SETUP, DATA0 및 DATA1)을 PCSPID를 통해 수신한다. 또한, PCS로부터 엔드포인트 타입(EndPtType: BULK, ISOCHRONOUS, INTERRUPT 및 CONTROL), 엔드포인트의 데이터 흐름 방향(EndPtDir), 엔드포인트에 대한 데이터 토글 비트의 상태(DataToggle), CONTROL 전송에 대한 상태 스테이지 지시(StatusStage) 및 패킷 응답(PacketResponse)을 수신한다. 이들 데이터는 PSM(120)에 의해 트랜잭션의 시퀀스 제어를 결정하기 위한 상태 변수로 사용된다. PSM(120)의 출력은 트랜잭션 동안 PCS(110)의 동작을 지시하는 PSMState를 경유하는 제어 신호가 된다.
PCS(110)는 디바이스의 USB 관련 활동에 관한 정보를 기억하여 디바이스의 마이크로컨트롤러 또는 다른 유사한 제어 하드웨어로 데이터를 제공한다. PCS에 포함된 정보는 레지스터에 기억되고, 호스트나 마이크로컨트롤러에 의해 또는 트랜잭션의 처리 동안 상태 변화를 통해 발생될 수 있다. 다음의 것은 PCS에 포함된 레지스터의 리스트로서, PCS에 의해 판독/기록 가능한지와, 마이크로컨트롤러에 의해 판독/기록 가능한지를 각 레지스터에게 통지한다.
Figure 112003014731867-pct00001
Figure 112003014731867-pct00002
디바이스 어드레스(Device Address) 레지스터는 디바이스의 디바이스 어드레스를 포함한다. 이는 호스트에서의 버스 이뉴머레이션 시퀀스 동안 마이크로컨트롤러에 의해 초기화되어, PCS가 응답하는 디바이스 어드레스가 된다. 더 상세하게는, 호스트는 정보를 버스 이뉴머레이션 시퀀스 동안 마이크로컨트롤러에 전달한다. 이어서, 마이크로컨트롤러는 이 정보를 PCS(110)에 전달하여, 디바이스 어드레스 레지스터 및 글로벌 상태 레지스터에 기록한다.
프레임 번호(Frame Number) 레지스터는 USB 사양에 따라 1.0 mS의 공칭 속도로 호스트에 의해 인크리먼트되는 프레임 번호를 포함한다. 프레임 패킷을 수신하면, PCS(110)는 패킷에 포함된 프레임 번호를 프레임 번호 레지스터에 로드하고, 인터럽트(EOF1, EOF2, 이후 설명함)를 설정한다.
글로벌 상태(Global State) 레지스터는 디바이스의 USB 상태에 관한 글로벌 정보를 포함하고, 마이크로컨트롤러에 의해 처음 기록된다. 이 정보는 7 비트 데이터 구조에 포함되고, 이 비트 데이터 구조의 정의는 다음과 같다. 비트 0은 디바이스가 호스트에 의해 디바이스 어드레스를 부여받았는 지를 나타내고, 비트 1은 디바이스가 구성되었는 지를 나타내고, 비트 2는 디바이스가 절전 대기 상태에 있는 호스트에 시그널링하여 호스트를 활성화(원격 활성화)할 수 있는 지를 나타내며, 비트 3은 디바이스가 절전 대기 상태가 되었는 지를 나타내고, 비트 4는 원격 활성화를 초기화하기 위해 마이크로컨트롤러에 의해 기록되었는 지를 나타낸다. 이들 비트들은 PCS에 의해 버스 이뉴머레이션 시퀀스 동안 호스트로부터 명령 수신에 응답하여 또는 마이크로컨트롤러에 의해 설정될 수 있다.
패킷 제어(Packet Control) 레지스터는 PCS(110)에 의해 기록되며, 현재의 엔드포인트에 대한 정보를 포함한다. 7 비트 구조에 포함되어 있는 것은, 현재의 엔드포인트의 엔드포인트 어드레스(비트 2∼0), 패킷 완료(즉, 호스트로부터의 수신) 지시자(비트 3), 패킷 식별자(PID, 비트 7∼4)이다. PID는 USB 사양에 규정되어 있으며, OUT(0x1), IN(0x9), SOF(0x5), SETUP(0xd), DATA0(0x3), DATA1(0xb), ACK(0x2) 및 PRE(0xc)를 포함한다. 이들 비트는 PCS에 의해 설정되고 마이크로컨트롤러에 의해 판독된다.
패킷 응답(Packet Response) 레지스터는 마이크로컨트롤러에 의해 기록되고, USB 규격의 응답 PID, 즉 NAK(0xa) 및 STALL(0xe)를 포함할 수 있다. 또한 마이크로컨트롤러는 PCS(110)가 어떤 동작을 하도록 지시하는 소정의 내부 코드를 기록할 수 있다. DAVAIL(0x4)은 PCS에게 적어도 1 바이트의 데이터가 FIFO(130)에 있음을 나타내는 내부 코드이다. DACCEPT(0x6)은 마이크로컨트롤러가 기대되는 데이터 전부를 FIFO로부터 판독하였음을 PCS에게 나타내는 내부 코드이다. DEND(0x7)는 마이크로컨트롤러가 최종 바이트를 FIFO에 기록하였거나, FIFO로부터 최종 바이트를 판독하였음을 PCS에게 나타내는 내부 코드이다.
PCS(110)는 마이크로컨트롤러를 인터럽트하는데 사용되는 인터럽트선을 포함한다. 한 세트의 레지스터를 사용하여 이들 인터럽트를 관리한다. 인터럽트 레지스터는 PCS에 의해 기록되며, 마이크로컨트롤러에 의해 판독되어 인터럽트가 발생하였을 때 인터럽트의 원인을 판정한다. 비트 0은 PCS에 의한 포괄적인 인터럽트(INT)를 나타내도록 설정된다. 허브 애플리케이션에 있어서, 이하의 추가 인터럽트가 사용된다. 비트 1은 프레임 타이밍 포인트 #1의 종단(EOF1)을 나타내도록 설정되고, 비트 2는 프레임 타이밍 포인트 #2의 종단(EOF2)을 나타내도록 설정되며 비트 3은 프레임 개시의 발생을 나타내도록 설정된다. 인터럽트 Ack 레지스터는 PCS에게 특정 인터럽트(INTA, EOF1, EOF2, SOF)가 조정되었음(즉, 대응하는 인터럽트 루틴이 완료되었음)을 나타내도록 마이크로컨트롤러에 의해 기록된다. 비트 0∼3은 인터럽트 레지스터의 비트 0∼3에 대응한다. 추가 비트(비트 4)는 CONTROL 전송에 대해서 규정된다. 그 비트는 마이크로컨트롤러에 의해 기록되어 CONTROL 전송의 STATUS 스테이지에 진입할 준비가 되었음을 나타낸다. 인터럽트 인에이블 레지스터는 동일 대응 비트 0∼3을 갖는 하나 이상의 전술한 인터럽트 타입을 마스킹하는 마스크 레지스터이다.
전체 바이트 카운트(Total Byte Count) 레지스터는 호스트로부터 수신된 패킷의 바이트수를 나타낸다.
FIFO 어드레스(FIFO Address) 레지스터는 호스트로부터 전송될 데이터 및 호스트로부터 수신되어 온 데이터를 위해 FIFO(130)의 다음 엔트리를 지시한다.
바이트 카운트(Byte Count) 레지스터는 FIFO의 현재 바이트수를 나타낸다. 이 정보는 PCS에 의해 갱신된다. 레지스터는 바이트가 FIFO(130)에 기록될 때마다 PCS(110)[SIE(140)를 통해] 또는 마이크로컨트롤러에 의해 인크리먼트된다. 레지스터는 바이트가 FIFO로부터 판독될 때마다, 업스트림 전송 중에 PCS 또는 마이크로 컨트롤러에 의해 디크리먼트된다.
트랜잭션 응답(Transaction Response) 레지스터는 트랜잭션이 성공적으로 완료되었는 지를 나타낸다.
엔드포인트 제어(Endpoint Control) 레지스터는 본 발명에 따른 컨트롤러에 의해 제공된 각 엔드포인트에 대한 정보를 포함하는 한 세트의 레지스터를 포함한다. 본 실시예는 0∼7로 어드레스된 8개의 엔드포인트를 지원한다. 이 수는 전체 16개의 엔드포인트에 대해 USB 사양에 규정된 최대수까지 증가될 수 있다. 엔드포인트 타입은 비트 0 및 비트 1에 의해 CONTROL, BULK, INTERRUPT 및 ISOCHRONOUS 전송이 지시된다. 호스트로의 데이터 흐름 방향 또는 호스트로부터의 데이터 흐름의 방향은 비트 2에 의해 지시된다. DATA 토글 비트는 비트 3에 기억되며, USP 사양에 따라 데이타 동기를 유지한다. 엔드포인트의 버스 턴어라운드 타이밍은 비트 4 및 비트 5에서 특정된다. 이들 타이밍 비트는 DOH(150)에 의해 사용되는 4개의 가능한 타이밍 값 중 하나를 특정하는데, 이는 호스트로의 전송이 개시되기 전에 지연 기간을 특정한다. 비트 6은 사용되지 않는다. 비트 7은 임의의 소정 디바이스에 대해 요구되는 엔드포인트의 수가 가변하기 때문에 소정의 디바이스에 대해 엔드포인트가 사용되었는 지를 나타내는데 사용된다. 비트 7은 리셋시에 마이크로컨트롤러에 의해 기록된다.
엔드포인트 정지(Endpoint Stopped) 레지스터는 엔드포인트가 일시적으로 비활성화되었는 지를 나타내기 위해 마이크로컨트롤러에 의해 기록된다. 이러한 경우, 비활성화된 엔드포인트로의 어떠한 전송도 PCS에 의해 무시될 것이며, PCS는 이러한 응답을 지원하는 트랜잭션에 대해 NAK로 응답한다.
도 3a∼3c를 참조하여 PCS(110)의 레지스터 구조를 설명한다. 이 도면에는 레지스터와 USB 컨트롤러를 포함하는 다른 구성 요소간의 정보의 흐름을 비롯해서, 전술한 다양한 레지스터를 도시하고 있다. PCS(110)와 마이크로컨트롤러간의 정보 교환은 "버스"(10) 상에서 일어난다. 바람직한 실시예에서, 버스(10)를 구현하는데 공통의 설계가 채용된다. PCS(110)의 각 레지스터의 출력을 mux(도시 생략)에 공급하고, 소정의 레지스터를 선택하기 위해 레지스터 어드레스(MAddr, 도 2b 참조)를 mux 셀렉터로서 사용함으로써 "버스"로부터의 판독이 이루어진다. PCSData 버스는 mux의 출력으로부터 취해진다. 기록될 데이터(MData)를 각 레지스터의 입력에 공급함으로써 PCS(110)의 레지스터로의 기록이 이루어진다. 각 레지스터는 디코더의 출력선에 결합된 기록 인에이블을 갖는다. 따라서, MAddr을 디코더에 공급함으로써, 대응 레지스터가 데이터를 판독하도록 인에이블된다.
SIE(140)로부터, SiePID(OUT, IN, SOF, SETUP, DATA0, DATA1, ACK 및 PRE) 및 SieEndPt가 PCS(110)의 패킷 제어 레지스터로 전송된다. SieAddr은 비교기(32)(도 3b)로 전송되어, 호스트로부터 전달된 디바이스 어드레스가 PCS의 디바이스 어드레스 레지스터에 기억된 어드레스와 일치하는 지를 판정하고, 그 일치가 발생할 때 인에이블 신호를 생성한다. 입력 데이터는 SieData로부터 FIFO 제어 블록(42)(도 3c)으로 유입되어 FIFO(130)에 기억된다. NextData는 FIFO 제어 블록(42)이 다음 FIFO 장소로 인크리먼트하여 그 내용을 판독하도록 시그널링한다.
엔드포인트 제어 레지스터의 뱅크(50)(도 3a)는 각 엔드포인트에 대하여 엔드포인트 제어 레지스터를 제공한다. 레지스터 뱅크(50)로부터 레지스터의 선택은 셀렉터(20)를 통해 이루어진다. SIE(140)로부터의 SieEndPt는 내부 엔드포인트 식별자 PCSEndPtAddr, 즉 특정 트랜잭션에 대한 현재의 엔드포인트를 구성한다. 현재의 엔드포인트 식별자는 대응 엔드포인트 제어 레지스터를 선택하고, 그 내용은 상태 머신(120) 및 DOH(150)로 전송된다. 더 상세하게는, EndPtType, EndPtDir 및 DataToggle 정보는 PSM(120)으로 전송되고, EndPtBusTurnaround 정보는 DOH(150)로 전송된다. 본 발명의 컨트롤러에는 단일 FIFO를 고려하지만, 각 엔드포인트에 특정된 정보가 레지스터 뱅크(50)에 포함되고 SieEndpt를 통해 호스트에 의해 제공된 엔드포인트 식별자를 이용하여 셀렉터(20)를 통해 선택되기 때문에, 단 하나의 FIFO만으로도 복수의 엔드포인트를 지원할 수 있다. 이러한 정보는 엔드포인트에 대한 시퀀스 및 그 종류를 제어하고, 모든 데이터는 FIFO(130)를 통해 전송된다. EndPtType, EndPtDir 및 DataToggle에 추가하여, PSM(120)은 인터럽트 확인(Acknowledge) 레지스터의 비트 4로부터 Statusstage를 수신하고, 패킷 응답 레지스터의 비트 [3:0]으로부터 PacketResponse를 수신한다. 이하 설명되는 바와 같이, 이 정보는 PSM(120)이 사용하는 상태 변수를 구성한다.
PCS(110)는 트랜잭션의 시퀀스 제어시에 PSMState 신호의 제어 하에서 동작한다. 예컨대, BULK 트랜잭션 동안, 각 전송은 USB 사양에 의해 DATA0/1 패킷의 토글링을 필요로 한다. 도 3a에 도시하는 바와 같이, 데이터 토글링은 PCS에서 PSMState 신호를 발행함으로써 PCSEndPtAddr에 관하여 선택된 엔드포인트 제어 레지스터의 데이터 토글 비트(비트 3)를 토글링하는 것이다. 유사하게, DOH 제어 블록(44)은 PSMState에 의해 제어되어 DOH(15)를 통해 업스트림 응답 PID(예컨대, ACK, NAK, STALL)을 발행하고, 여기서 응답 PID는 패킷 응답 레지스터로부터 획득된다.
도 4a∼4i의 트랜잭션도를 참조하여, USB 사양에 규정된 트랜잭션 시퀀스 제어를 설명한다. USB에 규정된 트랜잭션에는 BULK, CONTROL, INTERRUPT 및 ISOCHRONOUS가 있다. 이들 트랜잭션 각각은 통상적으로, 이하에 설명할 2개 이상의 기본 데이터 전송의 조합을 포함한다.
도 4a는 호스트로의 데이터 전송을 포함하는, IN 타입의 데이터 전송을 위한 트랜잭션 시퀀스를 도시한다. 이 타입의 데이터 전송은 BULK, CONTROL 및 INTERRUPT 전송에 공통된다. 호스트는 IN 타입 패킷을 디바이스에 전송한다. 응답시, 디바이스는 DATA 패킷을 호스트에 전송하며, 이것은 디바이스로의 리턴 ACK에 의해 확인된다. 도 4a에 도시된 바와 같이, 디바이스는 문제가 있다면, 선택적으로 NAK 또는 STALL 중 하나로 응답할 수 있다.
도 4b는 호스트로부터의 데이터 전송과 관련된 OUT 타입의 데이터 패킷에 대한 유사한 시퀀스를 나타낸다. 호스트는 DATA 패킷에 후속하여 OUT 타입의 패킷을 전송한다. 그러면, 디바이스는 트랜잭션의 성공, 지연 또는 실패에 따라 ACK, NAK 또는 STALL로 응답한다.
데이터의 (디바이스로부터 또는 디바이스로의) BULK 전송은 하나 이상의 IN 타입 및 OUT 타입의 데이터 전송(도 4a)을 포함한다. 예컨대, 도 4f는 데이터를 호스트로 전송하기 위한 복수의 IN 데이터 전송을 포함하는 BULK 판독 트랜잭션을 도시하고 있다. 0과 1의 표기는 USB 사양에 규정되어 있는 비트 토글링 방식에 따라 각각의 연속하는 데이터 전송에 대한 DATA0과 DATA1 패킷의 전환을 나타낸다. 데이터의 BULK 전송은 다른 방향, 즉 호스트에서 디바이스로 진행될 수 있으며, 이것은 일련의 OUT 타입 데이터 전송으로 달성된다(도 4b).
삭제
INTERRUPT 트랜잭션(도시되지 않음)은 BULK 전송과 달리, 하나 이상의 IN 타입 데이터 전송(도 4a)으로 이루어져 있다. 하나 이상의 데이터 전송이 필요한 경우, 비트 토글링은 연속하는 전송에 대해 발생한다. BULK 전송과는 다르게, INTERRUPT는 디바이스에서 호스트로의 데이터 전송, 즉 IN 타입의 데이터 전송에만 관련된다.
도 4c는 SETUP 타입의 데이터 전송을 나타낸다. 이것은 호스트에 의해 전송된 SETUP 패킷과, 이어서 호스트가 또한 전송한 DATA 패킷을 포함한다. 이러한 타입의 데이터 전송은 CONTROL 트랜잭션시에 이용되고, 셋업 스테이지로 개시되며, 선택적으로 데이터 스테이지가 후속하며, 상태 스테이지로 종료한다. 도 4g는 셋업 스테이지(SETUP 타입의 데이터 전송) 및 상태 스테이지(IN 타입의 데이터 전송, 도 4a)만으로 구성된 CONTROL 트랜잭션에 대한 변형예를 나타낸다. 도 4h 및 도 4i는 하나 이상의 IN 또는 OUT 데이터 전송을 포함하는 데이터 스테이지를 포함하는 CONTROL 트랜잭션의 제2 변형예를 나타낸다. 상태 스테이지는 반대 방향의 데이터 전송에 의해 지시된다.
도 4d 및 도 4e는 ISOCHRONOUS 트랜잭션에 대한 트랜잭션 시퀀스를 나타낸다. 도 4d에 도시된 업스트림 ISO 트랜잭션에 대해서, 호스트는 IN 타입의 패킷을 전송한다. ISO 트랜잭션시에 전송되는 데이터량은 하나 이상의 이러한 트랜잭션을 필요로 하며, 추가 트랜잭션(점선으로 표시)이 비트 토글링에 의해 발생할 수 있다. 도 4e는 다운스트림 ISO 트랜잭션에 대한 유사한 시퀀스를 나타낸다. 다른 전송 타입과는 다르게, ISO 전송은 핸드셰이크 단계에 의해 종료되지 않는다.
다양한 USB 규격 트랜잭션에 대해 설명하였으며, 이하 프로토콜 상태 머신 PSM(120)에 대해 도 5a∼5d를 참조하여 설명한다. PSM이 모든 USB 규정 트랜잭션의 시퀀스 제어를 제공한다고 이미 설명하였다. PSM(120)으로의 입력(PacketEnd, PacketOK, PCSPID, EndPtType, EndPtDir, DataToggle, StatusPhase 및 PacketResponse)은 상태 머신의 상태 변수로서 기능하여 각 상태 동안 행해지는 동작을 결정한다. PSM(120)의 출력은 PSMState이고, PCS(110)에 시그널링하는 한 세트의 제어선이다.
도 5a에 도시된 IDLE 상태로부터, PSM(120)은 개시시의 데이터 전송 상태, 즉 SETUP, ISO-IN, ISO-OUT, ST-IN, ST-OUT, INT-IN, IN 및 OUT 중 하나로 천이한다. CONTROL 트랜잭션의 SETUP 스테이지를 위해 SETUP 상태가 시작된다. 호스트로(로부터)의 데이터의 동기 트랜잭션을 위해 ISO-IN(ISO-OUT) 상태가 시작된다. CONTROL 기록(판독) 시퀀스의 STATUS 스테이지를 위해 ST-IN(ST-OUT) 상태가 시작된다. 인터럽트 타입의 엔드포인트에 관련된 트랜잭션을 위해 INT-IN 상태가 시작된다. BULK 및 CONTROL 트랜잭션 동안 IN(OUT) 타입의 전송을 위해 IN(OUT) 상태가 시작된다. 천이는 USB 사양에 의해 완전히 규정되며 USB 사양에 따른다. 에러, NAK 및 STALL 천이도 USB 사양에 의한 것이다.
IDLE 상태로부터의 천이는 PacketOK 및 PacketEnd가 SIE(140)로부터 어서트될 때 일어난다. 천이가 일어나는 개시 상태(SETUP, ISO-IN, ISO-OUT, ST-IN, ST-OUT, INT-IN, IN, OUT)는 PCS(110)로부터의 PCAPID 입력에 기초한다. 개시 상태로부터의 후속 천이는 SIE(140)가 다음 패킷을 수신하고 다시 PacketOK 및 PacketEnd를 어서트할 때 일어난다. PSM은 이어서 PSMState를 통해 신호를 발행하여, PCS에게 필요한 동작을 지시한다. DOH(150)가 StepPSM을 어서트할 경우 이어서 후속 천이가 개시된다.
상태 천이는 PCS(110) 인터페이스에서 제공된 PSM 상태 변수에 기초하여 일어난다. 다음은 각 상태에서 어떤 상태 변수가 고려되고, 각 상태에 대해 어떤 동작이 행해지는 지를 요약한 것이다. PSM(120)은 디지털 논리로 구현되며, 이하의 설명은 도 5a∼5d의 설명을 용이하게 하기 위해 의사 코드 포맷으로 제공된다. 이하의 요약이 주어지면, 설명한 동작을 갖는 상태 머신을 구현하는 것은 당업자가 이해하고 알고 있는 논리 설계의 기본 원리의 문제이다.
Figure 112003014731867-pct00003
Figure 112003014731867-pct00004
컨트롤러의 동작은 도 7에 도시된 2개의 트랜잭션을 참조하여 설명하며, 도 7은 컨트롤러가 단일 FIFO를 이용하여 복수의 엔드포인트를 조절하는 방법을 도시하고 있다. 엔드포인트 2는 업스트림 BULK 전송에 대해 규정되고, 엔드포인트 3은 다운스트림 ISOCHRONOUS 전송에 대해 규정된 것으로 가정한다. 또한, BULK 전송은 ISOCHRONOUS 전송과 시간적으로 인터리브된다.
시각 t0 이전의 시각에 있어서, 마이크로컨트롤러는 호스트에 업로드될 데이터를 획득하며, 예컨대 비디오 카메라 주변 기기는 이미지를 캡쳐하여 호스트에 이미지를 전송할 준비가 되어 있다고 가정한다. 호스트로의 비디오 이미지의 전송은 2개의 데이터 패킷을 필요로 한다고 가정한다.
시각 t0에서, SIE(140)는 호스트로부터 엔드포인트 어드레스 2에 대한 IN 패킷을 수신한다. 디바이스 어드레스는 PCS(110)에 전송되어, 디바이스 어드레스 레지스터의 내용과 조합된다. 엔드포인트 어드레스는 PCS(110)에 전송되고, 그에 따라 셀렉터(20)는 엔드포인트 2에 대응하는 엔드포인트 제어 레지스터를 선택한다. 수신된 패킷의 PID는 패킷 제어 레지스터에 기억된다. PCS(110)는 다음의 엔드포인트 관련 정보, 즉 EndPtType = BULK, 업스트림 전송에 대해 EndPtDir = "0" 및 DataToggle = "0"으로 PSM을 초기화한다.
마이크로컨트롤러는 인터럽트되며, 엔드포인트 2에 대한 IN 패킷이 수신되었는 지를 판정한다(패킷 제어 레지스터를 통해). 마이크로컨트롤러는 데이터를 FIFO(130)에 로드하는 것을 개시한다. 그 동안, SIE(140)가 PacketOK 및 PacketEnd를 어서트하면 PSM(120)은 동작을 개시하여, IDLE 상태에서 IN 상태(도 5c)로 천이한다. 이어서, W-DATAT 상태로 천이한다. W-DATAT 상태에서, PSM(120)은 PSMState를 통해 PCS(110)의 DOH 컨트롤러(44)에 시그널링하여, FIFO(130)에 포함된 데이터를 호스트에 전송한다. 더 상세하게는, PSM은 DataToggle("0")를 보고, DATA0을 전송하도록 PCS에 시그널링한다.
SIE(140)는 전송될 각 바이트를 출력하기 위한 후속 클록킹(NextData)을 제공한다. 최종 바이트가 FIFO(130)에 기록되면, 마이크로컨트롤러는 DEND(0x7) 내부 코드를 패킷 응답 레지스터에 기록함으로써 PCS(110)에게 알린다. FIFO가 비게 되면, PCS(110)는 SendData를 디어서트한다. DOH(150)는 LastData를 어서트하여, SIE(140)가 그 계산된 CRC 업스트림을 전송하도록 시그널링한다. DOH(150)는 PSMStep를 어서트하여, PSM(120)이 W-DATAT 상태에서 ACK5 상태로 천이하도록 한다. 이어서, PSM은 호스트가 ACK를 전송하였는 지를 체크하고, 이 시점에서 DT 상태로의 천이가 일어난다. DT 상태에 진입하면, PSM(120)은 엔드포인트 2에 대응하는 엔드포인트 제어 레지스터의 DATA 토글 비트를 토글링하도록 PCS에 시그널링하고, IDLE 상태로 천이한다.
이 시점에서, 비디오 데이터의 1 패킷이 호스트에 전송된다. 이후 시각 t1에서, SIE는 엔드포인트 어드레스 3에 대한 OUT 패킷을 수신한다. 다시, 디바이스 어드레스는 PCS(110)로 전송되고 디바이스 어드레스 레지스터의 내용과 조합된다. 엔드포인트 어드레스는 PCS(110)로 전송되어, 셀렉터(20)가 엔드포인트 3에 대응하는 엔드포인트 제어 레지스터를 선택하도록 한다. 수신된 패킷의 PID는 패킷 제어 레지스터에 기억된다. PCS(110)는 다음의 엔드포인트 관련 정보, 즉 EndPtType = ISOCHRONOUS, 업스트림 전송의 경우 EndPtDir = "1", 및 DataToggle = "0"으로 PSM을 초기화한다.
SIE(140)는 PSM(120)(PacketOK 및 PacketEnd)을 IDLE 상태에서 ISO-OUT 상태로 천이하게 한다(도 5b). 그 후에, R2-DATA0 상태로부터 천이하고, PSM은 다운스트림 전송의 완료를 대기한다. 그 동안, SIE(140)는 호스트로부터 데이터를 수신하고 이를 FIFO(130)에 저장한다. ISOCHRONOUS 전송에는 핸드셰이크 단계가 없기 때문에 다운로드된 데이터의 완료(CRC를 포함) 그 자체는 트랜잭션의 종료를 표시한다. PSMStep가 어서트되어, PSM은 IDLE 상태로 천이하게 된다.
다음 시각 t2를 고려하면, 다음 천이는 엔드포인트 2로부터 데이터의 업스트림 전송이다. 호스트는 IN 패킷을 발행함으로써 개시하여 엔드포인트 2를 특정한다. 이것에 의해 셀렉터(20)가 다시 대응하는 엔드포인트 제어 레지스터를 액세스할 수 있다. PCS(110)는 다음 엔드포인트 관련 정보, 즉 EndPtType = BULK, 업스트림 전송의 경우 EndPtDir = "0" 및 DataToggle = "1"로 PSM을 초기화한다. 데이터 토글 비트는 이전의 엔드포인트 트랜잭션으로부터의 토글링으로 인해, 현재는 "1"이다.
마이크로컨트롤러는 인터럽트되며, 엔드포인트 2에 대해 IN 패킷이 수신되는 지를 (패킷 제어 레지스터를 통해) 판정한다. 마이크로컨트롤러는 제2 세트의 데이터를 FIFO(130)에 로드하기 시작한다. 그 동안, PSM(120)은 SIE(140)가 PacketOK 및 PacketEnd를 어서트하면 동작하기 시작하여 IDLE 상태에서 IN 상태로 천이한다(도 5c). 그 후에, W-DATAT 상태로 천이한다. W-DATAT 상태에서, PSM은 PSMState를 통해 PCS(110)내의 DOH 컨트롤러(44)에 시그널링하여 FIFO(130)에 포함된 데이터를 호스트에 전송한다. 더 상세하게는, PSM은 DataToggle("1")을 보고, PCS가 DATA1을 전송하도록 시그널링한다.
SIE(140)는 전송될 각 바이트를 출력하기 위해 후속 클록킹(NextData)을 제공한다. 최종 바이트가 FIFO(130)에 기록되면, 마이크로컨트롤러는 패킷 응답 레지스터로 DEND(0x7) 내부 코드를 기록함으로써 PCS(110)에게 이 사실을 알린다. FIFO가 비게 되면, PCS(110)는 SendData를 디어서트한다. DOH(150)는 LastData를 어서트하고, SIE(140)에 시그널링하여 CRC를 계산하고 이를 업스트림으로 전송한다. DOH(150)는 PSMStep를 어서트하여, PSM(120)을 W-DATAT 상태로부터 ACK5 상태로 천이하게 한다. 이어서, PSM은 호스트가 ACK를 전송하였는 지를 체크하며, 이 때 DT 상태로의 천이가 일어난다. DT 상태가 되면, PSM(120)은 PCS에게 엔드포인트 2에 대응하는 엔드포인트 제어 레지스터의 DATA 토글 비트를 토글링하도록 시그널링하고, IDLE 상태로 천이한다.
여기서 2가지 점이 중요한데, 그 첫번째는 다수의 데이터 트랜잭션을 필요로 하는 데이터 전송(엔드포인트 2를 갖는 비디오 데이터와 같은)은 기타 트랜잭션(엔드포인트 3을 갖는 OUT 패킷의 경우)과 인터리브될 수 있다는 점이다. 각 트랜잭션(IN, OUT 등)은, 그 트랜잭션이 다른 트랜잭션이 처리되기 전에 반드시 완료되어야 된다는 점에서 개별적(automic)이다. 또한, 각 엔드포인트와 관련된 상태 정보는 그 자신의 엔드포인트 제어 레지스터(예컨대, 엔드포인트 2의 데이터 토글 상태)에 포함되어, 다수의 엔드포인트의 트랜잭션이 인터리브될 때 상태 정보를 잃는 경우는 없다. 두번째로는, 단일 FIFO가 호스트와 디바이스에 규정된 엔드포인트 사이의 데이터 버퍼링을 제공하기에 충분하다는 점이다. 이러한 각 트랜잭션은 개별적이기 때문에, FIFO는 이전의 트랜잭션으로부터의 일부 데이터도 절대 포함하지 않는다.
본 발명은 마이크로컨트롤러가 데이터 전송을 실행해야만 하는 시간을 최대로하는 USB 컨트롤러의 소정의 타이밍 특성을 포함한다. 도 8의 타이밍도는 IN 및 OUT 트랜잭션 양쪽의 데이터 시퀀스를 도시하고 있다. 트랜잭션은 8 비트의 SYNC로 시작하여, 3 비트의 EOP로 종료된다. IN 또는 OUT PID를 수신할 때, USB 컨트롤러는, 엔드포인트 지정자 ENDP를 포함하는 4 비트를 수신하고 얼마 후에, 가장 빠르게는 ENDP를 수신한 직후에 마이크로컨트롤러에 대해 인터럽트를 발생시킨다. 이 때, PCS는 입력 트랜잭션의 엔드포인트 어드레스를 포함한다. 따라서, 호스트가 트랜잭션을 완료하지 못하였더라도, 마이크로컨트롤러는 PCS 레지스터에 대한 엔드포인트 정보를 획득할 수 있고, 후속 DATA 트랜잭션에 대한 설정을 개시할 수 있다.
IN 트랜잭션의 경우에, 마이크로컨트롤러는 인터럽트를 수신한 후 곧 바로 FIFO(130)로의 데이터 기록을 개시할 수 있다. 도 8에 도시된 바와 같이, 마이크로컨트롤러는 이하 설명될 버스 턴어라운드 시간에 24 비트 시간(CRC + EOP + SYNC + DATA0/1)을 더한 헤드 스타트를 갖는다. 그 시간까지는 마이크로컨트롤러는 업스트림 전송을 위해 제1 바이트를 FIFO에 기록해야만 한다. OUT 트랜잭션에 대해, 마이크로컨트롤러는 호스트로부터 데이터를 수신할 때까지 설정하기 위해 추가의 8 비트의 시간을 갖는다. 이 추가 시간은 마이크로컨트롤러에 의해 제1 바이트가 획득될 수 있기 전에 FIFO에 기록되어야 한다는 사실에 기초한 것이다.
버스 턴어라운드 타이밍은 도 8에 도시된 바와 같이 트랜잭션간의 지연을 특정한다. 그 값은 엔드포인트마다 다르며, 엔드포인트 제어 레지스터의 BusTurnaround 비트(2비트)에 의해 특정된다. 바람직한 실시예에서, DOH(150)는 BusTurnaround 비트, "00"에 대한 3 비트의 시간, "01"에 대한 7 비트의 시간, "10"에 대한 11 비트의 시간 및 "11"에 대한 15 비트의 시간에 대응하는 지연을 제공한다. 이상적으로는, 최대 처리량을 획득하기 위해 버스 턴어라운드 시간은 0일 수 있다. 그러나, 일부 디바이스가 저속일 수 있거나 호스트가 저속을 요구할 수 있다. BusTurnaround 비트는 임의의 필요한 조정을 제공한다.
데이터 전송시에, FIFO(130)는 판독되는 것과 동시에 기록된다. 따라서, IN 전송의 경우, USB 컨트롤러는 FIFO로부터 데이터를 판독하여, 데이터 업스트림을 호스트에 전송하고, 동시에 마이크로컨트롤러는 데이터를 FIFO에 기록할 수 있다. 바이트 카운트 레지스터는 바이트 업스트림 전송시에는 FIFO가 비어 있지 않고, 바이트를 FIFO에 기록할 때에는 FIFO가 채워져 있지 않도록 하는데 필수적인 레코드-키핑(record-keeping)을 제공한다. 마찬가지로, OUT 전송의 경우, 마이크로컨트롤러는 호스트에 의해 채우는 것과 같이, FIFO를 비울 수 있다.
본 발명의 다른 특징은, 도 11에 도시된 바와 같이, 제2 FIFO(130')를 갖는 것이다. 마이크로컨트롤러가 복수의 고속 엔드포인트를 지원해야만 하는 경우, 제2 FIFO는 추가 버퍼링 용량을 제공하는데 사용될 수 있다. 따라서, 제1 FIFO는 제1 서브세트의 엔드포인트와 관련이 있고, 제2 FIFO는 제2 세트의 엔드포인트와 관련이 있다. 예컨대, 제1 FIFO는 호스트로부터 데이터를 수신할 수 있고, 마이크로컨 트롤러는 업스트림 전송에 대해 제2 FIFO에 데이터를 기록한다. 다운스트림 전송이 완료되는 즉시, USB 컨트롤러는 제2 FIFO의 데이터의 업스트림 전송을 바로 개시할 수 있으며, 마이크로컨트롤러는 제1 FIFO에 수신된 데이터를 처리한다.

Claims (13)

  1. 유니버셜 직렬 버스(USB) 사양에 따라 주변 기기를 동작시키는 컨트롤러에 있어서,
    데이터 패킷들을 수신하는 수단과;
    수신된 데이터 패킷들에 포함된 데이터를 저장하고, 적어도 2 개의 엔드포인트들과 관련된 FIFO(first-in, first-out) 데이터 버퍼와;
    수신된 데이터 패킷의 엔드포인트 필드에 포함된 식별자를 현재의 엔드포인트로서 기억하는 패킷 제어 저장 장치로서, 상기 FIFO 데이터 버퍼에 저장된 데이터는 상기 현재의 엔드포인트에 대응하는 것인, 상기 패킷 제어 저장 장치와;
    상기 현재의 엔드포인트에 기초하여 트랜잭션의 시퀀스를 제어하는 상태 머신으로서, 상기 트랜잭션은 복수의 데이터 패킷들의 수신 및 전송을 포함하고, 그에 따라 임의의 엔드포인트에서 트랜잭션들의 시퀀스를 제어할 수 있는 상기 상태 머신과;
    복수의 엔드포인트 제어 기억 장치들과;
    상기 복수의 엔드포인트 제어 기억 장치들에 연결되어 상기 현재의 엔드포인트에 기초해서 상기 엔드포인트 제어 기억 장치들 중 하나를 선택하는 셀렉터(seletor)를 포함하고,
    상기 상태 머신은 상기 엔드포인트 제어 기억 장치들 중 선택된 하나의 내용을 수신하도록 연결되는 것인 주변 기기 동작용 컨트롤러.
  2. 제1항에 있어서, 상기 FIFO 데이터 버퍼에 연결되어 상기 FIFO 데이터 버퍼에 의하여 저장된 수신된 데이터 패킷들을 유니버셜 직렬 버스 상으로 전송하는 데이터 전송 수단을 더 포함하는 주변 기기 동작용 컨트롤러.
  3. 제2항에 있어서, 상기 엔드포인트 제어 기억 장치는 버스 턴어라운드 지연 지정자(bus turnaround delay specifier)를 포함하고, 상기 데이터 전송 수단은 상기 선택된 엔드포인트 제어 기억 장치의 버스 턴어라운드 지연 지정자를 수신하도록 연결되는 것인 주변 기기 동작용 컨트롤러.
  4. 제1항에 있어서, 호스트로의 장착을 위한 포트를 더 포함하고, 상기 포트는 유니버셜 직렬 버스 디바이스의 분리 및 접속을 시뮬레이션하는 수단을 포함하는 것인 주변 기기 동작용 컨트롤러.
  5. 제4항에 있어서, 상기 포트는 D+ 신호선과 D- 신호선, 및 상기 신호선들 중 하나에 연결된 풀업 저항기를 포함하고, 상기 시뮬레이션 수단은 상기 D+ 및 D- 신호선들을 0.8 ~ 2.0 볼트 범위의 전압으로 끌어 올리도록 연결된 제1 트랜지스터 스위치와, 상기 풀업 저항기를 분리하도록 연결된 제2 트랜지스터 스위치를 포함하는 것인 주변 기기 동작용 컨트롤러.
  6. 유니버셜 직렬 버스(USB) 사양에 따라 데이터를 전송하는 컨트롤러에 있어서,
    마이크로컨트롤러로의 접속을 위한 마이크로컨트롤러 인터페이스와;
    USB 호스트로의 장착을 위한 포트와;
    상기 포트에 연결되고, USB 패킷들을 수신 및 전송하며, TOKEN 타입의 패킷으로부터 엔드포인트 식별자를 추출하는 수단을 포함하는 직렬 수단과;
    상기 USB 호스트와 마이크로컨트롤러 간의 패킷들의 전송을 관리하는 제어 수단으로서, 추출된 엔드포인트 식별자를 기억하는 제1 메모리 수단을 포함하며, 그에 따라 활성 엔드포인트를 규정하는 제어 수단과;
    수신된 패킷으로부터 획득된 데이터를 기억하며 상기 활성 엔드포인트와 관련된 FIFO(first-in, first-out) 데이터 버퍼와;
    상기 제어 수단에 연결되고, 상기 활성 엔드포인트에 기초하여 상기 USB 호스트와의 트랜잭션의 시퀀스를 제어하는 상태 머신 수단으로서, 상기 트랜잭션은 복수의 패킷들을 포함하는 것인, 상기 상태 머신 수단과;
    각 엔드포인트에 대한 구성 및 상태 정보를 기억하는 제2 메모리 수단을 포함하고,
    상기 상태 머신 수단은 상기 제2 메모리 수단에 연결되어, 상기 활성 엔드포인트에 대응하는 구성 및 상태 정보를 수신하는 것인 데이터 전송용 컨트롤러.
  7. 제6항에 있어서, 상기 제2 메모리 수단은 각 엔드포인트에 대한 버스 턴어라운드 시간 지정자(bus turnaround time specifier)를 포함하고, 상기 직렬 수단은 상기 활성 엔드포인트에 대응하는 버스 턴어라운드 시간 지정자를 수신하도록 연결되는 것인 데이터 전송용 컨트롤러.
  8. 제6항에 있어서, TOKEN 타입의 패킷의 수신 중에 인터럽트를 발생시키고, 그에 따라 상기 FIFO 데이터 버퍼로의 데이터 저장 또는 상기 FIFO 데이터 버퍼로부터의 데이터 판독을 준비하도록 상기 마이크로컨트롤러에 시그널링하는 인터럽트 발생 수단을 더 포함하는 데이터 전송용 컨트롤러.
  9. 제8항에 있어서, 상기 인터럽트 발생 수단은 TOKEN 타입의 패킷의 EOP 구분자(delimiter)의 수신 전에 인터럽트를 발생시키는 것을 특징으로 하는 데이터 전송용 컨트롤러.
  10. 제8항에 있어서, 상기 인터럽트 발생 수단은 TOKEN 타입 패킷의 CRC 부분의 수신 중에 인터럽트를 발생시키는 것을 특징으로 하는 데이터 전송용 컨트롤러.
  11. 제6항에 있어서, USB 호스트로부터의 분리 및 상기 USB 호스트로의 후속 재접속을 시뮬레이션하는 수단을 더 포함하는 데이터 전송용 컨트롤러.
  12. 제11항에 있어서, 상기 포트는 D+ 신호선과 D- 신호선, 및 상기 신호선들 중 하나에 결합된 풀업 저항기를 포함하고, 상기 시뮬레이션 수단은 상기 D+ 및 D- 신호선의 전위를 0.8 ~ 2.0 볼트의 범위로 순간적으로 끌어 올리도록 연결된 제1 트랜지스터 스위치와, 상기 풀업 저항기를 분리하도록 연결되어 단일 종단 제로(SE0, single-ended zero) 상태를 발생시키는 제2 트랜지스터 스위치를 포함하는 것인 데이터 전송용 컨트롤러.
  13. 제6항에 있어서, 제2 FIFO 데이터 버퍼와, 상기 활성 엔드포인트에 의해 식별된 엔드포인트에 따라 상기 FIFO 데이터 버퍼들 중 하나에 데이터를 기억하는 수단을 더 포함하고, 상기 FIFO 데이터 버퍼들 각각은 복수의 엔드포인트들과 각각 연관되는 것인 데이터 전송용 컨트롤러.
KR1020007001418A 1997-08-12 1998-06-19 유니버셜 직렬 버스 디바이스 컨트롤러 KR100572165B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/909,988 1997-08-12
US08/909,988 US5974486A (en) 1997-08-12 1997-08-12 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
PCT/US1998/012918 WO1999008196A1 (en) 1997-08-12 1998-06-19 A universal serial bus device controller

Publications (2)

Publication Number Publication Date
KR20010022816A KR20010022816A (ko) 2001-03-26
KR100572165B1 true KR100572165B1 (ko) 2006-04-19

Family

ID=25428152

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020007001418A KR100572165B1 (ko) 1997-08-12 1998-06-19 유니버셜 직렬 버스 디바이스 컨트롤러

Country Status (12)

Country Link
US (1) US5974486A (ko)
EP (1) EP1002275B1 (ko)
JP (1) JP2001512870A (ko)
KR (1) KR100572165B1 (ko)
CN (1) CN1129852C (ko)
CA (1) CA2297084C (ko)
DE (1) DE69836426T2 (ko)
HK (1) HK1027878A1 (ko)
MY (1) MY114073A (ko)
NO (1) NO20000699D0 (ko)
TW (1) TW385393B (ko)
WO (1) WO1999008196A1 (ko)

Families Citing this family (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10207804A (ja) * 1997-01-16 1998-08-07 Alps Electric Co Ltd 偽装端末システムおよび偽装端末装置
US6219736B1 (en) * 1997-04-24 2001-04-17 Edwin E. Klingman Universal serial bus (USB) RAM architecture for use with microcomputers via an interface optimized for integrated services device network (ISDN)
US6145027A (en) * 1997-07-09 2000-11-07 Texas Instruments Incorporated DMA controller with split channel transfer capability and FIFO buffering allowing transmit channel to get ahead of corresponding receive channel by preselected number of elements
US6230226B1 (en) * 1997-09-30 2001-05-08 Intel Corporation Compound device implementing hub and function endpoints on a single chip
JP3011157B2 (ja) * 1997-10-30 2000-02-21 日本電気株式会社 画像読取方法及び装置
US6070208A (en) * 1998-01-07 2000-05-30 National Semiconductor Corporation Apparatus and method for implementing a versatile USB endpoint pipe
US6205501B1 (en) * 1998-01-07 2001-03-20 National Semiconductor Corp. Apparatus and method for handling universal serial bus control transfers
KR100290729B1 (ko) * 1998-01-07 2001-05-15 클라크 3세 존 엠. 유에스비 등시 데이타를 전송 및 수신하는 장치 및 방법
US6157975A (en) * 1998-01-07 2000-12-05 National Semiconductor Corporation Apparatus and method for providing an interface to a compound Universal Serial Bus controller
EP0933711B1 (de) * 1998-01-29 2006-12-20 Infineon Technologies AG Anordnung und Verfahren zum Bereitstellen von Daten zur Charakterisierung von verschiedenen Einheiten an einem Bussystem
US6058441A (en) * 1998-02-19 2000-05-02 Shu; Han USB multi-function connecting device
US6233640B1 (en) * 1999-03-19 2001-05-15 In-System Design, Inc. Universal serial bus peripheral bridge with sequencer
US6266715B1 (en) * 1998-06-01 2001-07-24 Advanced Micro Devices, Inc. Universal serial bus controller with a direct memory access mode
US6321335B1 (en) 1998-10-30 2001-11-20 Acqis Technology, Inc. Password protected modular computer method and device
US6393588B1 (en) * 1998-11-16 2002-05-21 Windbond Electronics Corp. Testing of USB hub
US6279060B1 (en) * 1998-12-04 2001-08-21 In-System Design, Inc. Universal serial bus peripheral bridge simulates a device disconnect condition to a host when the device is in a not-ready condition to avoid wasting bus resources
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
US6389560B1 (en) * 1999-01-19 2002-05-14 Sun Microsystems, Inc. Universal serial bus interpreter
US6148354A (en) 1999-04-05 2000-11-14 M-Systems Flash Disk Pioneers Ltd. Architecture for a universal serial bus-based PC flash disk
US6567875B1 (en) 1999-04-05 2003-05-20 Opti, Inc. USB data serializer
US6718415B1 (en) 1999-05-14 2004-04-06 Acqis Technology, Inc. Computer system and method including console housing multiple computer modules having independent processing units, mass storage devices, and graphics controllers
US6643777B1 (en) 1999-05-14 2003-11-04 Acquis Technology, Inc. Data security method and device for computer modules
JP3641169B2 (ja) 1999-08-06 2005-04-20 株式会社エヌ・ティ・ティ・ドコモ Usb対応電子機器
JP3795712B2 (ja) * 1999-09-02 2006-07-12 アルプス電気株式会社 周辺機器の接続装置
EP1226493B1 (en) * 1999-11-05 2006-05-03 Analog Devices, Inc. Bus architecture and shared bus arbitration method for a communication processor
CN1088218C (zh) * 1999-11-14 2002-07-24 邓国顺 用于数据处理系统的快闪电子式外存储方法及其装置
US6697763B1 (en) * 1999-12-07 2004-02-24 Pei Electronics, Inc. Measurement module and system for monitoring the status of armored vehicle electronic components
US6684272B1 (en) * 1999-12-23 2004-01-27 Intel Corporation Throughput enhancement for a universal host controller interface in a universal serial bus
WO2001048613A2 (en) * 1999-12-24 2001-07-05 Koninklijke Philips Electronics N.V. Emulation of a disconnect of a device
US6742076B2 (en) * 2000-01-03 2004-05-25 Transdimension, Inc. USB host controller for systems employing batched data transfer
US6658515B1 (en) * 2000-01-25 2003-12-02 Dell Usa, L.P. Background execution of universal serial bus transactions
US6505263B1 (en) 2000-01-25 2003-01-07 Dell U.S.A. L.P. Bus controller operating code in system memory
JP4553279B2 (ja) * 2000-03-09 2010-09-29 インターナショナル・ビジネス・マシーンズ・コーポレーション データ転送システム、データ転送端末、コントローラ、およびインターフェイス方法
US6779061B1 (en) * 2000-05-09 2004-08-17 Cypress Semiconductor Corp. Method and apparatus implementing a FIFO with discrete blocks
JP3415567B2 (ja) * 2000-06-21 2003-06-09 エヌイーシーマイクロシステム株式会社 Usb転送制御方法およびusbコントローラ
FR2810833B1 (fr) * 2000-06-27 2002-09-20 Thomson Multimedia Sa Appareil multimedia de reception d4emission audiovisuelle
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
US6931465B1 (en) 2001-03-31 2005-08-16 Cypress Semiconductor Corp. Intelligent, extensible SIE peripheral device
KR100422586B1 (ko) * 2001-04-30 2004-03-12 주식회사 하이닉스반도체 유에스비 마이크로 컨트롤러 유닛 디버깅 방법
JP3680763B2 (ja) * 2001-05-14 2005-08-10 セイコーエプソン株式会社 データ転送制御装置及び電子機器
US6801959B1 (en) 2001-05-16 2004-10-05 Lexmark International, Inc. Relaxed-timing universal serial bus with a start of frame packet generator
KR100407563B1 (ko) * 2001-06-16 2003-12-01 삼성전자주식회사 유니버셜 시리얼 버스 장치
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
US7054975B2 (en) * 2001-08-10 2006-05-30 Koninklijke Philips Electronics N.V. Interrupt generation in a bus system
ATE487986T1 (de) * 2001-09-27 2010-11-15 Nxp Bv Bussytem und busschnittstelle zum anschliessen an einen bus
WO2003029998A1 (en) * 2001-09-28 2003-04-10 Koninklijke Philips Electronics N.V. Bus system and bus interface for connection to a bus
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
EP1483674B1 (en) * 2002-03-13 2006-04-05 Advanced Micro Devices, Inc. Usb host controller
JP3755594B2 (ja) * 2002-04-19 2006-03-15 セイコーエプソン株式会社 データ転送制御装置及び電子機器
JP3636157B2 (ja) * 2002-04-19 2005-04-06 セイコーエプソン株式会社 データ転送制御装置、電子機器及びデータ転送制御方法
JP3636160B2 (ja) * 2002-04-26 2005-04-06 セイコーエプソン株式会社 データ転送制御装置、電子機器及びデータ転送制御方法
US20030212841A1 (en) * 2002-05-12 2003-11-13 Ju-Yung Lin Method and apparatus of controlling an operational mode of a USB device
US7080189B1 (en) * 2002-05-31 2006-07-18 Cypress Semiconductor Corp. USB device communication
KR20040009955A (ko) * 2002-07-26 2004-01-31 삼성전자주식회사 호스트와 휴대용 저장장치간의 데이터 전송속도를향상시키는 유에스비 인터페이스 장치 및 그 인터페이스방법
US7069347B1 (en) * 2002-09-27 2006-06-27 Cypress Semiconductor Corporation Device and method for adapting speed of a USB device based on available power
US7072989B1 (en) 2002-09-27 2006-07-04 Cypress Semiconductor, Inc. USB peripheral device storing an indication of an operating power mode when a host went into hibernate and restarting at the power mode accordingly
US7069373B2 (en) * 2002-11-07 2006-06-27 Nec Electronics America, Inc. USB endpoint controller flexible memory management
JP4696199B2 (ja) * 2003-05-15 2011-06-08 エスティー‐エリクソン、ソシエテ、アノニム 転送ディスクリプタ用メモリを備えるusbホストコントローラ
KR100480084B1 (ko) * 2003-07-23 2005-04-06 엘지전자 주식회사 범용 직렬버스를 이용한 데이터 전송 시스템
US8984199B2 (en) * 2003-07-31 2015-03-17 Intel Corporation Inter-processor interrupts
JP2005071273A (ja) * 2003-08-27 2005-03-17 Canon Inc 電子機器及びそのインターフェース制御方法
JP4750379B2 (ja) * 2004-05-31 2011-08-17 キヤノン株式会社 電子機器
WO2006015173A2 (en) * 2004-07-30 2006-02-09 Logic Controls, Inc. Customer pole display and interface
US7685328B2 (en) * 2004-09-09 2010-03-23 Stmicroelectronics, Inc. Generic universal serial bus device operable at low and full speed and adapted for use in a smart card device
GB2423165B (en) * 2005-02-14 2007-01-10 Elan Digital Systems Ltd Host controller device and method
KR101351585B1 (ko) * 2005-11-25 2014-01-16 삼성전자주식회사 A/v 시스템과 휴대형 기기 간의 인터페이스를 위한 장치및 방법
JP2007249938A (ja) * 2006-02-14 2007-09-27 Matsushita Electric Ind Co Ltd Usbホストシステム、avデータ再生装置およびavデータ記録装置
US8046506B2 (en) * 2006-03-21 2011-10-25 Mediatek Inc. FIFO system and operating method thereof
US7707323B2 (en) 2006-09-11 2010-04-27 Research In Motion Limited Method and apparatus for enabling enhanced USB interaction
US7711863B2 (en) * 2006-09-11 2010-05-04 Research In Motion Limited Method and apparatus for variably enabling USB interaction
US7990724B2 (en) 2006-12-19 2011-08-02 Juhasz Paul R Mobile motherboard
CN100462952C (zh) * 2007-02-06 2009-02-18 南京大学 接口可配置的通用串行总线控制器
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
CN101646986B (zh) * 2007-05-15 2013-10-23 克罗诺洛吉克有限公司 基于usb的同步和定时系统
US7631126B2 (en) 2007-05-24 2009-12-08 Research In Motion Limited System and method for interfacing an electronic device with a host system
EP1995666B1 (en) * 2007-05-24 2009-07-15 Research In Motion Limited System and method for interfacing an electronic device with a host system
JP2009048444A (ja) * 2007-08-21 2009-03-05 Seiko Epson Corp Usbデバイスの制御方法、コントローラ及び電子機器
TWI448902B (zh) * 2007-08-24 2014-08-11 Cypress Semiconductor Corp 具頁存取基礎處理器介面之橋接裝置
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
JP4724206B2 (ja) * 2008-06-16 2011-07-13 三洋電機株式会社 マイクロコンピュータ
US8332557B2 (en) * 2008-12-12 2012-12-11 Qualcomm, Incorporated System, apparatus, and method for broadcasting USB data streams
DE102009033360A1 (de) * 2009-07-16 2011-01-20 Giesecke & Devrient Gmbh Verfahren zum Bekanntgeben einer Speicherkonfiguration
JP5403680B2 (ja) * 2009-12-15 2014-01-29 Necビッグローブ株式会社 情報転送システム、情報呈示装置、情報転送方法、およびプログラム
US9336029B2 (en) 2010-08-04 2016-05-10 International Business Machines Corporation Determination via an indexed structure of one or more partitionable endpoints affected by an I/O message
US8549202B2 (en) 2010-08-04 2013-10-01 International Business Machines Corporation Interrupt source controller with scalable state structures
US8495271B2 (en) * 2010-08-04 2013-07-23 International Business Machines Corporation Injection of I/O messages
US8990592B2 (en) 2012-01-25 2015-03-24 Smsc Holdings S.A.R.L. Overcoming limited common-mode range for USB systems
CN103019983B (zh) * 2012-11-23 2016-03-30 北京宏思电子技术有限责任公司 Usb接口控制模块和usb设备的数据传输控制方法
CN103217930B (zh) * 2013-05-02 2016-01-27 浙江中控技术股份有限公司 一种工业控制器间的数据交互系统
US9030228B1 (en) * 2013-12-03 2015-05-12 Atmel Corporation Intelligent current drive for bus lines
CN105335320B (zh) 2014-08-14 2020-05-15 恩智浦美国有限公司 具有可动态配置的端点分配的usb设备
CN108134599B (zh) * 2017-12-04 2019-03-08 山东高云半导体科技有限公司 一种i3c总线控制接口电路
CN108874700B (zh) * 2018-06-01 2021-07-16 联想(北京)有限公司 电子设备
KR20210069481A (ko) * 2019-12-03 2021-06-11 삼성전자주식회사 메모리 컨트롤러를 포함하는 스토리지 장치 및 비휘발성 메모리 시스템과 이의 동작 방법
TWI736092B (zh) * 2019-12-31 2021-08-11 新唐科技股份有限公司 通用串列匯流排裝置以及存取方法
CN111930648B (zh) * 2020-08-07 2023-01-10 山东云海国创云计算装备产业创新中心有限公司 一种缓存配置方法、装置及电子设备和存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4203001A (en) * 1978-06-02 1980-05-13 Siemens Aktiengesellschaft Apparatus for establishing multi-address and conference call connections
US4958342A (en) * 1987-03-11 1990-09-18 Aristacom International, Inc. Adaptive digital network interface
US4979167A (en) * 1988-12-02 1990-12-18 Advanced Micro Devices, Inc. Methods and apparatus for performing restricted token operations on an FDDI network
JPH04251338A (ja) * 1990-10-10 1992-09-07 Fuji Xerox Co Ltd プロセス間通信の制御方式
US5535197A (en) * 1991-09-26 1996-07-09 Ipc Information Systems, Inc. Shared buffer switching module
US5455572A (en) * 1992-10-19 1995-10-03 Motorola, Inc. Selective call receiver with computer interface message notification
JPH0950312A (ja) * 1995-05-31 1997-02-18 Mitsubishi Electric Corp Faコントローラのデータ処理方法
US5860119A (en) * 1996-11-25 1999-01-12 Vlsi Technology, Inc. Data-packet fifo buffer system with end-of-packet flags

Also Published As

Publication number Publication date
DE69836426D1 (de) 2006-12-28
MY114073A (en) 2002-07-31
HK1027878A1 (en) 2001-01-23
WO1999008196A1 (en) 1999-02-18
NO20000699L (no) 2000-02-11
WO1999008196A9 (en) 2000-03-16
TW385393B (en) 2000-03-21
KR20010022816A (ko) 2001-03-26
EP1002275B1 (en) 2006-11-15
JP2001512870A (ja) 2001-08-28
NO20000699D0 (no) 2000-02-11
EP1002275A1 (en) 2000-05-24
EP1002275A4 (en) 2002-01-23
CN1129852C (zh) 2003-12-03
DE69836426T2 (de) 2007-09-27
CA2297084C (en) 2005-09-27
CN1266515A (zh) 2000-09-13
US5974486A (en) 1999-10-26
CA2297084A1 (en) 1999-02-18

Similar Documents

Publication Publication Date Title
KR100572165B1 (ko) 유니버셜 직렬 버스 디바이스 컨트롤러
USRE44270E1 (en) System for providing access of multiple data buffers to a data retaining and processing device
US6272584B1 (en) System board with consolidated EEPROM module
Anderson USB system architecture
EP0961976B1 (en) System for partitioning pc chipset functions into logic and port integrated circuits
US7185135B1 (en) USB to PCI bridge
KR100290729B1 (ko) 유에스비 등시 데이타를 전송 및 수신하는 장치 및 방법
EP2033104B1 (en) Low power and low pin count bi-directional dual data rate device interconnect interface
US7043568B1 (en) Configuration selection for USB device controller
US7000057B1 (en) Method and apparatus for adding OTG dual role device capability to a USB peripheral
EP0702308A1 (en) System for implementing high speed peripheral bus
US20060095642A1 (en) USB on-the-go controller
US7225288B2 (en) Extended host controller test mode support for use with full-speed USB devices
KR100290728B1 (ko) 다목적 유에스비 엔드포인트 파이프를 구현하는 장치 및 방법
KR20210075878A (ko) I2c와의 하위 호환성을 촉진하는 i3c 허브
US6014717A (en) PCMCIA host adapter and method for variable data transfers
EP1728170A2 (en) Signaling arrangement and approach therefor
US20040064613A1 (en) Apparatus and method for monitoring computer system resources
EP1817677B1 (en) Usb on-the-go controller
US6874047B1 (en) System and method for implementing an SMBus/I2C interface on a network interface card
US20070131767A1 (en) System and method for media card communication
CN100462952C (zh) 接口可配置的通用串行总线控制器
US5664213A (en) Input/output (I/O) holdoff mechanism for use in a system where I/O device inputs are fed through a latency introducing bus
CN112559429A (zh) 一种基于usb数据侦听系统及方法
Garetz P696/S100—a bus which supports a wide range of 8-and 16-bit processors

Legal Events

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

Payment date: 20090408

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee