01signal.com

PMA: OOB 신호, 전기적 아이들(electrical idle) 등

이 페이지는 MGT(Multi-Gigabit Transceiver)를 소개하는 페이지 시리즈 중 여섯 번째이며, PMA에 관한 두 번째 페이지입니다.

소개

앞 페이지에서는 PMA를 이용해 물리 채널을 통해 비트를 전송하는 방법에 대해 논의했습니다. 하지만 이 데이터 스트림이 항상 켜져 있는 것은 아닙니다. 전력을 절약하기 위해 MGT의 상당 부분을 끌 수 있습니다. 특히 MGT가 노트북 컴퓨터 안에서 SATA, PCIe 또는 SuperSpeed USB를 구현할 때 이런 기능이 중요합니다. 이러한 프로토콜을 사용할 때, 전송할 데이터가 없는데도 물리 링크를 계속 켜 두는 것은 에너지 낭비입니다.

따라서 MGT는 저전력 상태로 전환할 수 있어야 합니다. 더 중요한 것은, 저전력 상태에서 깨어나야 할 때 상대편에 알릴 수 있어야 한다는 점입니다. PMA는 바로 이러한 용도(및 기타 용도)로 OOB(Out-of-Band) 신호를 생성하고 감지하는 역할을 담당합니다.

OOB 신호는 데이터 스트림을 전송할 때 사용하는 바로 그 차동 전선들 위에 나타나는 단순한 전기 활동 패턴으로 구성됩니다. 이 OOB 신호는 정상 데이터 스트림이 꺼져 있을 때만 전송할 수 있습니다. 가장 중요한 점은 수신기가 매우 단순한 로직만으로 이 신호를 감지할 수 있다는 것입니다. 따라서 OOB 신호를 수신하는 MGT는 자신이 저전력 상태에 있더라도 이 신호를 감지할 수 있습니다.

MGT가 지원하는 또 다른 기능은 송신기가 상대편 MGT를 아무것도 하지 않게 한 채로, 자신이 물리적으로 다른 MGT에 연결되어 있는지 감지하는 기능입니다. 이 기능을 수신기 검출(receiver detection)이라고 합니다.

이 페이지에서는 OOB 신호와 수신기 검출이라는 두 가지 기능을 소개합니다. 앞의 두 페이지에서 보여 준 블록 다이어그램을 편의상 다시 표시합니다.

Block diagram of typical Multi-Gigabit Transceiver

OOB 신호 전송

OOB(Out-of-Band) 신호는 보통 일정한 주파수를 갖는 단순한 구형파(square wave) 신호입니다. 이 신호는 정상 데이터 스트림 대신에만 전송할 수 있으며, 데이터 스트림과 동시에 전송할 수는 없습니다.

프로토콜마다 OOB 신호의 형태에 대한 요구 사항이 다릅니다. FPGA MGT에는 보통 가장 널리 쓰이는 프로토콜, 특히 PCIe와 SATA에 맞추어 OOB 신호를 요청할 수 있는 입력 포트가 있습니다.

OOB 신호의 명칭과 요구 사항은 프로토콜마다 다릅니다. 예를 들어:

때로는 MGT가 특정 프로토콜에 적합한 OOB 신호를 생성하는 기능을 갖추지 못한 경우도 있습니다. 이 경우에는 데이터 전송용 송신기를 켜고 원하는 신호 패턴에 대응하는 데이터 스트림을 MGT에 공급하는 방식으로 해결할 수 있습니다. 특히 MGT의 인코딩 기능을 끄면 MGT는 단순한 SERDES처럼 동작하므로, 전송할 데이터를 이용해 원하는 신호 패턴을 원하는 대로 만들 수 있습니다. 예를 들어 '0'과 '1'의 연속 시퀀스를 전송하면 구형파를 만들 수 있습니다. 이 해결책의 가장 큰 단점은 MGT의 인코딩 기능을 사용할 수 없으므로 인코딩 기능을 애플리케이션 로직으로 직접 구현해야 한다는 것입니다.

