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

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

Info

Publication number
KR100460650B1
KR100460650B1 KR10-2002-0025889A KR20020025889A KR100460650B1 KR 100460650 B1 KR100460650 B1 KR 100460650B1 KR 20020025889 A KR20020025889 A KR 20020025889A KR 100460650 B1 KR100460650 B1 KR 100460650B1
Authority
KR
South Korea
Prior art keywords
data
bus
storage area
data storage
buffer
Prior art date
Application number
KR10-2002-0025889A
Other languages
English (en)
Other versions
KR20020087859A (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 KR20020087859A publication Critical patent/KR20020087859A/ko
Application granted granted Critical
Publication of KR100460650B1 publication Critical patent/KR100460650B1/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
    • 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
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)
  • Small-Scale Networks (AREA)
  • Selective Calling Equipment (AREA)
  • Communication Control (AREA)

Abstract

USB(제1 버스)를 이용한 데이터 전송 제어 장치에 있어서, OUT 트랜잭션에서는 EBUS(제2 버스)를 통한 데이터 송신(DMA 전송)의 종료를 조건으로 데이터 페이즈(데이터 트랜스포트, 전체 데이터의 전송)가 종료하였다고 판단하고, IN 트랜잭션에서는 EBUS를 통한 데이터 수신이 종료하고, 또한 Empty 신호가 활성화되어 버퍼의 데이터 기억 영역이 비게 된 것을 조건으로, 데이터 페이즈가 종료하였다고 판단한다. 데이터 사이즈를 카운트하는 카운터를 EBUS측에 설치한다. EBUS를 통한 데이터 수신이 종료하고, 데이터 기억 영역의 잔여 데이터 사이즈가 최대 패킷 사이즈 미만인 경우에, 데이터 기억 영역의 쇼트 패킷을 USB를 통해 자동 송신하거나 쇼트 패킷의 존재를, 인터럽트를 이용하여 펌웨어에 알린다.

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의 (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은 본 실시예의 데이터 전송 제어 장치의 구성예를 나타내는 도면.
도 7은 본 실시예의 데이터 전송 제어 장치의 상세한 접속예를 나타내는 도면.
도 8의 (a), 도 8의 (b), 도 8의 (c), 도 8의 (d)는 OUT 트랜잭션, PING 트랜잭션에 대하여 설명하기 위한 타이밍 파형도.
도 9의 (a), 도 9의 (b), 도 9의 (c)는 IN 트랜잭션에 대하여 설명하기 위한 타이밍 파형도.
도 10은 HDD에의 송신 시의 DMA 전송에 대하여 설명하기 위한 타이밍 파형도.
도 11은 HDD로부터의 수신 시의 DMA 전송에 대하여 설명하기 위한 타이밍 파형도.
도 12는 OUT 트랜잭션(제1 방향의 데이터 전송)에서의 본 실시예의 동작에 대하여 설명하기 위한 타이밍 파형도.
도 13은 IN 트랜잭션(제2 방향의 데이터 전송)에서의 본 실시예의 동작에 대하여 설명하기 위한 타이밍 파형도.
도 14는 쇼트 패킷을 자동 송신하는 방법에 대하여 설명하기 위한 타이밍 파형도.
도 15는 본 실시예의 데이터 전송 제어 장치의 상세한 다른 접속예를 나타내는 도면.
도 16은 쇼트 패킷의 존재를 펌웨어에 통지하는 방법에 대하여 설명하기 위한 타이밍 파형도.
도 17의 (a), 도 17의 (b)는 비교예와 본 실시예의 펌웨어의 처리를 나타내는 흐름도.
도 18은 쇼트 패킷의 존재를 펌웨어에 통지하는 방법에서의 펌웨어의 처리를 나타내는 흐름도.
도 19의 (a), 도 19의 (b), 도 19의 (c)는 다양한 전자 기기의 내부 블록도의 예.
도 20의 (a), 도 20의 (b), 도 20의 (c)는 다양한 전자 기기의 외관도의 예.
<도면의 주요 부분에 대한 부호의 설명>
20 : 트랜시버 매크로
22 : 트랜시버 회로
24 : 클럭 생성 회로
30 : SIE
32 : 패킷 핸들러 회로
33 : CRC 처리 회로
34 : 중단 및 재개 제어 회로
36 : 트랜잭션 관리 회로
40 : 엔드 포인트 관리 회로
41 : 잔여 데이터 사이즈 카운터
50 : 버퍼 관리 회로
60 : 버퍼
62 : 데이터 기억 영역
70 : 벌크 전송 관리 회로
80 : DMAC
82 : DMA 카운터
상기 과제를 해결하기 위해서, 본 발명은 버스를 통한 데이터 전송을 위한 데이터 전송 제어 장치로서, 제1 방향의 데이터 전송에서는 제1 버스를 통해 수신되어 제2 버스를 통해 송신되는 데이터를 기억하고, 제2 방향의 데이터 전송에서는 제2 버스를 통해 수신되어 제1 버스를 통해 송신되는 데이터를 기억하는 데이터 기억 영역을 갖는 버퍼와, 상기 버퍼의 상기 데이터 기억 영역에의 데이터의 기입 및 상기 데이터 기억 영역으로부터의 데이터의 판독의 관리를 행하는 버퍼 관리 회로를 포함하고, 상기 제1 방향의 데이터 전송에서는 제2 버스를 통한 데이터 송신이 종료하는 것을 조건으로, 데이터 전송을 행하는 데이터 페이즈가 종료하였다고 판단하고, 상기 제2 방향의 데이터 전송에서는 제2 버스를 통한 데이터 수신이 종료하고 또한 상기 버퍼의 상기 데이터 기억 영역이 비게 된 것을 조건으로, 데이터 전송을 행하는 데이터 페이즈가 종료하였다고 판단하는 데이터 전송 제어 장치가 제공된다.
본 발명에 따르면, 제1 방향의 데이터 전송에서는 제2 버스를 통한 데이터 송신(예를 들면 DMA 전송)이 종료한 것을 조건으로, 데이터 페이즈(데이터 트랜스포트; 모든 데이터의 전송)가 종료하였다고 판단한다. 한편, 제2 방향의 데이터 전송에서는 제2 버스를 통한 데이터 수신이 종료하고, 그 후에 데이터 기억 영역이 비게 된 것을 조건으로, 데이터 페이즈가 종료하였다고 판단한다.
이와 같이 하면, 제2 버스측에서의 전송 데이터 사이즈(데이터 길이)를 체크하는 것만으로, 제1, 제2 방향의 데이터 전송의 양쪽에서 데이터 페이즈의 종료를 간단하게 판단할 수 있게 된다. 이에 따라, 회로 구성이나 회로 제어를 간소화할 수 있어, 데이터 전송 제어 장치를 제어하는 처리 수단의 처리 부하를 경감할 수 있다.
또한, 본 발명은 상기 제2 버스를 통해 송신 또는 수신되는 데이터의 사이즈를 카운트하는 카운터를 포함하여도 된다.
이러한 카운터를 설치함으로써, 제2 버스측에서의 전송 데이터 사이즈를 용이하게 체크할 수 있게 된다. 더욱이, 제1 버스측에 카운터를 설치하지 않아도 되기 때문에, 카운터의 제어를 간소화할 수 있다.
또한, 본 발명은 상기 제2 버스를 통한 데이터 수신의 스테이터스를 취득하고, 취득한 스테이터스를 데이터 페이즈의 종료 후의 스테이터스 페이즈에서, 상기 제1 버스를 통해 송신하여도 된다.
이와 같이 하면, 제2 버스를 통한 데이터 수신의 종료 후, 데이터 페이즈의 종료까지의 기간을 유효하게 이용하여, 스테이터스에 관한 처리를 행할 수 있게 되어, 실효적인 전송 속도를 향상시킬 수 있다.
또한, 본 발명은 상기 제2 버스를 통한 데이터 수신이 종료하고, 또한 상기 버퍼의 상기 데이터 기억 영역의 잔여 데이터 사이즈가 최대 패킷 사이즈 미만인 경우에는, 상기 데이터 기억 영역의 쇼트 패킷을 상기 제1 버스를 통해 자동 송신하여도 된다.
이와 같이 하면, 처리 수단이 개재되지 않고, 예를 들면 하드웨어에 의해 데이터 기억 영역의 쇼트 패킷을 자동으로 송신할 수 있게 된다. 이에 따라, 처리 수단의 처리 부하를 경감할 수 있고 실효적인 전송 속도를 향상시킬 수 있다.
또한 본 발명은, 상기 데이터 기억 영역의 쇼트 패킷의 자동 송신을 유효 또는 무효로 설정하는 수단을 포함하여도 된다.
이와 같이 하면, 쇼트 패킷의 자동 송신이 허용되는 디바이스와, 자동 송신이 허용되지 않은 디바이스의 양쪽에 대응할 수 있게 되어 데이터 전송 제어 장치의 범용성을 높일 수 있다.
또한 본 발명은, 상기 제2 버스를 통해 수신된 데이터에 소정의 정보가 부가되어 상기 제1 버스를 통해 송신되는 경우에는 상기 자동 송신이 무효로 설정되어도 된다.
이와 같이 하면, 제1 버스에 접속되는 호스트 등이 데이터 페이즈의 종료가 아님에도, 데이터 페이즈의 종료라고 오인식하는 사태를 효과적으로 방지할 수 있다.
또한 본 발명은, 상기 제2 버스를 통한 데이터 수신이 종료하고, 또한 상기 버퍼의 상기 데이터 기억 영역의 잔여 데이터 사이즈가 최대 패킷 사이즈 미만인 경우에는 상기 데이터 기억 영역에 쇼트 패킷이 존재하는 것을 처리 수단에 알려도된다.
이와 같이 하면, 상황에 따른 적절한 처리를 처리 수단이 행하는 것이 가능하게 되어, 예를 들면 쇼트 패킷의 자동 송신이 허용되지 않은 디바이스에서도 적절한 데이터 전송의 제어를 실현할 수 있다.
또한 본 발명은, 상기 데이터 기억 영역이 먼저 입력된 정보가 먼저 출력되는 기억 영역이어도 된다.
이와 같이, 데이터 기억 영역을 선입 선출의 기억 영역으로 설정함으로써, DMA(Direct Memory Access) 전송 등에서 효율적인 데이터 송수신을 실현할 수 있다.
또한 본 발명은, USB(Universal Serial Bus) 규격에 준거한 데이터 전송을 행하여도 된다.
단, 본 발명은 USB 이외의 규격(USB의 사상을 계승하는 규격)에 준거한 데이터 전송에 적용하는 것도 가능하다.
또한 본 발명에 따른 전자 기기는 상기한 어느 하나의 데이터 전송 제어 장치와, 상기 데이터 전송 제어 장치 및 버스를 통해 전송되는 데이터의 출력 처리 또는 취득 처리 또는 기억 처리를 행하는 장치를 포함하여도 된다.
본 발명에 따르면, 데이터 전송 제어 장치의 데이터 전송을 제어하는 처리 수단(펌웨어 등)의 처리 부하를 경감할 수 있기 때문에, 전자 기기의 저비용화, 소규모화 등을 도모할 수 있다.
<실시예>
이하, 본 실시예에 대하여 도면을 이용하여 상세히 설명한다.
이하에 설명하는 본 실시예는, 특허 청구 범위에 기재된 본 발명의 내용을 제한하지는 않는다. 또 본 실시예에서 설명되는 구성 전부가 본 발명의 해결 수단으로서 필수적인 것으로 제한되지 않는다.
1. USB
1. 1 데이터 전송 방법
우선, USB(USB2.0)의 데이터 전송 방법에 대하여 간단히 설명한다.
USB에서는 IEEE1394 등과는 달리, 데이터 전송의 주도권을 호스트가 갖고 있다. 즉, 데이터 전송의 트랜잭션을 기동하는 것은 호스트측이고, 데이터 전송에 관한 대부분의 제어는 호스트가 행한다. 이 때문에, 호스트의 처리 부하는 커지지만, 호스트가 되는 PC(퍼스널 컴퓨터) 등은 고속이고 고성능의 CPU(프로세서)를 갖기 때문에, 이와 같이 부하가 큰 처리도 크게 문제가 되지는 않는다.
한편, USB에서는, 디바이스(타깃)가 호스트로부터의 요구에 대하여 단순히 응하기만 하여도 되기 때문에, 디바이스측의 처리, 구성에 대해서는 간소화할 수 있다. 따라서, 디바이스측에서는 호스트와 같은 고성능이고 고속의 CPU를 사용할 필요가 없고 저가격의 CPU(마이크로 컴퓨터)를 사용할 수 있어 저비용화를 도모할 수 있다.
그런데, USB에서는 이러한 호스트 주도의 데이터 전송을 실현하기 위해서, 도 1의 (a)에 도시한 바와 같은 엔드 포인트(EP0 ∼ 15)가 디바이스측에 준비된다. 여기서, 엔드 포인트는 호스트와 디바이스 사이에서 데이터 전송을 행하기 위한 버퍼(FIFO)의 입구에 상당하는 것으로, USB에서의 데이터 전송은 전부 이 엔드 포인트를 경유하여 행해진다.
그리고, 이 엔드 포인트는 디바이스 어드레스와 엔드 포인트 번호에 의해 일의적으로 어드레스 지정할 수 있게 되어 있다. 즉 호스트는, 디바이스 어드레스와 엔드 포인트 번호를 지정함으로써, 원하는 엔드 포인트로의 데이터 송신이나 원하는 엔드 포인트로부터의 데이터 수신을 자유롭게 행할 수 있다.
또한, 엔드 포인트의 설정은 디바이스측의 임의이고, 엔드 포인트 번호의 할당이나 각 엔드 포인트에 할당되는 기억 영역의 데이터 사이즈 등은 열거(enumeration) 처리 시에 호스트가 알 수 있다.
또, USB에서는 데이터 전송의 타입으로서 컨트롤 전송, 등시성 전송, 인터럽트 전송, 벌크 전송이 존재한다.
여기서, 컨트롤 전송은 호스트와 디바이스(타깃) 사이에서 컨트롤 엔드 포인트를 통해 행해지는 제어용 전송 모드이다. 이 컨트롤 전송에 의해, 디바이스의 초기화를 위한 구성(configuration) 정보 등이 전송된다.
등시성 전송은 화상 데이터나 음성 데이터와 같이, 데이터의 정당성보다도 대역폭의 확보가 우선되는 데이터의 전송을 위해 준비된 전송 모드이다. 이 등시성 전송에서는 일정 주기로 일정량의 데이터를 전송할 수 있는 것이 보증되기 때문에, 데이터의 실시간성이 중요한 어플리케이션에 유효한 전송 모드가 된다.
인터럽트 전송은 비교적 낮은 전송 속도로 소량의 데이터를 전송하기 위해서 준비된 전송 모드이다.
벌크 전송은 비정기적으로 발생하는 대량의 데이터를 전송하기 위해서 준비된 전송 모드이다. 이 벌크 전송에는, 등시성 전송이나 인터럽트 전송에 의해 사용된 시간 이외의 빈 시간에서 데이터 전송이 행해짐과 함께, 데이터의 정당성이 체크된다. 따라서, 실시간성은 그다지 중요하지 않지만, 데이터의 신뢰성은, 확보하고자 하는 데이터의 전송에 유효한 전송 모드이다.
1. 2 트랜잭션 구성
도 1의 (b)에 도시한 바와 같이, USB의 벌크 전송에서의 트랜잭션은 기본적으로, 토큰 패킷, 데이터 패킷, 핸드셰이크 패킷이라는 3개의 패킷으로 구성된다. 등시성 전송인 경우에는 핸드셰이크 패킷은 불필요하게 된다.
여기서 토큰 패킷은 호스트가 디바이스(타깃)의 엔드 포인트의 판독이 기입을 요구하는 경우 등에 사용되는 패킷이다. 이 토큰 패킷은, 예를 들면 PID(OUT, IN, SOF, SETUP 등의 패킷 ID), ADDR(디바이스 어드레스), ENDP(엔드 포인트 번호), CRC(Cyclic Redundancy Check)의 필드를 갖는다.
또한, 데이터 패킷은 데이터의 실체(entity)를 보내기 위한 패킷으로, 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의 디바이스는 다양한 클래스로 분류된다. 그리고, 하드디스크 드라이브나 광 디스크 드라이브 등의 디바이스는, 매스 스토리지(mass storage)라는 클래스에 속하고, 이 매스 스토리지 클래스에는 전자 기기의 벤더 등에 의해 작성된 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 구성예
도 6에 본 실시예의 데이터 전송 제어 장치의 구성예를 나타낸다.
본 실시예의 데이터 전송 제어 장치는 트랜시버 매크로(20), SIE(30), 엔드 포인트 관리 회로(40), 버퍼 관리 회로(50), 버퍼(60), 벌크 전송 관리 회로(70), DMAC(80)를 포함한다. 본 발명의 데이터 전송 제어 장치는 도 6에 도시하는 회로 블록의 모두를 포함할 필요는 없고, 이들의 일부를 생략하는 구성으로 해도 된다.
여기서, 트랜시버 매크로(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 버스;DMA 버스)에서의 데이터 전송 속도의 속도차를 보상하는 기능 등을 갖는다. 또, EBUS는 하드디스크 드라이브나 CD 드라이브나 스캐너 등의 디바이스에 접속되는 외부 버스이다.
그리고 본 실시예에서는, 제1 방향의 데이터 전송(OUT 트랜잭션)에서는, USB(제1 버스)를 통해 수신되어 EBUS(제2 버스)를 통해 송신되는 데이터(OUT 데이터)를 기억하고, 제2 방향의 데이터 전송(IN 트랜잭션)에서는, EBUS를 통해 수신되어 USB를 통해 송신되는 데이터(IN 데이터)를 기억하는 데이터 기억 영역(62)(FIFO; FIFO 설정의 기억 영역)을 버퍼(60)가 갖는다.
그리고 본 실시예의 데이터 전송 제어 장치는, 제1 방향의 데이터 전송에서는 EBUS를 통한 데이터 송신이 종료한 것을 조건으로, 데이터 페이즈(데이터 트랜스포트; 전체 데이터의 전송)가 종료하였다고 판단한다. 한편, 제2 방향의 데이터 전송에서는 EBUS를 통한 데이터 수신이 종료하여, 버퍼(60)의 데이터 기억 영역(62)이 비게 된 것(최후의 데이터 패킷에 대한 확인이 USB를 통해 되돌아온 것)을 조건으로, 데이터 페이즈가 종료하였다고 판단한다.
또한 본 실시예의 데이터 전송 제어 장치는, EBUS를 통한 데이터 수신이 종료하고, 버퍼(60)의 데이터 기억 영역(62)(FIFO; FIFO 설정의 기억 영역)의 잔여 데이터 사이즈(데이터 길이, 전송수)가 최대 패킷 사이즈 미만인 경우에는, 데이터 기억 영역(62)의 쇼트 패킷(사이즈가 최대 패킷 사이즈 미만인 패킷)을 USB를 통해 자동 송신하거나 쇼트 패킷의 존재를 인터럽트 신호 등을 이용하여 CPU(펌웨어, 처리 수단)에 알리도록 하고 있다.
또한 본 실시예에서는, 하나의 엔드 포인트(도 2의 (b)의 EP1)를 통해 전송되는 정보로서, 커맨드 블록(제1 정보)과 데이터(제2 정보; OUT 데이터)가 할당되어 있는 경우에(도 2의 (b)의 A1, A2 참조), 커맨드 블록용 커맨드 기억 영역(제1 기억 영역)과 데이터용 데이터 기억 영역(제2 기억 영역)이 버퍼(60) 상에 준비(확보)된다.
그리고 버퍼 관리 회로(60)는 USB(제1 버스)를 통해 커맨드 블록이 전송되는 커맨드 페이즈(제1 페이즈)에서는 호스트로부터 엔드 포인트(EP1)로 전송되는 정보를 커맨드 블록용 커맨드 기억 영역에 기입하고, USB를 통해 데이터(OUT 데이터)가 전송되는 데이터 페이즈(제2 페이즈)에서는 호스트로부터 엔드 포인트로 전송되는 정보를 데이터용 데이터 기억 영역에 기입한다. 즉, 페이즈가 전환한 것을 조건으로, 정보(커맨드 블록, 데이터)의 기입 영역을 전환하고 있다.
또는 본 실시예에서는, 하나의 엔드 포인트(도 2의 (b)의 EP2)를 통해 전송되는 정보로서, 데이터(제3 정보; IN 데이터)와 스테이터스 블록(제4 정보)이 할당되어 있는 경우에(도 2의 (b)의 A3, A4 참조), 데이터용 데이터 기억 영역(제3 기억 영역)과 스테이터스 블록용 스테이터스 기억 영역(제4 기억 영역)이 버퍼(60) 상에 준비된다.
그리고 버퍼 관리 회로(60)는, USB를 통해 데이터(IN 데이터)가 전송되는 데이터 페이즈(제3 페이즈)에서는 엔드 포인트(EP2)로부터 호스트로 전송되는 정보를 데이터용 데이터 기억 영역으로부터 판독하고, USB를 통해 스테이터스 블록이 전송되는 스테이터스 페이즈(제4 페이즈)에서는 엔드 포인트로부터 호스트로 전송되는정보를 스테이터스용 스테이터스 기억 영역으로부터 판독한다. 즉, 페이즈가 전환한 것을 조건으로, 정보(데이터, 스테이터스 블록)의 판독 영역을 전환한다.
이와 같이 함으로써, 하나의 엔드 포인트에 복수 종류의 정보(커맨드 블록, OUT 데이터, IN 데이터, 스테이터스 블록)가 할당되어 있는 경우에도, 커맨드 기억 영역의 커맨드 블록에 대한 처리를 행하면서, 데이터 기억 영역의 OUT 데이터에 대한 처리를 행하는 것이 가능하게 된다. 또는 데이터 기억 영역의 IN 데이터에 대한 처리를 행하면서, 스테이터스 기억 영역의 스테이터스 블록에 대한 처리를 행하는 것이 가능하게 된다. 따라서, 데이터 전송 제어 장치의 처리 속도의 향상시키거나 펌웨어(처리 수단)의 부하를 경감시킬 수 있어, 실효적인 버스의 전송 속도를 향상시킬 수 있다.
벌크 전송 관리 회로(70)는 USB에서의 벌크 전송을 관리하기 위한 회로이다.
DMAC(80)는 EBUS를 통해 DMA 전송을 행하기 위한 DMA 컨트롤러이고, DMA 카운터(82)를 포함한다. 그리고 DMA 카운터(82)는 EBUS(제2 버스)를 통해 송신 또는 수신되는 데이터의 사이즈(전송수, 데이터 길이)를 카운트하는 회로이다.
2. 2 상세한 접속예
도 7에 SIE(30), 엔드 포인트 관리 회로(40), 버퍼 관리 회로(50), 버퍼(60), 벌크 전송 관리 회로(70), DMAC(80)의 상세한 접속예를 나타낸다.
도 7에서, SIEReadData는 버퍼(60)(데이터 기억 영역(62))로부터 판독되고, USB(제1 버스)를 통해 호스트에 전송되는 데이터(IN 데이터)이다. SIEWriteData는 USB를 통해 호스트로부터 전송되어, 버퍼(60)에 기입되는 데이터(OUT 데이터)이다.DMAReadData는 버퍼(60)로부터 판독되고, EBUS(제2 버스)를 통해 하드디스크 드라이브 HDD 등의 디바이스에 전송(DMA 전송)되는 데이터이다. DMAWriteData는 EBUS를 통해 HDD 등으로부터 전송되고, 버퍼(60)에 기입되는 데이터이다.
또한, SIE(30)가 출력하는 SIEReadReq는 SIEReadData의 판독을 요구하는 신호이고, 엔드 포인트 관리 회로(40)가 출력하는 SIEReadAck는 SIEReadReq에 대한 확인 신호이다. 마찬가지로, SIEWriteReq는, SIEWriteData의 기입을 요구하는 신호이고, SIEWriteAck는 SIEWriteReq에 대한 확인 신호이다.
또한, DMAC(80)가 출력하는 DMAReadReq는 DMAReadData의 판독을 요구하는 신호이고, 엔드 포인트 관리 회로(40)가 출력하는 DMAReadAck는 DMAReadReq에 대한 확인 신호이다. 마찬가지로, DMAWriteReq는 DMAWriteData의 기입을 요구하는 신호이고, DMAWriteAck는, DMAWriteReq에 대한 확인 신호이다.
Full은 버퍼(60)의 데이터 기억 영역(62)이 가득 차 있는지를 나타내는 신호이고, Empty는 데이터 기억 영역(62)이 비어 있는지를 나타내는 신호이다. 이 경우에, 데이터 기억 영역(62)이 가득 차 있는지, 혹은 비어 있는지는, 데이터 기억 영역(62)의 잔여 데이터 사이즈(잔여 데이터 영역)를 카운트하는 잔여 데이터 사이즈 카운터(41)로부터의 카운트값 등에 기초하여 판단된다.
본 실시예의 데이터 기억 영역(62)은 먼저 입력된 정보가 먼저 출력되는 영역(FIFO; FIFO 설정의 영역)으로 되어 있다. 이 경우, 데이터 기억 영역(62)을 직렬 접속의 레지스터, 메모리 등으로 구성함으로써, 선입 선출의 영역으로 설정해도 되며, RAM의 어드레스 제어를 고안함으로써, 선입 선출의 영역으로 설정해도 된다.
엔드 포인트 관리 회로(40)가 출력하는 HaveMPS는 버퍼(60)의 데이터 기억 영역(62)의 잔여 데이터 사이즈(데이터 길이)가 최대 패킷 사이즈인지를 나타내는 신호이다. 최대 패킷 사이즈가 512 바이트인 경우를 예로 들면, 잔여 데이터 사이즈가 512 바이트(이상)일 때는 HaveMPS가 활성화(H 레벨)되고, 잔여 데이터 사이즈가 0 ∼ 511 바이트일 때는 HaveMPS가 비활성화(L 레벨)된다. 이 경우의 잔여 데이터 사이즈는 잔여 데이터 사이즈 카운터(41)에 의해 구해진다.
HDDATA는 EBUS(제2 버스)를 통해 DMA 전송되는 데이터이고, xDMACK는 이 DMA 전송의 확인 신호이고, xDMARQ는 DMA 전송의 요구 신호이다. 또한, xHIOR는 판독 펄스 신호이고, xHIOW는 기입 펄스 신호이다.
DMA_Start는 DMA 전송의 개시를 CPU(펌웨어)가 지시하기 위한 신호이다. DMA_Running은 EBUS를 통한 DMA 전송이 행해지는 것을 나타내는 신호로, EBUS에 의한 DMA 전송의 개시에 의해 활성화(H 레벨)되고, DMA 전송의 종료에 의해 비활성화(L 레벨)된다. 즉, EBUS에서의 데이터 전송(데이터 페이즈) 기간에서, DMA_Running는 활성화된다.
AutoEnShort는 버퍼(60)의 데이터 기억 영역(62)에 존재하는 쇼트 패킷의 자동 송신을 유효 또는 무효로 설정하기 위한 신호이다. 또한, EnShortPkt는 쇼트 패킷의 전송을 SIE(30)에 지시하기 위한 신호이다.
예를 들면, AutoEnShort가 H 레벨로 설정되어 있는 경우에는 EBUS를 통한 데이터 수신이 종료하고, 또한 데이터 기억 영역(62)의 잔여 데이터 사이즈가 최대 패킷 사이즈 미만이 되면, EnShortPkt가 활성화된다. 이에 따라, 데이터 기억 영역(62)에 존재하는 쇼트 패킷(최대 패킷 사이즈 미만의 패킷)이 SIE(30)에 의해 UBS를 통해 자동 송신된다.
보다 구체적으로는, DMA_Running이 비활성화(데이터 수신 종료)된 후에, HaveMPS가 비활성화(최대 패킷 사이즈 미만)되면, EnShortPkt가 활성화되어, 데이터 기억 영역(62)의 쇼트 패킷이 SIE(30)에 의해 자동 송신된다.
INTranACK는 IN 트랜잭션에 대한 "확인"이 호스트로부터 적정하게 되돌아 온 경우에 활성화되는 신호이다. BulkDMACmp는 벌크 전송에서의 데이터 페이즈(전체 데이터의 전송)가 종료한 것을 나타내기 위한 신호이다.
예를 들면, EBUS를 통한 데이터 수신이 종료한 후, 데이터 기억 영역(62)이 비게 되고, 최후의 데이터(IN 데이터)의 패킷의 송신에 대한 확인이 호스트로부터 되돌아 오면, INTranACK가 활성화된다. 그러면, BulkDMACmp가 활성화되어 데이터 페이즈(전체 데이터의 전송)가 종료한 것이 펌웨어(CPU)에 전해진다. 이에 따라, 펌웨어는 다음의 스테이터스 페이즈의 처리로 이행할 수 있다.
2. 3 동작
다음에 본 실시예의 동작에 대하여 설명한다.
도 8의 (a)는 OUT 트랜잭션(호스트로부터 디바이스에 데이터가 전송되는 제1 방향의 데이터 전송)에서, 버퍼(60)의 데이터 기억 영역(62)(FIFO)의 잔여 영역(빈 영역)의 사이즈가 호스트로부터 전송되는 데이터의 사이즈(데이터 길이) 이상인 경우의 타이밍 파형도이다. 이 경우에는, 호스트로부터의 데이터 모두를 데이터 기억 영역(62)에 기입할 수 있기 때문에, 도 8의 (a)의 C1에 도시한 바와 같이 호스트에 ACK를 되돌려 줄 수 있다.
또, HS 모드 시에, 데이터 기억 영역(62)이 더블 버퍼 구조가 아닌 싱글 버퍼 구조인 경우에는 데이터 기억 영역(62)에 빈 부분이 생길 때까지는 호스트로부터의 다음 패킷을 수신할 수 없다. 따라서, 이 경우에는 ACK를 대신하여 NYET가 호스트로 되돌려진다. 또한, 더블 버퍼 구조라도 양쪽 버퍼가 사용 중이어서, 다음 데이터를 수취할 수 없는 경우에는 마찬가지로 ACK를 대신하여 NYET가 호스트로 되돌려진다.
도 8의 (b)는 OUT 트랜잭션에서, 데이터 기억 영역(62)의 잔여 영역 사이즈가 데이터 사이즈보다 작은 경우의 타이밍 파형도이다.
이 경우에는 호스트로부터의 데이터 모두를 데이터 기억 영역(62)에 기입할 수 없기 때문에, 도 8의 (b)의 C2로 도시한 바와 같이 호스트에 대하여 NAK를 되돌리게 된다. 그리고, 금회의 OUT 토큰에 대한 데이터 전송에 의해 수취한 데이터를 파기하기 위해서, C3으로 도시한 바와 같이 Rewind 신호가 활성화된다.
또, 도 8의 (a), 도 8의 (b)의 C4, C5에서, SIE(30)가 SIEWriteReq를 활성화하면, 엔드 포인트 관리 회로(40)의 지시에 의해 버퍼 관리 회로(50)가 SIEWriteData의 기입 어드레스를 생성하여 버퍼(60)에 출력한다. 이에 따라, 예를 들면 4 바이트의 SIEWriteData가 버퍼(60)의 데이터 기억 영역(62)에 기입되어, SIE(30)에 SIEWriteAck가 되돌려진다. 그리고, 이러한 4 바이트씩의 기입 처리를 반복함으로써, 호스트로부터의 데이터(예를 들면, 512 바이트의 데이터)가 데이터 기억 영역(62)에 순차 기입된다.
도 8의 (c), 도 8의 (d)는 데이터 기억 영역(62)에 비어 있는 부분이 있는지를 호스트가 디바이스에 문의하는 PING 트랜잭션(PING 프로토콜)에 대한 타이밍 파형도이다. 이 PING 트랜잭션은 USB의 HS 모드에서 서포트되는 것이다. 이 프로토콜은 호스트로부터의 OUT 토큰이나 OUT의 데이터에 대하여 디바이스로부터 NYET를 수취한 경우에 사용된다.
그리고, 이 PING 트랜잭션에서는 데이터 기억 영역(62)의 잔여 영역 사이즈(빈 사이즈)가 데이터 사이즈 이상인 경우에는 도 8의 (c)의 C6으로 도시한 바와 같이 호스트에 ACK가 되돌려진다. 한편, 데이터 기억 영역(62)의 잔여 영역 사이즈가 데이터 사이즈보다도 작은 경우에는, 도 8의 (d)의 C7로 도시한 바와 같이 호스트에 NAK가 되돌려지게 된다.
도 9의 (a)는 IN 트랜잭션(디바이스로부터 호스트에 데이터가 전송되는 제2 방향의 데이터 전송)에서, 데이터 기억 영역(62)의 잔여 데이터(유효 데이터)의 사이즈가 최대 패킷 사이즈 이상인 경우의 타이밍 파형도이다. 이 경우에는 최대 패킷 사이즈분의 데이터가 호스트에 전송되면, 도 9의 (a)의 D1로 도시한 바와 같이 호스트로부터 디바이스에 ACK가 되돌려진다.
또, 도 9의 (a)의 D2에서, SIE(30)가 SIEReadReq를 활성화하면, 엔드 포인트 관리 회로(40)의 지시에 의해 버퍼 관리 회로(50)가 SIEReadData의 판독 어드레스를 생성하여 버퍼(60)에 출력한다. 이에 따라, 예를 들면 4 바이트의 SIEReadData가 데이터 기억 영역(62)으로부터 판독되고, SIE(30)에 SIEReadAck가 되돌려진다. 그리고, 이러한 4 바이트씩의 판독 처리를 반복함으로써 호스트에 전송해야 할 데이터가 데이터 기억 영역(62)으로부터 순차 판독된다.
도 9의 (b)는 IN 트랜잭션에서, 데이터 기억 영역(62)의 잔여 데이터의 사이즈가 최대 패킷 사이즈보다도 작고, 또한 EnShortPkt(도 7 참조)가 L 레벨(비활성화)인 경우의 타이밍 파형도이다. 이 경우에는, 도 9의 (b)의 D3, D4, D5로 도시한 바와 같이 EnShortPkt가 L 레벨이기 때문에, 쇼트 패킷(최대 패킷 사이즈 미만의 패킷)의 전송이 금지된다. 따라서, 호스트로부터의 IN 토큰에 대하여 D6, D7, D8로 도시한 바와 같이 NAK가 되돌려지게 된다.
도 9의 (c)는 IN 트랜잭션에서, 데이터 기억 영역(62)의 잔여 데이터의 사이즈가 최대 패킷 사이즈보다도 작고, 또한 EnShortPkt가 H 레벨(활성화)이 된 경우의 타이밍 파형도이다. 이 경우에는, 도 9의 (c)의 D9로 도시한 바와 같이, EnShortPkt가 H 레벨이 됨으로써 쇼트 패킷의 전송이 허가되어, D10으로 도시한 바와 같이, 데이터 기억 영역(62)에 존재하는 쇼트 패킷이 호스트에 적정하게 전송되게 된다.
또, 버퍼(60)의 데이터 기억 영역(62)은 OUT 트랜잭션과 IN 트랜잭션의 공용 영역으로 해도 되며, 별도의 영역으로 해도 된다.
도 10은 하드디스크 드라이브 HDD 등의 디바이스에의 데이터 송신 시의 DMA 전송의 타이밍 파형도이다.
도 10의 E1, E2로 도시한 바와 같이, 하드디스크 드라이브 HDD로부터의 HD MARQ(도 7 참조), CPU로부터의 DMA_Start가 활성화되면, DMA 전송이 개시되고, E3에 도시한 바와 같이, DMA_Running이 활성화된다.
그리고, E4, E5로 도시한 바와 같이, DMAReadReq, DMAReadAck를 이용한 핸드셰이크가 행해지고, 버퍼(60)의 데이터 기억 영역(62)으로부터, 예를 들면 4 바이트(32 비트)의 데이터가 판독된다. 판독된 4 바이트의 데이터는 E6, E7로 도시한 바와 같이, 기입 펄스 신호 xHIOW를 이용하여, 16 비트의 버스 EBUS를 통해 예를 들면 2 바이트씩 HDD에 송신된다.
그리고, 데이터가 송신될 때마다, E8로 도시한 바와 같이, DMA 카운터(82)의 카운트값 Count(데이터 전송 수)가 감소된다. 또, Count의 초기치 N은 커맨드 페이즈에서, 도 3의 CBW의 dCBWDTransferLength에 기초하여 설정된다.
E9로 도시한 바와 같이, Count가 0이 되어, EBUS에서의 전체 데이터의 전송이 종료하면, E10으로 도시한 바와 같이, DMA_Running이 비활성화된다.
도 11은 하드디스크 드라이브 HDD 등의 디바이스로부터의 데이터 수신 시의 DMA 전송의 타이밍 파형도이다.
도 11의 F1, F2로 도시한 바와 같이, HDMARQ, DMA_Start가 활성화되면, DMA 전송이 개시하고, F3으로 도시한 바와 같이, DMA_Running이 활성화된다.
그리고, F4, F5로 도시한 바와 같이, 판독 펄스 신호 xHIOR을 이용하여 EBUS를 통하여 HDD로부터 데이터가 수신된다. 수신된 데이터는 F6, F7로 도시한 바와 같이, DMAWriteReq, DMAWriteAck를 이용한 핸드셰이크에 의해 버퍼(60)의 데이터 기억 영역(62)에 기입된다.
F8로 도시한 바와 같이, 데이터가 수신될 때마다 Count(데이터 전송수)가 감소된다. 그리고, F9로 도시한 바와 같이, Count가 0이 되고, EBUS에서의 전체 데이터의 전송이 종료하면, F10으로 도시한 바와 같이, DMA_Running이 비활성화된다.
2. 4 데이터 페이즈(데이터 트랜스포트)의 종료의 검출
한편, USB에서는 도 5의 (a), 도 5의 (b)에서 설명한 바와 같이, 호스트측과 디바이스측에서, 항상 페이즈를 정합시키면서 데이터 전송을 행할 필요가 있다.
예를 들면 도 5의 (b)에서, 호스트는 현재의 페이즈가 데이터 페이즈라고 인식하는 데 반하여, 디바이스는 현재의 페이즈가 스테이터스 페이즈라고 인식한다면, 호스트로부터 전송된 IN 토큰(도 5의 (b)의 B4의 토큰)을, 디바이스는 CSW(B6)에 대한 IN 토큰이라고 오인식하여, 데이터 전송에 에러가 생기게 된다.
또한, 도 2의 (b)에 도시한 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라고 판단된다.
이와 같이 USB에서는, 현재의 페이즈가 어떤 페이즈인지를 호스트 및 디바이스는 정확하게 인식할 필요가 있다. 따라서, 예를 들면 데이터 페이즈로부터 스테이터스 페이즈에의 전환의 타이밍에 대해서도 정확하게 판단할 수 있는 것이 요망된다.
따라서, 본 실시예에서는 데이터 페이즈로부터 스테이터스 페이즈에의 전환의 판단, 즉 데이터 페이즈의 종료의 판단을, 이하에 설명하는 방법으로 실현한다.
예를 들면, 호스트로부터 디바이스에 OUT 데이터가 전송되는 OUT 트랜잭션(제1 방향의 데이터 전송)인 경우에는 도 12와 같이 하여 데이터 페이즈의 종료(전체 데이터 전송의 종료; 페이즈의 전환)를 판단한다.
구체적으로는, 우선 도 12의 G1로 도시한 바와 같이 USB(제1 버스)에서의 데이터 전송(데이터 페이즈)이 시작된다. 그리고, 전송된 데이터가 버퍼(60)의 데이터 기억 영역(62)에 기입되면, G2로 도시한 바와 같이 데이터 기억 영역(62)이 비어 있는지를 나타내는 신호 Empty가 비활성화되어 데이터 기억 영역(62)이 비어 있지 않은 것을 나타낸다.
다음에, G3, G4로 도시한 바와 같이, CPU가 DMA_Start를 활성화로 설정함으로써, DMA_Running이 활성화되며, EBUS(제2 버스)에서의 데이터 전송(EBUS의 데이터 페이즈)이 시작된다.
그리고, G5로 도시한 바와 같이 USB에서의 데이터 전송이 종료하고, G6으로 도시한 바와 같이, EBUS에서의 데이터 전송(DMA 전송)이 종료하면, 데이터 페이즈가 종료하고, 데이터 페이즈로부터 스테이터스 페이즈로 전환하였다고 판단한다.
이 G6의 타이밍은 USB에서의 데이터 전송이 종료하는 G5의 타이밍보다 느린 타이밍이 된다. 또한, 이 G6의 타이밍은 버퍼(60)의 데이터 기억 영역(62)이 비게 되어, Empty 신호가 활성화되는 G7의 타이밍과 일치한다. 그리고 본 실시예에서는, 이 G6의 타이밍을 EBUS측에 설치된 도 12의 DMA 카운터(82)를 이용하여, EBUS로 전송되는 데이터 사이즈(전송수, 데이터 길이)를 카운트함으로써 판단한다(도 10의 E9 참조).
이와 같이 본 실시예에서는, OUT 트랜잭션(제1 방향의 데이터 전송)에서는 EBUS(제2 버스)를 통한 데이터 송신이 종료한 것을 조건으로, 데이터 페이즈가 종료하였다고 판단한다.
한편, 디바이스로부터 호스트에 IN 데이터가 전송되는 IN 트랜잭션(제2 방향의 데이터 전송)인 경우에는, 도 13과 같이 하여 데이터 페이즈의 종료(전체 데이터 전송의 종료; 페이즈의 전환)를 판단한다.
구체적으로는, 우선 H1, H2로 도시한 바와 같이, CPU가 DMA_Start를 활성화로 설정함으로써, DMA_Running이 활성화되어, EBUS에서의 DMA 전송이 시작된다. 그리고, EBUS를 통해 전송된 데이터가 버퍼(60)의 데이터 기억 영역(62)에 기입되면, H3으로 도시한 바와 같이, Empty가 비활성화되어, 데이터 기억 영역(62)이 비어 있지 않은 것을 나타낸다.
다음에, H4로 도시한 바와 같이 USB에서의 데이터 전송이 시작된다. 그리고, USB를 통해 전송되는 데이터가 데이터 기억 영역(62)으로부터 판독되고, 만약 데이터 기억 영역(62)이 비게 되면, Empty가 활성화된다.
그리고 본 실시예에서는, H6으로 도시한 바와 같이, EBUS(제2 버스)를 통한 데이터 전송이 종료하였다고 판단된 후, H7로 도시한 바와 같이, 데이터 기억 영역(62)이 비게 되어, Empty 신호가 활성화된 타이밍에서 데이터 페이즈(전체 데이터의 전송)가 종료하였다고 판단한다. 이 경우, H6의 타이밍은 EBUS측에 설치된 DMA 카운터(82)를 이용하여, EBUS로 전송되는 데이터 사이즈를 카운트함으로써 판단할 수 있다. 또한, H7의 타이밍은 USB(제1 버스)로의 데이터 전송(데이터 페이즈)이 종료하는 H8의 타이밍과 일치한다.
이와 같이, 본 실시예에서는 IN 트랜잭션(제2 방향의 데이터 전송)에서는 EBUS(제2 버스)를 통한 데이터 수신이 종료하고, 또한 버퍼(60)의 데이터 기억 영역이 비게 된 것을 조건으로, 데이터 페이즈가 종료하였다고 판단한다.
예를 들면, 도 12, 도 13의 본 실시예의 방법과는 다른 방법으로서, EBUS측과 USB측의 양쪽에, 데이터 사이즈를 카운트하는 카운터를 설치하는 방법을 생각할 수 있다. 이 방법에서는, 예를 들면 OUT 트랜잭션에서는, EBUS측의 카운터의 카운트값이 0이 된 것을 조건으로 데이터 페이즈가 종료하였다고 판단하고, IN 트랜잭션에서는 USB측의 카운터의 카운트값이 0이 된 것을 조건으로 데이터 페이즈가 종료하였다고 판단한다.
그러나, 이 방법으로는 2개의 카운터를 설치할 필요가 생겨, 이들 2개의 카운터를 제어하는 처리가 번잡하게 된다. 이 결과, 회로 제어나 회로 구성이 복잡하게 되어, 데이터 전송 제어 장치가 대규모화되고, 고비용화를 초래한다. 또한, 데이터 전송 제어 장치를 제어하는 펌웨어(CPU)의 처리도 복잡화하고, 그 처리의 오버헤드 때문에 실효적인 데이터 전송 속도가 저하될 우려도 있다.
이에 반하여, 도 12, 도 13의 본 실시예의 방법에 따르면, 도 7에 도시한 바와 같이 EBUS(제2 버스)측에만 카운터를 설치하면 되며, USB(제1 버스)측에 카운터를 설치할 필요가 없게 된다. 따라서, 회로 제어를 용이하게 할 수 있으며 회로 구성을 간소화할 수 있고, 데이터 전송 제어 장치의 컴팩트화, 저비용화를 도모할 수 있다. 또한, 데이터 전송 제어 장치를 제어하는 펌웨어의 처리도 간소화할 수 있어, 실효적인 데이터 전송 속도를 향상시킬 수 있다.
또, 본 실시예에서는, 도 13의 H9로 도시한 바와 같이, EBUS(제2 버스)를 통한 데이터 수신이 종료하면, 이 데이터 수신의 스테이터스를 하드디스크 드라이브 HDD 측에서 취득하고, 이 취득된 스테이터스에 기초하여 도 4에 도시하는 CSW(스테이터스)를 작성한다. 이 CSW의 작성 처리는, 예를 들면 펌웨어 등에 의해 행해진다.
그리고, 도 13의 H10으로 도시한 바와 같이, 이 작성된 CSW를, 데이터 페이즈 종료 후의 스테이터스 페이즈에서, USB(제1 버스)를 통해, 호스트측에 송신한다.
이와 같이 하면, 도 13의 H9로 도시한 바와 같이, USB에서 데이터 전송을 행하는 기간을 유효하게 이용하고, HDD 측에서 스테이터스를 취득하고, CSW를 작성할수 있게 된다. 그리고, H10으로 도시한 바와 같이, 데이터 페이즈로부터 스테이터스 페이즈로 이행한 후에, 즉시 호스트로부터의 IN 토큰에 대하여 CSW를 돌려 주는 것이 가능하게 된다. 따라서, 스테이터스 페이즈에서, 호스트로부터의 IN 토큰에 NAK를 되돌려주는 빈도를 적게 할 수 있으며, 실효적인 데이터 전송 속도를 향상시킬 수 있다.
2. 5 쇼트 패킷의 자동 송신
한편, USB에서는 페이로드 사이즈가 최대 패킷 사이즈 미만인 쇼트 패킷은 특별한 의미를 갖는다.
즉, 호스트는 디바이스로부터 쇼트 패킷이 전송되어 오면, 데이터 페이즈는 종료하였다고 판단하고, 스테이터스 페이즈로 이행한다. 따라서, 디바이스는 데이터 페이즈를 종료시키는 경우 이외에는 쇼트 패킷을 호스트에 전송하지 않도록 데이터 전송을 제어한다.
구체적으로는, 디바이스는 버퍼(60)의 데이터 기억 영역(62)의 잔여 데이터 사이즈를 항상 체크한다. 그리고, 잔여 데이터 사이즈가 최대 패킷 사이즈 이상인 경우에는, 잔여 데이터 중에서 최대 패킷 사이즈의 데이터 패킷을 작성하여, 호스트로 전송한다. 그리고, 잔여 데이터 사이즈가 최대 패킷 사이즈 미만이라고 판단되면, 쇼트 패킷의 전송을 허가하고, 그 잔여 데이터 사이즈의 패킷을 쇼트 패킷으로 호스트로 전송한다. 이에 따라, 데이터 페이즈가 종료하게 된다.
그러나, 이와 같이, 데이터 기억 영역(62)의 잔여 데이터 사이즈를 항상 체크하고, 체크 결과에 따른 처리를 행하고자 하면, 이 체크 처리를 행하는펌웨어(CPU)의 처리 부하가 매우 크게 되어 버린다. 그리고, 이 펌웨어 처리의 오버헤드에 기인하여, 실효적인 데이터 전송이 저하하는 사태를 초래한다.
그래서 본 실시예에서는, EBUS(제2 버스)를 통한 데이터 수신(DMA 전송)이 종료하고, 또한 데이터 기억 영역(62)의 잔여 데이터 사이즈(유효 데이터)가 최대 패킷 사이즈 미만인 경우에는 데이터 기억 영역(62)의 쇼트 패킷을 USB(제1 버스)를 통해 자동으로(펌웨어의 처리를 거치지 않고 하드웨어의 처리에 의해) 송신하는 방법을 채용한다.
예를 들면, 도 14에 IN 트랜잭션(제2 방향의 데이터 전송)에서 데이터 기억 영역(62)의 잔여 데이터 사이즈가 최대 패킷 사이즈 미만인 경우의 타이밍 파형도를 나타낸다.
도 14에서는, I1로 도시한 바와 같이, 쇼트 패킷의 자동 송신(자동 전송)의 유효, 무효를 설정하는 신호인 AutoEnShort(도 7 참조)가 활성화(H 레벨)로 설정되어 있다. 이 AutoEnShort의 레벨은, 예를 들면 열거 시에 펌웨어(CPU)가 AutoEnSh ort의 레지스터에 소정의 값을 기입하는 것으로 설정된다. 이 경우에, 예를 들면 매스 스토리지 디바이스와 같이 쇼트 패킷의 자동 송신을 항상 유효하게 해야 할 디바이스에서는 AutoEnShort를 고정적으로 활성화로 설정해도 된다.
그리고, 도 14의 I1과 같이 AutoEnShort가 활성화로 설정된 상태에서, I2로 도시한 바와 같이 EBUS를 통한 데이터 전송이 종료하고, I3으로 도시한 바와 같이, 최후의 최대 패킷 사이즈(예를 들면 512 바이트)의 패킷 Dn-1이 USB를 통해 전송된 것으로 한다.
이 경우에, 데이터 기억 영역(62)의 잔여 데이터 사이즈가 최대 패킷 사이즈 미만이면, I4로 도시한 바와 같이, 쇼트 패킷의 자동 송신을 SIE(30)에 지시하는 EnShortPkt가 활성화된다. 즉, 도 7에서, AutoEnShort가 활성화되어, 잔여 데이터 사이즈가 최대 패킷 사이즈인지를 나타내는 HaveMPS가 비활성화인 경우에는 EnShortPkt가 활성화된다.
그리고, EnShortPkt가 활성화되면, 도 14의 I5로 도시한 바와 같이, 데이터 기억 영역(62)에 존재하는 쇼트 패킷은, 펌웨어의 처리가 개재되지 않고 하드웨어(SIE(30))에 의해 호스트에 자동으로 송신된다. 그리고, 쇼트 패킷이 USB를 통해 전송되면, I6으로 도시한 바와 같이 데이터 페이즈가 종료하여 스테이터스 페이즈로 이행한다.
이와 같이 도 14의 본 실시예의 방법에서는, AutoEnShort을 활성화로 설정함으로써, 데이터 기억 영역(62)의 쇼트 패킷을 하드웨어에 의해 자동 송신할 수 있다. 따라서, 데이터 기억 영역(62)의 잔여 데이터 사이즈를 체크하는 처리를 펌웨어가 행할 필요가 없게 된다. 이 결과, 펌웨어의 처리 부하를 경감할 수 있고 실효적인 데이터 전송 속도를 향상시킬 수 있다.
특히, 디바이스측에서는 저비용화의 요청으로부터, 예를 들면 20 ∼ 50㎒ 정도의 클럭 주파수로 동작하는 염가의 CPU가 사용되는 경우가 많다. 따라서, 잔여 데이터 사이즈의 체크 처리를 CPU 상에서 동작하는 펌웨어가 행하면, 체크 처리에 많은 시간을 소비하게 되어, I6으로 나타내는 스테이터스 페이즈로의 이행 타이밍이 매우 지연될 가능성이 있다.
이에 비하여, 도 14의 본 실시예의 방법에서는, 잔여 데이터의 체크 처리를 펌웨어가 행하지 않고 끝나기 때문에, 빠른 단계에서 스테이터스 페이즈로 이행할 수 있게 된다. 이 결과, 잔여 데이터 사이즈의 체크 처리를 펌웨어로 행하는 경우에 비하여 실효적인 데이터 전송 속도를 상당히 향상시킬 수 있다.
또, 본 실시예에서는 AutoEnShort의 설정을 변경함으로써, 쇼트 패킷의 자동 송신의 유효, 무효를 임의로 설정할 수 있게 된다.
예를 들면, 하드디스크 드라이브나 CD 드라이브 등의 매스 스토리지 디바이스에서는 쇼트 패킷의 자동 송신이 항상 유효하게 되도록, AutoEnShort를 설정한다. 이와 같이 하면, 펌웨어의 처리를 개재시키지 않고 쇼트 패킷을 자동 송신하고 스테이터스 페이즈로 이행할 수 있게 된다.
한편, 스캐너 등의 디바이스와 같이, EBUS(제2 버스)를 통해 수신된 데이터에 데이터 사이즈 등의 정보가 부가되고 USB(제1 버스)를 통해 송신되는 디바이스에서는 AutoEnShort를 비활성화(L 레벨)로 설정한다.
즉, 스캐너에서는 데이터의 취득이 완료된 후가 아니면, 최종적인 데이터 사이즈가 확정되지 않는다. 따라서, 데이터 전송 제어 장치는 스캐너로부터의 수신 데이터의 마지막에, 데이터 사이즈를 포함하는 제어 정보(헤더, 꼬리말(footer))를 부가하여, 호스트에 전송하게 된다. 이에 따라, EBUS를 통해 전송되는 데이터의 사이즈와, USB를 통해 전송되는 데이터의 사이즈가 일치하지 않고, 쇼트 패킷을 호스트에 무조건 전송하는 것은 허용하지 않게 되어, AutoEnShort를 비활성화로 설정할 필요가 생긴다.
본 실시예와 같이, 쇼트 패킷의 자동 송신의 유효, 무효를 임의로 설정 가능하게 함으로써, 하드디스크 드라이브 등의 매스 스토리지 디바이스뿐만 아니라, 스캐너 등의 디바이스에서의 데이터 전송에도 유연하게 대응할 수 있게 된다.
2. 6 쇼트 패킷의 존재의 통지
한편, 도 14에서는 AutoEnShort 신호를 이용하여, 데이터 기억 영역(62)의 쇼트 패킷을 자동 송신하고 있다.
이와는 달리, 데이터 기억 영역(62)에서의 쇼트 패킷의 존재를 CPU(펌웨어)에 알려도 된다. 구체적으로는, EBUS(제2 버스)를 통한 데이터 수신이 종료하고, 또한 데이터 기억 영역(62)의 잔여 데이터 사이즈가 최대 패킷 사이즈 미만인 경우에 데이터 기억 영역(62)에 쇼트 패킷이 존재한다는 것을 인터럽트 등을 이용하여 CPU(처리 수단)에 통지한다.
이러한 방법을 채용하는 경우의 SIE(30), 엔드 포인트 관리 회로(40), 버퍼 관리 회로(50), 버퍼(60), 벌크 전송 관리 회로(70), DMAC(80)의 상세한 접속예를 도 15에 나타낸다.
도 15가 전술한 도 7과 다른 것은, 도 15에서는 벌크 전송 관리 회로(70)가 CPU(CPU가 액세스 가능한 레지스터)에 인터럽트 신호 ShortINT를 출력하고 있는 점과, EnShortPkt가 CPU에 의해 설정되어 SIE(30)에 입력되는 점이다.
여기서, ShortINT는 데이터 기억 영역(62)에 쇼트 패킷이 존재하는 것을 CPU에 전하기 위한 인터럽트 신호이고, EnShortPkt는 쇼트 패킷의 전송을 CPU가 SIE(30)에 지시하기 위한 신호이다.
그리고, 예를 들면 DMA_Running이 비활성화(데이터 수신 종료)된 후에, HaveMPS가 비활성화(최대 패킷 사이즈 미만)되면, ShortINT가 활성화되고, 전송 가능한 쇼트 패킷이 데이터 기억 영역(62)에 존재하는 것이 CPU에 통지된다.
한편, CPU는 쇼트 패킷의 전송을 위한 판단 처리를 행하여, 쇼트 패킷을 전송해도 된다고 판단한 경우에는, EnShortPkt를 활성화로 설정한다. 이에 따라, SIE(30)는 데이터 기억 영역(62)에 존재하는 쇼트 패킷을 판독하여, USB를 통해 호스트로 전송하는 처리를 행하게 된다.
도 16에, IN 트랜잭션(제2 방향의 데이터 전송)에서, 데이터 기억 영역(62)의 잔여 데이터 사이즈가 최대 패킷 사이즈 미만일 때의 타이밍 파형도를 나타낸다.
도 16에서는 J1로 도시한 바와 같이, 쇼트 패킷의 자동 송신의 유효, 무효를 설정하는 AutoEnShort는 비활성화(L 레벨)되어 있다. 이 상태에서, J2로 도시한 바와 같이 EBUS를 통한 데이터 전송이 종료하고, J3으로 도시한 바와 같이, 최후의 최대 패킷 사이즈의 패킷 Dn-1이 USB를 통해 전송된 것으로 한다.
이 경우에, 데이터 기억 영역(62)의 잔여 데이터 사이즈가 최대 패킷 사이즈 미만이면, J4로 도시한 바와 같이, 쇼트 패킷의 존재를 CPU에 통지하는 인터럽트 신호 ShortINT가 활성화된다. 즉, 도 15에서, DMA_Running이 비활성화되고, 잔여 데이터 사이즈가 최대 패킷 사이즈인지를 나타내는 HaveMPS가 비활성화된 경우에는 ShortINT가 활성화된다.
이 ShortINT를 받은 CPU(펌웨어)는, 예를 들면 데이터 사이즈 등의 정보를수신 데이터에 부가하는 처리(부가 정보를 데이터 기억 영역(62)에 기입하는 처리) 등을 행한다. 그리고, 그 후에 J5로 도시한 바와 같이 EnShortPkt를 활성화한다. 이에 따라, J6으로 도시한 바와 같이, 데이터 기억 영역(62)의 데이터가 SIE(30)에 의해 호스트에 전송된다. 그리고, J7로 도시한 바와 같이 데이터 페이즈가 종료하여 스테이터스 페이즈로 이행한다.
이와 같이 도 16의 본 실시예의 방법에서는, ShortINT을 이용하여, 데이터 기억 영역(62)에서의 쇼트 패킷의 존재를, CPU 상에서 동작하는 펌웨어에 알린다. 이에 따라, 예를 들면 데이터 사이즈 등의 정보가 수신 데이터의 마지막에 부가되는 스캐너 등의 디바이스에서도 적정한 데이터 전송을 실현할 수 있다.
2. 7 펌웨어의 처리
도 17의 (a)에, IN 트랜잭션에서의 비교예의 펌웨어의 처리의 플로우차트를 나타낸다. 또, 도 17의 (b)에 쇼트 패킷을 자동 송신하는 본 실시예의 방법에서의 펌웨어 처리의 플로우차트를 나타낸다.
도 17의 (a)의 비교예에서는, 펌웨어는 우선 DMA_Start을 1(H 레벨)로 세트하고, EBUS에서의 DMA 전송을 시작시킨다(단계 S1). 그리고, DMA_Running를 체크하여, EBUS에서의 DMA 전송이 종료하였는지를 판단한다(단계 S2).
DMA 전송이 종료하였다고 판단된 경우에는 IntranACK를 이용하여, USB측에서의 ACK를 검출한다(단계 S3). 그리고, ACK가 검출된 경우에는 버퍼의 데이터 기억 영역의 잔여 데이터 사이즈 RDS를 체크한다(단계 S4). 그리고, RDS≥최대 패킷 사이즈 MaxPacketSize인 경우에는, 단계 S3으로 되돌아가 다음 ACK가 오는 것을 대기한다 .
한편, RDS<MaxPacketSize인 경우에는 EnShortPkt를 1로 세트한다(단계 S5). 이에 따라, 데이터 기억 영역의 쇼트 패킷이 호스트에 전송된다. 그리고, 그 후에 단계 S3으로 되돌아가 다음 ACK가 오는 것을 대기한다.
또한, RDS=0인 경우에는 데이터 기억 영역의 데이터가 전부 전송된 것으로 생각되기 때문에, EBUS측의 스테이터스를 취득한다(단계 S6). 그리고, 이 취득된 스테이터스에 기초하여 CSW를 작성하여, USB측에 보내야 할 스테이터스를 세트한다(단계 S7).
도 17의 (b)의 본 실시예에서는, 펌웨어는 우선 DMA_Start을 1로 세트하고, EBUS에서의 DMA 전송을 시작시킨다(단계 S11). 또, AutoEnShort는 DMA 전송 전에 1로 세트되어 있다. 그리고, DMA_Running를 체크하여, EBUS로의 DMA 전송이 종료하였는지를 판단한다(단계 S12).
DMA 전송이 종료하였다고 판단된 경우에는(도 14의 I2), EBUS측 스테이터스를 취득한다(단계 S13). 그리고, 데이터 페이즈(전체 데이터의 전송)가 종료하였는지를 판단한다(단계 S14). 즉, 버퍼의 데이터 기억 영역이 비게 되어 최후의 패킷에 대한 ACK이 호스트로부터 되돌아왔는지를 판단한다. 그리고, 데이터 페이즈가 종료하였다고 판단한 경우에는 단계 S13에서 취득된 스테이터스에 기초하여 CSW를 작성하여, USB측에 보내야 할 스테이터스를 세트한다(단계 S15).
이와 같이, 도 17의 (b)의 본 실시예에서는 도 17의 (a)의 비교예에서 필요한 잔여 데이터 사이즈의 체크 처리(단계 S4)가 불필요하게 된다. 또한,EnshortPkt를 활성화로 세트하는 처리도 하드웨어에 의해 행해져, 펌웨어가 행하지 않아도 완료된다. 따라서, 펌웨어의 처리 부하를 경감할 수 있고 실효적인 데이터 전송 속도를 향상시킬 수 있다.
도 18에, 인터럽트를 이용하여 쇼트 패킷의 존재를 펌웨어에 통지하는 방법(도 15, 도 16)에서의 펌웨어의 처리의 플로우차트를 나타낸다.
도 18에서는, 펌웨어는 우선 EBUS로의 DMA 전송을 시작시킨 후, DMA 전송이 종료하였는지를 판단한다(단계 S21, S22).
DMA 전송이 종료하였다고 판단된 경우에는 인터럽트 신호 ShortINT가 검출(도 16의 J4)되었는지를 판단한다(단계 S23). 그리고, ShortINT가 검출된 경우에는 DMA 전송의 수신 데이터에 부가해야 할 정보(예를 들면 데이터 사이즈)를 데이터 기억 영역(FIFO)에 기입한다(단계 S24).
그리고, 모든 정보가 부가되었다고 판단되면(단계 S25), EnShortPkt를 1로 세트한다(단계 S26).
다음에, USB측에서의 ACK를 검출한다(단계 S27). 그리고, ACK가 검출된 경우에는 데이터 기억 영역의 잔여 데이터 사이즈 RDS가 0인지를 체크한다(단계 S28). 그리고, RDS가 0이 아닌 경우에는 단계 S27로 되돌아가, 다음 ACK가 검출되는 것을 대기한다.
한편, RDS가 0인 경우에는 데이터 기억 영역의 모든 데이터가 전송된 것으로 생각되기 때문에, EBUS측의 스테이터스를 취득한다(단계 S29). 그리고, 이 취득된 스테이터스에 기초하여 CSW를 작성하고, USB측에 보내야 할 스테이터스를세트한다(단계 S30).
3. 전자 기기
다음에, 본 실시예의 데이터 전송 제어 장치를 포함하는 전자 기기의 예에 대하여 설명한다. 예를 들면, 도 19의 (a)에 전자 기기의 일종인 프린터의 내부 블록도를 나타내고, 도 20의 (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)에 의해 종이에 프린트되어 출력된다.
도 19의 (b)에 전자 기기의 일종인 스캐너의 내부 블록도를 나타내고, 도 20의 (b)에 그 외관도를 나타낸다. CPU(520)는 시스템 전체의 제어 등을 행한다. 조작부(521)는 스캐너를 사용자가 조작하기 위한 것이다. ROM(526)에는 제어 프로그램 등이 저장되고, RAM(527)는 CPU(520)의 워크 영역으로서 기능한다. DMAC(528)는 DMA 컨트롤러이다.
광원, 광전 변환기 등으로 이루어지는 화상 판독부(데이터의 취득 처리를 행하는 장치)(522)에 의해 원고의 화상이 판독되고, 판독된 화상의 데이터는 화상 처리부(스캐너 엔진)(524)에 의해 처리된다. 그리고, 처리 후의 화상 데이터는 CPU(520) 또는 DMAC(528)에 의해 데이터 전송 제어 장치(500)로 보내진다. 데이터 전송 제어 장치(500)는 이 병렬의 화상 데이터를 직렬 데이터로 변환하고, USB를 통해 퍼스널 컴퓨터 등의 다른 디바이스에 송신한다.
도 19의 (c)에 전자 기기의 일종인 CD-RW 드라이브의 내부 블록도를 나타내고, 도 20의 (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)에 기억된다.
또, 도 19의 (a), 도 19의 (b), 도 19의 (c)에서 CPU(510, 520, 530) 외에 데이터 전송 제어 장치(500)에서의 데이터 전송 제어를 위한 CPU를 별도로 설치하도록 해도 된다.
본 실시예의 데이터 전송 제어 장치를 전자 기기에 이용하면, CPU 상에서 동작하는 펌웨어의 처리 부하가 경감되고, 염가의 CPU를 이용하는 것이 가능하게 된다. 또한, 데이터 전송 제어 장치의 저비용화, 소규모화를 도모할 수 있기 때문에, 전자 기기의 저비용화, 소규모화도 도모할 수 있게 된다.
또한, 본 실시예의 데이터 전송 제어 장치를 전자 기기에 이용하면, USB2.0에서의 HS 모드에서의 데이터 전송을 적정하게 행하는 것이 가능하게 된다. 따라서, 사용자가 퍼스널 컴퓨터 등에 의해 프린트 아웃의 지시를 행한 경우에, 적은 타임 러그로 프린트가 완료하게 된다. 또한, 스캐너에의 화상 취득의 지시 후에, 적은 타임 러그로 판독한 화상을 사용자는 볼 수 있게 된다. 또한, CD-RW로부터의 데이터의 판독이나 CD-RW에의 데이터의 기입을 고속으로 행하는 것이 가능하게 된다.
또 본 실시예의 데이터 전송 제어 장치를 적용할 수 있는 전자 기기로서는,상기 이외에도, 예를 들면 다양한 광 디스크 드라이브(CD-ROM, DVD), 광 자기 디스크 드라이브(MO), 하드디스크 드라이브, TV, VCR, 비디오 카메라, 오디오 기기, 전화기, 프로젝터, 퍼스널 컴퓨터, 전자수첩, 워드 프로세서 등 다양한 것을 생각할 수 있다.
또, 본 발명은 본 실시예에 한정되지 않고, 본 발명의 요지의 범위 내에서 다양한 변형 실시가 가능하다.
예를 들면, 본 발명의 데이터 전송 제어 장치의 구성은 도 6, 도 7, 도 15에 도시한 구성에 한정되지 않고 다양한 변형 실시가 가능하다.
또한 본 실시예에서는 USB의 Bulk-Only 사양에의 적용예를 설명하였지만, 본 발명의 적용이 USB의 Bulk-Only 사양에 한정되지는 않는다.
또한, 본 발명은 USB2.0에서의 데이터 전송에 적용되는 것이 특히 바람직하지만, 이것에 한정되지는 않는다. 예를 들면, USB2.0과 마찬가지의 사상에 기초하는 규격이나 USB2.0을 발전시킨 규격에서의 데이터 전송에도 본 발명을 적용할 수 있다.
본 발명에 따르면, 데이터 전송 제어 장치의 데이터 전송을 제어하는 처리 수단(펌웨어 등)의 처리 부하를 경감할 수 있기 때문에, 전자 기기의 저비용화, 소규모화 등을 도모할 수 있다.

Claims (23)

  1. 버스를 통한 데이터 전송을 위한 데이터 전송 제어 장치에 있어서,
    제1 방향의 데이터 전송에서는, 제1 버스를 통해 수신되어 제2 버스를 통해 송신되는 데이터를 기억하고, 제2 방향의 데이터 전송에서는 제2 버스를 통해 수신되어 제1 버스를 통해 송신되는 데이터를 기억하는 데이터 기억 영역을 갖는 버퍼와,
    상기 버퍼의 상기 데이터 기억 영역에의 데이터의 기입 및 상기 데이터 기억 영역에서의 데이터의 판독의 관리를 행하는 버퍼 관리 회로를 포함하며,
    상기 제1 방향의 데이터 전송에서는 제2 버스를 통한 데이터 송신이 종료한 것을 조건으로, 데이터 전송을 행하는 데이터 페이즈가 종료하였다고 판단하고, 상기 제2 방향의 데이터 전송에서는, 제2 버스를 통한 데이터 수신이 종료하고 상기 버퍼의 상기 데이터 기억 영역이 비게 된 것을 조건으로, 데이터 전송을 행하는 데이터 페이즈가 종료하였다고 판단하는 것을 특징으로 하는 데이터 전송 제어 장치.
  2. 제1항에 있어서,
    상기 제2 버스를 통해 송신 또는 수신되는 데이터의 사이즈를 카운트하는 카운터를 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  3. 제1항에 있어서,
    상기 제2 버스를 통한 데이터 수신의 스테이터스를 취득하고, 취득한 스테이터스를 데이터 페이즈의 종료 후의 스테이터스 페이즈에서 상기 제1 버스를 통해 송신하는 것을 특징으로 하는 데이터 전송 제어 장치.
  4. 제1항에 있어서,
    상기 제2 버스를 통한 데이터 수신이 종료하고 상기 버퍼의 상기 데이터 기억 영역의 잔여 데이터 사이즈가 최대 패킷 사이즈 미만인 경우에는, 상기 데이터 기억 영역의 쇼트 패킷을 상기 제1 버스를 통해 자동 송신하는 것을 특징으로 하는 데이터 전송 제어 장치.
  5. 제1항에 있어서,
    상기 제2 버스를 통한 데이터 수신이 종료하고 상기 버퍼의 상기 데이터 기억 영역의 잔여 데이터 사이즈가 최대 패킷 사이즈 미만인 경우에는, 상기 데이터 기억 영역에 쇼트 패킷이 존재하는 것을 처리 수단에 알리는 것을 특징으로 하는 데이터 전송 제어 장치.
  6. 제4항에 있어서,
    상기 데이터 기억 영역의 쇼트 패킷의 자동 송신을 유효 또는 무효로 설정하는 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  7. 제6항에 있어서,
    상기 제2 버스를 통해 수신된 데이터에 소정의 정보가 부가되어 상기 제1 버스를 통해 송신되는 경우에는, 상기 자동 송신이 무효로 설정되는 것을 특징으로 하는 데이터 전송 제어 장치.
  8. 제1항에 있어서,
    상기 데이터 기억 영역은 먼저 입력된 정보가 먼저 출력되는 기억 영역인 것을 특징으로 하는 데이터 전송 제어 장치.
  9. 제1항에 있어서,
    USB(Universal Serial Bus) 규격에 준거한 데이터 전송을 행하는 것을 특징으로 하는 데이터 전송 제어 장치.
  10. 버스를 통한 데이터 전송을 위한 데이터 전송 제어 장치에 있어서,
    제2 버스를 통해 수신되어 제1 버스를 통해 송신되는 데이터를 기억하는 데이터 기억 영역을 갖는 버퍼와,
    상기 버퍼의 상기 데이터 기억 영역에의 데이터의 기입 및 상기 데이터 기억 영역으로부터의 데이터의 판독의 관리를 행하는 버퍼 관리 회로를 포함하고,
    상기 제2 버스를 통한 데이터 수신이 종료하고 상기 버퍼의 상기 데이터 기억 영역의 잔여 데이터 사이즈가 최대 패킷 사이즈 미만인 경우에는, 상기 데이터기억 영역의 쇼트 패킷을 상기 제1 버스를 통해 자동 송신하는 것을 특징으로 하는 데이터 전송 제어 장치.
  11. 제10항에 있어서,
    상기 데이터 기억 영역의 쇼트 패킷의 자동 송신을 유효 또는 무효로 설정하는 수단을 포함하는 것을 특징으로 하는 데이터 전송 제어 장치.
  12. 제11항에 있어서,
    상기 제2 버스를 통해 수신된 데이터에 소정의 정보가 부가되어 상기 제1 버스를 통해 송신되는 경우에는, 상기 자동 송신이 무효로 설정되는 것을 특징으로 하는 데이터 전송 제어 장치.
  13. 제10항에 있어서,
    상기 데이터 기억 영역은 먼저 입력된 정보가 먼저 출력되는 기억 영역인 것을 특징으로 하는 데이터 전송 제어 장치.
  14. 제10항에 있어서,
    USB(Universal Serial Bus) 규격에 준거한 데이터 전송을 행하는 것을 특징으로 하는 데이터 전송 제어 장치.
  15. 버스를 통한 데이터 전송을 위한 데이터 전송 제어 장치에 있어서,
    제2 버스를 통해 수신되어 제1 버스를 통해 송신되는 데이터를 기억하는 데이터 기억 영역을 갖는 버퍼와,
    상기 버퍼의 상기 데이터 기억 영역에의 데이터의 기입 및 상기 데이터 기억 영역으로부터의 데이터의 판독의 관리를 행하는 버퍼 관리 회로를 포함하고,
    상기 제2 버스를 통한 데이터 수신이 종료하고 상기 버퍼의 상기 데이터 기억 영역의 잔여 데이터 사이즈가 최대 패킷 사이즈 미만인 경우에는, 상기 데이터 기억 영역에 쇼트 패킷이 존재하는 것을 처리 수단에 알리는 것을 특징으로 하는 데이터 전송 제어 장치.
  16. 제15항에 있어서,
    상기 데이터 기억 영역은 먼저 입력된 정보가 먼저 출력되는 기억 영역인 것을 특징으로 하는 데이터 전송 제어 장치.
  17. 제15항에 있어서,
    USB(Universal Serial Bus) 규격에 준거한 데이터 전송을 행하는 것을 특징으로 하는 데이터 전송 제어 장치.
  18. 제1항 내지 제9항 중 어느 한 항에 기재된 데이터 전송 제어 장치와,
    상기 데이터 전송 제어 장치 및 버스를 통해 전송되는 데이터의 출력 처리또는 취득 처리 또는 기억 처리를 행하는 장치
    를 포함하는 것을 특징으로 하는 전자 기기.
  19. 제10항 내지 제14항 중 어느 한 항에 기재된 데이터 전송 제어 장치와,
    상기 데이터 전송 제어 장치 및 버스를 통해 전송되는 데이터의 출력 처리 또는 취득 처리 또는 기억 처리를 행하는 장치
    를 포함하는 것을 특징으로 하는 전자 기기.
  20. 제15항 내지 제17항 중 어느 한 항에 기재된 데이터 전송 제어 장치와,
    상기 데이터 전송 제어 장치 및 버스를 통해 전송되는 데이터의 출력 처리 또는 취득 처리 또는 기억 처리를 행하는 장치
    를 포함하는 것을 특징으로 하는 전자 기기.
  21. 버스를 통한 데이터 전송을 위한 데이터 전송 제어 방법에 있어서,
    제1 방향의 데이터 전송에서는 제1 버스를 통해 수신되어 제2 버스를 통해 송신되는 데이터를 기억하고, 제2 방향의 데이터 전송에서는 제2 버스를 통해 수신되어 제1 버스를 통해 송신되는 데이터를 기억하는 데이터 기억 영역을 버퍼 상에 준비하고,
    상기 버퍼의 상기 데이터 기억 영역에의 데이터의 기입 및 상기 데이터 기억 영역으로부터의 데이터의 판독의 관리를 행하며,
    상기 제1 방향의 데이터 전송에서는 제2 버스를 통한 데이터 송신이 종료한 것을 조건으로, 데이터 전송을 행하는 데이터 페이즈가 종료하였다고 판단하고, 상기 제2 방향의 데이터 전송에서는 제2 버스를 통한 데이터 수신이 종료하고 상기 버퍼의 상기 데이터 기억 영역이 비게 된 것을 조건으로, 데이터 전송을 행하는 데이터 페이즈가 종료하였다고 판단하는 것을 특징으로 하는 데이터 전송 제어 방법.
  22. 버스를 통한 데이터 전송을 위한 데이터 전송 제어 방법에 있어서,
    제2 버스를 통해 수신되어 제1 버스를 통해 송신되는 데이터를 기억하는 데이터 기억 영역을 버퍼 상에 준비하고,
    상기 버퍼의 상기 데이터 기억 영역에의 데이터의 기입 및 상기 데이터 기억 영역으로부터의 데이터의 판독의 관리를 행하며,
    상기 제2 버스를 통한 데이터 수신이 종료하고 상기 버퍼의 상기 데이터 기억 영역의 잔여 데이터 사이즈가 최대 패킷 사이즈 미만인 경우에는, 상기 데이터 기억 영역의 쇼트 패킷을 상기 제1 버스를 통해 자동 송신하는 것을 특징으로 하는 데이터 전송 제어 방법.
  23. 버스를 통한 데이터 전송을 위한 데이터 전송 제어 방법에 있어서,
    제2 버스를 통해 수신되어 제1 버스를 통해 송신되는 데이터를 기억하는 데이터 기억 영역을 버퍼 상에 준비하고,
    상기 버퍼의 상기 데이터 기억 영역에의 데이터의 기입 및 상기 데이터 기억영역으로부터의 데이터의 판독의 관리를 행하며,
    상기 제2 버스를 통한 데이터 수신이 종료하고 상기 버퍼의 상기 데이터 기억 영역의 잔여 데이터 사이즈가 최대 패킷 사이즈 미만인 경우에는, 상기 데이터 기억 영역에 쇼트 패킷이 존재하는 것을 처리 수단에 알리는 것을 특징으로 하는 데이터 전송 제어 방법.
KR10-2002-0025889A 2001-05-14 2002-05-10 데이터 전송 제어 장치, 전자 기기 및 데이터 전송 제어방법 KR100460650B1 (ko)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
KR20020087859A KR20020087859A (ko) 2002-11-23
KR100460650B1 true KR100460650B1 (ko) 2004-12-09

Family

ID=18989584

Family Applications (1)

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

Country Status (8)

Country Link
US (1) US6901465B2 (ko)
EP (1) EP1260908B1 (ko)
JP (1) JP3870717B2 (ko)
KR (1) KR100460650B1 (ko)
CN (1) CN1282094C (ko)
AT (1) ATE301307T1 (ko)
DE (1) DE60205305T2 (ko)
TW (1) TW556090B (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6804232B1 (en) * 2000-03-27 2004-10-12 Bbnt Solutions Llc Personal area network with automatic attachment and detachment
US7386003B1 (en) * 2000-03-27 2008-06-10 Bbn Technologies Corp. Systems and methods for communicating in a personal area network
JP3680763B2 (ja) * 2001-05-14 2005-08-10 セイコーエプソン株式会社 データ転送制御装置及び電子機器
US7421257B1 (en) 2001-11-30 2008-09-02 Stragent, Llc Receiver scheduling in ad hoc wireless networks
JP3703439B2 (ja) * 2002-03-19 2005-10-05 Necマイクロシステム株式会社 データ転送制御装置及び方法
JP2004029898A (ja) * 2002-06-21 2004-01-29 Renesas Technology Corp データプロセッサ
JP2005100064A (ja) * 2003-09-24 2005-04-14 Canon Inc 画像処理装置、画像処理方法およびプログラム
JP2005122372A (ja) 2003-10-15 2005-05-12 Seiko Epson Corp データ転送制御装置、電子機器及びデータ転送制御方法
US20050268029A1 (en) * 2004-05-25 2005-12-01 Chih-Chiang Wen Optical Disc Drive that Downloads Operational Firmware from an External Host
US20050265266A1 (en) * 2004-05-25 2005-12-01 Chih-Chiang Wen Optical disc drive that downloads operational firmware from an external host
US20080301358A1 (en) * 2004-05-25 2008-12-04 Chih-Chiang Wen Electronic device that Downloads Operational Firmware from an External Host
US20050273541A1 (en) * 2004-06-04 2005-12-08 Texas Instruments Incorporated Circuit and method for adaptively recognizing a data packet in a universal serial bus network device
WO2005125093A2 (en) * 2004-06-15 2005-12-29 Koninklijke Philips Electronics N.V. Bus controller for handling split transactions
JP4567433B2 (ja) * 2004-12-27 2010-10-20 ルネサスエレクトロニクス株式会社 ホスト装置、デバイス装置、通信システム及びデータ送受信方法
JP4412191B2 (ja) * 2005-02-04 2010-02-10 セイコーエプソン株式会社 データ転送制御装置及び電子機器
JP2006215873A (ja) * 2005-02-04 2006-08-17 Toshiba Corp 制御装置、情報処理装置、及び転送処理方法
JP2006235994A (ja) * 2005-02-24 2006-09-07 Nec Electronics Corp ブリッジシステム、ブリッジシステム制御方法、情報処理機器、周辺機器及びプログラム
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
JP4966505B2 (ja) * 2005-03-24 2012-07-04 ブラザー工業株式会社 パケット通信システム
JP4931912B2 (ja) * 2006-04-26 2012-05-16 パナソニック株式会社 信号伝送方法、送受信装置及び通信システム
GB0616025D0 (en) 2006-08-11 2006-09-20 Aspex Semiconductor Ltd Improvements relating to direct data input/output interfaces
JP4337891B2 (ja) * 2007-03-01 2009-09-30 セイコーエプソン株式会社 記憶端末および情報処理システム
US20090083475A1 (en) * 2007-09-24 2009-03-26 Mediatek Inc. Apparatus and method for updating firmware stored in a memory
CN101458672B (zh) * 2007-12-10 2011-08-24 联想(北京)有限公司 一种热插拔设备、电脑及数据传输指示方法
TW200945052A (en) * 2008-04-21 2009-11-01 Ralink Technology Corp Method for increasing USB transmission rate
US20160357462A1 (en) * 2015-06-08 2016-12-08 Samsung Electronics Co., Ltd. Nonvolatile Memory Modules and Data Management Methods Thereof
TWI812490B (zh) * 2022-09-27 2023-08-11 宏達國際電子股份有限公司 信號收發裝置及其信號收發方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10326251A (ja) * 1997-05-01 1998-12-08 Smc Standard Microsyst Corp Usb周辺マイクロコントローラ
KR19990067763A (ko) * 1998-01-07 1999-08-25 클라크 3세 존 엠. 유에스비 등시 데이타를 전송 및 수신하는 장치 및 방법
JP2000269961A (ja) * 1999-03-16 2000-09-29 Huabang Electronic Co Ltd Usbホストとネットワークとの間のデータ転送素子と、この転送を制御するフロー制御方法
JP2001036546A (ja) * 1999-07-16 2001-02-09 Hitachi Ltd 受信バッファ制御装置

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5131081A (en) * 1989-03-23 1992-07-14 North American Philips Corp., Signetics Div. System having a host independent input/output processor for controlling data transfer between a memory and a plurality of i/o controllers
JP3515142B2 (ja) * 1992-06-11 2004-04-05 セイコーエプソン株式会社 データ転送制御装置
US5546546A (en) * 1994-05-20 1996-08-13 Intel Corporation Method and apparatus for maintaining transaction ordering and arbitrating in a bus bridge
US5771359A (en) * 1995-10-13 1998-06-23 Compaq Computer Corporation Bridge having a data buffer for each bus master
JP2996179B2 (ja) * 1996-07-22 1999-12-27 日本電気株式会社 Pciバス・システム
US5987554A (en) * 1997-05-13 1999-11-16 Micron Electronics, Inc. Method of controlling the transfer of information across an interface between two buses
US6073190A (en) * 1997-07-18 2000-06-06 Micron Electronics, Inc. System for dynamic buffer allocation comprising control logic for controlling a first address buffer and a first data buffer as a matched pair
US6128673A (en) * 1997-11-14 2000-10-03 Aronson; Michael D. Method and apparatus for communication and translation of a plurality of digital protocols
US6279087B1 (en) * 1997-12-22 2001-08-21 Compaq Computer Corporation System and method for maintaining coherency and improving performance in a bus bridge supporting write posting operations
US6154465A (en) * 1998-10-06 2000-11-28 Vertical Networks, Inc. Systems and methods for multiple mode voice and data communications using intelligenty bridged TDM and packet buses and methods for performing telephony and data functions using the same
JP3231017B2 (ja) * 1998-05-25 2001-11-19 日本電信電話株式会社 パケット網間転送方法
US6266715B1 (en) 1998-06-01 2001-07-24 Advanced Micro Devices, Inc. Universal serial bus controller with a direct memory access mode
US6628653B1 (en) * 1998-06-04 2003-09-30 Nortel Networks Limited Programmable packet switching device
US6161160A (en) * 1998-09-03 2000-12-12 Advanced Micro Devices, Inc. Network interface device architecture for storing transmit and receive data in a random access buffer memory across independent clock domains
US6202101B1 (en) * 1998-09-30 2001-03-13 Compaq Computer Corporation System and method for concurrently requesting input/output and memory address space while maintaining order of data sent and returned therefrom
JP3543647B2 (ja) * 1998-10-27 2004-07-14 セイコーエプソン株式会社 データ転送制御装置及び電子機器
JP3543648B2 (ja) * 1998-10-27 2004-07-14 セイコーエプソン株式会社 データ転送制御装置及び電子機器
US6289406B1 (en) * 1998-11-06 2001-09-11 Vlsi Technology, Inc. Optimizing the performance of asynchronous bus bridges with dynamic transactions
US6219737B1 (en) * 1998-12-10 2001-04-17 International Business Machines Corporation Read request performance of a multiple set buffer pool bus bridge
US6405276B1 (en) * 1998-12-10 2002-06-11 International Business Machines Corporation Selectively flushing buffered transactions in a bus bridge
US6256699B1 (en) * 1998-12-15 2001-07-03 Cisco Technology, Inc. Reliable interrupt reception over buffered bus
US6460108B1 (en) * 1999-03-31 2002-10-01 Intel Corporation Low cost data streaming mechanism
US6708244B2 (en) * 1999-07-22 2004-03-16 Cypress Semiconductor Corp. Optimized I2O messaging unit
US6711181B1 (en) * 1999-11-17 2004-03-23 Sony Corporation System and method for packet parsing and data reconstruction in an IEEE 1394-1995 serial bus network
US6684272B1 (en) * 1999-12-23 2004-01-27 Intel Corporation Throughput enhancement for a universal host controller interface in a universal serial bus
US6529521B1 (en) * 1999-12-27 2003-03-04 Emc Corporation Data storage system
US6807585B2 (en) * 2001-02-22 2004-10-19 Ati Technologies, Inc. Method and system for parsing section data

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10326251A (ja) * 1997-05-01 1998-12-08 Smc Standard Microsyst Corp Usb周辺マイクロコントローラ
KR19990067763A (ko) * 1998-01-07 1999-08-25 클라크 3세 존 엠. 유에스비 등시 데이타를 전송 및 수신하는 장치 및 방법
KR100290729B1 (ko) * 1998-01-07 2001-05-15 클라크 3세 존 엠. 유에스비 등시 데이타를 전송 및 수신하는 장치 및 방법
JP2000269961A (ja) * 1999-03-16 2000-09-29 Huabang Electronic Co Ltd Usbホストとネットワークとの間のデータ転送素子と、この転送を制御するフロー制御方法
JP2001036546A (ja) * 1999-07-16 2001-02-09 Hitachi Ltd 受信バッファ制御装置

Also Published As

Publication number Publication date
EP1260908B1 (en) 2005-08-03
CN1385791A (zh) 2002-12-18
US20020169904A1 (en) 2002-11-14
US6901465B2 (en) 2005-05-31
TW556090B (en) 2003-10-01
DE60205305D1 (de) 2005-09-08
EP1260908A3 (en) 2003-05-14
KR20020087859A (ko) 2002-11-23
DE60205305T2 (de) 2006-05-24
CN1282094C (zh) 2006-10-25
ATE301307T1 (de) 2005-08-15
JP3870717B2 (ja) 2007-01-24
JP2002342261A (ja) 2002-11-29
EP1260908A2 (en) 2002-11-27

Similar Documents

Publication Publication Date Title
KR100460650B1 (ko) 데이터 전송 제어 장치, 전자 기기 및 데이터 전송 제어방법
KR100474220B1 (ko) 데이터 전송 제어 장치, 전자 기기 및 데이터 전송 제어방법
US7028109B2 (en) Data transfer control device including buffer controller with plurality of pipe regions allocated to plurality of endpoints
US7349973B2 (en) Data transfer control device, electronic equipment, and data transfer control method
US7237047B2 (en) Data transfer control device, electronic equipment, and data transfer control method
EP1389760B1 (en) Data transfer control system, program and data transfer control method
JP3632695B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法
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
US7359996B2 (en) Data transfer control device, electronic equipment, and data transfer control method
US7428600B2 (en) Data transfer control device, electronic equipment, and data transfer control method
KR20030089480A (ko) 통신 컨트롤러 및 통신 방법
JP2003316735A (ja) データ転送制御装置、電子機器及びデータ転送制御方法

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: 20121114

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20131101

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20141104

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20151102

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee