banner
Дом / Блог / PCIe для хакеров: прелюдия к Diffpair
Блог

PCIe для хакеров: прелюдия к Diffpair

Sep 10, 2023Sep 10, 2023

PCIe, также известный как PCI-Express, представляет собой очень мощный интерфейс. Итак, давайте посмотрим, что нужно, чтобы взломать что-то настолько мощное. Поначалу PCIe может показаться немного пугающим, однако начать создавать PCIe достаточно просто, а интерфейс достаточно устойчив для технологий любительского уровня. Наступит момент, когда мы захотим использовать чип PCIe в наших проектах или, возможно, использовать соединение PCIe, доступное на определенном вычислительном модуле, и хорошо убедиться, что мы к этому готовы.

PCIe сейчас повсюду. Каждый современный компьютер имеет множество устройств PCIe, выполняющих важные функции, и даже iPhone использует внутренний интерфейс PCIe для соединения процессора с флэш-памятью и чипами Wi-Fi. Вы можете получить все виды устройств PCIe: контроллеры Ethernet, высокопроизводительные карты Wi-Fi, графику и все дешевые диски NVMe, которые с радостью предоставят вам кучу места для хранения данных при подключении через PCIe. Если вы занимаетесь взломом ноутбука или одноплатного компьютера и хотите добавить устройство PCIe, вы можете получить немного PCIe из одного из разъемов PCIe или просто подключиться к существующей ссылке PCIe, если ее нет. розетка для подключения. Прошло два десятилетия с тех пор, как мы начали получать устройства PCIe — сейчас PCIe находится в версии 5.0, и ясно, что она никуда не денется.

PCIe — это шина «точка-точка», которая соединяет два устройства вместе — в отличие от PCI, более старой шины, которая могла соединять цепочку устройств на вашей материнской плате. Одна сторона канала PCIe — это устройство, а другая — хост. Например, в ноутбуке ваш процессор будет иметь несколько портов PCIe: некоторые используются для подключения графического процессора, некоторые — для подключения карты Wi-Fi, некоторые — для Ethernet, а некоторые — для накопителя NVMe.

Каждый канал PCIe состоит как минимум из трех дифференциальных пар — одна тактовая частота 100 МГц, REFCLK, которая (почти) всегда требуется для канала, и две пары, образующие полосу PCIe — одна для передачи, а другая для приема. Это ссылка x – вы также можете иметь ссылки 2x, 4x, 8x и 16x с четырьмя, восемью шестнадцатью и тридцатью двумя дифференциальными парами соответственно, плюс, опять же, REFCLK. Чем шире канал, тем выше его пропускная способность!

Ширина каналов в PCIe — интересная тема со множеством интересных аспектов, но сначала было бы хорошо убедиться, что мы находимся на одной волне, когда дело доходит до того, что означает «дифференциальная пара» в контексте PCIe. Здесь, на Hackaday, мы уже рассказывали вам о подробностях дифференциальных пар — обязательно пересмотрите эту статью, если вы хотите узнать о дифференциальных парах более подробно! Здесь я быстро познакомлю вас с основами, а затем расскажу, что нужно знать при работе с дифференциальными парами конкретно для PCIe.

Проще говоря, дифференциальная пара — это два сигнала, один всегда противоположный другому, один из которых обычно называют положительным, а другой — отрицательным. Вы получаете логический уровень передаваемого бита, сравнивая два сигнала друг с другом – вместо сравнения логического уровня каждого отдельного сигнала с землей, как мы обычно делаем, что называется «несимметричным». При дифференциальной паре сигналы располагаются близко друг к другу и даже переплетаются, если речь идет о кабелях, и в результате любые помехи одинаково влияют на сигналы – поскольку сигналы сравниваются друг с другом для получения информации, это означает, что полученная информация не зависит от шума, наложенного на оба сигнала. Дифференциальные пары также заставляют магнитные поля обоих сигналов нейтрализовать друг друга, в результате чего линия становится менее шумной.

В результате дифференциальные пары позволяют увеличить скорость передачи, не создавая шума и не становясь восприимчивым к шуму. В результате подавляющее большинство высокоскоростных интерфейсов используют дифференциальные пары: Ethernet, PCIe, HDMI, DisplayPort, LVDS и даже USB, хотя USB 2 является лишь псевдодифференциальным, USB 3 — действительно дифференциальным. В отказоустойчивых интерфейсах, таких как RS485 и CAN, также используются дифференциальные пары. Любителю легко начать с дифференциальных пар с такими интерфейсами, как CAN, и USB 2 также не представляет проблем — на коротких расстояниях они будут работать, несмотря ни на что, несмотря на то, что являются дифференциальными сигналами и теоретически требуют специального обращения.