전기적 아이들(electrical idle)

MGT의 송신기가 꺼져 있거나 저전력 모드에 있으면, 출력은 보통 전기적 아이들(electrical idle) 상태가 됩니다. 이 상태에서는 두 차동 출력 전선(D+ 및 D-)이 모두 접지에 연결됩니다. 따라서 두 전선 사이의 전압은 0이 되고, 각 전선의 접지에 대한 전압도 0이 됩니다.

MGT가 절전 상태일 때, 전기적 아이들은 OOB 신호를 전송하는 것과 반대 상태입니다. 정리하면 송신기의 세 가지 가능한 상태는 다음과 같습니다.

위에서 이미 언급했듯이 OOB는 저전력 상태에서 상대편을 깨우거나 링크를 시작하는 과정에서만 가끔 사용됩니다. 따라서 MGT는 대부분의 시간 동안 데이터를 전송하거나 전기적 아이들 상태로 절전하고 있습니다.

OOB 신호 감지

MGT가 꺼져 있거나 저전력 상태에 있으면, 수신기가 상대편에서 전송된 OOB 신호를 감지해야 할 수 있습니다. 특히 정상 동작을 재개하라는 요청에 응답하려면 이 기능이 필요합니다.

대부분의 프로토콜은 OOB 신호의 파형을 정확히 규정하지 않고 가능한 범위만 정의합니다. 따라서 수신기가 도착한 신호를 기대하는 파형과 비교하는 것은 불가능합니다. 대신 OOB 신호는 차동 전선에 어떤 활동이 있을 때 감지됩니다. 즉, 데이터 스트림이 꺼져 있는데도 차동 전선의 전압 변화가 전기적 아이들로 보기에는 너무 크다면, 그 이유는 상대편이 OOB 신호를 전송하고 있기 때문입니다.

이런 이유로 FPGA MGT에는 OOB 신호 감지 전용 출력 포트가 없습니다. 대신 수신기가 전기적 아이들(electrical idle)을 감지하면 high가 되는 출력 포트가 있습니다. 이 포트의 이름은 보통 'rx_elecidle'과 같습니다.

안타깝게도 MGT의 전기적 아이들 감지 메커니즘은 불안정할 수 있습니다. 특히 상대편이 데이터 스트림을 전송할 때 수신기의 전기적 아이들 감지 동작은 MGT마다 다릅니다. 이런 상황에서 MGT가 전기적 아이들을 감지할 수도 있고, 전기적 아이들이 없다고 단정적으로 판단할 수도 있으며, 무작위로 감지 결과가 나올 수도 있습니다. FPGA마다 동작이 서로 다릅니다.

이론적으로는 이것이 문제가 되지 않습니다. 데이터 스트림이 활성화된 동안 굳이 전기적 아이들을 확인할 필요가 없기 때문입니다. 하지만 실제로는 MGT가 상대편이 기대하지 않는 때에 데이터를 전송할 수도 있습니다. 따라서 애플리케이션 로직은 상대편이 꺼져 있을 것이라고 예상했는데 일반 데이터 스트림이 대신 도착하는 상황에서도 올바르게 반응하도록 설계되어야 합니다.

전기적 아이들 감지의 또 다른 문제점은 노이즈에 민감하다는 것입니다. 완벽한 전기적 아이들은 두 차동 전선의 전압이 모두 0인 상태입니다. 노이즈 때문에 수신기가 전기적 아이들이 아니라고 판단할 만큼의 전압을 측정할 수 있습니다. 그러면 애플리케이션 로직이 이를 OOB 신호로 잘못 해석할 위험이 있습니다.

결론적으로, OOB 신호를 안정적으로 감지하는 간단한 해결책은 없습니다. 애플리케이션 로직은 전기적 아이들 감지기의 불완전함을 보완하도록 설계되어야 합니다.

수신기 검출(receiver detection)

PCIe 프로토콜과 SuperSpeed USB는 링크 반대편에 무언가 연결되어 있는지 감지하는 기능을 요구합니다. 이 감지는 상대편과 통신을 시작하려고 시도하지 않고 수행해야 합니다. 이 기능을 수신기 검출(receiver detection)이라고 합니다.

SuperSpeed USB에 이 기능이 필요한 이유는 컴퓨터가 장치가 물리적으로 분리되었는지 알아야 하기 때문입니다. 링크가 저전력 상태일 때 장치가 분리되면, 컴퓨터는 어떤 일이 일어났는지 알 방법이 없습니다. 어차피 전선에서 아무 활동도 기대되지 않기 때문입니다. 따라서 프로토콜은 호스트가 100ms마다 수신기 검출을 수행하도록 요구합니다. 이를 통해 컴퓨터는 에너지를 낭비하지 않고 장치가 여전히 연결되어 있는지 확인할 수 있습니다.

PCIe 프로토콜은 해당 슬롯에 연결되어 있을 수 있는 장치로 링크를 올리기 전에 각 PCIe 슬롯에서 수신기 검출이 이루어지도록 요구합니다. 링크를 올리려면 데이터 전송용으로 MGT의 전원을 켜야 하므로(더 정확히는 트레이닝 시퀀스(training sequence)), 불필요한 시도를 피하는 것이 에너지 절약에 중요합니다.

MGT의 송신기는 두 출력 전선(D+ 및 D-) 모두에 짧은 전압 펄스를 만들어 수신기 검출을 수행합니다. 이것은 공통 모드(common mode) 전압 펄스이므로, 두 전선 모두 접지에 대해 동일한 전압이 인가됩니다. 반대편에 수신기가 있으면 그 수신기의 종단 저항(termination resistor)으로 측정 가능한 전류가 흐릅니다. 이 전류는 송신기 출력의 전압에 영향을 줍니다. 반대편에 수신기가 없으면 전류는 무시할 수 있을 정도로 작습니다. 따라서 송신기는 펄스가 시작된 직후 자신의 출력 전압을 측정하여 반대편에 수신기가 있는지 여부를 판단합니다.

펄스가 필요한 이유(단순한 DC 전압이 아니라)는 송신기와 수신기 사이에 커패시터가 있기 때문입니다. 펄스가 시작된 직후에는 펄스 전압이 송신기와 수신기의 종단 저항에 걸리면서 전류가 흐릅니다. 커패시터가 충전되면서 일반 RC 회로와 마찬가지로 전류는 점점 작아집니다. 전압이 일정하게 유지되면 결국 전류는 0이 됩니다.

수신기 검출은 D+와 D- 양쪽의 종단 저항이 모두 접지에 연결된 경우에만 동작한다는 점에 유의해야 합니다. 예를 들어 PCIe 프로토콜은 이 종단 저항이 50Ω이어야 한다고 요구합니다. D+와 D- 사이에 100Ω 저항 하나를 연결해도 같은 차동 임피던스(differential impedance)를 얻을 수 있지만, 이때는 저항의 중간점이 접지에 연결되지 않습니다. 이런 방식으로 종단하면 수신기 검출을 제외한 모든 기능이 정상적으로 동작합니다. 그 이유는 다른 모든 기능이 D+와 D- 사이의 차동 전압에 의존하는 반면, 수신기 검출은 두 전선에 동일한 전압을 인가하여 구현되기 때문입니다. 종단 저항이 중간에서 접지에 연결되어 있지 않으면 전류가 흐르지 않으므로 수신기가 검출되지 않습니다.

이것으로 MGT에 관한 이 시리즈의 여섯 번째 페이지를 마칩니다. 다음 페이지에서는 MGT의 클로킹(clocking)에 대한 몇 가지 설명으로 이 시리즈를 마무리합니다.

이 페이지는 영어 원문을 기계 번역한 것입니다. 의문이 드는 부분이 있으면 원문을 참조하시기 바랍니다.
Copyright © 2021-2026. All rights reserved. (dcc38493)