Usb контроллер synopsys что это

Обновлено: 07.07.2024

До выхода финальных спецификаций PCI Express 6.0 осталось несколько месяцев, но окончательный черновой вариант, выпущенный около 5 месяцев назад, позволяет разработчикам микросхем и другим компаниям начать внедрение передовой технологии в свои продукты: новые функции уже не будут добавляться или изменяться. Synopsys, например, уже представила первое в отрасли полное IP-решение PCIe 6.0, которое позволяет разработчикам микросхем интегрировать передовой интерфейс в свои 5-нм чипы.


Пакет Synopsys DesignWare IP для PCIe 6.0 включает контроллер (с интерфейсом Synopsys или дополнительными интерфейсами ARM AMBA 5/4/3 AXI), физический интерфейс (PHY) и проверочные блоки Verification. Решение, предлагаемое Synopsys, позволяет разработчикам микросхем добавить контроллер и физический интерфейс в свой 5-нм дизайн, а затем проверить, что всё работает правильно.

В новейшем интерфейсе заинтересованы разработчики ASIC для ИИ и HPC, графических процессоров, контроллеров SSD и других продуктов, чувствительных к полосе пропускания и получающих отдачу от тех показателей пропускной способности, которые может обеспечить интерфейс PCIe 6.0. Речь идёт о скорости до 128 Гбайт/с по интерфейсу x16 в каждом направлении. Это означает, что в теории устройство с поддержкой PCIe 6.0 может за секунду обмениваться 256 Гбайт данных.


Контроллер PCIe 6.0 от Synopsys в полном соответствии со стандартом увеличивает скорость передачи данных до 64 гигатранзакций в секунду против 32 ГТ/с для PCIe 5.0 и 16 ГТ/с — для PCIe 4.0. Сигнальная структура интерфейса вместо передачи последовательности импульсов без возврата к нулю (NRZ, no-return-to-zero) использует схему передачи с амплитудно-импульсной модуляцией (PAM4). Для передачи будет использоваться градация сигнала с четырьмя уровнями, что увеличит плотность передачи данных и ёмкость канала. При этом Synopsys утверждает, что использует оптимизированный канал данных для обеспечения сверхнизких задержек.

Также поддерживаются другие особенности PCIe 6.0 вроде прямого исправления ошибок с малой задержкой (FEC), режима FLIT и режим пониженного энергопотребления L0p — всё это ключевые новшества функции PCIe 6.0. Вдобавок ко всему, контроллер Synopsys DesignWare PCIe 6.0 также поддерживает собственные адаптивные алгоритмы DSP, которые оптимизируют аналоговую и цифровую стабилизацию для снижения энергопотребления на 20 % на интерфейсах между чипами, райзером и системной платой.


В последние 1,5 года видеокарты, процессоры и твердотельные накопители M.2 обзавелись поддержкой PCIe 4.0. Пройдёт ещё какое-то время до появления поддержки PCIe 5.0 в передовых продуктах, но приятно осознавать, что PCI-SIG уже практически завершила разработку следующей версии интерфейса. Сегодня в PCIe 6.0 вряд ли есть смысл на потребительском рынке, но в центрах обработки данных пропускная способность никогда не бывает лишней. Впрочем, спустя годы, PCIe 6.0 наверняка доберётся и до обычных пользователей.

Describes the architecture of the USB function stack.

On a USB device, the USB function stack refers to a group of drivers that are enumerated by the Plug and Play Manager, when ACPI creates a USB device physical device object (PDO).

In a single configuration device, a USB device can define one or more interfaces. For example, the Media Transfer Protocol (MTP) for transferring files to and from the device. A composite USB device can support multiple interfaces in a single configuration. The USB function stack creates PDOs for each interface and PnP Manager loads the class driver that creates the function device object (FDO) for that interface.

The USB function stack is conceptualized in this image:

usb function stack.

Applications and Services

  • All user-mode requests are sent to the Microsoft-provided kernel-mode class driver GenericUSBFn.sys. You can create a user-mode service that communicates with GenericUSBFn.sys by sending I/O control codes (IOCTLs) as defined in genericusbfnioctl.h. For more information about these IOCTLs see Communicating with GenericUSBFn.sys from a user-mode service

USB function class driver

A USB function class driver implements the functionality of a specific interface (or group of interfaces) on the USB device. MTP and IpOverUsb are examples of system-supplied class drivers. The class driver may be implemented purely as a kernel-mode driver, or it may be a user-mode service paired with the system-supplied class driver GenericUSBFn.sys.

A function class driver sends requests to the controller by using USB function class driver to UFX programming interfaces.

USB function class extension (UFX)

The USB function class extension (UFX) is a system-supplied extension to Kernel-Mode Driver Framework (KMDF). USB is a standard bus and has some required functionality and capabilities. UFX is responsible for implementing USB function logic that is common to all USB function controllers and handling and/or dispatching requests from USB function class drivers. In particular, UFX handles the process of enumerating the device and processing standard control transfers. To perform some of these operations, UFX needs to know about the capabilities of the bus. Those capabilities are reported to UFX when the class-extension interface is established.

UFX exposes standard IOCTLs that the upper layers (USB function class driver and user mode services) can use to send requests to the controller. Additionally, UFX notify upper layers about the standard requests received from the host.

USB function client driver

