ENGLISH 简体中文 日本語 한국어  


애플리케이션 노트  3891

USB의 분리

개요: PC에 연결된 장치를 분리해야 하는 경우 당연히 USB 인터페이스를 선택하게 된다. USB는 다양한 응용을 지원하고 구조가 간단(4-wire USB 케이블)하여 PC 인터페이스로 널리 이용된다. SPI 인터페이스를 사용하는 임베디드 시스템에 탑재되는 USB 컨트롤러는 전기적으로 쉽게 분리할 수 있다. SPI 인터페이스는 어느 속도에서나 동작할 수 있으며 단순한 단방향 신호로 구성된다.

머리말

범용 직렬 버스(USB)는 주변기기를 PC에 연결하는 표준 방식으로 자리 잡았다. PC에 연결되는 장치를 전기적으로 분리해야 하는 경우, 다양한 응용을 지원하는 USB를 연결 인터페이스로 선택하기가 쉽다. 두 가지 대표적인 분리 애플리케이션에는 PC 기반 계측기를 환자에 부착하는 의료용과 대형 전원 레일 오프셋이 발생할 수 있는 산업용이 있다.

USB 시그널링의 기본 원리

USB는 다음 세 가지 속도로 동작한다.
  • 저속 1.5Mbps
  • 풀 스피드 12Mbps
  • 고속 480Mbps

이 글에서는 풀 스피드 (12Mbps) USB 연결의 광 분리에 대해 설명한다. 12Mbps 소자는 유용한 데이터 전송을 위해 충분한 대역폭에서 동작하며 저렴한 광커플러를 사용하는 설계를 위해 관리 가능한 데이터 전송률을 사용한다.

USB 커넥터는 4개의 와이어를 포함하고 있는데, 2개는 전원 제공에(VBUS 및 GND), 나머지 2개는 USB 데이터 (D+ 및 D-) 이동에 이용된다. VBUS 와이어는 5V 전원으로 최대 500mA를 공급한다. D+ 및 D- 신호는 양방향이며 12Mbps(비트 셀당 83ns)의 시그널링 속도로 동작한다. D+ 및 D- 시그널링 전압은 3.3V이다.

USB 분리의 문제

Figure 1. There are three possible interfaces where a USB peripheral could be isolated: site 1, the USB bus itself;  site 2, the transceiver interface; and site 3, the application
interface. In most current designs the SIE and transceiver are integrated, making interface (2) inaccessible.
그림 1. USB 주변기기를 분리시킬 수 있는 세 가지 가능한 인터페이스: 위치 (1) USB 버스 자체, 위치 (2) 트랜시버 인터페이스, 위치 (3) 애플리케이션 인터페이스. 현재 대부분의 설계에서는 SIE와 트랜시버가 통합되어 있으므로 인터페이스 (2)는 액세스가 불가능하다.

USB 주변기기는 그림 1의 블록 다이어그램을 사용하여 구성된다. 이 그림을 오른쪽에서부터 왼쪽으로 보면 USB 트랜시버는 D+ 및 D- 라인에 연결되고, OE (출력 인에이블) 제어 핀의 제어에 따라 데이터를 구동하거나 수신한다. 가운데 블록인 USB 직렬 인터페이스 엔진(SIE)은 버스 신호(트랜시버에 의해 표시 및 전송)를 데이터 바이트와 USB 신호로 변환하여 USB 주변기기를 구현하는 애플리케이션에서 사용할 수 있게 한다. 가장 왼쪽에 있는 블록은 애플리케이션 회로이며 마이크로프로세서, ASIC 또는 디지털 신호 프로세서(DSP)가 될 수 있다.

1, 2, 3으로 표시된 회색 사각형은 호스트 컴퓨터에서 USB 장치를 전기적으로 분리하기 위해 광커플러를 배치할 수 있는 위치를 나타낸다.

Figure 2. This scope trace shows the USB D+ and D- signals (site 1 in Figure 1) at the beginning of a packet. The 83ns bit time and close matching of rise/fall times make it difficult to
maintain signal fidelity through optical isolators. D+ and D- are bidirectional, further complicating the isolation.
그림 2. 이 스코프 곡선은 패킷의 시작에서 USB D+ 및 D- 신호(그림 1의 위치 1)를 보여준다. 83ns의 비트 시간과 상승/하강 시간의 정밀한 정합은 광 분리기(optical isolator)를 통한 신호 충실도 유지를 어렵게 한다. D+ 및 D-는 양방향이기 때문에 분리가 더욱 복잡해진다.

위치 1
그림 2에서 보듯, 광 분리가 USB 버스 와이어에서 실용적이지 않은 몇 가지 이유가 있다.

  1. 시그널링 속도가 12MHz로, 저렴한 분리기를 적용하기에 속도가 너무 높다.
  2. D+ 및 D- 신호는 전파 (propagation) 지연과 스큐에 대해 신중하게 정합되어야 하는데, 광 분리기를 이용하여 이러한 정합을 구현하기가 어렵다.
  3. 버스는 양방향이지만 분리기는 단방향이므로 상황이 더욱 복잡해진다. 또한 트랜시버가 내장된 주변기기에서는 OE 신호(방향 표시)에 액세스할 수 없다.

위치 2
외부 트랜시버를 사용하는 USB 주변기기는 트랜시버 인터페이스가 노출된다. 그러므로 광 분리를 위해 단방향 신호를 고려해 볼 수 있다. 그러나 이 위치는 위치 1에서와 동일한 문제가 있다. 데이터 전송률이 너무 높고, 실제로 12MHz에서 동작하는 더 많은 신호를 분리해야 한다. VPO, VMO, RCV, VPI 및 VMI가 모두 12MHz 레이트로 동작하며, 지연과 스큐에 대한 신중한 정합이 필요하다. 더욱이 동일한 칩에 SIE와 트랜시버를 통합하고 있는 최근의 USB 설계에서는 이 인터페이스에 액세스하는 것이 거의 불가능하다.

위치 3
이 위치가 분리에 가장 적합하다. 이 인터페이스는 USB 데이터 및 라인 레이트보다 더 느리게 동작할 수 있으며, 인터페이스 전체를 단방향 신호로 구성할 수 있다. 실제로 이상적인 인터페이스는 USB 12MHz 시그널링 속도보다 훨씬 더 느린 데이터 전송률에서 동작하는 소수의 단방향 신호를 사용하는 인터페이스이다.

이러한 요구사항을 만족하는 이상적인 인터페이스가 SPI이다. SPI(Serial Peripheral Interface)는 원래 Motorola에 의해 만들어졌으며 현재 다양한 반도체 형식에 널리 이용되고 있다. SPI는 단순성과 우수한 성능으로 선호도가 높은 인터페이스이다.

SPI 시그널링의 기본 원리

표 1. SPI 신호
SPI Signal Description Comments
SS# Slave Select Selects the chip for data transmission, supplied by the master
MOSI Master Out Slave In Unidirectional data pin
MISO Master In Slave Out Unidirectional data pin
SCLK Serial Clock Serial clock, supplied by the master

