01signal.com

Multi-Gigabit Transceiver(MGT) 개요

이 페이지는 MGT(Multi-Gigabit Transceiver)를 소개하는 페이지 시리즈 중 첫 번째로, 이번 시리즈에서 다룰 내용에 대한 개요를 제공합니다.

소개

MGT는 컴퓨터나 전자 시스템 내부에서 서로 다른 부분 간의 통신에 중요한 역할을 합니다. 컴퓨터 내부에서 잘 알려진 여러 인터페이스(PCIe, SATA 등)가 MGT를 기반으로 합니다. 컴퓨터와 주변기기 사이의 통신에 쓰이는 잘 알려진 인터페이스, 예를 들어 Gigabit Ethernet, SuperSpeed USB, Thunderbolt, DisplayPort도 마찬가지입니다.

MGT는 전자 부품들 사이를 연결하는 데에도 사용됩니다. 예를 들어 두 FPGA 사이를 연결하는 경우가 그러합니다. 이런 경우 통신은 잘 알려지지 않은 프로토콜이나 비표준 프로토콜을 기반으로 하는 경우가 많습니다. 하지만 MGT를 사용해 FPGA와 다른 종류의 부품을 연결하거나, 다른 부품들끼리 서로 연결하는 것도 가능합니다. 예를 들어 Xillyp2p가 그러한 용도로 쓰입니다.

예를 들어 광섬유 트랜시버는 표준 모듈(특히 SFP+ 폼 팩터) 형태로 제공되며 MGT와 직접 인터페이스하는 경우가 많습니다. 이 내용은 예제 설계에서 확인할 수 있습니다. 일부 고속 ADC/DAC도 샘플 데이터를 전송하기 위해 MGT를 사용합니다(보통 JESD204 프로토콜을 기반으로 합니다). 비디오 데이터 전송을 위한 프로토콜도 있습니다(예: MIPI의 물리 계층용 프로토콜 중 일부).

MGT는 양방향 프로토콜에 자주 사용되지만, 실제로 각 MGT는 송신기(transmitter)와 수신기(receiver)라는 두 개의 독립된 부분으로 구성됩니다. 따라서 두 부분 중 하나를 꺼 버리면 MGT를 단방향 전송에 사용할 수 있습니다. 대부분의 FPGA MGT에서는 송신기와 수신기의 매개변수를 각각 독립적으로 설정할 수도 있습니다.

요약하면, MGT는 다양한 응용 분야에서 사용됩니다. 인터페이스 이름만으로는 MGT가 사용된다는 사실을 알 수 없는 경우가 많지만(예: Gigabit Ethernet, SATA, DisplayPort), 실제 물리 계층은 MGT로 구성되어 있습니다.

참고로 Xilinx(이후 AMD)는 자사의 MGT를 각기 다른 이름으로 부릅니다. RocketIO, GTX, GTH, GTY, GTP, GTM 등이 그것입니다. 각 이름은 트랜시버의 특정 하드웨어 구현을 나타내므로, 그 이름을 보면 해당 트랜시버가 지원하는 데이터 속도와 기타 성능 특성을 어느 정도 알 수 있습니다.

이 시리즈에서는 MGT의 기본 개념과 MGT와 관련해 흔히 쓰이는 몇 가지 기술 용어를 설명합니다. 그 목적은 기술 문서를 더 쉽게 읽을 수 있도록 하는 것이며, 특히 어떤 매개변수가 자신의 프로젝트와 관련이 있고 어떤 것이 관련이 없는지 판단할 수 있게 하는 것입니다.

MGT란 무엇인가?

MGT의 복잡한 기능 이면에는 사실 단순한 SERDES 하나가 있다는 점을 이해하는 것이 중요합니다. MGT는 데이터를 수신하고 송신하는 전자식 구성 요소입니다. MGT와 물리 세계 사이의 전기적 인터페이스는 차동 쌍(differential pair)을 구성하는 두 개의 전선으로 이루어져 있습니다. 첫 번째 전선(“플러스” 또는 “포지티브” 전선)의 전압이 다른 전선(“마이너스” 또는 “네거티브” 전선)보다 높으면 물리적 상태가 ‘1’이 되고, 그렇지 않으면 ‘0’이 됩니다. 이는 LVDS와 같은 차동 인터페이스(differential interface)와 동일한 원리입니다.

SERDES와 또 다른 유사점은, MGT가 애플리케이션 로직과 병렬 워드(parallel word)로 인터페이스한다는 점입니다. 애플리케이션 로직의 클록 주기마다 여러 비트가 애플리케이션 로직과 MGT 사이에서 전송됩니다. 데이터 속도가 FPGA에서 구현 가능한 최대 클록 주파수보다 훨씬 높기 때문에 이렇게 구성하는 것이 필요합니다.

하지만 일반적인 SERDES와 MGT 사이에는 몇 가지 중요한 차이점이 있습니다. 가장 중요한 차이점을 몇 가지만 들면 다음과 같습니다.

그렇다면 MGT는 왜 이렇게 복잡할까?

FPGA 프로젝트에서 MGT 블록을 설정해 본 사람이라면, 매개변수와 선택 옵션이 정말 많다는 것을 알고 있을 것입니다. 왜 이렇게 해야 하는 것일까요?

사실, 반드시 복잡해야 하는 것은 아닙니다. 이 예제 설계에서 보여 주듯이, MGT를 단순한 SERDES로만 사용한다면 복잡한 부분이 대부분 사라집니다.

