1 장 USB(Universal Serial Bus) 기본개요 이번장에서는앞으로책에서소개하는 USB 와관련된개념을가볍게살펴보는시간을가진다. 구체적인내용은이어지는뒷장에서자세하게다룰것이다. [ 글을읽기전에잠시확인하자!] 저자의한마디 * USB 2.0 USB 릴리즈버젼의종류

Similar documents
를수있다. * 링크명령어 링크는양쪽파트너사이에지정된링크명령어 ( 프로토콜계층에서정의하지않은 ) 을별도로준비해 서사용한다. 링크명령어는링크상태의전환및흐름제어 (Flow Control) 등에사용된다. * 링크전원관리 USB 3 SS 에서는링크의버스전원사용상태가어떤상태인지를

드포인트가지원하는 MaxPacketSize가 8, 16, 32, 64 중에하나이기때문에, 호스트는 FS 디바이스가지원하는컨트롤엔드포인트의 MaxPacketSize 값을정확하게알아야한다. 이런정보는디바이스디스크립터 (Device Descriptor) 에포함되어있으며, 이

[ 네트워크 1] 3 주차 1 차시. IPv4 주소클래스 3 주차 1 차시 IPv4 주소클래스 학습목표 1. IP 헤더필드의구성을파악하고요약하여설명할수있다. 2. Subnet ID 및 Subnet Mask 를설명할수있고, 각클래스의사용가능한호스트수와사설 IP 주소및네트

제가되기때문에보다효과적이고공격적인전력공급정책이필요하게된다. 서스팬드 (Suspend) 상태의버스전력공급상태를원래의상태로복원하는작업을리쥼 (Resume) 이라 고부른다. USB 에서정의하는서스팬드는크게 2 가지로나뉜다. 하나는전역 (Global) 서스팬드이고다른하나는선택

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

PowerPoint 프레젠테이션

Microsoft Word _whitepaper_latency_throughput_v1.0.1_for_

실험 5

IP 심화 라우팅프로토콜적용시 라우팅테이블에서 이니셜이있는네트워크를설정하는것 : onnected 직접연결된네트워크를의미한다. 그러므로라우팅은 나는이런네트워크와연결되어있다. 를직접연결된라우터들에게알려주는것 1>en 1#conf t 1(config)#router rip 1

개요

일반적인 네트워크의 구성은 다음과 같다

시스템, 네트워크모니터링을통한보안강화 네트워크의미래를제시하는세미나 세미나 NetFocus 2003 : IT 관리자를위한네트워크보안방법론 피지피넷 /

슬라이드 1

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

Microsoft Word - NAT_1_.doc

Microsoft Word - How to make a ZigBee Network_kr

원문 : USB in a NutShell, Beyond Logic. 번역자 : lifeisforu( ) 주의 : 허락받고번역한것이아니므로문제가되면삭제될수있습니다. 주의 : 번역

SRC PLUS 제어기 MANUAL

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - 30.ppt [호환 모드]

API 매뉴얼

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

그룹웨어와 XXXXX 제목 예제

The Pocket Guide to TCP/IP Sockets: C Version

슬라이드 1

BY-FDP-4-70.hwp

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

입출력된다. 이러한무선 USB 시스템에서데이터의송신은 MMC(Micro-scheduled Management Command) 내에 USB 토큰 (Token) 을전달 (broadcast) 하며, 데이터와핸드쉐이크단계에서데이터송수신 (data communication) 의

Microsoft Word - release note-VRRP_Korean.doc

슬라이드 1

슬라이드 제목 없음

제11장 프로세스와 쓰레드

Microsoft PowerPoint - 06-IPAddress [호환 모드]

1 1. INTRODUCTION 2 2. DOWNLOAD Windows Desktop & Server Max OS X, Linux, Windows CE 2 3. API REFERENCE CAN_OpenVcp CAN_Op

C# Programming Guide - Types

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft Word - logic2005.doc

Microsoft Word - PLC제어응용-2차시.doc

2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

그룹웨어와 XXXXX 제목 예제

Switching

Chapter ...

PowerPoint Presentation

Microsoft PowerPoint - chap01-C언어개요.pptx