UFX provides an abstracted interface that works consistently across different controllers. However, controllers have different capabilities, with limitations such as the number of endpoints, the types of endpoints, low power, remote wake-up. For example, certain controllers support DMA, while others do not. Some controllers implement streams in the hardware while other controllers expect the driver to handle streams. For these reasons, only common functionality is handled in UFX. Transfers, power management, stream support, and other features which vary from controller to controller are handled by the client driver.

The USB function client driver is responsible for implementing controller-specific operations. These include implementing endpoint data transfers, USB device state changes (reset, suspend, resume), attach/detach detection, port/charger detection. The client driver is also responsible for handling power management, and PnP events.

Microsoft provides in-box function client drivers (UfxChipidea.sys, Ufxsynopsys.sys) for ChipIdea and Synopsys controllers.

USB lower filter driver

A USB lower filter driver supports detection of chargers if the function controller uses the in-box Synopsys and ChipIdea drivers. The filter driver manages USB charging starting from USB port detection. t must publish a GUID for each charger type it supports, and a list of that charger’s properties. If a specific charger is configurable, the lower USB filter driver defines a list of supported PropertyIDs and their corresponding value types that can be sent to it, to configure the charger. The driver also notifies the battery stack when it can begin charging and the maximum amount of current the device can draw. For client drivers other than Synopsys and ChipIdea drivers, charging logic can be implemented in the client driver.

A function class driver sends request to UFX by using Programming interfaces for supporting proprietary chargers.

Оптимизация кремния и ПО для приложений ИИ

Artificial Intelligence Solutions
Artificial Intelligence Solutions

Будущее Взаимосвязанного Всего

5G Solutions
5G Solutions

Автомобильные приложения

Создание безопасных, защищенных, умных автомобилей от кремния до ПО

Automotive Solutions
Automotive Solutions

Космос и Оборона

Сокращение риска и гарантия соответствия от кремния до ПО

Aerospace and Defense Solutions
Aerospace and Defense Solutions

Облачные приложения

Мощное и безопасное облако от кремния до ПО

Cloud Solutions
Cloud Solutions

Интернет вещей

Предоставление следующего поколения умных и безопасных устройств Интернета вещей

Describes the architecture of the USB function stack.

On a USB device, the USB function stack refers to a group of drivers that are enumerated by the Plug and Play Manager, when ACPI creates a USB device physical device object (PDO).

In a single configuration device, a USB device can define one or more interfaces. For example, the Media Transfer Protocol (MTP) for transferring files to and from the device. A composite USB device can support multiple interfaces in a single configuration. The USB function stack creates PDOs for each interface and PnP Manager loads the class driver that creates the function device object (FDO) for that interface.

The USB function stack is conceptualized in this image:

usb function stack.

Applications and Services

  • All user-mode requests are sent to the Microsoft-provided kernel-mode class driver GenericUSBFn.sys. You can create a user-mode service that communicates with GenericUSBFn.sys by sending I/O control codes (IOCTLs) as defined in genericusbfnioctl.h. For more information about these IOCTLs see Communicating with GenericUSBFn.sys from a user-mode service

USB function class driver

A USB function class driver implements the functionality of a specific interface (or group of interfaces) on the USB device. MTP and IpOverUsb are examples of system-supplied class drivers. The class driver may be implemented purely as a kernel-mode driver, or it may be a user-mode service paired with the system-supplied class driver GenericUSBFn.sys.

A function class driver sends requests to the controller by using USB function class driver to UFX programming interfaces.

USB function class extension (UFX)

The USB function class extension (UFX) is a system-supplied extension to Kernel-Mode Driver Framework (KMDF). USB is a standard bus and has some required functionality and capabilities. UFX is responsible for implementing USB function logic that is common to all USB function controllers and handling and/or dispatching requests from USB function class drivers. In particular, UFX handles the process of enumerating the device and processing standard control transfers. To perform some of these operations, UFX needs to know about the capabilities of the bus. Those capabilities are reported to UFX when the class-extension interface is established.

UFX exposes standard IOCTLs that the upper layers (USB function class driver and user mode services) can use to send requests to the controller. Additionally, UFX notify upper layers about the standard requests received from the host.

USB function client driver

UFX provides an abstracted interface that works consistently across different controllers. However, controllers have different capabilities, with limitations such as the number of endpoints, the types of endpoints, low power, remote wake-up. For example, certain controllers support DMA, while others do not. Some controllers implement streams in the hardware while other controllers expect the driver to handle streams. For these reasons, only common functionality is handled in UFX. Transfers, power management, stream support, and other features which vary from controller to controller are handled by the client driver.

The USB function client driver is responsible for implementing controller-specific operations. These include implementing endpoint data transfers, USB device state changes (reset, suspend, resume), attach/detach detection, port/charger detection. The client driver is also responsible for handling power management, and PnP events.

Microsoft provides in-box function client drivers (UfxChipidea.sys, Ufxsynopsys.sys) for ChipIdea and Synopsys controllers.

USB lower filter driver

A USB lower filter driver supports detection of chargers if the function controller uses the in-box Synopsys and ChipIdea drivers. The filter driver manages USB charging starting from USB port detection. t must publish a GUID for each charger type it supports, and a list of that charger’s properties. If a specific charger is configurable, the lower USB filter driver defines a list of supported PropertyIDs and their corresponding value types that can be sent to it, to configure the charger. The driver also notifies the battery stack when it can begin charging and the maximum amount of current the device can draw. For client drivers other than Synopsys and ChipIdea drivers, charging logic can be implemented in the client driver.

A function class driver sends request to UFX by using Programming interfaces for supporting proprietary chargers.

Читайте также: