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

 
 
> Передача данных с ПЛИС через PCIe на ПК, Какова методология, какие подходы, что читать и что писать?
spbroma
сообщение Dec 11 2014, 13:26
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 23-07-14
Пользователь №: 82 337



Здравствуйте!

У меня есть задача:
Организовать передачу данных по PCIe с ПЛИС на ПК (Win7 x64).

Имеется: отладочная плача Xilinx vc709 на Virtex-7, опыт работы с ПЛИС
Отсутствует: опыт работы на уровне драйверов, работы с PCIe

Подскажите, как правильно и оптимально организовать систему?

Вместе с PCIe IP-core идет пример, в котором реализован контроллер памяти. Взяв триальный WinDriver я смог записывать и считывать байты через тестовое же, но на этот раз виндрайверское приложение. Однако виндрайвер платный, да и функционал мне нужен не то, чтобы выдающийся. Решил подумать на тему написания драйвера.

Поставил VS, WDK, настроил удалённый запуск и отладку драйвера на тестовом компьютере. Теперь настало время решить, в каком направлении двигаться и как это сделать менее болезненно.

Как я понимаю, у меня есть два варианта:
1. Определиться, устройство какого типа я буду формировать на ПЛИС: контроллер памяти, мультимедийное утсройство, что-то ещё и под него писать свой драйвер.
2. Подумать насчёт того, может уже есть драйверы, которые решают мою задачу, останется только сформировать на ПЛИС соответствующую конфигурацию устройства.

Собственно, вопросы к уважаемой публике:
1. Есть ли какие-то стандартные решения или подходы к подобной задачи? И какие?
2. Какой из вариантов лучше?
3. Что почитать?

Буду благодарен за любой совет.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
habenskiy
сообщение Jan 30 2015, 07:39
Сообщение #2





Группа: Участник
Сообщений: 13
Регистрация: 25-11-14
Пользователь №: 83 819



Цитата
Тестбенч, о котором вы говорите, как-то не попадался мне на глаза, так что ничего прокомментировать не могу. Пока с трудом понимаю, как можно использовать готовый пример для создания собственного проекта. Однако обрабатывать и генерить все сигналы вручную представляется ещё большим мраком и я немного в растерянности. Еще хотелось бы отойти от AXI, а то разбираться ещё и в нём надо.


Данный тестбенч находится в проекте примера. По сути просто выбираете "Run Behavioral Simulation" и ждете результата.

Я вот как раз и хотел взять какой то готовый пример, и посмотреть как и что в нем реализовано, а за тем уже прикинуть что нужно заменить. А то уже чем больше нахожу информации, тем больше погружаюсь в мрак - все таки одной теорией сыт не будешь, нужно что то железячное (по моему данный пример от xilinx подходящий для этой цели).