-. Data Field 의, 개수, data 등으로구성되며, 각 에따라구성이달라집니다. -. Data 모든 의 data는 2byte로구성됩니다. Data Type는 Integer, Float형에따라다르게처리됩니다. ( 부호가없는 data 0~65535 까지부호가있는

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

2009년 상반기 사업계획

슬라이드 제목 없음

강의 개요

USB Driver Interface(USBDI) 라고부른다. * 호스트컨트롤러드라이버 (xhcd) 호스트컨트롤러하드웨어와 USBD 사이에존재하는소프트 웨어영역을제공한다. * 호스트컨트롤러 (xhc) 보통 Low Speed, Full Speed, High Speed,

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Mango-E-Toi Board Developer Manual

로거 자료실

1아이리포 기술사회 모의고사 참조답안

Microsoft PowerPoint - polling.pptx

ISP and CodeVisionAVR C Compiler.hwp

0. 들어가기 전

chap 5: Trees

Mango220 Android How to compile and Transfer image to Target

USB2CAN USB2CAN-UART USB2CAN-FIFO API Reference Manual Copyright NTREXLAB

고객 카드

OSTSen-MOS100 사용자설명서 Ver 1.1 Onsystech OSTSen-MOS100 Ver of 8 Onsystech

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>


hd1300_k_v1r2_Final_.PDF

시스코 무선랜 설치운영 매뉴얼(AP1200s_v1.1)

Microsoft PowerPoint 웹 연동 기술.pptx

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

1. GigE Camera Interface를 위한 최소 PC 사양 CPU : Intel Core 2 Duo, 2.4GHz이상 RAM : 2GB 이상 LANcard : Intel PRO/1000xT 이상 VGA : PCI x 16, VRAM DDR2 RAM 256MB

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

Microsoft PowerPoint - tem_5

Microsoft Word doc

리눅스 프로세스 관리

MVVM 패턴의 이해

TTA Verified : HomeGateway :, : (NEtwork Testing Team)

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

PowerPoint Presentation

chap 5: Trees

Tablespace On-Offline 테이블스페이스 온라인/오프라인


(MHT-SB112\273\347\276\347\274\255.hwp)

TTA Journal No.157_서체변경.indd

CAN-fly Quick Manual

슬라이드 제목 없음

Visual Basic 반복문

OSTSen-PIR100 사용자설명서 Ver 1.1 Onsystech OSTSen-PIR100 V1.1 1 of 8 Onsystech

PowerPoint 프레젠테이션

PowerPoint Template

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp

adfasdfasfdasfasfadf

OCW_C언어 기초

온라인등록용 메뉴얼

OSTSen-THL100 사용자설명서 Ver 1.1 Onsystech OSTSen-THL100 Ver1.1 1 of 8 Onsystech

Transcription:

1 부 USB 2(Low Speed, Full Speed, High Speed) 와 USB 3(Super Speed, Super Speed Plus) 를소개한다. 다양한 USB 트랜잭션을소개하고, USB 버스에서전원을효과적으로사용하는방법이어떻게소 개되어있는지를살펴본다.

1 장 USB(Universal Serial Bus) 기본개요 이번장에서는앞으로책에서소개하는 USB 와관련된개념을가볍게살펴보는시간을가진다. 구체적인내용은이어지는뒷장에서자세하게다룰것이다. [ 글을읽기전에잠시확인하자!] 저자의한마디 * USB 2.0 USB 릴리즈버젼의종류로서, Low Speed, Full Speed, High Speed 를정의하고있다. * USB 3.0 USB 릴리즈버젼의종류로서, 이전버전의통신속도와 Enhanced Super Speed 를정의 하고있다. * USB 3.1 - USB 릴리즈버젼의종류로서, 이전버전의통신속도와 Enhanced Super Speed Plus 를 정의하고있다. 글의내용중에서 USB 2.0 이라는표현이자주나온다. 이것은당연히 USB 3.0 을의미하지는않 지만, USB 3.0 내부에 USB 2.0 이포함되어있다는점에서의미파악을잘해야한다. 근래에사용되는 USB 디바이스장치는 Low Speed, High Speed 가여전히많다. 따라서, 이들의통신속도를고려하는것은당연하며, 이것을 USB 2.0 이라는범주의용어로대체사용하는것이므로혹시독자들중에서 USB 2.0을과거버전이라는선입견을가지고가볍게치부해버리는실수를저지르지말기를바란다.

1.1 USB 통신과트랜잭션 그림 1-1 USB 호스트컨트롤러 (Host Controller) 와디바이스 (Device) 들의연결 [ 그림 1-1] 에서보여주는용어들은익숙해져야하는용어들이다. Host Controller USB 통신의주체. 모든 USB 통신은 Host Controller 가통신의시작을요구한다. Root Hub Host Controller 와함께물리적으로연결되어있는허브장치. USB 장치들이 Host Controller 와통신을하기위해서는 Root Hub 를거쳐야한다. 허브는 USB 장치를검색하고, 전원을 공급하는역할을한다. Upstream Port/Downstream Port USB 통신은작은의미에서 Upstream Port와 Downstream Port 간의링크 ( 연결 ) 를그주축으로한다. 모든 USB 장치들은저마다하나의 Upstream Port를가지고있어서, 자신의상위계층의 USB 장치혹은호스트컨트롤러와통신을하는링크를형성한다. 허브와같은장치들은복수개의 Downstream Port를가지고있어서, 하위계층의 USB 장치와통신을하는링크를형성한다. External Hub 일종의 USB 장치중하나이다. 복수개의 USB 장치를호스트컨트롤러에연결하는 기능을제공한다. USB 에서는최대 5 개의외장허브를직렬로연결하는것이허용된다. Device USB 통신의대상. USB 통신은주체 (Host Controller) 와대상 (Device) 간의통신을목적으로 한다. 여기에해당하는실예는, USB 마우스장치, USB 이동식디스크장치, USB 카메라장치등이될

수있다. USB(USB버스 ) 는호스트 ( 호스트컨트롤러 ) 와디바이스간의통신방법을사용한다. 여기서통신이란데이터송수신을의미한다. USB통신의한쪽대상은호스트가되고다른대상은디바이스가된다. 호스트에서디바이스로데이터를보내는것을송신 (Tx), 디바이스에서호스트로데이터를보내는것을수신 (Rx) 이라고부른다. 모든통신의시작은호스트가지시한다. 이것을다른식으로설명하자면, 송신 ( 데이터를보내라!) 과수신 ( 데이터를달라!) 의요청의시작을모두호스트가지시한다는뜻이다. USB 디바이스들간에는직접적인데이터송, 수신이불가능하다. 반드시 USB 디바이스는호스트와 데이터통신만가능하기때문에, 특정 USB 디바이스 A 와또다른 USB 디바이스 B 가데이터통신을 하기위해서는하나의호스트가그중재역할을수행해야한다. 또한, 하나의호스트가복수개의디바이스와동시에 USB 통신을하려면 USB 대역폭을나누어사용 할수밖에없다. 어떻게나눌것인가는아주중요한문제이다. 예를들어 USB마우스와 USB디스크를동시에사용하는상황에서, 사용자가 USB디스크에파일을복사하고있는과정중에 USB마우스를움직였다고가정해보자. 파일을복사하고있는상황이라고하더라도마우스커서가화면에서움직이는것이자주끊어지는느낌을준다면사용자는어떤느낌을가지게될까? 이번에는 USB 마우스를움직이고있는상황에서 USB 디스크를컴퓨터에연결하는상황을가정해 보자. 마우스를움직이고있는상황에서 USB 디스크를컴퓨터에연결할때잠시동안화면에마우 스커서의움직임이멈추는상황이벌어진다면사용자는어떤느낌을받을까? 이런모든상황은하나의호스트가복수개의 USB디바이스와통신하는데있어서 USB대역폭을재대로관리하지못한결과로나타나는현상이다. 호스트가디바이스가주고받아야하는큰양의데이터는보다작은크기의패킷 (Packet) 으로쪼개져서사용된다. 큰양의데이터가쪼개져서패킷형태로나누어져야, 호스트는현재연결되어있는디바이스간의형평성있는 USB대역폭관리알고리즘을사용할수있다. 이것을정리해서예로들어설명하면, 하나의호스트가 3 개의 USB 디바이스 (A, B, C) 와연결되어 있다면, 호스트가사용할수있는전체 USB 대역폭은 1/3 씩나누어서각각의 USB 디바이스와통 신하는목적으로사용되어진다는뜻이다.

그림 1-2 마우스, 디스크를동시에사용하는상황에서대역폭을쓰는모습 호스트는패킷형태로나누어진데이터를대역폭에사용하는데있어서트랜잭션 (Transaction) 이라는프로토콜을사용한다. 트랜잭션은호스트와디바이스 ( 정확하게말하자면, 엔드포인트 ) 간의주고받는프로토콜이다. 엔드포인트는디바이스내에존재하는구성요소이며, 패킷을생성하거나소비하는역할을수행한다. 트랜잭션은몇개의패킷 ( 데이터패킷, 토큰패킷, 상태패킷 ) 을사용해서호스트와디바이스사이에 데이터패킷을전송하는프로토콜을구성한다. 데이터패킷의종류와엔드포인트 (Endpoint) 에따라 서조금씩다른프로토콜을사용한다. 꼭기억해야하는것은, 각각의트랜잭션이서로겹치지않는다는점이다. 물론, 이들디바이스가 하나의동일한호스트와통신하는경우에한한다.

그림 1-3 다양한종류의데이터를전송하려는트랜잭션들 (USB 2.0) [ 그림 1-3] 을보면, 대표적인 5 가지트랜잭션을소개하고있다. 이들의목적을정확하게알고있어 야한다. SETUP 트랜잭션 SETUP Data(8 바이트 ) 패킷을호스트에서디바이스로전달하는것이목적이다. OUT 트랜잭션 Data ( 내용은중요하지않다 ) 패킷을호스트에서디바이스로전달하는것이목적 이다. IN 트랜잭션 Data ( 내용은중요하지않다 ) 패킷을디바이스에서호스트로전달하는것이목적이 다. OUT 트랜잭션 ( 상태패킷을사용하지않음 ) Data ( 내용은중요하지않다 ) 패킷을호스트에서디바 이스로전달하는것이목적이다. 디바이스는 Data 패킷의정상수신을호스트로보고하지않는다. IN 트랜잭션 ( 상태패킷을사용하지않음 ) Data ( 내용은중요하지않다 ) 패킷을디바이스에서호스 트로전달하는것이목적이다. 호스트는 Data 패킷의정상수신을디바이스로보고하지않는다. [ 표 1-1] 을보면 USB 2.0(Low Speed, Full Speed, High Speed) 에서사용되는패킷의종류를알수

있다. 패킷의종류는패킷에포함된패킷 ID(PID) 에의해서결정된다. 패킷은크게토큰 (Token) 패킷, 데이터패킷, 핸드쉐이크 ( 상태 ) 패킷그리고특별한목적으로사용되 는패킷들이있다. USB 2.0 트랜잭션은항상토큰패킷을그시작으로한다. 표 1-1 패킷 ID(PID) 에따르는패킷의종류 (USB 2.0) 패킷ID 유형 패킷ID 이름 4비트값 (2진수) 토큰 (Token) OUT 0001 IN 1001 SOF 0101 SETUP 1101 데이터 (Data) DATA0 0011 DATA1 1011 DATA2 0111 MDATA 1111 핸드쉐이크 (Handshake) ACK 0010 NAK 1010 STALL 1110 NYET 0110 특별한사용 PRE(Low Speed) 1100 ERR 1100 SPLIT 1000 PING 0100 LPM에서사용됨 0000 우리는이책을통해서 USB 2.0 과 USB 3.0 의추가된내용을배우려고한다. 따라서, 간단하게라도 USB 3.0 에서추가된 Enhanced Super Speed 통신에서사용되는패킷들도설명하도록하겠다. 표 1-2 패킷의종류 (USB 3.0) 패킷유형 Link Management 패킷유형 5비트값 (2진수) 패킷서브유형 패킷서브유형 4비트값 (2진수) 00000 Set Link 0001 U2 Inactivity Timeout 0010

Packet Vendor Device Test 0011 Port Capability 0100 Port Configuration 0101 Port Configuration Response 0110 Transaction 00100 ACK 0001 Packet NRDY 0010 ERDY 0011 STATUS 0100 STALL 0101 DEV_NOTIFICATION 0110 PING 0111 PING_RESPONSE 1000 Data Packet Header 01000 정의안됨 Isochronous Timestamp Packet 01100 정의안됨 [ 그림 1-3] 을보면알수있듯이모든트랜잭션은호스트에서그요청을시작한다.( 여기서는독자 들의이해를돕기위해서 USB 2.0 의경우를예를들어서설명하고있다 ). 결국호스트가 USB 대역폭을스케쥴링 ( 계획 ) 하는가장기본적인단위는데이터전송을위해서패킷 을실어보내는트랜잭션이라고보는편이옳다. 주변에서 USB를많이이해하고있는독자들을쉽게판별해보는척도로삼는다면, 필자는여러가지트랜잭션의모습이머리속에이미지 (Image) 로서쉽게그려지는정도를삼기도한다. 그만큼트랜잭션은 USB에서중요한요점중에하나이다.( 고등수학에서배우던삼각함수정도의난이도와중요성이라고할까?) 1.2 USB 릴리즈버전과통신속도

USB 3.0(USB 3.1) 은기존 USB 2.0 보다약 10 배정도더빠른속도를지원하고있다. USB 3.0(USB 3.1) 은속도향상을위해서 Burst 벌크통신기능을제공한다. USB 3.0(USB 3.1) 은기존 USB 2.0 에없었던링크프로토콜층이보강되었다. USB 3.0(USB 3.1) 은기존 USB 2.0 보다불필요한전력소비량을줄였다 많이오해하고있는부분중에하나가 USB 릴리즈버전을통신속도로규정하고있는잘못된이해가그것이다. ( 우리는주변에서 USB 3.0 은 USB 2.0 보다빠른거잖아! 라는말을자주듣는다. 잘못된이해이다 ) 물론 USB버전은계속증가해오고있지만, USB가추구하고있는아주중요한특징중하나는과거버전과의호환성이다. 간단하게예를들면, 마우스는통상가장느린장치중에하나로서 USB 1.0때부터사용되던 Low Speed 장치이다. 지금대부분의메인보드에서채택하고있는 USB버스는 USB 3.0 이다. 그렇다면, 이와같은환경에서마우스를사용할수없다는것을이해하기는어렵다. 이처럼 USB버스는최신버젼으로릴리즈되었지만, 하위버전에서사용되는통신속도를그대로지원하는것이우리가 USB를선호하는이유중에하나이다. 사람들은대개 USB 3.0 이라고하면, Enhanced Super Speed( 줄여서 Super Speed) 만이야기를한 다. 잘못된언급이라고본다. 하위버젼을모두담고이야기를해야하는것이다. USB 3.1 이가장최신버젼이다. USB 3.1 은이전버전 (USB 3.0) 과호환성을두고있다. USB 1.x 에서는 Low Speed(LS) 와 Full Speed(FS) 를지원했다. USB 2.x 에서는추가로 High Speed(HS) 가. 지원되었다. USB 3.0 에서는추가로 Enhanced Super Speed(SS) 가지원되었다. USB 3.1 에서는추가로 Enhanced Super Speed Plus(SS+) 가지원되었다. (USB 3.0 과 USB 2.0 은많은차이점을가지고있지만, 구체적인내용을뒤장에서배우도록한다 ) 하위호환성을그대로가지고있기때문에, 결과적으로 USB 3.1 은 LS, FS, HS, SS 그리고 SS+ 모두 를지원하고있다.(USB 3.1 에서는 SS 를 SS Gen1, SS+ 을 SS Gen2 로부른다 ) 다시한번강조하지만, 대부분의일반버스에서는속도가빨라지면그만큼이전의느린속도는 잊혀지지만, USB 를사용하는주변장치들은이전에느린속도에맞추어서제작된하드웨어를그대 로사용하고있는것이현실이다. 이점을꼭기억해야한다.

USB 키보드는 Low Speed를사용하는대표적인장치이다. 이장치를 USB 3.1환경에서사용한다고하더라도지원되는속도는여전히 Low Speed라는것이다. 키보드장치는속도가그이상빨라지지않도록설계되어있기때문이다. 사실키보드장치가생성해내는데이터는아주작은양의데이터이기때문에 Low Speed에서도충분한속도를사용할수있다. 반면복사가빠르면빠를수록유리한 USB 이동식디스크의경우, 예전에는흔하지않았던 Enhanced Super Speed.(Plus) 를지원하는보다빠른이동식디스크가시중에많이나와있는것이 사실이다. 표 1-3 USB 가지원하는통신속도 LS FS HS SS SS+ 최대전송속도 1.5 Mbps 12Mbps 480Mbps 5Gbps 10Gbps USB 통신속도가결정되는요인은호스트 ( 허브 ) 와디바이스가어떤속도를지원하는가에따라서 결정된다. 아무리디바이스가 Enhanced Super Speed 를사용하고싶다고하더라도호스트 ( 허브 ) 가 High Speed 까지만지원한다면둘간의통신은 High Speed 를넘지못한다. 그림 1-4 호스트 ( 허브 ), 디바이스가연결된모습 ( 서로다른속도를지원하는장치 )

디바이스가빠른속도를원한다고하더라도연결된허브가이것을지원할수없는경우도있으며, 허브는빠른속도를지원할수있지만연결된디바이스가느린경우도있다. 이처럼가장빠른속도를사용하기위해서는디바이스와허브양쪽이모두빠른속도를지원할수있어야한다. ( 참고로허브에디바이스가연결된다는뜻은허브가제공하는 Downstream Port 에디바이스가제공하는 Upstream Port가연결된다는뜻이다. 앞으로허브에디바이스가연결된다는언급이나오면오해하지않기를바란다 ) 1.3 파이프 (PIPE) 와엔드포인트 (ENDPOINT) 그림 1-5 파이프와엔드포인트의연결관계도식도

파이프 (Pipe) 는호스트에서준비된메모리가그실체이다. 엔드포인트 (Endpoint) 는디바이스에서데이터를만들어내거나 (Source), 소비 (Sink) 하는주체이다. 호스트에서동작하는소프트웨어 (USB를사용하려는응용프로그램 ) 는엔드포인트와직접통신하는개념보다는파이프를통해서통신하게된다. 엔드포인트는데이터를만들어내거나, 소비하는주체이기때문에엔드포인트와실제로통신을하기위해서는적절한트랜잭션을사용해야한다. 이와같은트랜잭션절차는호스트에서스케쥴링하는 USB대역폭과관련된내용을포함해야하는조금은복잡한알고리즘이사용되기때문에, 응용프로그램에서이런트랜잭션의구체적인내용을모르는상황에서추상적인파이프 (Pipe) 라는개념의메모리를통해서데이터를엔드포인트로부터가져오거나, 엔드포인트로보내게된다. 호스트가엔드포인트로전송하기위해서파이프에담는데이터는그크기가데이터패킷의크기를고려할필요가없다. 호스트는큰양의데이터를전송요청할수있으며, 데이터가작은크기의패킷으로나누어지는부분은트랜잭션을통해서일어나는부분이지응용프로그램이구태여알필요가없는부분이기때문이다. 또한당연히호스트가엔드포인트로부터데이터를읽어오기위해서사용하는파이프도마찬가지이다. 1.4 USB 전체개요

그림 1-6 전체그림 USB 를가장협의의개념으로본다면, USB 케이블 (Cable) 과그양쪽에물려있는컨트롤러 ( 호스트컨 트롤러, 디바이스컨트롤러 ) 라고볼수있다. ( 호스트컨트롤러에붙어있는루트허브 (Root Hub) 을사 용하는것을가정한다 ) 보다넓은개념으로본다면, [ 그림 1-6] 과같이확대된다. 소프트웨어를개발하는개발자의관점에서 USB 를살펴보면, 어떤부분이소프트웨어의개입이예 상되는부분인지를파악하는것이중요해보인다. 소프트웨어가동작하는상황이데이터전송속도에영향을미치지않아야하므로, 호스트컨트롤러, 디바이스컨트롤러와연결케이블은다분하게물리적인것으로간주해도무방하다.

소프트웨어가개입하는부분은, 호스트측면에서호스트컨트롤러를프로그래밍하는부분 ( 보통시스템소프트웨어라고부른다 ) 호스트측면에서클래스를지원하는디바이스드라이버와드라이버가제공하는서비스를사용하려 는응용프로그램부분 디바이스측면에서디바이스컨트롤러를프로그래밍하는부분 ( 컨트롤러디바이스드라이버라고부 른다 ) 디바이스측면에서서비스를제공하는프로토콜을구현하는펑션디바이스드라이버부분 이렇게 4 부분이라고볼수있다. 1.5 USB 트랜잭션의우선순위 USB대역폭은정해져있는크기 ( 시간 = 데이터전송용량 ) 로인해서버스에연결된모든장치들과관련된각각의트랜잭션을호스트가동시에진행하는것은불가능하다. 따라서, 호스트는이들을적당하게스케쥴링하게되는데, 이와같은트랜잭션중에서우선순위가높은것이먼저 USB대역폭을사용하는것옳다. USB 트랜잭션의우선순위는해당하는트랜잭션이대상으로삼고있는엔드포인트의종류에따라서결정된다. 서로다른종류의엔드포인트라하더라도트랜잭션형태는같은것을사용할수있다. 우선순위는 엔드포인트의종류에따라서결정되어진다. 엔드포인트의종류를구분하는것은용도에따라서쓰임새가서로다르기때문이다. 사용자는자신이개발하려는솔루션의특성을고민해보아서 USB 버스가제공하는어떤엔드포인 트와통신할것인가를결정해야한다. 또한, 통신할대상의엔드포인트를결정했다면, 해당하는엔드포인트가데이터패킷을보내기위해 서어떤트랜잭션을어떻게사용해야하는지를파악해야한다. 그림 1-7 엔드포인트의종류와트랜잭션

이를위해서잠시엔드포인트의종류를잠시살펴보자. * 컨트롤엔드포인트 통신속도 느리다 바람직한전송데이터크기작다 우선순위 ( 재시간전송 ) 높다 신뢰성 높다 용도 순수한데이터패킷외에명령패킷을추가로함께다룰수있다 * 벌크엔드포인트 통신속도빠르다바람직한전송데이터크기크다우선순위 ( 재시간전송 ) 낮다

신뢰성 용도 높다 많은양의데이터를신뢰성있게전송하는용도에적합하다 * 인터럽트엔드포인트 통신속도 빠르다 바람직한전송데이터크기작다 우선순위 ( 재시간전송 ) 높다 신뢰성 높다 용도 작은양의데이터를빠르고신뢰성있게전송하는용도에적합하다 * 등시성전송엔드포인트 통신속도 느리다 바람직한전송데이터크기크다 우선순위 ( 재시간전송 ) 높다 신뢰성 낮다 용도 많은양의데이터패킷을정확한시간에전송하는것을그목적으로 한다. 상황에따라서데이터패킷이손상되는것을감수한다 USB 에서는보다효과적인 USB 대역폭사용을위해서크게 4 가지종류의엔드포인트를정의하고 있다. USB 호스트와디바이스에서는이들각각의종류가가지게되는우선순위와특징을그대로 반영하도록설계된다. 응용프로그램은이들엔드포인트의종류를선정하고이들의특징을잘살펴서원하는서비스결과 를얻을수있도록고민해야한다. 예를들어보자. USB 디스크의경우, 파일을복사하는데있어복사시간이빠른것도중요하지만, 데이터가깨지는것은절대로안된다. 데이터가깨질상황이라면, 보다속도를늦춰서라도깨지지않는데이터를전전송하는것중요하기때문이다. 이런경우, USB 디스크가사용하는엔드포인트는벌크엔드포인트일것이다. 벌크엔드포인트는 USB대역폭이충분히비워있을때는데이터전송속도가빠르겠지만, 대역폭이부족할때는여유가있을때까지충분히전송을미루고대기할것이다.

USB 오디오 ( 재생기 ) 의경우, 재생할음원데이타를호스트에서 USB 오디오디바이스로전송하려는 경우에, 전송속도가빠른것보다는재때전송되어져야하는것이더중요하다. 물론, 데이터가깨 져도않되지만최악에는데이터가깨지는것도감수해야한다. 왜냐하면, 음원을듣는과정중에데이터가깨지지않도록신경써서전송하느랴고재때호스트가데이터를오디오장치로보내지않으면그시간에사용자는실시간음원을듣지못하는상황이발생한다. 어느정도버퍼링은있겠지만, 영화를볼때립싱크가맞지않는짜증나는상황을기대하는사용자는없을것이다. 데이터는조금깨져서소리가틀어질때도있겠지만립싱크는정확하게맞기를기대하는사용자로서는이런경우, 벌크엔드포인트를가진오디오보다는등시성전송엔드포인트혹은인터럽트엔드포인트를사용하고싶을것이다.( 사실등시성전송엔드포인트를더선호한다. 왜냐하면, 인터럽트엔드포인트를통해서전송되는데이터는늘신뢰성검사를하기때문에그만큼전송속도에있어서오버헤드를가지기때문이다 ) 1.6 USB 와전원관리 USB는허브를통해서디바이스측으로필요한전력을공급해주는것을원칙으로한다. 따라서, 별도의전원공급이없는디바이스라고하더라도 USB허브에연결하는행위를통해서전원공급을받아서동작을할수있다. 그러나, 디바이스에서는허브가제공하는전력에있어서몇가지특징을알고있어야한다. 허브자체도전력을소비하는장치이다. 따라서, 허브도전력이공급되어져야하는데, 배터리전력 이공급되는허브와 AC 전원이공급되는허브는각각자신에게연결된디바이스로공급할수있 는최대전력량이다르다. AC 전원이공급되는허브의경우, USB 2.0 은최대 5V 500mA, USB 3.0 은최대 5V/12V 900mA 의 전력을공급할수있다. 배터리전원이공급되는허브 ( 보통배터리로동작중인노트북에내장된루트허브 ) 의경우, USB 2.0 은최대 5V 100mA, USB 3.0 은최대 5V/12V 150mA 의전력을공급할수있다. 따라서이이상의전력을사용하려는디바이스의경우이거나, 배터리전원을사용하는허브가공 급할수없는수준의전력을요구하는디바이스는반드시자체전력을가지고 USB 디바이스를구 동해야한다. 이와같은특징으로인해서, 모든 USB 디바이스는허브에연결되면, USB 2.0 허브의경우 100mA, USB 3.0 허브의경우 150mA 의기본전력을공급해준다. 이후, 열거과정 (Enumeration) 을통해서호

스트는디바이스가얼마큼의전력을요구하는지를확인 (Configuration Descriptor) 하게되고, 요구하는전력을허브가공급할수없는경우로판단되면해당하는디바이스를현재허브에서는사용할수없도록한다. 사용할수있는디바이스로판단되면, 디바이스측으로그사용의허가여부를알려주게되므로 ( 셋엇 - Configuration), 허가여부가결정되기이전에, 디바이스는절대로전력소비를많이하지않도록기다려야한다. 1.7 USB 가제공하는대표적인서비스들 USB 는호스트가모든통신의시작을요청하기때문에통상서비스라는것을호스트관점에서설 설명하는것자연스럽다. USB 호스트에서응용프로그램과디바이스드라이버를구분하는것은모호하다. 어떤운영체제를 사용하는가에따라서어디까지가응용프로그램이고어디가디바이스드라이버인지를구분하기어 려운상황이있다. 따라서, 여기서는디바이스드라이버가서비스를요청하는주체로보자. 디바이스드라이버가호 스트컨트롤러에게서비스를요청하는것으로간주한다. 서비스란데이터를호스트에서디바이스로보내거나, 디바이스에서호스트로데이터를읽어오는 기본서비스를포함한다. 그외에다른부가적인서비스들이존재하게되는데, 이와같은서비스 들을호스트가사용자에게제공하기위해서는디바이스측에서호스트를도와주어야한다. 대표적인서비스를정리하면다음과같다. * Setup Transfer 서비스 (Enumeration, Configuration, Standard Setup Command, 3 rd Party Defined Command) Setup Transfer 서비스는디바이스의디폴트엔드포인트 ( 컨트롤엔드포인트 ) 가대응해주는서비스 이다. 이것은크게 Standard Setup Command 와 3 rd Party Defined Command 로나뉜다. 표 1-4 Standard Setup Command 의종류및간단한설명 명령어 설명 비고 CLEAR_FEATURE 디바이스가특정기능을해제한다 GET_CONFIGURATION 현재셋업된 Configuration 식별자를 얻는다

GET_DESCRIPTOR 디스크립터를읽는다 GET_INTERFACE 특정인터페이스내의선택된대체인 터페이스값을얻는다 GET_STATUS 디바이스가진특정기능을조회한다 USB 3.0 에서추가된명령 SET_ADDRESS 디바이스에게고유한주소값을할당한다 SET_CONFIGURATION 파라미터로제공하는 Configuration 식별자를사용해서셋업한다 SET_DESCRIPTOR 디스크립터의내용을변경한다 SET_FEATURE 디바이스가특정기능을활성화한다 SET_INTERFACE 특정인터페이스내의대체인터페이스중하나를결정한다 SET_ISOCH_DELAY OUT등시성전송에서호스트가내려보 USB 3.0 에서추가된명령 낸패킷을디바이스가받을때까지지연되는시간정보를기록한다 SET_SEL 호스트측에서예상되는 U1, U2 에서 USB 3.0 에서추가된명령 U0으로회복하는데걸리는예상시간정보를디바이스에게보낸다 SYNC_FRAME IN등시성전송에서디바이스가동기화정보를어떤프레임에담아서호스트로보낼것인지를알려준다 표에나타난명령어들은 USB 표준스팩에서정의되고있는 Standard Command 들이다. 이들은 각각의목적에맡는서비스를호스트에제공하도록정의되고있다. Setup Transfer 서비스는이명령어를 SETUP 트랜잭션에담아서호스트에서디바이스로전달하는서비스이다. 이중에서특히 SET_ADDRESS, SET_CONFIGURATION 명령어는 Setup Transfer 서비스혹은호스트컨트롤러가별도로제공하는특별한서비스를사용해서수행되기도한다. 물론, 어떤서비스를사용하던지상관없이결과적으로는 SETUP 트랜잭션에해당하는명령어가담겨진다. * Data Transfer/Receiver 서비스 (Bulk, Interrupt, Isochronous Data) USB 가제공하는가장기본적인서비스이다. USB 디바이스의각각의엔드포인트와데이터통신을 수행하는기본서비스이다.

* RESET 서비스 (Host Controller Reset, RootHub/External Hub Port Reset) 호스트컨트롤러의동작을리셋 (Reset) 시키는서비스외에허브 (RootHub 또는 External Hub) 가제공하는포트 (Downstream Port) 가연결된디바이스의포트 (Upstream Port) 측으로 RESET 시그널을전송하는서비스를제공한다. 후자의 RESET 시그널은 USB 디바이스를알려진상태로전환하도록요청하는역할을수행한다. 알려진상태로전환되어져야호스트는디바이스의상태를정확하게관리, 파악할수있다. * SUSPEND/RESUME 서비스 (RootHub/External Hub Port Suspend/Resume) 허브 (RootHub 또는 External Hub) 가제공하는포트 (Downstream Port) 가연결된디바이스의포트 (Upstream Port) 측으로전원을공급을낮추어서버스상태를 Suspend 상태로전환시키는서비스를 제공한다. * POWER ON/OFF 서비스 (Host Controller/RootHub Power On/Off, RootHub/External Hub Port Power On/Off) 호스트컨트롤러의전원을 On/Off 시키는서비스외에허브 (RootHub 또는 External Hub) 가제공하 는포트 (Downstream Port) 가연결된디바이스의포트 (Upstream Port) 측으로전원을공급하는서 비스를제공한다. 전원공급을받은디바이스는 POWERED 상태로결정된다. 1.8 USB 디바이스프레임워크소개 1.8.1 상태다이아그램과상태변화 USB 디바이스는호스트에연결되어사용되어지는전체과정을상태다이아그램과같이모니터링 하고있어야한다. [ 그림 1-8] 은 USB 디바이스입장에서특정사건이발생하면어떤상태가되어있 어야하는지를보여주고있다. 그림 1-8 USB 디바이스가유지하는상태다이아그램

* 디바이스가호스트에연결되거나제거되는상황 디바이스가호스트에연결되면, 허브에의해서디바이스측으로전원이공급된다. 이렇게전원이공급되면호스트는디바이스측의프레임워크상의상태다이아그램을정해진상태로만들기위해서리셋 (RESET) 과정을진행한다. 이렇게리셋된이후에디바이스는다음과같은상태 ( 디폴트상태 ) 로가정된다. - USB 디바이스는주소값을 0(Zero) 으로가진다. 이것은누가할당해주는값이아니라, 자체적으 로이런값이자신의주소로여겨진다는뜻이다. - 디바이스는아직셋업 (Configuration) 되지않았다. * 디바이스에특정주소 (Address) 가할당되는상황 호스트는 USB 디바이스가사용해야할적당한주소값을준비해서, 이값을디바이스측으로알려주는과정을거친다. 모든디바이스는허브에연결되는상황에서는주소값을 0(Zero) 으로가지고있는상황이기때문에반드시자신만의 USB 주소값을가져야한다. 그렇지않으면다른 USB 디바이스를허브에꼽을수가없다. 왜냐하면, 허브에연결되는모든디바이스는자신이주소값 0(Zero) 을사용해야한다고알고있기때문이고이런이유로인해호스트가특정디바이스와통신할방

법이없어진다. 호스트는 Setup Data 명령어 (SET_ADDRESS) 를사용해서주소를할당한다. - 디바이스는아직셋업 (Configuration) 되지않았다. * 디바이스가본격적인동작을할수있도록셋업 (Configuration) 되는상황 본격적으로호스트가디바이스본연의동작을수행시키는상황이다. 모든디바이스는셋업과정을 거쳐야만자신의엔드포인트를활성화할수있다. 이과정을거치지않은디바이스는자신이가 지고있는엔드포인트중에서 Control 엔드포인트만사용이가능할뿐나머지는사용할수없다. 또한셋업과정을거치지않은 USB 디바이스는허브로부터전력을끌어서사용할때, 제한된용량 만큼만사용해야한다. 호스트는디바이스가제공하는 USB Configuration Descriptor 를통해서, 디바이스가요구하는전력 사용량을확인한뒤, 허가하는의미로서셋업과정을진행한다. 호스트는 Setup Data 명령어 (SET_CONFIGURATION) 를사용해서셋업과정을진행한다. * USB 전원공급에따라서상태변화가되는상황 합리적인전원공급을위해서, 호스트가 USB 디바이스로공급하는전력량은변할수있다. 예를들어 USB 마우스를꼽아서사용하는사용자의경우, 오랜시간동안마우스를사용하지않는경우, 마우스에공급하고있는전력량은손해가된다. 특히, 배터리전원으로유지되고있는노트북을컴퓨터로사용하는경우에는더욱민감한문제가될수있다. 이처럼특정상황에서 USB 전원공급상태를최대한낮추는상황을버스가서스팬드 (SUSPEND) 되 었다라고부른다. 서스팬드를요청하는주체는호스트이다. 호스트는원하는상황에서버스에공급하는전력상태를서스팬드로바꾸기를요청한다. 반면에서스팬드되어있는버스상태를원래의상태로회복시키는과정을리쥼 (RESUME) 이라고부른다. 서스팬드와달리, 리쥼요청은호스트와디바이스양쪽이모두시작할수있다. 이중에서디바이스측에서리쥼요청을하는경우를특별히, 원격깨어나기기능 (Remote Wakeup Function) 이라고부른다. 마우스를예로들어보자!

호스트는오랜시간동안마우스로부터데이터가호스트로들어오지않는것을확인하면, 특정시간에버스상태를서스팬드상태로바꾼다. 이와같은서스팬드상태에서는더이상의미있는 USB 패킷을주고받을수가없다. 이때, 다시버스상태를원래상태로회복하려는리쥼요청을호스트가보내는상황만예상해야한다면, 호스트는언제리쥼요청을디바이스로보낼것인가? 정답은알기어렵다. 왜냐하면, 마우스로부터데이터를읽어와야하는시기는결국사용자가물리적으로마우스를움직이는행위를통해서만알수있기때문이지, 호스트가그시기를아는것이아니기때문이다. 이런경우, 마우스장치는사용자에의해서마우스가조금이라도움직여지는것이파악되면, 서스팬드된버스상태를회복하기위해서스스로리쥼요청을호스트로보낼것이다. 이와같은기능을원격깨어나기기능이라고부르는것이다. 원격깨어나기기능이필요하지않은다른예를들어보자! USB 디스크를사용하는경우를가정해보자. 오랜시간동안디스크를사용하지않으면호스트는역시버스상태를서스팬드상태로바꾼다. 이런경우, 호스트와디바이스중에서누가리쥼상태로돌아오는요청을시작할것인가? 정답은호스트이다. 디스크로부터어떤데이터를읽거나기록하는요청이사용자프로그램으로부터발생되기때문에, 버스상태를원래대로되돌리는시기는누구보다호스트가잘알기때문이다. 이런경우에는 USB 디스크는원격깨어나기기능을가질필요가없다.( 버스의전원공급상태는사실이보다더많은내용을설명해야한다. 자세한내용은뒤쪽에서더살펴보도록한다 ) 1.8.2 USB Device 표준요청 (Request) USB Device 표준요청은 SETUP 트랜잭션을사용해서호스트와 Control 엔드포인트가주고받는 데사용된다. 호스트는표에서설명하고있는표준 Device 요청을디바이스로전송하기위해서 SETUP 트랜잭션을사용한다.( 표준요청에대한자세한설명은뒤쪽에서배우도록한다 ) 표 1-5 USB 표준 Device 요청값 요청 (brequest) 값 (Value), 10진수 GET_STATUS 0 CLEAR_FEATURE 1 예약 2 SET_FEATURE 3 예약 4 SET_ADDRESS 5 GET_DESCRIPTOR 6

SET_DESCRIPTOR 7 GET_CONFIGURATION 8 SET_CONFIGURATION 9 GET_INTERFACE 10 SET_INTERFACE 11 SYNCH_FRAME 12 SET_SEL 48 SET_ISOCH_DELAY 49 SETUP 트랜잭션에서사용되는 8 바이트 Setup 데이터패킷은 bmrequest, brequest, wvalue, windex 그리고 wlength 로구성되어있다. SETUP 트랜잭션은이렇게구성된 8 바이트 Setup 데이터패킷을호스트가디바이스에게전달하는 목적으로사용된다. 표 1-6 USB 표준 Device 요청에사용되는 Setup 데이터패킷구조 (8 바이트 ) 오프셋필드 크기 ( 바이트 ) 값 설명 0 bmrequest 1 비트맵 비트맵설명 D7 이어지는추가 Data의전송방향 0 = 호스트 -> 디바이스 1 = 디바이스 -> 호스트 D6 5 명령유형 0 = 표준 1 = 클래스 2 = 제조사정의 3 = 예약 D4 0 명령대상 0 = 디바이스 1 = 인터페이스 2 = 엔드포인트 3 = 그밖에나머지 = 예약 1 brequest 1 값 위의표참조 2 wvalue 2 값 아래표참조 4 windex 2 Index 또는오프셋 아래표참조 6 wlength 2 길이 이어지는추가 Data의바이트길이

표 1-7 USB 표준 Device 요청과구조체필드 (8 바이트 ) BmRequest (1Byte) brequest (1Byte) wvalue (2Byte) windex (2Byte) wlength (2Byte) Data(wLength 에따라가변 ) 00000000B CLEAR_FEATURE Feature Selector 0 0 사용안함 00000001B 00000010B Interface Endpoint 10000000B GET_CONFIGURATION 0 0 1 Configuration Value 10000000B GET_DESCRIPTOR Descriptor Type, 0 또는 Language ID Descriptor Descriptor Index 길이 10000001B GET_INTERFACE 0 Interface 1 Alternate Interface 10000000B GET_STATUS 0 0 2 Device, Interface 10000001B Interface 또는 Endpoint 10000010B Endpoint Status 00000000B SET_ADDRESS Device Address 0 0 사용안함 00000000B SET_CONFIGURATION Configuration Value 0 0 사용안함 00000000B SET_DESCRIPTOR Descriptor Type, 0 또는 Language ID Descriptor Descriptor Index 길이 00000000B SET_FEATURE Feature Selector Suspend 0 0 사용안함 00000001B 00000010B Options Interface Point 00000001B SET_INTERFACE Alternate Setting Interface 0 사용안함 00000000B SET_ISOCH_DELAY Delay in ns 0 0 사용안함 00000000B SET_SEL 0 0 6 Exit Latency Values 10000010B SYNCH_FRAME 0 Endpoint 2 Frame Number 이번장에서는구체적인포멧설명은생략한다. 다만, 이와같은 8 바이트의구조체 (Setup Data) 와 별도의 Data 가어떻게사용되어지는지를간단하게그림을통해서살펴보려고한다. USB 표준 Device 요청은크게 3 가지형태로분류할수있다. * 추가데이터전송이없으며, 8 바이트 Setup Data 만사용된다. 호스트에서디바이스로 8바이트 Setup Data명령어만전송하는경우이다. 별도의데이터전송과정은필요없지만, Setup Data 자체가 8바이트이기때문에이곳에들어있는 wvalue(2바이트 ), windex(2바이트 ) 등과같은파라미터를사용하면 4바이트의 INPUT방향의파라미터로서사용될수있다. 물론, 4바이트이상의파라미터를호스트가디바이스로보내야한다면, 이런경우에는별도

의추가데이터전송이필요하다. 그림 1-9 Control 엔드포인트와호스트간의통신, 8 바이트 Setup Data 만사용하는경우 CLEAR_FEATURE, SET_ADDRESS, SET_CONFIGURATION, SET_FEATURE, SET_INTERFACE, SET_ISOCH_DELAY 명령이여기에해당한다. * 추가데이터전송이있으며, 추가데이터는호스트에서디바이스로전송된다. 그림 1-10 Control 엔드포인트와호스트간의통신, 추가데이터를호스트가디바이스로전송하는 경우

호스트가디바이스로 8바이트의 Setup Data외에별도의파라미터를더전송해야하는경우에사용되는방식이다. 이때, 별도의파라미터는 OUT트랜잭션절차를사용해서호스트에서디바이스로전송된다. 또한, 이와같이추가되어전송되어지는데이터바이트량은 8바이트의 Setup Data내부에 wlength 필드에기록되어져서호스트는디바이스에게전달해야한다. SET_DESCRIPTOR, SET_SEL 명령이여기에해당한다. * 추가데이터전송이있으며, 추가데이터는디바이스에서호스트로전송된다. 그림 1-11 Control 엔드포인트와호스트간의통신, 추가데이터를디바이스가호스트로전송하는 경우

호스트가디바이스로 8 바이트의 Setup Data 를전송한뒤에그결과로서일련의데이터를디바이스 로부터받아야하는경우에사용되는방식이다. GET_DESCRIPTOR, GET_INTERFACE, GET_STATUS, SYNCH_FRAME 명령이여기에해당한다. 1.8.3 USB 표준디스크립터 (Descriptor) 디스크립터란호스트가디바이스의특성을알기위해서 Setup Data 명령어 (GET_DESCRIPTOR) 를 통해서얻어가는디바이스의상세정보를의미한다. 초기버젼때부터정의되던디스크립터외에 USB 릴리즈버젼에따라서추가로정의되는디스크립터들이존재한다. 표 1-8 USB 표준디스크립터 디스크립터디스크립터를포함하는집합개념개체비고 Device( 디바이스 ) BOS Binary Device Object Store 구성요소 USB 3.0 에서추가됨

Device Capability( USB 2.0 Extension Super Speed USB Device Capability Container ID) Configuration( 헤더 ) Interface Association Interface Endpoint Super Speed Endpoint Companion String Binary Device Object Store 구성요소 Configuration Descriptor구성요소 Configuration Descriptor 구성요소 Configuration Descriptor 구성요소 Configuration Descriptor 구성요소 Configuration Descriptor 구성요소 USB 3.0 에서추가됨 USB 3.0 에서추가됨 USB 디바이스가제공해야하는디스크립터의종류중에서가장중요한디스크립터는 Device 와 Configuration 이다. 이두가지만사용해도왠만한 USB 디바이스로서동작하는데는큰문제가없 다. Device 디스크립터는 USB 디바이스의가장큰그림에서바라보는설명을포함한다. 이곳에는 USB 제조사가 USB.ORG협회에서부여받은고유한제조사ID(Vendor ID) 와제조사가부여하는제품ID(Product ID) 가포함된다. 또한, 지원하는 USB 릴리즈버젼과 Control 엔드포인트가지원하는데이터패킷의최대바이트수가여기에포함된다. 표 1-9 Device 디스크립터의구성 오프셋 필드 크기바이트 값 설명 0 blength 1 숫자 디스크립터길이 1 bdescriptortype 1 상수 디스크립터유형 2 bcdusb 2 BCD USB버젼 4 bdeviceclass 1 클래스 (Class) 5 bdevicesubclass 1 서브클래스 (SubClass) 6 bdeviceprotocol 1 프로토콜 (Protocol) 7 bmaxpacketsize0 1 숫자 디폴트엔드포인트 최대 데이타패킷크기 8 idvendor 2 ID 제조사ID 10 idproduct 2 ID 제품ID 12 bcddevice 2 BCD 제품릴리즈버젼

14 imanufacturer 1 인덱스 (Index) 스트링인덱스 15 iproduct 1 인덱스 (Index) 스트링인덱스 16 iserialnumber 1 인덱스 (Index) 스트링인덱스 17 bnumconfigurations 1 숫자 준비된 Configuration 개수 Configuration 디스크립터는디바이스가포함하는대부분의구체적인디스크립터를모두포함한 다. 인터페이스 (Interface), 엔드포인트 (Endpoint) 등과같은정보들이이곳에포함된다. 따라서, 호스트는 Setup Data(GET_DESCRIPTOR) 명령어를사용해서 Configuration 디스크립터를넉 넉하게읽어서이곳에포함된모든부분집합디스크립터들을확인하게된다. 아래는이중에서중요한 Configuration 디스크립터 ( 헤더 ) 와 Interface, Endpoint 디스크립터의구 조체형태를보여주고있다. 표 1-10 Configuration 디스크립터 ( 헤더 ) 의구성 오프셋 필드 크기바이트 값 설명 0 blength 1 숫자 디스크립터헤더길이 1 bdescriptortype 1 상수 디스크립터유형 2 wtotallength 2 숫자 Configuration 디스크립터의전체길이 4 bnuminterfaces 1 숫자 준비된 Interface개수 5 bconfigurationvalue 1 숫자 현재 Configuration 식별자 ID 6 iconfiguration 1 인덱스 (Index) 스트링인덱스 7 bmattributes 1 비트맵 속성 8 bmaxpower 1 ma 요구전력정보 표 1-11 Interface 디스크립터의구성 오프셋 필드 크기바이트 값 설명 0 blength 1 숫자 디스크립터길이 1 bdescriptortype 1 상수 디스크립터유형 2 binterfacenumber 1 숫자 Interface 수 3 balternatesetting 1 숫자 대체할 Interface 수

4 bnumendpoints 1 숫자 현재 Interface가포함하는엔드포인트수 ( 디폴트는제외 ) 5 binterfaceclass 1 클래스 (Class) 6 binterfacesubclass 1 서브클래스 (SubClass) 7 binterfaceprotocol 1 프로토콜 (Protocol) 8 iinterface 1 인덱스 (Index) 스트링인덱스 표 1-12 Endpoint 디스크립터의구성 오프셋 필드 크기바이트 값 설명 0 blength 1 숫자 디스크립터길이 1 bdescriptortype 1 상수 디스크립터유형 2 bendpointaddress 1 엔드포인트 엔드포인트주소 ( 방향 + 엔드포인트식별자 ) 3 bmattributes 1 비트맵 속성 4 wmaxpacketsize 2 숫자 엔드포인트가다룰수 있는 최대데이타패킷크 기 6 binterval 1 숫자 주기적인 엔드포인트의 경우주기시간을지정 Configuration 디스크립터전체크기를알기위해서, 호스트는 Configuration 디스크립터 ( 헤더 ) 를먼저디바이스로부터읽는다. 이크기는 9바이트로고정이다. 이렇게읽은디스크립터내의 wtotallength 필드의값은전체 Configuration 디스크립터크기를나타낸다. 호스트는이값을사용해서다시전체 Configuration 디스크립터를디바이스로부터읽는다. 호스트는 Configuration 디스크립터전체를읽어서디바이스의특성을확인한뒤, 해당하는디바이 스의동작을허용하고싶다면, Setup Data(SET_CONFIGURATION) 명령어를사용해서디바이스를셋 업 (Configuration) 시키게된다. 1.9 USB 허브 1.9.1 허브와포트 허브는루트허브를제외하고최대 5 개의허브를직렬로연결할수있다.

USB 3.0 을지원하는허브는 USB 2.0 까지사용하던허브와 USB 3.0 에서추가된 Super Speed Hub 가물리적으로함께포함되어있다. 외관에서볼때는하나의허브로보이지만, 내부에서는이와 같이별도의허브가따로따로존재하는셈이다. 허브는두가지종류의서로다른성격을가진포트 (Port) 를가진대표적인디바이스이다. 하나는 Upstream Port 로서, 위쪽방향의디바이스 ( 통상적으로루트허브 ) 와통신하는것이그목적이다. 다른하나는 Downstream Port 로서아래쪽방향의디바이스와통신하는것이그목적이다. 허브의위쪽방향이란결국호스트컨트롤러를향해서진행하는방향이된다. 위쪽방향으로전달되는모든데이터패킷은특별히대상을지정하는주소값이사용되지않는다. 이말은데이터패킷자체가전달되어져야하는대상은호스트이기때문에별도의주소가필요하지 않다는뜻이다. 반면아래쪽방향으로전달되는모든데이터패킷은디바이스를지정하는주소값이사용된다.( 링크 를관리하는목적에서사용되는특수한패킷은주소값이없다 ) 허브는하나의 Upstream Port 와복수개의 Downstream Port 를가진대표적인 USB 디바이스이다. 루트허브 (RootHub) 도허브의일종이기는하지만, 특별히호스트컨트롤러에내장된허브를의미하 고모든 USB 디바이스의 Upstream Port 는결국루트허브를가리키게된다. 1.9.2 루팅 (Routing) 1.9.2.1 USB 2.0 에서의루팅 USB 2.0 에서는루틴이라고부를만한부분이없다.

그림 1-12 호스트가디바이스로찾아가는모습 (USB 2.0) [ 그림 1-12] 를보면, USB 2.0에서호스트가특정디바이스에게토큰패킷을전달하면서트랜잭션을시작하는것을알수있다. 모든토큰패킷은특정디바이스를지칭하는주소값 ( 여기서는주소값 4) 을포함하고있다. 데이터패킷에는주소값이포함되어있지않다. 트랜잭션은항상토큰패킷으로시작하고, 동일한호스트를대상으로복수개의트랜잭션은서로중첩발생하지않기때문에, 주소값은토큰에만포함되어있어도무방하다. 참고로 SOF(Start Of Frame) 토큰패킷안에는주소값이포함되어있지않다. 호스트에서디바이스로전달되는패킷은브로드캐스트방식으로전달되고, 디바이스에서호스트로 올라오는패킷은유니캐스트방식으로전달되고있다. 이그림에서알아야하는중요한포인트는, 주소값 4 에해당하지않은모든 USB 디바이스들로 Token, Data 패킷을수신한다는점이다. 단지, 주소값 4 에해당하는디바이스만 Ack 패킷을응답 하고있다는점이다.

그림 1-13 패킷의구조 (USB 2.0) 그림처럼토큰패킷이포함하는 Address(USB 디바이스주소 ) 와 Endpoint Address( 통신대상엔드포인트주소 ) 는호스트에연결된모든 USB 디바이스에게전달된다. 이것은마치이더넷 (Ethernet) 통신과같은원리처럼보인다. 모든 USB 디바이스는자신에게전달된토큰패킷의 Address와 Endpoint Address를자신의것과비교해서자신의것이아닌경우, 아무런반응도보이지않는다. 이런경우다음토큰패킷을받을때까지아무런작업을하지않는다. 토큰패킷이포함하고있는 Address 와 Endpoint Address 가자신의것으로확인된 USB 디바이스 는해당하는토큰패킷을수용하고트랜잭션을시작한다. 이와같은성질때문에호스트컨트롤러 ( 루트허브 ) 로부터 USB 디바이스까지복수개의외장허브가 연결되어있다면, 이들외장허브는그어떤 Routing( 주소를통한패킷의방향결정 ) 작업을하지않 는다. 어떻게보면, 낭비적인특징이라고할수있다. 정리하면다음과같다. 호스트에서디바이스로전달되는모든패킷은브로드캐스트 (Broadcast) 형태로전달된다. 디바이스에서호스트로전달되는모든패킷은유니캐스트 (Unicast) 형태로전달된다. 모든트랜잭션의시작시사용되는토큰패킷에는 USB 디바이스를지칭하는주소값 ( 디바이스주

소와엔드포인트주소 ) 이포함되어있다. 1.9.2.2 USB 3.0 에서의루팅 USB 3.0 에서허브는이전버젼의 USB 에서는보지못했던루팅 (Routing) 작업을돕는다. 호스트에서디바이스로전달되는패킷은 USB 2.0 에서사용되던디바이스주소 (Address) 와엔드포 인트주소 (Endpoint Address) 가그대로사용된다. 추가로루팅을돕기위해서 20 비트의루트문자 열 (Route String) 정보가존재한다.( 링크를관리하는특별한패킷들은이런정보가사용되지않는다 ) 허브는루트허브를제외하고직렬로 5 개까지외장허브를연결할수있다. 그림 1-14 루트스트링 (0x00421) 을사용하는예시 [ 그림 1-14] 을보면, 20 비트의루트스트링은 4 비트 (Nibble) 씩총 5 개의묶음으로나뉠수있다.

LSB 에서시작해서 0-3 비트는첫번째외장허브, 4 비트 -7 비트는두번째외장허브, 8 비트 -11 비트는 세번째외장허브, 12 비트 -15 비트는네번째외장허브, 16 비트 -19 비트는다섯번째외장허브가사용 하는정보이다. 이들정보 (4 비트 ) 가가질수있는값은 2 진수 0000 부터 1111(10 진수 15) 까지총 16 가지의경우의 수를가진다. 이중에서 0000 값은외장허브자체를나타내는정보로사용된다. 나머지숫자는외 장허브가가지고있는 Downstream Port 의일련번호 (1 번째부터 15 번째까지 ) 를나타낸다. 예를들어, 2 진수 0011(10 진수 3) 값은특정외장허브가관리하는 3 번째 Downstream Port 를의미 한다. 예를들어, 20 비트의루트스트링값이 0x00421 값을나타내는경우를루팅해보자. LSB 를기준으로 4 비트값 0 이처음나오는곳이전까지만해석을해야한다. 0x00421 값은 0x421 로해석해야한다. 이대로라면, 루트허브로부터시작해서, 첫번째외장허브의 1 번포트에연결된두번째외장허브의 2 번포트에연결된세번째외장허브의 4 번째포트가된다. USB 패킷을호스트에서디바이스로전송하는경우, 0x00421 루트스트링값이포함된 USB 패킷은 첫번째외장버브의 1 번포트로전달되고, 이패킷은다시두번째외장허브의 2 번포트로전달되 고, 또다시이패킷은세번째외장허브의 4 번포트 (Downstream Port) 로전달된다. 이와같은루팅방식은과거 USB 2.0 에서브로드캐스트방식으로토큰패킷을전송하던방식에비 하면확실하게버스를효과적으로사용하게해준다. 정확하게호스트에서허브에연결된디바이 스에게만 USB 패킷을전송할수있게된것이다. 디바이스에서호스트로올라가는 USB 패킷에대해서는 USB 2.0 에서와마찬가지로특별히주소값 을사용하지않는유니케스트 (Unicast) 형태의전송방법을사용한다. 1.9.3 허브와 USB 링크 1.9.3.1 USB 2.0 와 USB 링크 허브는연결된디바이스에게전원을공급하거나서스팬드시킨다. 또한, 연결된디바이스를검색하고연결이해제되는디바이스또한검출한다. 이와같은작업은허브가가지고있는 Downstream Port와디바이스가가지고있는 Upstream Port간의연결 ( 링크 ) 상태를관리하는보다세련된관리방식을필요로한다.

USB 2.0 에서는별도의 USB 링크를관리하는준비작업이거의전무한상황이었으며, 이때문에 링크상에나타나는대부분의변화는허브가아닌호스트가주도하는작업이되어야만했다. 예를들어, 버스상태를서스팬드상태로전환하는작업은호스트가주도하는작업이지, 허브가주 도하는작업이아니다. 호스트는허브에게허브디바이스가이해할수있는전용명령어 (Setup Data) 를전송하여허브에연결된디바이스와의링크상태를변경하게된다. 그림 1-15 LPM 상태변화다이아그램 USB 2.0 에서는 LPM(Link Power Management) 프로토콜을소개하고있다. 이프로토콜은 USB 링크 의상태를 L0, L1, L2, L3 상태로규정한다. L0 는전력공급이충분한상태를말한다. L1 는 L0 보다부족한전력공급을사용하는상태를말한다.

L2 는서브팬드된버스상태를말한다. L3 는물리적으로끊어진버스상태를말한다. L0 상태에서 L1 상태, L2 상태, L3 상태로들어가는작업은전원공급이절전되는상황이다. L1, L2, L3 상태에서깨어나는것은 L0 상태로되돌아가는것을말한다. L1 상태에서 L0 상태로돌아가는시간은 L2 상태에서 L0 상태로돌아가는시간보다빨라야한다. L0 상태에서 L1 상태로들어가는방법은기존에사용되던토큰패킷중에서특별한 PID 를예약값 을사용하여추가정의한 LPM 토큰패킷 (PID 값이 0 인패킷 ) 을사용해서수행된다. LPM 토큰패킷을받은디바이스는 ACK 응답패킷을사용해서응답을하는행위로인해서 L0 상 태에서 L1 상태로들어가는것을허락하는의미를호스트에게알린다. L0 상태에서 L2 상태로들어가는방법은호스트에의해서버스상태를서스팬드하는상황이다. 이 런상황은호스트에서 3ms 이상동안버스를유휴상태 (IDLE) 로유지하면, 자연스럽게진입된다. L3 상태는 USB 디바이스를제거하는행위를통해서진입되므로구태여설명할필요가없다. L1, L2, L3 상태에서는 L0 상태로들어가는방법이소개된다. L1 상태, L2 상태에서 L0 상태로들어가는방법은동일하다. 버스상태를리쥼 (RESUME) 요청하는 작업을통해서진입된다. 물론리쥼요청은호스트와디바이스양쪽어느누구든지요청할수있 다.( 디바이스가요청하려면반드시원격깨우기기능이활성화되어있어야한다 )

그림 1-16 확장된 LPM 토큰패킷을사용하는 LPM 트랜잭션 표 1-13 LPM 토큰패킷의 bmattributes 필드해석 비트 필드 설명 10..9 사용안함 8 bremotewake 디바이스가 L1상태에서원격깨어나기기능을활성화시켜놓는다 7..4 HIRD Host Initiated Resume Duration. 호스트가리쥼신호를유지하는시간 3..0 blinkstate 이진수 0001 (Sleep), 나머지값사용안함 [ 표 1-13] 에서처럼 blinkstate 필드의값을 2 진수 0001(L1 Sleep) 값을사용해서호스트가디바이 스에게 LPM 트랜잭션을시작하면, 디바이스는이요청을수용하는경우에만 ACK 응답패킷으로응 답해야한다. 1.9.3.2 USB 3.0 와 USB 링크 USB 3.0 에서, Enhanced Super Speed 통신에서사용되는허브의 Downstream Port 와디바이스의

Upstream Port 는새로운개념의 USB 링크 (Link) 계층을두고관리하는관리방법을사용하고있다. 기존에호스트가주도하던 USB링크의전원공급상태변화요청을어느정도허브와디바이스에게자율권을주게되었다. 이제, 허브와디바이스는호스트의개입없이도필요에따라서자연스럽게링크의전원공급상태를변경요청할수있게되었다. 또한, USB링크상태를보다세부적인연결상태다이아그램으로확장함으로써, 바야흐로프로토콜계층과어느정도독립성을유지하는링크계층이탄생하였다. USB 3.0 이사용하는 USB 링크의속성은고속시리얼통신을사용하는 PCI Express 에서도비슷한 모습의링크를구성할수있도록함으로써확장가능한링크가되었다. 그림 1-17 USB 3.0 LTSSM (Link Training and Status State Diagram)

USB 링크는허브의 Downstream Port 와디바이스의 Upstream Port 간에형성된다. 이들의연결상 태는 [ 그림 1-17] 에서보여주는여러가지상태로존재할수있다. USB 3.0 에서소개되는 LTSSM 에서는 12 개의상태 (State) 와각각의상태로들어오거나빠져나가는 사건을정의하고있다. 각각의상태를간단하게정리하면다음과같다. * ess.disabled USB 3.0 링크를사용할수없는상황을말한다 * ess.inactive USB 3.0 링크를처음생성할때상황을말한다. 보통 USB 장치를호스트허브에연결한상황이다. * Rx.Detect USB 3.0 링크는 Upstream Port 와 Downstream Port 각각을위한 Receiver 회로를검색한다. * Polling USB 3.0 링크가정상적으로사용되어질수있도록준비작업을수행한다. * U0 USB 3.0 링크가정상적으로프로토콜패킷을송수신할수있는상태를의미한다. * U1 USB 3.0 링크가 Sleep 상태로전환되었을상황을의미한다.

* U2 USB 3.0 링크가 Sleep 상태 (U1 보다더낮은전력만사용하는상태 ) 로전환되었을상황을의미한다. * U3 USB 3.0 링크가 Suspend 상태로전환되었을상황을의미한다. * Hot Reset USB 3.0 링크의 Downstream Port 가리셋명령어를전송하는상황을의미한다. U3, U2, U1, U0 상태의 USB 3.0 링크가 U0 상태로돌아오기위해서, 잠시거치는상황을의미한다. 이상태에서는 Polling 상태와유사한준비작업을거쳐서정상적으로 U0 상태를가질수있도록 한다 (Retraining) * Compliance Mode USB 3.0 링크를구성하는양쪽포트의 Transceiver 의동작을검증하는상태이다. 테스트목적으로 진입되어사용된다. * Loopback USB 3.0 링크를구성하는양쪽포트의 Receiver 의동작을검증하는상태이다. 테스트목적으로진 입되어사용된다. USB 2.0 에서 LPM(Link Power Management) 표준이정의한 L0, L1, L2, L3 상태는 USB 3.0 LTSSM 에서 U0, U1, U2, U3 상태로바뀌었다. 각각의전원공급상태로의전환과정에맞는조건이존재한다. 모든링크는 U0 상태를제외한나머지상태에서는정상적인 USB패킷을송, 수신할수없기때문에이와같은 U1, U2, U3상태에서는특별한하드웨어시그널 ( 예, LFPS) 을사용해서통신을수

행한다. LFPS(Low Frequency Polling Signal) 을사용해서 U1, U2, U3 상태는 U0 상태로돌아온다. LFPS 는 Super Speed(5GHz), Super Speed Plus(10GHz) 의주파수대를사용하지않고, 낮은주파수 대의신호를주기적으로발생시켜서원하는의미전달을하는방법이다. 현재 USB 3.0 에서는다음과같은 LFPS 신호가정의되어사용된다. * Polling.LFPS 링크의양쪽포트가 LTSSM 의 Polling 단계로진입하기위해서사용하는시그널 * Warm Reset 링크의 Downstream Port 에의해서발생되는리셋시그널으로서, 현재링크상태가어떤전원공급상 태 (U1, U2, U3) 에있다고하더라도 LTSSM 의 RxDetect 상태로진입시켜서다시 Polling 단계를거 쳐 U0 상태로진입하게한다. * U1, U2 Exit 링크의양쪽포트에서발생될수있는시그널로서, 현재전력공급이약한링크상태 (U1, U2) 를빠 져나가도록요청하는시그널 * U3 Exit(Wakeup) 링크의양쪽포트에서발생될수있는시그널로서, Suspend 상태의링크상태 (U3) 를빠져나가도록 요청하는시그널 LFPS 시그널은, U0 상태가아닌링크의상태에서는정상적인프로토콜패킷을송, 수신하지못하 는상황이기때문에이와같은시그널을사용해서링크의양쪽포트는서로의미를전달한다.

L0 상태에있는링크는자신의상태를 U1, U2, U3 상태로전환하기위해서 USB 2.0 에는없었던 새로운방식의링크전용명령어 (Link Command) 를정의해서사용한다. U0 상태에서는 LFPS 를사용하지않고링크단에서사용하는명령을직접사용할수있다. 여기에사용되는명령어는 LGO_U1, LGO_U2, LGO_U3 이있다. 표 1-14 링크전용명령어종류 링크명령어 LGOOD_0 LGOOD_1 LGOOD_2 LGOOD_3 LGOOD_4 LGOOD_5 LGOOD_6 LGOOD_7 LCRD_A LCRD_B LCRD_C LCRD_D LRTY LBAD LGO_U1 LGO_U2 LGO_U3 LAU LXU LPMA LUP LDN 설명포트에서포트로순서번호 0 패킷이잘전달되었다는뜻포트에서포트로순서번호 1 패킷이잘전달되었다는뜻포트에서포트로순서번호 2 패킷이잘전달되었다는뜻포트에서포트로순서번호 3 패킷이잘전달되었다는뜻포트에서포트로순서번호 4 패킷이잘전달되었다는뜻포트에서포트로순서번호 5 패킷이잘전달되었다는뜻포트에서포트로순서번호 6 패킷이잘전달되었다는뜻포트에서포트로순서번호 7 패킷이잘전달되었다는뜻포트내부에버퍼 A가비워졌다는뜻포트내부에버퍼 B가비워졌다는뜻포트내부에버퍼 C가비워졌다는뜻포트내부에버퍼 D가비워졌다는뜻최근전송했던데이터패킷을다시보내라는뜻최근수신했던데이터패킷이잘못되었다는뜻 U1 링크상태로전환하라는요청 U2 링크상태로전환하라는요청 U3 링크상태로전환하라는요청 LGO_Ux 요청명령어를수락한다는뜻 LGO_Ux 요청명령어를거절한다는뜻 LAU 명령어을받은포트가그응답으로회신하는응답 Upstream 포트가특별히전송할데이터가없다는뜻. 쉬고있다는의미 Downstream 포트가특별히전송할데이터가없다는뜻. 쉬고있다는의미 1.9.4 USB 디바이스로서의외장허브 USB 외장허브도 USB 디바이스이다. 따라서, USB 디바이스가처리하는트랜잭션을그대로사용해 서호스트와외장허브가 USB 패킷을송, 수신하게된다.

외장허브도자신의디스크립터 (Descriptor) 를가지게되며, 호스트는 Setup Data(GET_DESCRIPTOR) 명령어를통해서외장허브의디스크립터를가져와서, 셋업 (CONFIGURATION) 과정을통해외장허 브가동작을할수있도록한다. 표 1-15 외장허브가들어내는디스크립터내용 ( 인터페이스디스크립터 ) 필드 값 blength 9 bdescriptortype 4 binterfacenumber 0 balternatesetting 0 bnumendpoints 1 binterfaceclass HUB_CLASSCODE(9) binterfacesubclass 0 binterfaceprotocol 0 iinterface 1 외장허브도 USB 디바이스이기때문에 Setup Data 명령어를사용하는 SETUP 트랜잭션에반응을 보인다. USB 표준에서는외장허브가반응해야하는허브전용 Setup Data 명령어를정의하고있다. 표 1-16 외장허브가지원해야하는허브전용명령어 요청 bmrequesttype brequest wvalue windex wlength Data ClearHubFeature 00100000B CLEAR_FEATURE Feature 0 0 사용안함 Selector ClearPortFeature 00100011B CLEAR_FEATURE Feature Port 0 사용안함 Selector GetHubDescriptor 10100000B GET_DSCRIPTOR Descriptor 0 또는 Descriptor Descriptor 와인덱스 Language ID 길이 GetHubStatus 10100000B GET_STATUS 0 0 4 허브상태, 변화상태 GetPortStatus 10100011B GET_STATUS 0 Port 4 허브상태, 변화상태 GetPortErrorCount 10100011B GET_PORT_ERR_COUNT 0 Port 2 포트링크에러회수 SetHubDescriptor 00100000B SET_DESCRIPTOR Descriptor 0 또는 Descriptor Descriptor 와인덱스 Language 길이

ID SetHubFeature 00100000B SET_FEATURE Feature 0 0 사용안함 Selector SetHubDepth 00100000B SET_HUB_DEPTH Hub Depth 0 0 사용안함 SetPortFeature 00100011B SET_FEATURE Feature Selector Selector, Timeout Port 0 사용안함 호스트는외장허브전용명령어를사용해서허브 Downstream Port에연결된 USB장치의연결상태 를확인할수있으며, 특정 Dowstream Port로하여금링크상태를바꾸도록요청할수도있다. 1.9.5 TT(Transaction Translator) 그림 1-18 USB 3.0 허브그림 ( 내부에 USB 2.0 허브가존재 ) USB 3.0 허브는내부에 USB 2.0 허브와 Enhanced Super Speed 전용허브를포함하고있다. 따라서, 이들은서로물리적으로분리되어있어서각자독립적으로서로에게영향을미치지않고동작한다. USB 2.0허브는같은물리적인회선을사용해서 Low Speed, Full Speed 그리고 High Speed 모두를지원해야한다. 호스트가트랜잭션을사용해서디바이스와통신을하는데있어서, USB 2.0 에서는브로드캐스트방

식의토큰패킷을사용하기때문에, 호스트에서연결된물리적인회선전체 ( 하나의링크가아니라 ) 가토큰패킷을기다려야한다. 자신에게전달되는토큰패킷을확인하기위해서디바이스는토큰패킷에포함된주소정보 (Device Address, Endpoint Address) 를확인하고, 자신에게전달된경우에만트랜잭션을진행한다. USB 2.0 허브는 Downstream Port에연결되는장치가 Low Speed, Full Speed 그리고 High Speed 모두의경우를다룰수있어야한다. 각각의속도차이는현저한차이를나타내고있기때문에, USB 2.0 허브가제공하는 Dowstream Port중하나에 Low Speed장치가, 또다른 Downstream Port에 High Speed장치가연결된다면, Low Speed장치로인해서트랜잭션의대응시간은무척오래걸릴수밖에없는상황이되버린다. 이것은허브에연결된 High Speed의장치입장에서는남아있는 USB대역폭을재대로사용할수없는상황이되버리고만다. 이후에설명할내용이지만, High Speed 가사용하는 Frame은 125us마다생성하는마이크로프레임을사용한다. Full Speed와 Low Speed는 1ms마다생성하는프레임을사용한다. High Speed의 125us는 Full Speed, Low Speed의프레임 (1ms) 의 1/8 시간을사용한다. 프레임만볼때 8배빠르다는뜻이다. 그림 1-19 USB 2.0 허브의 2 개의포트에 Low Speed, High Speed 장치를연결한그림

이와같은최악의상황을피하기위해서, USB 2.0허브는자신의 Upstream Port에있어서호스트와 High Speed를유지하면서, Dowstream Port는각각연결된장치의지원속도 (Low Speed, Full Speed, High Speed) 에맞추어서통신하는알고리즘을도입하게되었다. 이것을 TT(Transaction Translator) 라고부른다. 핵심은, USB 2.0 허브자신은호스트와 High Speed 속도를유지하는것이다. 자신의 Downstream Port에연결된장치의속도에영향을받지않고호스트와허브간의최대전송속도를낼수있도록하기위함이다. 어짜피 USB 2.0 통신은한번에하나의트랜잭션만처리할수있기때문에, 동시에두개이상의 Downstream Port를사용할필요가없다. 이와같은이유로하나의 TT 유닛을사용해서허브가가진하나의 Upstream Port와복수개의 Downstream Port간의변환알고리즘을적용하는유닛을 STT(Single TT) 라고부른다. 이경우, 하나의 STT를사용하기때문에, 복수개의 Downstream Port가서로다른속도의디바이스를사용하려한다면, 내부적으로배타적인자원사용알고리즘을사용하게되지만, 허브가가진복수개의 Downstream Port의개수만큼 TT유닛을사용하는 MTT의경우이런리소스부족문제는없기때문에보다적극적인알고리즘을사용할수있다. 그림 1-20 STT(Single TT), MTT(Multi TT)

TT 원리는간단하게설명하면다음과같다. 호스트가 High Speed 허브를통해서 Full Speed 의디바이스와통신하는경우를예로들어보자. 그림 1-21 TT 를사용하는예시그림 ( 벌크 OUT) [ 그림 1-21] 처럼, 호스트와허브는 High Speed 로연결되어있다. 허브와디바이스는 Full Speed 로연결되어있다고가정한다. 이경우, 호스트가디바이스로 OUT 트랜잭션을하려고하는경우,

호스트가먼저허브에게 Start Split( 분할시작 ) 패킷을먼저보낸다. 그다음, 이어서보내려고하던 OUT 트랜잭션을시작한다. 이후, 허브는 Full Speed 로연결된디바이스가수용할수있는속도로 OUT 트랜잭션을시작한다. OUT 트랜잭션의결과가디바이스로부터허브로올라온다. 호스트는적당한시간이후에 Complete Split( 분할완료 ) 패킷을먼저보낸뒤, OUT 트랜잭션의결과 를회신하는결과를얻는다. TT 알고리즘에있어서, USB 디바이스가가진엔드포인트속성중에서벌크, 컨트롤엔드포인트는 인터럽트, 등시성엔드포인트와완전히다른알고리즘을사용하게된다. 벌크, 컨트롤엔드포인트를위해서하나의 TT 는많으면많을수록좋은내부버퍼를가지고있다. 반면, 인터럽트와등시성엔드포인트를위해서는각각하나씩의분할시작, 분할완료버퍼만을가지 고있다. 하나의디바이스내부에복수개의벌크엔드포인트가있을수있다. 이와같은상황에서 TT 내부에 존재하는벌크, 컨트롤통신을위한내부버퍼는공유된다. 이런상황에서내부버퍼가크면클수 록유리한다. 반면에인터럽트와등시성엔드포인트처럼주기적인통신이필요한경우에는정확한주기에맞춰 서허브가디바이스와통신하는것이중요하다. High Speed 는 125us 프레임을사용하고, Full Speed 는 1ms 프레임을사용한다. 보다정교한타이밍관리를해야한다. 그리고인터럽트와등시성엔드포인트를사용하는데있어서, 중요한철학이있다. TT는호스트가디바이스로데이터를보내는경우, 가능하면디바이스가바쁘게데이터를받도록설계해야하고, 호스트가디바이스로부터데이터를읽어야하는경우, 가능하면디바이스가데이터를준비하기이전에먼저허브를통해서디바이스에게 IN 트랜잭션을발생시키도록해야한다. 이렇게해야 TT로인한오버헤드를줄이고보다정교하게데이터송수신이가능해진다.

1.10 데이터시그널링 (Signaling) 1.10.1 USB PHY 기본 USB PHY 에서수행하는작업들을개념적으로살펴본다. 그림 1-22 USB 2.0 의물리적인신호선 그림 1-23 USB 3.0 의물리적인신호선

[ 그림 1-22, 1-23] 을통해알수있는가장큰차이는 USB 3.0 에서 4개의핀 (Pin) 이추가정의되었다는점이다. Txp, Txn 은 Super Speed Tx를위해서, Rxp, Rxn 은 Super Speed Rx를위해서사용된다. USB 2.0은동시에양방향의데이터통신을할수없다. USB 3.0의 Enhanced Super Speed에서는양방향의데이터통신이동시에발생될수있다. 데이터를발생하기위해서 USB 2.0에서는 D+, D- 2개의핀이사용되고, USB 3.0의 Enhanced Super Speed에서는 D+, D-가사용되지않는대신, Tx+(Txp), Tx-(Txn) 과 Rx+(Rx+), Rx-(Rxn) 이렇게 4개의핀이사용된다. Super Speed에서는핀이름을통해알수있듯이송신과수신각각 2핀씩제공되고있는것을알수있다. D+, D- (Tx+, Tx-, Rx+, Rx-) 는특정전압을가지도록설계되는데, 이와같은전압의최대값과최 소값은스팩에규정되어있는내용을따른다. D- 가음수전압을가진다는뜻이아니다. D+ 와 D- 는한쌍으로, Tx+ 와 Tx- 가한쌍으로, Rx+ 와 Rx- 가한쌍으로사용되어진다. 예를들어, D+ 의전압이 av, D- 의전압이 bv 라고가정한다. 그러면, 이들각각의전압을사용해서다음과같은결과의전압을얻을수있다. (D+) + (D-) = (a+b)v (D+) (D-) = (a-b)v (D-) (D+) = (b-a)v ((D+) + (D-))/2 = ((a+b)/2)v ((D+) (D-))/2 = ((a-b)/2)v 이와같은여러가지수학적인논리를그대로적용하면다양한전압값을얻을수있을것이다. USB는이와같이 D+ 와 D-의전압을적당하게수학적인논리에적용시켜서특별한값을얻어낸다. D+, D- 두가지전압값을사용해서신호데이터를만들어내기때문에, 이것을 Differential( 차등 ) 신호라고부른다. USB 에서는조금단순하게 D+, D- 의전압과관련해서다음과같은신호를사용한다. D+ 가논리적으로로우상태 ( 스팩에서규정한낮은전압상태 ), D- 가논리적으로하이상태 ( 스팩에서

규정한높은전압상태 ) 를차등 0 신호라고부른다. D- 가논리적으로로우상태, D+ 가논리적으로하이상태를차등 1 신호라고부른다. 그림 1-24 USB 차등 0 신호와차등 1 신호 이와같은차등신호를사용해서 2 진수의데이터를발생시킨다. Low Speed 에서는차등 0 신호를 J 데이터상태, 차등 1 신호를 K 데이터상태라고부른다. Full Speed 에서는차등 0 신호를 K 데이터상태, 차등 1 신호를 J 데이터상태라고부른다. High Speed 에서는차등 0 신호를 K 데이터상태, 차등 1 신호를 J 데이터상태라고부른다. Super Speed 에서는특별히정의되어있지않다. High Speed 와 Full Speed 는차등 0, 1 신호를같은 K, J 상태로규정하고있지만, 스팩에서규정하 는실제규정전압은서로다르다는점을기억해야한다. ( 같은통신이아니다 )

SE0 상태는 D+ 와 D- 신호가모두논리적으로로우상태인것을의미한다. USB 2.0 에서는 J, K 상태는 USB 디지털데이터를발생시키는목적으로사용되고, SE0 신호는 J, K 신호와함께조합되어여러가지시퀀스 (Sequence), 예를들어아이들 (IDLE), 리셋, 리쥼요청, 패킷 시작 (SOP), 패킷종료 (EOP) 등의의미로사용된다. 특별히 High Speed 에서는별도로쳡 J(Churp), 쳡 K(Churp) 상태를추가정의하여 High Speed 를지 원하는디바이스가리셋이후에 Full Speed 혹은 Low Speed 로동작시, High Speed 지원여부를조 사하는방법으로사용된다.(High Speed Handshaking) USB 3.0 은차등 0 과차등 1 의신호를사용해서데이터비트를생성한다. USB 3.0 은 USB 2.0 에비해서훨씬많은시퀀스 (Sequence) 를정의하고있다. 이와같은시퀀스는 프로토콜계층, 링크계층그리고 PHY 계층모두에서용도에맞게사용되어진다. 1.10.2 USB 2.0 에서의데이터인코딩 / 디코딩 USB 2.0 은 Low Speed, Full Speed, High Speed 에따라서차등 0 신호와차등 1 신호는 J 상태, K 상 태로다르게부른다고배웠다. 그림 1-25 NRZI 방식의예제그림

다음시그널상태를가정해보자. K J K J K J K K 이것은 Low Speed 와 Full Speed 에서 SYNC(SOP) 시퀀스로사용하는신호이다. 이와같은차등신호가호스트에서디바이스로전달되었다면이것은어떤비트열을만들어낼까? 최근에전달된마지막상태가 J 상태라고가정한다. [ 그림 1-25] 은인코딩하는모습을보여주고있다. 시그널의위상이바뀌는구간을만나면, 데이터 비트값 0 이만들어진다. 위상이바뀌지않는구간에서는데이터비트값 1 이만들어진다. 결과적으로 J 상태가 K 상태로바뀌거나, K 상태가 J 상태로바뀌는구간에서는데이터비트값 0 이만 들어지고, 그렇지않은구간은데이터비트값 1 이만들어진다. J + K J K J K J K K 신호는이진수 0 0 0 0 0 0 0 1 값이된다. 그림 1-26 비트스터핑예제그림

USB 2.0 에서데이터인코딩 / 디코딩은 NRZI 방식과비트스터핑 (Stuffing) 알고리즘을사용하고있다. 이와같은알고리즘의단점은위상을바꾸지않는긴구간이발생되는경우, 데이터비트값이 1 로만들어지는구간이길어진다는점이다. 위상이너무오랫동안바뀌지않는상태로유지되면데이터생성및이후데이터디코딩시에오동작을나타낼소지가있기때문에, USB에서는위상변화가없이이어지는시그널이데이터비트 1을만들때, 이데이터 (1) 가연속으로 6번만들어지는구간이발생하면, 강제로데이터 0을억지로삽입하는방식을사용하는데이것을비트스터핑이라고부른다. USB 2.0 에서사용하는 USB 패킷은다음처럼만들어져서사용된다. 항상모든패킷은 SOP(Start Of Frame) 신호로부터시작되어 EOP(End Of Frame) 신호로끝난다. SOP 신호는 K J K J 의반복신호를사용해서만든 SYNC 명령어비트를만든다. Low Speed 와 Full Speed 에서는 K J K J K J K K 이렇게 8 개의신호를 SYNC 명령어비트를만드는

신호로사용한다. High Speed 에서는 K J K J K J 총 30 개의신호이후에이어지는 2 개의 K K 신 호를사용해서 32 개의신호를 SYNC 명령어비트를만드는신호로사용한다. 그림 1-27 USB 2.0 에서사용하는 USB 패킷모습 (SYNC, EOP) Low Speed 와 Full Speed 에서는인접한 2 비트의 SE0 신호와추가되는 J 데이터상태를 EOP 신호로 사용하고있다. Low Speed 와 Full Speed 에서아이들상태 (Idle) 가 J 데이터상태로규정되어있기때문에, 결국 EOP 신호는라인의상태를 J 데이터상태로만드는것이다. 반면 High Speed 에서는아이들상태로서 SE0와유사한상태를지속하는상태를사용하고있으며, J 데이터상태를아이들상태로사용하지않는다. 그렇기때문에 Low Speed, Full Speed에서사용하는패턴의 EOP신호를사용하지않는다. High Speed에서는강제로비트스터핑오류문제를발생시키는신호를만든다. 이것을 EOP신호로사용하고있다. 강제로비트스터핑오류문제를발생시킨다는것은만들어지는비트열속에비트값 1 이연속으로 7번이상나오도록하는것이다. 따라서, High Speed 에서는 EOP 를만들기바로직전의신호가 J 데이터신호의경우, 인접한 40 개 의신호를모두 KKKK 상태로만든다. 반면, EOP 를만들기바로직전의신호가 K 데이터신호

로끝난경우, 인접한 40개의신호를모두 JJJJ 상태로만든다. 결국, 이런작업들은 J가 K로, K 가 J로한번바뀌는행위로인해, 비트값 0이만들어진이후, 계속된 39개의신호들이비트값 1을만들어낸다. 결과적으로 2진수 011111. 이와같은데이터는정상적으로 USB 2.0에서만들어지지않는다. 비트스터핑이동작하기때문이다. 따라서, 이런데이터가수신되었다면비트스터핑이재대로동작하지않은상황의에러이지만, 이것을 EOP신호로간주하고있다. 1.10.3 USB 3.0 Enhanced Super Speed 에서의데이터인코딩 / 디코딩 USB 3.0 에서데이터인코딩 / 디코딩은 Enhanced Super Speed 에서는 8b/10b, SS Plus 에서는 128b/132b 알고리즘을사용하고있다. 또한옵션으로데이터스크램블 (Scramble) 알고리즘을적용 하여데이터가깨지는상황을예측할수있도록지원하고있다. 데이터스크램블사용여부는 USB 3.0 LTSSM(Link Training and Status State Machine) 의 Polling 상 태에서양쪽포트가협상을한뒤결정된다. [ 그림 1-28, 1-29] 는 Super Speed 와 Super Speed Plus 각각에서사용되는 Transceiver 입장에서사 펴본 USB PHY 의구성모듈이다. [ 그림 1-30, 1-31] 는 Super Speed 와 Super Speed Plus 각각에서사용되는 Receiver 입장에서사펴 본 USB PHY 의구성모듈이다. 그림 1-28 USB Super Speed PHY 의구성 (Transceiver)

그림 1-29 USB Super Speed Plus PHY 의구성 (Transceiver) 그림 1-30 USB Super Speed PHY 의구성 (Receiver)

그림 1-31 USB Super Speed Plus PHY 의구성 (Receiver)

옵션으로사용될수있는스크램블 (Scramble) 작업과디스크램블 (Descramble) 작업은전체구조를 파악하는데있어서당분간은생략해도무방하다. 8b/10b 와 128b/132b 는각각 8비트의데이터를 10비트로, 128비트의데이터를 132비트로확장시키는알고리즘을의미한다. USB Super Speed 데이터는제어문자 (K문자) 와데이터문자 (D문자) 로구분되는데, 이들을표현함과동시에, 동일한비트가반복적으로나오는일이없도록새로운조합의비트열을만드는작업에사용된다. 그림 1-32 D26.0 데이타를 8b/10b 알고리즘을사용해서인코딩하는예시 K 문자는 Kx.y 형태를가지고, D 문자는 Dx.y 형태로사용한다. [ 그림 1-32] 에서 RD(Running Disparity)+ 와 RD- 중에서적당하게하나를선택하여전체비트열이 균형적으로비트 0 과비트 1 이나타나도록돕는다. D26.0 문자는 RD+ 의경우, 이진수 0101101011 로대체되고, RD- 의경우, 이진수 0101100100 로대체된다. 현실속에서 USB 데이터비트열은하나의 10 비트열값만사용하는것이아니라, 이어지는다른비 트열이존재한다. 이로인해, 하나의 10 비트열속에비트 0 과비트 1 이균형있게배치되었다고하 더라도이어지는 10 비트열과연속선상에서다시고려되어져야한다. 이와같은이유로다음과같은알고리즘을사용한다.

첫번째 10 비트열 (RD-), 두번째 10 비트열 (RD+), 세번째 10 비트열 (RD-),.. 이런식으로배열한다. 그림 1-33 8b/10b 에서사용되는변환표 ( 일부분 ) 예를들어보자. 0x1A, 0x0F, 0x05, 0x1E 데이터 (4바이트가전부데이터문자라고가정한다 ) 를그순서대로변환하려고하면, 각각 [ 그림 1-33] 에서알수있는 RD-값과 RD+ 값이있는것을알수있다. 이중에하나씩을선택해야하는데, 그방법은다음과같다. RD-, RD+, RD-, RD+ 이런식순서로데이터를취해보자. 0x1A 는 RD- 값을취하므로 0101101011 을선택한다.

0x0F 는 RD+ 값을취하므로 1010001011 을선택한다. 0x05 는 RD- 값을취하므로 1010011011 을선택한다. 0x1E 는 RD+ 값을취하므로 1000011011 을선택한다. 결국이들 10 비트의 4 개의데이터를모두붙여본다. 0101101011 1010001011 1010011011 1000011011 이렇게 40 비트의데이터스트림이만들어진다. 표 1-17 USB 3.0 Super Speed(Plus) 에서사용되는제어문자 심볼 이름 SS SS+ 설명 SKP Skip K28.1 CCh 동기화에사용되는문자. 데이터로간주하지않음 SKPEND Skip End X 33h 이어지는 SKP문자의경계문자 SDP Start Data Packet K28.2 96h 데이터패킷의시작 EDB End Bad K28.3 69h 잘못된패킷수신 SUB Decode Erro Substitution K28.4 X 디코딩에러상황대체문자 COM Comma K28.5 X 스크램블 (Scramble) 회로를리셋함 SHP Start Header Packet K27.7 X 헤더패킷의시작을알림 DPHP Start Data Packet Header X 9Ah 패킷데이터헤더의시작을알림 END End K29.7 95h 데이터블록의마지막 SLC Start Link Command K30.7 65h 링크명령의시작 EPF End Packet Framing K23.7 36h 시퀀스패킷구성의마지막 SDS Start of Data Stream X 63h Data 스트림의시작 제어문자는단독으로사용되지않고두개이상의제어문자을연속으로배치하는문자열시퀀스 (Sequence) 형태로사용한다. 보통제어문자는특별한경우를제외하면스크램블 (Scramble) 에서제 외된다. Super Speed 를위한 LTSSM 상태도에서 Polling 상태에서수행하는링크양쪽포트의 Training 작 업과정중에서사용되는 TS1(Training Sequnce 1) 시퀀스는다음과같다.

표 1-18 USB 3.0 Super Speed 에서사용하는 TS1 시퀀스문자열 심볼문자개수 표현되는제어문자 설명 0,1,2,3 번째심볼 K28.5 COM(Comma) 4번째심볼 D0.0 예약됨 5번째심볼 파라미터 ( 나중에설명함 ) Link Functionality 6번째 - 15번째심볼 D10.2 TS1 식별자 USB 3.0 Super Speed 에서사용되는 TS1 시퀀스는총 16 문자로구성된다. 4 개의 COM 심볼로시 작된다. [ 그림 1-34] Super Speed Link command 시퀀스예시 [ 그림 1-34] 는이해를돕기위해서링크명령어를전송하기위해서준비되는문자시퀀스 (8 바이트 ) 를보여주고있다. ( 인코딩되지않은상태이다 )

[ 그림 1-35] 처럼 USB 3.0 Super Speed(Plus) 가사용하는데이터시그널인코딩방식은 NRZ(Non Return to Zero) 방식을사용한다. USB 2.0 에서 NRZI 방식을사용하는것과다른방식이다. NRZ 방식은시그널자체를디지털데이터로확인하기가용이한장점이있다. 그림 1-35 NRZ 방식의예제그림 Super Speed 는 5GHz, Super Speed Plus 는 10GHz 의주파수대를대역폭을사용하는고속전송이다. 이와같은고속전송에서데이터를만들어내는 Transceiver 와데이터를받는 Receiver 사이에연결 된케이블 ( 보통채널이라고부른다 ) 의길이와특성은전체속도에민감한영향을준다. Transceiver 에서송출되는데이터신호는채널을통과하면원래의데이터신호와조금다르게깨끗 하지못한신호가돼버린다. Transceiver 는 De-emphasis 방식을, Receiver 는이퀄라이져를사용해서 수신된데이터신호를증폭시킨다. Transceiver 를위한 De-emphasis 방식은변화가많은신호열 ( 고주파 ) 의성분은변화를주지않고 변화가적은신호열 ( 저주파 ) 의성분만높이를줄여서전송하는방식이다. 채널의특성을최소화하 는방식으로많이사용된다.

Receiver 에서사용하는이퀄라이져는필요한의미있는데이터신호를증폭시킨다. 이것역시채널 의특성을최소화하는목적으로사용된다. 이퀄라이져를사용할때, jitter( 잡음 ) 신호도함께증폭되 기때문에주의해서다루어야한다. 이렇게데이터신호를보정하는이유는 D+, D- 신호를깨끗하게검출할수있어야수신기측에서정 확하게데이터신호를분석할수있기때문이다. 데이터신호가얼마나깨끗한지를확인하는목적 으로살펴보는다이아그램을 Eye 다이아그램이라고한다. 그림 1-36 Super Speed D+, D- 의 Eye 다이아그램 D+ 와 D-는서로다른위상의신호를사용하기때문에눈 (Eye) 과같은모습의다이아그램이나타난다. [ 그림 1-36] 는 Super Speed 에서송신되는데이터신호중짦은시간구간동안의다이아그램이다. Eye 다이아그램의눈 (Eye) 의폭과높이가얼마나큰지와눈의양끝에나타나는 jitter( 잡음 ) 가얼마나작은지등을확인하는용도로사용한다. 좋은신호는눈의폭과높이가큰신호이다. [ 그림 1-36] 에있는 Minimum Eye Width 와 Minimum Eye Height 를 Eye Mask 라고부른다. 다이 아몬드형태의마름모영역은데이터신호로간주할수없는최소영역을의미한다. 최소한이영역

바깥쪽까지눈의크기가커져있어야데이터신호로간주될수있다.