이전 블로그에서는 디지털 신호를 지원하는 2층 PCB의 라우팅 및 레이아웃을 준비하기 위한 몇 가지 기본 사항에 대해 논의했습니다. 특히, I2C나 SPI와 같은 디지털 인터페이스를 지원하기 위해 필요한 기본 스택업 및 라우팅 규칙을 살펴보았습니다. 이러한 인터페이스를 작업할 때, 몇 가지 간단한 지침은 보드의 신호 무결성을 보장하고 EMI를 줄이는 데 도움이 될 수 있습니다.
USB와 같은 임피던스 제어 인터페이스는 어떨까요? 임피던스 제어의 필요성과 이를 언제 위반할 수 있는지 아는 것이 2층 PCB에서 USB와 같은 것을 라우팅하는 주요 포인트입니다. 이 글에서는 고속 프로토콜인 USB를 어떻게 라우팅해야 하는지 보여드리겠습니다. 구체적으로, 보드를 라우팅하기 위해 필요한 중요한 설계 규칙, 특히 USB 데이터를 전송하는 트레이스에 대해 받아들일 수 있는 길이 제한을 살펴보겠습니다. 이 시리즈의 이전 글을 아직 읽지 않았다면, USB 라우팅 요구 사항에 설정된 한계를 이해하는 데 필요한 개념적 기초를 다루므로 살펴보시기 바랍니다.
이전 2층 PCB 라우팅에 관한 기사에서, 임피던스 매칭을 적용하지 않고 디자인에서 사용할 수 있는 가장 긴 선 길이를 결정하는 절차를 살펴보았습니다. 우리는 길이 제한이 전송선의 길이에 따라 허용할 수 있는 입력 임피던스 편차 수준에 따라 달라진다는 것을 발견했습니다. 특히, 신호 이동 거리의 10%에서 25%를 중요한 요소로 고려하는지 여부에 따라 트레이스 길이를 제한합니다.
이 데모를 위해, 이 보드에서 USB 2.0 라우팅을 High Speed 표준하에 살펴보고자 합니다. 그리고 특정한 이유로 이 표준에 초점을 맞추고 있습니다. USB 2.0 (High Speed)은 여전히 일부 시스템에서 사용되며, 오래된 장치와의 연결성을 제공하는 동시에 빠른 데이터 전송 속도를 제공하며, Type B 플러그를 사용하는 Arduino와 같은 인기 있는 플랫폼에서도 여전히 사용됩니다.
두 가지 가능한 디자인을 설명하기 위해, USB 2.0 사양(Full Speed 및 High Speed)의 데이터 속도와 상승 시간을 비교했습니다:
|
|
|
|
|
|
아래에 보여줄 과정은 USB 2.0 신호에 대해 고속 상승 시간과 스큐를 가지고 수행되지만, USB 3.0이나 다른 고속 인터페이스에도 동일한 과정을 적용할 수 있습니다. 단, 기억하세요: 2층 보드에서의 라우팅은 모든 인터페이스에 적합하지 않습니다. 예를 들어, 작은 길이 제한과 이러한 빠른 신호들로부터 발생하는 방사 노이즈 때문에 2층 보드에서 DDR4를 라우팅하는 것을 추천하는 사람은 아무도 없습니다.
먼저, 전형적인 2층 PCB에서 USB 신호를 라우팅할 때의 중요 길이를 알고 싶습니다. Dk = 4.8의 FR4 재료 코어를 가진 경우, 전파 지연은 대략 150 ps/inch, 또는 대략 6 inches/ns입니다. 고속 사양에 대한 500 ps 상승 시간으로, 이는 상승 시간 동안 신호 전파 거리가 3인치임을 의미합니다. 매우 보수적으로 10% 한계를 중요 길이에 적용한다면, 이는 0.3인치의 중요 길이를 제공합니다!
여기서 라우팅해야 할 토폴로지는 단지 차동 쌍을 가진 직렬 라인입니다. 따라서 세 가지 요소가 있습니다:
아두이노와 같은 플랫폼에서는 어떻게 이루어지는지 궁금할 수 있습니다. 아마존에서 구입할 수 있는 아두이노 메가의 아래 이미지를 보세요. USB 컨트롤러는 커넥터에 가깝게 배치되어 있으며 확실히 1인치 이내에 있습니다.
다른 아두이노 보드에서도 비슷한 배치와 라우팅을 찾을 수 있습니다. 커넥터, 케이블, 수신기와의 입력 임피던스 불일치를 피하기 위해, 위에서 보여준 조언을 따라 2층 PCB에서 라우트를 짧게 유지하고자 할 것입니다. 그러나, 10% 한도를 적용할 정도로 보수적일 필요는 없습니다. 대신, 25% 한도로 가면, 0.75인치의 훨씬 더 편안한 라우팅 거리를 가질 수 있으며, 이는 2층 PCB에서 훨씬 더 관리하기 쉽습니다.
이것은 고속 사양을 위한 것임을 유의하십시오. 전송 속도 사양에서는 4 ns 상승 시간에 대해 2.4 인치의 비판적 길이(10% 한계) 또는 6 인치의 비판적 길이(25% 한계)가 더 여유롭습니다.
주목해야 할 중요한 사항은 이것입니다: 유효한 비판적 길이가 있는 특정한 한계(10%, 25% 또는 그 외)가 없으며, PCB의 크기에 따라 비판적 길이를 초과할 수 있으며 이제 올바른 임피던스로 설계해야 할 수도 있습니다. 한계는 여러 요소에 따라 달라지며, 비판적 길이에 대한 올바른 백분율을 결정하는 것은 어쨌든 여러 임피던스 값을 계산하는 것을 요구합니다. 이 비판적 길이에 기반한 규칙을 개발하는 것보다, 항상 필요한 USB 임피던스에 맞춰 설계하는 것이 더 쉽습니다.
다음으로, 드라이버 출력이 어떻게 종료되는지 고려해야 합니다. 여기서 우리가 특별히 USB에 대해 이야기하고 있으므로, USB 2.0 사양이 커넥터 근처의 D+ 및 D- 라인에 임피던스를 맞추기 위한 일부 종단 저항을 요구한다는 점을 유의해야 합니다. 이러한 저항은 USB 트랜시버의 다이에 통합될 수 있거나 외부 구성 요소로 필요할 수 있습니다. 전형적인 값은 15 옴, 22 옴 또는 45 옴이지만, 다른 값이 사용될 수도 있으니 구성 요소의 데이터시트를 확인하여 어떤 종단이 필요한지 확인하십시오. 예를 들어, TUSB2077APTR USB 허브 컨트롤러는 27 옴의 종단 저항을 사용합니다. 이러한 외부 저항이 필요한지 확인하기 위해 데이터시트를 확인하십시오.
고속 표준에서 100 ps의 스큐 한계를 가지고 있으므로, 이제 차동 쌍의 양쪽(즉, D+ 및 D- 신호) 사이의 허용 길이 불일치를 계산할 수 있습니다. 표면 레이어 라우팅에 대한 대략적인 6 ns/inch 전파 지연 추정치를 스큐 한계에 곱하면, 0.6 인치(600 밀)의 트레이스 길이 차이가 나옵니다. 이는 매우 큰 값입니다! 따라서 일부 트레이스 길이 매칭을 허용할 수 있는 여유가 많습니다. 그러나 여기에 중요한 점이 있습니다: 이것은 연결의 전체 길이(귀하의 보드 + 케이블 + 수신 보드)를 포함합니다. 따라서, 안전을 위해 쌍을 함께 라우팅하는 것과 가능한 곳에서 약간의 길이 매칭을 적용하는 것으로 스큐를 최대한 제한하려고 최선을 다하세요. 이는 USB 컨트롤러 칩이 일반적으로 D+ 및 D- 신호를 칩의 같은 가장자리에 배치하기 때문에 꽤 쉽습니다.
길이 차이가 짧을 때는 PCB 레이아웃에서 공간을 차지하기 때문에 길이 튜닝을 구현할 필요가 없을 수 있습니다. 다른 기능 시스템이 어떻게 작동하는지 보려면 아래에 표시된 Arduino UNO PCB 레이아웃의 이미지를 살펴보세요(참고: 이것은 Eagle 파일에서 변환되었습니다). 이미지에서 USB 라인이 강조 표시되었습니다. 종단 저항의 양쪽을 가로지르는 이 라인의 양성 및 음성 측의 길이를 측정하면 길이 차이가 약 180 mils임을 알 수 있습니다. 이것이 Arduino와 USB 커넥터 사이에서 이 라인들이 길이 매칭되지 않는 이유입니다.
이 좁은 공간에서는 길이 차이가 약 180 mils밖에 되지 않기 때문에 인터페이스가 여전히 올바르게 작동합니다. 이는 스큐 허용치보다 훨씬 작은 값입니다. 심지어 가장 나쁜 경우의 섬유 직조 효과가 느슨한 유리 직조 라미네이트에서 발생한다 하더라도, 총 스큐(길이 측면에서)는 약 230 mils 미만의 동등한 값에만 해당할 것이며, 이는 여전히 이 인터페이스의 스큐 허용치보다 훨씬 낮습니다.
이전 블로그에서 지적했듯이, High Speed USB 2.0에서 특성 임피던스에 해당하는 트레이스 폭을 사용하고도 임피던스 사양을 충족할 수 없습니다. 기억하십시오, 표준 두께의 PCB에서 2개 층으로 구성된 경우 Dk - 4.8에 대해 트레이스 폭은 약 110 mils였습니다. 그런 트레이스 폭으로 어떻게 USB 2.0 고속에서 차동 쌍 임피던스 사양을 충족할 수 있을까요?
실제로, 차동 쌍의 트레이스가 서로 결합하는 방식 때문에 그 트레이스 폭을 사용할 필요가 없습니다. 두꺼운 2층 보드에 대해 레이어 스택업 계산기를 사용하여 마이크로스트립의 차동 임피던스를 계산하면, 실제 필요한 트레이스 폭이 훨씬 작고 간격의 함수임을 알 수 있습니다. 2층 PCB에서의 우리 예제 마이크로스트립 라인의 경우, Altium Designer의 Layer Stack Manager는 트레이스 폭이 5 mils 간격에 대해 약 16 mils임을 알려줍니다.
이러한 차동 마이크로스트립을 사용할 때 더 얇은 트레이스를 사용할 수 있지만, 더 작은 간격을 사용해야 합니다. 이 설계에서는 에칭을 위한 트레이스 간 클리어런스의 한계에 가까워서, 트레이스 간 5밀(mil) 클리어런스를 유지하는 것이 단일 엔드 사양과 차동 사양을 이 트레이스 폭으로 충족하기 때문에 괜찮습니다. 단일 엔드 사양의 일부를 충족하고 있다는 것을 어떻게 알 수 있을까요? 이는 위에서 제공된 트레이스 폭이 단일 트레이스의 기이 모드 임피던스에 대한 것이지, 특성 임피던스가 아니기 때문입니다! 이것이 바로 트레이스 폭에 대해 이 특정 값을 고수해야 하며, 단독으로 마이크로스트립의 특성 임피던스 값을 사용해서는 안 되는 이유입니다.
우리가 논의하지 않은 대안이 있습니다: 공평면 마이크로스트립 차동 쌍을 사용하는 것입니다. 표면층에서 마이크로스트립까지 그라운드 푸어를 실행하고, 하단층에서 신호 아래에 그라운드 푸어를 배치함으로써, 9.5밀 폭의 트레이스, 5밀 트레이스 간격, 그리고 그라운드까지 5밀 간격으로 90옴의 차동 임피던스를 달성할 수 있습니다. 아래의 값에서 볼 수 있듯이, 이러한 값들로 USB 2.0 사양에서 요구하는 90옴 임피던스를 잘 충족합니다.
이러한 배치를 통해 2층 보드에서의 중요 길이 문제와 트레이스 폭 문제에 대해 그다지 걱정하지 않아도 됩니다. 하지만, 이 폭과 간격은 루트의 전체 길이에 걸쳐 유지되어야 한다는 점을 유의해야 합니다. USB 라우팅은 차동 신호를 전달하고 있을 뿐인 개별 단일 종단 트레이스로 트레이스를 취급하므로, 별도로 라우팅할 수 있습니다.
라우팅 토폴로지는 꽤 간단합니다: USB 칩에서 종단/풀업/풀다운 저항기로, 그리고 커넥터로, 모두 차동 쌍으로 라우팅합니다. 아래 이미지는 풀업 및 풀다운 저항기를 포함한 고수준 라우팅 토폴로지를 보여줍니다. USB 2.0 표준에 따라 아래와 같이 몇몇 커패시터도 필요합니다.
라우팅은 상당히 간단합니다: 시스템의 각 부분 사이에서 표준 차동 쌍 라우팅 관행을 따르면 신호 등록이나 임피던스 매칭에 문제가 없을 것입니다. 차동 쌍 라인에서 GND/VCC로 연결하는 풀다운 및 풀업 저항기에 직접 연결하는 짧은 라우트를 유지하십시오. D+/D- 라인이 장치에 추가 외부 커패시터를 가질 수 있으므로 데이터시트에서 장치의 응용 회로를 확인하십시오; 위에서 언급한 TUSB2077A 장치에서 이를 볼 수 있습니다.
곧 블로그에서 PCB 레이아웃의 실제 예를 보여드리겠습니다. 지금은 이것을 직접 시도해 보고 디자인을 라우팅할 수 있는지 확인해 보십시오.
이 블로그와 이전 블로그 포스트에서는 2층 PCB에서 USB와 같은 고속 인터페이스를 설정하고 라우팅할 때 따라야 할 중요한 라우팅 규칙을 살펴보았습니다. 최종 라우팅 지침은 다음과 같습니다:
여기에 제시된 라우팅 지침은 항상 EMC를 보장하지는 않습니다. 고려해야 할 디자인의 다른 측면들이 있으며, 이는 때때로 2층 PCB에서 부실하게 수행됩니다. 그러나 이러한 지침은 Full Speed 사양으로 작업할 때 EMI 문제를 해결하는 데 분명히 도움이 될 것입니다. 개인적으로는 보드가 크거나 대량 생산에 들어갈 경우, 특히 직렬 디지털 버스와 고속 프로토콜에는 4층 PCB를 사용하는 것을 선호합니다.
USB 3.0을 사용한다면, 빠른 에지 속도로 인해 길이 매칭에 대한 엄격한 요구 사항이 있으며, 위에 나열된 Full Speed 사양과 같이 커넥터 근처에 인터페이스를 배치해야 합니다.
2층 PCB나 더 고급 다층 보드에서 USB와 같은 인터페이스를 라우팅해야 할 때는 CircuitMaker의 PCB 레이아웃 및 라우팅 도구를 사용하세요. 모든 CircuitMaker 사용자는 아이디어에서 생산까지 디자인을 이동시키기 위해 필요한 회로도, PCB 레이아웃, 제조 문서를 생성할 수 있습니다. 사용자는 또한 Altium 365™ 플랫폼에서 개인 작업 공간에 접근할 수 있으며, 클라우드에 디자인 데이터를 업로드하고 저장하고, 안전한 플랫폼에서 웹 브라우저를 통해 프로젝트를 쉽게 볼 수 있습니다.
오늘 CircuitMaker를 사용하기 시작하세요 그리고 새로운 CircuitMaker Pro from Altium에도 주목하세요.