표 1은 4가지 SPI 인터페이스 신호를 보여준다. SPI는 마스터-슬레이브 인터페이스로, 마스터가 단일 슬레이브로 트랜잭션을 초기화하고 수행한다. 마스터는 슬레이브 선택 (SS#) 신호 및 직렬 클록(SCLK)을 제공하여 데이터 전송을 동기화한다. SPI 인터페이스에는 4개의 클록 모드가 있으며, 이 모드는 CPOL(클록 극성) 및 CPHA(클록 위상)라는 2가지 모드 신호를 반영한다. 이 신호들은 (CPOL, CPHA) 형식으로 표시된다.

그림 3은 마이크로프로세서와 SPI 슬레이브 장치 간의 SPI 데이터 전송을 보여준다. 그림 3은 가장 일반적인 SPI 모드 (0,0)를 사용한다. 모드 (0,0)에서 클록은 비활성 상태에서 로우이며, SPI 마스터는 첫 번째 SCLK 포지티브 에지 이전에 MOSI 데이터를 이용할 수 있게 한다. SPI 데이터는 SCLK 하강 에지에서 변화하며, 마스터와 슬레이브 장치의 상승 에지에서 모두 샘플링된다.

Figure 3. An SPI interface operating in mode (0,0). The same interface can operate in mode (1,1) if the SCLK signal is made active-low (quiescent state is high). These low-frequency signals are easy to optically isolate.
그림 3. 모드 (0,0)에서 동작하는 SPI 인터페이스. SCLK 신호가 액티브 로우(무부하 상태가 하이)가 되면 동일한 인터페이스가 모드 (1,1)에서 동작할 수 있다. 이러한 저주파 신호는 광 분리가 되기 쉽다.

SPI 인터페이스는 하드웨어 SPI 유닛을 포함하고 있지 않더라도 모든 마이크로프로세서에서 쉽게 구현할 수 있다. SPI 인터페이스는 그림 3의 신호를 구성하는 범용 IO (GPIO) 핀 4개와 IO 핀을 직접 토글링하여 바이트를 읽고 쓰는 서브루틴만 이용한다.

그림 4는 USB 주변기기 컨트롤러가 SPI 인터페이스를 사용할 때 SPI와 USB 간의 데이터 전송률 차이를 보여준다. 이 그림에서, 제어하는 마이크로프로세서는 USB 키보드로 동작하며 LED를 주기적으로 깜박인다. 그림 5의 SPI 트래픽은 LED가 한 번 깜박이는 것을 나타내며(출력 비트 토글), USB 트래픽은 키보드 데이터를 요청하는 USB 호스트이다.

이러한 두 버스 간의 데이터 전송률 차이는 극명하다. 주파수가 낮을수록 단방향 SPI 신호는 12MHz 양방향 USB 버스 신호보다 더 쉽게 분리할 수 있다. 분리 솔루션은 광 분리기의 특성에 맞추어 어느 주파수에서나 동작하도록 조정할 수 있는 SPI 신호를 이용하여 아주 간단히 구현된다.

Figure 4. SPI data rate compared with USB signaling rate. The SPI signals lend themselves to easy transmission through optocouplers.
그림 4. USB 시그널링 속도와 비교한 SPI 데이터 전송률. SPI 신호는 광커플러를 통한 간편한 전송에 적합하다.

그림 5에 나와 있는 시스템은 USB 컨트롤러를 실행하는 SPI 버스와 USB 시그널링 속도 간의 데이터 전송률의 큰 차이를 어떤 방식으로 조정할까? USB의 장점 중 하나는 내장된 흐름 제어 기능을 이용하여 "자체 조절(self-throttling)"이 가능한 것이다. USB는 주변기기가 데이터를 요청하는 호스트에게 데이터가 아직 준비되지 않았으며 나중에 다시 시도할 것을 알려주는 "NAK" (Negative Acknowledge) 핸드셰이크를 사용하여 이러한 데이터 흐름 제어를 수행한다.

SPI 데이터 전송률과 USB NAK

Figure 5. A USB bus trace showing a slow peripheral responding to a host IN request for data. The host requests the data in packets 362-364. The peripheral is ready with the data in packet 420. The intervening IN-NAK packets demonstrate USB flow control. The peripheral responds with NAKs until it is ready with data.
그림 5. 호스트의 IN 데이터 요청에 느린 주변기기 응답을 보여주는 USB 버스 트레이스. 호스트는 패킷 362-364에서 데이터를 요청한다. 주변기기는 패킷 420에서 데이터를 준비하고 있다. 중간의 IN-NAK 패킷은 USB 흐름 제어를 수행한다. 주변기기는 데이터가 준비될 때까지 NAK로 응답한다.

그림 5는 실제 USB 흐름 제어 메커니즘을 보여준다. 호스트는 패킷 362에서 시작하여 "Get _Descriptor-Configuration"을 요청한다. 패킷 363의 마지막 바이트에서 두 번째에 위치한 09는 호스트가 주변기기로부터 9바이트의 데이터를 요청하고 있음을 나타낸다. 주변기기는 패킷 364에서 요청에 대해 확인 응답한 다음, 요청을 디코딩하고 요청된 데이터를 엔드포인트 0 데이터 FIFO로 로드한다. 느린 주변기기는 이러한 요청에 응답하는 데 일정한 시간이 필요하며, 나중에 비교적 느린 SPI 버스 속도가 응답 시간에 추가된다.

988.667ms 후(패킷 364 이후), 호스트는 패킷 366에서 요청된 데이터를 요청하기 시작한다. 주변기기는 아직 데이터를 가지고 있지 않으므로 USB 하드웨어는 "I am busy, try again later"라는 표시와 함께 NAK 핸드셰이크로 자동 응답한다. 호스트는 패킷 368에서 다시 시도하고 주변기기로부터 동일한 NAK 응답을 받는다. 이러한 IN-NAK 프로세스는 패킷 419까지 계속되며, 마침내 패킷 419에서 주변기기는 요청된 데이터를 로드하고 데이터 전송을 위한 엔드포인트 제로를 준비한다. 이제 주변기기는 NAK 대신 패킷 420에서 9바이트 데이터 패킷으로 응답하며, 호스트는 이를 패킷 421에서 승인한다.

IN-NAK 쌍(그림 5에서 점선으로 표시된 사각형)은 몇 번이든 발생할 수 있는데, 이는 SPI 인터페이스가 동작할 수 있는 속도에 대해 더 낮은 제한값이 없음을 의미한다. 이로써 설계자는 실용적이고 경제적인 설계를 위해 광커플러에 적합한 SPI 데이터 전송률을 세밀하게 조정할 수 있다.

분리된 USB 설계의 예

Figure 6.  Schematic diagram of an isolated USB design. The left side is powered by the USB bus itself, and the right side uses an isolated power supply. Providing the isolation at the SPI interface makes the design simple and independent of stringent USB bus timing.
상세 이미지 보기
(PDF, 204kB)
그림 6. 분리된 USB 설계 회로도. 왼쪽은 USB 버스 자체에 의해 전원이 공급되며 오른쪽은 분리된 전원을 사용한다. SPI 인터페이스에서 분리를 제공하므로 설계가 단순해지고 엄격한 USB 버스 타이밍의 영향을 받지 않는다.

그림 6은 저렴한 마이크로프로세서 Atmel AtTiny13 (U6), HCPL-2531 광커플러(U3-5), 레지스터 세트에 대한 SPI 인터페이스가 내장된 USB 주변기기 컨트롤러 MAX3420E(U1)를 중심으로 설계된 회로이다. U6에는 하드웨어 SPI 유닛이 포함되어 있지 않지만, 일부 GPIO 핀을 "비트 뱅잉(bit-banging)" 하여 SPI 인터페이스를 쉽게 관리할 수 있다. U1은 범용 입력 4개와 범용 출력 핀 4개를 제공하고 있어, SPI 인터페이스를 구현하기 위해 U6에 의해 사용되는 핀을 대체 및 추가할 수 있다. 이 설계는 2개의 출력 핀을 사용하여 LED 표시기 D1 및 D2를 구동하고 하나의 입력 핀을 사용하여 푸시버튼 PB1을 연결한다. U1은 SPI 인터페이스에 의해 제어되는 자체적인 IO 핀을 포함하고 있으며, 이들 IO는 U6과 본래부터 분리되므로 개별 분리가 필요 없다.

Figure 7. The SPI SCLK signal on both sides of the isolated interface. Top: ISOVCC = 8.3V, ISOGND = 5V.  Bottom: Powered by USB: VCC = 3.3V, GND = 0V.
그림 7. 분리된 인터페이스 양쪽에 발생하는 SPI SCLK 신호. 상단: ISOVCC = 8.3V, ISOGND = 5V. 하단: USB에 의한 전원 공급: VCC = 3.3V, GND = 0V.

그림 7은 분리된 인터페이스 양쪽에 발생하는 SCLK 신호의 스코프 트레이스를 보여준다. 두 트레이스의 기준선은 모두 화면의 하단으로 설정된다. 위쪽의 트레이스는 U6에 의해 발생되지만 5V에 의해 오프셋되는 SCLK 신호를 보여준다.

Figure 8. SCK isolated (top) and at the MAX342E (bottom), shown with expanded scale.
그림 8. 분리(상단) 및 MAX342E(하단)의 SCK, 확대 표시

그림 8은 그림 7을 확대하여 표시한 것으로 광커플러 성능을 보여준다. 광커플러는 이 설계에서 선택된 저항값을 사용할 때 약 0.5µs의 스루풋 지연을 갖는다. 중앙의 짧은 SCLK 펄스는 SCLK IO 핀을 구동하는 U6 코드의 일부에서 발생된 것이다. 이 부분의 U6 코드는 그림 9에 나와 있다.

Figure 9. AtTiny13 assembly code to read a MAX3420E register. The SPI interface timing can be fine-tuned here to offer optocoupler cost/performance tradeoffs.
그림 9. MAX3420E 레지스터를 읽는 AtTiny13 어셈블리 코드. 광커플러의 비용 대비 성능 트레이드오프를 위해 여기서 SPI 인터페이스 타이밍을 세밀하게 조정할 수 있다.

r4 레이블 (label) 바로 전에 SCK 신호는 로우로 구동되고, 그런 다음 즉시 다시 하이가 된다. (SCLK_LO 및 SCLK_HI는 코드를 변경하지 않아도 특정 회로 보드 레이아웃에 맞춰 IO 핀을 쉽게 정렬할 수 있게 해주는 어셈블러 매크로이다.)

이 두 문장 사이에 몇 개의 NOP 명령을 삽입하면 그림 8의 좁은 펄스 폭을 늘릴 수 있어 더 느린, 즉 더 저렴한 광커플러를 사용할 수 있다. 이러한 프로세스는 광 분리 애플리케이션을 위해 SPI 인터페이스가 제공하는 유연성을 보여준다.

결론

USB의 전기적 분리는 USB 데이터 신호의 빠른 속도와 양방향 특성, 그리고 엄격한 정합 요구사항으로 인해 어려운 문제였다. 그러나 USB 컨트롤러와 애플리케이션 프로세서 사이의 인터페이스(그림 1의 위치 3)를 분리하면 이러한 인터페이스는 어느 속도에서나 실행할 수 있으므로 분리 문제가 보다 간단해진다. 위치 3의 낮은 시그널링 속도는 저렴한 광커플러 솔루션에 적합하다. 모든 분리 설계와 마찬가지로, 분리가 필요한 라인이 적을수록 더 많은 비용이 절감된다. SPI 인터페이스는 단 4개의 저속 단방향 신호만 사용하므로 분리를 위한 이상적인 대안이다. MAX3420E는 단순한 SPI 인터페이스를 사용하여 어느 컨트롤러와도 연결할 수 있으므로, 임베디드 시스템에 USB 기능을 추가하는 이상적인 방법일 뿐 아니라 간단한 분리 솔루션을 제공하는 추가적인 이점을 갖고 있다. 또한 주변기기 또는 호스트로 동작하면서 MAX3420E와 동일한 SPI 인터페이스를 사용하는 MAX3421E를 이용하여 분리된 USB 호스트 애플리케이션을 구현할 수 있다.

유사한 기사가 EDN 2006년 7월호에 게재되었다.

We Want Your Feedback!


의견을 보내주세요!
위 내용이 도움이 되셨나요?
여러분의 의견을 기다립니다 — Maxim은 보내주신 정정이나 제안사항을 반영하고 있습니다. 이 페이지를 평가하고 의견을 보내주십시오.


자동 업데이트
관심있는 분야의 애플리케이션 노트가 나올 때 자동으로 업데이트 받고 싶으세요? 그렇다면 EE-Mail™을 신청하십시오.



추가 정보  APP 3891: May 21, 2007
MAX3420E SPI 인터페이스가 내장된 USB 주변장치 컨트롤러 전체 데이터 시트
(PDF, 372kB)
무료 샘플
MAX3421E SPI 인터페이스가 내장된 USB 주변장치/호스트 컨트롤러 무료 샘플
 

다운로드, PDF 형식다운로드, PDF 형식 (177kB)
 AN3891, AN 3891, APP3891, Appnote3891, Appnote 3891


      개인정보보호 정책    법적 고지

      Copyright © 2008 by Maxim Integrated Products, Dallas Semiconductor