А в какую сторону вы хотели бы отойти от AXI? Он же вроде довольно прост - шина даных (tdata), сигнал валидности данных (tvalid), сигнал готовности принимать данные (tready). Остальные сигналы "расширяют возможности". Это касательно AXI-Stream, а он как раз у нас и используется. С остальными типами AXI сложнее. Или вы имеете в виду вообще какой то другой интерфейс, более заточеный под определенный круг задач (как в этой статье http://habrahabr.ru/post/244997/ интерфейс target)?

И все же - кто-нибудь может подсказать, что за активность идет, в мною описаном примере?
Да и помочь разобраться с самой структурой транзакций... А то если взять примеры и сравнить, что то не складывается:

Код
axis_rx_tdata:
01a0_0a0f_0000_0001
de03_7320_0000_0010 (tkeep = 0f)

axis_[b]tx[/b]_tdata:
01a0_0004_4a00_0001
0403_0201_01a0_0a10


01a0 - ID отправителя (почему совпадает для обоих случаев?).
0а - Tag. Что то вобще не понял его назначние "Tag[7:0] is an 8-bit field generated by each Requester, and it must be unique for all outstanding Requests that require a Completion for that Requester" - вроде как уникальное поле для каждого запроса. В данном случае, насколько я понял, выбрали порядковый номер. Но тогда не понятно как он распределяется (его изменения: 0, 0, 1, 2, ..., d, 0, 1, 2, ..., a).
0f (для axis_rx_tdata) / 04 (для axis_tx_tdata) - на сколько я понял это Byte Enable (Last/First). Про Last и First для axis_rx_tdata вроде понятно "If the Length field for this Request indicates a length of 1 DW, then the value for the 1st DW Byte Enables is implied to be 1111b and the value for the Last DW Byte Enables is implied to be 0000b.", а вот First для axis_tx_tdata - не понятно.
Следующее DW вроде понятно - тип транзакции и длина.
Следующее DW вроде тоже понятно - данные.
0000_0010 - адрес и PH (кстаи так и не понял про это PH). Для axis_rx_tdata вроде без вопросов, а вот для axis_tx_tdata опять в ступоре...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- spbroma   Передача данных с ПЛИС через PCIe на ПК   Dec 11 2014, 13:26
- - SM   Самое главное - с точки зрения драйвера нет разниц...   Dec 11 2014, 14:15
|- - spbroma   Спасибо за быстрый отклик :) SM, насчет стандарто...   Dec 11 2014, 15:20
|- - SM   Цитата(spbroma @ Dec 11 2014, 18:20) SM, ...   Dec 11 2014, 16:18
|- - spbroma   Спасибо за разъяснения! 7 пункт воодушевляет :...   Dec 11 2014, 19:33
|- - SM   Цитата(spbroma @ Dec 11 2014, 22:33) А чт...   Dec 11 2014, 19:53
|- - spbroma   ЦитатаЯ же не настаиваю... Это лишь мой опыт. Я пр...   Dec 11 2014, 20:29
|- - SM   Цитата(spbroma @ Dec 11 2014, 23:29) Тогд...   Dec 11 2014, 20:48
|- - spbroma   Ну хоть направление движения стало чуть яснее, еще...   Dec 11 2014, 21:10
|- - spbroma   Я правильно понимаю, что на данный момент есть три...   Dec 12 2014, 08:28
|- - SM   Цитата(spbroma @ Dec 12 2014, 11:28) Я пр...   Dec 12 2014, 13:53
|- - spbroma   ЦитатаWDM == Legacy - это одно и то же. Вот здесь ...   Dec 12 2014, 15:27
|- - SM   Цитата(spbroma @ Dec 12 2014, 18:27) Вот ...   Dec 12 2014, 16:01
|- - spbroma   Сейчас почитал в разных местах, везде пишут, мол, ...   Dec 12 2014, 16:13
|- - SM   Цитата(spbroma @ Dec 12 2014, 19:13) Сейч...   Dec 12 2014, 16:18
|- - spbroma   Они обещают более простой интерфейс в WDF. Может, ...   Dec 15 2014, 08:18
|- - SM   Цитата(spbroma @ Dec 15 2014, 11:18) Они ...   Dec 15 2014, 11:06
|- - spbroma   Как я понял, UMDF исполняется не на уровне ядра, ч...   Dec 15 2014, 12:39
|- - SM   Цитата(spbroma @ Dec 15 2014, 15:39) Как ...   Dec 15 2014, 12:55
|- - spbroma   Вообще UMDF ругают. Мол, первая версия убога, а по...   Dec 15 2014, 13:03
|- - alexunder   Цитата(spbroma @ Dec 15 2014, 17:03) Хм, ...   Dec 15 2014, 14:57
|- - SM   Цитата(alexunder @ Dec 15 2014, 17:57) В ...   Dec 15 2014, 15:02
||- - alexunder   Цитата(SM @ Dec 15 2014, 19:02) Эта часть...   Dec 15 2014, 15:05
||- - spbroma   Цитата(alexunder)С вашего позволения, господа, доб...   Dec 15 2014, 15:57
|- - SM   Цитата(alexunder @ Dec 15 2014, 17:57) По...   Dec 15 2014, 15:26
- - RobFPGA   Приветствую! Цитата(spbroma @ Dec 11 201...   Dec 11 2014, 14:32
- - otv116   Я тоже столкнулся с проблемой создания своего драй...   Jan 22 2015, 14:04
- - habenskiy   Здравствуйте. Так же столкнулся с задачей реализац...   Jan 29 2015, 16:29
|- - spbroma   Добрый вечер, добро пожаловать в наше уютное обсу...   Jan 29 2015, 17:30
|- - SM   Цитата(spbroma @ Jan 29 2015, 20:30) А пе...   Jan 29 2015, 18:36
|- - spbroma   Спасибо Надо будет, все-таки собраться духом. Сей...   Jan 29 2015, 18:41


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

 


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


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