banner
Centro de notícias
Ampla experiência juntamente com equipamentos avançados

PCIe para hackers: anatomia do link

Aug 20, 2023

Da última vez, examinamos os diffpairs, seus princípios básicos, regras de roteamento e as notórias tolerâncias do PCIe quando se trata de diffpairs. Agora, vamos dar uma olhada nos sinais exatos que fazem o PCIe funcionar, além de fornecer uma visão geral de quais soquetes você pode usar o PCIe.

Eu separo os soquetes PCIe em duas categorias – soquetes de desktop, que são os soquetes PCIe usuais 1x, 16x ou talvez x4 que vemos em placas-mãe de desktop – e soquetes móveis: mPCIe e M.2. Existem também soquetes como o ExpressCard que ainda são encontrados em alguns laptops mais antigos, mas definitivamente perderam a relevância. Em dispositivos móveis, o M.2 é o caminho a seguir quando se trata de PCIe – se você estiver interessado, escrevi uma pequena série falando sobre tudo o que o M.2 fez antes.

Nesses soquetes, a maioria dos sinais será opcional e alguns sinais serão específicos do soquete, mas existem alguns sinais necessários em qualquer dispositivo PCIe. Obviamente, o primeiro grupo de sinais necessários são os próprios pares de diferenças PCIe.

Qualquer interface PCIe possui dois tipos de pares de diferenças – TX e RX; para um link x1, você terá um par de diferenças TX e um par de diferenças RX, e um link x16 precisa de dezesseis de cada. Como você pode esperar, o RX em uma extremidade se conecta ao TX na outra extremidade e vice-versa – é como o UART, mas picante. Claro, se você estiver usando algum tipo de extensor PCIe ou adaptador soquete a soquete, não precisará fazer nenhuma troca. Se você estiver projetando uma placa para um dos padrões de extensão PCIe, a nomenclatura usual é do lado do host. Por exemplo, digamos que você esteja colocando um IC controlador PCIe Ethernet em uma PCB que se conecta a um soquete PCIe de desktop – conecte TX e RX da placa de soquete PCIe ao RX e TX do seu chip Ethernet, respectivamente.

Se houver forte indicação de que esta convenção foi violada, não se preocupe – compare com um host ou dispositivo existente e veja se você consegue determinar se a nomenclatura está conforme o esperado ou, de fato, inesperadamente, invertida. Novamente, é como o UART! Dito isto, também existem capacitores de acoplamento AC colocados em série nas linhas TX e RX. Especificamente no caso de placas de extensão PCIe, sejam elas M.2 ou PCIe de desktop, a convenção é colocá-las nas linhas device-TX (host-RX) na placa do dispositivo, e no lado host-TX (device-RX) na o conselho anfitrião. Isso por si só já é uma divergência agradável do UART quando se trata de design e engenharia reversa.

O terceiro tipo de par de diferenças, que está invariavelmente presente, é o REFCLK – um par de diferenças de clock de 100 MHz. É um relógio rápido e não tenho certeza sobre seu propósito completo, mas, aparentemente, ele desempenha um papel na decodificação dos dados em TX e RX, especificamente, na recuperação do relógio – permanecendo vital apesar de ser muito mais lento que a faixa de GBit largura de banda dos pares PCIe TX e RX. Ao contrário de RX e TX, você não pode trocar a polaridade REFCLK quer queira quer não. Por outro lado, não vai doer tanto se o REFCLK passar por um conjunto de vias ou duas, caso precise invertê-lo – são apenas 100 MHz. Lembre-se de respeitar seus pares diferentes e você se sairá bem.

REFCLK é necessário – exceto, teoricamente, em casos em que você pode omiti-lo, exigindo que ambas as extremidades do link PCIe suportem a recuperação desse clock a partir de dados transmitidos por pares RX e TX, ou gerem seu próprio REFCLK. Parece bastante realista, mas as implementações PCIe sem REFCLK ainda não existem. Mesmo o SD-Express, um padrão recente que traz PCIe para cartões SD para velocidades de acesso extremamente rápidas, não seguiu esse caminho - a única implementação sem REFCLK disponível para o consumidor é o SATA-Express, um padrão que se tornou obsoleto pelo M.2 quase assim que as placas-mãe com portas SATA-Express chegaram às prateleiras das lojas. Do jeito que está, se você deseja que seu link PCIe funcione, você precisa absolutamente do REFCLK.

E agora um pouco mais sobre os capacitores. Você precisa deles em TX e RX para que o link funcione, com faixas de 75 nF a 265 nF dependendo da geração do link PCIe: 200 nF é um bom valor geral e 100 nF funcionará em apuros. Fora isso, opte pelo pacote 0402 ou 0201 e é basicamente isso. REFCLK normalmente não precisa de capacitores, mas eles também não devem prejudicar, e certos dispositivos podem exigi-los. Além disso, aqui está algo intrigante – houve pelo menos um caso documentado de um SSD WD barato fabricado em massa aparentemente omitindo seus capacitores do lado TX, falhando ao inicializar com uma placa host PCIe personalizada até que capacitores extras fossem adicionados no lado da placa principal. Não é algo que você deva fazer por padrão – apenas uma peculiaridade que um fabricante teve a ousadia de criar.