KR100485294B1 - 데이터 전송 제어 장치, 전자 기기 및 데이터 전송 제어방법 - Google Patents

데이터 전송 제어 장치, 전자 기기 및 데이터 전송 제어방법 Download PDF

Info

Publication number
KR100485294B1
KR100485294B1 KR10-2004-0087911A KR20040087911A KR100485294B1 KR 100485294 B1 KR100485294 B1 KR 100485294B1 KR 20040087911 A KR20040087911 A KR 20040087911A KR 100485294 B1 KR100485294 B1 KR 100485294B1
Authority
KR
South Korea
Prior art keywords
data
information
storage area
endpoint
host
Prior art date
Application number
KR10-2004-0087911A
Other languages
English (en)
Other versions
KR20040103831A (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 KR20040103831A publication Critical patent/KR20040103831A/ko
Application granted granted Critical
Publication of KR100485294B1 publication Critical patent/KR100485294B1/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/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

하나의 엔드 포인트 EP1을 통해 전송되는 정보로서 CBW와 데이터가 할당되어 있는 경우에, CBW 영역(12)(랜덤 액세스 가능한 커맨드 기억 영역)과 EP1 영역(10)(FIFO 설정의 데이터 기억 영역)이 준비되는 버퍼를 마련한다. 그리고, USB의 데이터 페이즈(커맨드 트랜스포트)로부터 데이터 페이즈(데이터 트랜스포트)로 전환한 경우에, 정보의 기입 영역을 CBW 영역(12)으로부터 EP1 영역(10)으로 전환하고, 호스트로부터 엔드 포인트 EP1을 향해 전송되는 OUT 데이터를 EP1 영역에 기입한다. 커맨드 페이즈에서의 확인이 호스트로 반환되는 것을 조건으로, CBW 영역(12)으로부터 EP1 영역(10)으로 전환된다. 토글 미스인 경우에는, ACK가 반환되어도 영역 전환을 행하지 않게 된다.

Description

데이터 전송 제어 장치, 전자 기기 및 데이터 전송 제어 방법{DATA TRANSFER CONTROL DEVICE, ELECTRONIC EQUIPMENT, AND DATA TRANSFER CONTROL METHOD}
본 발명은 데이터 전송 제어 장치, 전자 기기 및 데이터 전송 제어 방법에 관한 것이다. 최근, 퍼스널 컴퓨터와 주변 기기(광의로는 전자 기기)를 접속하기 위한 인터페이스 규격으로서, USB(Universal Serial Bus)가 주목을 받고 있다. 이 USB는, 종래에는 별도 규격의 커넥터로 접속되는 마우스, 키보드, 프린터 등의 주변 기기를 동일한 규격의 커넥터로 접속할 수 있으며 소위 플러그 & 플레이나 핫 플러그도 실현할 수 있다는 이점이 있다.
한편, 이 USB는, 동일하게 직렬 버스 인터페이스 규격으로서 각광을 받고 있는 IEEE1394에 비하여 전송 속도가 느린 문제점이 있다.
따라서, 종래의 USB1.1 규격에 대한 호환성을 가지면서, USB1.1에 비하여 매우 고속인 480Mbps(HS 모드)의 데이터 전송 속도를 실현할 수 있는 USB2.0 규격이 책정되어, 주목을 받고 있다.
이 USB2.0에서는, HS(High Speed) 모드에서는 480Mbps로 데이터 전송이 행해진다. 따라서, 고속의 전송 속도가 요구되는 하드디스크 드라이브나 광 디스크 드라이브 등의 스토리지 디바이스의 인터페이스로서 이용할 수 있다는 이점이 있다.
그러나, 한편으로는, USB 버스에 접속되는 데이터 전송 제어 장치는, 480Mbps라는 고속으로 전송되어 오는 데이터를 처리해야 한다. 따라서, 데이터 전송 제어 장치의 처리 속도나, 데이터 전송 제어 장치를 제어하는 펌웨어(CPU)의 처리 속도가 느리면, 실효적인 전송 속도를 확보할 수 없어, 버스 대역을 손실하는 문제가 있다.
본 발명은, 이상과 같은 기술적 과제를 감안하여 이루어진 것으로, 그 목적은 실효적인 버스의 전송 속도를 향상시킬 수 있는 데이터 전송 제어 장치, 전자 기기 및 데이터 전송 제어 방법을 제공하는 것이다.
상기 과제를 해결하기 위해 본 발명은, 버스를 통한 데이터 전송을 위한 데이터 전송 제어 장치에 있어서, 하나의 엔드 포인트를 통해 전송되는 정보로서 제1, 제2 정보를 포함하는 복수 종류의 정보가 할당되어 있는 경우에, 제1 정보용의 제1 기억 영역과 제2 정보용의 제2 기억 영역이 하나의 엔드 포인트에 대응하여 준비되는 버퍼와, 버스를 통해 제1 정보가 전송되는 제1 페이즈에서는, 호스트로부터 엔드 포인트를 향해 전송되는 정보를 제1 정보용의 상기 제1 기억 영역에 기입하고, 버스를 통해 제2 정보가 전송되는 제2 페이즈에서는, 호스트로부터 엔드 포인트를 향해 전송되는 정보를, 제2 정보용의 상기 제2 기억 영역에 기입하는 버퍼 관리 회로를 포함하는 데이터 전송 제어 장치에 관계한 것이다.
본 발명에 따라, 소정의 엔드 포인트에 할당되는 제1 정보용의 제1 기억 영역과 동일한 엔드 포인트에 할당되는 제2 정보용의 제2 기억 영역이, 버퍼에 준비된다. 그리고, 제1 페이즈(제1 트랜스포트)에서는, 호스트로부터 엔드 포인트를 향해 전송되는 정보가 제1 기억 영역에 기입되고, 제2 페이즈(제2 트랜스포트)에서는, 호스트로부터 엔드 포인트를 향해 전송되는 정보가 제2 기억 영역에 기입된다. 예를 들면, 제1 페이즈로부터 제2 페이즈로 전환된 경우에, 엔드 포인트를 향한 정보의 기입 영역이, 제1 기억 영역으로부터 제2 기억 영역으로 전환된다.
이와 같이 함으로써, 하나의 엔드 포인트에 복수 종류의 정보가 할당되어 있는 경우에도, 제1 기억 영역에 기입된 제1 정보에 대하여 처리를 행하면서, 제2 기억 영역에 제2 정보를 기입하는 것이 가능하게 된다. 따라서, 데이터 전송 제어 장치의 처리 속도의 향상이나, 제1 정보를 처리하는 수단의 부하를 경감하는 것이 가능하게 되어, 실효적인 버스의 전송 속도를 향상할 수 있다.
또한, 본 발명에 따라, 제1 정보용으로 준비된 상기 제1 기억 영역이, 정보의 랜덤 액세스가 가능한 영역으로 설정되고, 제2 정보용으로 준비된 상기 제2 기억 영역이, 먼저 입력된 정보가 먼저 출력되는 영역으로 설정되어도 된다.
이와 같이 하면, 제1 기억 영역에 기입된 제1 정보를 처리하는 수단의 처리 속도의 향상 등이 도모된다.
또한 본 발명에 따라, 제1 정보가 기억되는 상기 제1 기억 영역의 선두 어드레스 이외의 영역에, 제2 정보의 전송을 지시하는 커맨드 블록 및 커맨드 블록에 의해 전송이 지시되는 제2 정보의 길이 정보 중 적어도 한쪽이 기입되어도 된다.
이와 같은 경우에도 본 발명에 따르면, 커맨드 블록이나 길이 정보를 랜덤 액세스로 판독하는 것이 가능하게 되어, 제1 정보를 처리하는 수단의 처리 속도의 향상 등이 도모된다.
또한, 본 발명에 따라, 상기 제1 페이즈의 데이터 전송에 대한 확인이 호스트로 반환되는 것을 조건으로, 호스트로부터 엔드 포인트를 향해 전송되는 정보의 기입 영역이, 상기 제1 기억 영역으로부터 제2 기억 영역으로 전환되어도 된다.
이와 같이 하면, 오류가 없는 확실한 영역 전환을, 적은 처리 부하로 실현 할 수 있게 된다.
또한, 본 발명에 따라, 호스트와의 사이에서 트랜잭션의 시퀀스를 동기화하기 위한 데이터 토글 비트에 에러가 생긴 경우에는, 확인이 호스트로 반환된 경우에도, 상기 제1 기억 영역으로부터 상기 제 2 기억 영역으로의 전환을 행하지 않아도 된다.
이와 같이 하면, 데이터 토글 비트에 에러가 생긴 경우(토글 미스인 경우)에도, 적정한 데이터 전송 처리를 실현할 수 있다.
또한, 본 발명에 따라, 상기 제1 정보는 커맨드 블록의 패킷이고, 상기 제2 정보는 상기 매크로 블록의 지시에 의해 전송되는 데이터의 패킷이어도 된다.
단, 본 발명에서는, 제1, 제2 기억 영역에 기억되는 제1, 제2 정보의 종류는 임의로 설정할 수 있다.
또한 본 발명에 따라, 처리 수단이 상기 커맨드 블록의 패킷을 해석하고 있는 사이에, 데이터 패킷이 상기 제2 기억 영역에 기입되어도 된다.
이와 같이 하면, 커맨드 페이즈(커맨드 트랜스포트)로부터 데이터 페이즈(데이터 트랜스포트)로의 전환 시 등에서, 제2 기억 영역을 통한 데이터의 전송 처리의 개시 타이밍을 빠르게 하는 것이 가능하게 되어, 버스의 실효적인 전송 속도를 향상시킬 수 있다.
또한, 본 발명은, 버스를 통한 데이터 전송을 위한 데이터 전송 제어 장치에 있어서, 하나의 엔드 포인트를 통해 전송되는 정보로서 커맨드 블록의 패킷과 데이터의 패킷이 할당되어 있는 경우에, 커맨드 블록용의 커맨드 기억 영역과 데이터용의 데이터 기억 영역이 하나의 엔드 포인트에 대응하여 준비되는 버퍼와, 버스를 통해 커맨드 블록의 패킷이 전송되는 커맨드 페이즈로부터, 버스를 통해 데이터의 패킷이 전송되는 데이터 페이즈로 전환한 경우에, 정보의 기입 영역을 커맨드 블록용의 상기 커맨드 기억 영역으로부터 데이터용의 데이터 기억 기억 영역으로 전환하고, 호스트로부터 엔드 포인트를 향해 전송되는 데이터의 패킷을 상기 데이터 기억 영역에 기입하는 버퍼 관리 회로를 포함하는 데이터 전송 제어 장치에 관계한 것이다.
본 발명에 따르면, 소정의 엔드 포인트에 할당되는 커맨드 블록 패킷용의 커맨드 기억 영역과, 동일한 엔드 포인트에 할당되는 데이터 패킷용의 데이터 기억 영역이 버퍼에 준비된다. 그리고, 커맨드 페이즈(커맨드 트랜스포트)로부터 데이터 페이즈(데이터 트랜스포트)로 전환된 경우에, 엔드 포인트를 향하는 정보의 기입 영역은, 커맨드 기억 영역으로부터 데이터 기억 영역으로 전환된다.
이와 같이 함으로써, 하나의 엔드 포인트에 커맨드 블록 패킷과 데이터 패킷이 할당되어 있는 경우에도, 커맨드 기억 영역에 기입된 커맨드 블록 패킷에 대하여 처리를 행하면서, 데이터 기억 영역에 데이터 패킷을 기입하는 것이 가능하게 된다. 따라서, 데이터 전송 제어 장치의 처리 속도의 향상이나, 커맨드 블록 패킷을 처리하는 수단의 부하를 경감시키는 것이 가능하게 되어, 실효적인 버스의 전송 속도를 향상시킬 수 있다.
또한 본 발명에 따라, USB(Universal Serial Bus)의 규격에 준거한 데이터 전송을 행하여도 된다.
단, 본 발명에 따라 USB 이외의 규격(USB의 사상을 계승하는 규격)에 준거한 데이터 전송에 적용하는 것도 가능하다.
또한 본 발명에 따른 전자 기기는, 상기한 어느 하나의 데이터 전송 제어 장치와, 상기 데이터 전송 제어 장치 및 버스를 통해 전송되는 데이터의 출력 처리 또는 입력 처리 또는 기억 처리를 행하는 장치를 포함하여도 된다.
본 발명에 따라, 데이터 전송 제어 장치의 데이터 전송을 제어하는 처리 수단(펌웨어 등)의 처리 부하를 경감할 수 있기 때문에, 전자 기기의 저비용화, 소규모화 등을 도모할 수 있다. 또한, 본 발명에 따르면, 고속의 전송 모드로 데이터 전송을 행하는 것도 가능하기 때문에, 전자 기기의 처리의 고속화를 도모할 수 있다.
〈실시예〉
이하, 본 발명의 실시예에 대하여 도면을 참조하여 상세히 설명한다.
이하에 설명하는 실시예는, 특허청구범위에 기재된 본 발명의 내용을 한정하는 것은 아니다. 또한, 본 실시예에서 설명되는 구성의 전부가 본 발명의 해결 수단으로서 필수적인 것으로 한정되지는 않는다.
1. USB
1. 1 데이터 전송 방법
우선, USB(USB2.0)의 데이터 전송 방법에 대하여 간단히 설명한다.
USB에서는 IEEE1394 등과는 달리, 데이터 전송의 주도권을 호스트가 갖고 있다. 즉, 데이터 전송의 트랜잭션을 기동하는 것은 호스트측이며, 데이터 전송에 관한 대부분의 제어는 호스트가 행한다. 이 때문에, 호스트의 처리 부하는 커지지만, 호스트가 되는 PC(퍼스널 컴퓨터) 등은 고속이며 고성능인 CPU(프로세서)를 갖고 있기 때문에, 이와 같이 부하가 큰 처리도 크게 문제되지는 않는다.
한편, USB에서는, 디바이스(타깃)는 호스트로부터의 요구에 대하여 단순히 응하는 것만으로도 무방하기 때문에, 디바이스측의 처리, 구성에 대해서는 간소화할 수 있다. 따라서, 디바이스측에서는 호스트와 같은 고성능이며 고속인 CPU를 사용할 필요가 없고, 염가의 CPU(마이크로 컴퓨터)를 사용할 수 있어, 저비용화를 도모할 수 있다.
그런데, USB에서는 이러한 호스트 주도의 데이터 전송을 실현하기 위해, 도 1의 (a)에 도시한 바와 같은 엔드 포인트(EP0∼EP15)가 디바이스측에 준비된다. 여기서, 엔드 포인트는 호스트와 디바이스 사이에서 데이터 전송을 행하기 위한 버퍼(FIFO)의 입구에 상당하며, USB에서의 데이터 전송은, 전부, 이 엔드 포인트를 경유하여 행해진다.
그리고, 이 엔드 포인트는, 디바이스 어드레스와 엔드 포인트 번호에 의해 일의적으로 어드레스를 지정할 수 있도록 되어 있다. 즉 호스트는, 디바이스 어드레스와 엔드 포인트 번호를 지정함으로써, 원하는 엔드 포인트로의 데이터 송신이나, 원하는 엔드 포인트로부터의 데이터 수신을 자유롭게 행할 수 있다.
또한, 엔드 포인트의 설정은 디바이스측의 임의이며, 엔드 포인트 번호의 할당이나, 각 엔드 포인트에 할당되는 기억 영역의 데이터 사이즈 등은, 열거(enumeration) 처리 시에 호스트가 알 수 있다.
또한, USB에서는, 데이터 전송 타입으로서, 컨트롤 전송, 등시성 전송, 인터럽트 전송, 벌크 전송이 준비된다.
여기서, 컨트롤 전송은, 호스트와 디바이스(타깃) 사이에서 컨트롤 엔드 포인트를 통해 행해지는 제어용 전송 모드이다. 이 컨트롤 전송에 의해, 디바이스의 초기화를 위한 컨피그레이션 정보 등이 전송된다.
등시성 전송은, 화상 데이터나 음성 데이터와 같이, 데이터의 정당성보다도 대역 폭의 확보가 우선되는 데이터의 전송을 위해 준비되는 전송 모드이다. 이 등시성 전송에서는, 일정 주기에 일정량의 데이터를 전송할 수 있는 것이 보증되기 때문에, 데이터의 실시간성이 중요한 어플리케이션에 유효한 전송 모드가 된다.
인터럽트 전송은, 비교적 낮은 전송 속도로 소량의 데이터를 전송하기 위해 준비되는 전송 모드이다.
벌크 전송은, 부정기적으로 발생하는 대량의 데이터를 전송하기 위해 준비되는 전송 모드이다. 이 벌크 전송에서는, 등시성 전송이나 인터럽트 전송에 의해 사용된 시간 이외의 빈 시간에서 데이터 전송이 행해짐과 함께, 데이터의 정당성이 체크된다. 따라서, 실시간성은 그다지 중요하지 않지만, 데이터의 신뢰성은, 확보하고자 하는 데이터 전송에 유효한 전송 모드이다.
1. 2 트랜잭션 구성
그런데, 도 1의 (b)에 도시한 바와 같이, USB의 벌크 전송에서의 트랜잭션은 기본적으로 토큰 패킷, 데이터 패킷, 핸드셰이크 패킷이라는 3개의 패킷으로 구성된다. 등시성 전송인 경우에는 핸드셰이크 패킷은 불필요하게 된다.
여기서 토큰 패킷은 호스트가 디바이스(타깃)의 엔드 포인트의 판독이나 기입을 요구하는 경우 등에 사용되는 패킷이다. 이 토큰 패킷은, 예를 들면, PID (OUT, IN, SOF, SETUP 등의 패킷 ID), ADDR(디바이스 어드레스), ENDP(엔드 포인트 번호), CRC(Cyclic Redundancy Check)의 필드를 갖는다.
또한, 데이터 패킷은, 데이터의 실체를 보내기 위한 패킷으로, PID(DATA0, DATA1), DATA(데이터의 실체), CRC의 필드를 갖는다.
또한, 핸드셰이크 패킷은 데이터 수신에 성공하였는지를 수신측이 송신측에 전달하기 위한 패킷으로, PID(ACK, NAK, STALL)의 필드를 갖는다.
OUT 트랜잭션(호스트가 디바이스로 정보를 출력하는 트랜잭션)에서는, 도 1의 (c)에 도시한 바와 같이, 우선, 호스트가 디바이스에 OUT 토큰 패킷을 전송한다. 다음에, 호스트는 디바이스에 OUT의 데이터 패킷을 전송한다. 그리고, 디바이스는 OUT의 데이터 패킷의 수신에 성공하면, 호스트에 ACK의 핸드셰이크 패킷을 전송한다.
한편, IN 트랜잭션(호스트가 디바이스로부터 정보를 입력하는 트랜잭션)에서는 도 1의 (d)에 도시한 바와 같이, 우선, 호스트가 디바이스에 IN 토큰 패킷을 전송한다. 그리고, IN 토큰 패킷을 수신한 디바이스는 호스트에 IN의 데이터 패킷을 전송한다. 그리고, 호스트는, IN의 데이터 패킷의 수신에 성공하면, 디바이스에 ACK의 핸드셰이크 패킷을 전송한다.
또한, 도 1의 (c), 도 1의 (d)에서, "D←H"는 호스트로부터 디바이스에 정보가 전송되는 것을 의미하며, "D→H"는 디바이스로부터 호스트에 정보가 전송되는 것을 의미한다(이하의 설명 및 도면에서도 마찬가지임).
1. 3 Bulk-Only
USB의 디바이스는 다양한 클래스로 분류된다. 그리고, 하드디스크 드라이브나 광 디스크 드라이브 등의 디바이스는, 매스 스토리지라 불리는 클래스에 속하며, 이 매스 스토리지 클래스에는, 전자 기기의 벤더 등에 의해 작성된 CBI(Control/Bulk/Interrupt)나 Bulk-Only 등의 사양이 있다.
그리고, CBI 사양으로는 도 2의 (a)에 도시한 바와 같이, 디바이스는 컨트롤, 벌크 아웃, 벌크 인, 인터럽트의 엔드 포인트 EP0, EP1, EP2, EP3을 준비한다. 여기서, 엔드 포인트 EP0에서는 USB층의 컨트롤의 패킷이나, 커맨드의 패킷이 전송된다. 또한, EP1에서는 OUT 데이터(호스트로부터 디바이스로 전송되는 데이터), EP2에서는 IN 데이터(디바이스로부터 호스트로 전송되는 데이터), EP3에서는 인터럽트 IN의 패킷이 전송된다. EP1∼EP15 중 어느 것을, 벌크 아웃, 벌크 인, 인터럽트 IN의 엔드 포인트에 할당할지는, 디바이스측의 임의이다.
한편, Bulk-Only 사양에서는 도 2의 (b)에 도시한 바와 같이, 디바이스는, 컨트롤, 벌크 아웃, 벌크 인의 엔드 포인트 EP0, EP1, EP2를 준비한다. 여기서, 엔드 포인트 EP0에서는 USB층의 컨트롤의 패킷이 전송된다. 또한, EP1에서는 커맨드(CBW) 및 OUT 데이터, EP2에서는 스테이터스(CSW) 및 IN 데이터의 패킷이 전송된다. EP1∼EP15 중 어느 것을, 벌크 아웃, 벌크 인의 엔드 포인트로 설정할지는, 디바이스측이 임의이다.
여기서, CBW(Command Block Wrapper)는, 커맨드 블록 및 이에 관련된 정보를 포함하는 패킷으로, 도 3에 그 포맷이 도시된다. 또한, CSW(Command Status Wrapper)는 커맨드 블록의 스테이터스를 포함하는 패킷으로, 도 4에 그 포맷이 도시된다.
도 3에서, dCBWSignature는 해당 패킷을 CBW로서 식별하기 위한 정보이고, dCBWTag는 커맨드 블록의 태그이며, dCBWDataTransferLength는 데이터 페이즈에서 전송되는 데이터의 길이를 지정한다. 또한, bmCBWFlags는 전송 방향 등을 지정하기 위한 플래그이고, dCBWLUN은 로지컬 유닛 번호이고, bCBWCBLength는 커맨드 길이이며, CBWCB는 ATA/ATAPI나 SCSI 등의 커맨드가 캡슐화되어 기술되는 커맨드 블록이다.
또한, 도 4에서, dCSWSignature는 해당 패킷을 CSW로서 식별하기 위한 정보이다. 또한, dCSWTag는 스테이터스 블록의 태그로서, 해당 CSW에 대응하는 CBW의 dCBWTag의 값이 기입된다. 또한, CSWDataResidue는 CBW의 dCBWDataTransferLength에 의해 지정된 데이터의 길이와 디바이스가 실제로 처리한 데이터의 길이의 차이고, bCSWStatus는 스테이터스 블록이다.
다음에, 도 2의 (b)의 Bulk-Only 사양에서의 데이터의 기입 처리, 판독 처리에 대하여, 도 5의 (a), 도 5의 (b)를 참조하여 설명한다.
호스트가 디바이스에 데이터를 기입하는 경우에는, 도 5의 (a)에 도시한 바와 같이, 우선, 호스트가 CBW를 디바이스로 전송하는 커맨드 페이즈(커맨드 트랜스포트)가 행해진다. 구체적으로는, 호스트가, 엔드 포인트 EP1을 지정하는 토큰 패킷을 디바이스로 전송하고, 다음에, CBW(도 2의 (b)의 A1, 도 3 참조)를 디바이스의 엔드 포인트 EP1로 전송한다. 이 CBW에는 기입 커맨드가 포함된다. 그리고, 디바이스로부터 호스트에 ACK의 핸드셰이크(H.S)가 반환되면, 커맨드 페이즈가 종료한다.
커맨드 페이즈(커맨드 트랜스포트)가 종료하면 데이터 페이즈(데이터 트랜스포트)로 이행한다. 이 데이터 페이즈에서는, 우선, 호스트가, 엔드 포인트 EP1을 지정하는 토큰 패킷을 디바이스로 전송하고, 다음에, OUT 데이터(도 2의 (b)의 A2 참조)를 디바이스의 엔드 포인트 EP1로 전송한다. 그리고, 디바이스로부터 호스트에 ACK의 핸드셰이크가 반환되면, 하나의 트랜잭션이 종료한다. 그리고, 이러한 트랜잭션이 반복되어, CBW의 dCBWDataTransferLength(도 3 참조)로 지정되는 데이터 길이만큼 데이터가 전송되면, 데이터 페이즈가 종료한다.
데이터 페이즈(데이터 트랜스포트)가 종료하면 스테이터스 페이즈(스테이터스 트랜스포트)로 이행한다. 이 스테이터스 페이즈에서는, 우선, 호스트가, 엔드 포인트 EP2를 지정하는 토큰 패킷을 디바이스로 전송한다. 그렇게 하면, 디바이스는 엔드 포인트 EP2에 있는 CSW(도 2의 (b)의 A3, 도 4 참조)를 호스트로 전송한다. 그리고, 호스트로부터 디바이스에 ACK의 핸드셰이크가 반환되면, 스테이터스 페이즈가 종료한다.
호스트가 데이터를 판독하는 경우에는, 도 5의 (b)에 도시한 바와 같이, 우선, 호스트가 엔드 포인트 EP1을 지정하는 토큰 패킷을 디바이스로 전송하고, 다음으로, CBW를 디바이스의 엔드 포인트 EP1로 전송한다. 이 CBW는 판독 커맨드를 포함한다. 그리고, 디바이스로부터 호스트에 ACK의 핸드셰이크가 반환되면, 커맨드 페이즈가 종료한다.
커맨드 페이즈가 종료하면 데이터 페이즈로 이행한다. 이 데이터 페이즈에서는, 우선, 호스트가, 엔드 포인트 EP2를 지정하는 토큰 패킷을 디바이스로 전송한다. 그렇게 하면, 디바이스는 엔드 포인트 EP2에 있는 IN 데이터(도 2의 (b)의 A4 참조)를 호스트로 전송하고, 호스트로부터 디바이스에 ACK의 핸드셰이크가 반환되면, 하나의 트랜잭션이 종료한다. 그리고, 이러한 트랜잭션이 반복되어, CBW의 dCBWDataTransferLength로 지정되는 데이터 길이만큼 데이터가 전송되면, 데이터 페이즈가 종료한다.
데이터 페이즈가 종료하면 스테이터스 페이즈로 이행한다. 이 스테이터스 페이즈의 처리는 도 5의 (a)의 데이터의 기입 처리의 경우와 마찬가지이다.
2. 본 실시예의 특징
2. 1 영역 전환
도 2의 (a)에 도시한 CBI 사양에서는, 호스트가 일정 기간마다 토큰을 디바이스로 전송하는 사양으로 되어 있다. 이 때문에, 호스트의 처리 부하나, 이 토큰을 받는 디바이스의 처리 부하가 크게 되는 결점이 있다.
이 때문에, 현재는, 도 2의 (b)의 Bulk-Only 사양이 주류로 되어 있다.
그런데, 이 Bulk-Only 사양에서는, 하나의 엔드 포인트를 통해 전송되는 정보로서, 복수 종류의 정보가 할당되어 있다. 구체적으로는, 도 2의 (b)에는, 벌크 아웃 엔드 포인트 EP1을 통해 전송되는 정보로서, 커맨드(CBW) 및 OUT 데이터가 할당되고, 벌크 인 엔드 포인트 EP2를 통해 전송되는 정보로서, 스테이터스(CSW) 및 IN 데이터가 할당되어 있다. 따라서, 호스트 및 디바이스는, 각 엔드 포인트를 통해 전송되는 정보가 어떤 정보인지를 판별할 필요가 있어, Bulk-Only 사양에서는, 현재의 페이즈가 어떤 페이즈인지를 호스트 및 디바이스가 판단하여, 이 정보의 판별을 행하고 있다.
예를 들면, 도 5의 (a), 도 5의 (b)의 B1, B2에서는, 현재의 페이즈가 커맨드 페이즈이기 때문에, 엔드 포인트 EP1을 통해 전송되는 정보는 CBW(커맨드)라고 판단된다. 또한, B3, B4에서는, 현재의 페이즈가 데이터 페이즈이기 때문에, 엔드 포인트 EP1을 통해 전송되는 정보는 OUT 데이터라고 판단되고, 엔드 포인트 EP2를 통해 전송되는 정보는 IN 데이터라고 판단된다. 또한, B5, B6에서는 현재의 페이즈가 스테이터스 페이즈이기 때문에, 엔드 포인트 EP2를 통해 전송되는 정보는 CSW(스테이터스)라고 판단된다.
그리고, Bulk-Only 사양에서는 호스트와 디바이스 사이에서 항상 페이즈가 일치하도록 데이터 전송이 행해지기 때문에, 하나의 엔드 포인트에 대하여 복수의 정보(CBW와 OUT 데이터, CSW와 IN 데이터)가 할당되어 있는 경우에도, 적정한 데이터 전송이 가능하게 된다.
그런데, Bulk-Only 사양에는, 다음과 같은 문제가 있다는 것이 판명되었다.
예를 들면 도 6의 (a)∼도 6의 (d)에 본 실시예의 비교예의 방법을 나타낸다. 이 비교예에서는, 도 6의 (a)에 도시한 바와 같이, 데이터 페이즈에서, 엔드 포인트 EP1을 입구로 하는 FIFO(EP1)(600)에 호스트로부터의 CBW(커맨드)가 기입된다.
그렇게 하면, 도 6의 (b)에 도시한 바와 같이, 디바이스측의 CPU(펌웨어, 처리 수단)는, 이 FIFO(600)에 기입된 CBW를 선입 선출 방식으로 판독하여, 커맨드 해석을 행한다. 이 경우, CPU의 커맨드 해석이 종료할 때까지는 FIFO(600)에 호스트로부터 데이터를 기입하는 것은 불가능하다. 따라서, 도 6의 (c)에 도시한 바와 같이, 데이터 페이즈로 이행하여 호스트로부터 OUT 데이터를 전송하는 토큰이 나온 경우에도, 디바이스는 호스트에 NAK를 돌려주게 된다.
그리고, 도 6의 (d)에 도시한 바와 같이, CPU의 커맨드 해석이 종료하고, FIFO(600)가 빈 상태로 되는 것을 조건으로, 호스트로부터의 OUT 데이터가 FIFO(600)에 기입되고, 이 OUT 데이터가 후단의 하드 디스크 드라이브 등의 디바이스에 DMA 전송되게 된다.
이와 같이 도 6의 (a)∼도 6의 (d)의 비교예에서는 CPU가 커맨드 해석을 행하고 있는 기간에는 FIFO(600)에 OUT 데이터를 기입할 수 없다. 따라서, 그 기간만큼 디바이스측의 처리가 늦어져서, 실효적인 데이터 전송 속도가 저하된다.
이 경우, USB1.1에서는 버스의 전송 속도가 늦기 때문에 도 6의 (b), 도 6의 (c)에 도시한 바와 같은 디바이스측의 처리의 지연은, 거의 문제되지 않는다.
그런데, USB2.0의 HS 모드에서는 고속의 480Mbps로 데이터 전송이 행해진다. 따라서, 호스트로부터는 USB를 통해 고속으로 데이터가 전송되어 온다. 이 때문에, 디바이스측의 처리가 지연되고, 이 고속으로 전송되어 오는 데이터의 처리에 디바이스가 대응할 수 있게 되면, 시스템 전체의 실효적인 데이터 전송 속도가 대폭 저하된다.
특히, 디바이스측에서는, 저비용화의 요청으로, 예를 들면 20∼50㎒ 정도의 클럭 주파수로 동작하는 염가의 CPU가 사용되는 경우가 많다. 따라서, 도 6의 (b), 도 6의 (c)의 커맨드 해석에 시간이 많이 소요되어, 실효적인 데이터 전송 속도의 지연은 더욱 심각하게 된다.
따라서 본 실시예에서는, 이러한 문제를 해결하기 위해 페이즈(트랜스포트)의 전환에 따라 버퍼의 기억 영역을 전환하는 방법을 채용한다.
보다 구체적으로는 도 7의 (a)에 도시한 바와 같이 본 실시예에서는, OUT 데이터(제2 정보)를 기입하기 위한 EP1 영역(10)(제2 기억 영역; 데이터 기억 영역) 외에, CBW(제1 정보; 커맨드 블록)를 기입하기 위한 CBW 영역(12)(제1 기억 영역; 커맨드 기억 영역)을, 패킷 저장 수단인 버퍼 상에 준비한다.
여기서, EP1 영역(10) 및 CBW 영역(12)은 모두 벌크 아웃의 엔드 포인트 EP1을 입구로 하는 기억 영역이다. 또한, EP1 영역(10)은, 먼저 입력된 정보가 먼저 출력되도록 설정(FIFO 설정)되어 있고, CBW 영역(12)은, 정보의 랜덤 액세스가 가능하게 되도록 설정(랜덤 액세스 설정)되어 있다.
그리고 본 실시예에서는, 커맨드 페이즈(제1 페이즈)에서는 스위치 SW(전환 수단)가 CBW 영역(12) 측으로 전환되어 있고, 호스트로부터 전송되어 온 CBW는 CBW 영역(12)에 기입된다. 그렇게 하면, CPU(펌웨어, 처리 수단)는 이 CBW 영역(12)에 기입되어 있는 CBW를 판독하여, 커맨드 해석을 행한다. 이 경우에, CBW 영역(12)은 랜덤 액세스 가능하게 설정되어 있기 때문에, CPU는 CBW 영역(12)의 임의의 어드레스의 정보를 고속으로 판독할 수 있다.
그리고 도 7의 (b)에 도시한 바와 같이, 커맨드 페이즈(제1 페이즈)로부터 데이터 페이즈(제2 페이즈)로 이행하면, 스위치 SW가 EP1 영역(10) 측으로 전환된다. 이에 따라, 호스트로부터의 OUT 데이터를 EP1 영역(10)에 기입하는 것이 가능하게 된다. 그리고, CPU의 커맨드 해석이 종료하면, EP1 영역(10)의 OUT 데이터를 후단의 하드디스크 드라이브 등의 디바이스로 전송하는 DMA 전송이 기동한다.
예를 들면 도 6의 (c)의 비교예에서는, CPU가 커맨드 해석을 행하고 있는 사이에는, 호스트로부터의 OUT 데이터를 받아들일 수 없어, 호스트에 NAK를 반환할 수 밖에 없었다.
이에 반하여 본 실시예에서는 도 7의 (b)에 도시한 바와 같이, CPU가 커맨드 해석을 행하고 있는 사이에도, 호스트로부터의 OUT 데이터를 받아들여, EP1 영역(10)에 기입하는 것이 가능하게 된다. 따라서, 호스트에 ACK를 돌려 주는 것이 가능하게 되어, 처리의 고속화를 도모할 수 있다.
특히 USB2.0에서는, 호스트로부터 데이터가 고속으로 전송되어 온다. 따라서, 도 6의 (c)의 비교예와 같이 호스트에 NAK를 계속해서 돌려 주면, 버스 대역이 손실되어, USB2.0의 고속 데이터 전송을 활용할 수 없다.
이에 반하여 본 실시에에서는, 도 7의 (b)에 도시한 바와 같이 호스트에 ACK를 돌려 주는 것이 가능하게 되기 때문에, 버스 대역의 손실을 최소한으로 억제할 수 있어, USB2.0의 고속 데이터 전송을 살릴 수 있기 때문에, 실효적인 데이터 전송 속도를 향상시킬 수 있다.
또한 비교예에서는, 도 8의 (a)에 도시한 바와 같이, CBW는 선입 선출의 FIFO(600)에 기억된다. 따라서, CPU는 커맨드 해석 시에 FIFO(600)의 선두 어드레스로부터 순서대로 CBW를 판독할 필요가 있다. 이 결과, 커맨드 해석에 중요한 데이터 길이(도 3의 dCBWDataTransferLength)나 커맨드(CBWCB)를 판독할 때까지 시간이 걸리게 되어, 커맨드 해석의 처리가 더욱 지연된다.
이에 반하여 본 실시예에서는, 도 8의 (b)에 도시한 바와 같이, CBW는 랜덤 액세스 가능한 CBW 영역(12)에 기억된다. 따라서, CPU는, 커맨드 해석에 중요한 데이터 길이나 커맨드를 먼저 판독하는 것이 가능하게 되어, 커맨드 해석의 처리 시간을 절약할 수 있다. 이에 따라, 실효적인 데이터 전송 속도를 더욱 향상시킬 수 있다.
이와 같이 본 실시예에서는, CBW 영역(12)(제1 정보가 기억되는 제1 기억 영역)의 선두 어드레스 이외의 영역에, 데이터 길이(제2 정보의 길이 정보)나 커맨드(제2 정보의 전송을 지시하는 커맨드 블록)가 기입되는 경우에도, CBW 영역(12)이 랜덤 액세스 가능하게 설정되어 있기 때문에, 데이터 길이나 커맨드를 먼저 판독하는 것이 가능하게 되어, 실효적인 데이터 전송 속도의 향상을 도모할 수 있다.
또한, 후단의 디바이스(하드디스크 드라이브 등)에 데이터를 효율적으로 DMA 전송하기 위해서는, EP1 영역(10)에서는, 정보가 선입 선출되는 영역에 설정(FIFO 설정)하는 것이 바람직하다. 이 경우, EP1 영역(10)을 직렬 접속의 레지스터, 메모리 등으로 구성함으로써, 선입 선출의 영역에 설정하여도 되고, 후술하는 바와 같이 RAM의 어드레스 제어를 고안함으로써, 선입 선출의 영역으로 설정하여도 된다.
2. 2 구성예
도 9에 본 실시예의 데이터 전송 제어 장치의 구성예를 도시한다.
본 실시예의 데이터 전송 제어 장치는, 트랜시버 매크로(20), SIE(30), 엔드 포인트 관리 회로(40), 버퍼 관리 회로(50), 버퍼(60), 벌크 전송 관리 회로(70), DMAC(80)를 포함한다. 또한, 본 발명의 데이터 전송 제어 장치는, 도 12에 도시한 회로 블록의 전부를 포함할 필요는 없고, 이들의 일부를 생략하는 구성으로 하여도 무방하다.
여기서, 트랜시버 매크로(20)는, USB(제1 버스)의 FS 모드나 HS 모드에서의 데이터 전송을 실현하기 위한 회로이다. 이 트랜시버 매크로(20)로는, 예를 들면 USB2.0의 물리층 회로나, 논리층 회로의 일부에 대한 인터페이스를 정의한 UTMI(USB2.0 Transceiver Macrocell Interface)에 준거한 매크로 셀을 이용할 수 있다. 이 트랜시버 매크로(20)는, 트랜시버 회로(22), 클럭 생성 회로(24)를 포함한다.
트랜시버 회로(22)는, 차동 신호 DP, DM을 이용하여 USB(제1 버스) 상의 데이터를 송수신하는 아날로그 프론트 엔드 회로(수신 회로, 송신 회로)를 포함한다. 또한, 비트 스터핑, 비트 언스터핑, 직렬·병렬 변환, 병렬·직렬 변환, NRZI 디코드, NRZI 인코드, 샘플링 클럭 생성 등의 처리를 행하는 회로를 포함한다.
또한, 클럭 생성 회로(24)는, 데이터 전송 제어 장치가 사용하는 동작 클럭이나, 샘플링 클럭의 생성에 사용되는 클럭 등을 생성하는 회로로서, 480㎒나 60 ㎒ 클럭을 생성하는 PLL이나 발진 회로 등을 포함한다.
SIE(Serial Interface Engine)는, USB의 패킷 전송 처리 등의 다양한 처리를 행하는 회로로서, 패킷 핸들러 회로(32), 중단 및 재개(Suspend & Resume) 제어 회로(34), 트랜잭션 관리 회로(36)를 포함한다.
패킷 핸들러 회로(32)는, 헤더 및 데이터로 이루어지는 패킷의 조립(생성)이나 분해 등을 행하는 회로로서, CRC의 생성이나 해독을 행하는 CRC 처리 회로(33)를 포함한다.
중단 및 재개 제어 회로(34)는, 중단이나 재개 시의 시퀀스 제어를 행하는 회로이다.
트랜잭션 관리 회로(36)는 토큰, 데이터, 핸드셰이크 등의 패킷으로 구성되는 트랜잭션을 관리하는 회로이다. 구체적으로는, 토큰 패킷을 수신한 경우에는, 수신처가 자신인지를 확인하여, 자신인 경우에는, 호스트와의 사이에서 데이터 패킷의 전송 처리를 행하고, 그 후에, 핸드셰이크 패킷의 전송 처리를 행한다.
엔드 포인트 관리 회로(40)는, 버퍼(60)의 각 기억 영역의 입구가 되는 엔드 포인트를 관리하는 회로로서, 엔드 포인트의 속성 정보를 기억하는 레지스터(레지스터 세트) 등을 포함한다.
버퍼 관리 회로(50)는, 예를 들면 RAM 등으로 구성되는 버퍼(60)를 관리하는 회로이다. 보다 구체적으로는, 기입 어드레스나 판독 어드레스를 생성하고, 버퍼(60)로의 데이터의 기입 처리나 버퍼(60)로부터의 데이터의 판독 처리를 행한다.
버퍼(60)(패킷 기억 수단)는, USB를 통해 전송되는 데이터(패킷)를 일시적으로 기억하는 것으로, USB(제1 버스)에서의 데이터 전송 속도와, EBUS(제2 버스)에서의 데이터 전송 속도의 속도 차를 보상하는 기능 등을 갖는다. 또한, EBUS는 하드디스크 드라이브나 CD 드라이브 등의 디바이스(매스 스토리지 디바이스)에 접속되는 외부 버스이다.
그리고, 본 실시예에서는 하나의 엔드 포인트를 통해 전송되는 정보로서 복수 종류의 정보가 할당되어 있는 경우에, 제1 정보(예를 들면 커맨드 블록)용의 제1 기억 영역(예를 들면 커맨드 기억 영역)과 제2 정보(예를 들면 데이터)용의 제2 기억 영역(예를 들면 데이터 기억 영역)이, 이 버퍼(60) 상에 준비(확보)된다.
벌크 전송 관리 회로(70)는, USB에서의 벌크 전송을 관리하기 위한 회로이다.
DMAC(80)는, EBUS를 통해 DMA 전송을 행하기 위한 DMA 컨트롤러이며, DMA 카운터(82)를 포함한다. 그리고 DMA 카운터(82)는, EBUS를 통해 전송되는 데이터의 사이즈(전송 수)를 카운트하는 회로이다.
2. 3 상세한 구성예
도 10에, 트랜잭션 관리 회로(36)(SIE), 엔드 포인트 관리 회로(40), 버퍼 관리 회로(50), 버퍼(60)의 상세한 구성예를 도시한다.
버퍼(60)(RAM)는, 엔드 포인트 EP1로 할당된 정보인 CBW(커맨드 블록)를 기억하는 CBW 영역(61), EP0으로 할당된 정보인 컨트롤을 기억하는 EP0 영역(62), EP1로 할당된 정보인 OUT 데이터를 기억하는 EP1 영역(63), EP2로 할당된 정보인 IN 데이터를 기억하는 EP2 영역(64)을 포함한다.
그리고 도 10에서는, CBW 영역(61)에 대해서, CPU(펌웨어, 처리 수단)에 의한 랜덤 액세스가 가능하도록 설정되어 있다. 한편, EP0, EP1, EP2 영역(62, 63, 64)은, 먼저 입력된 정보가 먼저 출력되도록 설정(FIFO 설정)되어 있다.
트랜잭션 관리 회로(36)는, USB를 통해 전송되는 기입 데이터 SIEWrData(기입 패킷)를 버퍼(60)로 출력하고, 판독 데이터 SIERdData(판독 패킷)를 버퍼(60)로부터 입력한다.
또한, 트랜잭션 관리 회로(36)는, 버퍼 관리 회로(50)에 기입 요구 신호 SIEWrReq, 판독 요구 신호 SIERdReq를 출력하고, 버퍼 관리 회로(50)로부터 기입 확인 신호 SIEWrAck, 판독 확인 신호 SIERdAck를 수신한다.
또한 트랜잭션 관리 회로(36)는, 엔드 포인트 관리 회로(40)에 트랜잭션 종료 신호 TranEndPulse, 트랜잭션 스테이터스 신호 TranStatus, 엔드 포인트 번호 지정 신호 EPnum, 전송 방향 지정 신호 Direction를 출력하고, 엔드 포인트 관리 회로(40)로부터, 엔드 포인트 존재 신호 EPexist를 수신한다.
엔드 포인트 관리 회로(40)는, 엔드 포인트의 속성 정보(엔드 포인트 번호, 최대 패킷 사이즈 등)를 기술하기 위한 레지스터(레지스터 세트)(42, 43, 44)를 포함한다. 그리고, 트랜잭션 관리 회로(36)로부터의 각종 신호와, 레지스터의 속성 정보에 기초하여, 엔드 포인트 선택 신호 EPsel를 생성하여, 버퍼 관리 회로(50)로 출력한다.
또한 엔드 포인트 관리 회로(40)는, 버퍼 관리 회로(50)에, CPU로부터의 기입 요구 신호 CPUWrReq, 판독 요구 신호 CPURdReq를 출력하고, 버퍼 관리 회로(50)로부터, CPU로의 기입 확인 신호 CPUWrAck, 판독 확인 신호 CPURdAck를 수신한다.
엔드 포인트 관리 회로(40)가 포함하는 EP0 레지스터(42)는, USB 사양에 의해 디폴트로 정의되는 컨트롤 엔드 포인트의 속성 정보를 기술하기 위한 레지스터이다.
또한 EP1, EP2 레지스터(43, 44)는, BULK-Only 사양에 의해 정의되는 벌크 아웃이나 벌크 인의 엔드 포인트의 속성 정보를 기술하기 위한 레지스터이다. 또한, 엔드 포인트 EP1∼EP15 중 어느 것을, 벌크 아웃 또는 벌크 인의 엔드 포인트로 설정할지는 디바이스측의 임의이다.
EP1 레지스터(43)에서는, 데이터의 전송 방향을 나타내는 플래그 DIR이 OUT으로 설정되어 있고, EP1은 벌크 아웃의 엔드 포인트로 설정되어 있다.
또한, EP1 레지스터(43)에서는, 플래그 EnCBW가 1로 설정되어 있다. 이 EnCBW는, 엔드 포인트를 버퍼(60)의 CBW 영역(61)에 접속하기 위한 플래그이고, EnCBW가 1로 설정되는 엔드 포인트는 CBW 영역(61)에 접속되게 된다.
EP2 레지스터(44)에서는, 데이터의 전송 방향을 나타내는 플래그 DIR이 IN으로 설정되어 있고, EP2는 벌크 인의 엔드 포인트로 설정되어 있다.
또한, EP2 레지스터(44)에서는, EnCBW가 0으로 설정되어 있다.
버퍼 관리 회로(50)는, 트랜잭션 관리 회로(36)나 엔드 포인트 관리 회로(40)로부터의 기입·판독 요구 신호나, 엔드 포인트 관리 회로(40)로부터의 엔드 포인트 선택 신호 EPsel를 수신하여, 어드레스 Address나 기입 펄스 xWR(x는 부 논리를 의미함)을 버퍼(60)로 출력한다. 이 버퍼 관리 회로(50)는 CBW, EP0, EP1, EP2의 어드레스 생성 회로(51, 52, 53, 54)와 셀렉터(56)를 포함한다.
여기서 CBW 어드레스 생성 회로(51)는, CBW 영역(61)(선두 어드레스 a0)에 대한, SIEWrData, SIERdData의 기입 또는 판독 어드레스 AD0을 생성한다.
또한, EP0, EP1, EP2의 어드레스 생성 회로(52, 53, 54)는, 각각, EP0, EP1, EP2의 영역(62, 63, 64)(선두 어드레스 a1, a2, a3)에 대한, SIEWrData, SIERdData의 기입 또는 판독 어드레스 AD1, AD2, AD3을 생성한다. 구체적으로는, a1, a2, a3을 선두 어드레스로서 순차 증가(또는 감소)하는 어드레스 AD1, AD2, AD3을 생성한다.
셀렉터(56)는, 신호 EPsel에 기초하여 어드레스 AD0∼AD3 중 어느 하나를 선택하고, Address로서 버퍼(60)로 출력함과 함께, 기입 펄스 xWR을 버퍼(60)로 출력한다. 구체적으로는, EPsel에 의해 CBW가 선택 지시된 경우에는 AD0을 선택하고, EP0이 선택 지시된 경우에는 AD1을 선택하고, EP1이 선택 지시된 경우에는 AD2를 선택하고, EP2가 선택 지시된 경우에는 AD3을 선택하여, Address로서 버퍼(60)로 출력한다.
또한, CBW 영역(61)은, CPU에 의한 CPURdData의 판독이 가능하게 되어 있다. 이 경우에는, 버퍼 관리 회로(50)는, 엔드 포인트 관리 회로(40)로부터의 EPsel이나 CPURdReq에 기초하여, CPURdData의 판독을 위한 Address를 버퍼(60)로 출력하게 된다.
도 11에, 트랜잭션 관리 회로(36), 엔드 포인트 관리 회로(40), 버퍼 관리 회로(50), 버퍼(60)의 다른 구성예를 도시한다.
도 10과 달리 도 11에서는, 버퍼(60)가, CBW, EP0, EP1, EP2용의 FIFO(65, 66, 67, 68)(예를 들면 직렬 접속된 레지스터, 메모리)를 포함한다.
그리고, 버퍼 관리 회로(50)가 포함하는 셀렉터(57)는, 엔드 포인트 관리 회로(40)로부터의 EPsel에 기초하여, 트랜잭션 관리 회로(36)로부터의 SIEWrData를, WrDataCBW, WrDataEP0, WrDataEP1, WrDataEP2 중 어느 하나로서 버퍼(60)로 출력한다.
또는, 셀렉터(57)는 EPsel에 기초하여, 버퍼(60)로부터의 RdDataCBW, RdDataEP0, RdDataEP1, RdDataEP2 중 어느 하나를 선택하여, SIERdData로서 트랜잭션 관리 회로(36)로 출력한다.
보다 구체적으로는, EPsel에 의해 CBW가 선택 지시된 경우에는 WrDataCBW, RdDataCBW가 선택되고, EP0가 선택 지시된 경우에는 WrDataEP0, RdDataEP0이 선택되며, EP1이 선택 지시된 경우에는 WrDataEP1, RdDataEP1이 선택되고, EP2가 선택 지시된 경우에는 WrDataEP2, RdDataEP2가 선택되는 것으로 된다.
그리고, 버퍼(60)에의 데이터의 기입은, 트랜잭션 관리 회로(36)로부터의 기입 펄스 SIEWR에 의해 행해지고, 버퍼(60)로부터의 데이터의 판독은, 트랜잭션 관리 회로(36)로부터의 판독 펄스 SIERD에 의해 행해진다.
또한, 도 11에서, FIFO(65)(CBW)를 랜덤 액세스 가능한 기억 영역에 설정하도록 하여도 된다.
2. 4 동작
도 12∼도 16에, 본 실시예의 데이터 전송 제어 장치의 상세한 동작을 설명하기 위한 타이밍 파형도의 예를 도시한다.
2. 4. 1 성공 시
도 12는 커맨드 페이즈(도 5의 (a)의 B1 참조)의 개시 시의 타이밍 파형도이고, 도 13은 커맨드 페이즈의 종료 시의 타이밍 파형도이다.
도 12의 C1, C2로 도시한 바와 같이 트랜잭션 관리 회로(36)가 EPnum을 1(엔드 포인트 번호=1)로 설정하고, Direction을 OUT으로 설정하면, 벌크 아웃 엔드 포인트 EP1의 레지스터(43)(도 10 참조)가 존재하기 때문에, 엔드 포인트 관리 회로(40)는, C3으로 도시한 바와 같이 EPexist를 액티브 상태(H 레벨 상태)로 한다.
이 때, C4로 도시한 바와 같이 엔드 포인트 EP1의 EnCBW가 H 레벨(1)로 설정되어 있기 때문에, 엔드 포인트 관리 회로(40)는, C5로 도시한 바와 같이 CBW 영역(61)의 어드레스 AD0을 선택 지시하는 EPsel을, 버퍼 관리 회로(50)로 출력한다. 이에 따라, 버퍼 관리 회로(50)의 셀렉터(56)는, CBW 어드레스 생성 회로(51)에 의해 생성되는 어드레스 AD0을 선택하게 된다.
그리고, C6으로 도시한 바와 같이, 트랜잭션 관리 회로(36)가 SIEWrReq를 액티브 상태로 하면, C7로 도시한 바와 같이, 버퍼 관리 회로(50)는, CBW 어드레스 생성 회로(51)로부터의 AD0=a0을 Address로서 버퍼(60)로 출력함과 함께, C8로 도시한 바와 같이, xWR를 액티브 상태(L 레벨 상태)로 한다. 이에 따라, 버퍼(60)의 CBW 영역(61)의 a0을 선두 어드레스로 하여, C9로 도시한 바와 같이 CBW(SIEWrData)의 0∼3바이트가 기입된다. 그 후, C10으로 도시한 바와 같이 SIEWrAck가 액티브 상태로 되어, 트랜잭션 관리 회로(36)에 "확인"을 반환한다.
다음에, C11로 도시한 바와 같이 트랜잭션 관리 회로(36)가 SIEWrReq를 액티브 상태로 하면, C12, C13으로 도시한 바와 같이, 버퍼 관리 회로(50)는, AD0=a0+4를 Address로서 버퍼(60)로 출력함과 함께 xWR을 액티브 상태로 한다. 이에 따라, CBW 영역(61)의 a0+4를 선두 어드레스로 하여, C14로 도시한 바와 같이 CBW(SIEWrData)의 4∼7바이트가 기입된다. 그 후, C15로 도시한 바와 같이 SIEWrAck가 액티브 상태로 되어, 트랜잭션 관리 회로(36)에 확인을 반환하게 된다.
이상과 같은 기입 처리를 반복함으로써, 도 13의 C16으로 도시한 바와 같이, CBW의 모든 0∼30바이트(합계 31바이트)가 CBW 영역(61)에 기입된다.
그리고, C17로 도시한 바와 같이 호스트에 ACK가 적정하게 반환되면, C18로 도시한 바와 같이 트랜잭션 관리 회로(36)가 TranEndPulse를 액티브 상태로 함과 함께, C19로 도시한 바와 같이 TranStatus를 Success로 설정하고, 트랜잭션이 성공한 것을 엔드 포인트 관리 회로(40)로 전달한다.
그렇게 하면, C20으로 도시한 바와 같이 엔드 포인트 EP1(도 10의 레지스터(43))의 EnCBW가 L 레벨(0)로 설정된다. 이에 따라, 엔드 포인트 관리 회로(40)는, C21로 도시한 바와 같이 EP1 영역(63)의 어드레스 AD2를 선택 지시하는 EPsel을, 버퍼 관리 회로(50)로 출력한다. 이 결과, 다음의 데이터 페이즈(도 5의 (a)의 B3 참조)에서는, 버퍼 관리 회로(50)의 셀렉터(56)는, EP1 영역(63)의 어드레스 AD2를, 버퍼(60)로 출력하는 Address로서 선택하게 된다.
이와 같이 본 실시예에서는, 커맨드 페이즈(제1 페이즈)의 데이터 전송에 대한 확인 ACK가 호스트로 반환되는 것을 조건으로(C17 참조), 엔드 포인트 EP1의 EnCBW가 L 레벨로 설정되고(C20 참조), 호스트로부터 엔드 포인트 EP1을 향해 전송되는 데이터의 기입 영역이, CBW 영역(61)(제1 기억 영역)으로부터 EP1 영역(63)(제2 기억 영역)으로 전환된다(C21 참조). 그리고, 데이터 페이즈에서는, 호스트로부터의 데이터는 전환 후의 EP1 영역(63)에 기입되게 된다.
이와 같이, ACK의 반환 유무에 따라서 영역 전환을 행하도록 하면, 오류가 없는 확실한 영역 전환을, 적은 처리 부하로 실현할 수 있게 된다.
2. 4. 2 데이터 길이의 에러, CRC 에러
도 14는 커맨드 페이즈에서 기입된 데이터 길이(CBW의 길이)에 에러가 있는 경우의 타이밍 파형도이다.
데이터 길이에 에러가 있는 경우(데이터 길이가 짧거나, 긴 경우)에는, 도 14의 D1로 도시한 바와 같이, 호스트에 ACK는 반환되지 않고, NAK가 반환된다. 그리고, 트랜잭션 관리 회로(36)는 엔드 포인트 관리 회로(40)에, D2로 도시한 바와 같이 데이터 길이에 에러가 있는 것을 나타내는 TranStatus를 출력한다. 그렇게 하면, 이 경우에는, 도 13의 C20의 경우와는 달리, 도 14의 D3으로 도시한 바와 같이 엔드 포인트 EP1의 EnCBW는 L레벨로 되지 않는다. 이 때문에, D4로 도시한 바와 같이 EPsel도 변화하지 않고, CBW 영역(61)으로부터 EP1 영역(63)에의 영역 전환은 행해지지 않는다. 또한, 데이터 길이에 에러가 있다는 것은, 호스트와 디바이스 사이에서 페이즈가 정합되지 않을 가능성이 있기 때문에, 이 엔드 포인트는 스톨된다.
도 15는, 커맨드 페이즈에서 CRC 에러가 생긴 경우의 타이밍 파형도이다.
CRC 에러가 생긴 경우에는, 도 15의 E1로 도시한 바와 같이 호스트에 ACK는 반환되지 않는다. 그리고, 트랜잭션 관리 회로(36)는 엔드 포인트 관리 회로(40)에, E2로 도시한 바와 같이 CRC 에러를 나타내는 TranStatus를 출력한다. 그렇게 하면, 이 경우에는, 도 13의 C20의 경우와는 달리, 도 15의 E3으로 도시한 바와 같이 엔드 포인트 EP1의 EnCBW는 L 레벨로 되지 않는다. 이 때문에, E4로 도시한 바와 같이 EPsel도 변화하지 않고, CBW 영역(61)으로부터 EP1 영역(63)으로의 영역 전환은 행해지지 않는다. 이 결과, ACK를 수취하지 않은 호스트가 재시도 처리를 행하고, CBW가 재전송되어 온 경우에는, 그 CBW는 EP1 영역(63)이 아니라 CBW 영역(61)에 기입되게 된다. 이에 따라 적정한 데이터 전송 처리를 실현할 수 있다.
2. 4. 3 토글 미스
도 16은, 커맨드 페이즈에서 토글 미스가 생긴 경우의 타이밍 파형도이다.
우선, 토글 미스에 대하여 도 17의 (a), 도 17의 (b)를 참조하여 설명한다.
USB에서는, 호스트와 디바이스 사이에서 트랜잭션의 시퀀스를 동기화하기 위해서, 도 17의 (a)에 도시한 바와 같이, 데이터의 PID로서 DATA0 및 DATA1을 준비함과 함께, 호스트 및 디바이스에 토글 비트(호스트와 디바이스 사이에서 트랜잭션의 시퀀스를 동기화하기 위한 비트)를 갖게 하고 있다.
그리고 도 17의 (a)에 도시한 바와 같이, 호스트 및 디바이스는, 트랜잭션이 성공하였다고 판단하는 것을 조건으로, 데이터의 PID에 포함되는 DATA0 및 DATA1과 토글 비트를 토글시킨다.
예를 들면 도 17의 (a)의 G1로 도시한 바와 같이, 호스트는, 송신한 데이터(DATA1)에 대하여 ACK가 적정하게 반환되어 오면, 트랜잭션은 성공하였다고 판단하여, 호스트측의 토글 비트를 토글시킨다.
또한, G2로 도시한 바와 같이, 디바이스는, 다음에 오게 될 데이터(PID= DATA1)가 호스트로부터 전송되고, ACK를 호스트로 반환하면, 트랜잭션은 성공하였다고 판단하여, 디바이스측의 토글 비트를 토글시킨다.
한편, 도 17의 (b)의 G3으로 도시한 바와 같이, 호스트는, 송신한 데이터(PID=DATA1)에 대하여 ACK가 적정하게 반환되지 않은 경우에는, 트랜잭션은 실패라고 판단하여, 호스트측의 토글 비트를 토글시키지 않는다. 그리고, G4로 도시한 바와 같이, PID=DATA1의 데이터를 디바이스로 다시 보낸다.
그렇게 하면, G5로 도시한 바와 같이, 디바이스는, PID=DATA0의 데이터를 대기하고 있는데, PID=DATA1의 데이터가 전송되어 왔기 때문에, 토글 미스라고 판단하여, 디바이스측의 토글 비트를 토글시키지 않는다. 그리고, 이 경우에 디바이스는, 이 PID=DATA1의 데이터를 파기함과 함께, 호스트에 ACK를 반환한다. 이와 같이 함으로써, 호스트와 디바이스 사이에서 트랜잭션의 연속성을 확보할 수 있게 된다.
본 실시예에서는, 이러한 토글 미스가 발생한 경우에는, 호스트에 확인 ACK를 반환하여도, CBW 영역(61)으로부터 EP1 영역(63)으로의 영역 전환은 행하지 않도록 한다.
즉, 토글 미스인 경우에는, 도 16의 F1로 도시한 바와 같이 호스트에 ACK를 반환한다. 그리고, 트랜잭션 관리 회로(36)는 엔드 포인트 관리 회로(40)에, F2로 도시한 바와 같이 토글 미스를 나타내는 TranStatus를 출력한다. 그렇게 하면, 이 경우에는, 도 16의 F3으로 도시한 바와 같이 엔드 포인트 EP1의 EnCBW는 L 레벨로 되지 않는다. 이 때문에, F4로 도시한 바와 같이 EPsel도 변화하지 않고, CBW 영역(61)으로부터 EP1 영역(63)으로의 영역 전환은 행해지지 않는다. 이에 따라, 토글 미스인 경우에도 적정한 데이터 전송 처리를 실현할 수 있다.
2. 5 비교예와 본 실시예의 비교
도 18의 (a)에 비교예(도 6의 (a)∼도 6의 (d))의 타이밍 파형도의 예를 도시하고, 도 18의 (b)에 본 실시예의 타이밍 파형도의 예를 도시한다. 도 18의 (a), 도 18의 (b)에서는 버퍼의 기억 영역이 더블 버퍼 구조인 경우의 타이밍 파형도이다.
예를 들면 도 18의 (a)의 비교예에서는, 커맨드 페이즈에서, H1로 도시한 바와 같이 호스트로부터의 CBW가 EP1용의 FIFO(도 6의 (a)의 600)에 기입된다. 이 때, FIFO가 더블 버퍼 구조인 경우에는, H2로 도시한 바와 같이 호스트로부터의 1개째의 OUT 데이터에 대해서는 FIFO에 기입할 수 있다. 그러나, 다음의 OUT 데이터에 대해서는 FIFO에 기입할 수 없기 때문에, H3으로 도시한 바와 같이, 호스트로부터의 다음의 OUT 데이터의 요구에 대해서는 NYET를 반환하게 된다.
그리고, 그 후에 H4로 도시한 바와 같이, 호스트가 빈 상태가 있는지를 조회하는 PING 패킷을 보내와도, H5로 도시한 바와 같이 디바이스는 NAK를 반환하게 된다. 즉, CPU의 커맨드 해석이 종료할 때까지, 디바이스는 호스트에 NAK를 계속해서 반환한다. 그리고, 커맨드 해석이 종료하여, FIFO에 빈 상태가 생기면, H6으로 도시한 바와 같이 호스트로부터 OUT 데이터를 받아들여, FIFO에 기입할 수 있게 된다.
이에 비하여 본 실시예에서는 도 18의 (b)의 H7로 도시한 바와 같이 CBW 영역에 CBW가 기입되고, 적정하게 ACK가 반환되면, H8로 도시한 바와 같이, EnCBW가 L 레벨로 된다(도 13의 C20 참조). 그렇게 하면, 도 7의 (b)에서 설명한 바와 같이, CBW 영역으로부터 EP1 영역으로의 전환이 행해져서, 엔드 포인트 EP1은 EP1 영역에 접속되게 된다.
따라서, H9로 도시한 바와 같이 데이터 페이즈에서의 호스트로부터의 OUT 데이터를, 이 EP1 영역에 기입할 수 있어, 호스트에 ACK를 반환할 수 있다. 그리고, H10으로 도시한 바와 같이 커맨드 해석이 종료하면, H11로 도시한 바와 같이, 그 후에는 EP1 영역을 이용하여 후단의 하드디스크 드라이브 등과의 사이에서 DMA 전송을 개시할 수 있게 되어, USB로부터의 데이터를 효율적으로 전송할 수 있게 된다.
이와 같이 본 실시예에서는, 데이터의 DMA 전송을 비교예에 비하여 일찍 개시할 수 있게 되므로, 버스 대역의 손실을 최소한으로 억제할 수 있어, 비교예에 비하여 실효적인 데이터 전송 속도를 향상시킬 수 있게 된다.
도 19의 (a)에 비교예의 경우의 펌웨어(CPU)의 처리의 흐름도를 도시하고, 도 19의 (b)에 본 실시예의 경우의 펌웨어의 처리의 흐름도를 도시한다.
도 19의 (a)의 비교예에서는, 펌웨어는, 우선, OUT 트랜잭션이 완료하였는지를 판단한다(단계 S1). 즉, 도 18의 (a)의 H1의 ACK가 디바이스로부터 반환되는 것을 대기한다.
그리고, OUT 트랜잭션이 완료하였다고 판단한 경우에는, 펌웨어는, EP1용의 FIFO으로부터 CBW를 판독한다(단계 S2). 그리고, 데이터 길이가 31바이트인지(데이터 길이가 적정한지)를 판단하여(단계 S3), 31바이트인 경우에는 커맨드 해석을 행하고(단계 S4), 커맨드 처리로 이행한다(단계 S5). 한편, 31바이트가 아닌 경우에는, 에러 처리로 이행한다(단계 S6).
도 19의 (b)의 본 실시예에서는, 펌웨어는, 우선, 도 18의 (b)의 H7로 도시한 CBW의 트랜잭션(CBW 영역으로의 기입)이 적정하게 완료하였는지를 판단한다(단계 S11). 그리고, CBW의 트랜잭션이 완료하지 않은 경우에는, CBW 에러인지를 판단하여(단계 S12), CBW 에러인 경우에는 에러 처리로 이행한다(단계 S16). 한편, CBW 에러가 아닌 경우에는 단계 S11로 되돌아가, CBW의 트랜잭션의 완료를 대기한다.
예를 들면 도 14의 데이터 길이 에러인 경우에는, CBW 에러라고 판단되어, 단계 S16의 에러 처리로 이행한다. 한편, 도 16의 토글 미스인 경우에는, CBW 에러라고는 판단되지 않고, 단계 S12로부터 단계 S11로 되돌아간다.
한편, 도 13의 데이터 전송 성공인 경우에는, CBW의 트랜잭션이 완료하였다고 판단되어, EnCBW가 L 레벨로 된다. 그리고, 펌웨어는, CBW 영역으로부터 CBW를 판독하여(단계 S13), 커맨드 해석을 행하고(단계 S14), 커맨드 처리로 이행한다(단계 S15). 이 경우에, 도 8의 (a), 도 8의 (b)에서 설명한 바와 같이, 본 실시예에서는 CBW 영역이 랜덤 액세스 가능하게 설정되어 있기 때문에, 비교예에 비하여 커맨드 해석을 조기에 종료시키는 것이 가능하게 되어, 조기에 DMA 전송으로 이행할 수 있다.
3. 전자 기기
다음에, 본 실시예의 데이터 전송 제어 장치를 포함하는 전자 기기의 예에 대하여 설명한다.
예를 들면 도 20의 (a)에 전자 기기의 일종인 프린터의 내부 블록도를 도시하고, 도 21의 (a)에 그 외관도를 도시한다. CPU(마이크로 컴퓨터)(510)는 시스템 전체의 제어 등을 행한다. 조작부(511)는 프린터를 사용자가 조작하기 위한 것이다. ROM(516)에는, 제어 프로그램, 폰트 등이 저장되며, RAM(517)은 CPU(510)의 워크 영역으로서 기능한다. DMAC(518)는 CPU(510)를 통하지 않고서 데이터 전송을 행하기 위한 DMA 컨트롤러이다. 표시 패널(519)은 프린터의 동작 상태를 사용자에게 알리기 위한 것이다.
USB를 통해 퍼스널 컴퓨터 등의 다른 디바이스로부터 전송된 직렬의 프린트 데이터는, 데이터 전송 제어 장치(500)에 의해 병렬 프린트 데이터로 변환된다. 그리고, 변환 후의 병렬 프린트 데이터는, CPU(510) 또는 DMAC(518)에 의해 프린트 처리부(프린터 엔진)(512)로 전송된다. 그리고, 프린트 처리부(512)에서 병렬 프린트 데이터에 대하여 소정의 처리가 행해지고, 프린트 헤더 등으로 이루어지는 프린트부(데이터의 출력 처리를 행하는 장치: 514)에 의해 종이에 프린트되어 출력된다.
도 20의 (b)에 전자 기기의 일종인 스캐너의 내부 블록도를 도시하고, 도 21의 (b)에 그 외관도를 도시한다. CPU(520)는 시스템 전체의 제어 등을 행한다. 조작부(521)는 스캐너를 사용자가 조작하기 위한 것이다. ROM(526)에는 제어 프로그램 등이 저장되며, RAM(527)은 CPU(520)의 워크 영역으로서 기능한다. DMAC(528)는 DMA 컨트롤러이다.
광원, 광전 변환기 등으로 이루어지는 화상 판독부(데이터의 입력 처리를 행하는 장치)(522)에 의해 원고의 화상이 판독되고, 판독된 화상의 데이터는 화상 처리부(스캐너 엔진)(524)에 의해 처리된다. 그리고, 처리 후의 화상 데이터는, CPU(520) 또는 DMAC(528)에 의해 데이터 전송 제어 장치(500)로 전송된다. 데이터 전송 제어 장치(500)는, 이 병렬의 화상 데이터를 직렬 데이터로 변환하여, USB를 통해 퍼스널 컴퓨터 등의 다른 디바이스로 송신한다.
도 20의 (c)에 전자 기기의 일종인 CD-RW 드라이브의 내부 블록도를 도시하고, 도 21의 (c)에 그 외관도를 도시한다. CPU(530)는 시스템 전체의 제어 등을 행한다. 조작부(531)는 CD-RW를 사용자가 조작하기 위한 것이다. ROM(536)에는 제어 프로그램 등이 저장되며, RAM(537)은 CPU(530)의 워크 영역으로서 기능한다. DMAC(538)는 DMA 컨트롤러이다.
레이저, 모터, 광학계 등으로 이루어지는 판독 및 기입부(데이터의 입력 처리를 행하는 장치 또는 데이터의 기억 처리를 행하기 위한 장치)(533)에 의해 CD-RW(532)로부터 판독된 데이터는, 신호 처리부(534)에 입력되어, 에러 정정 처리 등의 소정의 신호 처리가 행해진다. 그리고, 신호 처리가 행해진 데이터는 CPU(530) 또는 DMAC(538)에 의해 데이터 전송 제어 장치(500)로 전송된다. 데이터 전송 제어 장치(500)는, 이 병렬의 데이터를 직렬 데이터로 변환하여, USB를 통해 퍼스널 컴퓨터 등의 다른 디바이스로 송신한다.
한편, USB를 통해 다른 디바이스로부터 전송되어 온 직렬 데이터는, 데이터 전송 제어 장치(500)에 의해 병렬 데이터로 변환된다. 그리고, 이 병렬 데이터는, CPU(530) 또는 DMAC(538)에 의해 신호 처리부(534)로 전송된다. 그리고, 신호 처리부(534)에서 이 병렬 데이터에 대하여 소정의 신호 처리가 행해지며, 판독 및 기입부(533)에 의해 CD-RW(532)에 기억된다.
또한, 도 20의 (a), 도 20의 (b), 도 20의 (c)에서, CPU(510, 520, 530) 외에, 데이터 전송 제어 장치(500)에서의 데이터 전송 제어를 위한 CPU를 별도로 설치하여도 된다.
본 실시예의 데이터 전송 제어 장치를 전자 기기에 이용하면, USB2.0에서의 HS 모드에서의 데이터 전송을 적정하게 행하는 것이 가능하게 된다. 따라서, 사용자가 퍼스널 컴퓨터 등으로 프린트 아웃의 지시를 행한 경우에, 적은 타임 러그로 프린트가 완료된다. 또한, 스캐너로의 화상 입력의 지시 후에, 적은 타임 러그로 판독 화상을, 사용자는 볼 수 있게 된다. 또한, CD-RW로부터의 데이터의 판독이나, CD-RW에의 데이터의 기입을 고속으로 행할 수 있게 된다.
또한, 본 실시예의 데이터 전송 제어 장치를 전자 기기에 이용하면, 제조 비용이 염가인 통상의 반도체 프로세스에서도, HS 모드에서의 데이터 전송이 가능한 데이터 전송 제어 장치를 제조할 수 있게 된다. 따라서, 데이터 전송 제어 장치의 저비용화를 도모하여, 전자 기기의 저비용화도 도모할 수 있게 된다. 또한, 데이터 전송의 신뢰성을 향상할 수 있어, 전자 기기의 신뢰성도 향상할 수 있게 된다.
또한 본 실시예의 데이터 전송 제어 장치를 전자 기기에 이용하면, CPU 상에서 동작하는 펌웨어의 처리 부하가 경감되어, 염가의 CPU를 이용하는 것이 가능하게 된다. 또한, 데이터 전송 제어 장치의 저비용화, 소규모화를 도모할 수 있기 때문에, 전자 기기의 저비용화, 소규모화도 도모할 수 있게 된다.
또한, 본 실시예의 데이터 전송 제어 장치를 적용할 수 있는 전자 기기로서는, 상기 이외에도 예를 들면, 다양한 광 디스크 드라이브(CD-ROM, DVD), 광 자기 디스크 드라이브(MO), 하드디스크 드라이브, TV, VTR, 비디오 카메라, 오디오 기기, 전화기, 프로젝터, 퍼스널 컴퓨터, 전자 수첩, 워드 프로세서 등 다양한 것을 고려할 수 있다.
또한, 본 발명은 본 실시예에 한정되지 않고, 본 발명의 요지의 범위 내에서 다양하게 변형하여 실시할 수 있다.
예를 들면, 본 발명의 데이터 전송 제어 장치의 구성은, 도 9, 도 10, 도 11에 도시한 구성에 한정되는 것이 아니라, 다양하게 변형하여 실시할 수 있다.
또한, 본 실시예에서는, 제1 기억 영역이 CBW 영역(커맨드 기억 영역)이며, 제2 기억 영역이 EP1 영역(데이터 기억 영역)인 경우에 대하여 설명하였지만, 본 발명은 이것에 한정되지 않는다. 즉, 제1, 제2 기억 영역에 기억되는 정보의 종류는 임의이다. 또한, 엔드 포인트로 설정되는 정보의 수는 3 이상이어도 되며, 정보의 종류도 임의이다.
또한, 본 실시예에서는 USB의 Bulk-Only 사양으로의 적용 예를 설명하였지만, 본 발명의 적용이, USB의 Bulk-Only 사양에 한정되는 것은 아니다.
또한, 제1, 제2 기억 영역의 전환 방법도, 도 7의 (a)∼도 19의 (b)에서 상세히 설명한 방법에 한정되지 않고, 다양하게 변형하여 실시할 수 있다.
또한, 본 발명은 USB2.0에서의 데이터 전송에 적용되는 것이 특히 바람직하지만, 이것에 한정되는 것은 아니다. 예를 들면 USB2.0과 마찬가지의 사상에 기초한 규격이나 USB2.0을 발전시킨 규격에서의 데이터 전송에도 본 발명은 적용할 수 있다.
본 발명에 따르면, 데이터 전송 제어 장치의 데이터 전송을 제어하는 처리 수단(펌웨어 등)의 처리 부하를 경감시킬 수 있기 때문에, 전자 기기의 저비용화, 소규모화 등을 도모할 수 있다.
도 1의 (a), 도 1의 (b), 도 1의 (c), 도 1의 (d)는 USB의 엔드 포인트와 트랜잭션 구성에 대하여 설명하기 위한 도면.
도 2의 (a), 도 2의 (b)는 CBI 사양과 Bulk-Only 사양에 대하여 설명하기 위한 도면.
도 3은 CBW의 포맷에 대하여 도시한 도면.
도 4는 CSW의 포맷에 대하여 도시한 도면.
도 5의 (a), 도 5의 (b)는 Bulk-Only에서의 데이터의 기입 처리, 판독 처리에 대하여 설명하기 위한 도면.
도 6의 (a), 도 6의 (b), 도 6의 (c), 도 6의 (d)는 비교예의 방법에 대하여 설명하기 위한 도면.
도 7의 (a), 도 7의 (b), 도 7의 (c)는 본 실시예의 방법에 대하여 설명하기 위한 도면.
도 8의 (a), 도 8의 (b)는 CBW 영역을 랜덤 액세스 가능하게 설정하는 방법의 이점에 대하여 설명하기 위한 도면.
도 9는 본 실시예의 데이터 전송 제어 장치의 구성예를 도시한 도면.
도 10은 트랜잭션 관리 회로, 엔드 포인트 관리 회로, 버퍼 관리 회로, 버퍼의 상세한 구성의 일례를 도시한 도면.
도 11은 트랜잭션 관리 회로, 엔드 포인트 관리 회로, 버퍼 관리 회로, 버퍼의 상세한 구성의 다른 예를 도시한 도면.
도 12는 커맨드 페이즈 개시 시의 본 실시예의 동작에 대하여 설명하기 위한 타이밍 파형도.
도 13은 데이터 전송 성공인 경우의 본 실시예의 동작에 대하여 설명하기 위한 타이밍 파형도.
도 14는 데이터 길이 에러인 경우의 본 실시예의 동작에 대하여 설명하기 위한 타이밍 파형도.
도 15는 CRC 에러인 경우의 본 실시예의 동작에 대하여 설명하기 위한 타이밍 파형도.
도 16은 토글 미스인 경우의 본 실시예의 동작에 대하여 설명하기 위한 타이밍 파형도.
도 17의 (a), 도 17의 (b)는 토글 비트와 토글 미스에 대하여 설명하기 위한 도면.
도 18의 (a), 도 18의 (b)는 비교예와 본 실시예의 타이밍 파형도.
도 19의 (a), 도 19의 (b)는 비교예와 본 실시예에서의 펌웨어 처리를 도시한 흐름도.
도 20의 (a), 도 20의 (b), 도 20의 (c)는 다양한 전자 기기의 내부 블록도의 예.
도 21의 (a), 도 21의 (b), 도 21의 (c)는 다양한 전자 기기의 외관도의 예.
〈도면의 주요 부분에 대한 부호의 설명〉
10, 63 : EP1 영역(제2 기억 영역)
12, 61 : CBW 영역(제1 기억 영역)
SW : 스위치(전환 수단)
20 : 트랜시버 매크로
22 : 트랜시버 회로
24 : 클럭 생성 회로
30 : SIE
32 : 패킷 핸들러 회로
33 : CRC 처리 회로
34 : 중단 및 재개 제어 회로
36 : 트랜잭션 관리 회로
40 : 엔드 포인트 관리 회로
50 : 버퍼 관리 회로
56, 57 : 셀렉터
60 : 버퍼
70 : 벌크 전송 관리 회로
80 : DMAC
82 : DMA 카운터

Claims (13)

  1. 버스를 통한 데이터 전송을 위한 데이터 전송 제어 장치에 있어서,
    하나의 엔드 포인트를 통해 전송되는 정보로서 제1, 제2 정보를 포함하는 복수 종류의 정보가 할당되어 있는 경우에, 제1 정보용의 제1 기억 영역과 제2 정보용의 제2 기억 영역이 하나의 엔드 포인트에 대응하여 준비되는 버퍼와,
    버스를 통해 제1 정보가 전송되는 제1 페이즈에서는, 호스트로부터 엔드 포인트를 향해 전송되는 정보를 제1 정보용의 상기 제1 기억 영역에 기입하고, 버스를 통해 제2 정보가 전송되는 제2 페이즈에서는, 호스트로부터 엔드 포인트를 향해 전송되는 정보를 제2 정보용의 상기 제2 기억 영역에 기입하는 버퍼 관리 회로
    를 포함하고,
    상기 제1 정보는 상기 제2 정보를 전송 제어하기 위한 정보이고, 제1 버스로부터 수신한 상기 제2 정보는 데이터 전송 제어 장치를 통해 제2 버스에 전송되며, 상기 제2 정보용으로 준비된 상기 제2 기억 영역은, 먼저 입력된 정보가 먼저 출력되는 영역으로 설정되어 있는 것을 특징으로 하는 데이터 전송 제어 장치
  2. 제1항에 있어서,
    상기 제1 페이즈의 데이터 전송에 대한 확인이 호스트로 반환되는 것을 조건으로, 호스트로부터 엔드 포인트를 향해 전송되는 정보의 기입 영역은, 상기 제1 기억 영역으로부터 상기 제2 기억 영역으로 전환되는 것을 특징으로 하는 데이터 전송 제어 장치.
  3. 제2항에 있어서,
    호스트와의 사이에서 트랜잭션의 시퀀스를 동기화하기 위한 데이터 토글 비트에 에러가 생긴 경우에는, 확인이 호스트로 반환되는 경우에도, 상기 제1 기억 영역으로부터 상기 제2 기억 영역으로의 전환을 행하지 않는 것을 특징으로 하는 데이터 전송 제어 장치.
  4. 제1항에 있어서,
    상기 제1 정보는 커맨드 블록의 패킷이고,
    상기 제2 정보는 상기 커맨드 블록의 지시에 의해 전송되는 데이터의 패킷인 것을 특징으로 하는 데이터 전송 제어 장치.
  5. 제4항에 있어서,
    처리 수단이 상기 커맨드 블록의 패킷을 해석하고 있는 사이에, 데이터의 패킷이 상기 제2 기억 영역에 기입되는 것을 특징으로 하는 데이터 전송 제어 장치.
  6. 제1항에 있어서,
    USB(Universal Serial Bus)의 규격에 준거한 데이터 전송을 행하는 것을 특징으로 하는 데이터 전송 제어 장치.
  7. 버스를 통한 데이터 전송을 위한 데이터 전송 제어 장치에 있어서,
    하나의 엔드 포인트를 통해 전송되는 정보로서 커맨드 블록의 패킷과 데이터의 패킷이 할당되어 있는 경우에, 커맨드 블록용의 커맨드 기억 영역과 데이터용의 데이터 기억 영역이 하나의 엔드 포인트에 대응하여 준비되는 버퍼와,
    버스를 통해 커맨드 블록의 패킷이 전송되는 커맨드 페이즈로부터, 버스를 통해 데이터의 패킷이 전송되는 데이터 페이즈로 전환한 경우에, 정보의 기입 영역을 커맨드 블록용의 상기 커맨드 기억 영역으로부터 데이터용의 데이터 기억 영역으로 전환하고, 호스트로부터 엔드 포인트를 향해 전송되는 데이터의 패킷을 상기 데이터 기억 영역에 기입하는 버퍼 관리 회로
    를 포함하고,
    상기 커맨드 블록은 상기 데이터를 전송 제어하기 위한 정보이고, 제1 버스로부터 수신한 상기 데이터는 데이터 전송 제어 장치를 통해 제2 버스에 전송되며,
    상기 데이터용의 데이터 기억 영역은, 먼저 입력된 정보가 먼저 출력되는 영역으로 설정되어 있는 것을 특징으로 하는 데이터 전송 제어 장치.
  8. 제7항에 있어서,
    USB(Universal Serial Bus)의 규격에 준거한 데이터 전송을 행하는 것을 특징으로 하는 데이터 전송 제어 장치.
  9. 제1항 내지 제8항 중 어느 한 항에 기재된 데이터 전송 제어 장치와,
    상기 데이터 전송 제어 장치 및 버스를 통해 전송되는 데이터의 출력 처리,입력 처리 또는 기억 처리를 행하는 장치
    를 포함하는 것을 특징으로 하는 전자 기기.
  10. 버스를 통한 데이터 전송을 위한 데이터 전송 제어 방법에 있어서,
    하나의 엔드 포인트를 통해 전송되는 정보로서 제1, 제2 정보를 포함하는 복수 종류의 정보가 할당되어 있는 경우에, 제1 정보용의 제1 기억 영역과 제2 정보용의 제2 기억 영역을, 하나의 엔드 포인트에 대응하여 버퍼 상에 준비하는 과정과,
    버스를 통해 제1 정보가 전송되는 제1 페이즈에서는, 호스트로부터 엔드 포인트를 향해 전송되는 정보를 제1 정보용의 상기 제1 기억 영역에 기입하고, 버스를 통해 제2 정보가 전송되는 제2 페이즈에서는, 호스트로부터 엔드 포인트를 향해 전송되는 정보를 제2 정보용의 상기 제2 기억 영역에 기입하는 과정
    을 포함하고,
    상기 제1 정보는 상기 제2 정보를 전송 제어하기 위한 정보이고, 제1 버스로부터 수신한 상기 제2 정보는 데이터 전송 제어 장치를 통해 제2 버스에 전송되며, 상기 제2 정보용으로 준비된 상기 제2 기억 영역을, 먼저 입력된 정보가 먼저 출력되는 영역으로 설정하는 것을 특징으로 하는 데이터 전송 제어 방법.
  11. 제10항에 있어서,
    상기 제1 페이즈의 데이터 전송에 대한 확인이 호스트로 반환되는 것을 조건으로, 호스트로부터 엔드 포인트를 향해 전송되는 정보의 기입 영역을, 상기 제1 기억 영역으로부터 상기 제2 기억 영역으로 전환하는 것을 특징으로 하는 데이터 전송 제어 방법.
  12. 제10항 또는 제11항에 있어서,
    상기 제1 정보는 커맨드 블록의 패킷이고,
    상기 제2 정보는 상기 커맨드 블록의 지시에 의해 전송되는 데이터의 패킷인 것을 특징으로 하는 데이터 전송 제어 방법.
  13. 버스를 통한 데이터 전송을 위한 데이터 전송 제어 방법에 있어서,
    하나의 엔드 포인트를 통해 전송되는 정보로서 커맨드 블록의 패킷과 데이터의 패킷이 할당되어 있는 경우에, 커맨드 블록용의 커맨드 기억 영역과 데이터용의 데이터 기억 영역을, 하나의 엔드 포인트에 대응하여 버퍼 상에 준비하는 과정과,
    상기 데이터용의 데이터 기억 영역을 먼저 입력된 정보가 먼저 출력되는 영역으로 설정하는 과정과,
    버스를 통해 커맨드 블록의 패킷이 전송되는 커맨드 페이즈로부터, 버스를 통해 데이터의 패킷이 전송되는 데이터 페이즈로 전환한 경우에, 정보의 기입 영역을 커맨드 블록용의 상기 커맨드 기억 영역으로부터 데이터용의 데이터 기억 영역으로 전환하고, 호스트로부터 엔드 포인트를 향해 전송되는 데이터의 패킷을 상기 데이터 기억 영역에 기입하는 과정
    을 포함하는 것을 특징으로 하는 데이터 전송 제어 방법.
KR10-2004-0087911A 2001-05-14 2004-11-01 데이터 전송 제어 장치, 전자 기기 및 데이터 전송 제어방법 KR100485294B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2001143429A JP3680762B2 (ja) 2001-05-14 2001-05-14 データ転送制御装置及び電子機器
JPJP-P-2001-00143429 2001-05-14

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0025895A Division KR100474220B1 (ko) 2001-05-14 2002-05-10 데이터 전송 제어 장치, 전자 기기 및 데이터 전송 제어방법

Publications (2)

Publication Number Publication Date
KR20040103831A KR20040103831A (ko) 2004-12-09
KR100485294B1 true KR100485294B1 (ko) 2005-04-27

Family

ID=18989582

Family Applications (2)

Application Number Title Priority Date Filing Date
KR10-2002-0025895A KR100474220B1 (ko) 2001-05-14 2002-05-10 데이터 전송 제어 장치, 전자 기기 및 데이터 전송 제어방법
KR10-2004-0087911A KR100485294B1 (ko) 2001-05-14 2004-11-01 데이터 전송 제어 장치, 전자 기기 및 데이터 전송 제어방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR10-2002-0025895A KR100474220B1 (ko) 2001-05-14 2002-05-10 데이터 전송 제어 장치, 전자 기기 및 데이터 전송 제어방법

Country Status (8)

Country Link
US (1) US7051124B2 (ko)
EP (1) EP1260909B1 (ko)
JP (1) JP3680762B2 (ko)
KR (2) KR100474220B1 (ko)
CN (1) CN100351816C (ko)
AT (1) ATE303632T1 (ko)
DE (1) DE60205809T2 (ko)
TW (1) TWI256551B (ko)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3680763B2 (ja) * 2001-05-14 2005-08-10 セイコーエプソン株式会社 データ転送制御装置及び電子機器
JP3955512B2 (ja) * 2002-08-27 2007-08-08 富士通株式会社 データ処理装置及びパケット判別方法
US6993619B2 (en) 2003-03-28 2006-01-31 International Business Machines Corporation Single request data transfer regardless of size and alignment
JP4063200B2 (ja) 2003-11-18 2008-03-19 セイコーエプソン株式会社 データ転送制御装置、及び電子機器
JP3979381B2 (ja) * 2003-11-18 2007-09-19 セイコーエプソン株式会社 データ転送制御装置、及び電子機器
JP4412191B2 (ja) 2005-02-04 2010-02-10 セイコーエプソン株式会社 データ転送制御装置及び電子機器
US7640378B2 (en) * 2005-03-11 2009-12-29 Icron Technologies Corporation Method and apparatus for improving the performance of USB mass storage devices in the presence of long transmission delays
JP4601467B2 (ja) * 2005-03-16 2010-12-22 三洋電機株式会社 記録装置、記録システム及びデータ記録方法
JP4404023B2 (ja) * 2005-06-30 2010-01-27 セイコーエプソン株式会社 データ転送制御装置及び電子機器
JP4337783B2 (ja) 2005-06-30 2009-09-30 セイコーエプソン株式会社 データ転送制御装置及び電子機器
JP4442523B2 (ja) * 2005-06-30 2010-03-31 セイコーエプソン株式会社 データ転送制御装置及び電子機器
JP2007172574A (ja) 2005-11-25 2007-07-05 Seiko Epson Corp 集積回路装置及び電子機器
JP4391548B2 (ja) 2007-04-20 2009-12-24 株式会社メディアロジック デバイスドライバ
TW200945052A (en) * 2008-04-21 2009-11-01 Ralink Technology Corp Method for increasing USB transmission rate
KR101012208B1 (ko) * 2008-06-17 2011-02-08 주식회사 동부하이텍 Usb디바이스 내의 엔드 포인트 메모리 효율 증대법
US7818486B2 (en) * 2008-08-15 2010-10-19 Icron Technologies Corporation Method and apparatus for connecting USB devices to a remote computer
US20100306442A1 (en) * 2009-06-02 2010-12-02 International Business Machines Corporation Detecting lost and out of order posted write packets in a peripheral component interconnect (pci) express network
CN102023957B (zh) * 2009-09-18 2012-10-17 联芯科技有限公司 Usb接口模拟多串口传输数据的方法及usb复合设备
TWI450101B (zh) * 2010-09-21 2014-08-21 Insyde Software Corp 遠端資料傳輸方法及使用此方法的虛擬媒體系統
US8566934B2 (en) 2011-01-21 2013-10-22 Gigavation, Inc. Apparatus and method for enhancing security of data on a host computing device and a peripheral device
KR102195788B1 (ko) 2011-08-10 2020-12-28 기타 스리바스타바 호스트 컴퓨팅 디바이스와 주변기기의 데이터의 보안을 강화하기 위한 장치 및 방법
TW201331925A (zh) * 2012-01-19 2013-08-01 Sitronix Technology Corp 傳輸介面與傳輸方法及其驅動電路與顯示裝置及電子裝置
JP6065542B2 (ja) * 2012-11-26 2017-01-25 ブラザー工業株式会社 画像処理装置および通信プログラム
US9244694B2 (en) 2012-12-27 2016-01-26 Intel Corporation Executing a command within a transport mechanism based on a get and set architecture
CN107544936A (zh) * 2017-09-18 2018-01-05 珠海亿智电子科技有限公司 一种基于usb烧写的数据传输方法
CN108062281B (zh) * 2017-11-07 2020-06-30 珠海研果科技有限公司 一种解决大容量存储设备与pc端进行数据拷贝出现断线的方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5129072A (en) * 1989-03-08 1992-07-07 Hewlett-Packard Company System for minimizing initiator processor interrupts by protocol controller in a computer bus system
IL100127A0 (en) * 1991-03-11 1992-08-18 Future Domain Corp Scsi controller
JP2868141B2 (ja) * 1992-03-16 1999-03-10 株式会社日立製作所 ディスクアレイ装置
US5708668A (en) * 1992-05-06 1998-01-13 International Business Machines Corporation Method and apparatus for operating an array of storage devices
US5504868A (en) * 1994-03-01 1996-04-02 Adaptec, Incorporated SCSI command descriptor block parsing state machine
US5568443A (en) * 1995-09-08 1996-10-22 Smithills Multimedia Systems, Inc. Combination dual-port random access memory and multiple first-in-first-out (FIFO) buffer memories
US6185641B1 (en) 1997-05-01 2001-02-06 Standard Microsystems Corp. Dynamically allocating space in RAM shared between multiple USB endpoints and USB host
US5944797A (en) 1997-05-28 1999-08-31 International Business Machines Corporation Data mover hardware controlled processing in a commanding system and in a commanded system for controlling frame communications on a link
EP0893755B1 (de) 1997-07-21 2004-05-06 Infineon Technologies AG Pufferspeicheranordnung
EP0955575B1 (en) * 1997-11-25 2004-09-29 Seiko Epson Corporation Printer, control method therefor and recording medium
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
DE19900245B4 (de) * 1998-01-07 2005-09-15 National Semiconductor Corp.(N.D.Ges.D.Staates Delaware), Santa Clara Vorrichtung und Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host
US6145045A (en) 1998-01-07 2000-11-07 National Semiconductor Corporation System for sending and receiving data on a Universal Serial Bus (USB) using a memory shared among a number of end points
KR19990069859A (ko) * 1998-02-13 1999-09-06 구본준 유에스비의 피포
US6065087A (en) * 1998-05-21 2000-05-16 Hewlett-Packard Company Architecture for a high-performance network/bus multiplexer interconnecting a network and a bus that transport data using multiple protocols
US6192446B1 (en) * 1998-09-03 2001-02-20 Micron Technology, Inc. Memory device with command buffer
US6463498B1 (en) * 1998-10-30 2002-10-08 Agilent Technologies, Inc. Transmission of FCP response in the same loop tenancy as the FCP data with minimization of inter-sequence gap
CA2299550A1 (en) * 1999-03-31 2000-09-30 International Business Machines Corporation Dynamic i/o allocation in a partitioned computer system
JP3608441B2 (ja) 1999-07-15 2005-01-12 セイコーエプソン株式会社 データ転送制御装置及び電子機器
US6715055B1 (en) * 2001-10-15 2004-03-30 Advanced Micro Devices, Inc. Apparatus and method for allocating buffer space
US6834319B1 (en) * 2002-03-21 2004-12-21 Advanced Micro Devices, Inc. Tunnel device for an input/output node of a computer system

Also Published As

Publication number Publication date
DE60205809T2 (de) 2006-06-22
DE60205809D1 (de) 2005-10-06
KR100474220B1 (ko) 2005-03-08
EP1260909A3 (en) 2003-05-07
TWI256551B (en) 2006-06-11
CN1385794A (zh) 2002-12-18
ATE303632T1 (de) 2005-09-15
KR20020087861A (ko) 2002-11-23
JP3680762B2 (ja) 2005-08-10
EP1260909A2 (en) 2002-11-27
US20020167851A1 (en) 2002-11-14
US7051124B2 (en) 2006-05-23
EP1260909B1 (en) 2005-08-31
JP2002344537A (ja) 2002-11-29
CN100351816C (zh) 2007-11-28
KR20040103831A (ko) 2004-12-09

Similar Documents

Publication Publication Date Title
KR100485294B1 (ko) 데이터 전송 제어 장치, 전자 기기 및 데이터 전송 제어방법
KR100460650B1 (ko) 데이터 전송 제어 장치, 전자 기기 및 데이터 전송 제어방법
US7237047B2 (en) Data transfer control device, electronic equipment, and data transfer control method
JP3649226B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法
US7028109B2 (en) Data transfer control device including buffer controller with plurality of pipe regions allocated to plurality of endpoints
EP1389760B1 (en) Data transfer control system, program and data transfer control method
US7505461B2 (en) Data transfer control device, electronic instrument, and data transfer control method
US7469304B2 (en) Data transfer control device, electronic equipment, and method for a data transfer through a bus, the data transfer control device including a register and a packet buffer that are commonly used during a host operation and a peripheral operation
US20040017772A1 (en) Data transfer control device, electronic equipment, and data transfer control method
JP3636160B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法
KR100563418B1 (ko) 통신 컨트롤러 및 통신 방법
JP4127071B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP2004295594A (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP2003242096A (ja) Usbコントローラ

Legal Events

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

Payment date: 20130321

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140319

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160318

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee