реклама на сайте
подробности

 
 
> Буфер для PCI Express
doom13
сообщение Sep 2 2015, 05:59
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 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 драйвером?

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
doom13
сообщение Sep 30 2015, 19:56
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Хорошо.
Поясните мне вот это: AXI to PCIe Bridge имеет параметры Aperture Base Address, Aperture Hight Address, AXI to PCIe Translation, где Aperture - это адресное пространство для AXI DMA, Translation - куда будет ложиться в память выделяемую ядром. Т.е. ядро выделяет память и начальный физический адрес этой памяти записываем в регистр AXIBAR2PCIEBAR, когда DMA бросает данные по адресам Aperture, они попадают в память адрес которой хранится в AXIBAR2PCIEBAR (непрерывный участок памяти 4 MB разбиваем на буферы, а их адреса записываем в дескрипторы). Что делать, если хотим отдать под буферы памяти больше 4 MB? Тут придётся использовать другой BAR, под который выделяется свой блок памяти 4 MB, или для другого кольца/таблицы дескрипторов менять значение в регистре AXIBAR2PCIEBAR моста.

Цитата(RobFPGA @ Sep 30 2015, 19:42) *
Надо выделять под буфера много мелких. а не большой непрерывный кусок памяти, главное чтобы в окно попали.

Если много мелких по 4 MB (блоки памяти с разными адресами не из одного адресного пространства), как их тогда все запихнуть в AXI:BAR?

Цитата(RobFPGA @ Sep 30 2015, 19:42) *
УКАЗАТЕЛЬ на буфер.

Указатель на буфер - физический адрес буфера, записывается в регистр моста (начальный адрес). Адрес следующего можем определить смещением относительно первого на размер буфера и т.д. Но размер всех буферов получим 4 MB. Как иначе?

Цитата(krux @ Sep 30 2015, 20:27) *
Обратите внимание на видеокарты с набортной памятью в 4 Гбайт, 10-GbE сетевки, да вообще любые PCIe устройства.

Как эту наборную память адресовать через один AXI:BAR?
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Sep 30 2015, 20:06
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!

Цитата(doom13 @ Sep 30 2015, 22:07) *
Хорошо.
Поясните мне вот это: AXI to PCIe Bridge имеет параметры [i]Aperture Base Address, Aperture Hight Address, AXI to PCIe
....

Все совсем не так
Aperture Base Address -Aperture Hight Address диапазон адресов на AXI SLAVE при обращении в который происходит мапинг в ФИЗИЧЕСКОЕ пространство системы с соответствующим смещение PCIe Translation
(SLAVE:Base<= X <= Hight -> SYTEM:X-Base+Translation )

ФИЗИЧЕСКИЙ адрес ВСЕЙ памяти системы известен он НЕ меняется в процессе работы
У вас ведь памяти не 2^64 байт? Например если у вас стоит 16G памяти то задав ОДНО окно
Base=0x0_0000_0000 Aperture Hight=0x3_FFFF_FFFF, PCIe Translation=0x0_0000_0000
Вы сможете работать со всей имеющейся у вас памятью (ну почти )

Успехов! Rob
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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   Получается, для системной памяти 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
- - krux   ЦитатаЧто-то я вообще запутался, как оно работает....   Oct 2 2015, 17:56
- - doom13   Цитата(krux @ Oct 2 2015, 20:56) зависит ...   Oct 2 2015, 19:52
- - RobFPGA   Приветствую! Цитата(doom13 @ Oct 2 2015,...   Oct 2 2015, 21:03
- - doom13   Цитата(RobFPGA @ Oct 3 2015, 00:03) Поэто...   Oct 3 2015, 08:29
- - doom13   Цитата(RobFPGA @ Oct 3 2015, 00:03) Цита...   Oct 6 2015, 08:59


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 19:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01429 секунд с 7
ELECTRONIX ©2004-2016