|
Буфер для PCI Express |
|
|
|
Sep 2 2015, 05:59
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Приветствую. Собираю систему для передачи данных от 10G Ethernet по PCIe в ПК (см. рисунок). Приёмник MAC-уровня для 10G Ethernet пока моделирую Traffic Generator-ом. Прерывание от S2MM FIFO заводится в ПК и обрабатывается драйвером. Использовал DC FIFO (для перехода между clock domains, Ethernet тактируется 156.25 МГц, PCIe - 250 МГц) и S2MM FIFO (для преобразования AXI4-Stream в AXI4). S2MM FIFO генерирует прерывание либо по достижению определённого уровня заполнения, либо по приёму очередного пакета данных. Traffic Generator управляется MicroBlaze (пока, для отладки) и может генерировать пакет 1024*64bit в цикле или постоянно. Если использую прерывание по заполнению уровня (1024 позиции фифо), то приходится ставить большую задержку между запусками Traffic Generator-а, чтобы CDMA успевал выгребать данные до накопления новых 1024 позиций, иначе передача фифо забивается и прерывание больше не срабатывает. Тогда попробовал использовать прерывание по приёму пакета и забирать максимальное число данных кратное 1024 позициям фифо. Тут Traffic Generator может работать в непрерывном режиме (CDMA постоянно забирает данные), но есть ощущение, что при заполнении фифо Traffic Generator может некоторое время ожидать следующей передачи. Вопросы: 1) Правильно ли реализую сам буфер, возможно есть более удобное решение? 2) Как выбрать размер FIFO и размер разовой передачи CDMA с учётом разных скоростей работы FIFO на запись/чтение и времени, требуемого для обработки прерывания и запуска CDMA драйвером?
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
Oct 2 2015, 17:56
|
Профессионал
    
Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596

|
Цитата Что-то я вообще запутался, как оно работает. зависит от того, с чем вы хотите разобраться. если с PCI-Express, то предлагаю выкинуть AXI-to-PCIe bridge и по-человечески разобраться c PCI-Express при помощи "заката солнца вручную", без посторонних инструментов. Например сделав простой DMA для передачи всего лишь 4КБайт. С BAR-ами и прочими обязательными аттрибутами этого интерфейса. если же с мостом AXI-to-PCIe bridge, то предполагается что с PCI-E "врукопашную" вы уже знакомы. отделите мух от котлет, станет попроще.
--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
|
|
|
|
|
Oct 2 2015, 19:52
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(krux @ Oct 2 2015, 20:56)  зависит от того, с чем вы хотите разобраться.
если с PCI-Express, то предлагаю выкинуть AXI-to-PCIe bridge и по-человечески разобраться c PCI-Express при помощи "заката солнца вручную", без посторонних инструментов. Например сделав простой DMA для передачи всего лишь 4КБайт. С BAR-ами и прочими обязательными аттрибутами этого интерфейса.
если же с мостом AXI-to-PCIe bridge, то предполагается что с PCI-E "врукопашную" вы уже знакомы. отделите мух от котлет, станет попроще. Разбираться с Transaction Layer пока не хотел, как понимаю, мост делает это за меня. PCIe to AXI BAR работает и всё понятно, а вот с AXI to PCIe BAR есть какое-то непонимание. Объясните, если я задаю Aperture 16 ГБ (как в посте выше), Translation 0, получается, должно позволить адресовать 16 ГБ системной памяти? А система выделяет буфер с физическим адресом за пределами этих 16 ГБ. Вот и как получить к нему доступ?
|
|
|
|
|
Oct 2 2015, 21:03
|
Профессионал
    
Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643

