PIPE学习记录

PIPE Introduction

PIPE (PHY Interface for PCI Express): Actually, PIPE is a standard interface which is not only design for PCIe but also for USB/SATA/DP/Converge IO. It is the interface between MAC and PHY.
PCIe Phyical Layer

  • PCLK is the clocking for each lane. There are two PCLK mode.
    – PCLK as output for PHY: This mode is no longer user for PCIe Gen5 and beyond.
    – PCLK as input for PHY: This mode is introduced from 4.1 version. PCLK as input allows controller and external logic more easily adjust timing in the silicon.
    Refer PIPE Spec 6.1 for signals description

PIPE Mode

Before introduce PIPE mode, it is nessary to introduce function block of PHY.
Note: Below screenshot is per lane function. So PCLK should be separate for each lane.
在这里插入图片描述
Compared to Original PIPE mode, Serdes PIPE mode move 8b/10b (128b/130b) encode/decode in PHY to MAC. Diagrams are shown in next sections.

Original PIPE Mode

Transmitter block in Gen1/Gen2

在这里插入图片描述

Transmitter block in Gen3/Gen4/Gen5

在这里插入图片描述

Receiver Block in Gen1/Gen2

在这里插入图片描述

Reciever Block in Gen3/Gen4/Gen5

在这里插入图片描述

Serdes PIPE Mode

Because encoding logic is move to MAK, there is no differences among all Generations.

Transmitter Block

在这里插入图片描述

Receiver Block

在这里插入图片描述

Message Bus

Message Bus and Its Superiority Compared to Wires

   Message Bus is design for no-latency sensitive PIPE options (usually refer to register write/read). Message Bus use commands encode to do PIPE options which decreases wires. And it allows to add additional options without increase wires. From the introduction above, we can see the superiority compared to use wires do PIPE options. Because message bus use commands to do PIPE options, it increase the latency which can be explained in next section Message Bus Commands and Message Bus Timing.

Message Bus Interface

   Message Bus provides two group 8bits wires to comminicate between MAC and PHY. The PHY and MAC registers use 12bits addr, so 8bits Message Bus should be map to 12bits addr which will be introduced in Message Bus Commands.

NameDirectionDescription
M2P_MessageBus[7:0]InputThe Mac multiplex Commands, any required addr, and any required data for sending read and write requests to access PHY registers and for sending read completion and write ack to PHY initiated requests.
P2M_MessageBus[7:0]OutputThe PHY multiplex Commands, any required addr, and any required data for sending read and write requests to access Mac registers and for sending read completion and write ack to Mac initiated requests.

Note that direction above table is refer to PHY

Message Bus Commands

   Message Bus Commands can be divided into three types by the num of cycles one command finish.

  • One Cycle: commands no address and no data required
       These commands include write_ack/NOP
    在这里插入图片描述

  • Two Cycles: Commands no address required or no data required
       These commands include read_request/read_completion
    在这里插入图片描述
    在这里插入图片描述

  • Three Cycles: Commands address and data required.
       These commands include write_commited/write_uncommited.在这里插入图片描述
       From above, we can see that cmd are 4bits encode. The description for cmds are shown below:

EndcodingCommandCycles to Transmit
4’b0000NOP1
4’b0001write_uncommited3
4’b0010write_commited3
4’b0011read2
4’b0100read_completion2
4’b0101write_ack1
elsereservedNA

   Commands above are driven by pclk and easy understand except write_uncommited and write_commited command.

  • write_uncommited: There are some registers which need to be updated at the same clk. So write_uncommited command is designed for these type registers. Registers value are stored in buffer by write_uncommited commands and are not effective until write_commited command comes. When write_commited command come, all write_uncommited commands and the lastest write_commit command take effect right now. This mechine ensure these registers take effect at the same clk.
  • write_commited: When write_commited command comes, all write_uncommited commands and the lastest write_commited command take effect right now.

Message Bus Timing

在这里插入图片描述

  1. All zero are driven when bus is idle
  2. The data are associated within one transaction must be transfered in contiguous cycles.
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值