3 장 USB 통신속도별특징 USB 2 속도 ( 로우스피드, 풀스피드, 하이스피드 ) 와 USB 3 속도 ( 슈퍼스피드 ) 는단지속도의빠르기만차이를가지고있지않다. 각각의전송속도는다양한속성면에서서로다른특징을가지고있으며, 주변에서아직도로우스피드 ( 느린속도 ) 의주변장치를그대로사용하는현실적인면에서볼때, 로우스피드의속도가느리다는이유로이를관과할내용은아니다. 3.1 로우스피드 (Low Speed) 와풀스피드 (Full Speed) LS 는초당 1.5Mbit, FS 는초당 12Mbit 의속도로 USB 대역폭을사용하는통신을의미한다. USB 스팩에서는각속도에서사용되는엔드포인트의특성과라인에서나타나는데이터신호의특 성을각각정의하고있다. 3.1.1 속도에따른엔드포인트의특성 표 3-1 속도에따른엔드포인트의 MaxPacketSize 엔드포인트종류 LS MaxPacketSize( 바이트 ) FS MaxPacketSize( 바이트 ) 컨트롤 (Control) 8 8, 16, 32, 64 인터럽트 (Interrupt) 1 8 바이트 1-64 벌크 (Bulk) 지원안함 8, 16, 32, 64 등시성 (Isochronous) 지원안함 1-1023 [ 표 3-1] 을보면, LS 에서는벌크와등시성엔드포인트가사용되지않음을알수있다. 각각의엔드 포인트의종류와지원하는속도에따라, 엔드포인트가최대로포함할수있는데이터바이트수 (MaxPacketSize) 가다르다는것을알수있다. LS, FS 에서는하나의트랜잭션 (Transaction) 에하나의데이터패킷만을보낼수있기때문에결국 지정된시간안에몇개의트랜잭션이허용되는가에따라서전송량이결정된다. 컨트롤 (Control) 엔드포인트는 USB 디바이스의열거 (Enumeration) 과셋업 (Configuration) 과정에사 용되는중요한엔드포인트이기때문에, USB 디바이스가허브에연결되는순간호스트는컨트롤 엔드포인트를사용하기위한적당한트랜잭션의모습을구성해야한다. LS 에서컨트롤엔드포인트가지원하는 MaxPacketSize 가 8 바이트인데반해서, FS 에서컨트롤엔
드포인트가지원하는 MaxPacketSize가 8, 16, 32, 64 중에하나이기때문에, 호스트는 FS 디바이스가지원하는컨트롤엔드포인트의 MaxPacketSize 값을정확하게알아야한다. 이런정보는디바이스디스크립터 (Device Descriptor) 에포함되어있으며, 이때문에호스트는 FS 디바이스가허브에연결되면, 의도적으로디바이스디스크립터의내용중앞부분 8바이트의데이터만읽으려는트랜잭션을사용한다. 그림 3-1 FS 디바이스가열거되는처음과정에발생되는트랜잭션 (GET_DSCRIPTOR)
[ 그림 3-1] 을보자. (1) Full Speed 장치임을알수있다. (2) 두번의 GET_DESCRIPTOR 명령어를볼수있다. 둘다 DEVICE Descriptor 를읽으려는시도이다. (3) 하지만, 읽혀진데이터의크기가서로다르다. 처음에는 8 바이트, 두번째는 18 바이트를읽은 상태이다. 각각을읽을때호스트가사용했던 IN 트랜잭션의수를보면, (4) 한번의 IN 트랜잭션만사용했다. (5) 세번의 IN 트랜잭션을사용했다. 이와같이같은내용의 GET_DESCRIPTOR 명령임에도불구하고호스트의반응이서로다른이유 를보면, (6) 에서, 처음에읽었던 Device Descriptor 의 7 번째바이트 (bmaxpacketsize0) 의값이 8 이라는사실때문이다. 호스트는 FS 의디바이스가허브에연결되면, 해당하는디바이스가지원할수있는컨트롤엔드포 인트의 MaxPacketSize 값이 8, 16, 32, 64 중에어떤값을사용하는지를확인하기위해서, 그림처럼 8 바이트의데이터만읽으려는시도로하나의 IN 트랜잭션만디바이스로요청한다. 이렇게읽혀진 DEVICE Descriptor 의마지막 7 번째한바이트는 bmaxpacketsize0 라는의미의값을 담고있으며, 이값이나타내는값이컨트롤엔드포인트가지원하는 MaxPacketSize 의값이기때 문에, 호스트는이값을먼저확인하게된다. 그림에서는호스트가확인한이값이 8 바이트라는값을담고있기때문에, 호스트는현재 FS 디 바이스의컨트롤엔드포인트의 MaxPacketSize 가 8 이라는사실을알게되었다. 호스트는동시에 (7) 에서, DEVICE Descriptor 의원래크기가 0x12(18) 바이트라는사실을알게되 었다. 호스트는 SET_ADDRESS 명령어를사용해서디바이스에게주소를할당해준다음, 이어서 DEVICE Descriptor 를다시읽을때는 (7) 에서알게되었던 18 바이트를세번의 IN 트랜잭션을사용해서 ( 매 번최대 8 바이트를담을수있을것이라고알고있기때문에 ) 요청하는것을알수있다. FS 디바이스의 MaxPacketSize 값이 8, 16, 32, 64 중에어떤값인지를확인해야하는호스트입장에 서는디바이스가인식될때마다, 항상먼저확인하는과정이므로기억해두길바란다.
평상시 USB 버스는유휴상태 (Idle) 로대기한다. 유휴상태란버스에의미있는패킷이발견되지 않는상태를의미한다. 이런유휴상태가오랫동안지속되지않도록호스트는일정한시간에한번 씩의미있는패킷을디바이스로전송한다. USB 디바이스는유휴상태 (Idle) 가일정시간 ( 약 3ms) 동안지속되면반드시현재버스상태를서스팬드된유휴상태 (Suspended Idle) 로간주한다. 이런상태가되면, USB 디바이스는평상시보다훨씬적은양의전력을 USB 버스에서끌어사용해서한다. 이와같은서스팬드된유휴상태가다시정상적인유휴상태로회복되는과정을리쥼 (Resume) 이라고부른다. 이와같이 유휴상태 -> 서스팬드된유휴상태 -> 리쥼을통한유휴상태 를반복하는작업은디바이스가정상적인반응을해야할때, 반응시간이원하지않는지연현상을가져오는결과를만든다. 호스트는 LS 디바이스와 FS 디바이스가서스팬드된유휴상태로전환되지않도록각각서로다른방법을사용한다. 그림 3-2 호스트가 FS 디바이스가서스팬드된유휴상태로전환되지않도록 SOF 패킷을전송하는 모습 [ 그림 3-2] 를보면, FS 디바이스에게매 1ms 초마다반복적으로전송하고있는 SOF(Start Of
Frame) 패킷을볼수있다. 호스트는 SOF 패킷를사용해서 FS 디바이스가서스팬드된유휴상태로 진입하는것을막는다. 그림 3-3 호스트가 LS 디바이스가서스팬드된유휴상태로전환되지않도록 Keep Alive EOP 패킷을 전송하는모습 [ 그림 3-3] 를보면, LS 디바이스에게매 1ms 초마다반복적으로전송하고있는 Keep Alive EOP(End Of Packet) 패킷을볼수있다. 호스트는 Keep Alive EOP패킷를사용해서 LS디바이스가서스팬드된유휴상태로진입하는것을막는다. Keep Alive EOP패킷은약 3에서 4 비트타임정도만소비할정도로무척적은양의신호이기때문에, USB 버스에부담을주지않는다. SOF 패킷은 USB 패킷으로보는것이맞지만, Keep Alive EOP 는사실패킷보다는버스에실리는 신호 (Signal) 로보는편이옳다. SOF 패킷을전송하기위해서호스트는일련의패킷전송을위한프 레임을구성해야하지만, EOP 는이런프레임구성작업이필요없는적은양의신호이다. ( 여기서잠깐! 윈도우운영체제는기본적으로시스템이절전모드로진입하는경우를제외하고 HID 마우스, 키보드와같은입력장치들이평상시시스템을사용하고있는상황에서서스팬드된유휴상태로진입하지않도록막는다. 이것은입력장치를사용자가움직여서데이터를발생시켰을때가급적이면빠른시간안에호스트로데이터가올라가도록하기위함이다. 이와같은작업은
윈도우운영체제가지원하는디바이스드라이버를사용할때의경우이다. 물론, 드라이버개발자 혹은훰웨어가원한다면해당하는장치가서스팬드된유휴상태를가질수있도록설정할수있다 ) 3.1.2 데이터신호 (D+, D-) 와라인의상태 USB 통신에서프로토콜관점에서바라본가장작은단위의흐름을패킷 (Packet) 이라고부른다. 이런패킷을호스트와디바이스가주고받기위해서취하는프로토콜을트랜잭션 (Transaction) 이라고부른다. 즉트랜잭션은패킷을전송하는프로토콜이다. 그러나, 이와같은개념들은모두논리적인개념일뿐이다. 사실 D+, D- 데이터신호는이런고급스러운의미의흐름을다루지않는다. 오히려 D+ 회선에실리는전압과 D- 회선에실리는전압간의차이만의미를가진다. 이들회선에실리는각각의전압의높은상태와낮은상태를각각논리적으로로직하이 (Logic High) 와로직로우 (Logic Low) 라고부를수있다. USB LS, FS 에서는이와같은 D+, D- 회선이가지 는로직하이상태와로직로우상태를다음과같이정의한다. 그림 3-4 LS, FS 에서가질수있는 D+, D- 의전압상태와명명법
[ 그림 3-4] 를보면, LS와 FS 속도에서각각사용하는 D+, D- 회선의전압상태를어떤용도로사용하는지를알수있다. 그림에서 Differential 0, 1 상태는 D+, D- 의전압차이가가장가장뚜렷하게나타나기때문에데이터생성조건으로사용된다. 이와같은패턴의모습은마치눈 (Eye) 의모습과비슷하다. 빠른송신을보이면보일수록더욱눈의모습에가깝게된다. 왜냐하면, 아날로그신호의특성상빠른속도로변화를보이면보일수록세로선의모습이옆으로누워있는모습으로바뀌기때문이다. 데이터신호를생성할때 LS 와 FS 의차이점을보면, Differential 0, 1 의상태가서로반대의 Data 상태인것을알수있다. LS 에서는 Data K 상태가 FS 에서는 Data J 상태, LS 에서는 Data J 상태가 FS 에서는 Data K 상태가 된다. 앞으로설명하는버스에실리는다양한시그널은 Differential 0, 1 을사용하는것이아니라 Data J 상태, Data K 상태를사용하게되므로유의해서보도록한다. 그림 3-5 Disconnect, Connect, Idle, Reset, Sync, EOP 와데이터시그널
[ 그림 3-5] 를보면 Disconnect 상태에서부터 EOP 시그널상태까지회선시그널상태가어떻게변 하는지를알수있다. 이와같이 SE0, Data J, Data K 시그널을적절하게조합하여위와같은다양 한명령어시그널로사용하고있다. SYNC 명령은모든 USB 패킷의시작을나타내는용도로사용된다. 모든 USB 패킷은 SYNC 명령 에서시작하여 EOP 시그널로끝난다. EOP 시그널이끝나면, USB 버스는유휴상태 (idle) 상태로돌 아가서대기한다. 앞에서배운내용에따르면, 유휴상태가 3ms 이상지연되는상황이발생되지않도록호스트는 SOF 패킷 (LS 에서는 Keep Alive EOP) 을주기적으로송신한다. 그림 3-6 Suspended Idle 과 Resume 데이터시그널 [ 그림 3-6] 을보면, 일반유휴상태 (Idle) 에서 Suspended 유휴상태 (Suspended Idle) 로전환하는모습을볼수있다. 서스팬드상태에서호스트는디바이스에게낮은전력만공급할수있다. 서스팬드상태에서일반유휴상태로되돌아오기위해서호스트또는디바이스 (Remote Wakeup) 에서리쥼 (Resume) 요청을할수있다. 리쥼요청에서알수있듯이최소한 20ms 이상의지연시간이필요하기때문에, 평상시일반유휴
상태가자주불필요하게 Suspended 유휴상태로들어가는것은좋지않다. 오랜시간동안버스 를사용하지않아도되는상황이아니라면, 버스를일반유휴상태로대기하는것이 USB 디바이스 의데이터요청반응시간에서유리하다. 3.1.3 데이터인코딩과디코딩 [ 그림 3-5] 에서 SYNC 명령어에서시작하여 EOP 시그널까지를하나의 USB 패킷을구성하는프레임이라고배웠다. 프레임을구성하는내부로직은프로토콜을설명하는곳에서배우도록하고, 여기서는이와같은 Data J, Data K 상태가어떤방법으로디지털데이터비트로인코딩, 디코딩되는지를배우도록한다. 3.1.3.1 NRZI(Non Return to Zero, Inverted) 디지털데이터를신호로인코딩하는알고리즘으로 NRZI 가있다. 비트 1 은신호를토글 (Toggle) 하고, 비트 0 은이전신호를그대로유지한다. USB 2 에서사용하는 NRZI 방식은수정된방식을 사용한다. 비트 0 을토글신호로사용하고비트 1 을유지신호로사용한다. 그림 3-7 수정된 NRZI 인코딩알고리즘을사용하는 SYNC 비트열과시그널변환
[ 그림 3-7] 을보면, SYNC 명령어 ( 이진수 00000001 ) 8 비트가 K J K J K J K K 신호열로바뀌는것을 알수있다. 그림 3-8 SYNC 비트열 [ 그림 3-8] 과같이 SYNC 명령어가이진수 00000001 값을가지는이유는, USB 버스가유휴상태 (Idle) 를유지할때, 버스상의시그널은 Data J 상태를가지기때문에, J 상태에서 00000001 값에 의해서현재상태가 K J K J K J K K 로바뀌도록하기위함이다. 조금더신중하게이야기하자면, 마지막버스시그널상태인 K 상태를만들려고이와같은비트열 을사용한다고볼수있다. 결국 USB LS, FS 에서는 SYNC 명령어를수행하고나면항상버스의시그널상태는 Data K 가되어 있어야한다. 유휴상태가 Data J 상태인것을보면, 버스의상태는 J -> K 로바뀌면서 USB 패킷이 전송되고 K -> J 로바뀌면서유휴상태로돌아오는결과가된다. 3.1.3.2 비트스터핑 (Bit Stuffing)
USB 버스의시그널상태가 K 혹은 J 상태를너무오랫동안유지하는상황은데이터시그널을해석하는 Receiver의부담감이가중되는결과를가져온다. 따라서어느정도 K, J 상태는변화가나타나야한다. USB 버스에서는이와같이 6번연속으로 K 혹은 J 상태가지속되면억지로 7번째상태를이전상태와다른상태로바꾸어버리는알고리즘을사용하는데이것을비트스터핑이라고부른다.(J상태를지속하여유휴상태를의도적으로만드는경우는예외이다 ) 예를들어, 데이터신호열이 K J K J K K K K K K K J 의경우를생각해보자. 이경우, 5 번째비트신호부터 11 번째비트신호까지 K 상태를유지하고있다. 이것은 K 신호가연 속으로 7 개가나오는상황이다. USB 버스에서는이와같은상황을피하기위해서 7 번째 K 가나타 나는위치에억지로 J 상태값을끼워넣는다. 데이터신호열은다음과같이바뀐다. K J K J K K K K K K J K J 만일이와같은데이터신호열을정상적인데이터신호열 ( 비트스터핑이들어가지않은 ) 로간주하 고해석하면안된다. 그러면, 원하지않는비트열이만들어지는결과가된다. K J K J K K K K K K J K J 신호는, K->J : 0, J->K : 0, K->J : 0, J->K : 0 K->K : 1, K->K : 1, K->K : 1, K->K : 1 K->K : 1, K->J : 0, J->K : 0, K->J : 0 따라서이진수 000011111000 이된다. ( 잘못된해석 비트스터핑을고려하지않았다 ) K J K J K K K K K K J K J 신호는비트스터핑을고려해서변조된신호라는사실을인식하고비트 스터핑신호를제거하여 K J K J K K K K K K K J 로바꾼뒤에해석해야한다. K->J : 0, J->K : 0, K->J : 0, J->K : 0 K->K : 1, K->K : 1, K->K : 1, K->K : 1 K->K : 1, K->K : 1, K->J : 0 따라서이진수 00001111110 이된다. ( 올바른해석 )
3.2 하이스피드 (High Speed) HS는초당 480Mbit USB 대역폭을사용하는통신을의미한다. LS, FS가사용하는 USB 대역폭은 12MHz 였지만 HS는 480MHz의대역폭을지원하게되었다. LS, FS 에서는하나의프레임시간이 1ms 초였지만, HS에서는 1/8ms(125us) 를프레임시간으로사용한다. HS 허브는 LS, FS 그리고 HS 디바이스를모두지원하기때문에이와같이서로다른시간길이의프레임을구분하기위해서마이크로프레임 (uframe) 이라는용어를사용해서 125us 프레임을사용하는 HS를다른 LS, FS와구분하고있다. 3.2.1 속도에따른엔드포인트의특성 표 3-2 속도에따른엔드포인트의 MaxPacketSize 엔드포인트종류 HS MaxPacketSize( 바이트 ) 컨트롤 (Control) 64 인터럽트 (Interrupt) 1-1024 벌크 (Bulk) 512 등시성 (Isochronous) 1-1024 [ 표 3-2] 을보면, HS 에서는엔드포인트종류에따라서엔드포인트가최대로포함할수있는데이 터바이트수 (MaxPacketSize) 가다르다는것을알수있다. 인터럽트와등시성엔드포인트의경우, HS에서는마이크로프레임 (125us) 에최대 3개의트랜잭션이사용될수있다. ( 벌크와컨트롤은복수개가가능하다. 하지만, 인터럽트와등시성엔드포인트의경우는주기적인시간이보장되어야하는특성으로인해, 하나의마이크로프레임속에하나의트랜잭션만허용되는것이원칙이다 ) 하나의트랜잭션은 [ 표 3-2] 에따르면, 최대 1024 바이트의데이터패킷을담을수있기때문에, 최 대 3 개의트랜잭션은 3072 바이트의데이터양을실어보내는결과를가져온다. 마이크로프레임당 3 개의트랜잭션을사용한다면, 1 초당약 24M 바이트의데이터를전송하는속도가된다. 통상이와같이하나의마이크로프레임속에복수개의트랜잭션을사용하는것은고대역폭 (High Bandwidth) 전송이라고부른다. 윈도우 XP 는인터럽트전송과등시성전송에있어서, HS 속도에서 이와같은고대역폭전송을지원하지않는다. 아무리호스트컨트롤로와디바이스가이런특성을
지원한다고하더라도윈도우 XP 는하나의마이크로프레임에는하나의트랜잭션만허용한다. 이 때문에최대전송속도는 1 초당약 8M 바이트의데이터를전송하는속도가된다. 그림 3-9 하나의트랜잭션에복수개의데이터패킷을담는모습 ( 인터럽트엔드포인트 ) [ 그림 3-9] 를보면 HS 에서고대역폭인터럽트전송을보여주고있다. 하나의마이크로프레임속에 3 개의트랜잭션을담고있다. 총 3072 바이트의양이된다. 인터럽트엔드포인트의서비스인터벌시간이 x uframe 의양 (x * 125us) 이라고가정한다. 그림처럼모든전송은 x uframe 시간마다이루어진다. 각각의전송이 3 개의트랜잭션을사용하는 모습이다. 디바이스가 NAK 패킷을응답하는상황이발생되면, 호스트는다음서비스인터벌시간 까지더이상 IN 요청을하지않는다. LS, FS 와마찬가지로 HS 에서도평상시 USB 버스는유휴상태 (Idle) 로대기한다. 유휴상태가오랫 동안지속되면디바이스는버스상태를서스팬드된유휴상태로간주한다.
HS 에서는서스팬드상태로진입하는과정에서반드시 FS 로먼저전환된다음, 서스팬드로전환되 기때문에이런이유로인해서스팬드진입이빈번한버스상태는그만큼성능이떨어지는결과를 가져올수있다. HS 역시버스의상태가서스팬드상태가되지않도록하기위해서일정한시간에한번씩 SOF 패킷 을디바이스로전송한다. 이와같이 HS 유휴상태 -> FS 유휴상태 -> FS 서스팬드된유휴상태 -> 리쥼을통한 HS 유휴상 태로복귀 를반복하게된다. 리쥼신호를해석할때는반드시원래버스상태가 HS 상태였음을기억 하고리쥼에의해서 FS 서스팬드된유휴상태를곧바로 HS 유휴상태로전환해야한다. 그림 3-10 호스트가 HS 디바이스와통신중에버스상태를서스팬드된유휴상태로전환되지않도 록 SOF 패킷을전송하는모습 [ 그림 3-10] 에서패킷 77374-85359, 패킷 85369-93354 는 SOF 패킷만발생되고있는모습이다. 그림을보면, 모든 SOF 패킷이전송되는시간 (Timestamp) 을보시면, 125us 프레임당하나씩전송
하는것을알수있다. 호스트는 SOF 패킷를사용해서 HS 디바이스가서스팬드된유휴상태로진입 하는것을막는다. 3.2.2 데이터신호 (D+, D-) 와라인의상태 HS 에서사용되는데이터신호와라인의상태는 FS 에서사용되는것과비슷하다. 그림 3-11 HS 에서가질수있는 D+, D- 의전압상태와명명법 [ 그림 3-11] 을보면, LS, FS 의경우와비교해서비슷한부분과다른부분을알수있다. HS 는기존에사용했던 LS, FS 보다더적은양의전압을사용한다. FS 에서는약 3.3V 의전압을 D+, D- 회선의데이터신호로사용했지만, HS 에서는약 0.4V 의전압을사용한다. 전압의사용정도가 다를뿐이지 Data J 와 Data K 의명명은같은상태를나타낸다 ( 전압차는다르다 ).
특이한점음, LS, FS에서는없었던 Churp K, Churp J 신호가추가되었다. 이신호는평상시에는사용되지않는다. HS를지원하는디바이스는처음전원이인가되거나호스트에연결되었을때, 처음상태를반드시 FS상태로시작해야한다. 이후, USB 2 허브와디바이스간의속도판별핸드쉐이킹프로토콜절차를밟아서, 현재디바이스가 HS로동작할수있는디바이스라는사실을허브에게알린다. 이때사용되는프로토콜이 Churp K, J 프로토콜이다. Churp K, J 신호는약 0.8V의전압차를보이는 D+, D-의회선을통해, 주기적으로이신호를반복하는행위를통해서디바이스는 FS에서 HS로진입하게된다. 따라서, Churp K, J 프로토콜을거친뒤, 디바이스는자연스럽게 HS로전환되고, HS 유휴상태 (Idle) 상태가된다. FS, LS 유휴상태는 Data J 상태를의미했지만, HS 에서는 SE0 상태를유지하는상황이유휴상태이 다. Data J 상태보다는 SE0 상태가전력소비를줄일수있기때문에 HS 에서는이와같은시그널 상태를유휴상태로사용한다. LS, FS 에서유휴상태 (Data J 상태 ) 가오랫동안유지되면서스팬드유휴상태 (Suspened Idle) 가된다. LS, FS 에서 SE0 상태가오랫동안유지되면리셋상태가된다. HS 에서유휴상태 (SE0) 가오랫동안유지되면디바이스입장에서는이것이서스팬드유휴상태인지 아니면리셋상태인지를판별할수있어야한다. 이때문에, HS에서는약 3.125ms 시간동안 SE0상태를유지하면, 무조건디바이스는 HS 에서 FS 로상태를전환해야한다. 이렇게디바이스의상태가 HS에서 FS로전환되면, 이때허브는디바이스의연결상태가바뀐것을알아야한다. 이후, 허브가여전히 SE0 상태를유지한다면, 이것은리셋을의미하는것이고, Data J 상태로바꾼다면, 이것은유휴상태가된다. 이후, FS 유휴상태가지속지속될것이고, 이후에는서스팬드유휴상태로간주된다. 조금은복잡하지만, 이처럼 HS 의장치는 FS 와필요에따라서상호, 전환되는특징을가져야한 다. 장치연결 -> FS -> Reset -> Speed Handshaking -> HS -> HS Idle -> FS Idle -> FS Suspended -> Resume -> HS Idle 장치가연결되면, FS 로시작해서, 리셋과정을거친뒤, HS 지원여부를확인하는속도검증프로토콜을 거친뒤, HS 로전환된다. 이후 HS Idle 상태가지속되면, FS Idle 상태로전환되고, 이후 FS 서스팬드 Idle 상태로들어간다.
그림 3-12 HS 유휴상태에서 FS 서스팬드유휴상태또는리셋상태로전환 HS 에서는패킷프레임을구성하는마지막시그널로사용되는 EOP(End Of Packet) 신호가 LS, FS 와 는많이다르다. FS, LS 에서 EOP 신호는 2 비트의 SE0 + 1 비트의 J 상태가사용되었다. 이것은 FS Resume 신호와같은패턴의시그널이다. HS 에서사용되는 EOP 신호는전혀다른패턴의시그널을사용한다. HS 에서는두가지의패턴중에한가지가 EOP 로사용된다. 하나는 K K K K.. K 40 개의비트열이고, 또다른하나는 J J J J. J 40 개의비트열이다.
이중어느하나가 EOP 의신호로사용된다. EOP 시그널에해당하는실제비트열값은 0 1 1 1 1 1 1. 1 총 40 개의비트열이다. 맨앞에전송되는비트값만 0 이고, 나머지 39 개의비트열은모두 1 의값을순서대로전송한다. 이것이 EOP 문자열이다. HS 에서마지막으로전송했던시그널이 K 상태였다고가정하자. 이때, EOP 비트열을보내려는신 호는첫번째비트가 0 이기때문에, 마지막시그널상태 K 는 J 상태로토글된다. 이후 39 개의비트 가모두 1 이기때문에더이상토글이없는상태로 J 상태가 39 번지속된다. HS 에서마지막으로전송했던시그널이 J 상태였다고가정하자. 이때, EOP 비트열을보내려는신 호는첫번째비트가 0 이기때문에, 마지막시그널상태 J 는 K 상태로토글된다. 이후 39 개의비트 가모두 1 이기때문에더이상토글이없는상태로 K 상태가 39 번지속된다. 이와같은이유로 EOP 로사용되는시그널은 40 개의 K 신호혹은 40 개의 J 신호가되는것이다. 그림 3-13 HS 에서사용되는 SYNC, EOP 시그널
재미있게도 EOP신호로사용되는비트열이 0 1 1 1 1.. 1 총 40개의비트열이라고한다면, 이값은분명히비트스터핑 (Bit Stuffing) 오류를발생시킬수밖에없다. 왜냐하면, 1의값이연속으로 7개이상발견되는상황이기때문이다. HS에서비트스터핑오류가발생하면패킷프레임이끝난다는뜻으로도해석된다. HS에서는비트스터핑오류를강제로발생시켜서이를 EOP신호로사용하고있는것이다. HS에서사용되는 SYNC 명령어는 LS, FS와비슷한패턴의시그널을사용한다. 단지, 그길이가훨씬길다. LS, FS에서는 K J K J K J K K 이렇게 8개의신호를 SYNC 신호로사용했다. HS에서는 K J K J K J K J K K 이렇게총 32개의신호를 SYNC 신호로사용한다. 마지막 2비트의시그널만 K 로사용하고나머지는 K와 J를번갈아가면서사용한다. 3.2.3 UTMI(USB Transceiver Macrocell Interface) 와 ULPI(UTMI+ Low Pin Interface) 보통 USB PHY는 Transceiver와 Receiver( 통상 Transceiver라고부른다 ) 를구현하는물리계층과 SIE(Serial Interface Engine) 를포함하는것을의미한다. SIE는호스트컨트롤로혹은디바이스컨트롤로의일부분으로동작하기때문에구분하기가조금모호하다. Transceiver와 SIE간의인터페이스를구현하는방법에있어서많이알려진인터페이스가 UTMI, UTMI+, ULPI 가있다. 이중 ULPI는 UTMI+ 의확장인터페이스로알려져있다. 그림 3-14 USB 2 에서사용되는 Transceiver 와 SIE
UTMI 인터페이스가비교적많은하드웨어핀을인터페이스목적으로사용하기때문에이를개선 시킨 ULPI 인터페이스가 USB 2.0 을대표하는인터페이스로자리잡음하고있다. 그림 3-15 UTMI(USB Transceiver Macrocell Interface) 블록다이아그램 그림 3-16 ULPI(UTMI+ Low Pin Interface) 블록다이아그램
Transceiver 는 USB 라인상의 D+, D- 신호의값과송수신되어져야하는 2 진수의비트값간의변환작 업을책임진다. 비트스터핑오류를검사하고, 다양한시그널 ( 리셋, 리쥼, 서스팬드..) 을검출하는역 할을담당한다. SIE 는 USB 프로토콜층으로연결시키는역할을담당한다. 토큰패킷, 데이터패킷, 상태패킷등을검 사하거나만들어내는역할을담당한다.
3.3 슈퍼스피드 (Super Speed) SS 는초당 5Gbit, SS+(Plus) 는초당 10Gbit 의속도로 USB 대역폭을사용하는통신을의미한다. SS 는 USB 3.0 에서처음소개된속도개념이다. SS 와 SS+ 는합쳐서 USB 3 속도라고도부른다. USB 3.1 에서는 SS 를 Enhanced Super Speed Gen 1, SS+ 를 Enhanced Super Speed Gen 2 라고도 부른다. 프로토콜층보다는비교적 USB PHY 층에서두가지속도는차이점을내보인다. USB 3 은기존에사 용되던 USB 2 에비해서다음의장점을가진다. * USB 2 보다많은양의버스전력을제공한다 * USB 2 보다빠른속도를지원한다 * USB 2 에비해서훨씬낮은전력소비를사용한다 * USB 2 와분리된하드웨어구성과프로토콜을정의하였기때문에, 충돌문제가없으며, 최상위 고급클래스프로토콜을함께사용할수있다 * 비동기프로토콜과효과적인라우팅프로토콜지원 * 다운스트림포트와업스트림포트간의링크를위한링크프로토콜지원 * 링크테스트를위한 Compliance Test 와 Loopback Test 지원 3.3.1 속도에따른엔드포인트의특성 표 3-3 속도에따른엔드포인트의 MaxPacketSize 엔드포인트종류 SS, SS+ MaxPacketSize( 바이트 ) 컨트롤 (Control) 512 바이트 인터럽트 (Interrupt) 1-1024 바이트 벌크 (Bulk) 1024 바이트 등시성 (Isochronous) 0-1024 바이트 USB 3 SS 에서는 Burst 전송이라는개념의전송이새롭게정의된다. 기존에 USB 2 에서사용되는모든트랜잭션은하나의데이터패킷만포함할수있었다. 이로인해
복수개의데이터패킷을계속해서호스트와디바이스로송, 수신하기위해서는여러번의트랜잭 션이발생해야하고, 매트랜잭션은항상토큰패킷과상태패킷을수반해야했다. 이와같은토큰및상태패킷은결과적으로전체적인 USB 통신속도를낮추는단점이되어버렸다. USB 3 에서는 SS 통신속도를새롭게정의하여, 하나의트랜잭션내의복수개의패킷을포함하는것 을허용하게되었다. 그림 3-17 USB 2 에서복수개의데이터패킷을전송하는모습 [ 그림 3-17] 은호스트가디바이스측으로데이터패킷을계속해서전송하는모습이다. 그림을보면호스트에서디바이스측으로데이터패킷을보내는과정을보면, OUT 패킷 ( 호스트-> 디바이스 ) 이먼저전달되고, 이후데이터패킷 ( 호스트-> 디바이스 ) 이전달된뒤에디바이스로부터호스트로 ACK상태패킷 ( 디바이스-> 호스트 ) 이전송되고있다. 이와같은과정이계속해서반복적으로이루어져야한다. 이럴수밖에없는이유는호스트와디바이스는서로가얼마큼의데이터를쉬지않고받을수있는지에대한협의가없기때문이다. 항상데이터를전송하면받을수있는지를확인해야하는번거로움이스팩에그대로나타난다.
그림 3-18 USB 3 에서복수개의데이터패킷을전송하는모습 (Burst 전송 ) [ 그림 3-18] 은 SS에서사용되는 Burst 전송을보여주는예시이다. 호스트는디바이스로부터데이터패킷을읽고자하여, ACK 패킷을디바이스측으로보냈다. 이때, NumP 필드의값이 16임을유의해서보자. 16이라는의미는, 디바이스는 16 * 데이터패킷 (1024바이트) 의크기의데이터를호스트의동의없이전송할수있다는것을의미한다. 그림에서는이어서디바이스가 2번에걸쳐서연속으로데이터패킷을호스트로전송하는것을알수있다. 물론, 디바이스가 Burst 통신을꼭해야하는것은아니다. 디바이스가원하는경우에이와같은 Burst 통신을해도된다는뜻이다. USB 3 Super Speed 는허브의다운스트림포트 (Downstream Port DP) 와디바이스의업스트림포트 (Upstream Port UP) 간의링크 (Link) 를구성하는프로토콜이추가되었다. 링크는평상시전원공급이원활한상태로언제든지 USB 패킷을송, 수신할수있는 U0가정의되어있다. 반면에정상적인 USB 패킷을송, 수신할수없는 U1, U2 그리고 U3상태가정의되어있다. 이들은정의된특정사건에의해서서로의상태간의변화를가지게되는데, 이와관련된내용은 이후에 USB 링크 장에서구체적인내용을배우도록한다. 평상시 U0 상태를유지하는링크는의미있는프로토콜패킷이지정된시간동안전혀발생되지않 으면약속된프로토콜에따라서링크의현상태가 U1, U2 상태로낮추어진다. 이와같은내용은
마치 USB 2 에서보던서스팬드된유휴상태 (Suspened Idle) 와거의동일한상태가된다. 이런상태로의진입이잦으면잦을수록다시 U0 상태로복귀하는데걸리는시간이전체적인통신속도에영향을미치게된다. SS는의도적으로 U0상태가 U1, U2 상태로전환되지않도록 U0상태의링크측으로 ITP(Isochronous Timestamp Packet) 패킷을주기적으로전송한다. 그림 3-19 호스트가 SS 링크가서스팬드된유휴상태 (U1, U2) 로전환되지않도록 ITP 패킷을전송 하는모습 [ 그림 3-19] 을보면, U0 상태인링크측으로약 125us 마다한번씩 ITP 패킷이 Tx( 호스트에서디바 이스 ) 형태로전송되고있는상황을볼수있다. 3.3.2 데이터신호 (D+, D-) 와라인의상태 USB 3 SS 에서사용되는데이터신호는호스트기준에서볼때, Txp, Txm( 송신용 2 가닥 ), Rxp, Rxm( 수 신용 2 가닥 ) 총 4 가닥이사용된다. D+, D- 이렇게 2 가닥을사용하는 USB 2 와차별되는정책이다. 따라서, USB 3 SS 에서는동시에양방향통신이가능한회선상태를가진다.
꼭양방향통신이가능해졌기때문이라고하기보다, USB 3.0 에서소개하는 SS 속도부터는데이 터신호의시그널상태를보다전문적으로정의하기시작했다. USB 2 에서는리셋 (Reset), 리쥼 (Resume), 서스팬드유휴상태 (Suspended Idle), 유휴상태 (Idle), SYNC, EOP 등의신호를 D+, D- 의위상차이를사용해서정의했다. 또한 USB 2 에서는비트스터핑 (Bitstuffing) 방식을런타임에서항상적용하기때문에, 평균적으로데이터비트의전송량이스터핑의유무에따라서가변적일수밖에없다. USB 3 SS 에서는다음과같은주요특징을데이터신호에적용하고있다. * NRZ 방식을사용한다 (USB 2 는 NRZI 방식을사용한다 ) * Symbol 문자 ( 명령과데이터 ) 를구분정의해서사용한다 (USB 2 에서는 J 상태와 K 상태를데이터신 호발생근거로삼거나명령어로사용한다 ) * 데이터무결성을보장하기위해서, 스크램블 (Scramble) 알고리즘을채택한다 * 비트값 1 이연속적으로나타나지않도록 8b/10b 알고리즘을사용한다 (SS+ 제외 ) 3.3.3 고속전송을위한채널과구성요소 5GHz 이상의고속주파수대를사용하는시리얼전송을하기위해서는송신 (Transceiver) 과수신 (Receiver) 측은보다정교한수학적알고리즘이사용되어져야한다. 그림 3-20 인터커넥트다이아그램
[ 그림 3-20] 처럼, 특히송신과수신사이에별도의케이블 ( 채널 ) 이없이바로연결되는경우에는그 나마다행이지만, 채널을통해서송신과수신간의연결을하면, 고속전송시채널을통과하는데이 터신호가변한다 (Slope). Transceiver 와 Receiver 는이와같이원하는데이터신호가변해서전송되는상황을보정하기위하 여다양한알고리즘을적용할수있다. 3.3.3.1 TX Equalization 보정알고리즘 데이터신호내에비트스트림의변화가많은고주파수비트스트림 (010101010101) 과그렇지않은 저주파수비트스트림 (00011110000) 은채널을통과하면서로다른특징을가지는경향이있다. 특히고주파수비트스트림은고속으로채널을통과하면진폭이감쇠되는특징이두두러진다. 이와같이진폭이감쇠되는데이터신호는자칫하면 Receiver 측에서해석이어려운문제를가져 올수있다. Transceiver 는 Pre-Emphasis 와 De-Emphasis 방식중에적당한방법을사용해서전송 해야하는데이터신호를변경시킨후에채널로전송한다. * Pre-Emphasis Equalization 그림 3-21 Pre-Emphasis Equalization
[ 그림 3-21] 을보면, D+ 혹은 D- 데이터신호중어느한가지신호를기준으로, 위상을자주바꾸는 상황의고주파수대역과그렇지않은저주파수대역의신호가있다. 이중에고주파수대역의신호를 증폭시키는알고리즘이 Pre-Emphasis 알고리즘이다. 고속전송시, 채널을통과한데이터신호의특성에의해서고주파수대역의신호가감소하기때문에, 이와같이사전에미리고주파수대역의신호를증폭하여, 채널을통해서전송하는알고리즘이다. * De-Emphasis Equalization 그림 3-22 De-Emphasis Equalization
[ 그림 3-22] 는고주파수대역은그대로두고, 오히려저주파수대역의신호의증폭을감소시키는알 고리즘을보여주고있다. 이것을 De-Emphasis 알고리즘이라고부른다. 이처럼송신측에서는데이터신호가채널을통해서손실되는상황을미리예측하고데이터신호 데변조하는 TX Equalization 보정알고리즘을사용한다. 3.3.3.2 RX Equalization 보정알고리즘 수신 (Receiver) 측에서수신된데이터신호를증폭시키는알고리즘은 Linear Equalization 방식을사 용한다. 무조건증폭하는신호는오히려노이즈 (Noise) 데이터의증폭문제를함께가져오기때문 에적절한알고리즘에의한증폭방법이사용되어져야한다. USB 3.0 SS 에서는 CTLE(Continuous Time Linear Equalization), USB 3.1 SS+ 에서는 DFE(Decision Feedback Equalization) 방식을사용한다. 이와같은방식들은모두알고리즘에의해서적절한구간 의데이터신호만증폭하는알고리즘으로사용된다. SS(SS+) 에서는링크 ( 다운스트림포트와업스트림포트간의 ) 를형성하는과정중에양쪽에서사전에 정의된패턴의데이터스트림을주고받는다. 이것은고주파수대역의신호와저주파수대역의신호
들사이에서발생되는신호세기를확인하는알고리즘으로연결된다. 이런알고리즘을통해서어 떤대역의주파수신호를증폭할것인지를판단하도록돕는다. 이과정은 Polling.RxEQ 과정이라고 부른다. 그림 3-23 TSEQ 스트림을통하여전달되는데이터신호세기를분석하는그림 3.3.4 LFPS(Low Frequency Periodic Signaling) SS에서링크가정상적으로연결되어서언제든지 USB 패킷을전송할수있는상황이아닌경우, 링크간의특별한용도로주고받을수있는신호체계를정의하였다. 이것을 LFPS라고부른다. 이것은 5GHz(10GHz) Inband 주파수대역을사용하지않고아주낮은주파수대의신호만사용한다. 이런신호는지정된시간동안같은패턴을반복적으로나타내도록설계되었으며, 얼마큼시간동안반복적인패턴이있는가에따라서신호의의미를규정하고있다. 표 3-4 LFPS 종류 LFPS 신호의의미 (10-50MHz) 지속시간설명 Polling.LFPS 0.6 1.4ns 링크형성과정중에사용됨.
현재 Polling 단계에진입했다는사실을알림 Warm Reset LFPS 80 120ms 리셋명령어로사용됨 U1 Exit LFPS 300 900ns U1 상태에서빠져나오는용도로사용됨 U2/Loopback Exit LFPS 80us - 2ms U2 상태또는 Rx테스트용 Loopback 모드에서빠져나오는용도로사용됨 U3 Exit LFPS 80us - 10ms U3 상태 (Suspend) 에서빠져나오는용도로사용됨 그림 3-24 LFPS 신호 3.3.5 SS 물리계층 (USB PHY) 그림 3-25 SS, SS+ 가사용하는전체모듈그림
[ 그림 3-25] 를보면 SS(SS+) 가이전 USB 2 와다르게링크 (Link) 계층이추가되었으며, 물리계층도 조금더많은기능이보강되었음을알수있다. 물리계층을구성하고있는대표적인모듈들을간단하게살펴보면다음과같다. * Data Encoding & Decoding SS에서는 8b/10b, SS+ 에서는 128b/132b 알고리즘이적용되어데이터비트스트림을변, 복조하고있다. 두가지방식모두순수데이터신호외에별도의제어신호를추가로정의하는목적을가지고있다. 8b/10b 방식은순수데이터 8비트를 10비트로확장하는개념을사용하기때문에데이터전달크기효율면으로약 20% 정도손실을보여준다. 반면에 128b/132b 알고리즘은 128비트 (16바이트) 를 128비트 + 제어코드4비트로확장하기때문에약 3% 의손실을보여준다. * Scramble/Descramble 물리층에서는데이터무결성을보증하고보안 (Security) 을위해서다항식알고리즘을이용한데이 타변복조를수행하고있다. 이것은 LFSR(Linear Feedback Shift Register) 를통해서수행된다.
Scramble 작업은디버깅을어렵게만들수있기때문에, 필요에따라서링크파트너양쪽의협의에 의해이과정은생략될수있다. * Spread Clock CDR 고속시리얼통신에서는통상적으로클럭으로사용되는별도의회선을두지않는다. 이와같은 이유로, 데이터신호내부에암시적인방법으로클럭신호를함께넣어서전송하게되는데, 이런클 럭신호를뽑아내는작업을하는기능을 CDR(Clock Data Recovery) 라고부른다. * LFPS 낮은주파수대역만사용하는데이터시그널통신방식을규정한다. * Elasticity Buffer/Skips 고주파수대역의통신을하는경우, 송신측과수신측은몇비트시간정도동기가서로틀릴수있는상황이발생한다. 이런경우, 수신측에서는이런동기를맞추기위해서임의의 SKIP 데이터를수신되는데이터스트림사이에끼워넣는알고리즘을사용한다. 또한데이터를수신하는버퍼의크기를탄력있게조정함으로써, 송신측과수신측이적당한속도로송, 수신을할수있도록돕는다. SS 에서는송신측과수신측이조금다른모습을보여주는부분이있다. 송신측에는없지만수신측 에만존재하는것이그것인데, 바로 Clock Recovery 회로와 Elasticity 버퍼이다. 나머지는같은기능을서로다른방향으로수행하는역할만담당한다. 그림 3-26 SS 에서사용되는 Transceiver 의블록다이어그램
Symbol K, D(K, D-Code) 가사용되는 SS(SS+ 는제외 ) 에서는순수한송신데이타 8비트와제어비트 D/K 가입력신호로사용된다. 이들은모두 Scramble 알고리즘에의해서변조된뒤, 8비트의데이터와제어비트가함께 8b/10b 인코더로전달된다. 8b/10b 인코더는입력된송신데이타 8비트와제어비트를조합하여, 10비트의비트스트림을만들어낸다. 10비트스트림은시리얼비트로변환되면서, Differential 드라이버에의해서 D+, D- 신호로출력된다. 결국 8 비트의순수데이타가 10 비트의변조된데이터로출력된다.
그림 3-27 SS+ 에서사용되는 Transceiver 의블록다이어그램 Symbol K, D가사용되지않는 SS+ 에서는송신데이타를구분하는용도의 4비트의 Block Header, Block을구성하는용도로사용되는시작 / 끝을나타내는 1비트, Block을구성하는순수데이터 8비트를입력신호로사용한다. SS+ 는최대 16바이트 (128비트) 의데이터를하나의 Block으로묶을수있다. 이와같은데이터블록은 Scramble알고리즘과 128b/132b 알고리즘에의해서적당한비트스트림으로변환된다. 이렇게생성되는 132비트스트림은시리얼비트로변환되면서, Differential 드라이버에의해서 D+, D- 신호로출력된다.
그림 3-28 SS 에서사용되는 Receiver 의블록다이어그램 Symbol K, D(K, D-Code) 가사용되는 SS(SS+ 는제외 ) 에서는수신된비트스트림을의미있는순수한 수신데이타 8 비트로변환해야한다. 수신되는비트스트림이 Symbol K 인경우에는이에필요한적 당한컨트롤을수행하며, Symbol D 인경우에는순수데이타로서사용한다. 수신된비트스트림으로부터클럭신호를뽑아낸다음, 해당하는클럭신호에의해수신된비트스트림은 10비트 Symbol 문자로변환된다. 10비트로구성된 Symbol 문자는탄력버퍼를거쳐 8b/10b 알고리즘에의해원래의 Scramble되었던 8비트데이터로변환된뒤, Descramble과정을거쳐서순수데이타 8비트를얻는다.
그림 3-29 SS+ 에서사용되는 Receiver 의블록다이어그램 Symbol K, D(K, D-Code) 가사용되지않는 SS+ 에서는수신된비트스트림을의미있는순수한수신데이타 8비트로변환해야한다. 수신되는비트스트림은 132비트로수신되기때문에, 이것은 128b/132b 알고리즘에의해원래의 Scramble되었던 128비트데이터로변환된뒤, 탄력버퍼를거쳐 Descramble과정을거쳐서순수데이타 8비트 ( 최대 16바이트 ) 를얻는다.
3.3.5.1 Data Encoding, Decoding 3.3.5.1.1 SS 에서의 Data Encoding, Decoding 그림 3-30 SS 에서 8b/10b 변환알고리즘과 Symbol K, D SS 는 Symbol K 와 Symbol D 를구분한다. 이들의원시데이타는 8 비트값을사용한다. 8 비트값은그 대로사용하면서 K/D 비트를추가로사용하여이들을구분한다. 8b/10b 알고리즘은 3b/4b 알고리즘과 5b/6b 알고리즘을합쳐서부른다. 원시데이타의하위 5 비트를 a, 상위 3 비트를 b 라고가정하면, Kab 또는 Dab 식으로표기하여 이를구분한다. 8 비트의비트열을 10 비트로변환하는방법은 [ 그림 3-31 에서그림 3-34] 까지에서보여주는내용 을통해서변환한다. 변환할때유의할점은 RD(Running Disparity) 를선택할때, (-) 부터시작해서 (+), (-), (+) 이런식으 로선택해야한다는점이다. 결국변환할데이터는 10 비트의비트열들의집합이되는데, 이들을선택할때한번씩 RD- 와 RD+ 를교대로선택해야한다.
그림 3-31 SS 에서 8b/10b Table 그림 3-32 SS 에서 8b/10b Table( 이어서 )
그림 3-33 SS 에서 8b/10b Table( 이어서 ) 그림 3-34 SS 에서 8b/10b Table( 이어서 ) [ 그림 3-31 부터그림 3-34] 까지표를보면서다음예재비트열을변환해보도록하자.
Scramble 과정을거친 4 바이트의데이터가다음과같다고가정한다. (Hex) 1A 3C EA B0 이진수로변환해본다.(LSB, MSB 를유의해서본다 ) = D a.b 1A : 0001 1010b => 3 비트와 5 비트로나눔, 000(0) 11010(26), D 26.0 3C : 0011 1100b => 3 비트와 5 비트로나눔, 001(1) 11100(28), D 28.1 EA : 1110 1010b => 3 비트와 5 비트로나눔, 111(7) 01010(10), D 10.7 B0 : 1011 0000b => 3 비트와 5 비트로나눔, 101(5) 10000(16), D 16.5 D26.0, D28.1, D10.7, D16.5 는 [ 그림 3-31 부터그림 3-34] 에의해서다음과같은표를얻을수있 다. 표 3-5 D26.0, D28.1, D10.7, D16.5 를위한 8b/10b 변환표 RD- RD+ D26.0 010110 1011 010110 0100 D28.1 001110 1001 001110 1001 D10.7 010101 1110 010101 0001 D16.5 011011 1010 100100 1010 [ 표 3-5] 를선택할때, RD-, RD+, RD-, RD+ 순서대로선택한다. 이렇게선택하는이유는비트값 1 이전체적인스트림비트열에서골고루나타날수있도록하기 위함이다. 결과는다음과같다. D26.0, D28.1, D10.7, D16.5 0101101011001110100101010111101001001010 총 40 비트열이만들어졌다.
3.3.5.1.2 SS+ 에서의 Data Encoding, Decoding SS+ 에서는 SS 의 8b/10b 알고리즘과달리, 128b/132b 알고리즘이사용된다. 그리고 Symbol K, D 을구분하지않고 Symbol 이라는의미로만사용된다. 128 비트 (16 바이트 ) 의데이터비트열을 132 비트로변환한다. Scramble 과정을거치지않는다고가정하면, 사실변환된다는의미보다는비트가추가된다고보 는것맞다. 그림 3-35 SS+ 에서 128 비트를 132 비트로변환하기 3.3.5.2 Scramble, Descramble Scramble 작업은데이터의무결성을보증하는방법을제공한다. 송신기와수신기는같은알고리즘을사용해서데이터를변, 복조한다.
알고리즘의핵심은 LFSR(Linear Feedback Shift Register) 의동작이다. 이레지스터는 8 비트단위로 쉬프트된다. 이레지스터는초기값을가진상태에서알고리즘을사용할때마다다른상태의값으로바뀐다. 모든데이터는이레지스터에담긴값과 XOR 연산을거쳐서새로운값이만들어진다. SS 와 SS+ 에서사용되는알고리즘이서로다르다. 그림 3-36 송, 수신기와 LFSR SS 에서사용되는 LFSR 회로는다항식 X^16+X^5+X^4+X^3+1 를사용한다. SS+ 에서사용되는 LFSR 회로는다항식 X^23+ X^21+X^16+X^8+X^5+X^2+1 를사용한다. LFSR 알고리즘은각각의다항식로직을회로로구성하여사용한다. LFSR 알고리즘을두고두가지선택사항이존재한다. LFSR 알고리즘이사용하는레지스터값은연산을할때마다변한다. 이와같은 LFSR 알고리즘은원시데이터를변조하는역할을수행한다.
예외사항이있다. 3.3.5.2.1 SS 에서의 Scramble, Descramble SS 에서사용하는 LFSR 레지스터는 16 비트이다. 이값의초기값은 0xFFFF 값을가진다. 다음은 SS 에서 LFSR 알고리즘회로가동작하는방법이다. * LFSR 레지스터값은한번연산을할때 (8 비트 ) 마다 8 비트씩로테이션 (Rotation) 한다. * LFSR 레지스터의 15, 14, 13,, 8 번비트가먼저사용되고, 이후 7, 6, 5,, 0 번비트가다시 15, 14, 13,, 8 번비트로이동한다. * Symbol SKP 은변조되지않는다. 하지만, LFSR 레지스터의값은변한다. * TS 시퀀스순서열 (Training Sequence Ordered Sets) 에속해있는 Symbol D 는변조하지않는다. * Symbol K 는변조하지않는다. * Symbol K28.5(COM) 을만나면항상 LFSR 레지스터의값을초기값으로되돌린다. 3.3.5.2.2 SS+ 에서의 Scramble, Descramble SS+ 에서사용하는 LFSR 레지스터는 24 비트이다. 이값의초기값은 0x1DBFBC 값을가진다. 다음은 SS+ 에서 LFSR 알고리즘회로가동작하는방법이다. * LFSR 레지스터값은한번연산을할때 (8 비트 ) 마다 8 비트씩로테이션 (Rotation) 한다. * LFSR 레지스터의 23, 22, 21,, 16 번비트가먼저사용되고, 이후 15, 14, 13,, 8 번비트가다 시 23, 22, 21,, 16 번비트로이동하고 7, 6, 5,, 0 번비트가다시 15, 14, 13,, 8 번비트로이동 한다. 이런식으로 8 비트씩로테이션한다. * 4 비트의 Block Header 는변조에서제외한다. LFSR 레지스터를로테이트하지않는다. * TS1 순서열 (Training Sequence 1), TS2 순서열 (Training Sequence 2), TSEQ 순서열 (Training Sequence Ordered Set) 은다음과같이대응된다. 1) Symbol 0 은변조하지않는다.
2) Symbol 1 부터 Symbol 13 까지는변조된다. 3) Symbol 14 와 Symbol 15 가 DC 밸런스목적으로사용되는경우에는변조하지않는다. 그렇지않 으면변조한다. LFSR 레지스터를로테이트한다. DC 밸런스는 SS 에서사용되던 RD-, RD+ 와같은용 도로사용된다. * SKP 순서열은변조되지않는다. 그리고 LFSR 레지스터의값도로테이트하지않는다. * SDS 순서열은변조되지않는다. 하지만 LFSR 레지스터의값을로테이트한다. * SYNC 순서열에포함된모든 Symbol 은변조되지않는다. 또한 LFSR 레지스터의값을초기화한다. * Control Block 형태의시퀀스순서열의 Symbol 0 이 SKP 또는 SKPEND 라면 Block 에포함된모든 Symbol 은변조하지않는다. 또한 LFSR 레지스터의값도로테이트하지않는다. 그외에 Control Block 형태의모든시퀀스순서열은변조하지않지만, LFSR 레지스터의값을로테이트한다. * Data Block 의모든 16 개의 Symbol 은전부변조된다. 그리고 LFSR 레지스터의값도로테이트한다. * 16384 번째 TSEQ 순서열이사용될때마다 SYNC 순서열이삽입된다. 3.3.5.3 Symbol 과순서열 표 3-6 자주사용되는특별한 Symbol 들 Symbol 이름 SS(Gen1) SS+(Gen2) 설명 SKP Skip K28.1 CCh 링크포트간의속도차이를보상하는목적으로사용됨 SKPEND Skip End 사용안함 33h SKP심볼을보조한다 SDP Start Data Packet K28.2 96h Data Packet Payload의시작 EDB End Bad K28.3 69h Zero Packet의마지막 SUB Decode Error Substitution K28.4 사용안함 8b/10b 디코딩에러대체심볼 COM Comma K28.5 사용안함 LFSR레지스터초기화 SHP Start Header Packet K27.7 9Ah Data Packet, Transaction Packet, Link Management Packet 시작 DPHP Start Data Packet Header 사용안함 95h Data Packet 시작 END End K29.7 65h Packet의마지막 SLC Start Link Command K30.7 5Ah 링크명령어의시작 EPF End Packet Framing K23.7 36h 패킷프레임의마지막
SDS Start Of Data Stream 사용안함 63h SDS 순서열의시작 SS 와 SS+ 에서사용되는다양한 Symbol 순서열은 [ 표 3-6] 에서언급하는특별한 Symbol 들과일 반 Symbol 로구성된다. 이와같은순서열은다양한프로토콜에서사용된다. 3.3.5.3.1 TSEQ 순서열 표 3-7 TSEQ 순서열 Symbol 위치 Symbol 이름 값 SS/SS+ 0( 첫번째 ) K28.5 COM(Comma) SS 1 D31.7 FFh 2 D23.0 17h 3 D0.6 C0h 4 D20.0 14h 5 D18.5 B2h 6 D7.7 E7h 7 D2.0 02h 8 D2.4 82h 9 D18.3 72h 10 D14.3 6Eh 11 D8.1 28h 12 D6.5 A6h 13 D30.5 BEh 14 D13.3 6Dh 15 D31.5 BFh 16-31 번째 D10.5 4Ah 0-3 87h SS+ 4-5 00h 6-13 87h 14-15 87h 또는 DC밸런스 TSEQ 순서열은링크의 LTSSM(Link Training and Status State Machine) 의 Polling.RxEQ 과정에서사
용되는순서열이다. TSEQ 순서열은링크를형성하는과정중에양쪽링크포트의 Receiver 가사용할 Linear Equalization 증폭회로가채택할증폭주파수대를결정하는요소로사용한다. 그림 3-37 Polling.RxEQ 과정중에발견되는 TSEQ 순서열 (SS) [ 그림 3-37] 을보면, Upstream Port 와 Downstream Port 가각각 TSEQ 순서열을보내고있는모습을 볼수있다. 3.3.5.3.2 TS1, TS2 순서열 표 3-8 TS1, TS2 순서열 Symbol 위치 Symbol 이름 ( 값 ) TS1/TS2 SS/SS+ 0-3 K28.5 TS1 SS
4 D0.0 5 표 3-9 참조 6-15 D10.2 0-3 K28.5 TS2 4 D0.0 5 표 3-9 참조 6-15 D5.2 0-3 1Eh TS1 SS+ 4 00h 5 표 3-9 참조 6-13 1Eh 14-15 1Eh 또는 DC 밸런스 0-3 2Dh TS2 4 00h 5 표 3-9 참조 6-13 2Dh 14-15 2Dh 또는 DC 밸런스 표 3-9 SS, SS+ 링크파라미터 필드 Symbol 5번째값구체화 비트 0 0 = 정상 1 = 리셋 (Hot Reset) 비트 1 0 비트 2 0 = Loopback 꺼짐 1 = Loopback 켜짐 비트 3 0 = Scrambling 사용 1 = Scrambling 사용안함 비트 4 0 = 리피터내부 Loopback 꺼짐 1 = 리피터내부 Loopback 켜짐 비트 5-7 0 TS1, TS2 순서열이사용되는용도는다음과같다. Polling.Active 단계로진입하는경우, 링크의양쪽포트는 TS1 순서열을보낸다. Polling.Config 단계로진입하는경우, 링크의양쪽포트는 TS2 순서열을보낸다.
Recovery.Active 단계로진입하는경우, 링크의양쪽포트는 TS1 순서열을보낸다. Recovery.Config 단계로진입하는경우, 링크의양쪽포트는 TS2 순서열을보낸다. Hot Reset 단계로들어가는경우, 링크의양쪽포트는 TS2 순서열을보낸다. 이런경우, [ 표 3-9] 의 비트 0 의값이 1 이다. 그림 3-38 TS1, TS2 가사용되는모습 (SS) [ 그림 3-38] 을보면, UP(Upstream Port) 와 DP(Downstream Port) 간의주고받는 TS1, TS2 순서열을 볼수있다. 양쪽포트가서로상대방에게 TS1, TS2 를모두보내야한다. 그래야정확하게양쪽포트가 LTSSM 에서지정한상태로진입할수있다. Polling.RxEQ 상태에서 Polling.Active 상태로진입하기위해서 TS1 을사용하는것을볼수있다. Polling.Active 상태에서 Polling.Config 상태로진입하기위해서 TS2 을사용하는것을볼수있다.
U0 상태에서 Recovery.Active 상태로진입하기위해서 TS1 을사용하는것을볼수있다. U0 상태에서 Recovery.Config 상태로진입하기위해서 TS2 을사용하는것을볼수있다. 특정상태에서 Hot Reset 상태로진입하기위해서 TS2 를사용하는것을볼수있다.