|
Приветствую! Цитата(doom13 @ Oct 2 2015, 22:52)  Разбираться с Transaction Layer пока не хотел, как понимаю, мост делает это за меня. PCIe to AXI BAR работает и всё понятно, а вот с AXI to PCIe BAR есть какое-то непонимание. Объясните, если я задаю Aperture 16 ГБ (как в посте выше), Translation 0, получается, должно позволить адресовать 16 ГБ системной памяти? А система выделяет буфер с физическим адресом за пределами этих 16 ГБ. Вот и как получить к нему доступ? Никак! Мне не понятно Ваше желание ограничить свободу DMA без предявления оному внятных обвинений а нам не менее внятных обяснений. Ведь DMA он мелкая сошка - и делает то что прикажет бугор (драйвер). Поэтому разбирайтес с бугром и его боссом (програмистом) почему они возволяют себе такое безобразие. Вы судя по всему устаете под вечер вот очевидных вещей и не видете - я же уже вредлагал - сделайте аппертуру в 64 бит и смещение 0 - и тогда хитрый CPU не сможет нигде от Вас спрятатся Ой - и да - при этом получается вариант как "заката солнца вручную" - ну разве что катить светило на тележке удобнее. Успехов! Rob.
|
|
|
|
Сообщений в этой теме
doom13 Буфер для PCI Express Sep 2 2015, 05:59 krux тупое S2MM fifo вам на 10G не поможет. скорости не... Sep 2 2015, 06:07 doom13 Цитата(krux @ Sep 2 2015, 09:07) посмотри... Sep 2 2015, 06:19 krux ЦитатаА что не так с FIFO?
формально, с FIFO всё н... Sep 2 2015, 08:52 doom13 Цитата(krux @ Sep 2 2015, 11:52) формальн... Sep 2 2015, 09:28 krux ЦитатаМануал на Intel 82599 10 GbE Controller прос... Sep 2 2015, 16:51 doom13 Цитата(krux @ Sep 2 2015, 19:51) в реальн... Sep 3 2015, 06:46 krux 1 таблица дескрипторов - это 128 буферов, на 128 S... Sep 3 2015, 08:32 doom13 Возник вопрос, в какой памяти должна размещаться т... Sep 28 2015, 07:05 RobFPGA Приветствую!
Цитата(doom13 @ Sep 3 2015,... Sep 28 2015, 12:23  doom13 Цитата(RobFPGA @ Sep 28 2015, 15:23) Для ... Sep 28 2015, 13:00 RobFPGA Приветствую!
Для начала почитайте LogiCORE IP... Sep 28 2015, 14:23 doom13 Цитата(RobFPGA @ Sep 28 2015, 17:23) Для ... Sep 28 2015, 15:07  RobFPGA Приветствую!
Цитата(doom13 @ Sep 28 2015... Sep 28 2015, 15:47   doom13 Цитата(RobFPGA @ Sep 28 2015, 18:47)
Что... Sep 28 2015, 16:08   doom13 Цитата(RobFPGA @ Sep 28 2015, 18:47) Ну а... Sep 28 2015, 18:54 Golikov A. с 2 таблицами проще, что софт сможет монопольно не... Sep 29 2015, 06:16 RobFPGA Приветствую!
Цитата(Golikov A. @ Sep 29 ... Sep 29 2015, 07:10 doom13 Столкнулся с тем, что ядро Linux не хочет выделять... Sep 30 2015, 14:28 RobFPGA Приветствую!
Цитата(doom13 @ Sep 30 2015... Sep 30 2015, 16:03  doom13 Цитата(RobFPGA @ Sep 30 2015, 19:03)
При... Sep 30 2015, 16:34   RobFPGA Приветствую.
Цитата(doom13 @ Sep 30 2015, 19... Sep 30 2015, 16:42 krux ЦитатаКак понимаю, чтоб DMA мог работать по цепочк... Sep 30 2015, 17:27 doom13 Хорошо.
Поясните мне вот это: AXI to PCIe Bridge и... Sep 30 2015, 19:56 RobFPGA Приветствую!
Цитата(doom13 @ Sep 30 2015... Sep 30 2015, 20:06 doom13 Получается, для системной памяти Aperture - это ра... Sep 30 2015, 20:44 RobFPGA Приветствую!
Цитата(doom13 @ Sep 30 2015... Sep 30 2015, 21:13  doom13 Цитата(RobFPGA @ Oct 1 2015, 00:13) Ноль ... Oct 1 2015, 09:25 doom13 Нашёл, dmidecode показывает всю системную информац... Oct 1 2015, 18:44 doom13 Для ядра AXI Bridge for PCIe Gen 3 есть такая зако... Oct 2 2015, 13:31 RobFPGA Приветствую!
Цитата(doom13 @ Oct 2 2015,... Oct 2 2015, 14:49 doom13 Что-то я вообще запутался, как оно работает.
А как... Oct 2 2015, 16:07   doom13 Цитата(RobFPGA @ Oct 3 2015, 00:03) Поэто... Oct 3 2015, 08:29   doom13 Цитата(RobFPGA @ Oct 3 2015, 00:03)
Цита... Oct 6 2015, 08:59
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|