그럼에도 MGT 사용이 대체로 복잡한 데에는 크게 세 가지 이유가 있습니다. 첫째, MGT 블록에는 로직 패브릭(fabric)에서도 구현할 수 있는 많은 구성 블록(building block)들이 효율성을 이유로 MGT 내부에 구현되어 있기 때문입니다. 예를 들어 모든 MGT에는 8b/10b를 인코딩하고 디코딩하는 기능이 있습니다. 이 작업은 애플리케이션 로직이 수행할 수도 있지만, 이 인코딩 방식이 매우 널리 사용되므로 MGT가 대신 처리하도록 한 것입니다.

둘째는 클로킹(clocking)과 관련이 있습니다. MGT가 제대로 동작하려면 여러 클록이 필요합니다. 더욱 복잡한 것은, FPGA 로직 패브릭에 사용되는 클록과 비교할 때 MGT 클록의 품질 요구 사항(특히 지터(jitter))이 훨씬 엄격하다는 점입니다. 게다가 때로는 SSC(Spread Spectrum Clocking)도 사용되므로 상황이 더 복잡해집니다.

그래서 클로킹을 올바르게 구성하는 것은 때로 MGT 전반의 매개변수를 정확히 고르는 일 못지않게 어렵습니다.

셋째, MGT는 여러 표준 통신 프로토콜을 지원하도록 설계되어 있기 때문입니다. 그 결과 특정 프로토콜에 필요한 기능들의 이름은 해당 프로토콜 규격에서 가져온 경우가 많습니다. 이런 전문 용어는 관련 프로토콜을 모르는 사람에게는 아무 의미도 없습니다. 따라서 FPGA용 MGT 블록을 설정할 때 어떤 기능을 켜야 할지 결정하기가 어려워집니다.

이 모든 주제는 이번 페이지 시리즈의 나머지 글들에서 더 자세히 다룹니다.

유의해야 할 사항

대부분의 사용 사례에서 MGT는 특히 PCIe처럼 이미 잘 확립된 프로토콜의 물리 계층으로 사용됩니다. 이런 상황에서는 FPGA 툴이 세부 사항을 처리해 주므로, 낮은 수준에서 어떤 일이 일어나는지 자세히 알 필요가 없습니다.

하지만 애플리케이션 로직을 MGT에 직접 연결하려면 그 로직이 해결해야 할 몇 가지 문제점들을 알고 있어야 합니다. 이러한 문제 중 일부는 FPGA 사이에서 사용하도록 설계된 프로토콜이 처리해 줍니다.

아래는 염두에 두어야 할 주제를 간단히 정리한 목록입니다. 각 주제에 대한 자세한 설명은 이번 시리즈의 나머지 글에서 다룹니다.

PMA, PCS 및 클로킹

이 블록 다이어그램은 MGT의 구성 요소들과 애플리케이션 로직과의 상호 작용을 보여 줍니다.

Overview of Multi-Gigabit Transceiver's components

MGT의 기능은 보통 세 부분으로 나눌 수 있습니다.

이 주제들에 대한 더 자세한 내용은 이 페이지 시리즈에서 다룹니다.

PIPE 인터페이스

PIPE 표준도 언급할 가치가 있습니다. 이 표준은 MGT와 PCIe, SuperSpeed USB 또는 SATA를 구현하는 로직 사이의 연결을 정의합니다. 여기에는 데이터, 제어 신호, 상태 신호의 통신에 사용되는 포트들이 포함됩니다.

이 표준에서 MGT는 PHY 계층, 프로토콜은 MAC 계층이라고 부릅니다. 이 용어는 Ethernet, USB 1.x, USB 2.0을 규정하는 표준에서도 사용됩니다. 이 표준들은 보통 두 개의 분리된 칩으로 구현됩니다. 예를 들어 프로세서 칩에 Ethernet을 구현하는 경우, MAC 계층은 그 칩 안에 구현되고 PHY 계층은 별도의 칩에 구현됩니다. PIPE 표준도 같은 취지로 작성되었습니다. 다만 PCIe, SuperSpeed USB, SATA는 사실상 거의 항상 동일한 칩 안에 완전히 구현됩니다. PIPE 표준이 정의하는 MAC 계층과 PHY 계층 사이의 연결은 칩 내부에서 이루어지며, 외부로 드러나는 경우는 거의 없습니다.

PIPE 표준이 중요한 이유 중 하나는, 제대로 된 FPGA MGT라면 PCIe에서 요구하는 PIPE 인터페이스를 항상 구현한다는 점입니다. SATA용 PIPE 인터페이스도 자주 지원됩니다. 이는 두 프로토콜을 구현할 때 당연히 유용하지만, 여기서 한 가지 더 중요한 이점이 있습니다. 바로 서로 다른 FPGA들이 MGT와 유사한 인터페이스를 갖는다는 점입니다. 특히 사실상 모든 MGT에는 공통적으로 들어 있는 기능 요소들이 있습니다.

결론

이 페이지에서는 MGT와 그 복잡성에 대한 개요를 살펴보았습니다. 이번 시리즈의 나머지 글에서는 위에서 언급한 여러 개념들을 설명합니다. 하지만 그 전에, 두 FPGA의 MGT를 연결할 때 흔히 사용되는 프로토콜들에 대한 간단한 개요부터 시작하겠습니다.

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