Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: DMA PCIe Cyclon
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Trashy_2
Есть железка на Cyclone5 со встроенным PCIe+Avalon без ARM на борту.

Подключено к компу. Со стороны ПЛИС выделен BAR0 и там набор регистров. Верхнее приложение под Виндой по прерыванию или по полингу выгребает данные из БАРа. Работает, но не по феншую: жрёт процессорное время.

У меня дыры в понимании работы DMA. Работал с DMA в контроллерах, где какая-то аппаратная хрень, которой передаёшь смещение и сколько читать и она сама копирует данные в некую область памяти и потом сообщает...

Не пойму как это работает в стыке PCI и компа. Канал то один и тот же. Что необходимо менять в прошивке ПЛИС, что бы этот режим был доступен компу?
XVR
Для FPGA вам нужен котролер DMA, а для PC драйвер для вашего контролера. 'Из коробки' это все не заведется sad.gif
Trashy_2
Цитата(XVR @ Sep 28 2016, 14:12) *
Для FPGA вам нужен котролер DMA, а для PC драйвер для вашего контролера. 'Из коробки' это все не заведется sad.gif

Не пойму вашего сленга.
Драйвес со стороны PC напишем. Это не проблема.
Контроллер DMA, он работает через те же BARы или там какой то иной алгоритм работы? Его самостоятельно состряпать можно?
Maverick
Цитата(Trashy_2 @ Sep 28 2016, 14:21) *
Не пойму вашего сленга.
Драйвес со стороны PC напишем. Это не проблема.
Контроллер DMA, он работает через те же BARы или там какой то иной алгоритм работы? Его самостоятельно состряпать можно?

как пример
реализация
Trashy_2
Опять я с глупостями.

Возможно ли на Цыклоне 5 сделать такую штуку: PCIe-UART16550, что бы винда увидела эту штуку и установила на неё свои драйвера? 16550, вроде майкрософтом поддерживаются. Какие-нить вендоры подменить, в INFах чё-нить прописать...

У меня все IP оплачены.
Сейчас связка Avalon+16550 работает через бары прямым доступом в регистры.
Как-то на такую ерунду писать свои драйвера, как-то по лоховски выглядит.

XVR
Цитата(Trashy_2 @ Mar 6 2017, 17:05) *
Возможно ли на Цыклоне 5 сделать такую штуку: PCIe-UART16550, что бы винда увидела эту штуку и установила на неё свои драйвера?
Сделать можно, но вот 'увидеть и поставить драйвера' не получится. Нужно будет прописать параметры вручную в registry

https://msdn.microsoft.com/en-us/library/wi...3(v=vs.85).aspx
AVR
На самом деле всё гораздо гораздо проще, говорят нужен какой то контроллер DMA. На самом деле DMA-режим работы можно осуществить без него, если делаете свои TLP пакеты. По сути, на стороне ПК в драйвере выделяется буфер, который будет видеть и ядро и устройство (ну специальным образом выделенная память), его адрес кидается на BAR0 и устройство может тупо слать TLP пакеты на этот адрес и это не сжирает процессор. т.е. устройство само туда пишет, это Bus Mastering. Когда тысячи пакетов накиданы устройством прямо в память (в этот буфер) - делается прерывание (MSI). Скорость будет околосветовая (теор предел линка), загрузка проца ничтожна.

Есть вопросы - пишите, подскажу.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.