Detect State
Figure 14-8은 Detect(탐색) 상태와 관련된 두 개의 하위 상태(Substate) 및 전이(Transition)를 나타냅니다. Detect 상태에서 수행되는 동작은 각 송신기(Transmitter)가 링크 반대편에 수신기(Receiver)가 존재하는지를 감지하는 과정에서 이루어집니다. 하위 상태가 단 두 개뿐이고 비교적 단순하기 때문에, 바로 하위 상태(Substate) 설명으로 넘어가겠습니다.
Detect.Quiet
이 하위 상태(substate)는 모든 리셋(기능 수준 리셋(Function Level Reset) 제외) 또는 전원 켜짐(Power-Up) 이벤트 이후 진입 는 초기 상태입니다. 리셋 후 20ms 이내에 반드시 이 상태로 진입해야 합니다. 또한, 다른 상태에서 앞으로 진행할 수 없는 경우에도 Detect.Quiet 상태로 진입할 수 있습니다. (Detect.Quiet 상태로 진입할 수 있는 다른 상태들은 FIgure 14-8을 참조하십시오.)
이 하위 상태의 주요 속성은 다음과 같습니다:
- 송신기(Transmitter)는 Electrical Idle(전기적 유휴) 상태에서 시작됩니다. (단, DC 공통 모드 전압이 반드시 일반적으로 지정된 범위 내에 있을 필요는 없음)
- 초기 데이터 속도는 2.5 GT/s (Gen1)로 설정됩니다. 만약 이 하위 상태에 진입할 때 다른 속도로 설정된 경우, LTSSM은 최소 1ms 동안 이 상태에 머문 후 Gen1 속도로 변경해야 합니다.
- 물리 계층(Physical Layer)의 상태 비트(LinkUp = 0)는 데이터 링크 계층(Data Link Layer)에 링크가 아직 동작하지 않음을 알립니다.
- LinkUp 상태 비트는 내부 상태 비트이며, 표준 구성 공간(Standard Config Space)에는 포함되지 않습니다.
- 또한, 물리 계층이 링크 트레이닝(Link Training)을 완료하면(LinkUp = 1), 데이터 링크 계층과 흐름 제어(Flow Control) 초기화를 시작해야 함을 알립니다.(더 자세한 내용은 "FC Initialization Sequence"를 참조하십시오.)
- 모든 이전 등화(Equalization, Eq.) 상태는 Link Status 2 레지스터의 네 개의 비트를 0으로 설정하여 초기화됩니다:
- Eq. Phase 1 Successful
- Eq. Phase 2 Successful
- Eq. Phase 3 Successful
- Eq. Complete
- 변수(Variables):
- 여러 변수가 0으로 초기화됨:
- directed_speed_change=0b
- upconfigure_capable=0b
- equalization_done_8GT_data_rate=0b
- idle_to_rlock_transitioned=00h
- select_deemphasis 변수 값은 포트 유형에 따라 달라짐:
- 업스트림 포트(Upstream Port): 하드웨어에 의해 선택됨
- 다운스트림 포트(Downstream Port): Selectable Preset/De-emphasis 필드 값을 Link Control 2 레지스터에서 가져옴
- 이 변수들은 PCIe 2.0 스펙부터 정의되었기 때문에, 이전 버전의 스펙을 기반으로 설계된 장치에서는 존재하지 않을 수도 있음.
- 이러한 장치는 directed_speed_change와 upconfigure_capable을 0b로 설정하고, idle_to_rlock_transitioned를 FFh로 설정한 것처럼 동작함.
- 여러 변수가 0으로 초기화됨:
Exit to "Detect.Active"
다음 하위 상태는 "Detect.Active"이며, 다음 조건 중 하나가 충족되면 진입함:
- 12ms 타임아웃 발생
- 어떤 레인(Lane)이라도 Electrical Idle에서 벗어남
Detect.Active
이 하위 상태는 Detect.Quiet에서 진입합니다.
이 시점에서 송신기(Transmitter)는 각 레인(Lane)에 수신기(Receiver)가 연결되어 있는지를 테스트합니다.
이를 위해 합법적인 범위 내의 DC 공통 모드 전압(DC common mode voltage)을 설정한 후 변경합니다.
- 검출 로직(Detection Logic)은 전압이 충전되는 속도를 관찰하고, 이를 예상 충전 시간과 비교합니다.
- 수신기가 연결되지 않은 경우, 충전 시간은 비교적 짧습니다.
- 반면, 수신기가 연결된 경우, 충전 시간이 훨씬 길어지므로 쉽게 인식할 수 있습니다.
- 더 자세한 내용은 "Receiver Detection"을 참조하십시오.
- 이후의 논의를 간단하게 하기 위해, 이 하위 상태에서 수신기가 감지된 레인은 "Detected Lanes"라고 합니다.
Exit to "Detect.Quiet" (Detect.Quiet로 이동)
- 어떠한 레인에서도 수신기가 감지되지 않으면, 다시 Detect.Quiet으로 돌아갑니다.
- 수신기가 감지되지 않는 한, 이 과정은 12ms마다 반복됩니다.
Exit to "Polling State" (Polling 상태로 이동)
- 모든 레인에서 수신기가 감지되면, 다음 상태는 Polling으로 전환됩니다.
- 이 상태로 전환되면, 레인은 이제 0 - 3.6V의 DC 공통 모드 전압을 인가해야 합니다.
(V_TX-CM-DC 스펙을 준수해야 함.)
특수 사례 (Special Case):
- 디바이스의 일부 레인만 수신기(Receiver)에 연결된 경우 (예: x4 디바이스가 x2 디바이스에 연결된 경우),
- 12ms 동안 대기한 후 다시 시도합니다.
- 두 번째 시도에서도 동일한 레인이 수신기를 감지하면, Polling 상태로 이동합니다.
- 그렇지 않으면 다시 Detect.Quiet으로 돌아갑니다.
- Polling 상태로 이동하는 경우, 수신기를 감지하지 못한 레인들에 대해 두 가지 가능성이 있습니다:
- 해당 레인이 별도의 링크로 동작할 수 있는 경우:
- ("병합 가능한 링크 설계(Designing Devices with Links that can be Merged)" 참조)
- 다른 LTSSM을 사용하여, 해당 레인들에 대해 다시 감지 시퀀스를 수행할 수 있습니다.
- 다른 LTSSM이 사용 불가능한 경우:
- 수신기를 감지하지 못한 레인은 링크의 일부가 될 수 없으며, Electrical Idle 상태로 전환해야 합니다.
- 해당 레인이 별도의 링크로 동작할 수 있는 경우:
####
출처) PCI Express Base Speicification Revision 6.3
'PCIe' 카테고리의 다른 글
LTSSM - Polling (0) | 2025.03.18 |
---|---|
(LTSSM) Link Training and Status State Machine - Overview (0) | 2025.03.17 |
[굿썸] Lane Margining at Receiver (0) | 2024.12.20 |
Hot Plug and Power Budgeting (0) | 2024.12.11 |
Lane Margining at the receive (1) | 2024.12.05 |